001package org.hl7.fhir.r4.formats;
002
003import java.io.IOException;
004
005import org.hl7.fhir.exceptions.FHIRFormatError;
006
007/*-
008 * #%L
009 * org.hl7.fhir.r4
010 * %%
011 * Copyright (C) 2014 - 2019 Health Level 7
012 * %%
013 * Licensed under the Apache License, Version 2.0 (the "License");
014 * you may not use this file except in compliance with the License.
015 * You may obtain a copy of the License at
016 * 
017 *      http://www.apache.org/licenses/LICENSE-2.0
018 * 
019 * Unless required by applicable law or agreed to in writing, software
020 * distributed under the License is distributed on an "AS IS" BASIS,
021 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
022 * See the License for the specific language governing permissions and
023 * limitations under the License.
024 * #L%
025 */
026
027/*
028  Copyright (c) 2011+, HL7, Inc.
029  All rights reserved.
030  
031  Redistribution and use in source and binary forms, with or without modification, 
032  are permitted provided that the following conditions are met:
033  
034   * Redistributions of source code must retain the above copyright notice, this 
035     list of conditions and the following disclaimer.
036   * Redistributions in binary form must reproduce the above copyright notice, 
037     this list of conditions and the following disclaimer in the documentation 
038     and/or other materials provided with the distribution.
039   * Neither the name of HL7 nor the names of its contributors may be used to 
040     endorse or promote products derived from this software without specific 
041     prior written permission.
042  
043  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
044  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
045  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
046  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
047  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
048  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
049  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
050  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
051  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
052  POSSIBILITY OF SUCH DAMAGE.
053  
054*/
055
056// Generated on Thu, Dec 13, 2018 14:07+1100 for FHIR v4.0.0
057import org.hl7.fhir.r4.model.*;
058import org.hl7.fhir.utilities.Utilities;
059import org.xmlpull.v1.XmlPullParser;
060import org.xmlpull.v1.XmlPullParserException;
061
062public class XmlParser extends XmlParserBase {
063
064  public XmlParser() {
065    super();
066  }
067
068  public XmlParser(boolean allowUnknownContent) {
069    super();
070    setAllowUnknownContent(allowUnknownContent);
071  }
072
073
074  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
075    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) 
076      res.getExtension().add(parseExtension(xpp));
077    else
078      return false;
079      
080    return true;
081  }
082
083  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
084    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
085      res.getModifierExtension().add(parseExtension(xpp));
086    else
087      return parseElementContent(eventType, xpp, res);
088      
089    return true;
090  }
091
092  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneType res) throws XmlPullParserException, IOException, FHIRFormatError {
093    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
094      res.getModifierExtension().add(parseExtension(xpp));
095    else
096      return parseElementContent(eventType, xpp, res);
097      
098    return true;
099  }
100
101  @SuppressWarnings("unchecked")
102  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
103    Enumeration<E> res = new Enumeration<E>(e);
104    parseElementAttributes(xpp, res);
105    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
106    next(xpp);
107    int eventType = nextNoWhitespace(xpp);
108    while (eventType != XmlPullParser.END_TAG) {
109      if (!parseElementContent(eventType, xpp, res))
110        unknownContent(xpp);
111      eventType = nextNoWhitespace(xpp);
112    }
113    next(xpp);
114    parseElementClose(res);
115    return res;
116  }
117
118  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
119    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
120    parseElementAttributes(xpp, res);
121    next(xpp);
122    int eventType = nextNoWhitespace(xpp);
123    while (eventType != XmlPullParser.END_TAG) {
124      if (!parseElementContent(eventType, xpp, res))
125        unknownContent(xpp);
126      eventType = nextNoWhitespace(xpp);
127    }
128    next(xpp);
129    parseElementClose(res);
130    return res;
131  }
132
133  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
134    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
135    parseElementAttributes(xpp, res);
136    next(xpp);
137    int eventType = nextNoWhitespace(xpp);
138    while (eventType != XmlPullParser.END_TAG) {
139      if (!parseElementContent(eventType, xpp, res))
140        unknownContent(xpp);
141      eventType = nextNoWhitespace(xpp);
142    }
143    next(xpp);
144    parseElementClose(res);
145    return res;
146  }
147
148  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
149    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
150    parseElementAttributes(xpp, res);
151    next(xpp);
152    int eventType = nextNoWhitespace(xpp);
153    while (eventType != XmlPullParser.END_TAG) {
154      if (!parseElementContent(eventType, xpp, res))
155        unknownContent(xpp);
156      eventType = nextNoWhitespace(xpp);
157    }
158    next(xpp);
159    parseElementClose(res);
160    return res;
161  }
162
163  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
164    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
165    parseElementAttributes(xpp, res);
166    next(xpp);
167    int eventType = nextNoWhitespace(xpp);
168    while (eventType != XmlPullParser.END_TAG) {
169      if (!parseElementContent(eventType, xpp, res))
170        unknownContent(xpp);
171      eventType = nextNoWhitespace(xpp);
172    }
173    next(xpp);
174    parseElementClose(res);
175    return res;
176  }
177
178  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
179    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
180    parseElementAttributes(xpp, res);
181    next(xpp);
182    int eventType = nextNoWhitespace(xpp);
183    while (eventType != XmlPullParser.END_TAG) {
184      if (!parseElementContent(eventType, xpp, res))
185        unknownContent(xpp);
186      eventType = nextNoWhitespace(xpp);
187    }
188    next(xpp);
189    parseElementClose(res);
190    return res;
191  }
192
193  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
194    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
195    parseElementAttributes(xpp, res);
196    next(xpp);
197    int eventType = nextNoWhitespace(xpp);
198    while (eventType != XmlPullParser.END_TAG) {
199      if (!parseElementContent(eventType, xpp, res))
200        unknownContent(xpp);
201      eventType = nextNoWhitespace(xpp);
202    }
203    next(xpp);
204    parseElementClose(res);
205    return res;
206  }
207
208  protected CanonicalType parseCanonical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
209    CanonicalType res = new CanonicalType(xpp.getAttributeValue(null, "value"));
210    parseElementAttributes(xpp, res);
211    next(xpp);
212    int eventType = nextNoWhitespace(xpp);
213    while (eventType != XmlPullParser.END_TAG) {
214      if (!parseElementContent(eventType, xpp, res))
215        unknownContent(xpp);
216      eventType = nextNoWhitespace(xpp);
217    }
218    next(xpp);
219    parseElementClose(res);
220    return res;
221  }
222
223  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
224    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
225    parseElementAttributes(xpp, res);
226    next(xpp);
227    int eventType = nextNoWhitespace(xpp);
228    while (eventType != XmlPullParser.END_TAG) {
229      if (!parseElementContent(eventType, xpp, res))
230        unknownContent(xpp);
231      eventType = nextNoWhitespace(xpp);
232    }
233    next(xpp);
234    parseElementClose(res);
235    return res;
236  }
237
238  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
239    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
240    parseElementAttributes(xpp, res);
241    next(xpp);
242    int eventType = nextNoWhitespace(xpp);
243    while (eventType != XmlPullParser.END_TAG) {
244      if (!parseElementContent(eventType, xpp, res))
245        unknownContent(xpp);
246      eventType = nextNoWhitespace(xpp);
247    }
248    next(xpp);
249    parseElementClose(res);
250    return res;
251  }
252
253  protected UrlType parseUrl(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
254    UrlType res = new UrlType(xpp.getAttributeValue(null, "value"));
255    parseElementAttributes(xpp, res);
256    next(xpp);
257    int eventType = nextNoWhitespace(xpp);
258    while (eventType != XmlPullParser.END_TAG) {
259      if (!parseElementContent(eventType, xpp, res))
260        unknownContent(xpp);
261      eventType = nextNoWhitespace(xpp);
262    }
263    next(xpp);
264    parseElementClose(res);
265    return res;
266  }
267
268  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
269    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
270    parseElementAttributes(xpp, res);
271    next(xpp);
272    int eventType = nextNoWhitespace(xpp);
273    while (eventType != XmlPullParser.END_TAG) {
274      if (!parseElementContent(eventType, xpp, res))
275        unknownContent(xpp);
276      eventType = nextNoWhitespace(xpp);
277    }
278    next(xpp);
279    parseElementClose(res);
280    return res;
281  }
282
283  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
284    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
285    parseElementAttributes(xpp, res);
286    next(xpp);
287    int eventType = nextNoWhitespace(xpp);
288    while (eventType != XmlPullParser.END_TAG) {
289      if (!parseElementContent(eventType, xpp, res))
290        unknownContent(xpp);
291      eventType = nextNoWhitespace(xpp);
292    }
293    next(xpp);
294    parseElementClose(res);
295    return res;
296  }
297
298  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
299    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
300    parseElementAttributes(xpp, res);
301    next(xpp);
302    int eventType = nextNoWhitespace(xpp);
303    while (eventType != XmlPullParser.END_TAG) {
304      if (!parseElementContent(eventType, xpp, res))
305        unknownContent(xpp);
306      eventType = nextNoWhitespace(xpp);
307    }
308    next(xpp);
309    parseElementClose(res);
310    return res;
311  }
312
313  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
314    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
315    parseElementAttributes(xpp, res);
316    next(xpp);
317    int eventType = nextNoWhitespace(xpp);
318    while (eventType != XmlPullParser.END_TAG) {
319      if (!parseElementContent(eventType, xpp, res))
320        unknownContent(xpp);
321      eventType = nextNoWhitespace(xpp);
322    }
323    next(xpp);
324    parseElementClose(res);
325    return res;
326  }
327
328  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
329    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
330    parseElementAttributes(xpp, res);
331    next(xpp);
332    int eventType = nextNoWhitespace(xpp);
333    while (eventType != XmlPullParser.END_TAG) {
334      if (!parseElementContent(eventType, xpp, res))
335        unknownContent(xpp);
336      eventType = nextNoWhitespace(xpp);
337    }
338    next(xpp);
339    parseElementClose(res);
340    return res;
341  }
342
343  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
344    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
345    parseElementAttributes(xpp, res);
346    next(xpp);
347    int eventType = nextNoWhitespace(xpp);
348    while (eventType != XmlPullParser.END_TAG) {
349      if (!parseElementContent(eventType, xpp, res))
350        unknownContent(xpp);
351      eventType = nextNoWhitespace(xpp);
352    }
353    next(xpp);
354    parseElementClose(res);
355    return res;
356  }
357
358  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
359    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
360    parseElementAttributes(xpp, res);
361    next(xpp);
362    int eventType = nextNoWhitespace(xpp);
363    while (eventType != XmlPullParser.END_TAG) {
364      if (!parseElementContent(eventType, xpp, res))
365        unknownContent(xpp);
366      eventType = nextNoWhitespace(xpp);
367    }
368    next(xpp);
369    parseElementClose(res);
370    return res;
371  }
372
373  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
374    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
375    parseElementAttributes(xpp, res);
376    next(xpp);
377    int eventType = nextNoWhitespace(xpp);
378    while (eventType != XmlPullParser.END_TAG) {
379      if (!parseElementContent(eventType, xpp, res))
380        unknownContent(xpp);
381      eventType = nextNoWhitespace(xpp);
382    }
383    next(xpp);
384    parseElementClose(res);
385    return res;
386  }
387
388  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
389    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
390    parseElementAttributes(xpp, res);
391    next(xpp);
392    int eventType = nextNoWhitespace(xpp);
393    while (eventType != XmlPullParser.END_TAG) {
394      if (!parseElementContent(eventType, xpp, res))
395        unknownContent(xpp);
396      eventType = nextNoWhitespace(xpp);
397    }
398    next(xpp);
399    parseElementClose(res);
400    return res;
401  }
402
403  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
404    Extension res = new Extension();
405    parseElementAttributes(xpp, res);
406    if (xpp.getAttributeValue(null, "url") != null)
407        res.setUrl(xpp.getAttributeValue(null, "url"));
408    next(xpp);
409    int eventType = nextNoWhitespace(xpp);
410    while (eventType != XmlPullParser.END_TAG) {
411  if (!parseExtensionContent(eventType, xpp, res))
412        unknownContent(xpp);
413      eventType = nextNoWhitespace(xpp);
414    }
415    next(xpp);
416    parseElementClose(res);
417    return res;
418  }
419
420  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
421      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
422        res.setValue(parseType("value", xpp));
423      } else if (!parseElementContent(eventType, xpp, res))
424        return false;
425    return true;
426  }
427
428  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
429    Narrative res = new Narrative();
430    parseElementAttributes(xpp, res);
431    next(xpp);
432    int eventType = nextNoWhitespace(xpp);
433    while (eventType != XmlPullParser.END_TAG) {
434  if (!parseNarrativeContent(eventType, xpp, res))
435        unknownContent(xpp);
436      eventType = nextNoWhitespace(xpp);
437    }
438    next(xpp);
439    parseElementClose(res);
440    return res;
441  }
442
443  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
444      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
445        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
447        res.setDiv(parseXhtml(xpp));
448      } else if (!parseElementContent(eventType, xpp, res))
449        return false;
450    return true;
451  }
452
453  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
454    Meta res = new Meta();
455    parseTypeAttributes(xpp, res);
456    next(xpp);
457    int eventType = nextNoWhitespace(xpp);
458    while (eventType != XmlPullParser.END_TAG) {
459  if (!parseMetaContent(eventType, xpp, res))
460        unknownContent(xpp);
461      eventType = nextNoWhitespace(xpp);
462    }
463    next(xpp);
464    parseElementClose(res);
465    return res;
466  }
467
468  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
470        res.setVersionIdElement(parseId(xpp));
471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
472        res.setLastUpdatedElement(parseInstant(xpp));
473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
474        res.setSourceElement(parseUri(xpp));
475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
476        res.getProfile().add(parseCanonical(xpp));
477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
478        res.getSecurity().add(parseCoding(xpp));
479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
480        res.getTag().add(parseCoding(xpp));
481      } else if (!parseElementContent(eventType, xpp, res))
482        return false;
483    return true;
484  }
485
486  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
487    Address res = new Address();
488    parseTypeAttributes(xpp, res);
489    next(xpp);
490    int eventType = nextNoWhitespace(xpp);
491    while (eventType != XmlPullParser.END_TAG) {
492  if (!parseAddressContent(eventType, xpp, res))
493        unknownContent(xpp);
494      eventType = nextNoWhitespace(xpp);
495    }
496    next(xpp);
497    parseElementClose(res);
498    return res;
499  }
500
501  protected boolean parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
502      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
503        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
505        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
507        res.setTextElement(parseString(xpp));
508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
509        res.getLine().add(parseString(xpp));
510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
511        res.setCityElement(parseString(xpp));
512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
513        res.setDistrictElement(parseString(xpp));
514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
515        res.setStateElement(parseString(xpp));
516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
517        res.setPostalCodeElement(parseString(xpp));
518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
519        res.setCountryElement(parseString(xpp));
520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
521        res.setPeriod(parsePeriod(xpp));
522      } else if (!parseElementContent(eventType, xpp, res))
523        return false;
524    return true;
525  }
526
527  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
528    Contributor res = new Contributor();
529    parseTypeAttributes(xpp, res);
530    next(xpp);
531    int eventType = nextNoWhitespace(xpp);
532    while (eventType != XmlPullParser.END_TAG) {
533  if (!parseContributorContent(eventType, xpp, res))
534        unknownContent(xpp);
535      eventType = nextNoWhitespace(xpp);
536    }
537    next(xpp);
538    parseElementClose(res);
539    return res;
540  }
541
542  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
543      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
544        res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
546        res.setNameElement(parseString(xpp));
547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
548        res.getContact().add(parseContactDetail(xpp));
549      } else if (!parseElementContent(eventType, xpp, res))
550        return false;
551    return true;
552  }
553
554  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
555    Attachment res = new Attachment();
556    parseTypeAttributes(xpp, res);
557    next(xpp);
558    int eventType = nextNoWhitespace(xpp);
559    while (eventType != XmlPullParser.END_TAG) {
560  if (!parseAttachmentContent(eventType, xpp, res))
561        unknownContent(xpp);
562      eventType = nextNoWhitespace(xpp);
563    }
564    next(xpp);
565    parseElementClose(res);
566    return res;
567  }
568
569  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
570      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
571        res.setContentTypeElement(parseCode(xpp));
572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
573        res.setLanguageElement(parseCode(xpp));
574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
575        res.setDataElement(parseBase64Binary(xpp));
576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
577        res.setUrlElement(parseUrl(xpp));
578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
579        res.setSizeElement(parseUnsignedInt(xpp));
580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
581        res.setHashElement(parseBase64Binary(xpp));
582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
583        res.setTitleElement(parseString(xpp));
584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
585        res.setCreationElement(parseDateTime(xpp));
586      } else if (!parseElementContent(eventType, xpp, res))
587        return false;
588    return true;
589  }
590
591  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
592    Count res = new Count();
593    parseTypeAttributes(xpp, res);
594    next(xpp);
595    int eventType = nextNoWhitespace(xpp);
596    while (eventType != XmlPullParser.END_TAG) {
597  if (!parseCountContent(eventType, xpp, res))
598        unknownContent(xpp);
599      eventType = nextNoWhitespace(xpp);
600    }
601    next(xpp);
602    parseElementClose(res);
603    return res;
604  }
605
606  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
607      if (!parseQuantityContent(eventType, xpp, res))
608        return false;
609    return true;
610  }
611
612  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
613    DataRequirement res = new DataRequirement();
614    parseTypeAttributes(xpp, res);
615    next(xpp);
616    int eventType = nextNoWhitespace(xpp);
617    while (eventType != XmlPullParser.END_TAG) {
618  if (!parseDataRequirementContent(eventType, xpp, res))
619        unknownContent(xpp);
620      eventType = nextNoWhitespace(xpp);
621    }
622    next(xpp);
623    parseElementClose(res);
624    return res;
625  }
626
627  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
628      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
629        res.setTypeElement(parseCode(xpp));
630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
631        res.getProfile().add(parseCanonical(xpp));
632      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
633        res.setSubject(parseType("subject", xpp));
634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
635        res.getMustSupport().add(parseString(xpp));
636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
637        res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(xpp, res));
638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
639        res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(xpp, res));
640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
641        res.setLimitElement(parsePositiveInt(xpp));
642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sort")) {
643        res.getSort().add(parseDataRequirementDataRequirementSortComponent(xpp, res));
644      } else if (!parseElementContent(eventType, xpp, res))
645        return false;
646    return true;
647  }
648
649  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementDataRequirementCodeFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
650    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
651    parseElementAttributes(xpp, res);
652    next(xpp);
653    int eventType = nextNoWhitespace(xpp);
654    while (eventType != XmlPullParser.END_TAG) {
655  if (!parseDataRequirementDataRequirementCodeFilterComponentContent(eventType, xpp, owner, res))
656        unknownContent(xpp);
657      eventType = nextNoWhitespace(xpp);
658    }
659    next(xpp);
660    parseElementClose(res);
661    return res;
662  }
663
664  protected boolean parseDataRequirementDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
665      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
666        res.setPathElement(parseString(xpp));
667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
668        res.setSearchParamElement(parseString(xpp));
669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
670        res.setValueSetElement(parseCanonical(xpp));
671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
672        res.getCode().add(parseCoding(xpp));
673      } else if (!parseElementContent(eventType, xpp, res))
674        return false;
675    return true;
676  }
677
678  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
679    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
680    parseElementAttributes(xpp, res);
681    next(xpp);
682    int eventType = nextNoWhitespace(xpp);
683    while (eventType != XmlPullParser.END_TAG) {
684  if (!parseDataRequirementDataRequirementDateFilterComponentContent(eventType, xpp, owner, res))
685        unknownContent(xpp);
686      eventType = nextNoWhitespace(xpp);
687    }
688    next(xpp);
689    parseElementClose(res);
690    return res;
691  }
692
693  protected boolean parseDataRequirementDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
694      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
695        res.setPathElement(parseString(xpp));
696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
697        res.setSearchParamElement(parseString(xpp));
698      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
699        res.setValue(parseType("value", xpp));
700      } else if (!parseElementContent(eventType, xpp, res))
701        return false;
702    return true;
703  }
704
705  protected DataRequirement.DataRequirementSortComponent parseDataRequirementDataRequirementSortComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
706    DataRequirement.DataRequirementSortComponent res = new DataRequirement.DataRequirementSortComponent();
707    parseElementAttributes(xpp, res);
708    next(xpp);
709    int eventType = nextNoWhitespace(xpp);
710    while (eventType != XmlPullParser.END_TAG) {
711  if (!parseDataRequirementDataRequirementSortComponentContent(eventType, xpp, owner, res))
712        unknownContent(xpp);
713      eventType = nextNoWhitespace(xpp);
714    }
715    next(xpp);
716    parseElementClose(res);
717    return res;
718  }
719
720  protected boolean parseDataRequirementDataRequirementSortComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementSortComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
721      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
722        res.setPathElement(parseString(xpp));
723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
724        res.setDirectionElement(parseEnumeration(xpp, DataRequirement.SortDirection.NULL, new DataRequirement.SortDirectionEnumFactory()));
725      } else if (!parseElementContent(eventType, xpp, res))
726        return false;
727    return true;
728  }
729
730  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
731    Dosage res = new Dosage();
732    parseTypeAttributes(xpp, res);
733    next(xpp);
734    int eventType = nextNoWhitespace(xpp);
735    while (eventType != XmlPullParser.END_TAG) {
736  if (!parseDosageContent(eventType, xpp, res))
737        unknownContent(xpp);
738      eventType = nextNoWhitespace(xpp);
739    }
740    next(xpp);
741    parseElementClose(res);
742    return res;
743  }
744
745  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
746      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
747        res.setSequenceElement(parseInteger(xpp));
748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
749        res.setTextElement(parseString(xpp));
750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
751        res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
753        res.setPatientInstructionElement(parseString(xpp));
754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
755        res.setTiming(parseTiming(xpp));
756      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
757        res.setAsNeeded(parseType("asNeeded", xpp));
758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
759        res.setSite(parseCodeableConcept(xpp));
760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
761        res.setRoute(parseCodeableConcept(xpp));
762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
763        res.setMethod(parseCodeableConcept(xpp));
764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseAndRate")) {
765        res.getDoseAndRate().add(parseDosageDosageDoseAndRateComponent(xpp, res));
766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
767        res.setMaxDosePerPeriod(parseRatio(xpp));
768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
769        res.setMaxDosePerAdministration(parseQuantity(xpp));
770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
771        res.setMaxDosePerLifetime(parseQuantity(xpp));
772      } else if (!parseBackboneElementContent(eventType, xpp, res))
773        return false;
774    return true;
775  }
776
777  protected Dosage.DosageDoseAndRateComponent parseDosageDosageDoseAndRateComponent(XmlPullParser xpp, Dosage owner) throws XmlPullParserException, IOException, FHIRFormatError {
778    Dosage.DosageDoseAndRateComponent res = new Dosage.DosageDoseAndRateComponent();
779    parseElementAttributes(xpp, res);
780    next(xpp);
781    int eventType = nextNoWhitespace(xpp);
782    while (eventType != XmlPullParser.END_TAG) {
783  if (!parseDosageDosageDoseAndRateComponentContent(eventType, xpp, owner, res))
784        unknownContent(xpp);
785      eventType = nextNoWhitespace(xpp);
786    }
787    next(xpp);
788    parseElementClose(res);
789    return res;
790  }
791
792  protected boolean parseDosageDosageDoseAndRateComponentContent(int eventType, XmlPullParser xpp, Dosage owner, Dosage.DosageDoseAndRateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
794        res.setType(parseCodeableConcept(xpp));
795      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
796        res.setDose(parseType("dose", xpp));
797      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
798        res.setRate(parseType("rate", xpp));
799      } else if (!parseElementContent(eventType, xpp, res))
800        return false;
801    return true;
802  }
803
804  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
805    Money res = new Money();
806    parseTypeAttributes(xpp, res);
807    next(xpp);
808    int eventType = nextNoWhitespace(xpp);
809    while (eventType != XmlPullParser.END_TAG) {
810  if (!parseMoneyContent(eventType, xpp, res))
811        unknownContent(xpp);
812      eventType = nextNoWhitespace(xpp);
813    }
814    next(xpp);
815    parseElementClose(res);
816    return res;
817  }
818
819  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
820      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
821        res.setValueElement(parseDecimal(xpp));
822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
823        res.setCurrencyElement(parseCode(xpp));
824      } else if (!parseElementContent(eventType, xpp, res))
825        return false;
826    return true;
827  }
828
829  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
830    HumanName res = new HumanName();
831    parseTypeAttributes(xpp, res);
832    next(xpp);
833    int eventType = nextNoWhitespace(xpp);
834    while (eventType != XmlPullParser.END_TAG) {
835  if (!parseHumanNameContent(eventType, xpp, res))
836        unknownContent(xpp);
837      eventType = nextNoWhitespace(xpp);
838    }
839    next(xpp);
840    parseElementClose(res);
841    return res;
842  }
843
844  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
845      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
846        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
848        res.setTextElement(parseString(xpp));
849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
850        res.setFamilyElement(parseString(xpp));
851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
852        res.getGiven().add(parseString(xpp));
853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
854        res.getPrefix().add(parseString(xpp));
855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
856        res.getSuffix().add(parseString(xpp));
857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
858        res.setPeriod(parsePeriod(xpp));
859      } else if (!parseElementContent(eventType, xpp, res))
860        return false;
861    return true;
862  }
863
864  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
865    ContactPoint res = new ContactPoint();
866    parseTypeAttributes(xpp, res);
867    next(xpp);
868    int eventType = nextNoWhitespace(xpp);
869    while (eventType != XmlPullParser.END_TAG) {
870  if (!parseContactPointContent(eventType, xpp, res))
871        unknownContent(xpp);
872      eventType = nextNoWhitespace(xpp);
873    }
874    next(xpp);
875    parseElementClose(res);
876    return res;
877  }
878
879  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
880      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
881        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
883        res.setValueElement(parseString(xpp));
884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
885        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
887        res.setRankElement(parsePositiveInt(xpp));
888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
889        res.setPeriod(parsePeriod(xpp));
890      } else if (!parseElementContent(eventType, xpp, res))
891        return false;
892    return true;
893  }
894
895  protected MarketingStatus parseMarketingStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
896    MarketingStatus res = new MarketingStatus();
897    parseTypeAttributes(xpp, res);
898    next(xpp);
899    int eventType = nextNoWhitespace(xpp);
900    while (eventType != XmlPullParser.END_TAG) {
901  if (!parseMarketingStatusContent(eventType, xpp, res))
902        unknownContent(xpp);
903      eventType = nextNoWhitespace(xpp);
904    }
905    next(xpp);
906    parseElementClose(res);
907    return res;
908  }
909
910  protected boolean parseMarketingStatusContent(int eventType, XmlPullParser xpp, MarketingStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
911      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
912        res.setCountry(parseCodeableConcept(xpp));
913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
914        res.setJurisdiction(parseCodeableConcept(xpp));
915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
916        res.setStatus(parseCodeableConcept(xpp));
917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRange")) {
918        res.setDateRange(parsePeriod(xpp));
919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
920        res.setRestoreDateElement(parseDateTime(xpp));
921      } else if (!parseBackboneElementContent(eventType, xpp, res))
922        return false;
923    return true;
924  }
925
926  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
927    Identifier res = new Identifier();
928    parseTypeAttributes(xpp, res);
929    next(xpp);
930    int eventType = nextNoWhitespace(xpp);
931    while (eventType != XmlPullParser.END_TAG) {
932  if (!parseIdentifierContent(eventType, xpp, res))
933        unknownContent(xpp);
934      eventType = nextNoWhitespace(xpp);
935    }
936    next(xpp);
937    parseElementClose(res);
938    return res;
939  }
940
941  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
942      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
943        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
945        res.setType(parseCodeableConcept(xpp));
946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
947        res.setSystemElement(parseUri(xpp));
948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
949        res.setValueElement(parseString(xpp));
950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
951        res.setPeriod(parsePeriod(xpp));
952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
953        res.setAssigner(parseReference(xpp));
954      } else if (!parseElementContent(eventType, xpp, res))
955        return false;
956    return true;
957  }
958
959  protected SubstanceAmount parseSubstanceAmount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
960    SubstanceAmount res = new SubstanceAmount();
961    parseTypeAttributes(xpp, res);
962    next(xpp);
963    int eventType = nextNoWhitespace(xpp);
964    while (eventType != XmlPullParser.END_TAG) {
965  if (!parseSubstanceAmountContent(eventType, xpp, res))
966        unknownContent(xpp);
967      eventType = nextNoWhitespace(xpp);
968    }
969    next(xpp);
970    parseElementClose(res);
971    return res;
972  }
973
974  protected boolean parseSubstanceAmountContent(int eventType, XmlPullParser xpp, SubstanceAmount res) throws XmlPullParserException, IOException, FHIRFormatError {
975      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
976        res.setAmount(parseType("amount", xpp));
977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
978        res.setAmountType(parseCodeableConcept(xpp));
979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountText")) {
980        res.setAmountTextElement(parseString(xpp));
981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
982        res.setReferenceRange(parseSubstanceAmountSubstanceAmountReferenceRangeComponent(xpp, res));
983      } else if (!parseBackboneElementContent(eventType, xpp, res))
984        return false;
985    return true;
986  }
987
988  protected SubstanceAmount.SubstanceAmountReferenceRangeComponent parseSubstanceAmountSubstanceAmountReferenceRangeComponent(XmlPullParser xpp, SubstanceAmount owner) throws XmlPullParserException, IOException, FHIRFormatError {
989    SubstanceAmount.SubstanceAmountReferenceRangeComponent res = new SubstanceAmount.SubstanceAmountReferenceRangeComponent();
990    parseElementAttributes(xpp, res);
991    next(xpp);
992    int eventType = nextNoWhitespace(xpp);
993    while (eventType != XmlPullParser.END_TAG) {
994  if (!parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(eventType, xpp, owner, res))
995        unknownContent(xpp);
996      eventType = nextNoWhitespace(xpp);
997    }
998    next(xpp);
999    parseElementClose(res);
1000    return res;
1001  }
1002
1003  protected boolean parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(int eventType, XmlPullParser xpp, SubstanceAmount owner, SubstanceAmount.SubstanceAmountReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1004      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowLimit")) {
1005        res.setLowLimit(parseQuantity(xpp));
1006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("highLimit")) {
1007        res.setHighLimit(parseQuantity(xpp));
1008      } else if (!parseElementContent(eventType, xpp, res))
1009        return false;
1010    return true;
1011  }
1012
1013  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1014    Coding res = new Coding();
1015    parseTypeAttributes(xpp, res);
1016    next(xpp);
1017    int eventType = nextNoWhitespace(xpp);
1018    while (eventType != XmlPullParser.END_TAG) {
1019  if (!parseCodingContent(eventType, xpp, res))
1020        unknownContent(xpp);
1021      eventType = nextNoWhitespace(xpp);
1022    }
1023    next(xpp);
1024    parseElementClose(res);
1025    return res;
1026  }
1027
1028  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
1029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1030        res.setSystemElement(parseUri(xpp));
1031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
1032        res.setVersionElement(parseString(xpp));
1033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1034        res.setCodeElement(parseCode(xpp));
1035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1036        res.setDisplayElement(parseString(xpp));
1037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
1038        res.setUserSelectedElement(parseBoolean(xpp));
1039      } else if (!parseElementContent(eventType, xpp, res))
1040        return false;
1041    return true;
1042  }
1043
1044  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1045    SampledData res = new SampledData();
1046    parseTypeAttributes(xpp, res);
1047    next(xpp);
1048    int eventType = nextNoWhitespace(xpp);
1049    while (eventType != XmlPullParser.END_TAG) {
1050  if (!parseSampledDataContent(eventType, xpp, res))
1051        unknownContent(xpp);
1052      eventType = nextNoWhitespace(xpp);
1053    }
1054    next(xpp);
1055    parseElementClose(res);
1056    return res;
1057  }
1058
1059  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
1060      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
1061        res.setOrigin(parseQuantity(xpp));
1062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1063        res.setPeriodElement(parseDecimal(xpp));
1064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
1065        res.setFactorElement(parseDecimal(xpp));
1066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
1067        res.setLowerLimitElement(parseDecimal(xpp));
1068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
1069        res.setUpperLimitElement(parseDecimal(xpp));
1070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
1071        res.setDimensionsElement(parsePositiveInt(xpp));
1072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1073        res.setDataElement(parseString(xpp));
1074      } else if (!parseElementContent(eventType, xpp, res))
1075        return false;
1076    return true;
1077  }
1078
1079  protected Population parsePopulation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1080    Population res = new Population();
1081    parseTypeAttributes(xpp, res);
1082    next(xpp);
1083    int eventType = nextNoWhitespace(xpp);
1084    while (eventType != XmlPullParser.END_TAG) {
1085  if (!parsePopulationContent(eventType, xpp, res))
1086        unknownContent(xpp);
1087      eventType = nextNoWhitespace(xpp);
1088    }
1089    next(xpp);
1090    parseElementClose(res);
1091    return res;
1092  }
1093
1094  protected boolean parsePopulationContent(int eventType, XmlPullParser xpp, Population res) throws XmlPullParserException, IOException, FHIRFormatError {
1095      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
1096        res.setAge(parseType("age", xpp));
1097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
1098        res.setGender(parseCodeableConcept(xpp));
1099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
1100        res.setRace(parseCodeableConcept(xpp));
1101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
1102        res.setPhysiologicalCondition(parseCodeableConcept(xpp));
1103      } else if (!parseBackboneElementContent(eventType, xpp, res))
1104        return false;
1105    return true;
1106  }
1107
1108  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1109    Ratio res = new Ratio();
1110    parseTypeAttributes(xpp, res);
1111    next(xpp);
1112    int eventType = nextNoWhitespace(xpp);
1113    while (eventType != XmlPullParser.END_TAG) {
1114  if (!parseRatioContent(eventType, xpp, res))
1115        unknownContent(xpp);
1116      eventType = nextNoWhitespace(xpp);
1117    }
1118    next(xpp);
1119    parseElementClose(res);
1120    return res;
1121  }
1122
1123  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
1124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
1125        res.setNumerator(parseQuantity(xpp));
1126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1127        res.setDenominator(parseQuantity(xpp));
1128      } else if (!parseElementContent(eventType, xpp, res))
1129        return false;
1130    return true;
1131  }
1132
1133  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1134    Distance res = new Distance();
1135    parseTypeAttributes(xpp, res);
1136    next(xpp);
1137    int eventType = nextNoWhitespace(xpp);
1138    while (eventType != XmlPullParser.END_TAG) {
1139  if (!parseDistanceContent(eventType, xpp, res))
1140        unknownContent(xpp);
1141      eventType = nextNoWhitespace(xpp);
1142    }
1143    next(xpp);
1144    parseElementClose(res);
1145    return res;
1146  }
1147
1148  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
1149      if (!parseQuantityContent(eventType, xpp, res))
1150        return false;
1151    return true;
1152  }
1153
1154  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1155    Age res = new Age();
1156    parseTypeAttributes(xpp, res);
1157    next(xpp);
1158    int eventType = nextNoWhitespace(xpp);
1159    while (eventType != XmlPullParser.END_TAG) {
1160  if (!parseAgeContent(eventType, xpp, res))
1161        unknownContent(xpp);
1162      eventType = nextNoWhitespace(xpp);
1163    }
1164    next(xpp);
1165    parseElementClose(res);
1166    return res;
1167  }
1168
1169  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
1170      if (!parseQuantityContent(eventType, xpp, res))
1171        return false;
1172    return true;
1173  }
1174
1175  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1176    Reference res = new Reference();
1177    parseTypeAttributes(xpp, res);
1178    next(xpp);
1179    int eventType = nextNoWhitespace(xpp);
1180    while (eventType != XmlPullParser.END_TAG) {
1181  if (!parseReferenceContent(eventType, xpp, res))
1182        unknownContent(xpp);
1183      eventType = nextNoWhitespace(xpp);
1184    }
1185    next(xpp);
1186    parseElementClose(res);
1187    return res;
1188  }
1189
1190  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
1191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1192        res.setReferenceElement(parseString(xpp));
1193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1194        res.setTypeElement(parseUri(xpp));
1195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1196        res.setIdentifier(parseIdentifier(xpp));
1197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1198        res.setDisplayElement(parseString(xpp));
1199      } else if (!parseElementContent(eventType, xpp, res))
1200        return false;
1201    return true;
1202  }
1203
1204  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1205    TriggerDefinition res = new TriggerDefinition();
1206    parseTypeAttributes(xpp, res);
1207    next(xpp);
1208    int eventType = nextNoWhitespace(xpp);
1209    while (eventType != XmlPullParser.END_TAG) {
1210  if (!parseTriggerDefinitionContent(eventType, xpp, res))
1211        unknownContent(xpp);
1212      eventType = nextNoWhitespace(xpp);
1213    }
1214    next(xpp);
1215    parseElementClose(res);
1216    return res;
1217  }
1218
1219  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1220      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1221        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
1222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1223        res.setNameElement(parseString(xpp));
1224      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
1225        res.setTiming(parseType("timing", xpp));
1226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1227        res.getData().add(parseDataRequirement(xpp));
1228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1229        res.setCondition(parseExpression(xpp));
1230      } else if (!parseElementContent(eventType, xpp, res))
1231        return false;
1232    return true;
1233  }
1234
1235  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1236    Quantity res = new Quantity();
1237    parseTypeAttributes(xpp, res);
1238    next(xpp);
1239    int eventType = nextNoWhitespace(xpp);
1240    while (eventType != XmlPullParser.END_TAG) {
1241  if (!parseQuantityContent(eventType, xpp, res))
1242        unknownContent(xpp);
1243      eventType = nextNoWhitespace(xpp);
1244    }
1245    next(xpp);
1246    parseElementClose(res);
1247    return res;
1248  }
1249
1250  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
1251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1252        res.setValueElement(parseDecimal(xpp));
1253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
1254        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
1255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
1256        res.setUnitElement(parseString(xpp));
1257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1258        res.setSystemElement(parseUri(xpp));
1259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1260        res.setCodeElement(parseCode(xpp));
1261      } else if (!parseElementContent(eventType, xpp, res))
1262        return false;
1263    return true;
1264  }
1265
1266  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1267    Period res = new Period();
1268    parseTypeAttributes(xpp, res);
1269    next(xpp);
1270    int eventType = nextNoWhitespace(xpp);
1271    while (eventType != XmlPullParser.END_TAG) {
1272  if (!parsePeriodContent(eventType, xpp, res))
1273        unknownContent(xpp);
1274      eventType = nextNoWhitespace(xpp);
1275    }
1276    next(xpp);
1277    parseElementClose(res);
1278    return res;
1279  }
1280
1281  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
1282      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1283        res.setStartElement(parseDateTime(xpp));
1284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1285        res.setEndElement(parseDateTime(xpp));
1286      } else if (!parseElementContent(eventType, xpp, res))
1287        return false;
1288    return true;
1289  }
1290
1291  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1292    Duration res = new Duration();
1293    parseTypeAttributes(xpp, res);
1294    next(xpp);
1295    int eventType = nextNoWhitespace(xpp);
1296    while (eventType != XmlPullParser.END_TAG) {
1297  if (!parseDurationContent(eventType, xpp, res))
1298        unknownContent(xpp);
1299      eventType = nextNoWhitespace(xpp);
1300    }
1301    next(xpp);
1302    parseElementClose(res);
1303    return res;
1304  }
1305
1306  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
1307      if (!parseQuantityContent(eventType, xpp, res))
1308        return false;
1309    return true;
1310  }
1311
1312  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1313    Range res = new Range();
1314    parseTypeAttributes(xpp, res);
1315    next(xpp);
1316    int eventType = nextNoWhitespace(xpp);
1317    while (eventType != XmlPullParser.END_TAG) {
1318  if (!parseRangeContent(eventType, xpp, res))
1319        unknownContent(xpp);
1320      eventType = nextNoWhitespace(xpp);
1321    }
1322    next(xpp);
1323    parseElementClose(res);
1324    return res;
1325  }
1326
1327  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
1328      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
1329        res.setLow(parseQuantity(xpp));
1330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
1331        res.setHigh(parseQuantity(xpp));
1332      } else if (!parseElementContent(eventType, xpp, res))
1333        return false;
1334    return true;
1335  }
1336
1337  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1338    RelatedArtifact res = new RelatedArtifact();
1339    parseTypeAttributes(xpp, res);
1340    next(xpp);
1341    int eventType = nextNoWhitespace(xpp);
1342    while (eventType != XmlPullParser.END_TAG) {
1343  if (!parseRelatedArtifactContent(eventType, xpp, res))
1344        unknownContent(xpp);
1345      eventType = nextNoWhitespace(xpp);
1346    }
1347    next(xpp);
1348    parseElementClose(res);
1349    return res;
1350  }
1351
1352  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1353      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1354        res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1356        res.setLabelElement(parseString(xpp));
1357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1358        res.setDisplayElement(parseString(xpp));
1359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1360        res.setCitationElement(parseMarkdown(xpp));
1361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1362        res.setUrlElement(parseUrl(xpp));
1363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1364        res.setDocument(parseAttachment(xpp));
1365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1366        res.setResourceElement(parseCanonical(xpp));
1367      } else if (!parseElementContent(eventType, xpp, res))
1368        return false;
1369    return true;
1370  }
1371
1372  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1373    Annotation res = new Annotation();
1374    parseTypeAttributes(xpp, res);
1375    next(xpp);
1376    int eventType = nextNoWhitespace(xpp);
1377    while (eventType != XmlPullParser.END_TAG) {
1378  if (!parseAnnotationContent(eventType, xpp, res))
1379        unknownContent(xpp);
1380      eventType = nextNoWhitespace(xpp);
1381    }
1382    next(xpp);
1383    parseElementClose(res);
1384    return res;
1385  }
1386
1387  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
1388      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
1389        res.setAuthor(parseType("author", xpp));
1390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
1391        res.setTimeElement(parseDateTime(xpp));
1392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1393        res.setTextElement(parseMarkdown(xpp));
1394      } else if (!parseElementContent(eventType, xpp, res))
1395        return false;
1396    return true;
1397  }
1398
1399  protected ProductShelfLife parseProductShelfLife(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1400    ProductShelfLife res = new ProductShelfLife();
1401    parseTypeAttributes(xpp, res);
1402    next(xpp);
1403    int eventType = nextNoWhitespace(xpp);
1404    while (eventType != XmlPullParser.END_TAG) {
1405  if (!parseProductShelfLifeContent(eventType, xpp, res))
1406        unknownContent(xpp);
1407      eventType = nextNoWhitespace(xpp);
1408    }
1409    next(xpp);
1410    parseElementClose(res);
1411    return res;
1412  }
1413
1414  protected boolean parseProductShelfLifeContent(int eventType, XmlPullParser xpp, ProductShelfLife res) throws XmlPullParserException, IOException, FHIRFormatError {
1415      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1416        res.setIdentifier(parseIdentifier(xpp));
1417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1418        res.setType(parseCodeableConcept(xpp));
1419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1420        res.setPeriod(parseQuantity(xpp));
1421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialPrecautionsForStorage")) {
1422        res.getSpecialPrecautionsForStorage().add(parseCodeableConcept(xpp));
1423      } else if (!parseBackboneElementContent(eventType, xpp, res))
1424        return false;
1425    return true;
1426  }
1427
1428  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1429    ContactDetail res = new ContactDetail();
1430    parseTypeAttributes(xpp, res);
1431    next(xpp);
1432    int eventType = nextNoWhitespace(xpp);
1433    while (eventType != XmlPullParser.END_TAG) {
1434  if (!parseContactDetailContent(eventType, xpp, res))
1435        unknownContent(xpp);
1436      eventType = nextNoWhitespace(xpp);
1437    }
1438    next(xpp);
1439    parseElementClose(res);
1440    return res;
1441  }
1442
1443  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1444      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1445        res.setNameElement(parseString(xpp));
1446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1447        res.getTelecom().add(parseContactPoint(xpp));
1448      } else if (!parseElementContent(eventType, xpp, res))
1449        return false;
1450    return true;
1451  }
1452
1453  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1454    UsageContext res = new UsageContext();
1455    parseTypeAttributes(xpp, res);
1456    next(xpp);
1457    int eventType = nextNoWhitespace(xpp);
1458    while (eventType != XmlPullParser.END_TAG) {
1459  if (!parseUsageContextContent(eventType, xpp, res))
1460        unknownContent(xpp);
1461      eventType = nextNoWhitespace(xpp);
1462    }
1463    next(xpp);
1464    parseElementClose(res);
1465    return res;
1466  }
1467
1468  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
1469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1470        res.setCode(parseCoding(xpp));
1471      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1472        res.setValue(parseType("value", xpp));
1473      } else if (!parseElementContent(eventType, xpp, res))
1474        return false;
1475    return true;
1476  }
1477
1478  protected Expression parseExpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1479    Expression res = new Expression();
1480    parseTypeAttributes(xpp, res);
1481    next(xpp);
1482    int eventType = nextNoWhitespace(xpp);
1483    while (eventType != XmlPullParser.END_TAG) {
1484  if (!parseExpressionContent(eventType, xpp, res))
1485        unknownContent(xpp);
1486      eventType = nextNoWhitespace(xpp);
1487    }
1488    next(xpp);
1489    parseElementClose(res);
1490    return res;
1491  }
1492
1493  protected boolean parseExpressionContent(int eventType, XmlPullParser xpp, Expression res) throws XmlPullParserException, IOException, FHIRFormatError {
1494      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1495        res.setDescriptionElement(parseString(xpp));
1496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1497        res.setNameElement(parseId(xpp));
1498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1499        res.setLanguageElement(parseCode(xpp));
1500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1501        res.setExpressionElement(parseString(xpp));
1502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1503        res.setReferenceElement(parseUri(xpp));
1504      } else if (!parseElementContent(eventType, xpp, res))
1505        return false;
1506    return true;
1507  }
1508
1509  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1510    Signature res = new Signature();
1511    parseTypeAttributes(xpp, res);
1512    next(xpp);
1513    int eventType = nextNoWhitespace(xpp);
1514    while (eventType != XmlPullParser.END_TAG) {
1515  if (!parseSignatureContent(eventType, xpp, res))
1516        unknownContent(xpp);
1517      eventType = nextNoWhitespace(xpp);
1518    }
1519    next(xpp);
1520    parseElementClose(res);
1521    return res;
1522  }
1523
1524  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
1525      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1526        res.getType().add(parseCoding(xpp));
1527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1528        res.setWhenElement(parseInstant(xpp));
1529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
1530        res.setWho(parseReference(xpp));
1531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
1532        res.setOnBehalfOf(parseReference(xpp));
1533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetFormat")) {
1534        res.setTargetFormatElement(parseCode(xpp));
1535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sigFormat")) {
1536        res.setSigFormatElement(parseCode(xpp));
1537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1538        res.setDataElement(parseBase64Binary(xpp));
1539      } else if (!parseElementContent(eventType, xpp, res))
1540        return false;
1541    return true;
1542  }
1543
1544  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1545    Timing res = new Timing();
1546    parseTypeAttributes(xpp, res);
1547    next(xpp);
1548    int eventType = nextNoWhitespace(xpp);
1549    while (eventType != XmlPullParser.END_TAG) {
1550  if (!parseTimingContent(eventType, xpp, res))
1551        unknownContent(xpp);
1552      eventType = nextNoWhitespace(xpp);
1553    }
1554    next(xpp);
1555    parseElementClose(res);
1556    return res;
1557  }
1558
1559  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1560      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1561        res.getEvent().add(parseDateTime(xpp));
1562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1563        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1565        res.setCode(parseCodeableConcept(xpp));
1566      } else if (!parseBackboneElementContent(eventType, xpp, res))
1567        return false;
1568    return true;
1569  }
1570
1571  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1572    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1573    parseElementAttributes(xpp, res);
1574    next(xpp);
1575    int eventType = nextNoWhitespace(xpp);
1576    while (eventType != XmlPullParser.END_TAG) {
1577  if (!parseTimingTimingRepeatComponentContent(eventType, xpp, owner, res))
1578        unknownContent(xpp);
1579      eventType = nextNoWhitespace(xpp);
1580    }
1581    next(xpp);
1582    parseElementClose(res);
1583    return res;
1584  }
1585
1586  protected boolean parseTimingTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing owner, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1587      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1588        res.setBounds(parseType("bounds", xpp));
1589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1590        res.setCountElement(parsePositiveInt(xpp));
1591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1592        res.setCountMaxElement(parsePositiveInt(xpp));
1593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1594        res.setDurationElement(parseDecimal(xpp));
1595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1596        res.setDurationMaxElement(parseDecimal(xpp));
1597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1598        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1600        res.setFrequencyElement(parsePositiveInt(xpp));
1601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1602        res.setFrequencyMaxElement(parsePositiveInt(xpp));
1603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1604        res.setPeriodElement(parseDecimal(xpp));
1605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1606        res.setPeriodMaxElement(parseDecimal(xpp));
1607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1608        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
1610        res.getDayOfWeek().add(parseEnumeration(xpp, Timing.DayOfWeek.NULL, new Timing.DayOfWeekEnumFactory()));
1611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
1612        res.getTimeOfDay().add(parseTime(xpp));
1613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1614        res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1616        res.setOffsetElement(parseUnsignedInt(xpp));
1617      } else if (!parseElementContent(eventType, xpp, res))
1618        return false;
1619    return true;
1620  }
1621
1622  protected ProdCharacteristic parseProdCharacteristic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1623    ProdCharacteristic res = new ProdCharacteristic();
1624    parseTypeAttributes(xpp, res);
1625    next(xpp);
1626    int eventType = nextNoWhitespace(xpp);
1627    while (eventType != XmlPullParser.END_TAG) {
1628  if (!parseProdCharacteristicContent(eventType, xpp, res))
1629        unknownContent(xpp);
1630      eventType = nextNoWhitespace(xpp);
1631    }
1632    next(xpp);
1633    parseElementClose(res);
1634    return res;
1635  }
1636
1637  protected boolean parseProdCharacteristicContent(int eventType, XmlPullParser xpp, ProdCharacteristic res) throws XmlPullParserException, IOException, FHIRFormatError {
1638      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
1639        res.setHeight(parseQuantity(xpp));
1640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
1641        res.setWidth(parseQuantity(xpp));
1642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("depth")) {
1643        res.setDepth(parseQuantity(xpp));
1644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weight")) {
1645        res.setWeight(parseQuantity(xpp));
1646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nominalVolume")) {
1647        res.setNominalVolume(parseQuantity(xpp));
1648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("externalDiameter")) {
1649        res.setExternalDiameter(parseQuantity(xpp));
1650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shape")) {
1651        res.setShapeElement(parseString(xpp));
1652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
1653        res.getColor().add(parseString(xpp));
1654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imprint")) {
1655        res.getImprint().add(parseString(xpp));
1656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
1657        res.getImage().add(parseAttachment(xpp));
1658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
1659        res.setScoring(parseCodeableConcept(xpp));
1660      } else if (!parseBackboneElementContent(eventType, xpp, res))
1661        return false;
1662    return true;
1663  }
1664
1665  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1666    CodeableConcept res = new CodeableConcept();
1667    parseTypeAttributes(xpp, res);
1668    next(xpp);
1669    int eventType = nextNoWhitespace(xpp);
1670    while (eventType != XmlPullParser.END_TAG) {
1671  if (!parseCodeableConceptContent(eventType, xpp, res))
1672        unknownContent(xpp);
1673      eventType = nextNoWhitespace(xpp);
1674    }
1675    next(xpp);
1676    parseElementClose(res);
1677    return res;
1678  }
1679
1680  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
1681      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
1682        res.getCoding().add(parseCoding(xpp));
1683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1684        res.setTextElement(parseString(xpp));
1685      } else if (!parseElementContent(eventType, xpp, res))
1686        return false;
1687    return true;
1688  }
1689
1690  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1691    ParameterDefinition res = new ParameterDefinition();
1692    parseTypeAttributes(xpp, res);
1693    next(xpp);
1694    int eventType = nextNoWhitespace(xpp);
1695    while (eventType != XmlPullParser.END_TAG) {
1696  if (!parseParameterDefinitionContent(eventType, xpp, res))
1697        unknownContent(xpp);
1698      eventType = nextNoWhitespace(xpp);
1699    }
1700    next(xpp);
1701    parseElementClose(res);
1702    return res;
1703  }
1704
1705  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1706      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1707        res.setNameElement(parseCode(xpp));
1708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1709        res.setUseElement(parseEnumeration(xpp, ParameterDefinition.ParameterUse.NULL, new ParameterDefinition.ParameterUseEnumFactory()));
1710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1711        res.setMinElement(parseInteger(xpp));
1712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1713        res.setMaxElement(parseString(xpp));
1714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1715        res.setDocumentationElement(parseString(xpp));
1716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1717        res.setTypeElement(parseCode(xpp));
1718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1719        res.setProfileElement(parseCanonical(xpp));
1720      } else if (!parseElementContent(eventType, xpp, res))
1721        return false;
1722    return true;
1723  }
1724
1725  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1726    ElementDefinition res = new ElementDefinition();
1727    parseElementAttributes(xpp, res);
1728    next(xpp);
1729    int eventType = nextNoWhitespace(xpp);
1730    while (eventType != XmlPullParser.END_TAG) {
1731  if (!parseElementDefinitionContent(eventType, xpp, res))
1732        unknownContent(xpp);
1733      eventType = nextNoWhitespace(xpp);
1734    }
1735    next(xpp);
1736    parseElementClose(res);
1737    return res;
1738  }
1739
1740  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1742        res.setPathElement(parseString(xpp));
1743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1744        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1746        res.setSliceNameElement(parseString(xpp));
1747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceIsConstraining")) {
1748        res.setSliceIsConstrainingElement(parseBoolean(xpp));
1749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1750        res.setLabelElement(parseString(xpp));
1751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1752        res.getCode().add(parseCoding(xpp));
1753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1754        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1756        res.setShortElement(parseString(xpp));
1757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1758        res.setDefinitionElement(parseMarkdown(xpp));
1759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1760        res.setCommentElement(parseMarkdown(xpp));
1761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1762        res.setRequirementsElement(parseMarkdown(xpp));
1763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1764        res.getAlias().add(parseString(xpp));
1765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1766        res.setMinElement(parseUnsignedInt(xpp));
1767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1768        res.setMaxElement(parseString(xpp));
1769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1770        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1772        res.setContentReferenceElement(parseUri(xpp));
1773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1774        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1775      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1776        res.setDefaultValue(parseType("defaultValue", xpp));
1777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1778        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1780        res.setOrderMeaningElement(parseString(xpp));
1781      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1782        res.setFixed(parseType("fixed", xpp));
1783      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1784        res.setPattern(parseType("pattern", xpp));
1785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1786        res.getExample().add(parseElementDefinitionElementDefinitionExampleComponent(xpp, res));
1787      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1788        res.setMinValue(parseType("minValue", xpp));
1789      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1790        res.setMaxValue(parseType("maxValue", xpp));
1791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1792        res.setMaxLengthElement(parseInteger(xpp));
1793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1794        res.getCondition().add(parseId(xpp));
1795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1796        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1798        res.setMustSupportElement(parseBoolean(xpp));
1799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1800        res.setIsModifierElement(parseBoolean(xpp));
1801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifierReason")) {
1802        res.setIsModifierReasonElement(parseString(xpp));
1803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1804        res.setIsSummaryElement(parseBoolean(xpp));
1805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1806        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1808        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1809      } else if (!parseBackboneElementContent(eventType, xpp, res))
1810        return false;
1811    return true;
1812  }
1813
1814  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1815    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1816    parseElementAttributes(xpp, res);
1817    next(xpp);
1818    int eventType = nextNoWhitespace(xpp);
1819    while (eventType != XmlPullParser.END_TAG) {
1820  if (!parseElementDefinitionElementDefinitionSlicingComponentContent(eventType, xpp, owner, res))
1821        unknownContent(xpp);
1822      eventType = nextNoWhitespace(xpp);
1823    }
1824    next(xpp);
1825    parseElementClose(res);
1826    return res;
1827  }
1828
1829  protected boolean parseElementDefinitionElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1830      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1831        res.getDiscriminator().add(parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(xpp, owner));
1832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1833        res.setDescriptionElement(parseString(xpp));
1834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1835        res.setOrderedElement(parseBoolean(xpp));
1836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1837        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1838      } else if (!parseElementContent(eventType, xpp, res))
1839        return false;
1840    return true;
1841  }
1842
1843  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1844    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1845    parseElementAttributes(xpp, res);
1846    next(xpp);
1847    int eventType = nextNoWhitespace(xpp);
1848    while (eventType != XmlPullParser.END_TAG) {
1849  if (!parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, owner, res))
1850        unknownContent(xpp);
1851      eventType = nextNoWhitespace(xpp);
1852    }
1853    next(xpp);
1854    parseElementClose(res);
1855    return res;
1856  }
1857
1858  protected boolean parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1859      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1860        res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1862        res.setPathElement(parseString(xpp));
1863      } else if (!parseElementContent(eventType, xpp, res))
1864        return false;
1865    return true;
1866  }
1867
1868  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1869    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1870    parseElementAttributes(xpp, res);
1871    next(xpp);
1872    int eventType = nextNoWhitespace(xpp);
1873    while (eventType != XmlPullParser.END_TAG) {
1874  if (!parseElementDefinitionElementDefinitionBaseComponentContent(eventType, xpp, owner, res))
1875        unknownContent(xpp);
1876      eventType = nextNoWhitespace(xpp);
1877    }
1878    next(xpp);
1879    parseElementClose(res);
1880    return res;
1881  }
1882
1883  protected boolean parseElementDefinitionElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1884      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1885        res.setPathElement(parseString(xpp));
1886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1887        res.setMinElement(parseUnsignedInt(xpp));
1888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1889        res.setMaxElement(parseString(xpp));
1890      } else if (!parseElementContent(eventType, xpp, res))
1891        return false;
1892    return true;
1893  }
1894
1895  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1896    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1897    parseElementAttributes(xpp, res);
1898    next(xpp);
1899    int eventType = nextNoWhitespace(xpp);
1900    while (eventType != XmlPullParser.END_TAG) {
1901  if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, owner, res))
1902        unknownContent(xpp);
1903      eventType = nextNoWhitespace(xpp);
1904    }
1905    next(xpp);
1906    parseElementClose(res);
1907    return res;
1908  }
1909
1910  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1911      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1912        res.setCodeElement(parseUri(xpp));
1913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1914        res.getProfile().add(parseCanonical(xpp));
1915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1916        res.getTargetProfile().add(parseCanonical(xpp));
1917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1918        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1920        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1921      } else if (!parseElementContent(eventType, xpp, res))
1922        return false;
1923    return true;
1924  }
1925
1926  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionElementDefinitionExampleComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1927    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1928    parseElementAttributes(xpp, res);
1929    next(xpp);
1930    int eventType = nextNoWhitespace(xpp);
1931    while (eventType != XmlPullParser.END_TAG) {
1932  if (!parseElementDefinitionElementDefinitionExampleComponentContent(eventType, xpp, owner, res))
1933        unknownContent(xpp);
1934      eventType = nextNoWhitespace(xpp);
1935    }
1936    next(xpp);
1937    parseElementClose(res);
1938    return res;
1939  }
1940
1941  protected boolean parseElementDefinitionElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1942      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1943        res.setLabelElement(parseString(xpp));
1944      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1945        res.setValue(parseType("value", xpp));
1946      } else if (!parseElementContent(eventType, xpp, res))
1947        return false;
1948    return true;
1949  }
1950
1951  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1952    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1953    parseElementAttributes(xpp, res);
1954    next(xpp);
1955    int eventType = nextNoWhitespace(xpp);
1956    while (eventType != XmlPullParser.END_TAG) {
1957  if (!parseElementDefinitionElementDefinitionConstraintComponentContent(eventType, xpp, owner, res))
1958        unknownContent(xpp);
1959      eventType = nextNoWhitespace(xpp);
1960    }
1961    next(xpp);
1962    parseElementClose(res);
1963    return res;
1964  }
1965
1966  protected boolean parseElementDefinitionElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1967      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1968        res.setKeyElement(parseId(xpp));
1969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1970        res.setRequirementsElement(parseString(xpp));
1971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1972        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1974        res.setHumanElement(parseString(xpp));
1975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1976        res.setExpressionElement(parseString(xpp));
1977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1978        res.setXpathElement(parseString(xpp));
1979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1980        res.setSourceElement(parseCanonical(xpp));
1981      } else if (!parseElementContent(eventType, xpp, res))
1982        return false;
1983    return true;
1984  }
1985
1986  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1987    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1988    parseElementAttributes(xpp, res);
1989    next(xpp);
1990    int eventType = nextNoWhitespace(xpp);
1991    while (eventType != XmlPullParser.END_TAG) {
1992  if (!parseElementDefinitionElementDefinitionBindingComponentContent(eventType, xpp, owner, res))
1993        unknownContent(xpp);
1994      eventType = nextNoWhitespace(xpp);
1995    }
1996    next(xpp);
1997    parseElementClose(res);
1998    return res;
1999  }
2000
2001  protected boolean parseElementDefinitionElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
2003        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
2004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2005        res.setDescriptionElement(parseString(xpp));
2006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
2007        res.setValueSetElement(parseCanonical(xpp));
2008      } else if (!parseElementContent(eventType, xpp, res))
2009        return false;
2010    return true;
2011  }
2012
2013  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2014    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
2015    parseElementAttributes(xpp, res);
2016    next(xpp);
2017    int eventType = nextNoWhitespace(xpp);
2018    while (eventType != XmlPullParser.END_TAG) {
2019  if (!parseElementDefinitionElementDefinitionMappingComponentContent(eventType, xpp, owner, res))
2020        unknownContent(xpp);
2021      eventType = nextNoWhitespace(xpp);
2022    }
2023    next(xpp);
2024    parseElementClose(res);
2025    return res;
2026  }
2027
2028  protected boolean parseElementDefinitionElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
2030        res.setIdentityElement(parseId(xpp));
2031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2032        res.setLanguageElement(parseCode(xpp));
2033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
2034        res.setMapElement(parseString(xpp));
2035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2036        res.setCommentElement(parseString(xpp));
2037      } else if (!parseElementContent(eventType, xpp, res))
2038        return false;
2039    return true;
2040  }
2041
2042  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2043    parseResourceAttributes(xpp, res);
2044  }
2045
2046  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2048        res.setText(parseNarrative(xpp));
2049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
2050        res.getContained().add(parseResourceContained(xpp));
2051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
2052        res.getExtension().add(parseExtension(xpp));
2053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
2054        res.getModifierExtension().add(parseExtension(xpp));
2055    } else
2056    return parseResourceContent(eventType, xpp, res);
2057    return true;
2058  }
2059
2060  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2061    Parameters res = new Parameters();
2062    parseResourceAttributes(xpp, res);
2063    next(xpp);
2064    int eventType = nextNoWhitespace(xpp);
2065    while (eventType != XmlPullParser.END_TAG) {
2066  if (!parseParametersContent(eventType, xpp, res))
2067        unknownContent(xpp);
2068      eventType = nextNoWhitespace(xpp);
2069    }
2070    next(xpp);
2071    parseElementClose(res);
2072    return res;
2073  }
2074
2075  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
2076      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
2077        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
2078      } else if (!parseResourceContent(eventType, xpp, res))
2079        return false;
2080    return true;
2081  }
2082
2083  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
2084    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
2085    parseBackboneAttributes(xpp, res);
2086    next(xpp);
2087    int eventType = nextNoWhitespace(xpp);
2088    while (eventType != XmlPullParser.END_TAG) {
2089  if (!parseParametersParametersParameterComponentContent(eventType, xpp, owner, res))
2090        unknownContent(xpp);
2091      eventType = nextNoWhitespace(xpp);
2092    }
2093    next(xpp);
2094    parseElementClose(res);
2095    return res;
2096  }
2097
2098  protected boolean parseParametersParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters owner, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2099      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2100        res.setNameElement(parseString(xpp));
2101      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2102        res.setValue(parseType("value", xpp));
2103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2104        res.setResource(parseResourceContained(xpp));
2105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
2106        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
2107      } else if (!parseBackboneElementContent(eventType, xpp, res))
2108        return false;
2109    return true;
2110  }
2111
2112  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2113    if (!comments.isEmpty()) {
2114      res.getFormatCommentsPre().addAll(comments);
2115      comments.clear();
2116     }
2117  }
2118
2119  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2120      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
2121        res.setIdElement(parseId(xpp));
2122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
2123        res.setMeta(parseMeta(xpp));
2124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
2125        res.setImplicitRulesElement(parseUri(xpp));
2126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2127        res.setLanguageElement(parseCode(xpp));
2128    } else
2129        return false;
2130    return true;
2131  }
2132
2133  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2134    Account res = new Account();
2135    parseDomainResourceAttributes(xpp, res);
2136    next(xpp);
2137    int eventType = nextNoWhitespace(xpp);
2138    while (eventType != XmlPullParser.END_TAG) {
2139  if (!parseAccountContent(eventType, xpp, res))
2140        unknownContent(xpp);
2141      eventType = nextNoWhitespace(xpp);
2142    }
2143    next(xpp);
2144    parseElementClose(res);
2145    return res;
2146  }
2147
2148  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
2149      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2150        res.getIdentifier().add(parseIdentifier(xpp));
2151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2152        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
2153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2154        res.setType(parseCodeableConcept(xpp));
2155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2156        res.setNameElement(parseString(xpp));
2157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2158        res.getSubject().add(parseReference(xpp));
2159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("servicePeriod")) {
2160        res.setServicePeriod(parsePeriod(xpp));
2161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2162        res.getCoverage().add(parseAccountCoverageComponent(xpp, res));
2163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
2164        res.setOwner(parseReference(xpp));
2165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2166        res.setDescriptionElement(parseString(xpp));
2167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
2168        res.getGuarantor().add(parseAccountGuarantorComponent(xpp, res));
2169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
2170        res.setPartOf(parseReference(xpp));
2171      } else if (!parseDomainResourceContent(eventType, xpp, res))
2172        return false;
2173    return true;
2174  }
2175
2176  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2177    Account.CoverageComponent res = new Account.CoverageComponent();
2178    parseBackboneAttributes(xpp, res);
2179    next(xpp);
2180    int eventType = nextNoWhitespace(xpp);
2181    while (eventType != XmlPullParser.END_TAG) {
2182  if (!parseAccountCoverageComponentContent(eventType, xpp, owner, res))
2183        unknownContent(xpp);
2184      eventType = nextNoWhitespace(xpp);
2185    }
2186    next(xpp);
2187    parseElementClose(res);
2188    return res;
2189  }
2190
2191  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2192      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2193        res.setCoverage(parseReference(xpp));
2194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2195        res.setPriorityElement(parsePositiveInt(xpp));
2196      } else if (!parseBackboneElementContent(eventType, xpp, res))
2197        return false;
2198    return true;
2199  }
2200
2201  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2202    Account.GuarantorComponent res = new Account.GuarantorComponent();
2203    parseBackboneAttributes(xpp, res);
2204    next(xpp);
2205    int eventType = nextNoWhitespace(xpp);
2206    while (eventType != XmlPullParser.END_TAG) {
2207  if (!parseAccountGuarantorComponentContent(eventType, xpp, owner, res))
2208        unknownContent(xpp);
2209      eventType = nextNoWhitespace(xpp);
2210    }
2211    next(xpp);
2212    parseElementClose(res);
2213    return res;
2214  }
2215
2216  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2217      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
2218        res.setParty(parseReference(xpp));
2219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
2220        res.setOnHoldElement(parseBoolean(xpp));
2221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2222        res.setPeriod(parsePeriod(xpp));
2223      } else if (!parseBackboneElementContent(eventType, xpp, res))
2224        return false;
2225    return true;
2226  }
2227
2228  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2229    ActivityDefinition res = new ActivityDefinition();
2230    parseDomainResourceAttributes(xpp, res);
2231    next(xpp);
2232    int eventType = nextNoWhitespace(xpp);
2233    while (eventType != XmlPullParser.END_TAG) {
2234  if (!parseActivityDefinitionContent(eventType, xpp, res))
2235        unknownContent(xpp);
2236      eventType = nextNoWhitespace(xpp);
2237    }
2238    next(xpp);
2239    parseElementClose(res);
2240    return res;
2241  }
2242
2243  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2244      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2245        res.setUrlElement(parseUri(xpp));
2246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2247        res.getIdentifier().add(parseIdentifier(xpp));
2248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2249        res.setVersionElement(parseString(xpp));
2250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2251        res.setNameElement(parseString(xpp));
2252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2253        res.setTitleElement(parseString(xpp));
2254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
2255        res.setSubtitleElement(parseString(xpp));
2256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2257        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2259        res.setExperimentalElement(parseBoolean(xpp));
2260      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
2261        res.setSubject(parseType("subject", xpp));
2262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2263        res.setDateElement(parseDateTime(xpp));
2264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2265        res.setPublisherElement(parseString(xpp));
2266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2267        res.getContact().add(parseContactDetail(xpp));
2268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2269        res.setDescriptionElement(parseMarkdown(xpp));
2270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2271        res.getUseContext().add(parseUsageContext(xpp));
2272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2273        res.getJurisdiction().add(parseCodeableConcept(xpp));
2274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2275        res.setPurposeElement(parseMarkdown(xpp));
2276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
2277        res.setUsageElement(parseString(xpp));
2278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2279        res.setCopyrightElement(parseMarkdown(xpp));
2280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
2281        res.setApprovalDateElement(parseDate(xpp));
2282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
2283        res.setLastReviewDateElement(parseDate(xpp));
2284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
2285        res.setEffectivePeriod(parsePeriod(xpp));
2286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
2287        res.getTopic().add(parseCodeableConcept(xpp));
2288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2289        res.getAuthor().add(parseContactDetail(xpp));
2290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
2291        res.getEditor().add(parseContactDetail(xpp));
2292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
2293        res.getReviewer().add(parseContactDetail(xpp));
2294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
2295        res.getEndorser().add(parseContactDetail(xpp));
2296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
2297        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
2298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
2299        res.getLibrary().add(parseCanonical(xpp));
2300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2301        res.setKindElement(parseEnumeration(xpp, ActivityDefinition.ActivityDefinitionKind.NULL, new ActivityDefinition.ActivityDefinitionKindEnumFactory()));
2302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2303        res.setProfileElement(parseCanonical(xpp));
2304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2305        res.setCode(parseCodeableConcept(xpp));
2306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
2307        res.setIntentElement(parseEnumeration(xpp, ActivityDefinition.RequestIntent.NULL, new ActivityDefinition.RequestIntentEnumFactory()));
2308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2309        res.setPriorityElement(parseEnumeration(xpp, ActivityDefinition.RequestPriority.NULL, new ActivityDefinition.RequestPriorityEnumFactory()));
2310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
2311        res.setDoNotPerformElement(parseBoolean(xpp));
2312      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2313        res.setTiming(parseType("timing", xpp));
2314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2315        res.setLocation(parseReference(xpp));
2316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2317        res.getParticipant().add(parseActivityDefinitionActivityDefinitionParticipantComponent(xpp, res));
2318      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2319        res.setProduct(parseType("product", xpp));
2320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2321        res.setQuantity(parseQuantity(xpp));
2322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2323        res.getDosage().add(parseDosage(xpp));
2324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2325        res.getBodySite().add(parseCodeableConcept(xpp));
2326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenRequirement")) {
2327        res.getSpecimenRequirement().add(parseReference(xpp));
2328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationRequirement")) {
2329        res.getObservationRequirement().add(parseReference(xpp));
2330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationResultRequirement")) {
2331        res.getObservationResultRequirement().add(parseReference(xpp));
2332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2333        res.setTransformElement(parseCanonical(xpp));
2334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2335        res.getDynamicValue().add(parseActivityDefinitionActivityDefinitionDynamicValueComponent(xpp, res));
2336      } else if (!parseDomainResourceContent(eventType, xpp, res))
2337        return false;
2338    return true;
2339  }
2340
2341  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionActivityDefinitionParticipantComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2342    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2343    parseBackboneAttributes(xpp, res);
2344    next(xpp);
2345    int eventType = nextNoWhitespace(xpp);
2346    while (eventType != XmlPullParser.END_TAG) {
2347  if (!parseActivityDefinitionActivityDefinitionParticipantComponentContent(eventType, xpp, owner, res))
2348        unknownContent(xpp);
2349      eventType = nextNoWhitespace(xpp);
2350    }
2351    next(xpp);
2352    parseElementClose(res);
2353    return res;
2354  }
2355
2356  protected boolean parseActivityDefinitionActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2358        res.setTypeElement(parseEnumeration(xpp, ActivityDefinition.ActivityParticipantType.NULL, new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
2359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2360        res.setRole(parseCodeableConcept(xpp));
2361      } else if (!parseBackboneElementContent(eventType, xpp, res))
2362        return false;
2363    return true;
2364  }
2365
2366  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionActivityDefinitionDynamicValueComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2367    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2368    parseBackboneAttributes(xpp, res);
2369    next(xpp);
2370    int eventType = nextNoWhitespace(xpp);
2371    while (eventType != XmlPullParser.END_TAG) {
2372  if (!parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(eventType, xpp, owner, res))
2373        unknownContent(xpp);
2374      eventType = nextNoWhitespace(xpp);
2375    }
2376    next(xpp);
2377    parseElementClose(res);
2378    return res;
2379  }
2380
2381  protected boolean parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2382      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2383        res.setPathElement(parseString(xpp));
2384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2385        res.setExpression(parseExpression(xpp));
2386      } else if (!parseBackboneElementContent(eventType, xpp, res))
2387        return false;
2388    return true;
2389  }
2390
2391  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2392    AdverseEvent res = new AdverseEvent();
2393    parseDomainResourceAttributes(xpp, res);
2394    next(xpp);
2395    int eventType = nextNoWhitespace(xpp);
2396    while (eventType != XmlPullParser.END_TAG) {
2397  if (!parseAdverseEventContent(eventType, xpp, res))
2398        unknownContent(xpp);
2399      eventType = nextNoWhitespace(xpp);
2400    }
2401    next(xpp);
2402    parseElementClose(res);
2403    return res;
2404  }
2405
2406  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2407      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2408        res.setIdentifier(parseIdentifier(xpp));
2409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actuality")) {
2410        res.setActualityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventActuality.NULL, new AdverseEvent.AdverseEventActualityEnumFactory()));
2411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2412        res.getCategory().add(parseCodeableConcept(xpp));
2413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
2414        res.setEvent(parseCodeableConcept(xpp));
2415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2416        res.setSubject(parseReference(xpp));
2417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2418        res.setEncounter(parseReference(xpp));
2419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2420        res.setDateElement(parseDateTime(xpp));
2421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detected")) {
2422        res.setDetectedElement(parseDateTime(xpp));
2423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2424        res.setRecordedDateElement(parseDateTime(xpp));
2425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultingCondition")) {
2426        res.getResultingCondition().add(parseReference(xpp));
2427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2428        res.setLocation(parseReference(xpp));
2429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2430        res.setSeriousness(parseCodeableConcept(xpp));
2431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2432        res.setSeverity(parseCodeableConcept(xpp));
2433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2434        res.setOutcome(parseCodeableConcept(xpp));
2435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2436        res.setRecorder(parseReference(xpp));
2437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
2438        res.getContributor().add(parseReference(xpp));
2439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2440        res.getSuspectEntity().add(parseAdverseEventAdverseEventSuspectEntityComponent(xpp, res));
2441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2442        res.getSubjectMedicalHistory().add(parseReference(xpp));
2443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2444        res.getReferenceDocument().add(parseReference(xpp));
2445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2446        res.getStudy().add(parseReference(xpp));
2447      } else if (!parseDomainResourceContent(eventType, xpp, res))
2448        return false;
2449    return true;
2450  }
2451
2452  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventAdverseEventSuspectEntityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2453    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2454    parseBackboneAttributes(xpp, res);
2455    next(xpp);
2456    int eventType = nextNoWhitespace(xpp);
2457    while (eventType != XmlPullParser.END_TAG) {
2458  if (!parseAdverseEventAdverseEventSuspectEntityComponentContent(eventType, xpp, owner, res))
2459        unknownContent(xpp);
2460      eventType = nextNoWhitespace(xpp);
2461    }
2462    next(xpp);
2463    parseElementClose(res);
2464    return res;
2465  }
2466
2467  protected boolean parseAdverseEventAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2468      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2469        res.setInstance(parseReference(xpp));
2470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2471        res.getCausality().add(parseAdverseEventAdverseEventSuspectEntityCausalityComponent(xpp, owner));
2472      } else if (!parseBackboneElementContent(eventType, xpp, res))
2473        return false;
2474    return true;
2475  }
2476
2477  protected AdverseEvent.AdverseEventSuspectEntityCausalityComponent parseAdverseEventAdverseEventSuspectEntityCausalityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2478    AdverseEvent.AdverseEventSuspectEntityCausalityComponent res = new AdverseEvent.AdverseEventSuspectEntityCausalityComponent();
2479    parseBackboneAttributes(xpp, res);
2480    next(xpp);
2481    int eventType = nextNoWhitespace(xpp);
2482    while (eventType != XmlPullParser.END_TAG) {
2483  if (!parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(eventType, xpp, owner, res))
2484        unknownContent(xpp);
2485      eventType = nextNoWhitespace(xpp);
2486    }
2487    next(xpp);
2488    parseElementClose(res);
2489    return res;
2490  }
2491
2492  protected boolean parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityCausalityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2493      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
2494        res.setAssessment(parseCodeableConcept(xpp));
2495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productRelatedness")) {
2496        res.setProductRelatednessElement(parseString(xpp));
2497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2498        res.setAuthor(parseReference(xpp));
2499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2500        res.setMethod(parseCodeableConcept(xpp));
2501      } else if (!parseBackboneElementContent(eventType, xpp, res))
2502        return false;
2503    return true;
2504  }
2505
2506  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2507    AllergyIntolerance res = new AllergyIntolerance();
2508    parseDomainResourceAttributes(xpp, res);
2509    next(xpp);
2510    int eventType = nextNoWhitespace(xpp);
2511    while (eventType != XmlPullParser.END_TAG) {
2512  if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2513        unknownContent(xpp);
2514      eventType = nextNoWhitespace(xpp);
2515    }
2516    next(xpp);
2517    parseElementClose(res);
2518    return res;
2519  }
2520
2521  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2522      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2523        res.getIdentifier().add(parseIdentifier(xpp));
2524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2525        res.setClinicalStatus(parseCodeableConcept(xpp));
2526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2527        res.setVerificationStatus(parseCodeableConcept(xpp));
2528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2529        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2531        res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2533        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2535        res.setCode(parseCodeableConcept(xpp));
2536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2537        res.setPatient(parseReference(xpp));
2538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2539        res.setEncounter(parseReference(xpp));
2540      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2541        res.setOnset(parseType("onset", xpp));
2542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2543        res.setRecordedDateElement(parseDateTime(xpp));
2544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2545        res.setRecorder(parseReference(xpp));
2546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2547        res.setAsserter(parseReference(xpp));
2548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2549        res.setLastOccurrenceElement(parseDateTime(xpp));
2550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2551        res.getNote().add(parseAnnotation(xpp));
2552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2553        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
2554      } else if (!parseDomainResourceContent(eventType, xpp, res))
2555        return false;
2556    return true;
2557  }
2558
2559  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
2560    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2561    parseBackboneAttributes(xpp, res);
2562    next(xpp);
2563    int eventType = nextNoWhitespace(xpp);
2564    while (eventType != XmlPullParser.END_TAG) {
2565  if (!parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(eventType, xpp, owner, res))
2566        unknownContent(xpp);
2567      eventType = nextNoWhitespace(xpp);
2568    }
2569    next(xpp);
2570    parseElementClose(res);
2571    return res;
2572  }
2573
2574  protected boolean parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance owner, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2575      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2576        res.setSubstance(parseCodeableConcept(xpp));
2577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2578        res.getManifestation().add(parseCodeableConcept(xpp));
2579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2580        res.setDescriptionElement(parseString(xpp));
2581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2582        res.setOnsetElement(parseDateTime(xpp));
2583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2584        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2586        res.setExposureRoute(parseCodeableConcept(xpp));
2587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2588        res.getNote().add(parseAnnotation(xpp));
2589      } else if (!parseBackboneElementContent(eventType, xpp, res))
2590        return false;
2591    return true;
2592  }
2593
2594  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2595    Appointment res = new Appointment();
2596    parseDomainResourceAttributes(xpp, res);
2597    next(xpp);
2598    int eventType = nextNoWhitespace(xpp);
2599    while (eventType != XmlPullParser.END_TAG) {
2600  if (!parseAppointmentContent(eventType, xpp, res))
2601        unknownContent(xpp);
2602      eventType = nextNoWhitespace(xpp);
2603    }
2604    next(xpp);
2605    parseElementClose(res);
2606    return res;
2607  }
2608
2609  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2610      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2611        res.getIdentifier().add(parseIdentifier(xpp));
2612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2613        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelationReason")) {
2615        res.setCancelationReason(parseCodeableConcept(xpp));
2616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2617        res.getServiceCategory().add(parseCodeableConcept(xpp));
2618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2619        res.getServiceType().add(parseCodeableConcept(xpp));
2620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2621        res.getSpecialty().add(parseCodeableConcept(xpp));
2622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2623        res.setAppointmentType(parseCodeableConcept(xpp));
2624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
2625        res.getReasonCode().add(parseCodeableConcept(xpp));
2626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
2627        res.getReasonReference().add(parseReference(xpp));
2628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2629        res.setPriorityElement(parseUnsignedInt(xpp));
2630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2631        res.setDescriptionElement(parseString(xpp));
2632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2633        res.getSupportingInformation().add(parseReference(xpp));
2634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2635        res.setStartElement(parseInstant(xpp));
2636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2637        res.setEndElement(parseInstant(xpp));
2638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2639        res.setMinutesDurationElement(parsePositiveInt(xpp));
2640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2641        res.getSlot().add(parseReference(xpp));
2642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2643        res.setCreatedElement(parseDateTime(xpp));
2644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2645        res.setCommentElement(parseString(xpp));
2646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
2647        res.setPatientInstructionElement(parseString(xpp));
2648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
2649        res.getBasedOn().add(parseReference(xpp));
2650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2651        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
2652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2653        res.getRequestedPeriod().add(parsePeriod(xpp));
2654      } else if (!parseDomainResourceContent(eventType, xpp, res))
2655        return false;
2656    return true;
2657  }
2658
2659  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
2660    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2661    parseBackboneAttributes(xpp, res);
2662    next(xpp);
2663    int eventType = nextNoWhitespace(xpp);
2664    while (eventType != XmlPullParser.END_TAG) {
2665  if (!parseAppointmentAppointmentParticipantComponentContent(eventType, xpp, owner, res))
2666        unknownContent(xpp);
2667      eventType = nextNoWhitespace(xpp);
2668    }
2669    next(xpp);
2670    parseElementClose(res);
2671    return res;
2672  }
2673
2674  protected boolean parseAppointmentAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment owner, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2675      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2676        res.getType().add(parseCodeableConcept(xpp));
2677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2678        res.setActor(parseReference(xpp));
2679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2680        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2682        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
2683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2684        res.setPeriod(parsePeriod(xpp));
2685      } else if (!parseBackboneElementContent(eventType, xpp, res))
2686        return false;
2687    return true;
2688  }
2689
2690  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2691    AppointmentResponse res = new AppointmentResponse();
2692    parseDomainResourceAttributes(xpp, res);
2693    next(xpp);
2694    int eventType = nextNoWhitespace(xpp);
2695    while (eventType != XmlPullParser.END_TAG) {
2696  if (!parseAppointmentResponseContent(eventType, xpp, res))
2697        unknownContent(xpp);
2698      eventType = nextNoWhitespace(xpp);
2699    }
2700    next(xpp);
2701    parseElementClose(res);
2702    return res;
2703  }
2704
2705  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2706      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2707        res.getIdentifier().add(parseIdentifier(xpp));
2708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2709        res.setAppointment(parseReference(xpp));
2710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2711        res.setStartElement(parseInstant(xpp));
2712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2713        res.setEndElement(parseInstant(xpp));
2714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2715        res.getParticipantType().add(parseCodeableConcept(xpp));
2716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2717        res.setActor(parseReference(xpp));
2718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2719        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
2720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2721        res.setCommentElement(parseString(xpp));
2722      } else if (!parseDomainResourceContent(eventType, xpp, res))
2723        return false;
2724    return true;
2725  }
2726
2727  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2728    AuditEvent res = new AuditEvent();
2729    parseDomainResourceAttributes(xpp, res);
2730    next(xpp);
2731    int eventType = nextNoWhitespace(xpp);
2732    while (eventType != XmlPullParser.END_TAG) {
2733  if (!parseAuditEventContent(eventType, xpp, res))
2734        unknownContent(xpp);
2735      eventType = nextNoWhitespace(xpp);
2736    }
2737    next(xpp);
2738    parseElementClose(res);
2739    return res;
2740  }
2741
2742  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2744        res.setType(parseCoding(xpp));
2745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2746        res.getSubtype().add(parseCoding(xpp));
2747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2748        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2750        res.setPeriod(parsePeriod(xpp));
2751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2752        res.setRecordedElement(parseInstant(xpp));
2753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2754        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2756        res.setOutcomeDescElement(parseString(xpp));
2757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2758        res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2760        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
2761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2762        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
2763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2764        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
2765      } else if (!parseDomainResourceContent(eventType, xpp, res))
2766        return false;
2767    return true;
2768  }
2769
2770  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2771    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2772    parseBackboneAttributes(xpp, res);
2773    next(xpp);
2774    int eventType = nextNoWhitespace(xpp);
2775    while (eventType != XmlPullParser.END_TAG) {
2776  if (!parseAuditEventAuditEventAgentComponentContent(eventType, xpp, owner, res))
2777        unknownContent(xpp);
2778      eventType = nextNoWhitespace(xpp);
2779    }
2780    next(xpp);
2781    parseElementClose(res);
2782    return res;
2783  }
2784
2785  protected boolean parseAuditEventAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2786      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2787        res.setType(parseCodeableConcept(xpp));
2788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2789        res.getRole().add(parseCodeableConcept(xpp));
2790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
2791        res.setWho(parseReference(xpp));
2792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2793        res.setAltIdElement(parseString(xpp));
2794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2795        res.setNameElement(parseString(xpp));
2796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2797        res.setRequestorElement(parseBoolean(xpp));
2798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2799        res.setLocation(parseReference(xpp));
2800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2801        res.getPolicy().add(parseUri(xpp));
2802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2803        res.setMedia(parseCoding(xpp));
2804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2805        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
2806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2807        res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2808      } else if (!parseBackboneElementContent(eventType, xpp, res))
2809        return false;
2810    return true;
2811  }
2812
2813  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2814    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2815    parseBackboneAttributes(xpp, res);
2816    next(xpp);
2817    int eventType = nextNoWhitespace(xpp);
2818    while (eventType != XmlPullParser.END_TAG) {
2819  if (!parseAuditEventAuditEventAgentNetworkComponentContent(eventType, xpp, owner, res))
2820        unknownContent(xpp);
2821      eventType = nextNoWhitespace(xpp);
2822    }
2823    next(xpp);
2824    parseElementClose(res);
2825    return res;
2826  }
2827
2828  protected boolean parseAuditEventAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2830        res.setAddressElement(parseString(xpp));
2831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2832        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2833      } else if (!parseBackboneElementContent(eventType, xpp, res))
2834        return false;
2835    return true;
2836  }
2837
2838  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2839    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
2840    parseBackboneAttributes(xpp, res);
2841    next(xpp);
2842    int eventType = nextNoWhitespace(xpp);
2843    while (eventType != XmlPullParser.END_TAG) {
2844  if (!parseAuditEventAuditEventSourceComponentContent(eventType, xpp, owner, res))
2845        unknownContent(xpp);
2846      eventType = nextNoWhitespace(xpp);
2847    }
2848    next(xpp);
2849    parseElementClose(res);
2850    return res;
2851  }
2852
2853  protected boolean parseAuditEventAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2854      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
2855        res.setSiteElement(parseString(xpp));
2856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observer")) {
2857        res.setObserver(parseReference(xpp));
2858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2859        res.getType().add(parseCoding(xpp));
2860      } else if (!parseBackboneElementContent(eventType, xpp, res))
2861        return false;
2862    return true;
2863  }
2864
2865  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2866    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
2867    parseBackboneAttributes(xpp, res);
2868    next(xpp);
2869    int eventType = nextNoWhitespace(xpp);
2870    while (eventType != XmlPullParser.END_TAG) {
2871  if (!parseAuditEventAuditEventEntityComponentContent(eventType, xpp, owner, res))
2872        unknownContent(xpp);
2873      eventType = nextNoWhitespace(xpp);
2874    }
2875    next(xpp);
2876    parseElementClose(res);
2877    return res;
2878  }
2879
2880  protected boolean parseAuditEventAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2881      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
2882        res.setWhat(parseReference(xpp));
2883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2884        res.setType(parseCoding(xpp));
2885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2886        res.setRole(parseCoding(xpp));
2887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2888        res.setLifecycle(parseCoding(xpp));
2889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2890        res.getSecurityLabel().add(parseCoding(xpp));
2891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2892        res.setNameElement(parseString(xpp));
2893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2894        res.setDescriptionElement(parseString(xpp));
2895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2896        res.setQueryElement(parseBase64Binary(xpp));
2897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2898        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2899      } else if (!parseBackboneElementContent(eventType, xpp, res))
2900        return false;
2901    return true;
2902  }
2903
2904  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2905    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2906    parseBackboneAttributes(xpp, res);
2907    next(xpp);
2908    int eventType = nextNoWhitespace(xpp);
2909    while (eventType != XmlPullParser.END_TAG) {
2910  if (!parseAuditEventAuditEventEntityDetailComponentContent(eventType, xpp, owner, res))
2911        unknownContent(xpp);
2912      eventType = nextNoWhitespace(xpp);
2913    }
2914    next(xpp);
2915    parseElementClose(res);
2916    return res;
2917  }
2918
2919  protected boolean parseAuditEventAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2920      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2921        res.setTypeElement(parseString(xpp));
2922      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2923        res.setValue(parseType("value", xpp));
2924      } else if (!parseBackboneElementContent(eventType, xpp, res))
2925        return false;
2926    return true;
2927  }
2928
2929  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2930    Basic res = new Basic();
2931    parseDomainResourceAttributes(xpp, res);
2932    next(xpp);
2933    int eventType = nextNoWhitespace(xpp);
2934    while (eventType != XmlPullParser.END_TAG) {
2935  if (!parseBasicContent(eventType, xpp, res))
2936        unknownContent(xpp);
2937      eventType = nextNoWhitespace(xpp);
2938    }
2939    next(xpp);
2940    parseElementClose(res);
2941    return res;
2942  }
2943
2944  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
2945      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2946        res.getIdentifier().add(parseIdentifier(xpp));
2947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2948        res.setCode(parseCodeableConcept(xpp));
2949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2950        res.setSubject(parseReference(xpp));
2951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2952        res.setCreatedElement(parseDate(xpp));
2953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2954        res.setAuthor(parseReference(xpp));
2955      } else if (!parseDomainResourceContent(eventType, xpp, res))
2956        return false;
2957    return true;
2958  }
2959
2960  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2961    Binary res = new Binary();
2962    parseResourceAttributes(xpp, res);
2963    next(xpp);
2964    int eventType = nextNoWhitespace(xpp);
2965    while (eventType != XmlPullParser.END_TAG) {
2966  if (!parseBinaryContent(eventType, xpp, res))
2967        unknownContent(xpp);
2968      eventType = nextNoWhitespace(xpp);
2969    }
2970    next(xpp);
2971    parseElementClose(res);
2972    return res;
2973  }
2974
2975  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
2976      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2977        res.setContentTypeElement(parseCode(xpp));
2978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
2979        res.setSecurityContext(parseReference(xpp));
2980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
2981        res.setDataElement(parseBase64Binary(xpp));
2982      } else if (!parseResourceContent(eventType, xpp, res))
2983        return false;
2984    return true;
2985  }
2986
2987  protected BiologicallyDerivedProduct parseBiologicallyDerivedProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2988    BiologicallyDerivedProduct res = new BiologicallyDerivedProduct();
2989    parseDomainResourceAttributes(xpp, res);
2990    next(xpp);
2991    int eventType = nextNoWhitespace(xpp);
2992    while (eventType != XmlPullParser.END_TAG) {
2993  if (!parseBiologicallyDerivedProductContent(eventType, xpp, res))
2994        unknownContent(xpp);
2995      eventType = nextNoWhitespace(xpp);
2996    }
2997    next(xpp);
2998    parseElementClose(res);
2999    return res;
3000  }
3001
3002  protected boolean parseBiologicallyDerivedProductContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
3003      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3004        res.getIdentifier().add(parseIdentifier(xpp));
3005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCategory")) {
3006        res.setProductCategoryElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductCategory.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory()));
3007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCode")) {
3008        res.setProductCode(parseCodeableConcept(xpp));
3009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3010        res.setStatusElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStatus.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory()));
3011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3012        res.getRequest().add(parseReference(xpp));
3013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3014        res.setQuantityElement(parseInteger(xpp));
3015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
3016        res.getParent().add(parseReference(xpp));
3017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
3018        res.setCollection(parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(xpp, res));
3019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
3020        res.getProcessing().add(parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(xpp, res));
3021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulation")) {
3022        res.setManipulation(parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(xpp, res));
3023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("storage")) {
3024        res.getStorage().add(parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(xpp, res));
3025      } else if (!parseDomainResourceContent(eventType, xpp, res))
3026        return false;
3027    return true;
3028  }
3029
3030  protected BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3031    BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent();
3032    parseBackboneAttributes(xpp, res);
3033    next(xpp);
3034    int eventType = nextNoWhitespace(xpp);
3035    while (eventType != XmlPullParser.END_TAG) {
3036  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(eventType, xpp, owner, res))
3037        unknownContent(xpp);
3038      eventType = nextNoWhitespace(xpp);
3039    }
3040    next(xpp);
3041    parseElementClose(res);
3042    return res;
3043  }
3044
3045  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3046      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
3047        res.setCollector(parseReference(xpp));
3048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
3049        res.setSource(parseReference(xpp));
3050      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
3051        res.setCollected(parseType("collected", xpp));
3052      } else if (!parseBackboneElementContent(eventType, xpp, res))
3053        return false;
3054    return true;
3055  }
3056
3057  protected BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3058    BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent();
3059    parseBackboneAttributes(xpp, res);
3060    next(xpp);
3061    int eventType = nextNoWhitespace(xpp);
3062    while (eventType != XmlPullParser.END_TAG) {
3063  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(eventType, xpp, owner, res))
3064        unknownContent(xpp);
3065      eventType = nextNoWhitespace(xpp);
3066    }
3067    next(xpp);
3068    parseElementClose(res);
3069    return res;
3070  }
3071
3072  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3074        res.setDescriptionElement(parseString(xpp));
3075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3076        res.setProcedure(parseCodeableConcept(xpp));
3077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
3078        res.setAdditive(parseReference(xpp));
3079      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3080        res.setTime(parseType("time", xpp));
3081      } else if (!parseBackboneElementContent(eventType, xpp, res))
3082        return false;
3083    return true;
3084  }
3085
3086  protected BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3087    BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent();
3088    parseBackboneAttributes(xpp, res);
3089    next(xpp);
3090    int eventType = nextNoWhitespace(xpp);
3091    while (eventType != XmlPullParser.END_TAG) {
3092  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(eventType, xpp, owner, res))
3093        unknownContent(xpp);
3094      eventType = nextNoWhitespace(xpp);
3095    }
3096    next(xpp);
3097    parseElementClose(res);
3098    return res;
3099  }
3100
3101  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3102      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3103        res.setDescriptionElement(parseString(xpp));
3104      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3105        res.setTime(parseType("time", xpp));
3106      } else if (!parseBackboneElementContent(eventType, xpp, res))
3107        return false;
3108    return true;
3109  }
3110
3111  protected BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3112    BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent();
3113    parseBackboneAttributes(xpp, res);
3114    next(xpp);
3115    int eventType = nextNoWhitespace(xpp);
3116    while (eventType != XmlPullParser.END_TAG) {
3117  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(eventType, xpp, owner, res))
3118        unknownContent(xpp);
3119      eventType = nextNoWhitespace(xpp);
3120    }
3121    next(xpp);
3122    parseElementClose(res);
3123    return res;
3124  }
3125
3126  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3127      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3128        res.setDescriptionElement(parseString(xpp));
3129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperature")) {
3130        res.setTemperatureElement(parseDecimal(xpp));
3131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scale")) {
3132        res.setScaleElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScale.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory()));
3133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
3134        res.setDuration(parsePeriod(xpp));
3135      } else if (!parseBackboneElementContent(eventType, xpp, res))
3136        return false;
3137    return true;
3138  }
3139
3140  protected BodyStructure parseBodyStructure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3141    BodyStructure res = new BodyStructure();
3142    parseDomainResourceAttributes(xpp, res);
3143    next(xpp);
3144    int eventType = nextNoWhitespace(xpp);
3145    while (eventType != XmlPullParser.END_TAG) {
3146  if (!parseBodyStructureContent(eventType, xpp, res))
3147        unknownContent(xpp);
3148      eventType = nextNoWhitespace(xpp);
3149    }
3150    next(xpp);
3151    parseElementClose(res);
3152    return res;
3153  }
3154
3155  protected boolean parseBodyStructureContent(int eventType, XmlPullParser xpp, BodyStructure res) throws XmlPullParserException, IOException, FHIRFormatError {
3156      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3157        res.getIdentifier().add(parseIdentifier(xpp));
3158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
3159        res.setActiveElement(parseBoolean(xpp));
3160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("morphology")) {
3161        res.setMorphology(parseCodeableConcept(xpp));
3162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3163        res.setLocation(parseCodeableConcept(xpp));
3164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationQualifier")) {
3165        res.getLocationQualifier().add(parseCodeableConcept(xpp));
3166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3167        res.setDescriptionElement(parseString(xpp));
3168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
3169        res.getImage().add(parseAttachment(xpp));
3170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3171        res.setPatient(parseReference(xpp));
3172      } else if (!parseDomainResourceContent(eventType, xpp, res))
3173        return false;
3174    return true;
3175  }
3176
3177  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3178    Bundle res = new Bundle();
3179    parseResourceAttributes(xpp, res);
3180    next(xpp);
3181    int eventType = nextNoWhitespace(xpp);
3182    while (eventType != XmlPullParser.END_TAG) {
3183  if (!parseBundleContent(eventType, xpp, res))
3184        unknownContent(xpp);
3185      eventType = nextNoWhitespace(xpp);
3186    }
3187    next(xpp);
3188    parseElementClose(res);
3189    return res;
3190  }
3191
3192  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
3193      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3194        res.setIdentifier(parseIdentifier(xpp));
3195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3196        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
3197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
3198        res.setTimestampElement(parseInstant(xpp));
3199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3200        res.setTotalElement(parseUnsignedInt(xpp));
3201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3202        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
3203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3204        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
3205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
3206        res.setSignature(parseSignature(xpp));
3207      } else if (!parseResourceContent(eventType, xpp, res))
3208        return false;
3209    return true;
3210  }
3211
3212  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3213    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
3214    parseBackboneAttributes(xpp, res);
3215    next(xpp);
3216    int eventType = nextNoWhitespace(xpp);
3217    while (eventType != XmlPullParser.END_TAG) {
3218  if (!parseBundleBundleLinkComponentContent(eventType, xpp, owner, res))
3219        unknownContent(xpp);
3220      eventType = nextNoWhitespace(xpp);
3221    }
3222    next(xpp);
3223    parseElementClose(res);
3224    return res;
3225  }
3226
3227  protected boolean parseBundleBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3228      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
3229        res.setRelationElement(parseString(xpp));
3230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3231        res.setUrlElement(parseUri(xpp));
3232      } else if (!parseBackboneElementContent(eventType, xpp, res))
3233        return false;
3234    return true;
3235  }
3236
3237  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3238    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
3239    parseBackboneAttributes(xpp, res);
3240    next(xpp);
3241    int eventType = nextNoWhitespace(xpp);
3242    while (eventType != XmlPullParser.END_TAG) {
3243  if (!parseBundleBundleEntryComponentContent(eventType, xpp, owner, res))
3244        unknownContent(xpp);
3245      eventType = nextNoWhitespace(xpp);
3246    }
3247    next(xpp);
3248    parseElementClose(res);
3249    return res;
3250  }
3251
3252  protected boolean parseBundleBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3254        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
3255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
3256        res.setFullUrlElement(parseUri(xpp));
3257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3258        res.setResource(parseResourceContained(xpp));
3259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
3260        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
3261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3262        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
3263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3264        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
3265      } else if (!parseBackboneElementContent(eventType, xpp, res))
3266        return false;
3267    return true;
3268  }
3269
3270  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3271    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
3272    parseBackboneAttributes(xpp, res);
3273    next(xpp);
3274    int eventType = nextNoWhitespace(xpp);
3275    while (eventType != XmlPullParser.END_TAG) {
3276  if (!parseBundleBundleEntrySearchComponentContent(eventType, xpp, owner, res))
3277        unknownContent(xpp);
3278      eventType = nextNoWhitespace(xpp);
3279    }
3280    next(xpp);
3281    parseElementClose(res);
3282    return res;
3283  }
3284
3285  protected boolean parseBundleBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3286      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3287        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
3288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
3289        res.setScoreElement(parseDecimal(xpp));
3290      } else if (!parseBackboneElementContent(eventType, xpp, res))
3291        return false;
3292    return true;
3293  }
3294
3295  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3296    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
3297    parseBackboneAttributes(xpp, res);
3298    next(xpp);
3299    int eventType = nextNoWhitespace(xpp);
3300    while (eventType != XmlPullParser.END_TAG) {
3301  if (!parseBundleBundleEntryRequestComponentContent(eventType, xpp, owner, res))
3302        unknownContent(xpp);
3303      eventType = nextNoWhitespace(xpp);
3304    }
3305    next(xpp);
3306    parseElementClose(res);
3307    return res;
3308  }
3309
3310  protected boolean parseBundleBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3311      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
3312        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
3313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3314        res.setUrlElement(parseUri(xpp));
3315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
3316        res.setIfNoneMatchElement(parseString(xpp));
3317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
3318        res.setIfModifiedSinceElement(parseInstant(xpp));
3319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
3320        res.setIfMatchElement(parseString(xpp));
3321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
3322        res.setIfNoneExistElement(parseString(xpp));
3323      } else if (!parseBackboneElementContent(eventType, xpp, res))
3324        return false;
3325    return true;
3326  }
3327
3328  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3329    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
3330    parseBackboneAttributes(xpp, res);
3331    next(xpp);
3332    int eventType = nextNoWhitespace(xpp);
3333    while (eventType != XmlPullParser.END_TAG) {
3334  if (!parseBundleBundleEntryResponseComponentContent(eventType, xpp, owner, res))
3335        unknownContent(xpp);
3336      eventType = nextNoWhitespace(xpp);
3337    }
3338    next(xpp);
3339    parseElementClose(res);
3340    return res;
3341  }
3342
3343  protected boolean parseBundleBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3344      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3345        res.setStatusElement(parseString(xpp));
3346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3347        res.setLocationElement(parseUri(xpp));
3348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
3349        res.setEtagElement(parseString(xpp));
3350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
3351        res.setLastModifiedElement(parseInstant(xpp));
3352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
3353        res.setOutcome(parseResourceContained(xpp));
3354      } else if (!parseBackboneElementContent(eventType, xpp, res))
3355        return false;
3356    return true;
3357  }
3358
3359  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3360    CapabilityStatement res = new CapabilityStatement();
3361    parseDomainResourceAttributes(xpp, res);
3362    next(xpp);
3363    int eventType = nextNoWhitespace(xpp);
3364    while (eventType != XmlPullParser.END_TAG) {
3365  if (!parseCapabilityStatementContent(eventType, xpp, res))
3366        unknownContent(xpp);
3367      eventType = nextNoWhitespace(xpp);
3368    }
3369    next(xpp);
3370    parseElementClose(res);
3371    return res;
3372  }
3373
3374  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
3375      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3376        res.setUrlElement(parseUri(xpp));
3377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3378        res.setVersionElement(parseString(xpp));
3379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3380        res.setNameElement(parseString(xpp));
3381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3382        res.setTitleElement(parseString(xpp));
3383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3384        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
3385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3386        res.setExperimentalElement(parseBoolean(xpp));
3387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3388        res.setDateElement(parseDateTime(xpp));
3389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3390        res.setPublisherElement(parseString(xpp));
3391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3392        res.getContact().add(parseContactDetail(xpp));
3393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3394        res.setDescriptionElement(parseMarkdown(xpp));
3395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3396        res.getUseContext().add(parseUsageContext(xpp));
3397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
3398        res.getJurisdiction().add(parseCodeableConcept(xpp));
3399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
3400        res.setPurposeElement(parseMarkdown(xpp));
3401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3402        res.setCopyrightElement(parseMarkdown(xpp));
3403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3404        res.setKindElement(parseEnumeration(xpp, CapabilityStatement.CapabilityStatementKind.NULL, new CapabilityStatement.CapabilityStatementKindEnumFactory()));
3405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
3406        res.getInstantiates().add(parseCanonical(xpp));
3407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imports")) {
3408        res.getImports().add(parseCanonical(xpp));
3409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
3410        res.setSoftware(parseCapabilityStatementCapabilityStatementSoftwareComponent(xpp, res));
3411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
3412        res.setImplementation(parseCapabilityStatementCapabilityStatementImplementationComponent(xpp, res));
3413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
3414        res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
3415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
3416        res.getFormat().add(parseCode(xpp));
3417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
3418        res.getPatchFormat().add(parseCode(xpp));
3419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
3420        res.getImplementationGuide().add(parseCanonical(xpp));
3421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
3422        res.getRest().add(parseCapabilityStatementCapabilityStatementRestComponent(xpp, res));
3423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
3424        res.getMessaging().add(parseCapabilityStatementCapabilityStatementMessagingComponent(xpp, res));
3425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
3426        res.getDocument().add(parseCapabilityStatementCapabilityStatementDocumentComponent(xpp, res));
3427      } else if (!parseDomainResourceContent(eventType, xpp, res))
3428        return false;
3429    return true;
3430  }
3431
3432  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementCapabilityStatementSoftwareComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3433    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
3434    parseBackboneAttributes(xpp, res);
3435    next(xpp);
3436    int eventType = nextNoWhitespace(xpp);
3437    while (eventType != XmlPullParser.END_TAG) {
3438  if (!parseCapabilityStatementCapabilityStatementSoftwareComponentContent(eventType, xpp, owner, res))
3439        unknownContent(xpp);
3440      eventType = nextNoWhitespace(xpp);
3441    }
3442    next(xpp);
3443    parseElementClose(res);
3444    return res;
3445  }
3446
3447  protected boolean parseCapabilityStatementCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3448      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3449        res.setNameElement(parseString(xpp));
3450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3451        res.setVersionElement(parseString(xpp));
3452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
3453        res.setReleaseDateElement(parseDateTime(xpp));
3454      } else if (!parseBackboneElementContent(eventType, xpp, res))
3455        return false;
3456    return true;
3457  }
3458
3459  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementCapabilityStatementImplementationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3460    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
3461    parseBackboneAttributes(xpp, res);
3462    next(xpp);
3463    int eventType = nextNoWhitespace(xpp);
3464    while (eventType != XmlPullParser.END_TAG) {
3465  if (!parseCapabilityStatementCapabilityStatementImplementationComponentContent(eventType, xpp, owner, res))
3466        unknownContent(xpp);
3467      eventType = nextNoWhitespace(xpp);
3468    }
3469    next(xpp);
3470    parseElementClose(res);
3471    return res;
3472  }
3473
3474  protected boolean parseCapabilityStatementCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3475      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3476        res.setDescriptionElement(parseString(xpp));
3477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3478        res.setUrlElement(parseUrl(xpp));
3479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
3480        res.setCustodian(parseReference(xpp));
3481      } else if (!parseBackboneElementContent(eventType, xpp, res))
3482        return false;
3483    return true;
3484  }
3485
3486  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementCapabilityStatementRestComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3487    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
3488    parseBackboneAttributes(xpp, res);
3489    next(xpp);
3490    int eventType = nextNoWhitespace(xpp);
3491    while (eventType != XmlPullParser.END_TAG) {
3492  if (!parseCapabilityStatementCapabilityStatementRestComponentContent(eventType, xpp, owner, res))
3493        unknownContent(xpp);
3494      eventType = nextNoWhitespace(xpp);
3495    }
3496    next(xpp);
3497    parseElementClose(res);
3498    return res;
3499  }
3500
3501  protected boolean parseCapabilityStatementCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3502      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3503        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
3504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3505        res.setDocumentationElement(parseMarkdown(xpp));
3506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
3507        res.setSecurity(parseCapabilityStatementCapabilityStatementRestSecurityComponent(xpp, owner));
3508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3509        res.getResource().add(parseCapabilityStatementCapabilityStatementRestResourceComponent(xpp, owner));
3510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3511        res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp, owner));
3512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3513        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3515        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3517        res.getCompartment().add(parseCanonical(xpp));
3518      } else if (!parseBackboneElementContent(eventType, xpp, res))
3519        return false;
3520    return true;
3521  }
3522
3523  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementCapabilityStatementRestSecurityComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3524    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
3525    parseBackboneAttributes(xpp, res);
3526    next(xpp);
3527    int eventType = nextNoWhitespace(xpp);
3528    while (eventType != XmlPullParser.END_TAG) {
3529  if (!parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(eventType, xpp, owner, res))
3530        unknownContent(xpp);
3531      eventType = nextNoWhitespace(xpp);
3532    }
3533    next(xpp);
3534    parseElementClose(res);
3535    return res;
3536  }
3537
3538  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3540        res.setCorsElement(parseBoolean(xpp));
3541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3542        res.getService().add(parseCodeableConcept(xpp));
3543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3544        res.setDescriptionElement(parseMarkdown(xpp));
3545      } else if (!parseBackboneElementContent(eventType, xpp, res))
3546        return false;
3547    return true;
3548  }
3549
3550  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementCapabilityStatementRestResourceComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3551    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3552    parseBackboneAttributes(xpp, res);
3553    next(xpp);
3554    int eventType = nextNoWhitespace(xpp);
3555    while (eventType != XmlPullParser.END_TAG) {
3556  if (!parseCapabilityStatementCapabilityStatementRestResourceComponentContent(eventType, xpp, owner, res))
3557        unknownContent(xpp);
3558      eventType = nextNoWhitespace(xpp);
3559    }
3560    next(xpp);
3561    parseElementClose(res);
3562    return res;
3563  }
3564
3565  protected boolean parseCapabilityStatementCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3566      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3567        res.setTypeElement(parseCode(xpp));
3568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3569        res.setProfileElement(parseCanonical(xpp));
3570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedProfile")) {
3571        res.getSupportedProfile().add(parseCanonical(xpp));
3572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3573        res.setDocumentationElement(parseMarkdown(xpp));
3574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3575        res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp, owner));
3576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3577        res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3579        res.setReadHistoryElement(parseBoolean(xpp));
3580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3581        res.setUpdateCreateElement(parseBoolean(xpp));
3582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3583        res.setConditionalCreateElement(parseBoolean(xpp));
3584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3585        res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3587        res.setConditionalUpdateElement(parseBoolean(xpp));
3588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3589        res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3591        res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3593        res.getSearchInclude().add(parseString(xpp));
3594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3595        res.getSearchRevInclude().add(parseString(xpp));
3596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3597        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3599        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3600      } else if (!parseBackboneElementContent(eventType, xpp, res))
3601        return false;
3602    return true;
3603  }
3604
3605  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3606    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3607    parseBackboneAttributes(xpp, res);
3608    next(xpp);
3609    int eventType = nextNoWhitespace(xpp);
3610    while (eventType != XmlPullParser.END_TAG) {
3611  if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, owner, res))
3612        unknownContent(xpp);
3613      eventType = nextNoWhitespace(xpp);
3614    }
3615    next(xpp);
3616    parseElementClose(res);
3617    return res;
3618  }
3619
3620  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3621      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3622        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3624        res.setDocumentationElement(parseMarkdown(xpp));
3625      } else if (!parseBackboneElementContent(eventType, xpp, res))
3626        return false;
3627    return true;
3628  }
3629
3630  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3631    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3632    parseBackboneAttributes(xpp, res);
3633    next(xpp);
3634    int eventType = nextNoWhitespace(xpp);
3635    while (eventType != XmlPullParser.END_TAG) {
3636  if (!parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, owner, res))
3637        unknownContent(xpp);
3638      eventType = nextNoWhitespace(xpp);
3639    }
3640    next(xpp);
3641    parseElementClose(res);
3642    return res;
3643  }
3644
3645  protected boolean parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3646      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3647        res.setNameElement(parseString(xpp));
3648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3649        res.setDefinitionElement(parseCanonical(xpp));
3650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3651        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3653        res.setDocumentationElement(parseMarkdown(xpp));
3654      } else if (!parseBackboneElementContent(eventType, xpp, res))
3655        return false;
3656    return true;
3657  }
3658
3659  protected CapabilityStatement.CapabilityStatementRestResourceOperationComponent parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3660    CapabilityStatement.CapabilityStatementRestResourceOperationComponent res = new CapabilityStatement.CapabilityStatementRestResourceOperationComponent();
3661    parseBackboneAttributes(xpp, res);
3662    next(xpp);
3663    int eventType = nextNoWhitespace(xpp);
3664    while (eventType != XmlPullParser.END_TAG) {
3665  if (!parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(eventType, xpp, owner, res))
3666        unknownContent(xpp);
3667      eventType = nextNoWhitespace(xpp);
3668    }
3669    next(xpp);
3670    parseElementClose(res);
3671    return res;
3672  }
3673
3674  protected boolean parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3675      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3676        res.setNameElement(parseString(xpp));
3677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3678        res.setDefinitionElement(parseCanonical(xpp));
3679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3680        res.setDocumentationElement(parseMarkdown(xpp));
3681      } else if (!parseBackboneElementContent(eventType, xpp, res))
3682        return false;
3683    return true;
3684  }
3685
3686  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3687    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3688    parseBackboneAttributes(xpp, res);
3689    next(xpp);
3690    int eventType = nextNoWhitespace(xpp);
3691    while (eventType != XmlPullParser.END_TAG) {
3692  if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, owner, res))
3693        unknownContent(xpp);
3694      eventType = nextNoWhitespace(xpp);
3695    }
3696    next(xpp);
3697    parseElementClose(res);
3698    return res;
3699  }
3700
3701  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3702      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3703        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3705        res.setDocumentationElement(parseMarkdown(xpp));
3706      } else if (!parseBackboneElementContent(eventType, xpp, res))
3707        return false;
3708    return true;
3709  }
3710
3711  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementCapabilityStatementMessagingComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3712    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3713    parseBackboneAttributes(xpp, res);
3714    next(xpp);
3715    int eventType = nextNoWhitespace(xpp);
3716    while (eventType != XmlPullParser.END_TAG) {
3717  if (!parseCapabilityStatementCapabilityStatementMessagingComponentContent(eventType, xpp, owner, res))
3718        unknownContent(xpp);
3719      eventType = nextNoWhitespace(xpp);
3720    }
3721    next(xpp);
3722    parseElementClose(res);
3723    return res;
3724  }
3725
3726  protected boolean parseCapabilityStatementCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3727      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3728        res.getEndpoint().add(parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(xpp, owner));
3729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3730        res.setReliableCacheElement(parseUnsignedInt(xpp));
3731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3732        res.setDocumentationElement(parseMarkdown(xpp));
3733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3734        res.getSupportedMessage().add(parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(xpp, owner));
3735      } else if (!parseBackboneElementContent(eventType, xpp, res))
3736        return false;
3737    return true;
3738  }
3739
3740  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3741    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3742    parseBackboneAttributes(xpp, res);
3743    next(xpp);
3744    int eventType = nextNoWhitespace(xpp);
3745    while (eventType != XmlPullParser.END_TAG) {
3746  if (!parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, owner, res))
3747        unknownContent(xpp);
3748      eventType = nextNoWhitespace(xpp);
3749    }
3750    next(xpp);
3751    parseElementClose(res);
3752    return res;
3753  }
3754
3755  protected boolean parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3757        res.setProtocol(parseCoding(xpp));
3758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3759        res.setAddressElement(parseUrl(xpp));
3760      } else if (!parseBackboneElementContent(eventType, xpp, res))
3761        return false;
3762    return true;
3763  }
3764
3765  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3766    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3767    parseBackboneAttributes(xpp, res);
3768    next(xpp);
3769    int eventType = nextNoWhitespace(xpp);
3770    while (eventType != XmlPullParser.END_TAG) {
3771  if (!parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, owner, res))
3772        unknownContent(xpp);
3773      eventType = nextNoWhitespace(xpp);
3774    }
3775    next(xpp);
3776    parseElementClose(res);
3777    return res;
3778  }
3779
3780  protected boolean parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3781      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3782        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3784        res.setDefinitionElement(parseCanonical(xpp));
3785      } else if (!parseBackboneElementContent(eventType, xpp, res))
3786        return false;
3787    return true;
3788  }
3789
3790  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementCapabilityStatementDocumentComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3791    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3792    parseBackboneAttributes(xpp, res);
3793    next(xpp);
3794    int eventType = nextNoWhitespace(xpp);
3795    while (eventType != XmlPullParser.END_TAG) {
3796  if (!parseCapabilityStatementCapabilityStatementDocumentComponentContent(eventType, xpp, owner, res))
3797        unknownContent(xpp);
3798      eventType = nextNoWhitespace(xpp);
3799    }
3800    next(xpp);
3801    parseElementClose(res);
3802    return res;
3803  }
3804
3805  protected boolean parseCapabilityStatementCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3806      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3807        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
3808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3809        res.setDocumentationElement(parseMarkdown(xpp));
3810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3811        res.setProfileElement(parseCanonical(xpp));
3812      } else if (!parseBackboneElementContent(eventType, xpp, res))
3813        return false;
3814    return true;
3815  }
3816
3817  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3818    CarePlan res = new CarePlan();
3819    parseDomainResourceAttributes(xpp, res);
3820    next(xpp);
3821    int eventType = nextNoWhitespace(xpp);
3822    while (eventType != XmlPullParser.END_TAG) {
3823  if (!parseCarePlanContent(eventType, xpp, res))
3824        unknownContent(xpp);
3825      eventType = nextNoWhitespace(xpp);
3826    }
3827    next(xpp);
3828    parseElementClose(res);
3829    return res;
3830  }
3831
3832  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
3833      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3834        res.getIdentifier().add(parseIdentifier(xpp));
3835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
3836        res.getInstantiatesCanonical().add(parseCanonical(xpp));
3837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
3838        res.getInstantiatesUri().add(parseUri(xpp));
3839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3840        res.getBasedOn().add(parseReference(xpp));
3841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3842        res.getReplaces().add(parseReference(xpp));
3843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3844        res.getPartOf().add(parseReference(xpp));
3845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3846        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
3847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
3848        res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
3849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3850        res.getCategory().add(parseCodeableConcept(xpp));
3851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3852        res.setTitleElement(parseString(xpp));
3853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3854        res.setDescriptionElement(parseString(xpp));
3855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3856        res.setSubject(parseReference(xpp));
3857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3858        res.setEncounter(parseReference(xpp));
3859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3860        res.setPeriod(parsePeriod(xpp));
3861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3862        res.setCreatedElement(parseDateTime(xpp));
3863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3864        res.setAuthor(parseReference(xpp));
3865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
3866        res.getContributor().add(parseReference(xpp));
3867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3868        res.getCareTeam().add(parseReference(xpp));
3869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
3870        res.getAddresses().add(parseReference(xpp));
3871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3872        res.getSupportingInfo().add(parseReference(xpp));
3873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3874        res.getGoal().add(parseReference(xpp));
3875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
3876        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
3877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3878        res.getNote().add(parseAnnotation(xpp));
3879      } else if (!parseDomainResourceContent(eventType, xpp, res))
3880        return false;
3881    return true;
3882  }
3883
3884  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3885    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
3886    parseBackboneAttributes(xpp, res);
3887    next(xpp);
3888    int eventType = nextNoWhitespace(xpp);
3889    while (eventType != XmlPullParser.END_TAG) {
3890  if (!parseCarePlanCarePlanActivityComponentContent(eventType, xpp, owner, res))
3891        unknownContent(xpp);
3892      eventType = nextNoWhitespace(xpp);
3893    }
3894    next(xpp);
3895    parseElementClose(res);
3896    return res;
3897  }
3898
3899  protected boolean parseCarePlanCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3900      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
3901        res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
3902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
3903        res.getOutcomeReference().add(parseReference(xpp));
3904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
3905        res.getProgress().add(parseAnnotation(xpp));
3906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3907        res.setReference(parseReference(xpp));
3908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3909        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
3910      } else if (!parseBackboneElementContent(eventType, xpp, res))
3911        return false;
3912    return true;
3913  }
3914
3915  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3916    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
3917    parseBackboneAttributes(xpp, res);
3918    next(xpp);
3919    int eventType = nextNoWhitespace(xpp);
3920    while (eventType != XmlPullParser.END_TAG) {
3921  if (!parseCarePlanCarePlanActivityDetailComponentContent(eventType, xpp, owner, res))
3922        unknownContent(xpp);
3923      eventType = nextNoWhitespace(xpp);
3924    }
3925    next(xpp);
3926    parseElementClose(res);
3927    return res;
3928  }
3929
3930  protected boolean parseCarePlanCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3931      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3932        res.setKindElement(parseEnumeration(xpp, CarePlan.CarePlanActivityKind.NULL, new CarePlan.CarePlanActivityKindEnumFactory()));
3933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
3934        res.getInstantiatesCanonical().add(parseCanonical(xpp));
3935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
3936        res.getInstantiatesUri().add(parseUri(xpp));
3937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3938        res.setCode(parseCodeableConcept(xpp));
3939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3940        res.getReasonCode().add(parseCodeableConcept(xpp));
3941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3942        res.getReasonReference().add(parseReference(xpp));
3943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3944        res.getGoal().add(parseReference(xpp));
3945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3946        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
3947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
3948        res.setStatusReason(parseCodeableConcept(xpp));
3949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
3950        res.setDoNotPerformElement(parseBoolean(xpp));
3951      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3952        res.setScheduled(parseType("scheduled", xpp));
3953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3954        res.setLocation(parseReference(xpp));
3955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
3956        res.getPerformer().add(parseReference(xpp));
3957      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
3958        res.setProduct(parseType("product", xpp));
3959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
3960        res.setDailyAmount(parseQuantity(xpp));
3961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3962        res.setQuantity(parseQuantity(xpp));
3963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3964        res.setDescriptionElement(parseString(xpp));
3965      } else if (!parseBackboneElementContent(eventType, xpp, res))
3966        return false;
3967    return true;
3968  }
3969
3970  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3971    CareTeam res = new CareTeam();
3972    parseDomainResourceAttributes(xpp, res);
3973    next(xpp);
3974    int eventType = nextNoWhitespace(xpp);
3975    while (eventType != XmlPullParser.END_TAG) {
3976  if (!parseCareTeamContent(eventType, xpp, res))
3977        unknownContent(xpp);
3978      eventType = nextNoWhitespace(xpp);
3979    }
3980    next(xpp);
3981    parseElementClose(res);
3982    return res;
3983  }
3984
3985  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
3986      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3987        res.getIdentifier().add(parseIdentifier(xpp));
3988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3989        res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
3990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3991        res.getCategory().add(parseCodeableConcept(xpp));
3992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3993        res.setNameElement(parseString(xpp));
3994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3995        res.setSubject(parseReference(xpp));
3996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3997        res.setEncounter(parseReference(xpp));
3998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3999        res.setPeriod(parsePeriod(xpp));
4000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
4001        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
4002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4003        res.getReasonCode().add(parseCodeableConcept(xpp));
4004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4005        res.getReasonReference().add(parseReference(xpp));
4006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
4007        res.getManagingOrganization().add(parseReference(xpp));
4008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4009        res.getTelecom().add(parseContactPoint(xpp));
4010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4011        res.getNote().add(parseAnnotation(xpp));
4012      } else if (!parseDomainResourceContent(eventType, xpp, res))
4013        return false;
4014    return true;
4015  }
4016
4017  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
4018    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
4019    parseBackboneAttributes(xpp, res);
4020    next(xpp);
4021    int eventType = nextNoWhitespace(xpp);
4022    while (eventType != XmlPullParser.END_TAG) {
4023  if (!parseCareTeamCareTeamParticipantComponentContent(eventType, xpp, owner, res))
4024        unknownContent(xpp);
4025      eventType = nextNoWhitespace(xpp);
4026    }
4027    next(xpp);
4028    parseElementClose(res);
4029    return res;
4030  }
4031
4032  protected boolean parseCareTeamCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam owner, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4033      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4034        res.getRole().add(parseCodeableConcept(xpp));
4035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
4036        res.setMember(parseReference(xpp));
4037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
4038        res.setOnBehalfOf(parseReference(xpp));
4039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4040        res.setPeriod(parsePeriod(xpp));
4041      } else if (!parseBackboneElementContent(eventType, xpp, res))
4042        return false;
4043    return true;
4044  }
4045
4046  protected CatalogEntry parseCatalogEntry(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4047    CatalogEntry res = new CatalogEntry();
4048    parseDomainResourceAttributes(xpp, res);
4049    next(xpp);
4050    int eventType = nextNoWhitespace(xpp);
4051    while (eventType != XmlPullParser.END_TAG) {
4052  if (!parseCatalogEntryContent(eventType, xpp, res))
4053        unknownContent(xpp);
4054      eventType = nextNoWhitespace(xpp);
4055    }
4056    next(xpp);
4057    parseElementClose(res);
4058    return res;
4059  }
4060
4061  protected boolean parseCatalogEntryContent(int eventType, XmlPullParser xpp, CatalogEntry res) throws XmlPullParserException, IOException, FHIRFormatError {
4062      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4063        res.getIdentifier().add(parseIdentifier(xpp));
4064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4065        res.setType(parseCodeableConcept(xpp));
4066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderable")) {
4067        res.setOrderableElement(parseBoolean(xpp));
4068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedItem")) {
4069        res.setReferencedItem(parseReference(xpp));
4070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalIdentifier")) {
4071        res.getAdditionalIdentifier().add(parseIdentifier(xpp));
4072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
4073        res.getClassification().add(parseCodeableConcept(xpp));
4074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4075        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
4077        res.setValidityPeriod(parsePeriod(xpp));
4078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validTo")) {
4079        res.setValidToElement(parseDateTime(xpp));
4080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
4081        res.setLastUpdatedElement(parseDateTime(xpp));
4082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalCharacteristic")) {
4083        res.getAdditionalCharacteristic().add(parseCodeableConcept(xpp));
4084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalClassification")) {
4085        res.getAdditionalClassification().add(parseCodeableConcept(xpp));
4086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedEntry")) {
4087        res.getRelatedEntry().add(parseCatalogEntryCatalogEntryRelatedEntryComponent(xpp, res));
4088      } else if (!parseDomainResourceContent(eventType, xpp, res))
4089        return false;
4090    return true;
4091  }
4092
4093  protected CatalogEntry.CatalogEntryRelatedEntryComponent parseCatalogEntryCatalogEntryRelatedEntryComponent(XmlPullParser xpp, CatalogEntry owner) throws XmlPullParserException, IOException, FHIRFormatError {
4094    CatalogEntry.CatalogEntryRelatedEntryComponent res = new CatalogEntry.CatalogEntryRelatedEntryComponent();
4095    parseBackboneAttributes(xpp, res);
4096    next(xpp);
4097    int eventType = nextNoWhitespace(xpp);
4098    while (eventType != XmlPullParser.END_TAG) {
4099  if (!parseCatalogEntryCatalogEntryRelatedEntryComponentContent(eventType, xpp, owner, res))
4100        unknownContent(xpp);
4101      eventType = nextNoWhitespace(xpp);
4102    }
4103    next(xpp);
4104    parseElementClose(res);
4105    return res;
4106  }
4107
4108  protected boolean parseCatalogEntryCatalogEntryRelatedEntryComponentContent(int eventType, XmlPullParser xpp, CatalogEntry owner, CatalogEntry.CatalogEntryRelatedEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationtype")) {
4110        res.setRelationtypeElement(parseEnumeration(xpp, CatalogEntry.CatalogEntryRelationType.NULL, new CatalogEntry.CatalogEntryRelationTypeEnumFactory()));
4111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4112        res.setItem(parseReference(xpp));
4113      } else if (!parseBackboneElementContent(eventType, xpp, res))
4114        return false;
4115    return true;
4116  }
4117
4118  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4119    ChargeItem res = new ChargeItem();
4120    parseDomainResourceAttributes(xpp, res);
4121    next(xpp);
4122    int eventType = nextNoWhitespace(xpp);
4123    while (eventType != XmlPullParser.END_TAG) {
4124  if (!parseChargeItemContent(eventType, xpp, res))
4125        unknownContent(xpp);
4126      eventType = nextNoWhitespace(xpp);
4127    }
4128    next(xpp);
4129    parseElementClose(res);
4130    return res;
4131  }
4132
4133  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
4134      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4135        res.getIdentifier().add(parseIdentifier(xpp));
4136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionUri")) {
4137        res.getDefinitionUri().add(parseUri(xpp));
4138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionCanonical")) {
4139        res.getDefinitionCanonical().add(parseCanonical(xpp));
4140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4141        res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
4142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4143        res.getPartOf().add(parseReference(xpp));
4144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4145        res.setCode(parseCodeableConcept(xpp));
4146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4147        res.setSubject(parseReference(xpp));
4148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4149        res.setContext(parseReference(xpp));
4150      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4151        res.setOccurrence(parseType("occurrence", xpp));
4152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4153        res.getPerformer().add(parseChargeItemChargeItemPerformerComponent(xpp, res));
4154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
4155        res.setPerformingOrganization(parseReference(xpp));
4156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
4157        res.setRequestingOrganization(parseReference(xpp));
4158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costCenter")) {
4159        res.setCostCenter(parseReference(xpp));
4160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4161        res.setQuantity(parseQuantity(xpp));
4162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
4163        res.getBodysite().add(parseCodeableConcept(xpp));
4164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
4165        res.setFactorOverrideElement(parseDecimal(xpp));
4166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
4167        res.setPriceOverride(parseMoney(xpp));
4168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
4169        res.setOverrideReasonElement(parseString(xpp));
4170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4171        res.setEnterer(parseReference(xpp));
4172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
4173        res.setEnteredDateElement(parseDateTime(xpp));
4174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4175        res.getReason().add(parseCodeableConcept(xpp));
4176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4177        res.getService().add(parseReference(xpp));
4178      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
4179        res.setProduct(parseType("product", xpp));
4180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
4181        res.getAccount().add(parseReference(xpp));
4182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4183        res.getNote().add(parseAnnotation(xpp));
4184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
4185        res.getSupportingInformation().add(parseReference(xpp));
4186      } else if (!parseDomainResourceContent(eventType, xpp, res))
4187        return false;
4188    return true;
4189  }
4190
4191  protected ChargeItem.ChargeItemPerformerComponent parseChargeItemChargeItemPerformerComponent(XmlPullParser xpp, ChargeItem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4192    ChargeItem.ChargeItemPerformerComponent res = new ChargeItem.ChargeItemPerformerComponent();
4193    parseBackboneAttributes(xpp, res);
4194    next(xpp);
4195    int eventType = nextNoWhitespace(xpp);
4196    while (eventType != XmlPullParser.END_TAG) {
4197  if (!parseChargeItemChargeItemPerformerComponentContent(eventType, xpp, owner, res))
4198        unknownContent(xpp);
4199      eventType = nextNoWhitespace(xpp);
4200    }
4201    next(xpp);
4202    parseElementClose(res);
4203    return res;
4204  }
4205
4206  protected boolean parseChargeItemChargeItemPerformerComponentContent(int eventType, XmlPullParser xpp, ChargeItem owner, ChargeItem.ChargeItemPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
4208        res.setFunction(parseCodeableConcept(xpp));
4209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4210        res.setActor(parseReference(xpp));
4211      } else if (!parseBackboneElementContent(eventType, xpp, res))
4212        return false;
4213    return true;
4214  }
4215
4216  protected ChargeItemDefinition parseChargeItemDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4217    ChargeItemDefinition res = new ChargeItemDefinition();
4218    parseDomainResourceAttributes(xpp, res);
4219    next(xpp);
4220    int eventType = nextNoWhitespace(xpp);
4221    while (eventType != XmlPullParser.END_TAG) {
4222  if (!parseChargeItemDefinitionContent(eventType, xpp, res))
4223        unknownContent(xpp);
4224      eventType = nextNoWhitespace(xpp);
4225    }
4226    next(xpp);
4227    parseElementClose(res);
4228    return res;
4229  }
4230
4231  protected boolean parseChargeItemDefinitionContent(int eventType, XmlPullParser xpp, ChargeItemDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
4232      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4233        res.setUrlElement(parseUri(xpp));
4234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4235        res.getIdentifier().add(parseIdentifier(xpp));
4236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4237        res.setVersionElement(parseString(xpp));
4238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4239        res.setTitleElement(parseString(xpp));
4240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromUri")) {
4241        res.getDerivedFromUri().add(parseUri(xpp));
4242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4243        res.getPartOf().add(parseCanonical(xpp));
4244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4245        res.getReplaces().add(parseCanonical(xpp));
4246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4247        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4249        res.setExperimentalElement(parseBoolean(xpp));
4250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4251        res.setDateElement(parseDateTime(xpp));
4252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4253        res.setPublisherElement(parseString(xpp));
4254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4255        res.getContact().add(parseContactDetail(xpp));
4256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4257        res.setDescriptionElement(parseMarkdown(xpp));
4258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4259        res.getUseContext().add(parseUsageContext(xpp));
4260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4261        res.getJurisdiction().add(parseCodeableConcept(xpp));
4262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4263        res.setCopyrightElement(parseMarkdown(xpp));
4264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
4265        res.setApprovalDateElement(parseDate(xpp));
4266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
4267        res.setLastReviewDateElement(parseDate(xpp));
4268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
4269        res.setEffectivePeriod(parsePeriod(xpp));
4270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4271        res.setCode(parseCodeableConcept(xpp));
4272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
4273        res.getInstance().add(parseReference(xpp));
4274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4275        res.getApplicability().add(parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(xpp, res));
4276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("propertyGroup")) {
4277        res.getPropertyGroup().add(parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(xpp, res));
4278      } else if (!parseDomainResourceContent(eventType, xpp, res))
4279        return false;
4280    return true;
4281  }
4282
4283  protected ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4284    ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res = new ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent();
4285    parseBackboneAttributes(xpp, res);
4286    next(xpp);
4287    int eventType = nextNoWhitespace(xpp);
4288    while (eventType != XmlPullParser.END_TAG) {
4289  if (!parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponentContent(eventType, xpp, owner, res))
4290        unknownContent(xpp);
4291      eventType = nextNoWhitespace(xpp);
4292    }
4293    next(xpp);
4294    parseElementClose(res);
4295    return res;
4296  }
4297
4298  protected boolean parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4299      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4300        res.setDescriptionElement(parseString(xpp));
4301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4302        res.setLanguageElement(parseString(xpp));
4303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
4304        res.setExpressionElement(parseString(xpp));
4305      } else if (!parseBackboneElementContent(eventType, xpp, res))
4306        return false;
4307    return true;
4308  }
4309
4310  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4311    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent();
4312    parseBackboneAttributes(xpp, res);
4313    next(xpp);
4314    int eventType = nextNoWhitespace(xpp);
4315    while (eventType != XmlPullParser.END_TAG) {
4316  if (!parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentContent(eventType, xpp, owner, res))
4317        unknownContent(xpp);
4318      eventType = nextNoWhitespace(xpp);
4319    }
4320    next(xpp);
4321    parseElementClose(res);
4322    return res;
4323  }
4324
4325  protected boolean parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4326      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4327        res.getApplicability().add(parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(xpp, owner));
4328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
4329        res.getPriceComponent().add(parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(xpp, owner));
4330      } else if (!parseBackboneElementContent(eventType, xpp, res))
4331        return false;
4332    return true;
4333  }
4334
4335  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4336    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent();
4337    parseBackboneAttributes(xpp, res);
4338    next(xpp);
4339    int eventType = nextNoWhitespace(xpp);
4340    while (eventType != XmlPullParser.END_TAG) {
4341  if (!parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentContent(eventType, xpp, owner, res))
4342        unknownContent(xpp);
4343      eventType = nextNoWhitespace(xpp);
4344    }
4345    next(xpp);
4346    parseElementClose(res);
4347    return res;
4348  }
4349
4350  protected boolean parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4352        res.setTypeElement(parseEnumeration(xpp, ChargeItemDefinition.ChargeItemDefinitionPriceComponentType.NULL, new ChargeItemDefinition.ChargeItemDefinitionPriceComponentTypeEnumFactory()));
4353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4354        res.setCode(parseCodeableConcept(xpp));
4355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4356        res.setFactorElement(parseDecimal(xpp));
4357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4358        res.setAmount(parseMoney(xpp));
4359      } else if (!parseBackboneElementContent(eventType, xpp, res))
4360        return false;
4361    return true;
4362  }
4363
4364  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4365    Claim res = new Claim();
4366    parseDomainResourceAttributes(xpp, res);
4367    next(xpp);
4368    int eventType = nextNoWhitespace(xpp);
4369    while (eventType != XmlPullParser.END_TAG) {
4370  if (!parseClaimContent(eventType, xpp, res))
4371        unknownContent(xpp);
4372      eventType = nextNoWhitespace(xpp);
4373    }
4374    next(xpp);
4375    parseElementClose(res);
4376    return res;
4377  }
4378
4379  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
4380      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4381        res.getIdentifier().add(parseIdentifier(xpp));
4382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4383        res.setStatusElement(parseEnumeration(xpp, Claim.ClaimStatus.NULL, new Claim.ClaimStatusEnumFactory()));
4384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4385        res.setType(parseCodeableConcept(xpp));
4386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4387        res.setSubType(parseCodeableConcept(xpp));
4388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4389        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
4390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4391        res.setPatient(parseReference(xpp));
4392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
4393        res.setBillablePeriod(parsePeriod(xpp));
4394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4395        res.setCreatedElement(parseDateTime(xpp));
4396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4397        res.setEnterer(parseReference(xpp));
4398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4399        res.setInsurer(parseReference(xpp));
4400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4401        res.setProvider(parseReference(xpp));
4402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4403        res.setPriority(parseCodeableConcept(xpp));
4404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
4405        res.setFundsReserve(parseCodeableConcept(xpp));
4406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4407        res.getRelated().add(parseClaimRelatedClaimComponent(xpp, res));
4408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
4409        res.setPrescription(parseReference(xpp));
4410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
4411        res.setOriginalPrescription(parseReference(xpp));
4412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
4413        res.setPayee(parseClaimPayeeComponent(xpp, res));
4414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
4415        res.setReferral(parseReference(xpp));
4416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
4417        res.setFacility(parseReference(xpp));
4418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
4419        res.getCareTeam().add(parseClaimCareTeamComponent(xpp, res));
4420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
4421        res.getSupportingInfo().add(parseClaimSupportingInformationComponent(xpp, res));
4422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
4423        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
4424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
4425        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
4426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4427        res.getInsurance().add(parseClaimInsuranceComponent(xpp, res));
4428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
4429        res.setAccident(parseClaimAccidentComponent(xpp, res));
4430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4431        res.getItem().add(parseClaimItemComponent(xpp, res));
4432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4433        res.setTotal(parseMoney(xpp));
4434      } else if (!parseDomainResourceContent(eventType, xpp, res))
4435        return false;
4436    return true;
4437  }
4438
4439  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4440    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
4441    parseBackboneAttributes(xpp, res);
4442    next(xpp);
4443    int eventType = nextNoWhitespace(xpp);
4444    while (eventType != XmlPullParser.END_TAG) {
4445  if (!parseClaimRelatedClaimComponentContent(eventType, xpp, owner, res))
4446        unknownContent(xpp);
4447      eventType = nextNoWhitespace(xpp);
4448    }
4449    next(xpp);
4450    parseElementClose(res);
4451    return res;
4452  }
4453
4454  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
4456        res.setClaim(parseReference(xpp));
4457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
4458        res.setRelationship(parseCodeableConcept(xpp));
4459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4460        res.setReference(parseIdentifier(xpp));
4461      } else if (!parseBackboneElementContent(eventType, xpp, res))
4462        return false;
4463    return true;
4464  }
4465
4466  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4467    Claim.PayeeComponent res = new Claim.PayeeComponent();
4468    parseBackboneAttributes(xpp, res);
4469    next(xpp);
4470    int eventType = nextNoWhitespace(xpp);
4471    while (eventType != XmlPullParser.END_TAG) {
4472  if (!parseClaimPayeeComponentContent(eventType, xpp, owner, res))
4473        unknownContent(xpp);
4474      eventType = nextNoWhitespace(xpp);
4475    }
4476    next(xpp);
4477    parseElementClose(res);
4478    return res;
4479  }
4480
4481  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4482      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4483        res.setType(parseCodeableConcept(xpp));
4484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
4485        res.setParty(parseReference(xpp));
4486      } else if (!parseBackboneElementContent(eventType, xpp, res))
4487        return false;
4488    return true;
4489  }
4490
4491  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4492    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
4493    parseBackboneAttributes(xpp, res);
4494    next(xpp);
4495    int eventType = nextNoWhitespace(xpp);
4496    while (eventType != XmlPullParser.END_TAG) {
4497  if (!parseClaimCareTeamComponentContent(eventType, xpp, owner, res))
4498        unknownContent(xpp);
4499      eventType = nextNoWhitespace(xpp);
4500    }
4501    next(xpp);
4502    parseElementClose(res);
4503    return res;
4504  }
4505
4506  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4507      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4508        res.setSequenceElement(parsePositiveInt(xpp));
4509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4510        res.setProvider(parseReference(xpp));
4511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
4512        res.setResponsibleElement(parseBoolean(xpp));
4513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4514        res.setRole(parseCodeableConcept(xpp));
4515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
4516        res.setQualification(parseCodeableConcept(xpp));
4517      } else if (!parseBackboneElementContent(eventType, xpp, res))
4518        return false;
4519    return true;
4520  }
4521
4522  protected Claim.SupportingInformationComponent parseClaimSupportingInformationComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4523    Claim.SupportingInformationComponent res = new Claim.SupportingInformationComponent();
4524    parseBackboneAttributes(xpp, res);
4525    next(xpp);
4526    int eventType = nextNoWhitespace(xpp);
4527    while (eventType != XmlPullParser.END_TAG) {
4528  if (!parseClaimSupportingInformationComponentContent(eventType, xpp, owner, res))
4529        unknownContent(xpp);
4530      eventType = nextNoWhitespace(xpp);
4531    }
4532    next(xpp);
4533    parseElementClose(res);
4534    return res;
4535  }
4536
4537  protected boolean parseClaimSupportingInformationComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4538      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4539        res.setSequenceElement(parsePositiveInt(xpp));
4540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4541        res.setCategory(parseCodeableConcept(xpp));
4542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4543        res.setCode(parseCodeableConcept(xpp));
4544      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4545        res.setTiming(parseType("timing", xpp));
4546      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4547        res.setValue(parseType("value", xpp));
4548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4549        res.setReason(parseCodeableConcept(xpp));
4550      } else if (!parseBackboneElementContent(eventType, xpp, res))
4551        return false;
4552    return true;
4553  }
4554
4555  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4556    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
4557    parseBackboneAttributes(xpp, res);
4558    next(xpp);
4559    int eventType = nextNoWhitespace(xpp);
4560    while (eventType != XmlPullParser.END_TAG) {
4561  if (!parseClaimDiagnosisComponentContent(eventType, xpp, owner, res))
4562        unknownContent(xpp);
4563      eventType = nextNoWhitespace(xpp);
4564    }
4565    next(xpp);
4566    parseElementClose(res);
4567    return res;
4568  }
4569
4570  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4572        res.setSequenceElement(parsePositiveInt(xpp));
4573      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
4574        res.setDiagnosis(parseType("diagnosis", xpp));
4575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4576        res.getType().add(parseCodeableConcept(xpp));
4577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
4578        res.setOnAdmission(parseCodeableConcept(xpp));
4579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
4580        res.setPackageCode(parseCodeableConcept(xpp));
4581      } else if (!parseBackboneElementContent(eventType, xpp, res))
4582        return false;
4583    return true;
4584  }
4585
4586  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4587    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
4588    parseBackboneAttributes(xpp, res);
4589    next(xpp);
4590    int eventType = nextNoWhitespace(xpp);
4591    while (eventType != XmlPullParser.END_TAG) {
4592  if (!parseClaimProcedureComponentContent(eventType, xpp, owner, res))
4593        unknownContent(xpp);
4594      eventType = nextNoWhitespace(xpp);
4595    }
4596    next(xpp);
4597    parseElementClose(res);
4598    return res;
4599  }
4600
4601  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4602      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4603        res.setSequenceElement(parsePositiveInt(xpp));
4604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4605        res.getType().add(parseCodeableConcept(xpp));
4606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4607        res.setDateElement(parseDateTime(xpp));
4608      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
4609        res.setProcedure(parseType("procedure", xpp));
4610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4611        res.getUdi().add(parseReference(xpp));
4612      } else if (!parseBackboneElementContent(eventType, xpp, res))
4613        return false;
4614    return true;
4615  }
4616
4617  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4618    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
4619    parseBackboneAttributes(xpp, res);
4620    next(xpp);
4621    int eventType = nextNoWhitespace(xpp);
4622    while (eventType != XmlPullParser.END_TAG) {
4623  if (!parseClaimInsuranceComponentContent(eventType, xpp, owner, res))
4624        unknownContent(xpp);
4625      eventType = nextNoWhitespace(xpp);
4626    }
4627    next(xpp);
4628    parseElementClose(res);
4629    return res;
4630  }
4631
4632  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4634        res.setSequenceElement(parsePositiveInt(xpp));
4635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4636        res.setFocalElement(parseBoolean(xpp));
4637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4638        res.setIdentifier(parseIdentifier(xpp));
4639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4640        res.setCoverage(parseReference(xpp));
4641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4642        res.setBusinessArrangementElement(parseString(xpp));
4643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4644        res.getPreAuthRef().add(parseString(xpp));
4645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4646        res.setClaimResponse(parseReference(xpp));
4647      } else if (!parseBackboneElementContent(eventType, xpp, res))
4648        return false;
4649    return true;
4650  }
4651
4652  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4653    Claim.AccidentComponent res = new Claim.AccidentComponent();
4654    parseBackboneAttributes(xpp, res);
4655    next(xpp);
4656    int eventType = nextNoWhitespace(xpp);
4657    while (eventType != XmlPullParser.END_TAG) {
4658  if (!parseClaimAccidentComponentContent(eventType, xpp, owner, res))
4659        unknownContent(xpp);
4660      eventType = nextNoWhitespace(xpp);
4661    }
4662    next(xpp);
4663    parseElementClose(res);
4664    return res;
4665  }
4666
4667  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4668      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4669        res.setDateElement(parseDate(xpp));
4670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4671        res.setType(parseCodeableConcept(xpp));
4672      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4673        res.setLocation(parseType("location", xpp));
4674      } else if (!parseBackboneElementContent(eventType, xpp, res))
4675        return false;
4676    return true;
4677  }
4678
4679  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4680    Claim.ItemComponent res = new Claim.ItemComponent();
4681    parseBackboneAttributes(xpp, res);
4682    next(xpp);
4683    int eventType = nextNoWhitespace(xpp);
4684    while (eventType != XmlPullParser.END_TAG) {
4685  if (!parseClaimItemComponentContent(eventType, xpp, owner, res))
4686        unknownContent(xpp);
4687      eventType = nextNoWhitespace(xpp);
4688    }
4689    next(xpp);
4690    parseElementClose(res);
4691    return res;
4692  }
4693
4694  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4695      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4696        res.setSequenceElement(parsePositiveInt(xpp));
4697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
4698        res.getCareTeamSequence().add(parsePositiveInt(xpp));
4699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
4700        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
4701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
4702        res.getProcedureSequence().add(parsePositiveInt(xpp));
4703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
4704        res.getInformationSequence().add(parsePositiveInt(xpp));
4705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4706        res.setRevenue(parseCodeableConcept(xpp));
4707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4708        res.setCategory(parseCodeableConcept(xpp));
4709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4710        res.setProductOrService(parseCodeableConcept(xpp));
4711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4712        res.getModifier().add(parseCodeableConcept(xpp));
4713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4714        res.getProgramCode().add(parseCodeableConcept(xpp));
4715      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
4716        res.setServiced(parseType("serviced", xpp));
4717      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4718        res.setLocation(parseType("location", xpp));
4719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4720        res.setQuantity(parseQuantity(xpp));
4721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4722        res.setUnitPrice(parseMoney(xpp));
4723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4724        res.setFactorElement(parseDecimal(xpp));
4725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4726        res.setNet(parseMoney(xpp));
4727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4728        res.getUdi().add(parseReference(xpp));
4729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4730        res.setBodySite(parseCodeableConcept(xpp));
4731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
4732        res.getSubSite().add(parseCodeableConcept(xpp));
4733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4734        res.getEncounter().add(parseReference(xpp));
4735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4736        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
4737      } else if (!parseBackboneElementContent(eventType, xpp, res))
4738        return false;
4739    return true;
4740  }
4741
4742  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4743    Claim.DetailComponent res = new Claim.DetailComponent();
4744    parseBackboneAttributes(xpp, res);
4745    next(xpp);
4746    int eventType = nextNoWhitespace(xpp);
4747    while (eventType != XmlPullParser.END_TAG) {
4748  if (!parseClaimDetailComponentContent(eventType, xpp, owner, res))
4749        unknownContent(xpp);
4750      eventType = nextNoWhitespace(xpp);
4751    }
4752    next(xpp);
4753    parseElementClose(res);
4754    return res;
4755  }
4756
4757  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4758      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4759        res.setSequenceElement(parsePositiveInt(xpp));
4760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4761        res.setRevenue(parseCodeableConcept(xpp));
4762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4763        res.setCategory(parseCodeableConcept(xpp));
4764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4765        res.setProductOrService(parseCodeableConcept(xpp));
4766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4767        res.getModifier().add(parseCodeableConcept(xpp));
4768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4769        res.getProgramCode().add(parseCodeableConcept(xpp));
4770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4771        res.setQuantity(parseQuantity(xpp));
4772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4773        res.setUnitPrice(parseMoney(xpp));
4774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4775        res.setFactorElement(parseDecimal(xpp));
4776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4777        res.setNet(parseMoney(xpp));
4778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4779        res.getUdi().add(parseReference(xpp));
4780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4781        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
4782      } else if (!parseBackboneElementContent(eventType, xpp, res))
4783        return false;
4784    return true;
4785  }
4786
4787  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4788    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
4789    parseBackboneAttributes(xpp, res);
4790    next(xpp);
4791    int eventType = nextNoWhitespace(xpp);
4792    while (eventType != XmlPullParser.END_TAG) {
4793  if (!parseClaimSubDetailComponentContent(eventType, xpp, owner, res))
4794        unknownContent(xpp);
4795      eventType = nextNoWhitespace(xpp);
4796    }
4797    next(xpp);
4798    parseElementClose(res);
4799    return res;
4800  }
4801
4802  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4803      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4804        res.setSequenceElement(parsePositiveInt(xpp));
4805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4806        res.setRevenue(parseCodeableConcept(xpp));
4807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4808        res.setCategory(parseCodeableConcept(xpp));
4809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4810        res.setProductOrService(parseCodeableConcept(xpp));
4811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4812        res.getModifier().add(parseCodeableConcept(xpp));
4813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4814        res.getProgramCode().add(parseCodeableConcept(xpp));
4815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4816        res.setQuantity(parseQuantity(xpp));
4817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4818        res.setUnitPrice(parseMoney(xpp));
4819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4820        res.setFactorElement(parseDecimal(xpp));
4821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4822        res.setNet(parseMoney(xpp));
4823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4824        res.getUdi().add(parseReference(xpp));
4825      } else if (!parseBackboneElementContent(eventType, xpp, res))
4826        return false;
4827    return true;
4828  }
4829
4830  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4831    ClaimResponse res = new ClaimResponse();
4832    parseDomainResourceAttributes(xpp, res);
4833    next(xpp);
4834    int eventType = nextNoWhitespace(xpp);
4835    while (eventType != XmlPullParser.END_TAG) {
4836  if (!parseClaimResponseContent(eventType, xpp, res))
4837        unknownContent(xpp);
4838      eventType = nextNoWhitespace(xpp);
4839    }
4840    next(xpp);
4841    parseElementClose(res);
4842    return res;
4843  }
4844
4845  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
4846      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4847        res.getIdentifier().add(parseIdentifier(xpp));
4848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4849        res.setStatusElement(parseEnumeration(xpp, ClaimResponse.ClaimResponseStatus.NULL, new ClaimResponse.ClaimResponseStatusEnumFactory()));
4850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4851        res.setType(parseCodeableConcept(xpp));
4852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4853        res.setSubType(parseCodeableConcept(xpp));
4854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4855        res.setUseElement(parseEnumeration(xpp, ClaimResponse.Use.NULL, new ClaimResponse.UseEnumFactory()));
4856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4857        res.setPatient(parseReference(xpp));
4858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4859        res.setCreatedElement(parseDateTime(xpp));
4860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4861        res.setInsurer(parseReference(xpp));
4862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
4863        res.setRequestor(parseReference(xpp));
4864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4865        res.setRequest(parseReference(xpp));
4866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4867        res.setOutcomeElement(parseEnumeration(xpp, ClaimResponse.RemittanceOutcome.NULL, new ClaimResponse.RemittanceOutcomeEnumFactory()));
4868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4869        res.setDispositionElement(parseString(xpp));
4870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4871        res.setPreAuthRefElement(parseString(xpp));
4872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthPeriod")) {
4873        res.setPreAuthPeriod(parsePeriod(xpp));
4874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
4875        res.setPayeeType(parseCodeableConcept(xpp));
4876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4877        res.getItem().add(parseClaimResponseItemComponent(xpp, res));
4878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
4879        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
4880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4881        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, res));
4882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4883        res.getTotal().add(parseClaimResponseTotalComponent(xpp, res));
4884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
4885        res.setPayment(parseClaimResponsePaymentComponent(xpp, res));
4886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
4887        res.setFundsReserve(parseCodeableConcept(xpp));
4888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
4889        res.setFormCode(parseCodeableConcept(xpp));
4890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
4891        res.setForm(parseAttachment(xpp));
4892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
4893        res.getProcessNote().add(parseClaimResponseNoteComponent(xpp, res));
4894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
4895        res.getCommunicationRequest().add(parseReference(xpp));
4896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4897        res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp, res));
4898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
4899        res.getError().add(parseClaimResponseErrorComponent(xpp, res));
4900      } else if (!parseDomainResourceContent(eventType, xpp, res))
4901        return false;
4902    return true;
4903  }
4904
4905  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4906    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
4907    parseBackboneAttributes(xpp, res);
4908    next(xpp);
4909    int eventType = nextNoWhitespace(xpp);
4910    while (eventType != XmlPullParser.END_TAG) {
4911  if (!parseClaimResponseItemComponentContent(eventType, xpp, owner, res))
4912        unknownContent(xpp);
4913      eventType = nextNoWhitespace(xpp);
4914    }
4915    next(xpp);
4916    parseElementClose(res);
4917    return res;
4918  }
4919
4920  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4921      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
4922        res.setItemSequenceElement(parsePositiveInt(xpp));
4923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4924        res.getNoteNumber().add(parsePositiveInt(xpp));
4925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4926        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4928        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
4929      } else if (!parseBackboneElementContent(eventType, xpp, res))
4930        return false;
4931    return true;
4932  }
4933
4934  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4935    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
4936    parseBackboneAttributes(xpp, res);
4937    next(xpp);
4938    int eventType = nextNoWhitespace(xpp);
4939    while (eventType != XmlPullParser.END_TAG) {
4940  if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, owner, res))
4941        unknownContent(xpp);
4942      eventType = nextNoWhitespace(xpp);
4943    }
4944    next(xpp);
4945    parseElementClose(res);
4946    return res;
4947  }
4948
4949  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4950      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4951        res.setCategory(parseCodeableConcept(xpp));
4952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4953        res.setReason(parseCodeableConcept(xpp));
4954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4955        res.setAmount(parseMoney(xpp));
4956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4957        res.setValueElement(parseDecimal(xpp));
4958      } else if (!parseBackboneElementContent(eventType, xpp, res))
4959        return false;
4960    return true;
4961  }
4962
4963  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4964    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
4965    parseBackboneAttributes(xpp, res);
4966    next(xpp);
4967    int eventType = nextNoWhitespace(xpp);
4968    while (eventType != XmlPullParser.END_TAG) {
4969  if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, owner, res))
4970        unknownContent(xpp);
4971      eventType = nextNoWhitespace(xpp);
4972    }
4973    next(xpp);
4974    parseElementClose(res);
4975    return res;
4976  }
4977
4978  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4979      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
4980        res.setDetailSequenceElement(parsePositiveInt(xpp));
4981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4982        res.getNoteNumber().add(parsePositiveInt(xpp));
4983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4984        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4986        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
4987      } else if (!parseBackboneElementContent(eventType, xpp, res))
4988        return false;
4989    return true;
4990  }
4991
4992  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4993    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
4994    parseBackboneAttributes(xpp, res);
4995    next(xpp);
4996    int eventType = nextNoWhitespace(xpp);
4997    while (eventType != XmlPullParser.END_TAG) {
4998  if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, owner, res))
4999        unknownContent(xpp);
5000      eventType = nextNoWhitespace(xpp);
5001    }
5002    next(xpp);
5003    parseElementClose(res);
5004    return res;
5005  }
5006
5007  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5008      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
5009        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
5010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5011        res.getNoteNumber().add(parsePositiveInt(xpp));
5012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5013        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5014      } else if (!parseBackboneElementContent(eventType, xpp, res))
5015        return false;
5016    return true;
5017  }
5018
5019  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5020    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
5021    parseBackboneAttributes(xpp, res);
5022    next(xpp);
5023    int eventType = nextNoWhitespace(xpp);
5024    while (eventType != XmlPullParser.END_TAG) {
5025  if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, owner, res))
5026        unknownContent(xpp);
5027      eventType = nextNoWhitespace(xpp);
5028    }
5029    next(xpp);
5030    parseElementClose(res);
5031    return res;
5032  }
5033
5034  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5035      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5036        res.getItemSequence().add(parsePositiveInt(xpp));
5037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5038        res.getDetailSequence().add(parsePositiveInt(xpp));
5039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequence")) {
5040        res.getSubdetailSequence().add(parsePositiveInt(xpp));
5041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
5042        res.getProvider().add(parseReference(xpp));
5043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5044        res.setProductOrService(parseCodeableConcept(xpp));
5045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5046        res.getModifier().add(parseCodeableConcept(xpp));
5047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
5048        res.getProgramCode().add(parseCodeableConcept(xpp));
5049      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
5050        res.setServiced(parseType("serviced", xpp));
5051      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
5052        res.setLocation(parseType("location", xpp));
5053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5054        res.setQuantity(parseQuantity(xpp));
5055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5056        res.setUnitPrice(parseMoney(xpp));
5057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5058        res.setFactorElement(parseDecimal(xpp));
5059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5060        res.setNet(parseMoney(xpp));
5061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5062        res.setBodySite(parseCodeableConcept(xpp));
5063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
5064        res.getSubSite().add(parseCodeableConcept(xpp));
5065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5066        res.getNoteNumber().add(parsePositiveInt(xpp));
5067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5068        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5070        res.getDetail().add(parseClaimResponseAddedItemDetailComponent(xpp, owner));
5071      } else if (!parseBackboneElementContent(eventType, xpp, res))
5072        return false;
5073    return true;
5074  }
5075
5076  protected ClaimResponse.AddedItemDetailComponent parseClaimResponseAddedItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5077    ClaimResponse.AddedItemDetailComponent res = new ClaimResponse.AddedItemDetailComponent();
5078    parseBackboneAttributes(xpp, res);
5079    next(xpp);
5080    int eventType = nextNoWhitespace(xpp);
5081    while (eventType != XmlPullParser.END_TAG) {
5082  if (!parseClaimResponseAddedItemDetailComponentContent(eventType, xpp, owner, res))
5083        unknownContent(xpp);
5084      eventType = nextNoWhitespace(xpp);
5085    }
5086    next(xpp);
5087    parseElementClose(res);
5088    return res;
5089  }
5090
5091  protected boolean parseClaimResponseAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5092      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5093        res.setProductOrService(parseCodeableConcept(xpp));
5094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5095        res.getModifier().add(parseCodeableConcept(xpp));
5096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5097        res.setQuantity(parseQuantity(xpp));
5098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5099        res.setUnitPrice(parseMoney(xpp));
5100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5101        res.setFactorElement(parseDecimal(xpp));
5102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5103        res.setNet(parseMoney(xpp));
5104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5105        res.getNoteNumber().add(parsePositiveInt(xpp));
5106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5107        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
5109        res.getSubDetail().add(parseClaimResponseAddedItemSubDetailComponent(xpp, owner));
5110      } else if (!parseBackboneElementContent(eventType, xpp, res))
5111        return false;
5112    return true;
5113  }
5114
5115  protected ClaimResponse.AddedItemSubDetailComponent parseClaimResponseAddedItemSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5116    ClaimResponse.AddedItemSubDetailComponent res = new ClaimResponse.AddedItemSubDetailComponent();
5117    parseBackboneAttributes(xpp, res);
5118    next(xpp);
5119    int eventType = nextNoWhitespace(xpp);
5120    while (eventType != XmlPullParser.END_TAG) {
5121  if (!parseClaimResponseAddedItemSubDetailComponentContent(eventType, xpp, owner, res))
5122        unknownContent(xpp);
5123      eventType = nextNoWhitespace(xpp);
5124    }
5125    next(xpp);
5126    parseElementClose(res);
5127    return res;
5128  }
5129
5130  protected boolean parseClaimResponseAddedItemSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5131      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5132        res.setProductOrService(parseCodeableConcept(xpp));
5133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5134        res.getModifier().add(parseCodeableConcept(xpp));
5135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5136        res.setQuantity(parseQuantity(xpp));
5137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5138        res.setUnitPrice(parseMoney(xpp));
5139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5140        res.setFactorElement(parseDecimal(xpp));
5141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5142        res.setNet(parseMoney(xpp));
5143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5144        res.getNoteNumber().add(parsePositiveInt(xpp));
5145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5146        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5147      } else if (!parseBackboneElementContent(eventType, xpp, res))
5148        return false;
5149    return true;
5150  }
5151
5152  protected ClaimResponse.TotalComponent parseClaimResponseTotalComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5153    ClaimResponse.TotalComponent res = new ClaimResponse.TotalComponent();
5154    parseBackboneAttributes(xpp, res);
5155    next(xpp);
5156    int eventType = nextNoWhitespace(xpp);
5157    while (eventType != XmlPullParser.END_TAG) {
5158  if (!parseClaimResponseTotalComponentContent(eventType, xpp, owner, res))
5159        unknownContent(xpp);
5160      eventType = nextNoWhitespace(xpp);
5161    }
5162    next(xpp);
5163    parseElementClose(res);
5164    return res;
5165  }
5166
5167  protected boolean parseClaimResponseTotalComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5168      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5169        res.setCategory(parseCodeableConcept(xpp));
5170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5171        res.setAmount(parseMoney(xpp));
5172      } else if (!parseBackboneElementContent(eventType, xpp, res))
5173        return false;
5174    return true;
5175  }
5176
5177  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5178    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
5179    parseBackboneAttributes(xpp, res);
5180    next(xpp);
5181    int eventType = nextNoWhitespace(xpp);
5182    while (eventType != XmlPullParser.END_TAG) {
5183  if (!parseClaimResponsePaymentComponentContent(eventType, xpp, owner, res))
5184        unknownContent(xpp);
5185      eventType = nextNoWhitespace(xpp);
5186    }
5187    next(xpp);
5188    parseElementClose(res);
5189    return res;
5190  }
5191
5192  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5193      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5194        res.setType(parseCodeableConcept(xpp));
5195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
5196        res.setAdjustment(parseMoney(xpp));
5197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
5198        res.setAdjustmentReason(parseCodeableConcept(xpp));
5199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5200        res.setDateElement(parseDate(xpp));
5201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5202        res.setAmount(parseMoney(xpp));
5203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5204        res.setIdentifier(parseIdentifier(xpp));
5205      } else if (!parseBackboneElementContent(eventType, xpp, res))
5206        return false;
5207    return true;
5208  }
5209
5210  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5211    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
5212    parseBackboneAttributes(xpp, res);
5213    next(xpp);
5214    int eventType = nextNoWhitespace(xpp);
5215    while (eventType != XmlPullParser.END_TAG) {
5216  if (!parseClaimResponseNoteComponentContent(eventType, xpp, owner, res))
5217        unknownContent(xpp);
5218      eventType = nextNoWhitespace(xpp);
5219    }
5220    next(xpp);
5221    parseElementClose(res);
5222    return res;
5223  }
5224
5225  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5226      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
5227        res.setNumberElement(parsePositiveInt(xpp));
5228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5229        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
5230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5231        res.setTextElement(parseString(xpp));
5232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5233        res.setLanguage(parseCodeableConcept(xpp));
5234      } else if (!parseBackboneElementContent(eventType, xpp, res))
5235        return false;
5236    return true;
5237  }
5238
5239  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5240    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
5241    parseBackboneAttributes(xpp, res);
5242    next(xpp);
5243    int eventType = nextNoWhitespace(xpp);
5244    while (eventType != XmlPullParser.END_TAG) {
5245  if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, owner, res))
5246        unknownContent(xpp);
5247      eventType = nextNoWhitespace(xpp);
5248    }
5249    next(xpp);
5250    parseElementClose(res);
5251    return res;
5252  }
5253
5254  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5255      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5256        res.setSequenceElement(parsePositiveInt(xpp));
5257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
5258        res.setFocalElement(parseBoolean(xpp));
5259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
5260        res.setCoverage(parseReference(xpp));
5261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
5262        res.setBusinessArrangementElement(parseString(xpp));
5263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
5264        res.setClaimResponse(parseReference(xpp));
5265      } else if (!parseBackboneElementContent(eventType, xpp, res))
5266        return false;
5267    return true;
5268  }
5269
5270  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5271    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
5272    parseBackboneAttributes(xpp, res);
5273    next(xpp);
5274    int eventType = nextNoWhitespace(xpp);
5275    while (eventType != XmlPullParser.END_TAG) {
5276  if (!parseClaimResponseErrorComponentContent(eventType, xpp, owner, res))
5277        unknownContent(xpp);
5278      eventType = nextNoWhitespace(xpp);
5279    }
5280    next(xpp);
5281    parseElementClose(res);
5282    return res;
5283  }
5284
5285  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5286      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5287        res.setItemSequenceElement(parsePositiveInt(xpp));
5288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5289        res.setDetailSequenceElement(parsePositiveInt(xpp));
5290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
5291        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
5292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5293        res.setCode(parseCodeableConcept(xpp));
5294      } else if (!parseBackboneElementContent(eventType, xpp, res))
5295        return false;
5296    return true;
5297  }
5298
5299  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5300    ClinicalImpression res = new ClinicalImpression();
5301    parseDomainResourceAttributes(xpp, res);
5302    next(xpp);
5303    int eventType = nextNoWhitespace(xpp);
5304    while (eventType != XmlPullParser.END_TAG) {
5305  if (!parseClinicalImpressionContent(eventType, xpp, res))
5306        unknownContent(xpp);
5307      eventType = nextNoWhitespace(xpp);
5308    }
5309    next(xpp);
5310    parseElementClose(res);
5311    return res;
5312  }
5313
5314  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
5315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5316        res.getIdentifier().add(parseIdentifier(xpp));
5317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5318        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
5319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5320        res.setStatusReason(parseCodeableConcept(xpp));
5321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5322        res.setCode(parseCodeableConcept(xpp));
5323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5324        res.setDescriptionElement(parseString(xpp));
5325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5326        res.setSubject(parseReference(xpp));
5327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5328        res.setEncounter(parseReference(xpp));
5329      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
5330        res.setEffective(parseType("effective", xpp));
5331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5332        res.setDateElement(parseDateTime(xpp));
5333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
5334        res.setAssessor(parseReference(xpp));
5335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
5336        res.setPrevious(parseReference(xpp));
5337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
5338        res.getProblem().add(parseReference(xpp));
5339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
5340        res.getInvestigation().add(parseClinicalImpressionClinicalImpressionInvestigationComponent(xpp, res));
5341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
5342        res.getProtocol().add(parseUri(xpp));
5343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5344        res.setSummaryElement(parseString(xpp));
5345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
5346        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
5347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
5348        res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
5349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
5350        res.getPrognosisReference().add(parseReference(xpp));
5351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
5352        res.getSupportingInfo().add(parseReference(xpp));
5353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5354        res.getNote().add(parseAnnotation(xpp));
5355      } else if (!parseDomainResourceContent(eventType, xpp, res))
5356        return false;
5357    return true;
5358  }
5359
5360  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionClinicalImpressionInvestigationComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5361    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
5362    parseBackboneAttributes(xpp, res);
5363    next(xpp);
5364    int eventType = nextNoWhitespace(xpp);
5365    while (eventType != XmlPullParser.END_TAG) {
5366  if (!parseClinicalImpressionClinicalImpressionInvestigationComponentContent(eventType, xpp, owner, res))
5367        unknownContent(xpp);
5368      eventType = nextNoWhitespace(xpp);
5369    }
5370    next(xpp);
5371    parseElementClose(res);
5372    return res;
5373  }
5374
5375  protected boolean parseClinicalImpressionClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5376      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5377        res.setCode(parseCodeableConcept(xpp));
5378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
5379        res.getItem().add(parseReference(xpp));
5380      } else if (!parseBackboneElementContent(eventType, xpp, res))
5381        return false;
5382    return true;
5383  }
5384
5385  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5386    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
5387    parseBackboneAttributes(xpp, res);
5388    next(xpp);
5389    int eventType = nextNoWhitespace(xpp);
5390    while (eventType != XmlPullParser.END_TAG) {
5391  if (!parseClinicalImpressionClinicalImpressionFindingComponentContent(eventType, xpp, owner, res))
5392        unknownContent(xpp);
5393      eventType = nextNoWhitespace(xpp);
5394    }
5395    next(xpp);
5396    parseElementClose(res);
5397    return res;
5398  }
5399
5400  protected boolean parseClinicalImpressionClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5401      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemCodeableConcept")) {
5402        res.setItemCodeableConcept(parseCodeableConcept(xpp));
5403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemReference")) {
5404        res.setItemReference(parseReference(xpp));
5405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
5406        res.setBasisElement(parseString(xpp));
5407      } else if (!parseBackboneElementContent(eventType, xpp, res))
5408        return false;
5409    return true;
5410  }
5411
5412  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5413    CodeSystem res = new CodeSystem();
5414    parseDomainResourceAttributes(xpp, res);
5415    next(xpp);
5416    int eventType = nextNoWhitespace(xpp);
5417    while (eventType != XmlPullParser.END_TAG) {
5418  if (!parseCodeSystemContent(eventType, xpp, res))
5419        unknownContent(xpp);
5420      eventType = nextNoWhitespace(xpp);
5421    }
5422    next(xpp);
5423    parseElementClose(res);
5424    return res;
5425  }
5426
5427  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
5428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5429        res.setUrlElement(parseUri(xpp));
5430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5431        res.getIdentifier().add(parseIdentifier(xpp));
5432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5433        res.setVersionElement(parseString(xpp));
5434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5435        res.setNameElement(parseString(xpp));
5436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5437        res.setTitleElement(parseString(xpp));
5438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5439        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5441        res.setExperimentalElement(parseBoolean(xpp));
5442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5443        res.setDateElement(parseDateTime(xpp));
5444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5445        res.setPublisherElement(parseString(xpp));
5446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5447        res.getContact().add(parseContactDetail(xpp));
5448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5449        res.setDescriptionElement(parseMarkdown(xpp));
5450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5451        res.getUseContext().add(parseUsageContext(xpp));
5452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5453        res.getJurisdiction().add(parseCodeableConcept(xpp));
5454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5455        res.setPurposeElement(parseMarkdown(xpp));
5456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5457        res.setCopyrightElement(parseMarkdown(xpp));
5458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
5459        res.setCaseSensitiveElement(parseBoolean(xpp));
5460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
5461        res.setValueSetElement(parseCanonical(xpp));
5462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
5463        res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
5464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
5465        res.setCompositionalElement(parseBoolean(xpp));
5466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
5467        res.setVersionNeededElement(parseBoolean(xpp));
5468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5469        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
5470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplements")) {
5471        res.setSupplementsElement(parseCanonical(xpp));
5472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
5473        res.setCountElement(parseUnsignedInt(xpp));
5474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
5475        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
5476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5477        res.getProperty().add(parseCodeSystemPropertyComponent(xpp, res));
5478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5479        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
5480      } else if (!parseDomainResourceContent(eventType, xpp, res))
5481        return false;
5482    return true;
5483  }
5484
5485  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5486    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
5487    parseBackboneAttributes(xpp, res);
5488    next(xpp);
5489    int eventType = nextNoWhitespace(xpp);
5490    while (eventType != XmlPullParser.END_TAG) {
5491  if (!parseCodeSystemCodeSystemFilterComponentContent(eventType, xpp, owner, res))
5492        unknownContent(xpp);
5493      eventType = nextNoWhitespace(xpp);
5494    }
5495    next(xpp);
5496    parseElementClose(res);
5497    return res;
5498  }
5499
5500  protected boolean parseCodeSystemCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5502        res.setCodeElement(parseCode(xpp));
5503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5504        res.setDescriptionElement(parseString(xpp));
5505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
5506        res.getOperator().add(parseEnumeration(xpp, CodeSystem.FilterOperator.NULL, new CodeSystem.FilterOperatorEnumFactory()));
5507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5508        res.setValueElement(parseString(xpp));
5509      } else if (!parseBackboneElementContent(eventType, xpp, res))
5510        return false;
5511    return true;
5512  }
5513
5514  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5515    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
5516    parseBackboneAttributes(xpp, res);
5517    next(xpp);
5518    int eventType = nextNoWhitespace(xpp);
5519    while (eventType != XmlPullParser.END_TAG) {
5520  if (!parseCodeSystemPropertyComponentContent(eventType, xpp, owner, res))
5521        unknownContent(xpp);
5522      eventType = nextNoWhitespace(xpp);
5523    }
5524    next(xpp);
5525    parseElementClose(res);
5526    return res;
5527  }
5528
5529  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5530      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5531        res.setCodeElement(parseCode(xpp));
5532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5533        res.setUriElement(parseUri(xpp));
5534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5535        res.setDescriptionElement(parseString(xpp));
5536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5537        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
5538      } else if (!parseBackboneElementContent(eventType, xpp, res))
5539        return false;
5540    return true;
5541  }
5542
5543  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5544    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
5545    parseBackboneAttributes(xpp, res);
5546    next(xpp);
5547    int eventType = nextNoWhitespace(xpp);
5548    while (eventType != XmlPullParser.END_TAG) {
5549  if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, owner, res))
5550        unknownContent(xpp);
5551      eventType = nextNoWhitespace(xpp);
5552    }
5553    next(xpp);
5554    parseElementClose(res);
5555    return res;
5556  }
5557
5558  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5559      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5560        res.setCodeElement(parseCode(xpp));
5561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5562        res.setDisplayElement(parseString(xpp));
5563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
5564        res.setDefinitionElement(parseString(xpp));
5565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
5566        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
5567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5568        res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp, owner));
5569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5570        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
5571      } else if (!parseBackboneElementContent(eventType, xpp, res))
5572        return false;
5573    return true;
5574  }
5575
5576  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5577    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
5578    parseBackboneAttributes(xpp, res);
5579    next(xpp);
5580    int eventType = nextNoWhitespace(xpp);
5581    while (eventType != XmlPullParser.END_TAG) {
5582  if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, owner, res))
5583        unknownContent(xpp);
5584      eventType = nextNoWhitespace(xpp);
5585    }
5586    next(xpp);
5587    parseElementClose(res);
5588    return res;
5589  }
5590
5591  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5592      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5593        res.setLanguageElement(parseCode(xpp));
5594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
5595        res.setUse(parseCoding(xpp));
5596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5597        res.setValueElement(parseString(xpp));
5598      } else if (!parseBackboneElementContent(eventType, xpp, res))
5599        return false;
5600    return true;
5601  }
5602
5603  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5604    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
5605    parseBackboneAttributes(xpp, res);
5606    next(xpp);
5607    int eventType = nextNoWhitespace(xpp);
5608    while (eventType != XmlPullParser.END_TAG) {
5609  if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, owner, res))
5610        unknownContent(xpp);
5611      eventType = nextNoWhitespace(xpp);
5612    }
5613    next(xpp);
5614    parseElementClose(res);
5615    return res;
5616  }
5617
5618  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5619      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5620        res.setCodeElement(parseCode(xpp));
5621      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
5622        res.setValue(parseType("value", xpp));
5623      } else if (!parseBackboneElementContent(eventType, xpp, res))
5624        return false;
5625    return true;
5626  }
5627
5628  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5629    Communication res = new Communication();
5630    parseDomainResourceAttributes(xpp, res);
5631    next(xpp);
5632    int eventType = nextNoWhitespace(xpp);
5633    while (eventType != XmlPullParser.END_TAG) {
5634  if (!parseCommunicationContent(eventType, xpp, res))
5635        unknownContent(xpp);
5636      eventType = nextNoWhitespace(xpp);
5637    }
5638    next(xpp);
5639    parseElementClose(res);
5640    return res;
5641  }
5642
5643  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
5644      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5645        res.getIdentifier().add(parseIdentifier(xpp));
5646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
5647        res.getInstantiatesCanonical().add(parseCanonical(xpp));
5648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
5649        res.getInstantiatesUri().add(parseUri(xpp));
5650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5651        res.getBasedOn().add(parseReference(xpp));
5652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5653        res.getPartOf().add(parseReference(xpp));
5654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inResponseTo")) {
5655        res.getInResponseTo().add(parseReference(xpp));
5656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5657        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
5658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5659        res.setStatusReason(parseCodeableConcept(xpp));
5660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5661        res.getCategory().add(parseCodeableConcept(xpp));
5662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5663        res.setPriorityElement(parseEnumeration(xpp, Communication.CommunicationPriority.NULL, new Communication.CommunicationPriorityEnumFactory()));
5664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5665        res.getMedium().add(parseCodeableConcept(xpp));
5666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5667        res.setSubject(parseReference(xpp));
5668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5669        res.setTopic(parseCodeableConcept(xpp));
5670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5671        res.getAbout().add(parseReference(xpp));
5672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5673        res.setEncounter(parseReference(xpp));
5674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
5675        res.setSentElement(parseDateTime(xpp));
5676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
5677        res.setReceivedElement(parseDateTime(xpp));
5678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5679        res.getRecipient().add(parseReference(xpp));
5680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5681        res.setSender(parseReference(xpp));
5682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5683        res.getReasonCode().add(parseCodeableConcept(xpp));
5684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5685        res.getReasonReference().add(parseReference(xpp));
5686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5687        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
5688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5689        res.getNote().add(parseAnnotation(xpp));
5690      } else if (!parseDomainResourceContent(eventType, xpp, res))
5691        return false;
5692    return true;
5693  }
5694
5695  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
5696    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
5697    parseBackboneAttributes(xpp, res);
5698    next(xpp);
5699    int eventType = nextNoWhitespace(xpp);
5700    while (eventType != XmlPullParser.END_TAG) {
5701  if (!parseCommunicationCommunicationPayloadComponentContent(eventType, xpp, owner, res))
5702        unknownContent(xpp);
5703      eventType = nextNoWhitespace(xpp);
5704    }
5705    next(xpp);
5706    parseElementClose(res);
5707    return res;
5708  }
5709
5710  protected boolean parseCommunicationCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication owner, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5711      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5712        res.setContent(parseType("content", xpp));
5713      } else if (!parseBackboneElementContent(eventType, xpp, res))
5714        return false;
5715    return true;
5716  }
5717
5718  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5719    CommunicationRequest res = new CommunicationRequest();
5720    parseDomainResourceAttributes(xpp, res);
5721    next(xpp);
5722    int eventType = nextNoWhitespace(xpp);
5723    while (eventType != XmlPullParser.END_TAG) {
5724  if (!parseCommunicationRequestContent(eventType, xpp, res))
5725        unknownContent(xpp);
5726      eventType = nextNoWhitespace(xpp);
5727    }
5728    next(xpp);
5729    parseElementClose(res);
5730    return res;
5731  }
5732
5733  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
5734      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5735        res.getIdentifier().add(parseIdentifier(xpp));
5736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5737        res.getBasedOn().add(parseReference(xpp));
5738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
5739        res.getReplaces().add(parseReference(xpp));
5740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
5741        res.setGroupIdentifier(parseIdentifier(xpp));
5742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5743        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
5744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5745        res.setStatusReason(parseCodeableConcept(xpp));
5746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5747        res.getCategory().add(parseCodeableConcept(xpp));
5748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5749        res.setPriorityElement(parseEnumeration(xpp, CommunicationRequest.CommunicationPriority.NULL, new CommunicationRequest.CommunicationPriorityEnumFactory()));
5750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
5751        res.setDoNotPerformElement(parseBoolean(xpp));
5752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5753        res.getMedium().add(parseCodeableConcept(xpp));
5754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5755        res.setSubject(parseReference(xpp));
5756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5757        res.getAbout().add(parseReference(xpp));
5758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5759        res.setEncounter(parseReference(xpp));
5760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5761        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
5762      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
5763        res.setOccurrence(parseType("occurrence", xpp));
5764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
5765        res.setAuthoredOnElement(parseDateTime(xpp));
5766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
5767        res.setRequester(parseReference(xpp));
5768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5769        res.getRecipient().add(parseReference(xpp));
5770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5771        res.setSender(parseReference(xpp));
5772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5773        res.getReasonCode().add(parseCodeableConcept(xpp));
5774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5775        res.getReasonReference().add(parseReference(xpp));
5776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5777        res.getNote().add(parseAnnotation(xpp));
5778      } else if (!parseDomainResourceContent(eventType, xpp, res))
5779        return false;
5780    return true;
5781  }
5782
5783  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5784    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
5785    parseBackboneAttributes(xpp, res);
5786    next(xpp);
5787    int eventType = nextNoWhitespace(xpp);
5788    while (eventType != XmlPullParser.END_TAG) {
5789  if (!parseCommunicationRequestCommunicationRequestPayloadComponentContent(eventType, xpp, owner, res))
5790        unknownContent(xpp);
5791      eventType = nextNoWhitespace(xpp);
5792    }
5793    next(xpp);
5794    parseElementClose(res);
5795    return res;
5796  }
5797
5798  protected boolean parseCommunicationRequestCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5799      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5800        res.setContent(parseType("content", xpp));
5801      } else if (!parseBackboneElementContent(eventType, xpp, res))
5802        return false;
5803    return true;
5804  }
5805
5806  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5807    CompartmentDefinition res = new CompartmentDefinition();
5808    parseDomainResourceAttributes(xpp, res);
5809    next(xpp);
5810    int eventType = nextNoWhitespace(xpp);
5811    while (eventType != XmlPullParser.END_TAG) {
5812  if (!parseCompartmentDefinitionContent(eventType, xpp, res))
5813        unknownContent(xpp);
5814      eventType = nextNoWhitespace(xpp);
5815    }
5816    next(xpp);
5817    parseElementClose(res);
5818    return res;
5819  }
5820
5821  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5822      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5823        res.setUrlElement(parseUri(xpp));
5824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5825        res.setVersionElement(parseString(xpp));
5826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5827        res.setNameElement(parseString(xpp));
5828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5829        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5831        res.setExperimentalElement(parseBoolean(xpp));
5832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5833        res.setDateElement(parseDateTime(xpp));
5834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5835        res.setPublisherElement(parseString(xpp));
5836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5837        res.getContact().add(parseContactDetail(xpp));
5838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5839        res.setDescriptionElement(parseMarkdown(xpp));
5840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5841        res.getUseContext().add(parseUsageContext(xpp));
5842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5843        res.setPurposeElement(parseMarkdown(xpp));
5844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5845        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
5846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
5847        res.setSearchElement(parseBoolean(xpp));
5848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5849        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
5850      } else if (!parseDomainResourceContent(eventType, xpp, res))
5851        return false;
5852    return true;
5853  }
5854
5855  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5856    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
5857    parseBackboneAttributes(xpp, res);
5858    next(xpp);
5859    int eventType = nextNoWhitespace(xpp);
5860    while (eventType != XmlPullParser.END_TAG) {
5861  if (!parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(eventType, xpp, owner, res))
5862        unknownContent(xpp);
5863      eventType = nextNoWhitespace(xpp);
5864    }
5865    next(xpp);
5866    parseElementClose(res);
5867    return res;
5868  }
5869
5870  protected boolean parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition owner, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5871      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5872        res.setCodeElement(parseCode(xpp));
5873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
5874        res.getParam().add(parseString(xpp));
5875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
5876        res.setDocumentationElement(parseString(xpp));
5877      } else if (!parseBackboneElementContent(eventType, xpp, res))
5878        return false;
5879    return true;
5880  }
5881
5882  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5883    Composition res = new Composition();
5884    parseDomainResourceAttributes(xpp, res);
5885    next(xpp);
5886    int eventType = nextNoWhitespace(xpp);
5887    while (eventType != XmlPullParser.END_TAG) {
5888  if (!parseCompositionContent(eventType, xpp, res))
5889        unknownContent(xpp);
5890      eventType = nextNoWhitespace(xpp);
5891    }
5892    next(xpp);
5893    parseElementClose(res);
5894    return res;
5895  }
5896
5897  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
5898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5899        res.setIdentifier(parseIdentifier(xpp));
5900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5901        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
5902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5903        res.setType(parseCodeableConcept(xpp));
5904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5905        res.getCategory().add(parseCodeableConcept(xpp));
5906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5907        res.setSubject(parseReference(xpp));
5908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5909        res.setEncounter(parseReference(xpp));
5910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5911        res.setDateElement(parseDateTime(xpp));
5912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5913        res.getAuthor().add(parseReference(xpp));
5914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5915        res.setTitleElement(parseString(xpp));
5916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
5917        res.setConfidentialityElement(parseEnumeration(xpp, Composition.DocumentConfidentiality.NULL, new Composition.DocumentConfidentialityEnumFactory()));
5918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
5919        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
5920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5921        res.setCustodian(parseReference(xpp));
5922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5923        res.getRelatesTo().add(parseCompositionCompositionRelatesToComponent(xpp, res));
5924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5925        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
5926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5927        res.getSection().add(parseCompositionSectionComponent(xpp, res));
5928      } else if (!parseDomainResourceContent(eventType, xpp, res))
5929        return false;
5930    return true;
5931  }
5932
5933  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5934    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
5935    parseBackboneAttributes(xpp, res);
5936    next(xpp);
5937    int eventType = nextNoWhitespace(xpp);
5938    while (eventType != XmlPullParser.END_TAG) {
5939  if (!parseCompositionCompositionAttesterComponentContent(eventType, xpp, owner, res))
5940        unknownContent(xpp);
5941      eventType = nextNoWhitespace(xpp);
5942    }
5943    next(xpp);
5944    parseElementClose(res);
5945    return res;
5946  }
5947
5948  protected boolean parseCompositionCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5950        res.setModeElement(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
5951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5952        res.setTimeElement(parseDateTime(xpp));
5953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5954        res.setParty(parseReference(xpp));
5955      } else if (!parseBackboneElementContent(eventType, xpp, res))
5956        return false;
5957    return true;
5958  }
5959
5960  protected Composition.CompositionRelatesToComponent parseCompositionCompositionRelatesToComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5961    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
5962    parseBackboneAttributes(xpp, res);
5963    next(xpp);
5964    int eventType = nextNoWhitespace(xpp);
5965    while (eventType != XmlPullParser.END_TAG) {
5966  if (!parseCompositionCompositionRelatesToComponentContent(eventType, xpp, owner, res))
5967        unknownContent(xpp);
5968      eventType = nextNoWhitespace(xpp);
5969    }
5970    next(xpp);
5971    parseElementClose(res);
5972    return res;
5973  }
5974
5975  protected boolean parseCompositionCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5976      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5977        res.setCodeElement(parseEnumeration(xpp, Composition.DocumentRelationshipType.NULL, new Composition.DocumentRelationshipTypeEnumFactory()));
5978      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5979        res.setTarget(parseType("target", xpp));
5980      } else if (!parseBackboneElementContent(eventType, xpp, res))
5981        return false;
5982    return true;
5983  }
5984
5985  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5986    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
5987    parseBackboneAttributes(xpp, res);
5988    next(xpp);
5989    int eventType = nextNoWhitespace(xpp);
5990    while (eventType != XmlPullParser.END_TAG) {
5991  if (!parseCompositionCompositionEventComponentContent(eventType, xpp, owner, res))
5992        unknownContent(xpp);
5993      eventType = nextNoWhitespace(xpp);
5994    }
5995    next(xpp);
5996    parseElementClose(res);
5997    return res;
5998  }
5999
6000  protected boolean parseCompositionCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6001      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6002        res.getCode().add(parseCodeableConcept(xpp));
6003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6004        res.setPeriod(parsePeriod(xpp));
6005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6006        res.getDetail().add(parseReference(xpp));
6007      } else if (!parseBackboneElementContent(eventType, xpp, res))
6008        return false;
6009    return true;
6010  }
6011
6012  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6013    Composition.SectionComponent res = new Composition.SectionComponent();
6014    parseBackboneAttributes(xpp, res);
6015    next(xpp);
6016    int eventType = nextNoWhitespace(xpp);
6017    while (eventType != XmlPullParser.END_TAG) {
6018  if (!parseCompositionSectionComponentContent(eventType, xpp, owner, res))
6019        unknownContent(xpp);
6020      eventType = nextNoWhitespace(xpp);
6021    }
6022    next(xpp);
6023    parseElementClose(res);
6024    return res;
6025  }
6026
6027  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6028      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6029        res.setTitleElement(parseString(xpp));
6030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6031        res.setCode(parseCodeableConcept(xpp));
6032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6033        res.getAuthor().add(parseReference(xpp));
6034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
6035        res.setFocus(parseReference(xpp));
6036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6037        res.setText(parseNarrative(xpp));
6038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6039        res.setModeElement(parseEnumeration(xpp, Composition.SectionMode.NULL, new Composition.SectionModeEnumFactory()));
6040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
6041        res.setOrderedBy(parseCodeableConcept(xpp));
6042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
6043        res.getEntry().add(parseReference(xpp));
6044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
6045        res.setEmptyReason(parseCodeableConcept(xpp));
6046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
6047        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
6048      } else if (!parseBackboneElementContent(eventType, xpp, res))
6049        return false;
6050    return true;
6051  }
6052
6053  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6054    ConceptMap res = new ConceptMap();
6055    parseDomainResourceAttributes(xpp, res);
6056    next(xpp);
6057    int eventType = nextNoWhitespace(xpp);
6058    while (eventType != XmlPullParser.END_TAG) {
6059  if (!parseConceptMapContent(eventType, xpp, res))
6060        unknownContent(xpp);
6061      eventType = nextNoWhitespace(xpp);
6062    }
6063    next(xpp);
6064    parseElementClose(res);
6065    return res;
6066  }
6067
6068  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
6069      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6070        res.setUrlElement(parseUri(xpp));
6071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6072        res.setIdentifier(parseIdentifier(xpp));
6073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6074        res.setVersionElement(parseString(xpp));
6075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6076        res.setNameElement(parseString(xpp));
6077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6078        res.setTitleElement(parseString(xpp));
6079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6080        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
6081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6082        res.setExperimentalElement(parseBoolean(xpp));
6083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6084        res.setDateElement(parseDateTime(xpp));
6085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6086        res.setPublisherElement(parseString(xpp));
6087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6088        res.getContact().add(parseContactDetail(xpp));
6089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6090        res.setDescriptionElement(parseMarkdown(xpp));
6091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6092        res.getUseContext().add(parseUsageContext(xpp));
6093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6094        res.getJurisdiction().add(parseCodeableConcept(xpp));
6095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6096        res.setPurposeElement(parseMarkdown(xpp));
6097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6098        res.setCopyrightElement(parseMarkdown(xpp));
6099      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6100        res.setSource(parseType("source", xpp));
6101      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
6102        res.setTarget(parseType("target", xpp));
6103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6104        res.getGroup().add(parseConceptMapConceptMapGroupComponent(xpp, res));
6105      } else if (!parseDomainResourceContent(eventType, xpp, res))
6106        return false;
6107    return true;
6108  }
6109
6110  protected ConceptMap.ConceptMapGroupComponent parseConceptMapConceptMapGroupComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6111    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
6112    parseBackboneAttributes(xpp, res);
6113    next(xpp);
6114    int eventType = nextNoWhitespace(xpp);
6115    while (eventType != XmlPullParser.END_TAG) {
6116  if (!parseConceptMapConceptMapGroupComponentContent(eventType, xpp, owner, res))
6117        unknownContent(xpp);
6118      eventType = nextNoWhitespace(xpp);
6119    }
6120    next(xpp);
6121    parseElementClose(res);
6122    return res;
6123  }
6124
6125  protected boolean parseConceptMapConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6126      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6127        res.setSourceElement(parseUri(xpp));
6128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
6129        res.setSourceVersionElement(parseString(xpp));
6130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6131        res.setTargetElement(parseUri(xpp));
6132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
6133        res.setTargetVersionElement(parseString(xpp));
6134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
6135        res.getElement().add(parseConceptMapSourceElementComponent(xpp, owner));
6136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
6137        res.setUnmapped(parseConceptMapConceptMapGroupUnmappedComponent(xpp, owner));
6138      } else if (!parseBackboneElementContent(eventType, xpp, res))
6139        return false;
6140    return true;
6141  }
6142
6143  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6144    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
6145    parseBackboneAttributes(xpp, res);
6146    next(xpp);
6147    int eventType = nextNoWhitespace(xpp);
6148    while (eventType != XmlPullParser.END_TAG) {
6149  if (!parseConceptMapSourceElementComponentContent(eventType, xpp, owner, res))
6150        unknownContent(xpp);
6151      eventType = nextNoWhitespace(xpp);
6152    }
6153    next(xpp);
6154    parseElementClose(res);
6155    return res;
6156  }
6157
6158  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6160        res.setCodeElement(parseCode(xpp));
6161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6162        res.setDisplayElement(parseString(xpp));
6163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6164        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
6165      } else if (!parseBackboneElementContent(eventType, xpp, res))
6166        return false;
6167    return true;
6168  }
6169
6170  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6171    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
6172    parseBackboneAttributes(xpp, res);
6173    next(xpp);
6174    int eventType = nextNoWhitespace(xpp);
6175    while (eventType != XmlPullParser.END_TAG) {
6176  if (!parseConceptMapTargetElementComponentContent(eventType, xpp, owner, res))
6177        unknownContent(xpp);
6178      eventType = nextNoWhitespace(xpp);
6179    }
6180    next(xpp);
6181    parseElementClose(res);
6182    return res;
6183  }
6184
6185  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6186      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6187        res.setCodeElement(parseCode(xpp));
6188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6189        res.setDisplayElement(parseString(xpp));
6190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
6191        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
6192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6193        res.setCommentElement(parseString(xpp));
6194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
6195        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
6196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
6197        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
6198      } else if (!parseBackboneElementContent(eventType, xpp, res))
6199        return false;
6200    return true;
6201  }
6202
6203  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6204    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
6205    parseBackboneAttributes(xpp, res);
6206    next(xpp);
6207    int eventType = nextNoWhitespace(xpp);
6208    while (eventType != XmlPullParser.END_TAG) {
6209  if (!parseConceptMapOtherElementComponentContent(eventType, xpp, owner, res))
6210        unknownContent(xpp);
6211      eventType = nextNoWhitespace(xpp);
6212    }
6213    next(xpp);
6214    parseElementClose(res);
6215    return res;
6216  }
6217
6218  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
6220        res.setPropertyElement(parseUri(xpp));
6221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
6222        res.setSystemElement(parseCanonical(xpp));
6223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6224        res.setValueElement(parseString(xpp));
6225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6226        res.setDisplayElement(parseString(xpp));
6227      } else if (!parseBackboneElementContent(eventType, xpp, res))
6228        return false;
6229    return true;
6230  }
6231
6232  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapConceptMapGroupUnmappedComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6233    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
6234    parseBackboneAttributes(xpp, res);
6235    next(xpp);
6236    int eventType = nextNoWhitespace(xpp);
6237    while (eventType != XmlPullParser.END_TAG) {
6238  if (!parseConceptMapConceptMapGroupUnmappedComponentContent(eventType, xpp, owner, res))
6239        unknownContent(xpp);
6240      eventType = nextNoWhitespace(xpp);
6241    }
6242    next(xpp);
6243    parseElementClose(res);
6244    return res;
6245  }
6246
6247  protected boolean parseConceptMapConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6248      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6249        res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
6250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6251        res.setCodeElement(parseCode(xpp));
6252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6253        res.setDisplayElement(parseString(xpp));
6254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6255        res.setUrlElement(parseCanonical(xpp));
6256      } else if (!parseBackboneElementContent(eventType, xpp, res))
6257        return false;
6258    return true;
6259  }
6260
6261  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6262    Condition res = new Condition();
6263    parseDomainResourceAttributes(xpp, res);
6264    next(xpp);
6265    int eventType = nextNoWhitespace(xpp);
6266    while (eventType != XmlPullParser.END_TAG) {
6267  if (!parseConditionContent(eventType, xpp, res))
6268        unknownContent(xpp);
6269      eventType = nextNoWhitespace(xpp);
6270    }
6271    next(xpp);
6272    parseElementClose(res);
6273    return res;
6274  }
6275
6276  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
6277      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6278        res.getIdentifier().add(parseIdentifier(xpp));
6279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
6280        res.setClinicalStatus(parseCodeableConcept(xpp));
6281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
6282        res.setVerificationStatus(parseCodeableConcept(xpp));
6283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6284        res.getCategory().add(parseCodeableConcept(xpp));
6285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
6286        res.setSeverity(parseCodeableConcept(xpp));
6287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6288        res.setCode(parseCodeableConcept(xpp));
6289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6290        res.getBodySite().add(parseCodeableConcept(xpp));
6291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6292        res.setSubject(parseReference(xpp));
6293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6294        res.setEncounter(parseReference(xpp));
6295      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
6296        res.setOnset(parseType("onset", xpp));
6297      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
6298        res.setAbatement(parseType("abatement", xpp));
6299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
6300        res.setRecordedDateElement(parseDateTime(xpp));
6301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
6302        res.setRecorder(parseReference(xpp));
6303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
6304        res.setAsserter(parseReference(xpp));
6305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
6306        res.getStage().add(parseConditionConditionStageComponent(xpp, res));
6307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
6308        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
6309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6310        res.getNote().add(parseAnnotation(xpp));
6311      } else if (!parseDomainResourceContent(eventType, xpp, res))
6312        return false;
6313    return true;
6314  }
6315
6316  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6317    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
6318    parseBackboneAttributes(xpp, res);
6319    next(xpp);
6320    int eventType = nextNoWhitespace(xpp);
6321    while (eventType != XmlPullParser.END_TAG) {
6322  if (!parseConditionConditionStageComponentContent(eventType, xpp, owner, res))
6323        unknownContent(xpp);
6324      eventType = nextNoWhitespace(xpp);
6325    }
6326    next(xpp);
6327    parseElementClose(res);
6328    return res;
6329  }
6330
6331  protected boolean parseConditionConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6332      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
6333        res.setSummary(parseCodeableConcept(xpp));
6334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
6335        res.getAssessment().add(parseReference(xpp));
6336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6337        res.setType(parseCodeableConcept(xpp));
6338      } else if (!parseBackboneElementContent(eventType, xpp, res))
6339        return false;
6340    return true;
6341  }
6342
6343  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6344    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
6345    parseBackboneAttributes(xpp, res);
6346    next(xpp);
6347    int eventType = nextNoWhitespace(xpp);
6348    while (eventType != XmlPullParser.END_TAG) {
6349  if (!parseConditionConditionEvidenceComponentContent(eventType, xpp, owner, res))
6350        unknownContent(xpp);
6351      eventType = nextNoWhitespace(xpp);
6352    }
6353    next(xpp);
6354    parseElementClose(res);
6355    return res;
6356  }
6357
6358  protected boolean parseConditionConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6359      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6360        res.getCode().add(parseCodeableConcept(xpp));
6361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6362        res.getDetail().add(parseReference(xpp));
6363      } else if (!parseBackboneElementContent(eventType, xpp, res))
6364        return false;
6365    return true;
6366  }
6367
6368  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6369    Consent res = new Consent();
6370    parseDomainResourceAttributes(xpp, res);
6371    next(xpp);
6372    int eventType = nextNoWhitespace(xpp);
6373    while (eventType != XmlPullParser.END_TAG) {
6374  if (!parseConsentContent(eventType, xpp, res))
6375        unknownContent(xpp);
6376      eventType = nextNoWhitespace(xpp);
6377    }
6378    next(xpp);
6379    parseElementClose(res);
6380    return res;
6381  }
6382
6383  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
6384      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6385        res.getIdentifier().add(parseIdentifier(xpp));
6386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6387        res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
6388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6389        res.setScope(parseCodeableConcept(xpp));
6390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6391        res.getCategory().add(parseCodeableConcept(xpp));
6392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6393        res.setPatient(parseReference(xpp));
6394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
6395        res.setDateTimeElement(parseDateTime(xpp));
6396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6397        res.getPerformer().add(parseReference(xpp));
6398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
6399        res.getOrganization().add(parseReference(xpp));
6400      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6401        res.setSource(parseType("source", xpp));
6402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
6403        res.getPolicy().add(parseConsentConsentPolicyComponent(xpp, res));
6404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
6405        res.setPolicyRule(parseCodeableConcept(xpp));
6406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verification")) {
6407        res.getVerification().add(parseConsentConsentVerificationComponent(xpp, res));
6408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6409        res.setProvision(parseConsentprovisionComponent(xpp, res));
6410      } else if (!parseDomainResourceContent(eventType, xpp, res))
6411        return false;
6412    return true;
6413  }
6414
6415  protected Consent.ConsentPolicyComponent parseConsentConsentPolicyComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6416    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
6417    parseBackboneAttributes(xpp, res);
6418    next(xpp);
6419    int eventType = nextNoWhitespace(xpp);
6420    while (eventType != XmlPullParser.END_TAG) {
6421  if (!parseConsentConsentPolicyComponentContent(eventType, xpp, owner, res))
6422        unknownContent(xpp);
6423      eventType = nextNoWhitespace(xpp);
6424    }
6425    next(xpp);
6426    parseElementClose(res);
6427    return res;
6428  }
6429
6430  protected boolean parseConsentConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6431      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6432        res.setAuthorityElement(parseUri(xpp));
6433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6434        res.setUriElement(parseUri(xpp));
6435      } else if (!parseBackboneElementContent(eventType, xpp, res))
6436        return false;
6437    return true;
6438  }
6439
6440  protected Consent.ConsentVerificationComponent parseConsentConsentVerificationComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6441    Consent.ConsentVerificationComponent res = new Consent.ConsentVerificationComponent();
6442    parseBackboneAttributes(xpp, res);
6443    next(xpp);
6444    int eventType = nextNoWhitespace(xpp);
6445    while (eventType != XmlPullParser.END_TAG) {
6446  if (!parseConsentConsentVerificationComponentContent(eventType, xpp, owner, res))
6447        unknownContent(xpp);
6448      eventType = nextNoWhitespace(xpp);
6449    }
6450    next(xpp);
6451    parseElementClose(res);
6452    return res;
6453  }
6454
6455  protected boolean parseConsentConsentVerificationComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentVerificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verified")) {
6457        res.setVerifiedElement(parseBoolean(xpp));
6458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verifiedWith")) {
6459        res.setVerifiedWith(parseReference(xpp));
6460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationDate")) {
6461        res.setVerificationDateElement(parseDateTime(xpp));
6462      } else if (!parseBackboneElementContent(eventType, xpp, res))
6463        return false;
6464    return true;
6465  }
6466
6467  protected Consent.provisionComponent parseConsentprovisionComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6468    Consent.provisionComponent res = new Consent.provisionComponent();
6469    parseBackboneAttributes(xpp, res);
6470    next(xpp);
6471    int eventType = nextNoWhitespace(xpp);
6472    while (eventType != XmlPullParser.END_TAG) {
6473  if (!parseConsentprovisionComponentContent(eventType, xpp, owner, res))
6474        unknownContent(xpp);
6475      eventType = nextNoWhitespace(xpp);
6476    }
6477    next(xpp);
6478    parseElementClose(res);
6479    return res;
6480  }
6481
6482  protected boolean parseConsentprovisionComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6483      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6484        res.setTypeElement(parseEnumeration(xpp, Consent.ConsentProvisionType.NULL, new Consent.ConsentProvisionTypeEnumFactory()));
6485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6486        res.setPeriod(parsePeriod(xpp));
6487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6488        res.getActor().add(parseConsentprovisionActorComponent(xpp, owner));
6489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6490        res.getAction().add(parseCodeableConcept(xpp));
6491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6492        res.getSecurityLabel().add(parseCoding(xpp));
6493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6494        res.getPurpose().add(parseCoding(xpp));
6495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6496        res.getClass_().add(parseCoding(xpp));
6497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6498        res.getCode().add(parseCodeableConcept(xpp));
6499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
6500        res.setDataPeriod(parsePeriod(xpp));
6501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
6502        res.getData().add(parseConsentprovisionDataComponent(xpp, owner));
6503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6504        res.getProvision().add(parseConsentprovisionComponent(xpp, owner));
6505      } else if (!parseBackboneElementContent(eventType, xpp, res))
6506        return false;
6507    return true;
6508  }
6509
6510  protected Consent.provisionActorComponent parseConsentprovisionActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6511    Consent.provisionActorComponent res = new Consent.provisionActorComponent();
6512    parseBackboneAttributes(xpp, res);
6513    next(xpp);
6514    int eventType = nextNoWhitespace(xpp);
6515    while (eventType != XmlPullParser.END_TAG) {
6516  if (!parseConsentprovisionActorComponentContent(eventType, xpp, owner, res))
6517        unknownContent(xpp);
6518      eventType = nextNoWhitespace(xpp);
6519    }
6520    next(xpp);
6521    parseElementClose(res);
6522    return res;
6523  }
6524
6525  protected boolean parseConsentprovisionActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6526      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6527        res.setRole(parseCodeableConcept(xpp));
6528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6529        res.setReference(parseReference(xpp));
6530      } else if (!parseBackboneElementContent(eventType, xpp, res))
6531        return false;
6532    return true;
6533  }
6534
6535  protected Consent.provisionDataComponent parseConsentprovisionDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6536    Consent.provisionDataComponent res = new Consent.provisionDataComponent();
6537    parseBackboneAttributes(xpp, res);
6538    next(xpp);
6539    int eventType = nextNoWhitespace(xpp);
6540    while (eventType != XmlPullParser.END_TAG) {
6541  if (!parseConsentprovisionDataComponentContent(eventType, xpp, owner, res))
6542        unknownContent(xpp);
6543      eventType = nextNoWhitespace(xpp);
6544    }
6545    next(xpp);
6546    parseElementClose(res);
6547    return res;
6548  }
6549
6550  protected boolean parseConsentprovisionDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6551      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
6552        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
6553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6554        res.setReference(parseReference(xpp));
6555      } else if (!parseBackboneElementContent(eventType, xpp, res))
6556        return false;
6557    return true;
6558  }
6559
6560  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6561    Contract res = new Contract();
6562    parseDomainResourceAttributes(xpp, res);
6563    next(xpp);
6564    int eventType = nextNoWhitespace(xpp);
6565    while (eventType != XmlPullParser.END_TAG) {
6566  if (!parseContractContent(eventType, xpp, res))
6567        unknownContent(xpp);
6568      eventType = nextNoWhitespace(xpp);
6569    }
6570    next(xpp);
6571    parseElementClose(res);
6572    return res;
6573  }
6574
6575  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
6576      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6577        res.getIdentifier().add(parseIdentifier(xpp));
6578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6579        res.setUrlElement(parseUri(xpp));
6580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6581        res.setVersionElement(parseString(xpp));
6582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6583        res.setStatusElement(parseEnumeration(xpp, Contract.ContractStatus.NULL, new Contract.ContractStatusEnumFactory()));
6584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalState")) {
6585        res.setLegalState(parseCodeableConcept(xpp));
6586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
6587        res.setInstantiatesCanonical(parseReference(xpp));
6588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
6589        res.setInstantiatesUriElement(parseUri(xpp));
6590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
6591        res.setContentDerivative(parseCodeableConcept(xpp));
6592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6593        res.setIssuedElement(parseDateTime(xpp));
6594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6595        res.setApplies(parsePeriod(xpp));
6596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationType")) {
6597        res.setExpirationType(parseCodeableConcept(xpp));
6598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6599        res.getSubject().add(parseReference(xpp));
6600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6601        res.getAuthority().add(parseReference(xpp));
6602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
6603        res.getDomain().add(parseReference(xpp));
6604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
6605        res.getSite().add(parseReference(xpp));
6606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6607        res.setNameElement(parseString(xpp));
6608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6609        res.setTitleElement(parseString(xpp));
6610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
6611        res.setSubtitleElement(parseString(xpp));
6612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
6613        res.getAlias().add(parseString(xpp));
6614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6615        res.setAuthor(parseReference(xpp));
6616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6617        res.setScope(parseCodeableConcept(xpp));
6618      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
6619        res.setTopic(parseType("topic", xpp));
6620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6621        res.setType(parseCodeableConcept(xpp));
6622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6623        res.getSubType().add(parseCodeableConcept(xpp));
6624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDefinition")) {
6625        res.setContentDefinition(parseContractContentDefinitionComponent(xpp, res));
6626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
6627        res.getTerm().add(parseContractTermComponent(xpp, res));
6628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6629        res.getSupportingInfo().add(parseReference(xpp));
6630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
6631        res.getRelevantHistory().add(parseReference(xpp));
6632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
6633        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
6634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
6635        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
6636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
6637        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
6638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
6639        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
6640      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "legallyBinding")) {
6641        res.setLegallyBinding(parseType("legallyBinding", xpp));
6642      } else if (!parseDomainResourceContent(eventType, xpp, res))
6643        return false;
6644    return true;
6645  }
6646
6647  protected Contract.ContentDefinitionComponent parseContractContentDefinitionComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6648    Contract.ContentDefinitionComponent res = new Contract.ContentDefinitionComponent();
6649    parseBackboneAttributes(xpp, res);
6650    next(xpp);
6651    int eventType = nextNoWhitespace(xpp);
6652    while (eventType != XmlPullParser.END_TAG) {
6653  if (!parseContractContentDefinitionComponentContent(eventType, xpp, owner, res))
6654        unknownContent(xpp);
6655      eventType = nextNoWhitespace(xpp);
6656    }
6657    next(xpp);
6658    parseElementClose(res);
6659    return res;
6660  }
6661
6662  protected boolean parseContractContentDefinitionComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContentDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6664        res.setType(parseCodeableConcept(xpp));
6665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6666        res.setSubType(parseCodeableConcept(xpp));
6667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6668        res.setPublisher(parseReference(xpp));
6669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
6670        res.setPublicationDateElement(parseDateTime(xpp));
6671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationStatus")) {
6672        res.setPublicationStatusElement(parseEnumeration(xpp, Contract.ContractPublicationStatus.NULL, new Contract.ContractPublicationStatusEnumFactory()));
6673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6674        res.setCopyrightElement(parseMarkdown(xpp));
6675      } else if (!parseBackboneElementContent(eventType, xpp, res))
6676        return false;
6677    return true;
6678  }
6679
6680  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6681    Contract.TermComponent res = new Contract.TermComponent();
6682    parseBackboneAttributes(xpp, res);
6683    next(xpp);
6684    int eventType = nextNoWhitespace(xpp);
6685    while (eventType != XmlPullParser.END_TAG) {
6686  if (!parseContractTermComponentContent(eventType, xpp, owner, res))
6687        unknownContent(xpp);
6688      eventType = nextNoWhitespace(xpp);
6689    }
6690    next(xpp);
6691    parseElementClose(res);
6692    return res;
6693  }
6694
6695  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6696      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6697        res.setIdentifier(parseIdentifier(xpp));
6698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6699        res.setIssuedElement(parseDateTime(xpp));
6700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6701        res.setApplies(parsePeriod(xpp));
6702      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
6703        res.setTopic(parseType("topic", xpp));
6704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6705        res.setType(parseCodeableConcept(xpp));
6706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6707        res.setSubType(parseCodeableConcept(xpp));
6708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6709        res.setTextElement(parseString(xpp));
6710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6711        res.getSecurityLabel().add(parseContractSecurityLabelComponent(xpp, owner));
6712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offer")) {
6713        res.setOffer(parseContractContractOfferComponent(xpp, owner));
6714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asset")) {
6715        res.getAsset().add(parseContractContractAssetComponent(xpp, owner));
6716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6717        res.getAction().add(parseContractActionComponent(xpp, owner));
6718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6719        res.getGroup().add(parseContractTermComponent(xpp, owner));
6720      } else if (!parseBackboneElementContent(eventType, xpp, res))
6721        return false;
6722    return true;
6723  }
6724
6725  protected Contract.SecurityLabelComponent parseContractSecurityLabelComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6726    Contract.SecurityLabelComponent res = new Contract.SecurityLabelComponent();
6727    parseBackboneAttributes(xpp, res);
6728    next(xpp);
6729    int eventType = nextNoWhitespace(xpp);
6730    while (eventType != XmlPullParser.END_TAG) {
6731  if (!parseContractSecurityLabelComponentContent(eventType, xpp, owner, res))
6732        unknownContent(xpp);
6733      eventType = nextNoWhitespace(xpp);
6734    }
6735    next(xpp);
6736    parseElementClose(res);
6737    return res;
6738  }
6739
6740  protected boolean parseContractSecurityLabelComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SecurityLabelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
6742        res.getNumber().add(parseUnsignedInt(xpp));
6743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
6744        res.setClassification(parseCoding(xpp));
6745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6746        res.getCategory().add(parseCoding(xpp));
6747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("control")) {
6748        res.getControl().add(parseCoding(xpp));
6749      } else if (!parseBackboneElementContent(eventType, xpp, res))
6750        return false;
6751    return true;
6752  }
6753
6754  protected Contract.ContractOfferComponent parseContractContractOfferComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6755    Contract.ContractOfferComponent res = new Contract.ContractOfferComponent();
6756    parseBackboneAttributes(xpp, res);
6757    next(xpp);
6758    int eventType = nextNoWhitespace(xpp);
6759    while (eventType != XmlPullParser.END_TAG) {
6760  if (!parseContractContractOfferComponentContent(eventType, xpp, owner, res))
6761        unknownContent(xpp);
6762      eventType = nextNoWhitespace(xpp);
6763    }
6764    next(xpp);
6765    parseElementClose(res);
6766    return res;
6767  }
6768
6769  protected boolean parseContractContractOfferComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractOfferComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6770      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6771        res.getIdentifier().add(parseIdentifier(xpp));
6772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
6773        res.getParty().add(parseContractContractPartyComponent(xpp, owner));
6774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
6775        res.setTopic(parseReference(xpp));
6776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6777        res.setType(parseCodeableConcept(xpp));
6778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
6779        res.setDecision(parseCodeableConcept(xpp));
6780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionMode")) {
6781        res.getDecisionMode().add(parseCodeableConcept(xpp));
6782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
6783        res.getAnswer().add(parseContractAnswerComponent(xpp, owner));
6784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6785        res.setTextElement(parseString(xpp));
6786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6787        res.getLinkId().add(parseString(xpp));
6788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6789        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6790      } else if (!parseBackboneElementContent(eventType, xpp, res))
6791        return false;
6792    return true;
6793  }
6794
6795  protected Contract.ContractPartyComponent parseContractContractPartyComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6796    Contract.ContractPartyComponent res = new Contract.ContractPartyComponent();
6797    parseBackboneAttributes(xpp, res);
6798    next(xpp);
6799    int eventType = nextNoWhitespace(xpp);
6800    while (eventType != XmlPullParser.END_TAG) {
6801  if (!parseContractContractPartyComponentContent(eventType, xpp, owner, res))
6802        unknownContent(xpp);
6803      eventType = nextNoWhitespace(xpp);
6804    }
6805    next(xpp);
6806    parseElementClose(res);
6807    return res;
6808  }
6809
6810  protected boolean parseContractContractPartyComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractPartyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6811      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6812        res.getReference().add(parseReference(xpp));
6813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6814        res.setRole(parseCodeableConcept(xpp));
6815      } else if (!parseBackboneElementContent(eventType, xpp, res))
6816        return false;
6817    return true;
6818  }
6819
6820  protected Contract.AnswerComponent parseContractAnswerComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6821    Contract.AnswerComponent res = new Contract.AnswerComponent();
6822    parseBackboneAttributes(xpp, res);
6823    next(xpp);
6824    int eventType = nextNoWhitespace(xpp);
6825    while (eventType != XmlPullParser.END_TAG) {
6826  if (!parseContractAnswerComponentContent(eventType, xpp, owner, res))
6827        unknownContent(xpp);
6828      eventType = nextNoWhitespace(xpp);
6829    }
6830    next(xpp);
6831    parseElementClose(res);
6832    return res;
6833  }
6834
6835  protected boolean parseContractAnswerComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6836      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
6837        res.setValue(parseType("value", xpp));
6838      } else if (!parseBackboneElementContent(eventType, xpp, res))
6839        return false;
6840    return true;
6841  }
6842
6843  protected Contract.ContractAssetComponent parseContractContractAssetComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6844    Contract.ContractAssetComponent res = new Contract.ContractAssetComponent();
6845    parseBackboneAttributes(xpp, res);
6846    next(xpp);
6847    int eventType = nextNoWhitespace(xpp);
6848    while (eventType != XmlPullParser.END_TAG) {
6849  if (!parseContractContractAssetComponentContent(eventType, xpp, owner, res))
6850        unknownContent(xpp);
6851      eventType = nextNoWhitespace(xpp);
6852    }
6853    next(xpp);
6854    parseElementClose(res);
6855    return res;
6856  }
6857
6858  protected boolean parseContractContractAssetComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractAssetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6859      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6860        res.setScope(parseCodeableConcept(xpp));
6861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6862        res.getType().add(parseCodeableConcept(xpp));
6863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
6864        res.getTypeReference().add(parseReference(xpp));
6865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
6866        res.getSubtype().add(parseCodeableConcept(xpp));
6867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6868        res.setRelationship(parseCoding(xpp));
6869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6870        res.getContext().add(parseContractAssetContextComponent(xpp, owner));
6871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
6872        res.setConditionElement(parseString(xpp));
6873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodType")) {
6874        res.getPeriodType().add(parseCodeableConcept(xpp));
6875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6876        res.getPeriod().add(parsePeriod(xpp));
6877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usePeriod")) {
6878        res.getUsePeriod().add(parsePeriod(xpp));
6879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6880        res.setTextElement(parseString(xpp));
6881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6882        res.getLinkId().add(parseString(xpp));
6883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
6884        res.getAnswer().add(parseContractAnswerComponent(xpp, owner));
6885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6886        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
6888        res.getValuedItem().add(parseContractValuedItemComponent(xpp, owner));
6889      } else if (!parseBackboneElementContent(eventType, xpp, res))
6890        return false;
6891    return true;
6892  }
6893
6894  protected Contract.AssetContextComponent parseContractAssetContextComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6895    Contract.AssetContextComponent res = new Contract.AssetContextComponent();
6896    parseBackboneAttributes(xpp, res);
6897    next(xpp);
6898    int eventType = nextNoWhitespace(xpp);
6899    while (eventType != XmlPullParser.END_TAG) {
6900  if (!parseContractAssetContextComponentContent(eventType, xpp, owner, res))
6901        unknownContent(xpp);
6902      eventType = nextNoWhitespace(xpp);
6903    }
6904    next(xpp);
6905    parseElementClose(res);
6906    return res;
6907  }
6908
6909  protected boolean parseContractAssetContextComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AssetContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6910      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6911        res.setReference(parseReference(xpp));
6912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6913        res.getCode().add(parseCodeableConcept(xpp));
6914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6915        res.setTextElement(parseString(xpp));
6916      } else if (!parseBackboneElementContent(eventType, xpp, res))
6917        return false;
6918    return true;
6919  }
6920
6921  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6922    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
6923    parseBackboneAttributes(xpp, res);
6924    next(xpp);
6925    int eventType = nextNoWhitespace(xpp);
6926    while (eventType != XmlPullParser.END_TAG) {
6927  if (!parseContractValuedItemComponentContent(eventType, xpp, owner, res))
6928        unknownContent(xpp);
6929      eventType = nextNoWhitespace(xpp);
6930    }
6931    next(xpp);
6932    parseElementClose(res);
6933    return res;
6934  }
6935
6936  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6937      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
6938        res.setEntity(parseType("entity", xpp));
6939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6940        res.setIdentifier(parseIdentifier(xpp));
6941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
6942        res.setEffectiveTimeElement(parseDateTime(xpp));
6943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6944        res.setQuantity(parseQuantity(xpp));
6945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6946        res.setUnitPrice(parseMoney(xpp));
6947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6948        res.setFactorElement(parseDecimal(xpp));
6949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6950        res.setPointsElement(parseDecimal(xpp));
6951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6952        res.setNet(parseMoney(xpp));
6953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
6954        res.setPaymentElement(parseString(xpp));
6955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
6956        res.setPaymentDateElement(parseDateTime(xpp));
6957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
6958        res.setResponsible(parseReference(xpp));
6959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
6960        res.setRecipient(parseReference(xpp));
6961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6962        res.getLinkId().add(parseString(xpp));
6963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6964        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6965      } else if (!parseBackboneElementContent(eventType, xpp, res))
6966        return false;
6967    return true;
6968  }
6969
6970  protected Contract.ActionComponent parseContractActionComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6971    Contract.ActionComponent res = new Contract.ActionComponent();
6972    parseBackboneAttributes(xpp, res);
6973    next(xpp);
6974    int eventType = nextNoWhitespace(xpp);
6975    while (eventType != XmlPullParser.END_TAG) {
6976  if (!parseContractActionComponentContent(eventType, xpp, owner, res))
6977        unknownContent(xpp);
6978      eventType = nextNoWhitespace(xpp);
6979    }
6980    next(xpp);
6981    parseElementClose(res);
6982    return res;
6983  }
6984
6985  protected boolean parseContractActionComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6986      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
6987        res.setDoNotPerformElement(parseBoolean(xpp));
6988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6989        res.setType(parseCodeableConcept(xpp));
6990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6991        res.getSubject().add(parseContractActionSubjectComponent(xpp, owner));
6992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
6993        res.setIntent(parseCodeableConcept(xpp));
6994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6995        res.getLinkId().add(parseString(xpp));
6996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6997        res.setStatus(parseCodeableConcept(xpp));
6998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6999        res.setContext(parseReference(xpp));
7000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextLinkId")) {
7001        res.getContextLinkId().add(parseString(xpp));
7002      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
7003        res.setOccurrence(parseType("occurrence", xpp));
7004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
7005        res.getRequester().add(parseReference(xpp));
7006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requesterLinkId")) {
7007        res.getRequesterLinkId().add(parseString(xpp));
7008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
7009        res.getPerformerType().add(parseCodeableConcept(xpp));
7010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerRole")) {
7011        res.setPerformerRole(parseCodeableConcept(xpp));
7012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7013        res.setPerformer(parseReference(xpp));
7014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerLinkId")) {
7015        res.getPerformerLinkId().add(parseString(xpp));
7016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
7017        res.getReasonCode().add(parseCodeableConcept(xpp));
7018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
7019        res.getReasonReference().add(parseReference(xpp));
7020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7021        res.getReason().add(parseString(xpp));
7022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonLinkId")) {
7023        res.getReasonLinkId().add(parseString(xpp));
7024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7025        res.getNote().add(parseAnnotation(xpp));
7026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
7027        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
7028      } else if (!parseBackboneElementContent(eventType, xpp, res))
7029        return false;
7030    return true;
7031  }
7032
7033  protected Contract.ActionSubjectComponent parseContractActionSubjectComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7034    Contract.ActionSubjectComponent res = new Contract.ActionSubjectComponent();
7035    parseBackboneAttributes(xpp, res);
7036    next(xpp);
7037    int eventType = nextNoWhitespace(xpp);
7038    while (eventType != XmlPullParser.END_TAG) {
7039  if (!parseContractActionSubjectComponentContent(eventType, xpp, owner, res))
7040        unknownContent(xpp);
7041      eventType = nextNoWhitespace(xpp);
7042    }
7043    next(xpp);
7044    parseElementClose(res);
7045    return res;
7046  }
7047
7048  protected boolean parseContractActionSubjectComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ActionSubjectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7049      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7050        res.getReference().add(parseReference(xpp));
7051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7052        res.setRole(parseCodeableConcept(xpp));
7053      } else if (!parseBackboneElementContent(eventType, xpp, res))
7054        return false;
7055    return true;
7056  }
7057
7058  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7059    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
7060    parseBackboneAttributes(xpp, res);
7061    next(xpp);
7062    int eventType = nextNoWhitespace(xpp);
7063    while (eventType != XmlPullParser.END_TAG) {
7064  if (!parseContractSignatoryComponentContent(eventType, xpp, owner, res))
7065        unknownContent(xpp);
7066      eventType = nextNoWhitespace(xpp);
7067    }
7068    next(xpp);
7069    parseElementClose(res);
7070    return res;
7071  }
7072
7073  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7074      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7075        res.setType(parseCoding(xpp));
7076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
7077        res.setParty(parseReference(xpp));
7078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
7079        res.getSignature().add(parseSignature(xpp));
7080      } else if (!parseBackboneElementContent(eventType, xpp, res))
7081        return false;
7082    return true;
7083  }
7084
7085  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7086    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
7087    parseBackboneAttributes(xpp, res);
7088    next(xpp);
7089    int eventType = nextNoWhitespace(xpp);
7090    while (eventType != XmlPullParser.END_TAG) {
7091  if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, owner, res))
7092        unknownContent(xpp);
7093      eventType = nextNoWhitespace(xpp);
7094    }
7095    next(xpp);
7096    parseElementClose(res);
7097    return res;
7098  }
7099
7100  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7101      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7102        res.setContent(parseType("content", xpp));
7103      } else if (!parseBackboneElementContent(eventType, xpp, res))
7104        return false;
7105    return true;
7106  }
7107
7108  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7109    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
7110    parseBackboneAttributes(xpp, res);
7111    next(xpp);
7112    int eventType = nextNoWhitespace(xpp);
7113    while (eventType != XmlPullParser.END_TAG) {
7114  if (!parseContractLegalLanguageComponentContent(eventType, xpp, owner, res))
7115        unknownContent(xpp);
7116      eventType = nextNoWhitespace(xpp);
7117    }
7118    next(xpp);
7119    parseElementClose(res);
7120    return res;
7121  }
7122
7123  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7124      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7125        res.setContent(parseType("content", xpp));
7126      } else if (!parseBackboneElementContent(eventType, xpp, res))
7127        return false;
7128    return true;
7129  }
7130
7131  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7132    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
7133    parseBackboneAttributes(xpp, res);
7134    next(xpp);
7135    int eventType = nextNoWhitespace(xpp);
7136    while (eventType != XmlPullParser.END_TAG) {
7137  if (!parseContractComputableLanguageComponentContent(eventType, xpp, owner, res))
7138        unknownContent(xpp);
7139      eventType = nextNoWhitespace(xpp);
7140    }
7141    next(xpp);
7142    parseElementClose(res);
7143    return res;
7144  }
7145
7146  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7147      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7148        res.setContent(parseType("content", xpp));
7149      } else if (!parseBackboneElementContent(eventType, xpp, res))
7150        return false;
7151    return true;
7152  }
7153
7154  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7155    Coverage res = new Coverage();
7156    parseDomainResourceAttributes(xpp, res);
7157    next(xpp);
7158    int eventType = nextNoWhitespace(xpp);
7159    while (eventType != XmlPullParser.END_TAG) {
7160  if (!parseCoverageContent(eventType, xpp, res))
7161        unknownContent(xpp);
7162      eventType = nextNoWhitespace(xpp);
7163    }
7164    next(xpp);
7165    parseElementClose(res);
7166    return res;
7167  }
7168
7169  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
7170      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7171        res.getIdentifier().add(parseIdentifier(xpp));
7172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7173        res.setStatusElement(parseEnumeration(xpp, Coverage.CoverageStatus.NULL, new Coverage.CoverageStatusEnumFactory()));
7174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7175        res.setType(parseCodeableConcept(xpp));
7176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
7177        res.setPolicyHolder(parseReference(xpp));
7178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
7179        res.setSubscriber(parseReference(xpp));
7180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
7181        res.setSubscriberIdElement(parseString(xpp));
7182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
7183        res.setBeneficiary(parseReference(xpp));
7184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
7185        res.setDependentElement(parseString(xpp));
7186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
7187        res.setRelationship(parseCodeableConcept(xpp));
7188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7189        res.setPeriod(parsePeriod(xpp));
7190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
7191        res.getPayor().add(parseReference(xpp));
7192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7193        res.getClass_().add(parseCoverageClassComponent(xpp, res));
7194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
7195        res.setOrderElement(parsePositiveInt(xpp));
7196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7197        res.setNetworkElement(parseString(xpp));
7198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costToBeneficiary")) {
7199        res.getCostToBeneficiary().add(parseCoverageCostToBeneficiaryComponent(xpp, res));
7200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subrogation")) {
7201        res.setSubrogationElement(parseBoolean(xpp));
7202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7203        res.getContract().add(parseReference(xpp));
7204      } else if (!parseDomainResourceContent(eventType, xpp, res))
7205        return false;
7206    return true;
7207  }
7208
7209  protected Coverage.ClassComponent parseCoverageClassComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7210    Coverage.ClassComponent res = new Coverage.ClassComponent();
7211    parseBackboneAttributes(xpp, res);
7212    next(xpp);
7213    int eventType = nextNoWhitespace(xpp);
7214    while (eventType != XmlPullParser.END_TAG) {
7215  if (!parseCoverageClassComponentContent(eventType, xpp, owner, res))
7216        unknownContent(xpp);
7217      eventType = nextNoWhitespace(xpp);
7218    }
7219    next(xpp);
7220    parseElementClose(res);
7221    return res;
7222  }
7223
7224  protected boolean parseCoverageClassComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.ClassComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7225      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7226        res.setType(parseCodeableConcept(xpp));
7227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7228        res.setValueElement(parseString(xpp));
7229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7230        res.setNameElement(parseString(xpp));
7231      } else if (!parseBackboneElementContent(eventType, xpp, res))
7232        return false;
7233    return true;
7234  }
7235
7236  protected Coverage.CostToBeneficiaryComponent parseCoverageCostToBeneficiaryComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7237    Coverage.CostToBeneficiaryComponent res = new Coverage.CostToBeneficiaryComponent();
7238    parseBackboneAttributes(xpp, res);
7239    next(xpp);
7240    int eventType = nextNoWhitespace(xpp);
7241    while (eventType != XmlPullParser.END_TAG) {
7242  if (!parseCoverageCostToBeneficiaryComponentContent(eventType, xpp, owner, res))
7243        unknownContent(xpp);
7244      eventType = nextNoWhitespace(xpp);
7245    }
7246    next(xpp);
7247    parseElementClose(res);
7248    return res;
7249  }
7250
7251  protected boolean parseCoverageCostToBeneficiaryComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.CostToBeneficiaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7252      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7253        res.setType(parseCodeableConcept(xpp));
7254      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7255        res.setValue(parseType("value", xpp));
7256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exception")) {
7257        res.getException().add(parseCoverageExemptionComponent(xpp, owner));
7258      } else if (!parseBackboneElementContent(eventType, xpp, res))
7259        return false;
7260    return true;
7261  }
7262
7263  protected Coverage.ExemptionComponent parseCoverageExemptionComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7264    Coverage.ExemptionComponent res = new Coverage.ExemptionComponent();
7265    parseBackboneAttributes(xpp, res);
7266    next(xpp);
7267    int eventType = nextNoWhitespace(xpp);
7268    while (eventType != XmlPullParser.END_TAG) {
7269  if (!parseCoverageExemptionComponentContent(eventType, xpp, owner, res))
7270        unknownContent(xpp);
7271      eventType = nextNoWhitespace(xpp);
7272    }
7273    next(xpp);
7274    parseElementClose(res);
7275    return res;
7276  }
7277
7278  protected boolean parseCoverageExemptionComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.ExemptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7279      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7280        res.setType(parseCodeableConcept(xpp));
7281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7282        res.setPeriod(parsePeriod(xpp));
7283      } else if (!parseBackboneElementContent(eventType, xpp, res))
7284        return false;
7285    return true;
7286  }
7287
7288  protected CoverageEligibilityRequest parseCoverageEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7289    CoverageEligibilityRequest res = new CoverageEligibilityRequest();
7290    parseDomainResourceAttributes(xpp, res);
7291    next(xpp);
7292    int eventType = nextNoWhitespace(xpp);
7293    while (eventType != XmlPullParser.END_TAG) {
7294  if (!parseCoverageEligibilityRequestContent(eventType, xpp, res))
7295        unknownContent(xpp);
7296      eventType = nextNoWhitespace(xpp);
7297    }
7298    next(xpp);
7299    parseElementClose(res);
7300    return res;
7301  }
7302
7303  protected boolean parseCoverageEligibilityRequestContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7304      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7305        res.getIdentifier().add(parseIdentifier(xpp));
7306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7307        res.setStatusElement(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestStatus.NULL, new CoverageEligibilityRequest.EligibilityRequestStatusEnumFactory()));
7308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7309        res.setPriority(parseCodeableConcept(xpp));
7310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7311        res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestPurpose.NULL, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory()));
7312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7313        res.setPatient(parseReference(xpp));
7314      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7315        res.setServiced(parseType("serviced", xpp));
7316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7317        res.setCreatedElement(parseDateTime(xpp));
7318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7319        res.setEnterer(parseReference(xpp));
7320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7321        res.setProvider(parseReference(xpp));
7322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7323        res.setInsurer(parseReference(xpp));
7324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7325        res.setFacility(parseReference(xpp));
7326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
7327        res.getSupportingInfo().add(parseCoverageEligibilityRequestSupportingInformationComponent(xpp, res));
7328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7329        res.getInsurance().add(parseCoverageEligibilityRequestInsuranceComponent(xpp, res));
7330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7331        res.getItem().add(parseCoverageEligibilityRequestDetailsComponent(xpp, res));
7332      } else if (!parseDomainResourceContent(eventType, xpp, res))
7333        return false;
7334    return true;
7335  }
7336
7337  protected CoverageEligibilityRequest.SupportingInformationComponent parseCoverageEligibilityRequestSupportingInformationComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7338    CoverageEligibilityRequest.SupportingInformationComponent res = new CoverageEligibilityRequest.SupportingInformationComponent();
7339    parseBackboneAttributes(xpp, res);
7340    next(xpp);
7341    int eventType = nextNoWhitespace(xpp);
7342    while (eventType != XmlPullParser.END_TAG) {
7343  if (!parseCoverageEligibilityRequestSupportingInformationComponentContent(eventType, xpp, owner, res))
7344        unknownContent(xpp);
7345      eventType = nextNoWhitespace(xpp);
7346    }
7347    next(xpp);
7348    parseElementClose(res);
7349    return res;
7350  }
7351
7352  protected boolean parseCoverageEligibilityRequestSupportingInformationComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7353      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
7354        res.setSequenceElement(parsePositiveInt(xpp));
7355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
7356        res.setInformation(parseReference(xpp));
7357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesToAll")) {
7358        res.setAppliesToAllElement(parseBoolean(xpp));
7359      } else if (!parseBackboneElementContent(eventType, xpp, res))
7360        return false;
7361    return true;
7362  }
7363
7364  protected CoverageEligibilityRequest.InsuranceComponent parseCoverageEligibilityRequestInsuranceComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7365    CoverageEligibilityRequest.InsuranceComponent res = new CoverageEligibilityRequest.InsuranceComponent();
7366    parseBackboneAttributes(xpp, res);
7367    next(xpp);
7368    int eventType = nextNoWhitespace(xpp);
7369    while (eventType != XmlPullParser.END_TAG) {
7370  if (!parseCoverageEligibilityRequestInsuranceComponentContent(eventType, xpp, owner, res))
7371        unknownContent(xpp);
7372      eventType = nextNoWhitespace(xpp);
7373    }
7374    next(xpp);
7375    parseElementClose(res);
7376    return res;
7377  }
7378
7379  protected boolean parseCoverageEligibilityRequestInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7380      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
7381        res.setFocalElement(parseBoolean(xpp));
7382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7383        res.setCoverage(parseReference(xpp));
7384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7385        res.setBusinessArrangementElement(parseString(xpp));
7386      } else if (!parseBackboneElementContent(eventType, xpp, res))
7387        return false;
7388    return true;
7389  }
7390
7391  protected CoverageEligibilityRequest.DetailsComponent parseCoverageEligibilityRequestDetailsComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7392    CoverageEligibilityRequest.DetailsComponent res = new CoverageEligibilityRequest.DetailsComponent();
7393    parseBackboneAttributes(xpp, res);
7394    next(xpp);
7395    int eventType = nextNoWhitespace(xpp);
7396    while (eventType != XmlPullParser.END_TAG) {
7397  if (!parseCoverageEligibilityRequestDetailsComponentContent(eventType, xpp, owner, res))
7398        unknownContent(xpp);
7399      eventType = nextNoWhitespace(xpp);
7400    }
7401    next(xpp);
7402    parseElementClose(res);
7403    return res;
7404  }
7405
7406  protected boolean parseCoverageEligibilityRequestDetailsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7407      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfoSequence")) {
7408        res.getSupportingInfoSequence().add(parsePositiveInt(xpp));
7409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7410        res.setCategory(parseCodeableConcept(xpp));
7411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
7412        res.setProductOrService(parseCodeableConcept(xpp));
7413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7414        res.getModifier().add(parseCodeableConcept(xpp));
7415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7416        res.setProvider(parseReference(xpp));
7417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7418        res.setQuantity(parseQuantity(xpp));
7419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
7420        res.setUnitPrice(parseMoney(xpp));
7421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7422        res.setFacility(parseReference(xpp));
7423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7424        res.getDiagnosis().add(parseCoverageEligibilityRequestDiagnosisComponent(xpp, owner));
7425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7426        res.getDetail().add(parseReference(xpp));
7427      } else if (!parseBackboneElementContent(eventType, xpp, res))
7428        return false;
7429    return true;
7430  }
7431
7432  protected CoverageEligibilityRequest.DiagnosisComponent parseCoverageEligibilityRequestDiagnosisComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7433    CoverageEligibilityRequest.DiagnosisComponent res = new CoverageEligibilityRequest.DiagnosisComponent();
7434    parseBackboneAttributes(xpp, res);
7435    next(xpp);
7436    int eventType = nextNoWhitespace(xpp);
7437    while (eventType != XmlPullParser.END_TAG) {
7438  if (!parseCoverageEligibilityRequestDiagnosisComponentContent(eventType, xpp, owner, res))
7439        unknownContent(xpp);
7440      eventType = nextNoWhitespace(xpp);
7441    }
7442    next(xpp);
7443    parseElementClose(res);
7444    return res;
7445  }
7446
7447  protected boolean parseCoverageEligibilityRequestDiagnosisComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7448      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
7449        res.setDiagnosis(parseType("diagnosis", xpp));
7450      } else if (!parseBackboneElementContent(eventType, xpp, res))
7451        return false;
7452    return true;
7453  }
7454
7455  protected CoverageEligibilityResponse parseCoverageEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7456    CoverageEligibilityResponse res = new CoverageEligibilityResponse();
7457    parseDomainResourceAttributes(xpp, res);
7458    next(xpp);
7459    int eventType = nextNoWhitespace(xpp);
7460    while (eventType != XmlPullParser.END_TAG) {
7461  if (!parseCoverageEligibilityResponseContent(eventType, xpp, res))
7462        unknownContent(xpp);
7463      eventType = nextNoWhitespace(xpp);
7464    }
7465    next(xpp);
7466    parseElementClose(res);
7467    return res;
7468  }
7469
7470  protected boolean parseCoverageEligibilityResponseContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7471      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7472        res.getIdentifier().add(parseIdentifier(xpp));
7473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7474        res.setStatusElement(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponseStatus.NULL, new CoverageEligibilityResponse.EligibilityResponseStatusEnumFactory()));
7475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7476        res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponsePurpose.NULL, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory()));
7477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7478        res.setPatient(parseReference(xpp));
7479      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7480        res.setServiced(parseType("serviced", xpp));
7481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7482        res.setCreatedElement(parseDateTime(xpp));
7483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
7484        res.setRequestor(parseReference(xpp));
7485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7486        res.setRequest(parseReference(xpp));
7487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7488        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
7489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7490        res.setDispositionElement(parseString(xpp));
7491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7492        res.setInsurer(parseReference(xpp));
7493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7494        res.getInsurance().add(parseCoverageEligibilityResponseInsuranceComponent(xpp, res));
7495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
7496        res.setPreAuthRefElement(parseString(xpp));
7497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7498        res.setForm(parseCodeableConcept(xpp));
7499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
7500        res.getError().add(parseCoverageEligibilityResponseErrorsComponent(xpp, res));
7501      } else if (!parseDomainResourceContent(eventType, xpp, res))
7502        return false;
7503    return true;
7504  }
7505
7506  protected CoverageEligibilityResponse.InsuranceComponent parseCoverageEligibilityResponseInsuranceComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7507    CoverageEligibilityResponse.InsuranceComponent res = new CoverageEligibilityResponse.InsuranceComponent();
7508    parseBackboneAttributes(xpp, res);
7509    next(xpp);
7510    int eventType = nextNoWhitespace(xpp);
7511    while (eventType != XmlPullParser.END_TAG) {
7512  if (!parseCoverageEligibilityResponseInsuranceComponentContent(eventType, xpp, owner, res))
7513        unknownContent(xpp);
7514      eventType = nextNoWhitespace(xpp);
7515    }
7516    next(xpp);
7517    parseElementClose(res);
7518    return res;
7519  }
7520
7521  protected boolean parseCoverageEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7522      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7523        res.setCoverage(parseReference(xpp));
7524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
7525        res.setInforceElement(parseBoolean(xpp));
7526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
7527        res.setBenefitPeriod(parsePeriod(xpp));
7528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7529        res.getItem().add(parseCoverageEligibilityResponseItemsComponent(xpp, owner));
7530      } else if (!parseBackboneElementContent(eventType, xpp, res))
7531        return false;
7532    return true;
7533  }
7534
7535  protected CoverageEligibilityResponse.ItemsComponent parseCoverageEligibilityResponseItemsComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7536    CoverageEligibilityResponse.ItemsComponent res = new CoverageEligibilityResponse.ItemsComponent();
7537    parseBackboneAttributes(xpp, res);
7538    next(xpp);
7539    int eventType = nextNoWhitespace(xpp);
7540    while (eventType != XmlPullParser.END_TAG) {
7541  if (!parseCoverageEligibilityResponseItemsComponentContent(eventType, xpp, owner, res))
7542        unknownContent(xpp);
7543      eventType = nextNoWhitespace(xpp);
7544    }
7545    next(xpp);
7546    parseElementClose(res);
7547    return res;
7548  }
7549
7550  protected boolean parseCoverageEligibilityResponseItemsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7551      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7552        res.setCategory(parseCodeableConcept(xpp));
7553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
7554        res.setProductOrService(parseCodeableConcept(xpp));
7555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7556        res.getModifier().add(parseCodeableConcept(xpp));
7557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7558        res.setProvider(parseReference(xpp));
7559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
7560        res.setExcludedElement(parseBoolean(xpp));
7561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7562        res.setNameElement(parseString(xpp));
7563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7564        res.setDescriptionElement(parseString(xpp));
7565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7566        res.setNetwork(parseCodeableConcept(xpp));
7567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
7568        res.setUnit(parseCodeableConcept(xpp));
7569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7570        res.setTerm(parseCodeableConcept(xpp));
7571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
7572        res.getBenefit().add(parseCoverageEligibilityResponseBenefitComponent(xpp, owner));
7573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationRequired")) {
7574        res.setAuthorizationRequiredElement(parseBoolean(xpp));
7575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationSupporting")) {
7576        res.getAuthorizationSupporting().add(parseCodeableConcept(xpp));
7577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationUrl")) {
7578        res.setAuthorizationUrlElement(parseUri(xpp));
7579      } else if (!parseBackboneElementContent(eventType, xpp, res))
7580        return false;
7581    return true;
7582  }
7583
7584  protected CoverageEligibilityResponse.BenefitComponent parseCoverageEligibilityResponseBenefitComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7585    CoverageEligibilityResponse.BenefitComponent res = new CoverageEligibilityResponse.BenefitComponent();
7586    parseBackboneAttributes(xpp, res);
7587    next(xpp);
7588    int eventType = nextNoWhitespace(xpp);
7589    while (eventType != XmlPullParser.END_TAG) {
7590  if (!parseCoverageEligibilityResponseBenefitComponentContent(eventType, xpp, owner, res))
7591        unknownContent(xpp);
7592      eventType = nextNoWhitespace(xpp);
7593    }
7594    next(xpp);
7595    parseElementClose(res);
7596    return res;
7597  }
7598
7599  protected boolean parseCoverageEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7600      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7601        res.setType(parseCodeableConcept(xpp));
7602      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
7603        res.setAllowed(parseType("allowed", xpp));
7604      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
7605        res.setUsed(parseType("used", xpp));
7606      } else if (!parseBackboneElementContent(eventType, xpp, res))
7607        return false;
7608    return true;
7609  }
7610
7611  protected CoverageEligibilityResponse.ErrorsComponent parseCoverageEligibilityResponseErrorsComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7612    CoverageEligibilityResponse.ErrorsComponent res = new CoverageEligibilityResponse.ErrorsComponent();
7613    parseBackboneAttributes(xpp, res);
7614    next(xpp);
7615    int eventType = nextNoWhitespace(xpp);
7616    while (eventType != XmlPullParser.END_TAG) {
7617  if (!parseCoverageEligibilityResponseErrorsComponentContent(eventType, xpp, owner, res))
7618        unknownContent(xpp);
7619      eventType = nextNoWhitespace(xpp);
7620    }
7621    next(xpp);
7622    parseElementClose(res);
7623    return res;
7624  }
7625
7626  protected boolean parseCoverageEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7627      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7628        res.setCode(parseCodeableConcept(xpp));
7629      } else if (!parseBackboneElementContent(eventType, xpp, res))
7630        return false;
7631    return true;
7632  }
7633
7634  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7635    DetectedIssue res = new DetectedIssue();
7636    parseDomainResourceAttributes(xpp, res);
7637    next(xpp);
7638    int eventType = nextNoWhitespace(xpp);
7639    while (eventType != XmlPullParser.END_TAG) {
7640  if (!parseDetectedIssueContent(eventType, xpp, res))
7641        unknownContent(xpp);
7642      eventType = nextNoWhitespace(xpp);
7643    }
7644    next(xpp);
7645    parseElementClose(res);
7646    return res;
7647  }
7648
7649  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
7650      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7651        res.getIdentifier().add(parseIdentifier(xpp));
7652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7653        res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
7654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7655        res.setCode(parseCodeableConcept(xpp));
7656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
7657        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
7658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7659        res.setPatient(parseReference(xpp));
7660      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "identified")) {
7661        res.setIdentified(parseType("identified", xpp));
7662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7663        res.setAuthor(parseReference(xpp));
7664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
7665        res.getImplicated().add(parseReference(xpp));
7666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
7667        res.getEvidence().add(parseDetectedIssueDetectedIssueEvidenceComponent(xpp, res));
7668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7669        res.setDetailElement(parseString(xpp));
7670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7671        res.setReferenceElement(parseUri(xpp));
7672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
7673        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
7674      } else if (!parseDomainResourceContent(eventType, xpp, res))
7675        return false;
7676    return true;
7677  }
7678
7679  protected DetectedIssue.DetectedIssueEvidenceComponent parseDetectedIssueDetectedIssueEvidenceComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
7680    DetectedIssue.DetectedIssueEvidenceComponent res = new DetectedIssue.DetectedIssueEvidenceComponent();
7681    parseBackboneAttributes(xpp, res);
7682    next(xpp);
7683    int eventType = nextNoWhitespace(xpp);
7684    while (eventType != XmlPullParser.END_TAG) {
7685  if (!parseDetectedIssueDetectedIssueEvidenceComponentContent(eventType, xpp, owner, res))
7686        unknownContent(xpp);
7687      eventType = nextNoWhitespace(xpp);
7688    }
7689    next(xpp);
7690    parseElementClose(res);
7691    return res;
7692  }
7693
7694  protected boolean parseDetectedIssueDetectedIssueEvidenceComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7695      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7696        res.getCode().add(parseCodeableConcept(xpp));
7697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7698        res.getDetail().add(parseReference(xpp));
7699      } else if (!parseBackboneElementContent(eventType, xpp, res))
7700        return false;
7701    return true;
7702  }
7703
7704  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
7705    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
7706    parseBackboneAttributes(xpp, res);
7707    next(xpp);
7708    int eventType = nextNoWhitespace(xpp);
7709    while (eventType != XmlPullParser.END_TAG) {
7710  if (!parseDetectedIssueDetectedIssueMitigationComponentContent(eventType, xpp, owner, res))
7711        unknownContent(xpp);
7712      eventType = nextNoWhitespace(xpp);
7713    }
7714    next(xpp);
7715    parseElementClose(res);
7716    return res;
7717  }
7718
7719  protected boolean parseDetectedIssueDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7720      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
7721        res.setAction(parseCodeableConcept(xpp));
7722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7723        res.setDateElement(parseDateTime(xpp));
7724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7725        res.setAuthor(parseReference(xpp));
7726      } else if (!parseBackboneElementContent(eventType, xpp, res))
7727        return false;
7728    return true;
7729  }
7730
7731  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7732    Device res = new Device();
7733    parseDomainResourceAttributes(xpp, res);
7734    next(xpp);
7735    int eventType = nextNoWhitespace(xpp);
7736    while (eventType != XmlPullParser.END_TAG) {
7737  if (!parseDeviceContent(eventType, xpp, res))
7738        unknownContent(xpp);
7739      eventType = nextNoWhitespace(xpp);
7740    }
7741    next(xpp);
7742    parseElementClose(res);
7743    return res;
7744  }
7745
7746  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
7747      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7748        res.getIdentifier().add(parseIdentifier(xpp));
7749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
7750        res.setDefinition(parseReference(xpp));
7751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiCarrier")) {
7752        res.getUdiCarrier().add(parseDeviceDeviceUdiCarrierComponent(xpp, res));
7753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7754        res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
7755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7756        res.getStatusReason().add(parseCodeableConcept(xpp));
7757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("distinctIdentifier")) {
7758        res.setDistinctIdentifierElement(parseString(xpp));
7759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
7760        res.setManufacturerElement(parseString(xpp));
7761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
7762        res.setManufactureDateElement(parseDateTime(xpp));
7763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
7764        res.setExpirationDateElement(parseDateTime(xpp));
7765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
7766        res.setLotNumberElement(parseString(xpp));
7767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
7768        res.setSerialNumberElement(parseString(xpp));
7769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
7770        res.getDeviceName().add(parseDeviceDeviceDeviceNameComponent(xpp, res));
7771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
7772        res.setModelNumberElement(parseString(xpp));
7773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partNumber")) {
7774        res.setPartNumberElement(parseString(xpp));
7775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7776        res.setType(parseCodeableConcept(xpp));
7777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
7778        res.getSpecialization().add(parseDeviceDeviceSpecializationComponent(xpp, res));
7779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7780        res.getVersion().add(parseDeviceDeviceVersionComponent(xpp, res));
7781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7782        res.getProperty().add(parseDeviceDevicePropertyComponent(xpp, res));
7783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7784        res.setPatient(parseReference(xpp));
7785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
7786        res.setOwner(parseReference(xpp));
7787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7788        res.getContact().add(parseContactPoint(xpp));
7789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7790        res.setLocation(parseReference(xpp));
7791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7792        res.setUrlElement(parseUri(xpp));
7793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7794        res.getNote().add(parseAnnotation(xpp));
7795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
7796        res.getSafety().add(parseCodeableConcept(xpp));
7797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
7798        res.setParent(parseReference(xpp));
7799      } else if (!parseDomainResourceContent(eventType, xpp, res))
7800        return false;
7801    return true;
7802  }
7803
7804  protected Device.DeviceUdiCarrierComponent parseDeviceDeviceUdiCarrierComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7805    Device.DeviceUdiCarrierComponent res = new Device.DeviceUdiCarrierComponent();
7806    parseBackboneAttributes(xpp, res);
7807    next(xpp);
7808    int eventType = nextNoWhitespace(xpp);
7809    while (eventType != XmlPullParser.END_TAG) {
7810  if (!parseDeviceDeviceUdiCarrierComponentContent(eventType, xpp, owner, res))
7811        unknownContent(xpp);
7812      eventType = nextNoWhitespace(xpp);
7813    }
7814    next(xpp);
7815    parseElementClose(res);
7816    return res;
7817  }
7818
7819  protected boolean parseDeviceDeviceUdiCarrierComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceUdiCarrierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7820      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
7821        res.setDeviceIdentifierElement(parseString(xpp));
7822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
7823        res.setIssuerElement(parseUri(xpp));
7824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7825        res.setJurisdictionElement(parseUri(xpp));
7826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
7827        res.setCarrierAIDCElement(parseBase64Binary(xpp));
7828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
7829        res.setCarrierHRFElement(parseString(xpp));
7830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
7831        res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
7832      } else if (!parseBackboneElementContent(eventType, xpp, res))
7833        return false;
7834    return true;
7835  }
7836
7837  protected Device.DeviceDeviceNameComponent parseDeviceDeviceDeviceNameComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7838    Device.DeviceDeviceNameComponent res = new Device.DeviceDeviceNameComponent();
7839    parseBackboneAttributes(xpp, res);
7840    next(xpp);
7841    int eventType = nextNoWhitespace(xpp);
7842    while (eventType != XmlPullParser.END_TAG) {
7843  if (!parseDeviceDeviceDeviceNameComponentContent(eventType, xpp, owner, res))
7844        unknownContent(xpp);
7845      eventType = nextNoWhitespace(xpp);
7846    }
7847    next(xpp);
7848    parseElementClose(res);
7849    return res;
7850  }
7851
7852  protected boolean parseDeviceDeviceDeviceNameComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7853      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7854        res.setNameElement(parseString(xpp));
7855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7856        res.setTypeElement(parseEnumeration(xpp, Device.DeviceNameType.NULL, new Device.DeviceNameTypeEnumFactory()));
7857      } else if (!parseBackboneElementContent(eventType, xpp, res))
7858        return false;
7859    return true;
7860  }
7861
7862  protected Device.DeviceSpecializationComponent parseDeviceDeviceSpecializationComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7863    Device.DeviceSpecializationComponent res = new Device.DeviceSpecializationComponent();
7864    parseBackboneAttributes(xpp, res);
7865    next(xpp);
7866    int eventType = nextNoWhitespace(xpp);
7867    while (eventType != XmlPullParser.END_TAG) {
7868  if (!parseDeviceDeviceSpecializationComponentContent(eventType, xpp, owner, res))
7869        unknownContent(xpp);
7870      eventType = nextNoWhitespace(xpp);
7871    }
7872    next(xpp);
7873    parseElementClose(res);
7874    return res;
7875  }
7876
7877  protected boolean parseDeviceDeviceSpecializationComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
7879        res.setSystemType(parseCodeableConcept(xpp));
7880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7881        res.setVersionElement(parseString(xpp));
7882      } else if (!parseBackboneElementContent(eventType, xpp, res))
7883        return false;
7884    return true;
7885  }
7886
7887  protected Device.DeviceVersionComponent parseDeviceDeviceVersionComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7888    Device.DeviceVersionComponent res = new Device.DeviceVersionComponent();
7889    parseBackboneAttributes(xpp, res);
7890    next(xpp);
7891    int eventType = nextNoWhitespace(xpp);
7892    while (eventType != XmlPullParser.END_TAG) {
7893  if (!parseDeviceDeviceVersionComponentContent(eventType, xpp, owner, res))
7894        unknownContent(xpp);
7895      eventType = nextNoWhitespace(xpp);
7896    }
7897    next(xpp);
7898    parseElementClose(res);
7899    return res;
7900  }
7901
7902  protected boolean parseDeviceDeviceVersionComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7904        res.setType(parseCodeableConcept(xpp));
7905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
7906        res.setComponent(parseIdentifier(xpp));
7907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7908        res.setValueElement(parseString(xpp));
7909      } else if (!parseBackboneElementContent(eventType, xpp, res))
7910        return false;
7911    return true;
7912  }
7913
7914  protected Device.DevicePropertyComponent parseDeviceDevicePropertyComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7915    Device.DevicePropertyComponent res = new Device.DevicePropertyComponent();
7916    parseBackboneAttributes(xpp, res);
7917    next(xpp);
7918    int eventType = nextNoWhitespace(xpp);
7919    while (eventType != XmlPullParser.END_TAG) {
7920  if (!parseDeviceDevicePropertyComponentContent(eventType, xpp, owner, res))
7921        unknownContent(xpp);
7922      eventType = nextNoWhitespace(xpp);
7923    }
7924    next(xpp);
7925    parseElementClose(res);
7926    return res;
7927  }
7928
7929  protected boolean parseDeviceDevicePropertyComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DevicePropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7930      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7931        res.setType(parseCodeableConcept(xpp));
7932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
7933        res.getValueQuantity().add(parseQuantity(xpp));
7934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
7935        res.getValueCode().add(parseCodeableConcept(xpp));
7936      } else if (!parseBackboneElementContent(eventType, xpp, res))
7937        return false;
7938    return true;
7939  }
7940
7941  protected DeviceDefinition parseDeviceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7942    DeviceDefinition res = new DeviceDefinition();
7943    parseDomainResourceAttributes(xpp, res);
7944    next(xpp);
7945    int eventType = nextNoWhitespace(xpp);
7946    while (eventType != XmlPullParser.END_TAG) {
7947  if (!parseDeviceDefinitionContent(eventType, xpp, res))
7948        unknownContent(xpp);
7949      eventType = nextNoWhitespace(xpp);
7950    }
7951    next(xpp);
7952    parseElementClose(res);
7953    return res;
7954  }
7955
7956  protected boolean parseDeviceDefinitionContent(int eventType, XmlPullParser xpp, DeviceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
7957      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7958        res.getIdentifier().add(parseIdentifier(xpp));
7959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiDeviceIdentifier")) {
7960        res.getUdiDeviceIdentifier().add(parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(xpp, res));
7961      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "manufacturer")) {
7962        res.setManufacturer(parseType("manufacturer", xpp));
7963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
7964        res.getDeviceName().add(parseDeviceDefinitionDeviceDefinitionDeviceNameComponent(xpp, res));
7965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
7966        res.setModelNumberElement(parseString(xpp));
7967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7968        res.setType(parseCodeableConcept(xpp));
7969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
7970        res.getSpecialization().add(parseDeviceDefinitionDeviceDefinitionSpecializationComponent(xpp, res));
7971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7972        res.getVersion().add(parseString(xpp));
7973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
7974        res.getSafety().add(parseCodeableConcept(xpp));
7975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
7976        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
7977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
7978        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
7979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
7980        res.getLanguageCode().add(parseCodeableConcept(xpp));
7981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
7982        res.getCapability().add(parseDeviceDefinitionDeviceDefinitionCapabilityComponent(xpp, res));
7983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7984        res.getProperty().add(parseDeviceDefinitionDeviceDefinitionPropertyComponent(xpp, res));
7985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
7986        res.setOwner(parseReference(xpp));
7987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7988        res.getContact().add(parseContactPoint(xpp));
7989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7990        res.setUrlElement(parseUri(xpp));
7991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onlineInformation")) {
7992        res.setOnlineInformationElement(parseUri(xpp));
7993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7994        res.getNote().add(parseAnnotation(xpp));
7995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7996        res.setQuantity(parseQuantity(xpp));
7997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentDevice")) {
7998        res.setParentDevice(parseReference(xpp));
7999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
8000        res.getMaterial().add(parseDeviceDefinitionDeviceDefinitionMaterialComponent(xpp, res));
8001      } else if (!parseDomainResourceContent(eventType, xpp, res))
8002        return false;
8003    return true;
8004  }
8005
8006  protected DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8007    DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res = new DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent();
8008    parseBackboneAttributes(xpp, res);
8009    next(xpp);
8010    int eventType = nextNoWhitespace(xpp);
8011    while (eventType != XmlPullParser.END_TAG) {
8012  if (!parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentContent(eventType, xpp, owner, res))
8013        unknownContent(xpp);
8014      eventType = nextNoWhitespace(xpp);
8015    }
8016    next(xpp);
8017    parseElementClose(res);
8018    return res;
8019  }
8020
8021  protected boolean parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8022      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
8023        res.setDeviceIdentifierElement(parseString(xpp));
8024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
8025        res.setIssuerElement(parseUri(xpp));
8026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8027        res.setJurisdictionElement(parseUri(xpp));
8028      } else if (!parseBackboneElementContent(eventType, xpp, res))
8029        return false;
8030    return true;
8031  }
8032
8033  protected DeviceDefinition.DeviceDefinitionDeviceNameComponent parseDeviceDefinitionDeviceDefinitionDeviceNameComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8034    DeviceDefinition.DeviceDefinitionDeviceNameComponent res = new DeviceDefinition.DeviceDefinitionDeviceNameComponent();
8035    parseBackboneAttributes(xpp, res);
8036    next(xpp);
8037    int eventType = nextNoWhitespace(xpp);
8038    while (eventType != XmlPullParser.END_TAG) {
8039  if (!parseDeviceDefinitionDeviceDefinitionDeviceNameComponentContent(eventType, xpp, owner, res))
8040        unknownContent(xpp);
8041      eventType = nextNoWhitespace(xpp);
8042    }
8043    next(xpp);
8044    parseElementClose(res);
8045    return res;
8046  }
8047
8048  protected boolean parseDeviceDefinitionDeviceDefinitionDeviceNameComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8049      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8050        res.setNameElement(parseString(xpp));
8051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8052        res.setTypeElement(parseEnumeration(xpp, DeviceDefinition.DeviceNameType.NULL, new DeviceDefinition.DeviceNameTypeEnumFactory()));
8053      } else if (!parseBackboneElementContent(eventType, xpp, res))
8054        return false;
8055    return true;
8056  }
8057
8058  protected DeviceDefinition.DeviceDefinitionSpecializationComponent parseDeviceDefinitionDeviceDefinitionSpecializationComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8059    DeviceDefinition.DeviceDefinitionSpecializationComponent res = new DeviceDefinition.DeviceDefinitionSpecializationComponent();
8060    parseBackboneAttributes(xpp, res);
8061    next(xpp);
8062    int eventType = nextNoWhitespace(xpp);
8063    while (eventType != XmlPullParser.END_TAG) {
8064  if (!parseDeviceDefinitionDeviceDefinitionSpecializationComponentContent(eventType, xpp, owner, res))
8065        unknownContent(xpp);
8066      eventType = nextNoWhitespace(xpp);
8067    }
8068    next(xpp);
8069    parseElementClose(res);
8070    return res;
8071  }
8072
8073  protected boolean parseDeviceDefinitionDeviceDefinitionSpecializationComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8074      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
8075        res.setSystemTypeElement(parseString(xpp));
8076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8077        res.setVersionElement(parseString(xpp));
8078      } else if (!parseBackboneElementContent(eventType, xpp, res))
8079        return false;
8080    return true;
8081  }
8082
8083  protected DeviceDefinition.DeviceDefinitionCapabilityComponent parseDeviceDefinitionDeviceDefinitionCapabilityComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8084    DeviceDefinition.DeviceDefinitionCapabilityComponent res = new DeviceDefinition.DeviceDefinitionCapabilityComponent();
8085    parseBackboneAttributes(xpp, res);
8086    next(xpp);
8087    int eventType = nextNoWhitespace(xpp);
8088    while (eventType != XmlPullParser.END_TAG) {
8089  if (!parseDeviceDefinitionDeviceDefinitionCapabilityComponentContent(eventType, xpp, owner, res))
8090        unknownContent(xpp);
8091      eventType = nextNoWhitespace(xpp);
8092    }
8093    next(xpp);
8094    parseElementClose(res);
8095    return res;
8096  }
8097
8098  protected boolean parseDeviceDefinitionDeviceDefinitionCapabilityComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8099      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8100        res.setType(parseCodeableConcept(xpp));
8101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8102        res.getDescription().add(parseCodeableConcept(xpp));
8103      } else if (!parseBackboneElementContent(eventType, xpp, res))
8104        return false;
8105    return true;
8106  }
8107
8108  protected DeviceDefinition.DeviceDefinitionPropertyComponent parseDeviceDefinitionDeviceDefinitionPropertyComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8109    DeviceDefinition.DeviceDefinitionPropertyComponent res = new DeviceDefinition.DeviceDefinitionPropertyComponent();
8110    parseBackboneAttributes(xpp, res);
8111    next(xpp);
8112    int eventType = nextNoWhitespace(xpp);
8113    while (eventType != XmlPullParser.END_TAG) {
8114  if (!parseDeviceDefinitionDeviceDefinitionPropertyComponentContent(eventType, xpp, owner, res))
8115        unknownContent(xpp);
8116      eventType = nextNoWhitespace(xpp);
8117    }
8118    next(xpp);
8119    parseElementClose(res);
8120    return res;
8121  }
8122
8123  protected boolean parseDeviceDefinitionDeviceDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8125        res.setType(parseCodeableConcept(xpp));
8126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
8127        res.getValueQuantity().add(parseQuantity(xpp));
8128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
8129        res.getValueCode().add(parseCodeableConcept(xpp));
8130      } else if (!parseBackboneElementContent(eventType, xpp, res))
8131        return false;
8132    return true;
8133  }
8134
8135  protected DeviceDefinition.DeviceDefinitionMaterialComponent parseDeviceDefinitionDeviceDefinitionMaterialComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8136    DeviceDefinition.DeviceDefinitionMaterialComponent res = new DeviceDefinition.DeviceDefinitionMaterialComponent();
8137    parseBackboneAttributes(xpp, res);
8138    next(xpp);
8139    int eventType = nextNoWhitespace(xpp);
8140    while (eventType != XmlPullParser.END_TAG) {
8141  if (!parseDeviceDefinitionDeviceDefinitionMaterialComponentContent(eventType, xpp, owner, res))
8142        unknownContent(xpp);
8143      eventType = nextNoWhitespace(xpp);
8144    }
8145    next(xpp);
8146    parseElementClose(res);
8147    return res;
8148  }
8149
8150  protected boolean parseDeviceDefinitionDeviceDefinitionMaterialComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
8152        res.setSubstance(parseCodeableConcept(xpp));
8153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternate")) {
8154        res.setAlternateElement(parseBoolean(xpp));
8155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
8156        res.setAllergenicIndicatorElement(parseBoolean(xpp));
8157      } else if (!parseBackboneElementContent(eventType, xpp, res))
8158        return false;
8159    return true;
8160  }
8161
8162  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8163    DeviceMetric res = new DeviceMetric();
8164    parseDomainResourceAttributes(xpp, res);
8165    next(xpp);
8166    int eventType = nextNoWhitespace(xpp);
8167    while (eventType != XmlPullParser.END_TAG) {
8168  if (!parseDeviceMetricContent(eventType, xpp, res))
8169        unknownContent(xpp);
8170      eventType = nextNoWhitespace(xpp);
8171    }
8172    next(xpp);
8173    parseElementClose(res);
8174    return res;
8175  }
8176
8177  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
8178      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8179        res.getIdentifier().add(parseIdentifier(xpp));
8180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8181        res.setType(parseCodeableConcept(xpp));
8182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
8183        res.setUnit(parseCodeableConcept(xpp));
8184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8185        res.setSource(parseReference(xpp));
8186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
8187        res.setParent(parseReference(xpp));
8188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
8189        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
8190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
8191        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
8192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8193        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
8194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
8195        res.setMeasurementPeriod(parseTiming(xpp));
8196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
8197        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
8198      } else if (!parseDomainResourceContent(eventType, xpp, res))
8199        return false;
8200    return true;
8201  }
8202
8203  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
8204    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
8205    parseBackboneAttributes(xpp, res);
8206    next(xpp);
8207    int eventType = nextNoWhitespace(xpp);
8208    while (eventType != XmlPullParser.END_TAG) {
8209  if (!parseDeviceMetricDeviceMetricCalibrationComponentContent(eventType, xpp, owner, res))
8210        unknownContent(xpp);
8211      eventType = nextNoWhitespace(xpp);
8212    }
8213    next(xpp);
8214    parseElementClose(res);
8215    return res;
8216  }
8217
8218  protected boolean parseDeviceMetricDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric owner, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8220        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
8221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
8222        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
8223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
8224        res.setTimeElement(parseInstant(xpp));
8225      } else if (!parseBackboneElementContent(eventType, xpp, res))
8226        return false;
8227    return true;
8228  }
8229
8230  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8231    DeviceRequest res = new DeviceRequest();
8232    parseDomainResourceAttributes(xpp, res);
8233    next(xpp);
8234    int eventType = nextNoWhitespace(xpp);
8235    while (eventType != XmlPullParser.END_TAG) {
8236  if (!parseDeviceRequestContent(eventType, xpp, res))
8237        unknownContent(xpp);
8238      eventType = nextNoWhitespace(xpp);
8239    }
8240    next(xpp);
8241    parseElementClose(res);
8242    return res;
8243  }
8244
8245  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
8246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8247        res.getIdentifier().add(parseIdentifier(xpp));
8248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
8249        res.getInstantiatesCanonical().add(parseCanonical(xpp));
8250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
8251        res.getInstantiatesUri().add(parseUri(xpp));
8252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8253        res.getBasedOn().add(parseReference(xpp));
8254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
8255        res.getPriorRequest().add(parseReference(xpp));
8256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
8257        res.setGroupIdentifier(parseIdentifier(xpp));
8258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8259        res.setStatusElement(parseEnumeration(xpp, DeviceRequest.DeviceRequestStatus.NULL, new DeviceRequest.DeviceRequestStatusEnumFactory()));
8260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
8261        res.setIntentElement(parseEnumeration(xpp, DeviceRequest.RequestIntent.NULL, new DeviceRequest.RequestIntentEnumFactory()));
8262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8263        res.setPriorityElement(parseEnumeration(xpp, DeviceRequest.RequestPriority.NULL, new DeviceRequest.RequestPriorityEnumFactory()));
8264      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
8265        res.setCode(parseType("code", xpp));
8266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
8267        res.getParameter().add(parseDeviceRequestDeviceRequestParameterComponent(xpp, res));
8268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8269        res.setSubject(parseReference(xpp));
8270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8271        res.setEncounter(parseReference(xpp));
8272      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
8273        res.setOccurrence(parseType("occurrence", xpp));
8274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
8275        res.setAuthoredOnElement(parseDateTime(xpp));
8276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
8277        res.setRequester(parseReference(xpp));
8278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
8279        res.setPerformerType(parseCodeableConcept(xpp));
8280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8281        res.setPerformer(parseReference(xpp));
8282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8283        res.getReasonCode().add(parseCodeableConcept(xpp));
8284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8285        res.getReasonReference().add(parseReference(xpp));
8286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8287        res.getInsurance().add(parseReference(xpp));
8288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
8289        res.getSupportingInfo().add(parseReference(xpp));
8290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8291        res.getNote().add(parseAnnotation(xpp));
8292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
8293        res.getRelevantHistory().add(parseReference(xpp));
8294      } else if (!parseDomainResourceContent(eventType, xpp, res))
8295        return false;
8296    return true;
8297  }
8298
8299  protected DeviceRequest.DeviceRequestParameterComponent parseDeviceRequestDeviceRequestParameterComponent(XmlPullParser xpp, DeviceRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8300    DeviceRequest.DeviceRequestParameterComponent res = new DeviceRequest.DeviceRequestParameterComponent();
8301    parseBackboneAttributes(xpp, res);
8302    next(xpp);
8303    int eventType = nextNoWhitespace(xpp);
8304    while (eventType != XmlPullParser.END_TAG) {
8305  if (!parseDeviceRequestDeviceRequestParameterComponentContent(eventType, xpp, owner, res))
8306        unknownContent(xpp);
8307      eventType = nextNoWhitespace(xpp);
8308    }
8309    next(xpp);
8310    parseElementClose(res);
8311    return res;
8312  }
8313
8314  protected boolean parseDeviceRequestDeviceRequestParameterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest owner, DeviceRequest.DeviceRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8316        res.setCode(parseCodeableConcept(xpp));
8317      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8318        res.setValue(parseType("value", xpp));
8319      } else if (!parseBackboneElementContent(eventType, xpp, res))
8320        return false;
8321    return true;
8322  }
8323
8324  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8325    DeviceUseStatement res = new DeviceUseStatement();
8326    parseDomainResourceAttributes(xpp, res);
8327    next(xpp);
8328    int eventType = nextNoWhitespace(xpp);
8329    while (eventType != XmlPullParser.END_TAG) {
8330  if (!parseDeviceUseStatementContent(eventType, xpp, res))
8331        unknownContent(xpp);
8332      eventType = nextNoWhitespace(xpp);
8333    }
8334    next(xpp);
8335    parseElementClose(res);
8336    return res;
8337  }
8338
8339  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
8340      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8341        res.getIdentifier().add(parseIdentifier(xpp));
8342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8343        res.getBasedOn().add(parseReference(xpp));
8344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8345        res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
8346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8347        res.setSubject(parseReference(xpp));
8348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
8349        res.getDerivedFrom().add(parseReference(xpp));
8350      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
8351        res.setTiming(parseType("timing", xpp));
8352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
8353        res.setRecordedOnElement(parseDateTime(xpp));
8354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8355        res.setSource(parseReference(xpp));
8356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
8357        res.setDevice(parseReference(xpp));
8358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8359        res.getReasonCode().add(parseCodeableConcept(xpp));
8360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8361        res.getReasonReference().add(parseReference(xpp));
8362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8363        res.setBodySite(parseCodeableConcept(xpp));
8364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8365        res.getNote().add(parseAnnotation(xpp));
8366      } else if (!parseDomainResourceContent(eventType, xpp, res))
8367        return false;
8368    return true;
8369  }
8370
8371  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8372    DiagnosticReport res = new DiagnosticReport();
8373    parseDomainResourceAttributes(xpp, res);
8374    next(xpp);
8375    int eventType = nextNoWhitespace(xpp);
8376    while (eventType != XmlPullParser.END_TAG) {
8377  if (!parseDiagnosticReportContent(eventType, xpp, res))
8378        unknownContent(xpp);
8379      eventType = nextNoWhitespace(xpp);
8380    }
8381    next(xpp);
8382    parseElementClose(res);
8383    return res;
8384  }
8385
8386  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
8387      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8388        res.getIdentifier().add(parseIdentifier(xpp));
8389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8390        res.getBasedOn().add(parseReference(xpp));
8391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8392        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
8393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8394        res.getCategory().add(parseCodeableConcept(xpp));
8395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8396        res.setCode(parseCodeableConcept(xpp));
8397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8398        res.setSubject(parseReference(xpp));
8399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8400        res.setEncounter(parseReference(xpp));
8401      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
8402        res.setEffective(parseType("effective", xpp));
8403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
8404        res.setIssuedElement(parseInstant(xpp));
8405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8406        res.getPerformer().add(parseReference(xpp));
8407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsInterpreter")) {
8408        res.getResultsInterpreter().add(parseReference(xpp));
8409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
8410        res.getSpecimen().add(parseReference(xpp));
8411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
8412        res.getResult().add(parseReference(xpp));
8413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
8414        res.getImagingStudy().add(parseReference(xpp));
8415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
8416        res.getMedia().add(parseDiagnosticReportDiagnosticReportMediaComponent(xpp, res));
8417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
8418        res.setConclusionElement(parseString(xpp));
8419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusionCode")) {
8420        res.getConclusionCode().add(parseCodeableConcept(xpp));
8421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
8422        res.getPresentedForm().add(parseAttachment(xpp));
8423      } else if (!parseDomainResourceContent(eventType, xpp, res))
8424        return false;
8425    return true;
8426  }
8427
8428  protected DiagnosticReport.DiagnosticReportMediaComponent parseDiagnosticReportDiagnosticReportMediaComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8429    DiagnosticReport.DiagnosticReportMediaComponent res = new DiagnosticReport.DiagnosticReportMediaComponent();
8430    parseBackboneAttributes(xpp, res);
8431    next(xpp);
8432    int eventType = nextNoWhitespace(xpp);
8433    while (eventType != XmlPullParser.END_TAG) {
8434  if (!parseDiagnosticReportDiagnosticReportMediaComponentContent(eventType, xpp, owner, res))
8435        unknownContent(xpp);
8436      eventType = nextNoWhitespace(xpp);
8437    }
8438    next(xpp);
8439    parseElementClose(res);
8440    return res;
8441  }
8442
8443  protected boolean parseDiagnosticReportDiagnosticReportMediaComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportMediaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8444      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
8445        res.setCommentElement(parseString(xpp));
8446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
8447        res.setLink(parseReference(xpp));
8448      } else if (!parseBackboneElementContent(eventType, xpp, res))
8449        return false;
8450    return true;
8451  }
8452
8453  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8454    DocumentManifest res = new DocumentManifest();
8455    parseDomainResourceAttributes(xpp, res);
8456    next(xpp);
8457    int eventType = nextNoWhitespace(xpp);
8458    while (eventType != XmlPullParser.END_TAG) {
8459  if (!parseDocumentManifestContent(eventType, xpp, res))
8460        unknownContent(xpp);
8461      eventType = nextNoWhitespace(xpp);
8462    }
8463    next(xpp);
8464    parseElementClose(res);
8465    return res;
8466  }
8467
8468  protected boolean parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
8469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
8470        res.setMasterIdentifier(parseIdentifier(xpp));
8471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8472        res.getIdentifier().add(parseIdentifier(xpp));
8473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8474        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
8475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8476        res.setType(parseCodeableConcept(xpp));
8477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8478        res.setSubject(parseReference(xpp));
8479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8480        res.setCreatedElement(parseDateTime(xpp));
8481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8482        res.getAuthor().add(parseReference(xpp));
8483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
8484        res.getRecipient().add(parseReference(xpp));
8485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8486        res.setSourceElement(parseUri(xpp));
8487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8488        res.setDescriptionElement(parseString(xpp));
8489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8490        res.getContent().add(parseReference(xpp));
8491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8492        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
8493      } else if (!parseDomainResourceContent(eventType, xpp, res))
8494        return false;
8495    return true;
8496  }
8497
8498  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8499    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
8500    parseBackboneAttributes(xpp, res);
8501    next(xpp);
8502    int eventType = nextNoWhitespace(xpp);
8503    while (eventType != XmlPullParser.END_TAG) {
8504  if (!parseDocumentManifestDocumentManifestRelatedComponentContent(eventType, xpp, owner, res))
8505        unknownContent(xpp);
8506      eventType = nextNoWhitespace(xpp);
8507    }
8508    next(xpp);
8509    parseElementClose(res);
8510    return res;
8511  }
8512
8513  protected boolean parseDocumentManifestDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8514      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8515        res.setIdentifier(parseIdentifier(xpp));
8516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
8517        res.setRef(parseReference(xpp));
8518      } else if (!parseBackboneElementContent(eventType, xpp, res))
8519        return false;
8520    return true;
8521  }
8522
8523  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8524    DocumentReference res = new DocumentReference();
8525    parseDomainResourceAttributes(xpp, res);
8526    next(xpp);
8527    int eventType = nextNoWhitespace(xpp);
8528    while (eventType != XmlPullParser.END_TAG) {
8529  if (!parseDocumentReferenceContent(eventType, xpp, res))
8530        unknownContent(xpp);
8531      eventType = nextNoWhitespace(xpp);
8532    }
8533    next(xpp);
8534    parseElementClose(res);
8535    return res;
8536  }
8537
8538  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
8539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
8540        res.setMasterIdentifier(parseIdentifier(xpp));
8541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8542        res.getIdentifier().add(parseIdentifier(xpp));
8543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8544        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
8545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
8546        res.setDocStatusElement(parseEnumeration(xpp, DocumentReference.ReferredDocumentStatus.NULL, new DocumentReference.ReferredDocumentStatusEnumFactory()));
8547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8548        res.setType(parseCodeableConcept(xpp));
8549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8550        res.getCategory().add(parseCodeableConcept(xpp));
8551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8552        res.setSubject(parseReference(xpp));
8553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8554        res.setDateElement(parseInstant(xpp));
8555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8556        res.getAuthor().add(parseReference(xpp));
8557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
8558        res.setAuthenticator(parseReference(xpp));
8559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
8560        res.setCustodian(parseReference(xpp));
8561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
8562        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
8563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8564        res.setDescriptionElement(parseString(xpp));
8565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
8566        res.getSecurityLabel().add(parseCodeableConcept(xpp));
8567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8568        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
8569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8570        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
8571      } else if (!parseDomainResourceContent(eventType, xpp, res))
8572        return false;
8573    return true;
8574  }
8575
8576  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8577    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
8578    parseBackboneAttributes(xpp, res);
8579    next(xpp);
8580    int eventType = nextNoWhitespace(xpp);
8581    while (eventType != XmlPullParser.END_TAG) {
8582  if (!parseDocumentReferenceDocumentReferenceRelatesToComponentContent(eventType, xpp, owner, res))
8583        unknownContent(xpp);
8584      eventType = nextNoWhitespace(xpp);
8585    }
8586    next(xpp);
8587    parseElementClose(res);
8588    return res;
8589  }
8590
8591  protected boolean parseDocumentReferenceDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8592      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8593        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
8594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8595        res.setTarget(parseReference(xpp));
8596      } else if (!parseBackboneElementContent(eventType, xpp, res))
8597        return false;
8598    return true;
8599  }
8600
8601  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8602    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
8603    parseBackboneAttributes(xpp, res);
8604    next(xpp);
8605    int eventType = nextNoWhitespace(xpp);
8606    while (eventType != XmlPullParser.END_TAG) {
8607  if (!parseDocumentReferenceDocumentReferenceContentComponentContent(eventType, xpp, owner, res))
8608        unknownContent(xpp);
8609      eventType = nextNoWhitespace(xpp);
8610    }
8611    next(xpp);
8612    parseElementClose(res);
8613    return res;
8614  }
8615
8616  protected boolean parseDocumentReferenceDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8617      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
8618        res.setAttachment(parseAttachment(xpp));
8619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
8620        res.setFormat(parseCoding(xpp));
8621      } else if (!parseBackboneElementContent(eventType, xpp, res))
8622        return false;
8623    return true;
8624  }
8625
8626  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8627    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
8628    parseBackboneAttributes(xpp, res);
8629    next(xpp);
8630    int eventType = nextNoWhitespace(xpp);
8631    while (eventType != XmlPullParser.END_TAG) {
8632  if (!parseDocumentReferenceDocumentReferenceContextComponentContent(eventType, xpp, owner, res))
8633        unknownContent(xpp);
8634      eventType = nextNoWhitespace(xpp);
8635    }
8636    next(xpp);
8637    parseElementClose(res);
8638    return res;
8639  }
8640
8641  protected boolean parseDocumentReferenceDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8642      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8643        res.getEncounter().add(parseReference(xpp));
8644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
8645        res.getEvent().add(parseCodeableConcept(xpp));
8646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8647        res.setPeriod(parsePeriod(xpp));
8648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
8649        res.setFacilityType(parseCodeableConcept(xpp));
8650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
8651        res.setPracticeSetting(parseCodeableConcept(xpp));
8652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
8653        res.setSourcePatientInfo(parseReference(xpp));
8654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8655        res.getRelated().add(parseReference(xpp));
8656      } else if (!parseBackboneElementContent(eventType, xpp, res))
8657        return false;
8658    return true;
8659  }
8660
8661  protected EffectEvidenceSynthesis parseEffectEvidenceSynthesis(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8662    EffectEvidenceSynthesis res = new EffectEvidenceSynthesis();
8663    parseDomainResourceAttributes(xpp, res);
8664    next(xpp);
8665    int eventType = nextNoWhitespace(xpp);
8666    while (eventType != XmlPullParser.END_TAG) {
8667  if (!parseEffectEvidenceSynthesisContent(eventType, xpp, res))
8668        unknownContent(xpp);
8669      eventType = nextNoWhitespace(xpp);
8670    }
8671    next(xpp);
8672    parseElementClose(res);
8673    return res;
8674  }
8675
8676  protected boolean parseEffectEvidenceSynthesisContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis res) throws XmlPullParserException, IOException, FHIRFormatError {
8677      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8678        res.setUrlElement(parseUri(xpp));
8679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8680        res.getIdentifier().add(parseIdentifier(xpp));
8681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8682        res.setVersionElement(parseString(xpp));
8683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8684        res.setNameElement(parseString(xpp));
8685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8686        res.setTitleElement(parseString(xpp));
8687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8688        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8690        res.setDateElement(parseDateTime(xpp));
8691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8692        res.setPublisherElement(parseString(xpp));
8693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8694        res.getContact().add(parseContactDetail(xpp));
8695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8696        res.setDescriptionElement(parseMarkdown(xpp));
8697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8698        res.getNote().add(parseAnnotation(xpp));
8699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8700        res.getUseContext().add(parseUsageContext(xpp));
8701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8702        res.getJurisdiction().add(parseCodeableConcept(xpp));
8703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
8704        res.setCopyrightElement(parseMarkdown(xpp));
8705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
8706        res.setApprovalDateElement(parseDate(xpp));
8707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
8708        res.setLastReviewDateElement(parseDate(xpp));
8709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
8710        res.setEffectivePeriod(parsePeriod(xpp));
8711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
8712        res.getTopic().add(parseCodeableConcept(xpp));
8713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8714        res.getAuthor().add(parseContactDetail(xpp));
8715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
8716        res.getEditor().add(parseContactDetail(xpp));
8717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
8718        res.getReviewer().add(parseContactDetail(xpp));
8719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
8720        res.getEndorser().add(parseContactDetail(xpp));
8721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
8722        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
8723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synthesisType")) {
8724        res.setSynthesisType(parseCodeableConcept(xpp));
8725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyType")) {
8726        res.setStudyType(parseCodeableConcept(xpp));
8727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
8728        res.setPopulation(parseReference(xpp));
8729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
8730        res.setExposure(parseReference(xpp));
8731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureAlternative")) {
8732        res.setExposureAlternative(parseReference(xpp));
8733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8734        res.setOutcome(parseReference(xpp));
8735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sampleSize")) {
8736        res.setSampleSize(parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(xpp, res));
8737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsByExposure")) {
8738        res.getResultsByExposure().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(xpp, res));
8739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectEstimate")) {
8740        res.getEffectEstimate().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(xpp, res));
8741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
8742        res.getCertainty().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(xpp, res));
8743      } else if (!parseDomainResourceContent(eventType, xpp, res))
8744        return false;
8745    return true;
8746  }
8747
8748  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8749    EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent();
8750    parseBackboneAttributes(xpp, res);
8751    next(xpp);
8752    int eventType = nextNoWhitespace(xpp);
8753    while (eventType != XmlPullParser.END_TAG) {
8754  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentContent(eventType, xpp, owner, res))
8755        unknownContent(xpp);
8756      eventType = nextNoWhitespace(xpp);
8757    }
8758    next(xpp);
8759    parseElementClose(res);
8760    return res;
8761  }
8762
8763  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8764      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8765        res.setDescriptionElement(parseString(xpp));
8766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfStudies")) {
8767        res.setNumberOfStudiesElement(parseInteger(xpp));
8768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfParticipants")) {
8769        res.setNumberOfParticipantsElement(parseInteger(xpp));
8770      } else if (!parseBackboneElementContent(eventType, xpp, res))
8771        return false;
8772    return true;
8773  }
8774
8775  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8776    EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent();
8777    parseBackboneAttributes(xpp, res);
8778    next(xpp);
8779    int eventType = nextNoWhitespace(xpp);
8780    while (eventType != XmlPullParser.END_TAG) {
8781  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentContent(eventType, xpp, owner, res))
8782        unknownContent(xpp);
8783      eventType = nextNoWhitespace(xpp);
8784    }
8785    next(xpp);
8786    parseElementClose(res);
8787    return res;
8788  }
8789
8790  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8792        res.setDescriptionElement(parseString(xpp));
8793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureState")) {
8794        res.setExposureStateElement(parseEnumeration(xpp, EffectEvidenceSynthesis.ExposureState.NULL, new EffectEvidenceSynthesis.ExposureStateEnumFactory()));
8795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantState")) {
8796        res.setVariantState(parseCodeableConcept(xpp));
8797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskEvidenceSynthesis")) {
8798        res.setRiskEvidenceSynthesis(parseReference(xpp));
8799      } else if (!parseBackboneElementContent(eventType, xpp, res))
8800        return false;
8801    return true;
8802  }
8803
8804  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8805    EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent();
8806    parseBackboneAttributes(xpp, res);
8807    next(xpp);
8808    int eventType = nextNoWhitespace(xpp);
8809    while (eventType != XmlPullParser.END_TAG) {
8810  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentContent(eventType, xpp, owner, res))
8811        unknownContent(xpp);
8812      eventType = nextNoWhitespace(xpp);
8813    }
8814    next(xpp);
8815    parseElementClose(res);
8816    return res;
8817  }
8818
8819  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8820      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8821        res.setDescriptionElement(parseString(xpp));
8822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8823        res.setType(parseCodeableConcept(xpp));
8824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantState")) {
8825        res.setVariantState(parseCodeableConcept(xpp));
8826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8827        res.setValueElement(parseDecimal(xpp));
8828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
8829        res.setUnitOfMeasure(parseCodeableConcept(xpp));
8830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precisionEstimate")) {
8831        res.getPrecisionEstimate().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(xpp, owner));
8832      } else if (!parseBackboneElementContent(eventType, xpp, res))
8833        return false;
8834    return true;
8835  }
8836
8837  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8838    EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent();
8839    parseBackboneAttributes(xpp, res);
8840    next(xpp);
8841    int eventType = nextNoWhitespace(xpp);
8842    while (eventType != XmlPullParser.END_TAG) {
8843  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentContent(eventType, xpp, owner, res))
8844        unknownContent(xpp);
8845      eventType = nextNoWhitespace(xpp);
8846    }
8847    next(xpp);
8848    parseElementClose(res);
8849    return res;
8850  }
8851
8852  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8853      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8854        res.setType(parseCodeableConcept(xpp));
8855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("level")) {
8856        res.setLevelElement(parseDecimal(xpp));
8857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("from")) {
8858        res.setFromElement(parseDecimal(xpp));
8859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("to")) {
8860        res.setToElement(parseDecimal(xpp));
8861      } else if (!parseBackboneElementContent(eventType, xpp, res))
8862        return false;
8863    return true;
8864  }
8865
8866  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8867    EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent();
8868    parseBackboneAttributes(xpp, res);
8869    next(xpp);
8870    int eventType = nextNoWhitespace(xpp);
8871    while (eventType != XmlPullParser.END_TAG) {
8872  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentContent(eventType, xpp, owner, res))
8873        unknownContent(xpp);
8874      eventType = nextNoWhitespace(xpp);
8875    }
8876    next(xpp);
8877    parseElementClose(res);
8878    return res;
8879  }
8880
8881  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8882      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
8883        res.getRating().add(parseCodeableConcept(xpp));
8884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8885        res.getNote().add(parseAnnotation(xpp));
8886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certaintySubcomponent")) {
8887        res.getCertaintySubcomponent().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(xpp, owner));
8888      } else if (!parseBackboneElementContent(eventType, xpp, res))
8889        return false;
8890    return true;
8891  }
8892
8893  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8894    EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent();
8895    parseBackboneAttributes(xpp, res);
8896    next(xpp);
8897    int eventType = nextNoWhitespace(xpp);
8898    while (eventType != XmlPullParser.END_TAG) {
8899  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(eventType, xpp, owner, res))
8900        unknownContent(xpp);
8901      eventType = nextNoWhitespace(xpp);
8902    }
8903    next(xpp);
8904    parseElementClose(res);
8905    return res;
8906  }
8907
8908  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8909      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8910        res.setType(parseCodeableConcept(xpp));
8911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
8912        res.getRating().add(parseCodeableConcept(xpp));
8913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8914        res.getNote().add(parseAnnotation(xpp));
8915      } else if (!parseBackboneElementContent(eventType, xpp, res))
8916        return false;
8917    return true;
8918  }
8919
8920  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8921    Encounter res = new Encounter();
8922    parseDomainResourceAttributes(xpp, res);
8923    next(xpp);
8924    int eventType = nextNoWhitespace(xpp);
8925    while (eventType != XmlPullParser.END_TAG) {
8926  if (!parseEncounterContent(eventType, xpp, res))
8927        unknownContent(xpp);
8928      eventType = nextNoWhitespace(xpp);
8929    }
8930    next(xpp);
8931    parseElementClose(res);
8932    return res;
8933  }
8934
8935  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
8936      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8937        res.getIdentifier().add(parseIdentifier(xpp));
8938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8939        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
8940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
8941        res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp, res));
8942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
8943        res.setClass_(parseCoding(xpp));
8944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
8945        res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp, res));
8946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8947        res.getType().add(parseCodeableConcept(xpp));
8948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
8949        res.setServiceType(parseCodeableConcept(xpp));
8950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8951        res.setPriority(parseCodeableConcept(xpp));
8952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8953        res.setSubject(parseReference(xpp));
8954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
8955        res.getEpisodeOfCare().add(parseReference(xpp));
8956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8957        res.getBasedOn().add(parseReference(xpp));
8958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
8959        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
8960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
8961        res.getAppointment().add(parseReference(xpp));
8962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8963        res.setPeriod(parsePeriod(xpp));
8964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
8965        res.setLength(parseDuration(xpp));
8966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8967        res.getReasonCode().add(parseCodeableConcept(xpp));
8968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8969        res.getReasonReference().add(parseReference(xpp));
8970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8971        res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp, res));
8972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
8973        res.getAccount().add(parseReference(xpp));
8974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
8975        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
8976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8977        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
8978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
8979        res.setServiceProvider(parseReference(xpp));
8980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
8981        res.setPartOf(parseReference(xpp));
8982      } else if (!parseDomainResourceContent(eventType, xpp, res))
8983        return false;
8984    return true;
8985  }
8986
8987  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8988    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
8989    parseBackboneAttributes(xpp, res);
8990    next(xpp);
8991    int eventType = nextNoWhitespace(xpp);
8992    while (eventType != XmlPullParser.END_TAG) {
8993  if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, owner, res))
8994        unknownContent(xpp);
8995      eventType = nextNoWhitespace(xpp);
8996    }
8997    next(xpp);
8998    parseElementClose(res);
8999    return res;
9000  }
9001
9002  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9003      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9004        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
9005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9006        res.setPeriod(parsePeriod(xpp));
9007      } else if (!parseBackboneElementContent(eventType, xpp, res))
9008        return false;
9009    return true;
9010  }
9011
9012  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9013    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
9014    parseBackboneAttributes(xpp, res);
9015    next(xpp);
9016    int eventType = nextNoWhitespace(xpp);
9017    while (eventType != XmlPullParser.END_TAG) {
9018  if (!parseEncounterClassHistoryComponentContent(eventType, xpp, owner, res))
9019        unknownContent(xpp);
9020      eventType = nextNoWhitespace(xpp);
9021    }
9022    next(xpp);
9023    parseElementClose(res);
9024    return res;
9025  }
9026
9027  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9028      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
9029        res.setClass_(parseCoding(xpp));
9030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9031        res.setPeriod(parsePeriod(xpp));
9032      } else if (!parseBackboneElementContent(eventType, xpp, res))
9033        return false;
9034    return true;
9035  }
9036
9037  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9038    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
9039    parseBackboneAttributes(xpp, res);
9040    next(xpp);
9041    int eventType = nextNoWhitespace(xpp);
9042    while (eventType != XmlPullParser.END_TAG) {
9043  if (!parseEncounterEncounterParticipantComponentContent(eventType, xpp, owner, res))
9044        unknownContent(xpp);
9045      eventType = nextNoWhitespace(xpp);
9046    }
9047    next(xpp);
9048    parseElementClose(res);
9049    return res;
9050  }
9051
9052  protected boolean parseEncounterEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9053      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9054        res.getType().add(parseCodeableConcept(xpp));
9055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9056        res.setPeriod(parsePeriod(xpp));
9057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
9058        res.setIndividual(parseReference(xpp));
9059      } else if (!parseBackboneElementContent(eventType, xpp, res))
9060        return false;
9061    return true;
9062  }
9063
9064  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9065    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
9066    parseBackboneAttributes(xpp, res);
9067    next(xpp);
9068    int eventType = nextNoWhitespace(xpp);
9069    while (eventType != XmlPullParser.END_TAG) {
9070  if (!parseEncounterDiagnosisComponentContent(eventType, xpp, owner, res))
9071        unknownContent(xpp);
9072      eventType = nextNoWhitespace(xpp);
9073    }
9074    next(xpp);
9075    parseElementClose(res);
9076    return res;
9077  }
9078
9079  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9080      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9081        res.setCondition(parseReference(xpp));
9082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9083        res.setUse(parseCodeableConcept(xpp));
9084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
9085        res.setRankElement(parsePositiveInt(xpp));
9086      } else if (!parseBackboneElementContent(eventType, xpp, res))
9087        return false;
9088    return true;
9089  }
9090
9091  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9092    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
9093    parseBackboneAttributes(xpp, res);
9094    next(xpp);
9095    int eventType = nextNoWhitespace(xpp);
9096    while (eventType != XmlPullParser.END_TAG) {
9097  if (!parseEncounterEncounterHospitalizationComponentContent(eventType, xpp, owner, res))
9098        unknownContent(xpp);
9099      eventType = nextNoWhitespace(xpp);
9100    }
9101    next(xpp);
9102    parseElementClose(res);
9103    return res;
9104  }
9105
9106  protected boolean parseEncounterEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9107      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
9108        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
9109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
9110        res.setOrigin(parseReference(xpp));
9111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
9112        res.setAdmitSource(parseCodeableConcept(xpp));
9113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
9114        res.setReAdmission(parseCodeableConcept(xpp));
9115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
9116        res.getDietPreference().add(parseCodeableConcept(xpp));
9117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
9118        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
9119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
9120        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
9121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9122        res.setDestination(parseReference(xpp));
9123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
9124        res.setDischargeDisposition(parseCodeableConcept(xpp));
9125      } else if (!parseBackboneElementContent(eventType, xpp, res))
9126        return false;
9127    return true;
9128  }
9129
9130  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9131    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
9132    parseBackboneAttributes(xpp, res);
9133    next(xpp);
9134    int eventType = nextNoWhitespace(xpp);
9135    while (eventType != XmlPullParser.END_TAG) {
9136  if (!parseEncounterEncounterLocationComponentContent(eventType, xpp, owner, res))
9137        unknownContent(xpp);
9138      eventType = nextNoWhitespace(xpp);
9139    }
9140    next(xpp);
9141    parseElementClose(res);
9142    return res;
9143  }
9144
9145  protected boolean parseEncounterEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9146      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9147        res.setLocation(parseReference(xpp));
9148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9149        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
9150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
9151        res.setPhysicalType(parseCodeableConcept(xpp));
9152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9153        res.setPeriod(parsePeriod(xpp));
9154      } else if (!parseBackboneElementContent(eventType, xpp, res))
9155        return false;
9156    return true;
9157  }
9158
9159  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9160    Endpoint res = new Endpoint();
9161    parseDomainResourceAttributes(xpp, res);
9162    next(xpp);
9163    int eventType = nextNoWhitespace(xpp);
9164    while (eventType != XmlPullParser.END_TAG) {
9165  if (!parseEndpointContent(eventType, xpp, res))
9166        unknownContent(xpp);
9167      eventType = nextNoWhitespace(xpp);
9168    }
9169    next(xpp);
9170    parseElementClose(res);
9171    return res;
9172  }
9173
9174  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
9175      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9176        res.getIdentifier().add(parseIdentifier(xpp));
9177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9178        res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
9179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
9180        res.setConnectionType(parseCoding(xpp));
9181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9182        res.setNameElement(parseString(xpp));
9183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
9184        res.setManagingOrganization(parseReference(xpp));
9185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9186        res.getContact().add(parseContactPoint(xpp));
9187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9188        res.setPeriod(parsePeriod(xpp));
9189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
9190        res.getPayloadType().add(parseCodeableConcept(xpp));
9191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
9192        res.getPayloadMimeType().add(parseCode(xpp));
9193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
9194        res.setAddressElement(parseUrl(xpp));
9195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
9196        res.getHeader().add(parseString(xpp));
9197      } else if (!parseDomainResourceContent(eventType, xpp, res))
9198        return false;
9199    return true;
9200  }
9201
9202  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9203    EnrollmentRequest res = new EnrollmentRequest();
9204    parseDomainResourceAttributes(xpp, res);
9205    next(xpp);
9206    int eventType = nextNoWhitespace(xpp);
9207    while (eventType != XmlPullParser.END_TAG) {
9208  if (!parseEnrollmentRequestContent(eventType, xpp, res))
9209        unknownContent(xpp);
9210      eventType = nextNoWhitespace(xpp);
9211    }
9212    next(xpp);
9213    parseElementClose(res);
9214    return res;
9215  }
9216
9217  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
9218      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9219        res.getIdentifier().add(parseIdentifier(xpp));
9220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9221        res.setStatusElement(parseEnumeration(xpp, EnrollmentRequest.EnrollmentRequestStatus.NULL, new EnrollmentRequest.EnrollmentRequestStatusEnumFactory()));
9222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9223        res.setCreatedElement(parseDateTime(xpp));
9224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9225        res.setInsurer(parseReference(xpp));
9226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9227        res.setProvider(parseReference(xpp));
9228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("candidate")) {
9229        res.setCandidate(parseReference(xpp));
9230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
9231        res.setCoverage(parseReference(xpp));
9232      } else if (!parseDomainResourceContent(eventType, xpp, res))
9233        return false;
9234    return true;
9235  }
9236
9237  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9238    EnrollmentResponse res = new EnrollmentResponse();
9239    parseDomainResourceAttributes(xpp, res);
9240    next(xpp);
9241    int eventType = nextNoWhitespace(xpp);
9242    while (eventType != XmlPullParser.END_TAG) {
9243  if (!parseEnrollmentResponseContent(eventType, xpp, res))
9244        unknownContent(xpp);
9245      eventType = nextNoWhitespace(xpp);
9246    }
9247    next(xpp);
9248    parseElementClose(res);
9249    return res;
9250  }
9251
9252  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
9253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9254        res.getIdentifier().add(parseIdentifier(xpp));
9255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9256        res.setStatusElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentResponseStatus.NULL, new EnrollmentResponse.EnrollmentResponseStatusEnumFactory()));
9257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
9258        res.setRequest(parseReference(xpp));
9259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9260        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
9261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
9262        res.setDispositionElement(parseString(xpp));
9263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9264        res.setCreatedElement(parseDateTime(xpp));
9265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
9266        res.setOrganization(parseReference(xpp));
9267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
9268        res.setRequestProvider(parseReference(xpp));
9269      } else if (!parseDomainResourceContent(eventType, xpp, res))
9270        return false;
9271    return true;
9272  }
9273
9274  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9275    EpisodeOfCare res = new EpisodeOfCare();
9276    parseDomainResourceAttributes(xpp, res);
9277    next(xpp);
9278    int eventType = nextNoWhitespace(xpp);
9279    while (eventType != XmlPullParser.END_TAG) {
9280  if (!parseEpisodeOfCareContent(eventType, xpp, res))
9281        unknownContent(xpp);
9282      eventType = nextNoWhitespace(xpp);
9283    }
9284    next(xpp);
9285    parseElementClose(res);
9286    return res;
9287  }
9288
9289  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
9290      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9291        res.getIdentifier().add(parseIdentifier(xpp));
9292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9293        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
9294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
9295        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
9296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9297        res.getType().add(parseCodeableConcept(xpp));
9298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
9299        res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp, res));
9300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9301        res.setPatient(parseReference(xpp));
9302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
9303        res.setManagingOrganization(parseReference(xpp));
9304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9305        res.setPeriod(parsePeriod(xpp));
9306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
9307        res.getReferralRequest().add(parseReference(xpp));
9308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
9309        res.setCareManager(parseReference(xpp));
9310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
9311        res.getTeam().add(parseReference(xpp));
9312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
9313        res.getAccount().add(parseReference(xpp));
9314      } else if (!parseDomainResourceContent(eventType, xpp, res))
9315        return false;
9316    return true;
9317  }
9318
9319  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
9320    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
9321    parseBackboneAttributes(xpp, res);
9322    next(xpp);
9323    int eventType = nextNoWhitespace(xpp);
9324    while (eventType != XmlPullParser.END_TAG) {
9325  if (!parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, owner, res))
9326        unknownContent(xpp);
9327      eventType = nextNoWhitespace(xpp);
9328    }
9329    next(xpp);
9330    parseElementClose(res);
9331    return res;
9332  }
9333
9334  protected boolean parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9335      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9336        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
9337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9338        res.setPeriod(parsePeriod(xpp));
9339      } else if (!parseBackboneElementContent(eventType, xpp, res))
9340        return false;
9341    return true;
9342  }
9343
9344  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
9345    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
9346    parseBackboneAttributes(xpp, res);
9347    next(xpp);
9348    int eventType = nextNoWhitespace(xpp);
9349    while (eventType != XmlPullParser.END_TAG) {
9350  if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, owner, res))
9351        unknownContent(xpp);
9352      eventType = nextNoWhitespace(xpp);
9353    }
9354    next(xpp);
9355    parseElementClose(res);
9356    return res;
9357  }
9358
9359  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9360      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9361        res.setCondition(parseReference(xpp));
9362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9363        res.setRole(parseCodeableConcept(xpp));
9364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
9365        res.setRankElement(parsePositiveInt(xpp));
9366      } else if (!parseBackboneElementContent(eventType, xpp, res))
9367        return false;
9368    return true;
9369  }
9370
9371  protected EventDefinition parseEventDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9372    EventDefinition res = new EventDefinition();
9373    parseDomainResourceAttributes(xpp, res);
9374    next(xpp);
9375    int eventType = nextNoWhitespace(xpp);
9376    while (eventType != XmlPullParser.END_TAG) {
9377  if (!parseEventDefinitionContent(eventType, xpp, res))
9378        unknownContent(xpp);
9379      eventType = nextNoWhitespace(xpp);
9380    }
9381    next(xpp);
9382    parseElementClose(res);
9383    return res;
9384  }
9385
9386  protected boolean parseEventDefinitionContent(int eventType, XmlPullParser xpp, EventDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
9387      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9388        res.setUrlElement(parseUri(xpp));
9389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9390        res.getIdentifier().add(parseIdentifier(xpp));
9391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9392        res.setVersionElement(parseString(xpp));
9393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9394        res.setNameElement(parseString(xpp));
9395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9396        res.setTitleElement(parseString(xpp));
9397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9398        res.setSubtitleElement(parseString(xpp));
9399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9400        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9402        res.setExperimentalElement(parseBoolean(xpp));
9403      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
9404        res.setSubject(parseType("subject", xpp));
9405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9406        res.setDateElement(parseDateTime(xpp));
9407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9408        res.setPublisherElement(parseString(xpp));
9409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9410        res.getContact().add(parseContactDetail(xpp));
9411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9412        res.setDescriptionElement(parseMarkdown(xpp));
9413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9414        res.getUseContext().add(parseUsageContext(xpp));
9415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9416        res.getJurisdiction().add(parseCodeableConcept(xpp));
9417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9418        res.setPurposeElement(parseMarkdown(xpp));
9419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
9420        res.setUsageElement(parseString(xpp));
9421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9422        res.setCopyrightElement(parseMarkdown(xpp));
9423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9424        res.setApprovalDateElement(parseDate(xpp));
9425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9426        res.setLastReviewDateElement(parseDate(xpp));
9427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9428        res.setEffectivePeriod(parsePeriod(xpp));
9429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9430        res.getTopic().add(parseCodeableConcept(xpp));
9431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9432        res.getAuthor().add(parseContactDetail(xpp));
9433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9434        res.getEditor().add(parseContactDetail(xpp));
9435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9436        res.getReviewer().add(parseContactDetail(xpp));
9437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9438        res.getEndorser().add(parseContactDetail(xpp));
9439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9440        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
9442        res.getTrigger().add(parseTriggerDefinition(xpp));
9443      } else if (!parseDomainResourceContent(eventType, xpp, res))
9444        return false;
9445    return true;
9446  }
9447
9448  protected Evidence parseEvidence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9449    Evidence res = new Evidence();
9450    parseDomainResourceAttributes(xpp, res);
9451    next(xpp);
9452    int eventType = nextNoWhitespace(xpp);
9453    while (eventType != XmlPullParser.END_TAG) {
9454  if (!parseEvidenceContent(eventType, xpp, res))
9455        unknownContent(xpp);
9456      eventType = nextNoWhitespace(xpp);
9457    }
9458    next(xpp);
9459    parseElementClose(res);
9460    return res;
9461  }
9462
9463  protected boolean parseEvidenceContent(int eventType, XmlPullParser xpp, Evidence res) throws XmlPullParserException, IOException, FHIRFormatError {
9464      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9465        res.setUrlElement(parseUri(xpp));
9466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9467        res.getIdentifier().add(parseIdentifier(xpp));
9468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9469        res.setVersionElement(parseString(xpp));
9470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9471        res.setNameElement(parseString(xpp));
9472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9473        res.setTitleElement(parseString(xpp));
9474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
9475        res.setShortTitleElement(parseString(xpp));
9476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9477        res.setSubtitleElement(parseString(xpp));
9478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9479        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9481        res.setDateElement(parseDateTime(xpp));
9482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9483        res.setPublisherElement(parseString(xpp));
9484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9485        res.getContact().add(parseContactDetail(xpp));
9486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9487        res.setDescriptionElement(parseMarkdown(xpp));
9488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9489        res.getNote().add(parseAnnotation(xpp));
9490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9491        res.getUseContext().add(parseUsageContext(xpp));
9492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9493        res.getJurisdiction().add(parseCodeableConcept(xpp));
9494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9495        res.setCopyrightElement(parseMarkdown(xpp));
9496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9497        res.setApprovalDateElement(parseDate(xpp));
9498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9499        res.setLastReviewDateElement(parseDate(xpp));
9500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9501        res.setEffectivePeriod(parsePeriod(xpp));
9502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9503        res.getTopic().add(parseCodeableConcept(xpp));
9504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9505        res.getAuthor().add(parseContactDetail(xpp));
9506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9507        res.getEditor().add(parseContactDetail(xpp));
9508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9509        res.getReviewer().add(parseContactDetail(xpp));
9510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9511        res.getEndorser().add(parseContactDetail(xpp));
9512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9513        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureBackground")) {
9515        res.setExposureBackground(parseReference(xpp));
9516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureVariant")) {
9517        res.getExposureVariant().add(parseReference(xpp));
9518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9519        res.getOutcome().add(parseReference(xpp));
9520      } else if (!parseDomainResourceContent(eventType, xpp, res))
9521        return false;
9522    return true;
9523  }
9524
9525  protected EvidenceVariable parseEvidenceVariable(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9526    EvidenceVariable res = new EvidenceVariable();
9527    parseDomainResourceAttributes(xpp, res);
9528    next(xpp);
9529    int eventType = nextNoWhitespace(xpp);
9530    while (eventType != XmlPullParser.END_TAG) {
9531  if (!parseEvidenceVariableContent(eventType, xpp, res))
9532        unknownContent(xpp);
9533      eventType = nextNoWhitespace(xpp);
9534    }
9535    next(xpp);
9536    parseElementClose(res);
9537    return res;
9538  }
9539
9540  protected boolean parseEvidenceVariableContent(int eventType, XmlPullParser xpp, EvidenceVariable res) throws XmlPullParserException, IOException, FHIRFormatError {
9541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9542        res.setUrlElement(parseUri(xpp));
9543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9544        res.getIdentifier().add(parseIdentifier(xpp));
9545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9546        res.setVersionElement(parseString(xpp));
9547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9548        res.setNameElement(parseString(xpp));
9549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9550        res.setTitleElement(parseString(xpp));
9551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
9552        res.setShortTitleElement(parseString(xpp));
9553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9554        res.setSubtitleElement(parseString(xpp));
9555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9556        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9558        res.setDateElement(parseDateTime(xpp));
9559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9560        res.setPublisherElement(parseString(xpp));
9561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9562        res.getContact().add(parseContactDetail(xpp));
9563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9564        res.setDescriptionElement(parseMarkdown(xpp));
9565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9566        res.getNote().add(parseAnnotation(xpp));
9567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9568        res.getUseContext().add(parseUsageContext(xpp));
9569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9570        res.getJurisdiction().add(parseCodeableConcept(xpp));
9571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9572        res.setCopyrightElement(parseMarkdown(xpp));
9573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9574        res.setApprovalDateElement(parseDate(xpp));
9575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9576        res.setLastReviewDateElement(parseDate(xpp));
9577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9578        res.setEffectivePeriod(parsePeriod(xpp));
9579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9580        res.getTopic().add(parseCodeableConcept(xpp));
9581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9582        res.getAuthor().add(parseContactDetail(xpp));
9583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9584        res.getEditor().add(parseContactDetail(xpp));
9585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9586        res.getReviewer().add(parseContactDetail(xpp));
9587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9588        res.getEndorser().add(parseContactDetail(xpp));
9589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9590        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9592        res.setTypeElement(parseEnumeration(xpp, EvidenceVariable.EvidenceVariableType.NULL, new EvidenceVariable.EvidenceVariableTypeEnumFactory()));
9593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9594        res.getCharacteristic().add(parseEvidenceVariableEvidenceVariableCharacteristicComponent(xpp, res));
9595      } else if (!parseDomainResourceContent(eventType, xpp, res))
9596        return false;
9597    return true;
9598  }
9599
9600  protected EvidenceVariable.EvidenceVariableCharacteristicComponent parseEvidenceVariableEvidenceVariableCharacteristicComponent(XmlPullParser xpp, EvidenceVariable owner) throws XmlPullParserException, IOException, FHIRFormatError {
9601    EvidenceVariable.EvidenceVariableCharacteristicComponent res = new EvidenceVariable.EvidenceVariableCharacteristicComponent();
9602    parseBackboneAttributes(xpp, res);
9603    next(xpp);
9604    int eventType = nextNoWhitespace(xpp);
9605    while (eventType != XmlPullParser.END_TAG) {
9606  if (!parseEvidenceVariableEvidenceVariableCharacteristicComponentContent(eventType, xpp, owner, res))
9607        unknownContent(xpp);
9608      eventType = nextNoWhitespace(xpp);
9609    }
9610    next(xpp);
9611    parseElementClose(res);
9612    return res;
9613  }
9614
9615  protected boolean parseEvidenceVariableEvidenceVariableCharacteristicComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable owner, EvidenceVariable.EvidenceVariableCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9616      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9617        res.setDescriptionElement(parseString(xpp));
9618      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
9619        res.setDefinition(parseType("definition", xpp));
9620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageContext")) {
9621        res.getUsageContext().add(parseUsageContext(xpp));
9622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
9623        res.setExcludeElement(parseBoolean(xpp));
9624      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "participantEffective")) {
9625        res.setParticipantEffective(parseType("participantEffective", xpp));
9626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeFromStart")) {
9627        res.setTimeFromStart(parseDuration(xpp));
9628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupMeasure")) {
9629        res.setGroupMeasureElement(parseEnumeration(xpp, EvidenceVariable.GroupMeasure.NULL, new EvidenceVariable.GroupMeasureEnumFactory()));
9630      } else if (!parseBackboneElementContent(eventType, xpp, res))
9631        return false;
9632    return true;
9633  }
9634
9635  protected ExampleScenario parseExampleScenario(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9636    ExampleScenario res = new ExampleScenario();
9637    parseDomainResourceAttributes(xpp, res);
9638    next(xpp);
9639    int eventType = nextNoWhitespace(xpp);
9640    while (eventType != XmlPullParser.END_TAG) {
9641  if (!parseExampleScenarioContent(eventType, xpp, res))
9642        unknownContent(xpp);
9643      eventType = nextNoWhitespace(xpp);
9644    }
9645    next(xpp);
9646    parseElementClose(res);
9647    return res;
9648  }
9649
9650  protected boolean parseExampleScenarioContent(int eventType, XmlPullParser xpp, ExampleScenario res) throws XmlPullParserException, IOException, FHIRFormatError {
9651      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9652        res.setUrlElement(parseUri(xpp));
9653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9654        res.getIdentifier().add(parseIdentifier(xpp));
9655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9656        res.setVersionElement(parseString(xpp));
9657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9658        res.setNameElement(parseString(xpp));
9659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9660        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9662        res.setExperimentalElement(parseBoolean(xpp));
9663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9664        res.setDateElement(parseDateTime(xpp));
9665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9666        res.setPublisherElement(parseString(xpp));
9667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9668        res.getContact().add(parseContactDetail(xpp));
9669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9670        res.getUseContext().add(parseUsageContext(xpp));
9671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9672        res.getJurisdiction().add(parseCodeableConcept(xpp));
9673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9674        res.setCopyrightElement(parseMarkdown(xpp));
9675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9676        res.setPurposeElement(parseMarkdown(xpp));
9677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9678        res.getActor().add(parseExampleScenarioExampleScenarioActorComponent(xpp, res));
9679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9680        res.getInstance().add(parseExampleScenarioExampleScenarioInstanceComponent(xpp, res));
9681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
9682        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, res));
9683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workflow")) {
9684        res.getWorkflow().add(parseCanonical(xpp));
9685      } else if (!parseDomainResourceContent(eventType, xpp, res))
9686        return false;
9687    return true;
9688  }
9689
9690  protected ExampleScenario.ExampleScenarioActorComponent parseExampleScenarioExampleScenarioActorComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9691    ExampleScenario.ExampleScenarioActorComponent res = new ExampleScenario.ExampleScenarioActorComponent();
9692    parseBackboneAttributes(xpp, res);
9693    next(xpp);
9694    int eventType = nextNoWhitespace(xpp);
9695    while (eventType != XmlPullParser.END_TAG) {
9696  if (!parseExampleScenarioExampleScenarioActorComponentContent(eventType, xpp, owner, res))
9697        unknownContent(xpp);
9698      eventType = nextNoWhitespace(xpp);
9699    }
9700    next(xpp);
9701    parseElementClose(res);
9702    return res;
9703  }
9704
9705  protected boolean parseExampleScenarioExampleScenarioActorComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9706      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actorId")) {
9707        res.setActorIdElement(parseString(xpp));
9708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9709        res.setTypeElement(parseEnumeration(xpp, ExampleScenario.ExampleScenarioActorType.NULL, new ExampleScenario.ExampleScenarioActorTypeEnumFactory()));
9710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9711        res.setNameElement(parseString(xpp));
9712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9713        res.setDescriptionElement(parseMarkdown(xpp));
9714      } else if (!parseBackboneElementContent(eventType, xpp, res))
9715        return false;
9716    return true;
9717  }
9718
9719  protected ExampleScenario.ExampleScenarioInstanceComponent parseExampleScenarioExampleScenarioInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9720    ExampleScenario.ExampleScenarioInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceComponent();
9721    parseBackboneAttributes(xpp, res);
9722    next(xpp);
9723    int eventType = nextNoWhitespace(xpp);
9724    while (eventType != XmlPullParser.END_TAG) {
9725  if (!parseExampleScenarioExampleScenarioInstanceComponentContent(eventType, xpp, owner, res))
9726        unknownContent(xpp);
9727      eventType = nextNoWhitespace(xpp);
9728    }
9729    next(xpp);
9730    parseElementClose(res);
9731    return res;
9732  }
9733
9734  protected boolean parseExampleScenarioExampleScenarioInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9735      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
9736        res.setResourceIdElement(parseString(xpp));
9737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
9738        res.setResourceTypeElement(parseEnumeration(xpp, ExampleScenario.FHIRResourceType.NULL, new ExampleScenario.FHIRResourceTypeEnumFactory()));
9739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9740        res.setNameElement(parseString(xpp));
9741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9742        res.setDescriptionElement(parseMarkdown(xpp));
9743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9744        res.getVersion().add(parseExampleScenarioExampleScenarioInstanceVersionComponent(xpp, owner));
9745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedInstance")) {
9746        res.getContainedInstance().add(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9747      } else if (!parseBackboneElementContent(eventType, xpp, res))
9748        return false;
9749    return true;
9750  }
9751
9752  protected ExampleScenario.ExampleScenarioInstanceVersionComponent parseExampleScenarioExampleScenarioInstanceVersionComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9753    ExampleScenario.ExampleScenarioInstanceVersionComponent res = new ExampleScenario.ExampleScenarioInstanceVersionComponent();
9754    parseBackboneAttributes(xpp, res);
9755    next(xpp);
9756    int eventType = nextNoWhitespace(xpp);
9757    while (eventType != XmlPullParser.END_TAG) {
9758  if (!parseExampleScenarioExampleScenarioInstanceVersionComponentContent(eventType, xpp, owner, res))
9759        unknownContent(xpp);
9760      eventType = nextNoWhitespace(xpp);
9761    }
9762    next(xpp);
9763    parseElementClose(res);
9764    return res;
9765  }
9766
9767  protected boolean parseExampleScenarioExampleScenarioInstanceVersionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9768      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
9769        res.setVersionIdElement(parseString(xpp));
9770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9771        res.setDescriptionElement(parseMarkdown(xpp));
9772      } else if (!parseBackboneElementContent(eventType, xpp, res))
9773        return false;
9774    return true;
9775  }
9776
9777  protected ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9778    ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent();
9779    parseBackboneAttributes(xpp, res);
9780    next(xpp);
9781    int eventType = nextNoWhitespace(xpp);
9782    while (eventType != XmlPullParser.END_TAG) {
9783  if (!parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(eventType, xpp, owner, res))
9784        unknownContent(xpp);
9785      eventType = nextNoWhitespace(xpp);
9786    }
9787    next(xpp);
9788    parseElementClose(res);
9789    return res;
9790  }
9791
9792  protected boolean parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
9794        res.setResourceIdElement(parseString(xpp));
9795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
9796        res.setVersionIdElement(parseString(xpp));
9797      } else if (!parseBackboneElementContent(eventType, xpp, res))
9798        return false;
9799    return true;
9800  }
9801
9802  protected ExampleScenario.ExampleScenarioProcessComponent parseExampleScenarioExampleScenarioProcessComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9803    ExampleScenario.ExampleScenarioProcessComponent res = new ExampleScenario.ExampleScenarioProcessComponent();
9804    parseBackboneAttributes(xpp, res);
9805    next(xpp);
9806    int eventType = nextNoWhitespace(xpp);
9807    while (eventType != XmlPullParser.END_TAG) {
9808  if (!parseExampleScenarioExampleScenarioProcessComponentContent(eventType, xpp, owner, res))
9809        unknownContent(xpp);
9810      eventType = nextNoWhitespace(xpp);
9811    }
9812    next(xpp);
9813    parseElementClose(res);
9814    return res;
9815  }
9816
9817  protected boolean parseExampleScenarioExampleScenarioProcessComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9819        res.setTitleElement(parseString(xpp));
9820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9821        res.setDescriptionElement(parseMarkdown(xpp));
9822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preConditions")) {
9823        res.setPreConditionsElement(parseMarkdown(xpp));
9824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postConditions")) {
9825        res.setPostConditionsElement(parseMarkdown(xpp));
9826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
9827        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
9828      } else if (!parseBackboneElementContent(eventType, xpp, res))
9829        return false;
9830    return true;
9831  }
9832
9833  protected ExampleScenario.ExampleScenarioProcessStepComponent parseExampleScenarioExampleScenarioProcessStepComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9834    ExampleScenario.ExampleScenarioProcessStepComponent res = new ExampleScenario.ExampleScenarioProcessStepComponent();
9835    parseBackboneAttributes(xpp, res);
9836    next(xpp);
9837    int eventType = nextNoWhitespace(xpp);
9838    while (eventType != XmlPullParser.END_TAG) {
9839  if (!parseExampleScenarioExampleScenarioProcessStepComponentContent(eventType, xpp, owner, res))
9840        unknownContent(xpp);
9841      eventType = nextNoWhitespace(xpp);
9842    }
9843    next(xpp);
9844    parseElementClose(res);
9845    return res;
9846  }
9847
9848  protected boolean parseExampleScenarioExampleScenarioProcessStepComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9849      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
9850        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, owner));
9851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
9852        res.setPauseElement(parseBoolean(xpp));
9853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
9854        res.setOperation(parseExampleScenarioExampleScenarioProcessStepOperationComponent(xpp, owner));
9855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternative")) {
9856        res.getAlternative().add(parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(xpp, owner));
9857      } else if (!parseBackboneElementContent(eventType, xpp, res))
9858        return false;
9859    return true;
9860  }
9861
9862  protected ExampleScenario.ExampleScenarioProcessStepOperationComponent parseExampleScenarioExampleScenarioProcessStepOperationComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9863    ExampleScenario.ExampleScenarioProcessStepOperationComponent res = new ExampleScenario.ExampleScenarioProcessStepOperationComponent();
9864    parseBackboneAttributes(xpp, res);
9865    next(xpp);
9866    int eventType = nextNoWhitespace(xpp);
9867    while (eventType != XmlPullParser.END_TAG) {
9868  if (!parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(eventType, xpp, owner, res))
9869        unknownContent(xpp);
9870      eventType = nextNoWhitespace(xpp);
9871    }
9872    next(xpp);
9873    parseElementClose(res);
9874    return res;
9875  }
9876
9877  protected boolean parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9879        res.setNumberElement(parseString(xpp));
9880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9881        res.setTypeElement(parseString(xpp));
9882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9883        res.setNameElement(parseString(xpp));
9884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiator")) {
9885        res.setInitiatorElement(parseString(xpp));
9886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
9887        res.setReceiverElement(parseString(xpp));
9888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9889        res.setDescriptionElement(parseMarkdown(xpp));
9890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiatorActive")) {
9891        res.setInitiatorActiveElement(parseBoolean(xpp));
9892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiverActive")) {
9893        res.setReceiverActiveElement(parseBoolean(xpp));
9894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
9895        res.setRequest(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
9897        res.setResponse(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9898      } else if (!parseBackboneElementContent(eventType, xpp, res))
9899        return false;
9900    return true;
9901  }
9902
9903  protected ExampleScenario.ExampleScenarioProcessStepAlternativeComponent parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9904    ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeComponent();
9905    parseBackboneAttributes(xpp, res);
9906    next(xpp);
9907    int eventType = nextNoWhitespace(xpp);
9908    while (eventType != XmlPullParser.END_TAG) {
9909  if (!parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(eventType, xpp, owner, res))
9910        unknownContent(xpp);
9911      eventType = nextNoWhitespace(xpp);
9912    }
9913    next(xpp);
9914    parseElementClose(res);
9915    return res;
9916  }
9917
9918  protected boolean parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9919      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9920        res.setTitleElement(parseString(xpp));
9921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9922        res.setDescriptionElement(parseMarkdown(xpp));
9923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
9924        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
9925      } else if (!parseBackboneElementContent(eventType, xpp, res))
9926        return false;
9927    return true;
9928  }
9929
9930  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9931    ExplanationOfBenefit res = new ExplanationOfBenefit();
9932    parseDomainResourceAttributes(xpp, res);
9933    next(xpp);
9934    int eventType = nextNoWhitespace(xpp);
9935    while (eventType != XmlPullParser.END_TAG) {
9936  if (!parseExplanationOfBenefitContent(eventType, xpp, res))
9937        unknownContent(xpp);
9938      eventType = nextNoWhitespace(xpp);
9939    }
9940    next(xpp);
9941    parseElementClose(res);
9942    return res;
9943  }
9944
9945  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
9946      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9947        res.getIdentifier().add(parseIdentifier(xpp));
9948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9949        res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
9950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9951        res.setType(parseCodeableConcept(xpp));
9952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
9953        res.setSubType(parseCodeableConcept(xpp));
9954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9955        res.setUseElement(parseEnumeration(xpp, ExplanationOfBenefit.Use.NULL, new ExplanationOfBenefit.UseEnumFactory()));
9956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9957        res.setPatient(parseReference(xpp));
9958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
9959        res.setBillablePeriod(parsePeriod(xpp));
9960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9961        res.setCreatedElement(parseDateTime(xpp));
9962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
9963        res.setEnterer(parseReference(xpp));
9964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9965        res.setInsurer(parseReference(xpp));
9966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9967        res.setProvider(parseReference(xpp));
9968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
9969        res.setPriority(parseCodeableConcept(xpp));
9970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserveRequested")) {
9971        res.setFundsReserveRequested(parseCodeableConcept(xpp));
9972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
9973        res.setFundsReserve(parseCodeableConcept(xpp));
9974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
9975        res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp, res));
9976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
9977        res.setPrescription(parseReference(xpp));
9978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
9979        res.setOriginalPrescription(parseReference(xpp));
9980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
9981        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
9982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
9983        res.setReferral(parseReference(xpp));
9984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
9985        res.setFacility(parseReference(xpp));
9986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
9987        res.setClaim(parseReference(xpp));
9988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
9989        res.setClaimResponse(parseReference(xpp));
9990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9991        res.setOutcomeElement(parseEnumeration(xpp, ExplanationOfBenefit.RemittanceOutcome.NULL, new ExplanationOfBenefit.RemittanceOutcomeEnumFactory()));
9992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
9993        res.setDispositionElement(parseString(xpp));
9994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
9995        res.getPreAuthRef().add(parseString(xpp));
9996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRefPeriod")) {
9997        res.getPreAuthRefPeriod().add(parsePeriod(xpp));
9998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
9999        res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp, res));
10000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
10001        res.getSupportingInfo().add(parseExplanationOfBenefitSupportingInformationComponent(xpp, res));
10002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
10003        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
10004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
10005        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
10006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
10007        res.setPrecedenceElement(parsePositiveInt(xpp));
10008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
10009        res.getInsurance().add(parseExplanationOfBenefitInsuranceComponent(xpp, res));
10010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
10011        res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp, res));
10012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10013        res.getItem().add(parseExplanationOfBenefitItemComponent(xpp, res));
10014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
10015        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
10016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10017        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, res));
10018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
10019        res.getTotal().add(parseExplanationOfBenefitTotalComponent(xpp, res));
10020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
10021        res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp, res));
10022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
10023        res.setFormCode(parseCodeableConcept(xpp));
10024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
10025        res.setForm(parseAttachment(xpp));
10026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
10027        res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp, res));
10028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
10029        res.setBenefitPeriod(parsePeriod(xpp));
10030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
10031        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
10032      } else if (!parseDomainResourceContent(eventType, xpp, res))
10033        return false;
10034    return true;
10035  }
10036
10037  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10038    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
10039    parseBackboneAttributes(xpp, res);
10040    next(xpp);
10041    int eventType = nextNoWhitespace(xpp);
10042    while (eventType != XmlPullParser.END_TAG) {
10043  if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, owner, res))
10044        unknownContent(xpp);
10045      eventType = nextNoWhitespace(xpp);
10046    }
10047    next(xpp);
10048    parseElementClose(res);
10049    return res;
10050  }
10051
10052  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10053      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
10054        res.setClaim(parseReference(xpp));
10055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
10056        res.setRelationship(parseCodeableConcept(xpp));
10057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
10058        res.setReference(parseIdentifier(xpp));
10059      } else if (!parseBackboneElementContent(eventType, xpp, res))
10060        return false;
10061    return true;
10062  }
10063
10064  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10065    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
10066    parseBackboneAttributes(xpp, res);
10067    next(xpp);
10068    int eventType = nextNoWhitespace(xpp);
10069    while (eventType != XmlPullParser.END_TAG) {
10070  if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, owner, res))
10071        unknownContent(xpp);
10072      eventType = nextNoWhitespace(xpp);
10073    }
10074    next(xpp);
10075    parseElementClose(res);
10076    return res;
10077  }
10078
10079  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10080      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10081        res.setType(parseCodeableConcept(xpp));
10082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
10083        res.setParty(parseReference(xpp));
10084      } else if (!parseBackboneElementContent(eventType, xpp, res))
10085        return false;
10086    return true;
10087  }
10088
10089  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10090    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
10091    parseBackboneAttributes(xpp, res);
10092    next(xpp);
10093    int eventType = nextNoWhitespace(xpp);
10094    while (eventType != XmlPullParser.END_TAG) {
10095  if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, owner, res))
10096        unknownContent(xpp);
10097      eventType = nextNoWhitespace(xpp);
10098    }
10099    next(xpp);
10100    parseElementClose(res);
10101    return res;
10102  }
10103
10104  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10105      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10106        res.setSequenceElement(parsePositiveInt(xpp));
10107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10108        res.setProvider(parseReference(xpp));
10109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
10110        res.setResponsibleElement(parseBoolean(xpp));
10111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
10112        res.setRole(parseCodeableConcept(xpp));
10113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
10114        res.setQualification(parseCodeableConcept(xpp));
10115      } else if (!parseBackboneElementContent(eventType, xpp, res))
10116        return false;
10117    return true;
10118  }
10119
10120  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10121    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
10122    parseBackboneAttributes(xpp, res);
10123    next(xpp);
10124    int eventType = nextNoWhitespace(xpp);
10125    while (eventType != XmlPullParser.END_TAG) {
10126  if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, owner, res))
10127        unknownContent(xpp);
10128      eventType = nextNoWhitespace(xpp);
10129    }
10130    next(xpp);
10131    parseElementClose(res);
10132    return res;
10133  }
10134
10135  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10137        res.setSequenceElement(parsePositiveInt(xpp));
10138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10139        res.setCategory(parseCodeableConcept(xpp));
10140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10141        res.setCode(parseCodeableConcept(xpp));
10142      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
10143        res.setTiming(parseType("timing", xpp));
10144      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
10145        res.setValue(parseType("value", xpp));
10146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
10147        res.setReason(parseCoding(xpp));
10148      } else if (!parseBackboneElementContent(eventType, xpp, res))
10149        return false;
10150    return true;
10151  }
10152
10153  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10154    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
10155    parseBackboneAttributes(xpp, res);
10156    next(xpp);
10157    int eventType = nextNoWhitespace(xpp);
10158    while (eventType != XmlPullParser.END_TAG) {
10159  if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, owner, res))
10160        unknownContent(xpp);
10161      eventType = nextNoWhitespace(xpp);
10162    }
10163    next(xpp);
10164    parseElementClose(res);
10165    return res;
10166  }
10167
10168  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10169      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10170        res.setSequenceElement(parsePositiveInt(xpp));
10171      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
10172        res.setDiagnosis(parseType("diagnosis", xpp));
10173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10174        res.getType().add(parseCodeableConcept(xpp));
10175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
10176        res.setOnAdmission(parseCodeableConcept(xpp));
10177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
10178        res.setPackageCode(parseCodeableConcept(xpp));
10179      } else if (!parseBackboneElementContent(eventType, xpp, res))
10180        return false;
10181    return true;
10182  }
10183
10184  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10185    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
10186    parseBackboneAttributes(xpp, res);
10187    next(xpp);
10188    int eventType = nextNoWhitespace(xpp);
10189    while (eventType != XmlPullParser.END_TAG) {
10190  if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, owner, res))
10191        unknownContent(xpp);
10192      eventType = nextNoWhitespace(xpp);
10193    }
10194    next(xpp);
10195    parseElementClose(res);
10196    return res;
10197  }
10198
10199  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10200      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10201        res.setSequenceElement(parsePositiveInt(xpp));
10202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10203        res.getType().add(parseCodeableConcept(xpp));
10204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10205        res.setDateElement(parseDateTime(xpp));
10206      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
10207        res.setProcedure(parseType("procedure", xpp));
10208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10209        res.getUdi().add(parseReference(xpp));
10210      } else if (!parseBackboneElementContent(eventType, xpp, res))
10211        return false;
10212    return true;
10213  }
10214
10215  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10216    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
10217    parseBackboneAttributes(xpp, res);
10218    next(xpp);
10219    int eventType = nextNoWhitespace(xpp);
10220    while (eventType != XmlPullParser.END_TAG) {
10221  if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, owner, res))
10222        unknownContent(xpp);
10223      eventType = nextNoWhitespace(xpp);
10224    }
10225    next(xpp);
10226    parseElementClose(res);
10227    return res;
10228  }
10229
10230  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10231      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
10232        res.setFocalElement(parseBoolean(xpp));
10233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
10234        res.setCoverage(parseReference(xpp));
10235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
10236        res.getPreAuthRef().add(parseString(xpp));
10237      } else if (!parseBackboneElementContent(eventType, xpp, res))
10238        return false;
10239    return true;
10240  }
10241
10242  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10243    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
10244    parseBackboneAttributes(xpp, res);
10245    next(xpp);
10246    int eventType = nextNoWhitespace(xpp);
10247    while (eventType != XmlPullParser.END_TAG) {
10248  if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, owner, res))
10249        unknownContent(xpp);
10250      eventType = nextNoWhitespace(xpp);
10251    }
10252    next(xpp);
10253    parseElementClose(res);
10254    return res;
10255  }
10256
10257  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10259        res.setDateElement(parseDate(xpp));
10260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10261        res.setType(parseCodeableConcept(xpp));
10262      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10263        res.setLocation(parseType("location", xpp));
10264      } else if (!parseBackboneElementContent(eventType, xpp, res))
10265        return false;
10266    return true;
10267  }
10268
10269  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10270    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
10271    parseBackboneAttributes(xpp, res);
10272    next(xpp);
10273    int eventType = nextNoWhitespace(xpp);
10274    while (eventType != XmlPullParser.END_TAG) {
10275  if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, owner, res))
10276        unknownContent(xpp);
10277      eventType = nextNoWhitespace(xpp);
10278    }
10279    next(xpp);
10280    parseElementClose(res);
10281    return res;
10282  }
10283
10284  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10286        res.setSequenceElement(parsePositiveInt(xpp));
10287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
10288        res.getCareTeamSequence().add(parsePositiveInt(xpp));
10289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
10290        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
10291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
10292        res.getProcedureSequence().add(parsePositiveInt(xpp));
10293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
10294        res.getInformationSequence().add(parsePositiveInt(xpp));
10295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10296        res.setRevenue(parseCodeableConcept(xpp));
10297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10298        res.setCategory(parseCodeableConcept(xpp));
10299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10300        res.setProductOrService(parseCodeableConcept(xpp));
10301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10302        res.getModifier().add(parseCodeableConcept(xpp));
10303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10304        res.getProgramCode().add(parseCodeableConcept(xpp));
10305      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
10306        res.setServiced(parseType("serviced", xpp));
10307      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10308        res.setLocation(parseType("location", xpp));
10309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10310        res.setQuantity(parseQuantity(xpp));
10311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10312        res.setUnitPrice(parseMoney(xpp));
10313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10314        res.setFactorElement(parseDecimal(xpp));
10315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10316        res.setNet(parseMoney(xpp));
10317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10318        res.getUdi().add(parseReference(xpp));
10319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10320        res.setBodySite(parseCodeableConcept(xpp));
10321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
10322        res.getSubSite().add(parseCodeableConcept(xpp));
10323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10324        res.getEncounter().add(parseReference(xpp));
10325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10326        res.getNoteNumber().add(parsePositiveInt(xpp));
10327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10328        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10330        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
10331      } else if (!parseBackboneElementContent(eventType, xpp, res))
10332        return false;
10333    return true;
10334  }
10335
10336  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10337    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
10338    parseBackboneAttributes(xpp, res);
10339    next(xpp);
10340    int eventType = nextNoWhitespace(xpp);
10341    while (eventType != XmlPullParser.END_TAG) {
10342  if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, owner, res))
10343        unknownContent(xpp);
10344      eventType = nextNoWhitespace(xpp);
10345    }
10346    next(xpp);
10347    parseElementClose(res);
10348    return res;
10349  }
10350
10351  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10352      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10353        res.setCategory(parseCodeableConcept(xpp));
10354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
10355        res.setReason(parseCodeableConcept(xpp));
10356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10357        res.setAmount(parseMoney(xpp));
10358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10359        res.setValueElement(parseDecimal(xpp));
10360      } else if (!parseBackboneElementContent(eventType, xpp, res))
10361        return false;
10362    return true;
10363  }
10364
10365  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10366    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
10367    parseBackboneAttributes(xpp, res);
10368    next(xpp);
10369    int eventType = nextNoWhitespace(xpp);
10370    while (eventType != XmlPullParser.END_TAG) {
10371  if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, owner, res))
10372        unknownContent(xpp);
10373      eventType = nextNoWhitespace(xpp);
10374    }
10375    next(xpp);
10376    parseElementClose(res);
10377    return res;
10378  }
10379
10380  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10381      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10382        res.setSequenceElement(parsePositiveInt(xpp));
10383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10384        res.setRevenue(parseCodeableConcept(xpp));
10385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10386        res.setCategory(parseCodeableConcept(xpp));
10387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10388        res.setProductOrService(parseCodeableConcept(xpp));
10389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10390        res.getModifier().add(parseCodeableConcept(xpp));
10391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10392        res.getProgramCode().add(parseCodeableConcept(xpp));
10393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10394        res.setQuantity(parseQuantity(xpp));
10395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10396        res.setUnitPrice(parseMoney(xpp));
10397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10398        res.setFactorElement(parseDecimal(xpp));
10399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10400        res.setNet(parseMoney(xpp));
10401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10402        res.getUdi().add(parseReference(xpp));
10403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10404        res.getNoteNumber().add(parsePositiveInt(xpp));
10405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10406        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
10408        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
10409      } else if (!parseBackboneElementContent(eventType, xpp, res))
10410        return false;
10411    return true;
10412  }
10413
10414  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10415    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
10416    parseBackboneAttributes(xpp, res);
10417    next(xpp);
10418    int eventType = nextNoWhitespace(xpp);
10419    while (eventType != XmlPullParser.END_TAG) {
10420  if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, owner, res))
10421        unknownContent(xpp);
10422      eventType = nextNoWhitespace(xpp);
10423    }
10424    next(xpp);
10425    parseElementClose(res);
10426    return res;
10427  }
10428
10429  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10431        res.setSequenceElement(parsePositiveInt(xpp));
10432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10433        res.setRevenue(parseCodeableConcept(xpp));
10434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10435        res.setCategory(parseCodeableConcept(xpp));
10436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10437        res.setProductOrService(parseCodeableConcept(xpp));
10438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10439        res.getModifier().add(parseCodeableConcept(xpp));
10440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10441        res.getProgramCode().add(parseCodeableConcept(xpp));
10442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10443        res.setQuantity(parseQuantity(xpp));
10444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10445        res.setUnitPrice(parseMoney(xpp));
10446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10447        res.setFactorElement(parseDecimal(xpp));
10448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10449        res.setNet(parseMoney(xpp));
10450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10451        res.getUdi().add(parseReference(xpp));
10452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10453        res.getNoteNumber().add(parsePositiveInt(xpp));
10454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10455        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10456      } else if (!parseBackboneElementContent(eventType, xpp, res))
10457        return false;
10458    return true;
10459  }
10460
10461  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10462    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
10463    parseBackboneAttributes(xpp, res);
10464    next(xpp);
10465    int eventType = nextNoWhitespace(xpp);
10466    while (eventType != XmlPullParser.END_TAG) {
10467  if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, owner, res))
10468        unknownContent(xpp);
10469      eventType = nextNoWhitespace(xpp);
10470    }
10471    next(xpp);
10472    parseElementClose(res);
10473    return res;
10474  }
10475
10476  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
10478        res.getItemSequence().add(parsePositiveInt(xpp));
10479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
10480        res.getDetailSequence().add(parsePositiveInt(xpp));
10481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
10482        res.getSubDetailSequence().add(parsePositiveInt(xpp));
10483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10484        res.getProvider().add(parseReference(xpp));
10485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10486        res.setProductOrService(parseCodeableConcept(xpp));
10487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10488        res.getModifier().add(parseCodeableConcept(xpp));
10489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10490        res.getProgramCode().add(parseCodeableConcept(xpp));
10491      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
10492        res.setServiced(parseType("serviced", xpp));
10493      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10494        res.setLocation(parseType("location", xpp));
10495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10496        res.setQuantity(parseQuantity(xpp));
10497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10498        res.setUnitPrice(parseMoney(xpp));
10499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10500        res.setFactorElement(parseDecimal(xpp));
10501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10502        res.setNet(parseMoney(xpp));
10503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10504        res.setBodySite(parseCodeableConcept(xpp));
10505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
10506        res.getSubSite().add(parseCodeableConcept(xpp));
10507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10508        res.getNoteNumber().add(parsePositiveInt(xpp));
10509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10510        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10512        res.getDetail().add(parseExplanationOfBenefitAddedItemDetailComponent(xpp, owner));
10513      } else if (!parseBackboneElementContent(eventType, xpp, res))
10514        return false;
10515    return true;
10516  }
10517
10518  protected ExplanationOfBenefit.AddedItemDetailComponent parseExplanationOfBenefitAddedItemDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10519    ExplanationOfBenefit.AddedItemDetailComponent res = new ExplanationOfBenefit.AddedItemDetailComponent();
10520    parseBackboneAttributes(xpp, res);
10521    next(xpp);
10522    int eventType = nextNoWhitespace(xpp);
10523    while (eventType != XmlPullParser.END_TAG) {
10524  if (!parseExplanationOfBenefitAddedItemDetailComponentContent(eventType, xpp, owner, res))
10525        unknownContent(xpp);
10526      eventType = nextNoWhitespace(xpp);
10527    }
10528    next(xpp);
10529    parseElementClose(res);
10530    return res;
10531  }
10532
10533  protected boolean parseExplanationOfBenefitAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10534      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10535        res.setProductOrService(parseCodeableConcept(xpp));
10536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10537        res.getModifier().add(parseCodeableConcept(xpp));
10538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10539        res.setQuantity(parseQuantity(xpp));
10540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10541        res.setUnitPrice(parseMoney(xpp));
10542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10543        res.setFactorElement(parseDecimal(xpp));
10544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10545        res.setNet(parseMoney(xpp));
10546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10547        res.getNoteNumber().add(parsePositiveInt(xpp));
10548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10549        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
10551        res.getSubDetail().add(parseExplanationOfBenefitAddedItemDetailSubDetailComponent(xpp, owner));
10552      } else if (!parseBackboneElementContent(eventType, xpp, res))
10553        return false;
10554    return true;
10555  }
10556
10557  protected ExplanationOfBenefit.AddedItemDetailSubDetailComponent parseExplanationOfBenefitAddedItemDetailSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10558    ExplanationOfBenefit.AddedItemDetailSubDetailComponent res = new ExplanationOfBenefit.AddedItemDetailSubDetailComponent();
10559    parseBackboneAttributes(xpp, res);
10560    next(xpp);
10561    int eventType = nextNoWhitespace(xpp);
10562    while (eventType != XmlPullParser.END_TAG) {
10563  if (!parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(eventType, xpp, owner, res))
10564        unknownContent(xpp);
10565      eventType = nextNoWhitespace(xpp);
10566    }
10567    next(xpp);
10568    parseElementClose(res);
10569    return res;
10570  }
10571
10572  protected boolean parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemDetailSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10573      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10574        res.setProductOrService(parseCodeableConcept(xpp));
10575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10576        res.getModifier().add(parseCodeableConcept(xpp));
10577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10578        res.setQuantity(parseQuantity(xpp));
10579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10580        res.setUnitPrice(parseMoney(xpp));
10581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10582        res.setFactorElement(parseDecimal(xpp));
10583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10584        res.setNet(parseMoney(xpp));
10585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10586        res.getNoteNumber().add(parsePositiveInt(xpp));
10587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10588        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10589      } else if (!parseBackboneElementContent(eventType, xpp, res))
10590        return false;
10591    return true;
10592  }
10593
10594  protected ExplanationOfBenefit.TotalComponent parseExplanationOfBenefitTotalComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10595    ExplanationOfBenefit.TotalComponent res = new ExplanationOfBenefit.TotalComponent();
10596    parseBackboneAttributes(xpp, res);
10597    next(xpp);
10598    int eventType = nextNoWhitespace(xpp);
10599    while (eventType != XmlPullParser.END_TAG) {
10600  if (!parseExplanationOfBenefitTotalComponentContent(eventType, xpp, owner, res))
10601        unknownContent(xpp);
10602      eventType = nextNoWhitespace(xpp);
10603    }
10604    next(xpp);
10605    parseElementClose(res);
10606    return res;
10607  }
10608
10609  protected boolean parseExplanationOfBenefitTotalComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10610      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10611        res.setCategory(parseCodeableConcept(xpp));
10612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10613        res.setAmount(parseMoney(xpp));
10614      } else if (!parseBackboneElementContent(eventType, xpp, res))
10615        return false;
10616    return true;
10617  }
10618
10619  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10620    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
10621    parseBackboneAttributes(xpp, res);
10622    next(xpp);
10623    int eventType = nextNoWhitespace(xpp);
10624    while (eventType != XmlPullParser.END_TAG) {
10625  if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, owner, res))
10626        unknownContent(xpp);
10627      eventType = nextNoWhitespace(xpp);
10628    }
10629    next(xpp);
10630    parseElementClose(res);
10631    return res;
10632  }
10633
10634  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10635      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10636        res.setType(parseCodeableConcept(xpp));
10637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
10638        res.setAdjustment(parseMoney(xpp));
10639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
10640        res.setAdjustmentReason(parseCodeableConcept(xpp));
10641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10642        res.setDateElement(parseDate(xpp));
10643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10644        res.setAmount(parseMoney(xpp));
10645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10646        res.setIdentifier(parseIdentifier(xpp));
10647      } else if (!parseBackboneElementContent(eventType, xpp, res))
10648        return false;
10649    return true;
10650  }
10651
10652  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10653    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
10654    parseBackboneAttributes(xpp, res);
10655    next(xpp);
10656    int eventType = nextNoWhitespace(xpp);
10657    while (eventType != XmlPullParser.END_TAG) {
10658  if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, owner, res))
10659        unknownContent(xpp);
10660      eventType = nextNoWhitespace(xpp);
10661    }
10662    next(xpp);
10663    parseElementClose(res);
10664    return res;
10665  }
10666
10667  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10668      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
10669        res.setNumberElement(parsePositiveInt(xpp));
10670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10671        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
10672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
10673        res.setTextElement(parseString(xpp));
10674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
10675        res.setLanguage(parseCodeableConcept(xpp));
10676      } else if (!parseBackboneElementContent(eventType, xpp, res))
10677        return false;
10678    return true;
10679  }
10680
10681  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10682    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
10683    parseBackboneAttributes(xpp, res);
10684    next(xpp);
10685    int eventType = nextNoWhitespace(xpp);
10686    while (eventType != XmlPullParser.END_TAG) {
10687  if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, owner, res))
10688        unknownContent(xpp);
10689      eventType = nextNoWhitespace(xpp);
10690    }
10691    next(xpp);
10692    parseElementClose(res);
10693    return res;
10694  }
10695
10696  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10697      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10698        res.setCategory(parseCodeableConcept(xpp));
10699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
10700        res.setExcludedElement(parseBoolean(xpp));
10701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10702        res.setNameElement(parseString(xpp));
10703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10704        res.setDescriptionElement(parseString(xpp));
10705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
10706        res.setNetwork(parseCodeableConcept(xpp));
10707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
10708        res.setUnit(parseCodeableConcept(xpp));
10709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
10710        res.setTerm(parseCodeableConcept(xpp));
10711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
10712        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
10713      } else if (!parseBackboneElementContent(eventType, xpp, res))
10714        return false;
10715    return true;
10716  }
10717
10718  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10719    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
10720    parseBackboneAttributes(xpp, res);
10721    next(xpp);
10722    int eventType = nextNoWhitespace(xpp);
10723    while (eventType != XmlPullParser.END_TAG) {
10724  if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, owner, res))
10725        unknownContent(xpp);
10726      eventType = nextNoWhitespace(xpp);
10727    }
10728    next(xpp);
10729    parseElementClose(res);
10730    return res;
10731  }
10732
10733  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10734      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10735        res.setType(parseCodeableConcept(xpp));
10736      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
10737        res.setAllowed(parseType("allowed", xpp));
10738      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
10739        res.setUsed(parseType("used", xpp));
10740      } else if (!parseBackboneElementContent(eventType, xpp, res))
10741        return false;
10742    return true;
10743  }
10744
10745  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10746    FamilyMemberHistory res = new FamilyMemberHistory();
10747    parseDomainResourceAttributes(xpp, res);
10748    next(xpp);
10749    int eventType = nextNoWhitespace(xpp);
10750    while (eventType != XmlPullParser.END_TAG) {
10751  if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
10752        unknownContent(xpp);
10753      eventType = nextNoWhitespace(xpp);
10754    }
10755    next(xpp);
10756    parseElementClose(res);
10757    return res;
10758  }
10759
10760  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
10761      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10762        res.getIdentifier().add(parseIdentifier(xpp));
10763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
10764        res.getInstantiatesCanonical().add(parseCanonical(xpp));
10765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
10766        res.getInstantiatesUri().add(parseUri(xpp));
10767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10768        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
10769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
10770        res.setDataAbsentReason(parseCodeableConcept(xpp));
10771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10772        res.setPatient(parseReference(xpp));
10773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10774        res.setDateElement(parseDateTime(xpp));
10775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10776        res.setNameElement(parseString(xpp));
10777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
10778        res.setRelationship(parseCodeableConcept(xpp));
10779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sex")) {
10780        res.setSex(parseCodeableConcept(xpp));
10781      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
10782        res.setBorn(parseType("born", xpp));
10783      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
10784        res.setAge(parseType("age", xpp));
10785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
10786        res.setEstimatedAgeElement(parseBoolean(xpp));
10787      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
10788        res.setDeceased(parseType("deceased", xpp));
10789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10790        res.getReasonCode().add(parseCodeableConcept(xpp));
10791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10792        res.getReasonReference().add(parseReference(xpp));
10793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10794        res.getNote().add(parseAnnotation(xpp));
10795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
10796        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
10797      } else if (!parseDomainResourceContent(eventType, xpp, res))
10798        return false;
10799    return true;
10800  }
10801
10802  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
10803    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
10804    parseBackboneAttributes(xpp, res);
10805    next(xpp);
10806    int eventType = nextNoWhitespace(xpp);
10807    while (eventType != XmlPullParser.END_TAG) {
10808  if (!parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(eventType, xpp, owner, res))
10809        unknownContent(xpp);
10810      eventType = nextNoWhitespace(xpp);
10811    }
10812    next(xpp);
10813    parseElementClose(res);
10814    return res;
10815  }
10816
10817  protected boolean parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory owner, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10819        res.setCode(parseCodeableConcept(xpp));
10820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
10821        res.setOutcome(parseCodeableConcept(xpp));
10822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributedToDeath")) {
10823        res.setContributedToDeathElement(parseBoolean(xpp));
10824      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
10825        res.setOnset(parseType("onset", xpp));
10826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10827        res.getNote().add(parseAnnotation(xpp));
10828      } else if (!parseBackboneElementContent(eventType, xpp, res))
10829        return false;
10830    return true;
10831  }
10832
10833  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10834    Flag res = new Flag();
10835    parseDomainResourceAttributes(xpp, res);
10836    next(xpp);
10837    int eventType = nextNoWhitespace(xpp);
10838    while (eventType != XmlPullParser.END_TAG) {
10839  if (!parseFlagContent(eventType, xpp, res))
10840        unknownContent(xpp);
10841      eventType = nextNoWhitespace(xpp);
10842    }
10843    next(xpp);
10844    parseElementClose(res);
10845    return res;
10846  }
10847
10848  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
10849      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10850        res.getIdentifier().add(parseIdentifier(xpp));
10851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10852        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
10853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10854        res.getCategory().add(parseCodeableConcept(xpp));
10855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10856        res.setCode(parseCodeableConcept(xpp));
10857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10858        res.setSubject(parseReference(xpp));
10859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10860        res.setPeriod(parsePeriod(xpp));
10861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10862        res.setEncounter(parseReference(xpp));
10863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10864        res.setAuthor(parseReference(xpp));
10865      } else if (!parseDomainResourceContent(eventType, xpp, res))
10866        return false;
10867    return true;
10868  }
10869
10870  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10871    Goal res = new Goal();
10872    parseDomainResourceAttributes(xpp, res);
10873    next(xpp);
10874    int eventType = nextNoWhitespace(xpp);
10875    while (eventType != XmlPullParser.END_TAG) {
10876  if (!parseGoalContent(eventType, xpp, res))
10877        unknownContent(xpp);
10878      eventType = nextNoWhitespace(xpp);
10879    }
10880    next(xpp);
10881    parseElementClose(res);
10882    return res;
10883  }
10884
10885  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
10886      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10887        res.getIdentifier().add(parseIdentifier(xpp));
10888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycleStatus")) {
10889        res.setLifecycleStatusElement(parseEnumeration(xpp, Goal.GoalLifecycleStatus.NULL, new Goal.GoalLifecycleStatusEnumFactory()));
10890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("achievementStatus")) {
10891        res.setAchievementStatus(parseCodeableConcept(xpp));
10892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10893        res.getCategory().add(parseCodeableConcept(xpp));
10894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
10895        res.setPriority(parseCodeableConcept(xpp));
10896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10897        res.setDescription(parseCodeableConcept(xpp));
10898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10899        res.setSubject(parseReference(xpp));
10900      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
10901        res.setStart(parseType("start", xpp));
10902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
10903        res.getTarget().add(parseGoalGoalTargetComponent(xpp, res));
10904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
10905        res.setStatusDateElement(parseDate(xpp));
10906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
10907        res.setStatusReasonElement(parseString(xpp));
10908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
10909        res.setExpressedBy(parseReference(xpp));
10910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
10911        res.getAddresses().add(parseReference(xpp));
10912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10913        res.getNote().add(parseAnnotation(xpp));
10914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
10915        res.getOutcomeCode().add(parseCodeableConcept(xpp));
10916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
10917        res.getOutcomeReference().add(parseReference(xpp));
10918      } else if (!parseDomainResourceContent(eventType, xpp, res))
10919        return false;
10920    return true;
10921  }
10922
10923  protected Goal.GoalTargetComponent parseGoalGoalTargetComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
10924    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
10925    parseBackboneAttributes(xpp, res);
10926    next(xpp);
10927    int eventType = nextNoWhitespace(xpp);
10928    while (eventType != XmlPullParser.END_TAG) {
10929  if (!parseGoalGoalTargetComponentContent(eventType, xpp, owner, res))
10930        unknownContent(xpp);
10931      eventType = nextNoWhitespace(xpp);
10932    }
10933    next(xpp);
10934    parseElementClose(res);
10935    return res;
10936  }
10937
10938  protected boolean parseGoalGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal owner, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10939      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
10940        res.setMeasure(parseCodeableConcept(xpp));
10941      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
10942        res.setDetail(parseType("detail", xpp));
10943      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
10944        res.setDue(parseType("due", xpp));
10945      } else if (!parseBackboneElementContent(eventType, xpp, res))
10946        return false;
10947    return true;
10948  }
10949
10950  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10951    GraphDefinition res = new GraphDefinition();
10952    parseDomainResourceAttributes(xpp, res);
10953    next(xpp);
10954    int eventType = nextNoWhitespace(xpp);
10955    while (eventType != XmlPullParser.END_TAG) {
10956  if (!parseGraphDefinitionContent(eventType, xpp, res))
10957        unknownContent(xpp);
10958      eventType = nextNoWhitespace(xpp);
10959    }
10960    next(xpp);
10961    parseElementClose(res);
10962    return res;
10963  }
10964
10965  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
10966      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10967        res.setUrlElement(parseUri(xpp));
10968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10969        res.setVersionElement(parseString(xpp));
10970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10971        res.setNameElement(parseString(xpp));
10972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10973        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10975        res.setExperimentalElement(parseBoolean(xpp));
10976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10977        res.setDateElement(parseDateTime(xpp));
10978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10979        res.setPublisherElement(parseString(xpp));
10980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10981        res.getContact().add(parseContactDetail(xpp));
10982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10983        res.setDescriptionElement(parseMarkdown(xpp));
10984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10985        res.getUseContext().add(parseUsageContext(xpp));
10986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10987        res.getJurisdiction().add(parseCodeableConcept(xpp));
10988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10989        res.setPurposeElement(parseMarkdown(xpp));
10990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
10991        res.setStartElement(parseCode(xpp));
10992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10993        res.setProfileElement(parseCanonical(xpp));
10994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
10995        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, res));
10996      } else if (!parseDomainResourceContent(eventType, xpp, res))
10997        return false;
10998    return true;
10999  }
11000
11001  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionGraphDefinitionLinkComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11002    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
11003    parseBackboneAttributes(xpp, res);
11004    next(xpp);
11005    int eventType = nextNoWhitespace(xpp);
11006    while (eventType != XmlPullParser.END_TAG) {
11007  if (!parseGraphDefinitionGraphDefinitionLinkComponentContent(eventType, xpp, owner, res))
11008        unknownContent(xpp);
11009      eventType = nextNoWhitespace(xpp);
11010    }
11011    next(xpp);
11012    parseElementClose(res);
11013    return res;
11014  }
11015
11016  protected boolean parseGraphDefinitionGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11017      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
11018        res.setPathElement(parseString(xpp));
11019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
11020        res.setSliceNameElement(parseString(xpp));
11021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
11022        res.setMinElement(parseInteger(xpp));
11023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
11024        res.setMaxElement(parseString(xpp));
11025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11026        res.setDescriptionElement(parseString(xpp));
11027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11028        res.getTarget().add(parseGraphDefinitionGraphDefinitionLinkTargetComponent(xpp, owner));
11029      } else if (!parseBackboneElementContent(eventType, xpp, res))
11030        return false;
11031    return true;
11032  }
11033
11034  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionGraphDefinitionLinkTargetComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11035    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
11036    parseBackboneAttributes(xpp, res);
11037    next(xpp);
11038    int eventType = nextNoWhitespace(xpp);
11039    while (eventType != XmlPullParser.END_TAG) {
11040  if (!parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(eventType, xpp, owner, res))
11041        unknownContent(xpp);
11042      eventType = nextNoWhitespace(xpp);
11043    }
11044    next(xpp);
11045    parseElementClose(res);
11046    return res;
11047  }
11048
11049  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11050      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11051        res.setTypeElement(parseCode(xpp));
11052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
11053        res.setParamsElement(parseString(xpp));
11054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11055        res.setProfileElement(parseCanonical(xpp));
11056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
11057        res.getCompartment().add(parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(xpp, owner));
11058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
11059        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, owner));
11060      } else if (!parseBackboneElementContent(eventType, xpp, res))
11061        return false;
11062    return true;
11063  }
11064
11065  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11066    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
11067    parseBackboneAttributes(xpp, res);
11068    next(xpp);
11069    int eventType = nextNoWhitespace(xpp);
11070    while (eventType != XmlPullParser.END_TAG) {
11071  if (!parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, owner, res))
11072        unknownContent(xpp);
11073      eventType = nextNoWhitespace(xpp);
11074    }
11075    next(xpp);
11076    parseElementClose(res);
11077    return res;
11078  }
11079
11080  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11081      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
11082        res.setUseElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentUse.NULL, new GraphDefinition.GraphCompartmentUseEnumFactory()));
11083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11084        res.setCodeElement(parseEnumeration(xpp, GraphDefinition.CompartmentCode.NULL, new GraphDefinition.CompartmentCodeEnumFactory()));
11085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
11086        res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
11087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
11088        res.setExpressionElement(parseString(xpp));
11089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11090        res.setDescriptionElement(parseString(xpp));
11091      } else if (!parseBackboneElementContent(eventType, xpp, res))
11092        return false;
11093    return true;
11094  }
11095
11096  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11097    Group res = new Group();
11098    parseDomainResourceAttributes(xpp, res);
11099    next(xpp);
11100    int eventType = nextNoWhitespace(xpp);
11101    while (eventType != XmlPullParser.END_TAG) {
11102  if (!parseGroupContent(eventType, xpp, res))
11103        unknownContent(xpp);
11104      eventType = nextNoWhitespace(xpp);
11105    }
11106    next(xpp);
11107    parseElementClose(res);
11108    return res;
11109  }
11110
11111  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
11112      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11113        res.getIdentifier().add(parseIdentifier(xpp));
11114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
11115        res.setActiveElement(parseBoolean(xpp));
11116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11117        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
11118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
11119        res.setActualElement(parseBoolean(xpp));
11120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11121        res.setCode(parseCodeableConcept(xpp));
11122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11123        res.setNameElement(parseString(xpp));
11124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11125        res.setQuantityElement(parseUnsignedInt(xpp));
11126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingEntity")) {
11127        res.setManagingEntity(parseReference(xpp));
11128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
11129        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
11130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
11131        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
11132      } else if (!parseDomainResourceContent(eventType, xpp, res))
11133        return false;
11134    return true;
11135  }
11136
11137  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
11138    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
11139    parseBackboneAttributes(xpp, res);
11140    next(xpp);
11141    int eventType = nextNoWhitespace(xpp);
11142    while (eventType != XmlPullParser.END_TAG) {
11143  if (!parseGroupGroupCharacteristicComponentContent(eventType, xpp, owner, res))
11144        unknownContent(xpp);
11145      eventType = nextNoWhitespace(xpp);
11146    }
11147    next(xpp);
11148    parseElementClose(res);
11149    return res;
11150  }
11151
11152  protected boolean parseGroupGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11153      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11154        res.setCode(parseCodeableConcept(xpp));
11155      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11156        res.setValue(parseType("value", xpp));
11157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
11158        res.setExcludeElement(parseBoolean(xpp));
11159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11160        res.setPeriod(parsePeriod(xpp));
11161      } else if (!parseBackboneElementContent(eventType, xpp, res))
11162        return false;
11163    return true;
11164  }
11165
11166  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
11167    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
11168    parseBackboneAttributes(xpp, res);
11169    next(xpp);
11170    int eventType = nextNoWhitespace(xpp);
11171    while (eventType != XmlPullParser.END_TAG) {
11172  if (!parseGroupGroupMemberComponentContent(eventType, xpp, owner, res))
11173        unknownContent(xpp);
11174      eventType = nextNoWhitespace(xpp);
11175    }
11176    next(xpp);
11177    parseElementClose(res);
11178    return res;
11179  }
11180
11181  protected boolean parseGroupGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11182      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
11183        res.setEntity(parseReference(xpp));
11184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11185        res.setPeriod(parsePeriod(xpp));
11186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
11187        res.setInactiveElement(parseBoolean(xpp));
11188      } else if (!parseBackboneElementContent(eventType, xpp, res))
11189        return false;
11190    return true;
11191  }
11192
11193  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11194    GuidanceResponse res = new GuidanceResponse();
11195    parseDomainResourceAttributes(xpp, res);
11196    next(xpp);
11197    int eventType = nextNoWhitespace(xpp);
11198    while (eventType != XmlPullParser.END_TAG) {
11199  if (!parseGuidanceResponseContent(eventType, xpp, res))
11200        unknownContent(xpp);
11201      eventType = nextNoWhitespace(xpp);
11202    }
11203    next(xpp);
11204    parseElementClose(res);
11205    return res;
11206  }
11207
11208  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
11209      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestIdentifier")) {
11210        res.setRequestIdentifier(parseIdentifier(xpp));
11211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11212        res.getIdentifier().add(parseIdentifier(xpp));
11213      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "module")) {
11214        res.setModule(parseType("module", xpp));
11215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11216        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
11217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11218        res.setSubject(parseReference(xpp));
11219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11220        res.setEncounter(parseReference(xpp));
11221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
11222        res.setOccurrenceDateTimeElement(parseDateTime(xpp));
11223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11224        res.setPerformer(parseReference(xpp));
11225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11226        res.getReasonCode().add(parseCodeableConcept(xpp));
11227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11228        res.getReasonReference().add(parseReference(xpp));
11229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11230        res.getNote().add(parseAnnotation(xpp));
11231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
11232        res.getEvaluationMessage().add(parseReference(xpp));
11233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
11234        res.setOutputParameters(parseReference(xpp));
11235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
11236        res.setResult(parseReference(xpp));
11237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
11238        res.getDataRequirement().add(parseDataRequirement(xpp));
11239      } else if (!parseDomainResourceContent(eventType, xpp, res))
11240        return false;
11241    return true;
11242  }
11243
11244  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11245    HealthcareService res = new HealthcareService();
11246    parseDomainResourceAttributes(xpp, res);
11247    next(xpp);
11248    int eventType = nextNoWhitespace(xpp);
11249    while (eventType != XmlPullParser.END_TAG) {
11250  if (!parseHealthcareServiceContent(eventType, xpp, res))
11251        unknownContent(xpp);
11252      eventType = nextNoWhitespace(xpp);
11253    }
11254    next(xpp);
11255    parseElementClose(res);
11256    return res;
11257  }
11258
11259  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
11260      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11261        res.getIdentifier().add(parseIdentifier(xpp));
11262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
11263        res.setActiveElement(parseBoolean(xpp));
11264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
11265        res.setProvidedBy(parseReference(xpp));
11266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11267        res.getCategory().add(parseCodeableConcept(xpp));
11268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11269        res.getType().add(parseCodeableConcept(xpp));
11270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
11271        res.getSpecialty().add(parseCodeableConcept(xpp));
11272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11273        res.getLocation().add(parseReference(xpp));
11274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11275        res.setNameElement(parseString(xpp));
11276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11277        res.setCommentElement(parseString(xpp));
11278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
11279        res.setExtraDetailsElement(parseMarkdown(xpp));
11280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
11281        res.setPhoto(parseAttachment(xpp));
11282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
11283        res.getTelecom().add(parseContactPoint(xpp));
11284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
11285        res.getCoverageArea().add(parseReference(xpp));
11286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
11287        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
11288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
11289        res.getEligibility().add(parseHealthcareServiceHealthcareServiceEligibilityComponent(xpp, res));
11290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("program")) {
11291        res.getProgram().add(parseCodeableConcept(xpp));
11292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
11293        res.getCharacteristic().add(parseCodeableConcept(xpp));
11294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
11295        res.getCommunication().add(parseCodeableConcept(xpp));
11296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
11297        res.getReferralMethod().add(parseCodeableConcept(xpp));
11298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
11299        res.setAppointmentRequiredElement(parseBoolean(xpp));
11300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
11301        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
11302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
11303        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
11304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
11305        res.setAvailabilityExceptionsElement(parseString(xpp));
11306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11307        res.getEndpoint().add(parseReference(xpp));
11308      } else if (!parseDomainResourceContent(eventType, xpp, res))
11309        return false;
11310    return true;
11311  }
11312
11313  protected HealthcareService.HealthcareServiceEligibilityComponent parseHealthcareServiceHealthcareServiceEligibilityComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11314    HealthcareService.HealthcareServiceEligibilityComponent res = new HealthcareService.HealthcareServiceEligibilityComponent();
11315    parseBackboneAttributes(xpp, res);
11316    next(xpp);
11317    int eventType = nextNoWhitespace(xpp);
11318    while (eventType != XmlPullParser.END_TAG) {
11319  if (!parseHealthcareServiceHealthcareServiceEligibilityComponentContent(eventType, xpp, owner, res))
11320        unknownContent(xpp);
11321      eventType = nextNoWhitespace(xpp);
11322    }
11323    next(xpp);
11324    parseElementClose(res);
11325    return res;
11326  }
11327
11328  protected boolean parseHealthcareServiceHealthcareServiceEligibilityComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceEligibilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11329      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11330        res.setCode(parseCodeableConcept(xpp));
11331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11332        res.setCommentElement(parseMarkdown(xpp));
11333      } else if (!parseBackboneElementContent(eventType, xpp, res))
11334        return false;
11335    return true;
11336  }
11337
11338  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11339    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
11340    parseBackboneAttributes(xpp, res);
11341    next(xpp);
11342    int eventType = nextNoWhitespace(xpp);
11343    while (eventType != XmlPullParser.END_TAG) {
11344  if (!parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(eventType, xpp, owner, res))
11345        unknownContent(xpp);
11346      eventType = nextNoWhitespace(xpp);
11347    }
11348    next(xpp);
11349    parseElementClose(res);
11350    return res;
11351  }
11352
11353  protected boolean parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11354      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
11355        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
11356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
11357        res.setAllDayElement(parseBoolean(xpp));
11358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
11359        res.setAvailableStartTimeElement(parseTime(xpp));
11360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
11361        res.setAvailableEndTimeElement(parseTime(xpp));
11362      } else if (!parseBackboneElementContent(eventType, xpp, res))
11363        return false;
11364    return true;
11365  }
11366
11367  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11368    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
11369    parseBackboneAttributes(xpp, res);
11370    next(xpp);
11371    int eventType = nextNoWhitespace(xpp);
11372    while (eventType != XmlPullParser.END_TAG) {
11373  if (!parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(eventType, xpp, owner, res))
11374        unknownContent(xpp);
11375      eventType = nextNoWhitespace(xpp);
11376    }
11377    next(xpp);
11378    parseElementClose(res);
11379    return res;
11380  }
11381
11382  protected boolean parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11383      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11384        res.setDescriptionElement(parseString(xpp));
11385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
11386        res.setDuring(parsePeriod(xpp));
11387      } else if (!parseBackboneElementContent(eventType, xpp, res))
11388        return false;
11389    return true;
11390  }
11391
11392  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11393    ImagingStudy res = new ImagingStudy();
11394    parseDomainResourceAttributes(xpp, res);
11395    next(xpp);
11396    int eventType = nextNoWhitespace(xpp);
11397    while (eventType != XmlPullParser.END_TAG) {
11398  if (!parseImagingStudyContent(eventType, xpp, res))
11399        unknownContent(xpp);
11400      eventType = nextNoWhitespace(xpp);
11401    }
11402    next(xpp);
11403    parseElementClose(res);
11404    return res;
11405  }
11406
11407  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
11408      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11409        res.getIdentifier().add(parseIdentifier(xpp));
11410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11411        res.setStatusElement(parseEnumeration(xpp, ImagingStudy.ImagingStudyStatus.NULL, new ImagingStudy.ImagingStudyStatusEnumFactory()));
11412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
11413        res.getModality().add(parseCoding(xpp));
11414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11415        res.setSubject(parseReference(xpp));
11416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11417        res.setEncounter(parseReference(xpp));
11418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
11419        res.setStartedElement(parseDateTime(xpp));
11420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11421        res.getBasedOn().add(parseReference(xpp));
11422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
11423        res.setReferrer(parseReference(xpp));
11424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
11425        res.getInterpreter().add(parseReference(xpp));
11426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11427        res.getEndpoint().add(parseReference(xpp));
11428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
11429        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
11430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
11431        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
11432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
11433        res.setProcedureReference(parseReference(xpp));
11434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
11435        res.getProcedureCode().add(parseCodeableConcept(xpp));
11436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11437        res.setLocation(parseReference(xpp));
11438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11439        res.getReasonCode().add(parseCodeableConcept(xpp));
11440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11441        res.getReasonReference().add(parseReference(xpp));
11442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11443        res.getNote().add(parseAnnotation(xpp));
11444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11445        res.setDescriptionElement(parseString(xpp));
11446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11447        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
11448      } else if (!parseDomainResourceContent(eventType, xpp, res))
11449        return false;
11450    return true;
11451  }
11452
11453  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11454    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
11455    parseBackboneAttributes(xpp, res);
11456    next(xpp);
11457    int eventType = nextNoWhitespace(xpp);
11458    while (eventType != XmlPullParser.END_TAG) {
11459  if (!parseImagingStudyImagingStudySeriesComponentContent(eventType, xpp, owner, res))
11460        unknownContent(xpp);
11461      eventType = nextNoWhitespace(xpp);
11462    }
11463    next(xpp);
11464    parseElementClose(res);
11465    return res;
11466  }
11467
11468  protected boolean parseImagingStudyImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
11470        res.setUidElement(parseId(xpp));
11471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
11472        res.setNumberElement(parseUnsignedInt(xpp));
11473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
11474        res.setModality(parseCoding(xpp));
11475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11476        res.setDescriptionElement(parseString(xpp));
11477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
11478        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
11479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11480        res.getEndpoint().add(parseReference(xpp));
11481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
11482        res.setBodySite(parseCoding(xpp));
11483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
11484        res.setLaterality(parseCoding(xpp));
11485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
11486        res.getSpecimen().add(parseReference(xpp));
11487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
11488        res.setStartedElement(parseDateTime(xpp));
11489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11490        res.getPerformer().add(parseImagingStudyImagingStudySeriesPerformerComponent(xpp, owner));
11491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
11492        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
11493      } else if (!parseBackboneElementContent(eventType, xpp, res))
11494        return false;
11495    return true;
11496  }
11497
11498  protected ImagingStudy.ImagingStudySeriesPerformerComponent parseImagingStudyImagingStudySeriesPerformerComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11499    ImagingStudy.ImagingStudySeriesPerformerComponent res = new ImagingStudy.ImagingStudySeriesPerformerComponent();
11500    parseBackboneAttributes(xpp, res);
11501    next(xpp);
11502    int eventType = nextNoWhitespace(xpp);
11503    while (eventType != XmlPullParser.END_TAG) {
11504  if (!parseImagingStudyImagingStudySeriesPerformerComponentContent(eventType, xpp, owner, res))
11505        unknownContent(xpp);
11506      eventType = nextNoWhitespace(xpp);
11507    }
11508    next(xpp);
11509    parseElementClose(res);
11510    return res;
11511  }
11512
11513  protected boolean parseImagingStudyImagingStudySeriesPerformerComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11514      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11515        res.setFunction(parseCodeableConcept(xpp));
11516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11517        res.setActor(parseReference(xpp));
11518      } else if (!parseBackboneElementContent(eventType, xpp, res))
11519        return false;
11520    return true;
11521  }
11522
11523  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11524    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
11525    parseBackboneAttributes(xpp, res);
11526    next(xpp);
11527    int eventType = nextNoWhitespace(xpp);
11528    while (eventType != XmlPullParser.END_TAG) {
11529  if (!parseImagingStudyImagingStudySeriesInstanceComponentContent(eventType, xpp, owner, res))
11530        unknownContent(xpp);
11531      eventType = nextNoWhitespace(xpp);
11532    }
11533    next(xpp);
11534    parseElementClose(res);
11535    return res;
11536  }
11537
11538  protected boolean parseImagingStudyImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
11540        res.setUidElement(parseId(xpp));
11541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
11542        res.setSopClass(parseCoding(xpp));
11543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
11544        res.setNumberElement(parseUnsignedInt(xpp));
11545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11546        res.setTitleElement(parseString(xpp));
11547      } else if (!parseBackboneElementContent(eventType, xpp, res))
11548        return false;
11549    return true;
11550  }
11551
11552  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11553    Immunization res = new Immunization();
11554    parseDomainResourceAttributes(xpp, res);
11555    next(xpp);
11556    int eventType = nextNoWhitespace(xpp);
11557    while (eventType != XmlPullParser.END_TAG) {
11558  if (!parseImmunizationContent(eventType, xpp, res))
11559        unknownContent(xpp);
11560      eventType = nextNoWhitespace(xpp);
11561    }
11562    next(xpp);
11563    parseElementClose(res);
11564    return res;
11565  }
11566
11567  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
11568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11569        res.getIdentifier().add(parseIdentifier(xpp));
11570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11571        res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatus.NULL, new Immunization.ImmunizationStatusEnumFactory()));
11572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
11573        res.setStatusReason(parseCodeableConcept(xpp));
11574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
11575        res.setVaccineCode(parseCodeableConcept(xpp));
11576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11577        res.setPatient(parseReference(xpp));
11578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11579        res.setEncounter(parseReference(xpp));
11580      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
11581        res.setOccurrence(parseType("occurrence", xpp));
11582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
11583        res.setRecordedElement(parseDateTime(xpp));
11584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
11585        res.setPrimarySourceElement(parseBoolean(xpp));
11586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
11587        res.setReportOrigin(parseCodeableConcept(xpp));
11588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11589        res.setLocation(parseReference(xpp));
11590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
11591        res.setManufacturer(parseReference(xpp));
11592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
11593        res.setLotNumberElement(parseString(xpp));
11594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
11595        res.setExpirationDateElement(parseDate(xpp));
11596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
11597        res.setSite(parseCodeableConcept(xpp));
11598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
11599        res.setRoute(parseCodeableConcept(xpp));
11600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
11601        res.setDoseQuantity(parseQuantity(xpp));
11602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11603        res.getPerformer().add(parseImmunizationImmunizationPerformerComponent(xpp, res));
11604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11605        res.getNote().add(parseAnnotation(xpp));
11606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11607        res.getReasonCode().add(parseCodeableConcept(xpp));
11608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11609        res.getReasonReference().add(parseReference(xpp));
11610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSubpotent")) {
11611        res.setIsSubpotentElement(parseBoolean(xpp));
11612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subpotentReason")) {
11613        res.getSubpotentReason().add(parseCodeableConcept(xpp));
11614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("education")) {
11615        res.getEducation().add(parseImmunizationImmunizationEducationComponent(xpp, res));
11616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programEligibility")) {
11617        res.getProgramEligibility().add(parseCodeableConcept(xpp));
11618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundingSource")) {
11619        res.setFundingSource(parseCodeableConcept(xpp));
11620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
11621        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
11622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocolApplied")) {
11623        res.getProtocolApplied().add(parseImmunizationImmunizationProtocolAppliedComponent(xpp, res));
11624      } else if (!parseDomainResourceContent(eventType, xpp, res))
11625        return false;
11626    return true;
11627  }
11628
11629  protected Immunization.ImmunizationPerformerComponent parseImmunizationImmunizationPerformerComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11630    Immunization.ImmunizationPerformerComponent res = new Immunization.ImmunizationPerformerComponent();
11631    parseBackboneAttributes(xpp, res);
11632    next(xpp);
11633    int eventType = nextNoWhitespace(xpp);
11634    while (eventType != XmlPullParser.END_TAG) {
11635  if (!parseImmunizationImmunizationPerformerComponentContent(eventType, xpp, owner, res))
11636        unknownContent(xpp);
11637      eventType = nextNoWhitespace(xpp);
11638    }
11639    next(xpp);
11640    parseElementClose(res);
11641    return res;
11642  }
11643
11644  protected boolean parseImmunizationImmunizationPerformerComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11645      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11646        res.setFunction(parseCodeableConcept(xpp));
11647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11648        res.setActor(parseReference(xpp));
11649      } else if (!parseBackboneElementContent(eventType, xpp, res))
11650        return false;
11651    return true;
11652  }
11653
11654  protected Immunization.ImmunizationEducationComponent parseImmunizationImmunizationEducationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11655    Immunization.ImmunizationEducationComponent res = new Immunization.ImmunizationEducationComponent();
11656    parseBackboneAttributes(xpp, res);
11657    next(xpp);
11658    int eventType = nextNoWhitespace(xpp);
11659    while (eventType != XmlPullParser.END_TAG) {
11660  if (!parseImmunizationImmunizationEducationComponentContent(eventType, xpp, owner, res))
11661        unknownContent(xpp);
11662      eventType = nextNoWhitespace(xpp);
11663    }
11664    next(xpp);
11665    parseElementClose(res);
11666    return res;
11667  }
11668
11669  protected boolean parseImmunizationImmunizationEducationComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationEducationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11670      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentType")) {
11671        res.setDocumentTypeElement(parseString(xpp));
11672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11673        res.setReferenceElement(parseUri(xpp));
11674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
11675        res.setPublicationDateElement(parseDateTime(xpp));
11676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationDate")) {
11677        res.setPresentationDateElement(parseDateTime(xpp));
11678      } else if (!parseBackboneElementContent(eventType, xpp, res))
11679        return false;
11680    return true;
11681  }
11682
11683  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11684    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
11685    parseBackboneAttributes(xpp, res);
11686    next(xpp);
11687    int eventType = nextNoWhitespace(xpp);
11688    while (eventType != XmlPullParser.END_TAG) {
11689  if (!parseImmunizationImmunizationReactionComponentContent(eventType, xpp, owner, res))
11690        unknownContent(xpp);
11691      eventType = nextNoWhitespace(xpp);
11692    }
11693    next(xpp);
11694    parseElementClose(res);
11695    return res;
11696  }
11697
11698  protected boolean parseImmunizationImmunizationReactionComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11699      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11700        res.setDateElement(parseDateTime(xpp));
11701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
11702        res.setDetail(parseReference(xpp));
11703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
11704        res.setReportedElement(parseBoolean(xpp));
11705      } else if (!parseBackboneElementContent(eventType, xpp, res))
11706        return false;
11707    return true;
11708  }
11709
11710  protected Immunization.ImmunizationProtocolAppliedComponent parseImmunizationImmunizationProtocolAppliedComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11711    Immunization.ImmunizationProtocolAppliedComponent res = new Immunization.ImmunizationProtocolAppliedComponent();
11712    parseBackboneAttributes(xpp, res);
11713    next(xpp);
11714    int eventType = nextNoWhitespace(xpp);
11715    while (eventType != XmlPullParser.END_TAG) {
11716  if (!parseImmunizationImmunizationProtocolAppliedComponentContent(eventType, xpp, owner, res))
11717        unknownContent(xpp);
11718      eventType = nextNoWhitespace(xpp);
11719    }
11720    next(xpp);
11721    parseElementClose(res);
11722    return res;
11723  }
11724
11725  protected boolean parseImmunizationImmunizationProtocolAppliedComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationProtocolAppliedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11726      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11727        res.setSeriesElement(parseString(xpp));
11728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11729        res.setAuthority(parseReference(xpp));
11730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11731        res.getTargetDisease().add(parseCodeableConcept(xpp));
11732      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11733        res.setDoseNumber(parseType("doseNumber", xpp));
11734      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11735        res.setSeriesDoses(parseType("seriesDoses", xpp));
11736      } else if (!parseBackboneElementContent(eventType, xpp, res))
11737        return false;
11738    return true;
11739  }
11740
11741  protected ImmunizationEvaluation parseImmunizationEvaluation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11742    ImmunizationEvaluation res = new ImmunizationEvaluation();
11743    parseDomainResourceAttributes(xpp, res);
11744    next(xpp);
11745    int eventType = nextNoWhitespace(xpp);
11746    while (eventType != XmlPullParser.END_TAG) {
11747  if (!parseImmunizationEvaluationContent(eventType, xpp, res))
11748        unknownContent(xpp);
11749      eventType = nextNoWhitespace(xpp);
11750    }
11751    next(xpp);
11752    parseElementClose(res);
11753    return res;
11754  }
11755
11756  protected boolean parseImmunizationEvaluationContent(int eventType, XmlPullParser xpp, ImmunizationEvaluation res) throws XmlPullParserException, IOException, FHIRFormatError {
11757      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11758        res.getIdentifier().add(parseIdentifier(xpp));
11759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11760        res.setStatusElement(parseEnumeration(xpp, ImmunizationEvaluation.ImmunizationEvaluationStatus.NULL, new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory()));
11761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11762        res.setPatient(parseReference(xpp));
11763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11764        res.setDateElement(parseDateTime(xpp));
11765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11766        res.setAuthority(parseReference(xpp));
11767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11768        res.setTargetDisease(parseCodeableConcept(xpp));
11769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immunizationEvent")) {
11770        res.setImmunizationEvent(parseReference(xpp));
11771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
11772        res.setDoseStatus(parseCodeableConcept(xpp));
11773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
11774        res.getDoseStatusReason().add(parseCodeableConcept(xpp));
11775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11776        res.setDescriptionElement(parseString(xpp));
11777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11778        res.setSeriesElement(parseString(xpp));
11779      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11780        res.setDoseNumber(parseType("doseNumber", xpp));
11781      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11782        res.setSeriesDoses(parseType("seriesDoses", xpp));
11783      } else if (!parseDomainResourceContent(eventType, xpp, res))
11784        return false;
11785    return true;
11786  }
11787
11788  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11789    ImmunizationRecommendation res = new ImmunizationRecommendation();
11790    parseDomainResourceAttributes(xpp, res);
11791    next(xpp);
11792    int eventType = nextNoWhitespace(xpp);
11793    while (eventType != XmlPullParser.END_TAG) {
11794  if (!parseImmunizationRecommendationContent(eventType, xpp, res))
11795        unknownContent(xpp);
11796      eventType = nextNoWhitespace(xpp);
11797    }
11798    next(xpp);
11799    parseElementClose(res);
11800    return res;
11801  }
11802
11803  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
11804      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11805        res.getIdentifier().add(parseIdentifier(xpp));
11806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11807        res.setPatient(parseReference(xpp));
11808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11809        res.setDateElement(parseDateTime(xpp));
11810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11811        res.setAuthority(parseReference(xpp));
11812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
11813        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
11814      } else if (!parseDomainResourceContent(eventType, xpp, res))
11815        return false;
11816    return true;
11817  }
11818
11819  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
11820    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
11821    parseBackboneAttributes(xpp, res);
11822    next(xpp);
11823    int eventType = nextNoWhitespace(xpp);
11824    while (eventType != XmlPullParser.END_TAG) {
11825  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(eventType, xpp, owner, res))
11826        unknownContent(xpp);
11827      eventType = nextNoWhitespace(xpp);
11828    }
11829    next(xpp);
11830    parseElementClose(res);
11831    return res;
11832  }
11833
11834  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11835      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
11836        res.getVaccineCode().add(parseCodeableConcept(xpp));
11837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11838        res.setTargetDisease(parseCodeableConcept(xpp));
11839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindicatedVaccineCode")) {
11840        res.getContraindicatedVaccineCode().add(parseCodeableConcept(xpp));
11841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
11842        res.setForecastStatus(parseCodeableConcept(xpp));
11843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastReason")) {
11844        res.getForecastReason().add(parseCodeableConcept(xpp));
11845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
11846        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
11847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11848        res.setDescriptionElement(parseString(xpp));
11849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11850        res.setSeriesElement(parseString(xpp));
11851      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11852        res.setDoseNumber(parseType("doseNumber", xpp));
11853      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11854        res.setSeriesDoses(parseType("seriesDoses", xpp));
11855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
11856        res.getSupportingImmunization().add(parseReference(xpp));
11857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
11858        res.getSupportingPatientInformation().add(parseReference(xpp));
11859      } else if (!parseBackboneElementContent(eventType, xpp, res))
11860        return false;
11861    return true;
11862  }
11863
11864  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
11865    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
11866    parseBackboneAttributes(xpp, res);
11867    next(xpp);
11868    int eventType = nextNoWhitespace(xpp);
11869    while (eventType != XmlPullParser.END_TAG) {
11870  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, owner, res))
11871        unknownContent(xpp);
11872      eventType = nextNoWhitespace(xpp);
11873    }
11874    next(xpp);
11875    parseElementClose(res);
11876    return res;
11877  }
11878
11879  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11880      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11881        res.setCode(parseCodeableConcept(xpp));
11882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11883        res.setValueElement(parseDateTime(xpp));
11884      } else if (!parseBackboneElementContent(eventType, xpp, res))
11885        return false;
11886    return true;
11887  }
11888
11889  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11890    ImplementationGuide res = new ImplementationGuide();
11891    parseDomainResourceAttributes(xpp, res);
11892    next(xpp);
11893    int eventType = nextNoWhitespace(xpp);
11894    while (eventType != XmlPullParser.END_TAG) {
11895  if (!parseImplementationGuideContent(eventType, xpp, res))
11896        unknownContent(xpp);
11897      eventType = nextNoWhitespace(xpp);
11898    }
11899    next(xpp);
11900    parseElementClose(res);
11901    return res;
11902  }
11903
11904  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
11905      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11906        res.setUrlElement(parseUri(xpp));
11907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11908        res.setVersionElement(parseString(xpp));
11909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11910        res.setNameElement(parseString(xpp));
11911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11912        res.setTitleElement(parseString(xpp));
11913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11914        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11916        res.setExperimentalElement(parseBoolean(xpp));
11917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11918        res.setDateElement(parseDateTime(xpp));
11919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11920        res.setPublisherElement(parseString(xpp));
11921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11922        res.getContact().add(parseContactDetail(xpp));
11923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11924        res.setDescriptionElement(parseMarkdown(xpp));
11925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11926        res.getUseContext().add(parseUsageContext(xpp));
11927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11928        res.getJurisdiction().add(parseCodeableConcept(xpp));
11929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11930        res.setCopyrightElement(parseMarkdown(xpp));
11931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
11932        res.setPackageIdElement(parseId(xpp));
11933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("license")) {
11934        res.setLicenseElement(parseEnumeration(xpp, ImplementationGuide.SPDXLicense.NULL, new ImplementationGuide.SPDXLicenseEnumFactory()));
11935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
11936        res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
11937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
11938        res.getDependsOn().add(parseImplementationGuideImplementationGuideDependsOnComponent(xpp, res));
11939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
11940        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
11941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
11942        res.setDefinition(parseImplementationGuideImplementationGuideDefinitionComponent(xpp, res));
11943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifest")) {
11944        res.setManifest(parseImplementationGuideImplementationGuideManifestComponent(xpp, res));
11945      } else if (!parseDomainResourceContent(eventType, xpp, res))
11946        return false;
11947    return true;
11948  }
11949
11950  protected ImplementationGuide.ImplementationGuideDependsOnComponent parseImplementationGuideImplementationGuideDependsOnComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11951    ImplementationGuide.ImplementationGuideDependsOnComponent res = new ImplementationGuide.ImplementationGuideDependsOnComponent();
11952    parseBackboneAttributes(xpp, res);
11953    next(xpp);
11954    int eventType = nextNoWhitespace(xpp);
11955    while (eventType != XmlPullParser.END_TAG) {
11956  if (!parseImplementationGuideImplementationGuideDependsOnComponentContent(eventType, xpp, owner, res))
11957        unknownContent(xpp);
11958      eventType = nextNoWhitespace(xpp);
11959    }
11960    next(xpp);
11961    parseElementClose(res);
11962    return res;
11963  }
11964
11965  protected boolean parseImplementationGuideImplementationGuideDependsOnComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDependsOnComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11966      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
11967        res.setUriElement(parseCanonical(xpp));
11968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
11969        res.setPackageIdElement(parseId(xpp));
11970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11971        res.setVersionElement(parseString(xpp));
11972      } else if (!parseBackboneElementContent(eventType, xpp, res))
11973        return false;
11974    return true;
11975  }
11976
11977  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11978    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
11979    parseBackboneAttributes(xpp, res);
11980    next(xpp);
11981    int eventType = nextNoWhitespace(xpp);
11982    while (eventType != XmlPullParser.END_TAG) {
11983  if (!parseImplementationGuideImplementationGuideGlobalComponentContent(eventType, xpp, owner, res))
11984        unknownContent(xpp);
11985      eventType = nextNoWhitespace(xpp);
11986    }
11987    next(xpp);
11988    parseElementClose(res);
11989    return res;
11990  }
11991
11992  protected boolean parseImplementationGuideImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11993      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11994        res.setTypeElement(parseCode(xpp));
11995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11996        res.setProfileElement(parseCanonical(xpp));
11997      } else if (!parseBackboneElementContent(eventType, xpp, res))
11998        return false;
11999    return true;
12000  }
12001
12002  protected ImplementationGuide.ImplementationGuideDefinitionComponent parseImplementationGuideImplementationGuideDefinitionComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12003    ImplementationGuide.ImplementationGuideDefinitionComponent res = new ImplementationGuide.ImplementationGuideDefinitionComponent();
12004    parseBackboneAttributes(xpp, res);
12005    next(xpp);
12006    int eventType = nextNoWhitespace(xpp);
12007    while (eventType != XmlPullParser.END_TAG) {
12008  if (!parseImplementationGuideImplementationGuideDefinitionComponentContent(eventType, xpp, owner, res))
12009        unknownContent(xpp);
12010      eventType = nextNoWhitespace(xpp);
12011    }
12012    next(xpp);
12013    parseElementClose(res);
12014    return res;
12015  }
12016
12017  protected boolean parseImplementationGuideImplementationGuideDefinitionComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12018      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grouping")) {
12019        res.getGrouping().add(parseImplementationGuideImplementationGuideDefinitionGroupingComponent(xpp, owner));
12020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12021        res.getResource().add(parseImplementationGuideImplementationGuideDefinitionResourceComponent(xpp, owner));
12022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12023        res.setPage(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
12024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12025        res.getParameter().add(parseImplementationGuideImplementationGuideDefinitionParameterComponent(xpp, owner));
12026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("template")) {
12027        res.getTemplate().add(parseImplementationGuideImplementationGuideDefinitionTemplateComponent(xpp, owner));
12028      } else if (!parseBackboneElementContent(eventType, xpp, res))
12029        return false;
12030    return true;
12031  }
12032
12033  protected ImplementationGuide.ImplementationGuideDefinitionGroupingComponent parseImplementationGuideImplementationGuideDefinitionGroupingComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12034    ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res = new ImplementationGuide.ImplementationGuideDefinitionGroupingComponent();
12035    parseBackboneAttributes(xpp, res);
12036    next(xpp);
12037    int eventType = nextNoWhitespace(xpp);
12038    while (eventType != XmlPullParser.END_TAG) {
12039  if (!parseImplementationGuideImplementationGuideDefinitionGroupingComponentContent(eventType, xpp, owner, res))
12040        unknownContent(xpp);
12041      eventType = nextNoWhitespace(xpp);
12042    }
12043    next(xpp);
12044    parseElementClose(res);
12045    return res;
12046  }
12047
12048  protected boolean parseImplementationGuideImplementationGuideDefinitionGroupingComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12049      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12050        res.setNameElement(parseString(xpp));
12051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12052        res.setDescriptionElement(parseString(xpp));
12053      } else if (!parseBackboneElementContent(eventType, xpp, res))
12054        return false;
12055    return true;
12056  }
12057
12058  protected ImplementationGuide.ImplementationGuideDefinitionResourceComponent parseImplementationGuideImplementationGuideDefinitionResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12059    ImplementationGuide.ImplementationGuideDefinitionResourceComponent res = new ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
12060    parseBackboneAttributes(xpp, res);
12061    next(xpp);
12062    int eventType = nextNoWhitespace(xpp);
12063    while (eventType != XmlPullParser.END_TAG) {
12064  if (!parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(eventType, xpp, owner, res))
12065        unknownContent(xpp);
12066      eventType = nextNoWhitespace(xpp);
12067    }
12068    next(xpp);
12069    parseElementClose(res);
12070    return res;
12071  }
12072
12073  protected boolean parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12074      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
12075        res.setReference(parseReference(xpp));
12076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
12077        res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
12078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12079        res.setNameElement(parseString(xpp));
12080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12081        res.setDescriptionElement(parseString(xpp));
12082      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
12083        res.setExample(parseType("example", xpp));
12084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingId")) {
12085        res.setGroupingIdElement(parseId(xpp));
12086      } else if (!parseBackboneElementContent(eventType, xpp, res))
12087        return false;
12088    return true;
12089  }
12090
12091  protected ImplementationGuide.ImplementationGuideDefinitionPageComponent parseImplementationGuideImplementationGuideDefinitionPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12092    ImplementationGuide.ImplementationGuideDefinitionPageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPageComponent();
12093    parseBackboneAttributes(xpp, res);
12094    next(xpp);
12095    int eventType = nextNoWhitespace(xpp);
12096    while (eventType != XmlPullParser.END_TAG) {
12097  if (!parseImplementationGuideImplementationGuideDefinitionPageComponentContent(eventType, xpp, owner, res))
12098        unknownContent(xpp);
12099      eventType = nextNoWhitespace(xpp);
12100    }
12101    next(xpp);
12102    parseElementClose(res);
12103    return res;
12104  }
12105
12106  protected boolean parseImplementationGuideImplementationGuideDefinitionPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12107      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "name")) {
12108        res.setName(parseType("name", xpp));
12109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12110        res.setTitleElement(parseString(xpp));
12111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generation")) {
12112        res.setGenerationElement(parseEnumeration(xpp, ImplementationGuide.GuidePageGeneration.NULL, new ImplementationGuide.GuidePageGenerationEnumFactory()));
12113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12114        res.getPage().add(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
12115      } else if (!parseBackboneElementContent(eventType, xpp, res))
12116        return false;
12117    return true;
12118  }
12119
12120  protected ImplementationGuide.ImplementationGuideDefinitionParameterComponent parseImplementationGuideImplementationGuideDefinitionParameterComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12121    ImplementationGuide.ImplementationGuideDefinitionParameterComponent res = new ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
12122    parseBackboneAttributes(xpp, res);
12123    next(xpp);
12124    int eventType = nextNoWhitespace(xpp);
12125    while (eventType != XmlPullParser.END_TAG) {
12126  if (!parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(eventType, xpp, owner, res))
12127        unknownContent(xpp);
12128      eventType = nextNoWhitespace(xpp);
12129    }
12130    next(xpp);
12131    parseElementClose(res);
12132    return res;
12133  }
12134
12135  protected boolean parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12137        res.setCodeElement(parseString(xpp));
12138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12139        res.setValueElement(parseString(xpp));
12140      } else if (!parseBackboneElementContent(eventType, xpp, res))
12141        return false;
12142    return true;
12143  }
12144
12145  protected ImplementationGuide.ImplementationGuideDefinitionTemplateComponent parseImplementationGuideImplementationGuideDefinitionTemplateComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12146    ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res = new ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
12147    parseBackboneAttributes(xpp, res);
12148    next(xpp);
12149    int eventType = nextNoWhitespace(xpp);
12150    while (eventType != XmlPullParser.END_TAG) {
12151  if (!parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(eventType, xpp, owner, res))
12152        unknownContent(xpp);
12153      eventType = nextNoWhitespace(xpp);
12154    }
12155    next(xpp);
12156    parseElementClose(res);
12157    return res;
12158  }
12159
12160  protected boolean parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12161      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12162        res.setCodeElement(parseCode(xpp));
12163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12164        res.setSourceElement(parseString(xpp));
12165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
12166        res.setScopeElement(parseString(xpp));
12167      } else if (!parseBackboneElementContent(eventType, xpp, res))
12168        return false;
12169    return true;
12170  }
12171
12172  protected ImplementationGuide.ImplementationGuideManifestComponent parseImplementationGuideImplementationGuideManifestComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12173    ImplementationGuide.ImplementationGuideManifestComponent res = new ImplementationGuide.ImplementationGuideManifestComponent();
12174    parseBackboneAttributes(xpp, res);
12175    next(xpp);
12176    int eventType = nextNoWhitespace(xpp);
12177    while (eventType != XmlPullParser.END_TAG) {
12178  if (!parseImplementationGuideImplementationGuideManifestComponentContent(eventType, xpp, owner, res))
12179        unknownContent(xpp);
12180      eventType = nextNoWhitespace(xpp);
12181    }
12182    next(xpp);
12183    parseElementClose(res);
12184    return res;
12185  }
12186
12187  protected boolean parseImplementationGuideImplementationGuideManifestComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideManifestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12188      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rendering")) {
12189        res.setRenderingElement(parseUrl(xpp));
12190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12191        res.getResource().add(parseImplementationGuideManifestResourceComponent(xpp, owner));
12192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12193        res.getPage().add(parseImplementationGuideManifestPageComponent(xpp, owner));
12194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
12195        res.getImage().add(parseString(xpp));
12196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
12197        res.getOther().add(parseString(xpp));
12198      } else if (!parseBackboneElementContent(eventType, xpp, res))
12199        return false;
12200    return true;
12201  }
12202
12203  protected ImplementationGuide.ManifestResourceComponent parseImplementationGuideManifestResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12204    ImplementationGuide.ManifestResourceComponent res = new ImplementationGuide.ManifestResourceComponent();
12205    parseBackboneAttributes(xpp, res);
12206    next(xpp);
12207    int eventType = nextNoWhitespace(xpp);
12208    while (eventType != XmlPullParser.END_TAG) {
12209  if (!parseImplementationGuideManifestResourceComponentContent(eventType, xpp, owner, res))
12210        unknownContent(xpp);
12211      eventType = nextNoWhitespace(xpp);
12212    }
12213    next(xpp);
12214    parseElementClose(res);
12215    return res;
12216  }
12217
12218  protected boolean parseImplementationGuideManifestResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ManifestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
12220        res.setReference(parseReference(xpp));
12221      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
12222        res.setExample(parseType("example", xpp));
12223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativePath")) {
12224        res.setRelativePathElement(parseUrl(xpp));
12225      } else if (!parseBackboneElementContent(eventType, xpp, res))
12226        return false;
12227    return true;
12228  }
12229
12230  protected ImplementationGuide.ManifestPageComponent parseImplementationGuideManifestPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12231    ImplementationGuide.ManifestPageComponent res = new ImplementationGuide.ManifestPageComponent();
12232    parseBackboneAttributes(xpp, res);
12233    next(xpp);
12234    int eventType = nextNoWhitespace(xpp);
12235    while (eventType != XmlPullParser.END_TAG) {
12236  if (!parseImplementationGuideManifestPageComponentContent(eventType, xpp, owner, res))
12237        unknownContent(xpp);
12238      eventType = nextNoWhitespace(xpp);
12239    }
12240    next(xpp);
12241    parseElementClose(res);
12242    return res;
12243  }
12244
12245  protected boolean parseImplementationGuideManifestPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ManifestPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12247        res.setNameElement(parseString(xpp));
12248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12249        res.setTitleElement(parseString(xpp));
12250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
12251        res.getAnchor().add(parseString(xpp));
12252      } else if (!parseBackboneElementContent(eventType, xpp, res))
12253        return false;
12254    return true;
12255  }
12256
12257  protected InsurancePlan parseInsurancePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12258    InsurancePlan res = new InsurancePlan();
12259    parseDomainResourceAttributes(xpp, res);
12260    next(xpp);
12261    int eventType = nextNoWhitespace(xpp);
12262    while (eventType != XmlPullParser.END_TAG) {
12263  if (!parseInsurancePlanContent(eventType, xpp, res))
12264        unknownContent(xpp);
12265      eventType = nextNoWhitespace(xpp);
12266    }
12267    next(xpp);
12268    parseElementClose(res);
12269    return res;
12270  }
12271
12272  protected boolean parseInsurancePlanContent(int eventType, XmlPullParser xpp, InsurancePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
12273      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12274        res.getIdentifier().add(parseIdentifier(xpp));
12275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12276        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12278        res.getType().add(parseCodeableConcept(xpp));
12279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12280        res.setNameElement(parseString(xpp));
12281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12282        res.getAlias().add(parseString(xpp));
12283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12284        res.setPeriod(parsePeriod(xpp));
12285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ownedBy")) {
12286        res.setOwnedBy(parseReference(xpp));
12287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administeredBy")) {
12288        res.setAdministeredBy(parseReference(xpp));
12289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
12290        res.getCoverageArea().add(parseReference(xpp));
12291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12292        res.getContact().add(parseInsurancePlanInsurancePlanContactComponent(xpp, res));
12293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12294        res.getEndpoint().add(parseReference(xpp));
12295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12296        res.getNetwork().add(parseReference(xpp));
12297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
12298        res.getCoverage().add(parseInsurancePlanInsurancePlanCoverageComponent(xpp, res));
12299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
12300        res.getPlan().add(parseInsurancePlanInsurancePlanPlanComponent(xpp, res));
12301      } else if (!parseDomainResourceContent(eventType, xpp, res))
12302        return false;
12303    return true;
12304  }
12305
12306  protected InsurancePlan.InsurancePlanContactComponent parseInsurancePlanInsurancePlanContactComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12307    InsurancePlan.InsurancePlanContactComponent res = new InsurancePlan.InsurancePlanContactComponent();
12308    parseBackboneAttributes(xpp, res);
12309    next(xpp);
12310    int eventType = nextNoWhitespace(xpp);
12311    while (eventType != XmlPullParser.END_TAG) {
12312  if (!parseInsurancePlanInsurancePlanContactComponentContent(eventType, xpp, owner, res))
12313        unknownContent(xpp);
12314      eventType = nextNoWhitespace(xpp);
12315    }
12316    next(xpp);
12317    parseElementClose(res);
12318    return res;
12319  }
12320
12321  protected boolean parseInsurancePlanInsurancePlanContactComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12322      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12323        res.setPurpose(parseCodeableConcept(xpp));
12324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12325        res.setName(parseHumanName(xpp));
12326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12327        res.getTelecom().add(parseContactPoint(xpp));
12328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12329        res.setAddress(parseAddress(xpp));
12330      } else if (!parseBackboneElementContent(eventType, xpp, res))
12331        return false;
12332    return true;
12333  }
12334
12335  protected InsurancePlan.InsurancePlanCoverageComponent parseInsurancePlanInsurancePlanCoverageComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12336    InsurancePlan.InsurancePlanCoverageComponent res = new InsurancePlan.InsurancePlanCoverageComponent();
12337    parseBackboneAttributes(xpp, res);
12338    next(xpp);
12339    int eventType = nextNoWhitespace(xpp);
12340    while (eventType != XmlPullParser.END_TAG) {
12341  if (!parseInsurancePlanInsurancePlanCoverageComponentContent(eventType, xpp, owner, res))
12342        unknownContent(xpp);
12343      eventType = nextNoWhitespace(xpp);
12344    }
12345    next(xpp);
12346    parseElementClose(res);
12347    return res;
12348  }
12349
12350  protected boolean parseInsurancePlanInsurancePlanCoverageComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanCoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12352        res.setType(parseCodeableConcept(xpp));
12353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12354        res.getNetwork().add(parseReference(xpp));
12355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
12356        res.getBenefit().add(parseInsurancePlanCoverageBenefitComponent(xpp, owner));
12357      } else if (!parseBackboneElementContent(eventType, xpp, res))
12358        return false;
12359    return true;
12360  }
12361
12362  protected InsurancePlan.CoverageBenefitComponent parseInsurancePlanCoverageBenefitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12363    InsurancePlan.CoverageBenefitComponent res = new InsurancePlan.CoverageBenefitComponent();
12364    parseBackboneAttributes(xpp, res);
12365    next(xpp);
12366    int eventType = nextNoWhitespace(xpp);
12367    while (eventType != XmlPullParser.END_TAG) {
12368  if (!parseInsurancePlanCoverageBenefitComponentContent(eventType, xpp, owner, res))
12369        unknownContent(xpp);
12370      eventType = nextNoWhitespace(xpp);
12371    }
12372    next(xpp);
12373    parseElementClose(res);
12374    return res;
12375  }
12376
12377  protected boolean parseInsurancePlanCoverageBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.CoverageBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12379        res.setType(parseCodeableConcept(xpp));
12380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
12381        res.setRequirementElement(parseString(xpp));
12382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
12383        res.getLimit().add(parseInsurancePlanCoverageBenefitLimitComponent(xpp, owner));
12384      } else if (!parseBackboneElementContent(eventType, xpp, res))
12385        return false;
12386    return true;
12387  }
12388
12389  protected InsurancePlan.CoverageBenefitLimitComponent parseInsurancePlanCoverageBenefitLimitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12390    InsurancePlan.CoverageBenefitLimitComponent res = new InsurancePlan.CoverageBenefitLimitComponent();
12391    parseBackboneAttributes(xpp, res);
12392    next(xpp);
12393    int eventType = nextNoWhitespace(xpp);
12394    while (eventType != XmlPullParser.END_TAG) {
12395  if (!parseInsurancePlanCoverageBenefitLimitComponentContent(eventType, xpp, owner, res))
12396        unknownContent(xpp);
12397      eventType = nextNoWhitespace(xpp);
12398    }
12399    next(xpp);
12400    parseElementClose(res);
12401    return res;
12402  }
12403
12404  protected boolean parseInsurancePlanCoverageBenefitLimitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.CoverageBenefitLimitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12405      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12406        res.setValue(parseQuantity(xpp));
12407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12408        res.setCode(parseCodeableConcept(xpp));
12409      } else if (!parseBackboneElementContent(eventType, xpp, res))
12410        return false;
12411    return true;
12412  }
12413
12414  protected InsurancePlan.InsurancePlanPlanComponent parseInsurancePlanInsurancePlanPlanComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12415    InsurancePlan.InsurancePlanPlanComponent res = new InsurancePlan.InsurancePlanPlanComponent();
12416    parseBackboneAttributes(xpp, res);
12417    next(xpp);
12418    int eventType = nextNoWhitespace(xpp);
12419    while (eventType != XmlPullParser.END_TAG) {
12420  if (!parseInsurancePlanInsurancePlanPlanComponentContent(eventType, xpp, owner, res))
12421        unknownContent(xpp);
12422      eventType = nextNoWhitespace(xpp);
12423    }
12424    next(xpp);
12425    parseElementClose(res);
12426    return res;
12427  }
12428
12429  protected boolean parseInsurancePlanInsurancePlanPlanComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12431        res.getIdentifier().add(parseIdentifier(xpp));
12432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12433        res.setType(parseCodeableConcept(xpp));
12434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
12435        res.getCoverageArea().add(parseReference(xpp));
12436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12437        res.getNetwork().add(parseReference(xpp));
12438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalCost")) {
12439        res.getGeneralCost().add(parseInsurancePlanInsurancePlanPlanGeneralCostComponent(xpp, owner));
12440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specificCost")) {
12441        res.getSpecificCost().add(parseInsurancePlanInsurancePlanPlanSpecificCostComponent(xpp, owner));
12442      } else if (!parseBackboneElementContent(eventType, xpp, res))
12443        return false;
12444    return true;
12445  }
12446
12447  protected InsurancePlan.InsurancePlanPlanGeneralCostComponent parseInsurancePlanInsurancePlanPlanGeneralCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12448    InsurancePlan.InsurancePlanPlanGeneralCostComponent res = new InsurancePlan.InsurancePlanPlanGeneralCostComponent();
12449    parseBackboneAttributes(xpp, res);
12450    next(xpp);
12451    int eventType = nextNoWhitespace(xpp);
12452    while (eventType != XmlPullParser.END_TAG) {
12453  if (!parseInsurancePlanInsurancePlanPlanGeneralCostComponentContent(eventType, xpp, owner, res))
12454        unknownContent(xpp);
12455      eventType = nextNoWhitespace(xpp);
12456    }
12457    next(xpp);
12458    parseElementClose(res);
12459    return res;
12460  }
12461
12462  protected boolean parseInsurancePlanInsurancePlanPlanGeneralCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanGeneralCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12464        res.setType(parseCodeableConcept(xpp));
12465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupSize")) {
12466        res.setGroupSizeElement(parsePositiveInt(xpp));
12467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
12468        res.setCost(parseMoney(xpp));
12469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12470        res.setCommentElement(parseString(xpp));
12471      } else if (!parseBackboneElementContent(eventType, xpp, res))
12472        return false;
12473    return true;
12474  }
12475
12476  protected InsurancePlan.InsurancePlanPlanSpecificCostComponent parseInsurancePlanInsurancePlanPlanSpecificCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12477    InsurancePlan.InsurancePlanPlanSpecificCostComponent res = new InsurancePlan.InsurancePlanPlanSpecificCostComponent();
12478    parseBackboneAttributes(xpp, res);
12479    next(xpp);
12480    int eventType = nextNoWhitespace(xpp);
12481    while (eventType != XmlPullParser.END_TAG) {
12482  if (!parseInsurancePlanInsurancePlanPlanSpecificCostComponentContent(eventType, xpp, owner, res))
12483        unknownContent(xpp);
12484      eventType = nextNoWhitespace(xpp);
12485    }
12486    next(xpp);
12487    parseElementClose(res);
12488    return res;
12489  }
12490
12491  protected boolean parseInsurancePlanInsurancePlanPlanSpecificCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanSpecificCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12492      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12493        res.setCategory(parseCodeableConcept(xpp));
12494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
12495        res.getBenefit().add(parseInsurancePlanPlanBenefitComponent(xpp, owner));
12496      } else if (!parseBackboneElementContent(eventType, xpp, res))
12497        return false;
12498    return true;
12499  }
12500
12501  protected InsurancePlan.PlanBenefitComponent parseInsurancePlanPlanBenefitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12502    InsurancePlan.PlanBenefitComponent res = new InsurancePlan.PlanBenefitComponent();
12503    parseBackboneAttributes(xpp, res);
12504    next(xpp);
12505    int eventType = nextNoWhitespace(xpp);
12506    while (eventType != XmlPullParser.END_TAG) {
12507  if (!parseInsurancePlanPlanBenefitComponentContent(eventType, xpp, owner, res))
12508        unknownContent(xpp);
12509      eventType = nextNoWhitespace(xpp);
12510    }
12511    next(xpp);
12512    parseElementClose(res);
12513    return res;
12514  }
12515
12516  protected boolean parseInsurancePlanPlanBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.PlanBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12517      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12518        res.setType(parseCodeableConcept(xpp));
12519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
12520        res.getCost().add(parseInsurancePlanPlanBenefitCostComponent(xpp, owner));
12521      } else if (!parseBackboneElementContent(eventType, xpp, res))
12522        return false;
12523    return true;
12524  }
12525
12526  protected InsurancePlan.PlanBenefitCostComponent parseInsurancePlanPlanBenefitCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12527    InsurancePlan.PlanBenefitCostComponent res = new InsurancePlan.PlanBenefitCostComponent();
12528    parseBackboneAttributes(xpp, res);
12529    next(xpp);
12530    int eventType = nextNoWhitespace(xpp);
12531    while (eventType != XmlPullParser.END_TAG) {
12532  if (!parseInsurancePlanPlanBenefitCostComponentContent(eventType, xpp, owner, res))
12533        unknownContent(xpp);
12534      eventType = nextNoWhitespace(xpp);
12535    }
12536    next(xpp);
12537    parseElementClose(res);
12538    return res;
12539  }
12540
12541  protected boolean parseInsurancePlanPlanBenefitCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.PlanBenefitCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12542      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12543        res.setType(parseCodeableConcept(xpp));
12544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
12545        res.setApplicability(parseCodeableConcept(xpp));
12546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiers")) {
12547        res.getQualifiers().add(parseCodeableConcept(xpp));
12548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12549        res.setValue(parseQuantity(xpp));
12550      } else if (!parseBackboneElementContent(eventType, xpp, res))
12551        return false;
12552    return true;
12553  }
12554
12555  protected Invoice parseInvoice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12556    Invoice res = new Invoice();
12557    parseDomainResourceAttributes(xpp, res);
12558    next(xpp);
12559    int eventType = nextNoWhitespace(xpp);
12560    while (eventType != XmlPullParser.END_TAG) {
12561  if (!parseInvoiceContent(eventType, xpp, res))
12562        unknownContent(xpp);
12563      eventType = nextNoWhitespace(xpp);
12564    }
12565    next(xpp);
12566    parseElementClose(res);
12567    return res;
12568  }
12569
12570  protected boolean parseInvoiceContent(int eventType, XmlPullParser xpp, Invoice res) throws XmlPullParserException, IOException, FHIRFormatError {
12571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12572        res.getIdentifier().add(parseIdentifier(xpp));
12573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12574        res.setStatusElement(parseEnumeration(xpp, Invoice.InvoiceStatus.NULL, new Invoice.InvoiceStatusEnumFactory()));
12575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelledReason")) {
12576        res.setCancelledReasonElement(parseString(xpp));
12577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12578        res.setType(parseCodeableConcept(xpp));
12579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12580        res.setSubject(parseReference(xpp));
12581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
12582        res.setRecipient(parseReference(xpp));
12583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12584        res.setDateElement(parseDateTime(xpp));
12585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
12586        res.getParticipant().add(parseInvoiceInvoiceParticipantComponent(xpp, res));
12587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
12588        res.setIssuer(parseReference(xpp));
12589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
12590        res.setAccount(parseReference(xpp));
12591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lineItem")) {
12592        res.getLineItem().add(parseInvoiceInvoiceLineItemComponent(xpp, res));
12593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalPriceComponent")) {
12594        res.getTotalPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, res));
12595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalNet")) {
12596        res.setTotalNet(parseMoney(xpp));
12597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalGross")) {
12598        res.setTotalGross(parseMoney(xpp));
12599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentTerms")) {
12600        res.setPaymentTermsElement(parseMarkdown(xpp));
12601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12602        res.getNote().add(parseAnnotation(xpp));
12603      } else if (!parseDomainResourceContent(eventType, xpp, res))
12604        return false;
12605    return true;
12606  }
12607
12608  protected Invoice.InvoiceParticipantComponent parseInvoiceInvoiceParticipantComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12609    Invoice.InvoiceParticipantComponent res = new Invoice.InvoiceParticipantComponent();
12610    parseBackboneAttributes(xpp, res);
12611    next(xpp);
12612    int eventType = nextNoWhitespace(xpp);
12613    while (eventType != XmlPullParser.END_TAG) {
12614  if (!parseInvoiceInvoiceParticipantComponentContent(eventType, xpp, owner, res))
12615        unknownContent(xpp);
12616      eventType = nextNoWhitespace(xpp);
12617    }
12618    next(xpp);
12619    parseElementClose(res);
12620    return res;
12621  }
12622
12623  protected boolean parseInvoiceInvoiceParticipantComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
12625        res.setRole(parseCodeableConcept(xpp));
12626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
12627        res.setActor(parseReference(xpp));
12628      } else if (!parseBackboneElementContent(eventType, xpp, res))
12629        return false;
12630    return true;
12631  }
12632
12633  protected Invoice.InvoiceLineItemComponent parseInvoiceInvoiceLineItemComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12634    Invoice.InvoiceLineItemComponent res = new Invoice.InvoiceLineItemComponent();
12635    parseBackboneAttributes(xpp, res);
12636    next(xpp);
12637    int eventType = nextNoWhitespace(xpp);
12638    while (eventType != XmlPullParser.END_TAG) {
12639  if (!parseInvoiceInvoiceLineItemComponentContent(eventType, xpp, owner, res))
12640        unknownContent(xpp);
12641      eventType = nextNoWhitespace(xpp);
12642    }
12643    next(xpp);
12644    parseElementClose(res);
12645    return res;
12646  }
12647
12648  protected boolean parseInvoiceInvoiceLineItemComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12649      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
12650        res.setSequenceElement(parsePositiveInt(xpp));
12651      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "chargeItem")) {
12652        res.setChargeItem(parseType("chargeItem", xpp));
12653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
12654        res.getPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, owner));
12655      } else if (!parseBackboneElementContent(eventType, xpp, res))
12656        return false;
12657    return true;
12658  }
12659
12660  protected Invoice.InvoiceLineItemPriceComponentComponent parseInvoiceInvoiceLineItemPriceComponentComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12661    Invoice.InvoiceLineItemPriceComponentComponent res = new Invoice.InvoiceLineItemPriceComponentComponent();
12662    parseBackboneAttributes(xpp, res);
12663    next(xpp);
12664    int eventType = nextNoWhitespace(xpp);
12665    while (eventType != XmlPullParser.END_TAG) {
12666  if (!parseInvoiceInvoiceLineItemPriceComponentComponentContent(eventType, xpp, owner, res))
12667        unknownContent(xpp);
12668      eventType = nextNoWhitespace(xpp);
12669    }
12670    next(xpp);
12671    parseElementClose(res);
12672    return res;
12673  }
12674
12675  protected boolean parseInvoiceInvoiceLineItemPriceComponentComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12676      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12677        res.setTypeElement(parseEnumeration(xpp, Invoice.InvoicePriceComponentType.NULL, new Invoice.InvoicePriceComponentTypeEnumFactory()));
12678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12679        res.setCode(parseCodeableConcept(xpp));
12680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
12681        res.setFactorElement(parseDecimal(xpp));
12682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12683        res.setAmount(parseMoney(xpp));
12684      } else if (!parseBackboneElementContent(eventType, xpp, res))
12685        return false;
12686    return true;
12687  }
12688
12689  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12690    Library res = new Library();
12691    parseDomainResourceAttributes(xpp, res);
12692    next(xpp);
12693    int eventType = nextNoWhitespace(xpp);
12694    while (eventType != XmlPullParser.END_TAG) {
12695  if (!parseLibraryContent(eventType, xpp, res))
12696        unknownContent(xpp);
12697      eventType = nextNoWhitespace(xpp);
12698    }
12699    next(xpp);
12700    parseElementClose(res);
12701    return res;
12702  }
12703
12704  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
12705      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12706        res.setUrlElement(parseUri(xpp));
12707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12708        res.getIdentifier().add(parseIdentifier(xpp));
12709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12710        res.setVersionElement(parseString(xpp));
12711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12712        res.setNameElement(parseString(xpp));
12713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12714        res.setTitleElement(parseString(xpp));
12715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
12716        res.setSubtitleElement(parseString(xpp));
12717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12718        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12720        res.setExperimentalElement(parseBoolean(xpp));
12721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12722        res.setType(parseCodeableConcept(xpp));
12723      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
12724        res.setSubject(parseType("subject", xpp));
12725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12726        res.setDateElement(parseDateTime(xpp));
12727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12728        res.setPublisherElement(parseString(xpp));
12729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12730        res.getContact().add(parseContactDetail(xpp));
12731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12732        res.setDescriptionElement(parseMarkdown(xpp));
12733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12734        res.getUseContext().add(parseUsageContext(xpp));
12735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12736        res.getJurisdiction().add(parseCodeableConcept(xpp));
12737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12738        res.setPurposeElement(parseMarkdown(xpp));
12739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12740        res.setUsageElement(parseString(xpp));
12741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12742        res.setCopyrightElement(parseMarkdown(xpp));
12743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12744        res.setApprovalDateElement(parseDate(xpp));
12745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12746        res.setLastReviewDateElement(parseDate(xpp));
12747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12748        res.setEffectivePeriod(parsePeriod(xpp));
12749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12750        res.getTopic().add(parseCodeableConcept(xpp));
12751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12752        res.getAuthor().add(parseContactDetail(xpp));
12753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
12754        res.getEditor().add(parseContactDetail(xpp));
12755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
12756        res.getReviewer().add(parseContactDetail(xpp));
12757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
12758        res.getEndorser().add(parseContactDetail(xpp));
12759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12760        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12762        res.getParameter().add(parseParameterDefinition(xpp));
12763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
12764        res.getDataRequirement().add(parseDataRequirement(xpp));
12765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
12766        res.getContent().add(parseAttachment(xpp));
12767      } else if (!parseDomainResourceContent(eventType, xpp, res))
12768        return false;
12769    return true;
12770  }
12771
12772  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12773    Linkage res = new Linkage();
12774    parseDomainResourceAttributes(xpp, res);
12775    next(xpp);
12776    int eventType = nextNoWhitespace(xpp);
12777    while (eventType != XmlPullParser.END_TAG) {
12778  if (!parseLinkageContent(eventType, xpp, res))
12779        unknownContent(xpp);
12780      eventType = nextNoWhitespace(xpp);
12781    }
12782    next(xpp);
12783    parseElementClose(res);
12784    return res;
12785  }
12786
12787  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
12788      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12789        res.setActiveElement(parseBoolean(xpp));
12790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12791        res.setAuthor(parseReference(xpp));
12792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
12793        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
12794      } else if (!parseDomainResourceContent(eventType, xpp, res))
12795        return false;
12796    return true;
12797  }
12798
12799  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
12800    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
12801    parseBackboneAttributes(xpp, res);
12802    next(xpp);
12803    int eventType = nextNoWhitespace(xpp);
12804    while (eventType != XmlPullParser.END_TAG) {
12805  if (!parseLinkageLinkageItemComponentContent(eventType, xpp, owner, res))
12806        unknownContent(xpp);
12807      eventType = nextNoWhitespace(xpp);
12808    }
12809    next(xpp);
12810    parseElementClose(res);
12811    return res;
12812  }
12813
12814  protected boolean parseLinkageLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage owner, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12815      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12816        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
12817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12818        res.setResource(parseReference(xpp));
12819      } else if (!parseBackboneElementContent(eventType, xpp, res))
12820        return false;
12821    return true;
12822  }
12823
12824  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12825    ListResource res = new ListResource();
12826    parseDomainResourceAttributes(xpp, res);
12827    next(xpp);
12828    int eventType = nextNoWhitespace(xpp);
12829    while (eventType != XmlPullParser.END_TAG) {
12830  if (!parseListResourceContent(eventType, xpp, res))
12831        unknownContent(xpp);
12832      eventType = nextNoWhitespace(xpp);
12833    }
12834    next(xpp);
12835    parseElementClose(res);
12836    return res;
12837  }
12838
12839  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
12840      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12841        res.getIdentifier().add(parseIdentifier(xpp));
12842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12843        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
12844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12845        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
12846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12847        res.setTitleElement(parseString(xpp));
12848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12849        res.setCode(parseCodeableConcept(xpp));
12850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12851        res.setSubject(parseReference(xpp));
12852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
12853        res.setEncounter(parseReference(xpp));
12854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12855        res.setDateElement(parseDateTime(xpp));
12856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12857        res.setSource(parseReference(xpp));
12858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
12859        res.setOrderedBy(parseCodeableConcept(xpp));
12860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12861        res.getNote().add(parseAnnotation(xpp));
12862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
12863        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
12864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
12865        res.setEmptyReason(parseCodeableConcept(xpp));
12866      } else if (!parseDomainResourceContent(eventType, xpp, res))
12867        return false;
12868    return true;
12869  }
12870
12871  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
12872    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
12873    parseBackboneAttributes(xpp, res);
12874    next(xpp);
12875    int eventType = nextNoWhitespace(xpp);
12876    while (eventType != XmlPullParser.END_TAG) {
12877  if (!parseListResourceListEntryComponentContent(eventType, xpp, owner, res))
12878        unknownContent(xpp);
12879      eventType = nextNoWhitespace(xpp);
12880    }
12881    next(xpp);
12882    parseElementClose(res);
12883    return res;
12884  }
12885
12886  protected boolean parseListResourceListEntryComponentContent(int eventType, XmlPullParser xpp, ListResource owner, ListResource.ListEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12887      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
12888        res.setFlag(parseCodeableConcept(xpp));
12889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
12890        res.setDeletedElement(parseBoolean(xpp));
12891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12892        res.setDateElement(parseDateTime(xpp));
12893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
12894        res.setItem(parseReference(xpp));
12895      } else if (!parseBackboneElementContent(eventType, xpp, res))
12896        return false;
12897    return true;
12898  }
12899
12900  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12901    Location res = new Location();
12902    parseDomainResourceAttributes(xpp, res);
12903    next(xpp);
12904    int eventType = nextNoWhitespace(xpp);
12905    while (eventType != XmlPullParser.END_TAG) {
12906  if (!parseLocationContent(eventType, xpp, res))
12907        unknownContent(xpp);
12908      eventType = nextNoWhitespace(xpp);
12909    }
12910    next(xpp);
12911    parseElementClose(res);
12912    return res;
12913  }
12914
12915  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
12916      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12917        res.getIdentifier().add(parseIdentifier(xpp));
12918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12919        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
12920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
12921        res.setOperationalStatus(parseCoding(xpp));
12922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12923        res.setNameElement(parseString(xpp));
12924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12925        res.getAlias().add(parseString(xpp));
12926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12927        res.setDescriptionElement(parseString(xpp));
12928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12929        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
12930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12931        res.getType().add(parseCodeableConcept(xpp));
12932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12933        res.getTelecom().add(parseContactPoint(xpp));
12934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12935        res.setAddress(parseAddress(xpp));
12936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
12937        res.setPhysicalType(parseCodeableConcept(xpp));
12938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
12939        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
12940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12941        res.setManagingOrganization(parseReference(xpp));
12942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12943        res.setPartOf(parseReference(xpp));
12944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hoursOfOperation")) {
12945        res.getHoursOfOperation().add(parseLocationLocationHoursOfOperationComponent(xpp, res));
12946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
12947        res.setAvailabilityExceptionsElement(parseString(xpp));
12948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12949        res.getEndpoint().add(parseReference(xpp));
12950      } else if (!parseDomainResourceContent(eventType, xpp, res))
12951        return false;
12952    return true;
12953  }
12954
12955  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
12956    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
12957    parseBackboneAttributes(xpp, res);
12958    next(xpp);
12959    int eventType = nextNoWhitespace(xpp);
12960    while (eventType != XmlPullParser.END_TAG) {
12961  if (!parseLocationLocationPositionComponentContent(eventType, xpp, owner, res))
12962        unknownContent(xpp);
12963      eventType = nextNoWhitespace(xpp);
12964    }
12965    next(xpp);
12966    parseElementClose(res);
12967    return res;
12968  }
12969
12970  protected boolean parseLocationLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12971      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
12972        res.setLongitudeElement(parseDecimal(xpp));
12973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
12974        res.setLatitudeElement(parseDecimal(xpp));
12975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
12976        res.setAltitudeElement(parseDecimal(xpp));
12977      } else if (!parseBackboneElementContent(eventType, xpp, res))
12978        return false;
12979    return true;
12980  }
12981
12982  protected Location.LocationHoursOfOperationComponent parseLocationLocationHoursOfOperationComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
12983    Location.LocationHoursOfOperationComponent res = new Location.LocationHoursOfOperationComponent();
12984    parseBackboneAttributes(xpp, res);
12985    next(xpp);
12986    int eventType = nextNoWhitespace(xpp);
12987    while (eventType != XmlPullParser.END_TAG) {
12988  if (!parseLocationLocationHoursOfOperationComponentContent(eventType, xpp, owner, res))
12989        unknownContent(xpp);
12990      eventType = nextNoWhitespace(xpp);
12991    }
12992    next(xpp);
12993    parseElementClose(res);
12994    return res;
12995  }
12996
12997  protected boolean parseLocationLocationHoursOfOperationComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationHoursOfOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12998      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
12999        res.getDaysOfWeek().add(parseEnumeration(xpp, Location.DaysOfWeek.NULL, new Location.DaysOfWeekEnumFactory()));
13000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
13001        res.setAllDayElement(parseBoolean(xpp));
13002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("openingTime")) {
13003        res.setOpeningTimeElement(parseTime(xpp));
13004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closingTime")) {
13005        res.setClosingTimeElement(parseTime(xpp));
13006      } else if (!parseBackboneElementContent(eventType, xpp, res))
13007        return false;
13008    return true;
13009  }
13010
13011  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13012    Measure res = new Measure();
13013    parseDomainResourceAttributes(xpp, res);
13014    next(xpp);
13015    int eventType = nextNoWhitespace(xpp);
13016    while (eventType != XmlPullParser.END_TAG) {
13017  if (!parseMeasureContent(eventType, xpp, res))
13018        unknownContent(xpp);
13019      eventType = nextNoWhitespace(xpp);
13020    }
13021    next(xpp);
13022    parseElementClose(res);
13023    return res;
13024  }
13025
13026  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
13027      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13028        res.setUrlElement(parseUri(xpp));
13029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13030        res.getIdentifier().add(parseIdentifier(xpp));
13031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13032        res.setVersionElement(parseString(xpp));
13033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13034        res.setNameElement(parseString(xpp));
13035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13036        res.setTitleElement(parseString(xpp));
13037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
13038        res.setSubtitleElement(parseString(xpp));
13039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13040        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13042        res.setExperimentalElement(parseBoolean(xpp));
13043      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
13044        res.setSubject(parseType("subject", xpp));
13045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13046        res.setDateElement(parseDateTime(xpp));
13047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13048        res.setPublisherElement(parseString(xpp));
13049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13050        res.getContact().add(parseContactDetail(xpp));
13051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13052        res.setDescriptionElement(parseMarkdown(xpp));
13053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13054        res.getUseContext().add(parseUsageContext(xpp));
13055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13056        res.getJurisdiction().add(parseCodeableConcept(xpp));
13057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13058        res.setPurposeElement(parseMarkdown(xpp));
13059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
13060        res.setUsageElement(parseString(xpp));
13061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13062        res.setCopyrightElement(parseMarkdown(xpp));
13063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
13064        res.setApprovalDateElement(parseDate(xpp));
13065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
13066        res.setLastReviewDateElement(parseDate(xpp));
13067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
13068        res.setEffectivePeriod(parsePeriod(xpp));
13069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
13070        res.getTopic().add(parseCodeableConcept(xpp));
13071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13072        res.getAuthor().add(parseContactDetail(xpp));
13073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
13074        res.getEditor().add(parseContactDetail(xpp));
13075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
13076        res.getReviewer().add(parseContactDetail(xpp));
13077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
13078        res.getEndorser().add(parseContactDetail(xpp));
13079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
13080        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
13081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
13082        res.getLibrary().add(parseCanonical(xpp));
13083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
13084        res.setDisclaimerElement(parseMarkdown(xpp));
13085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
13086        res.setScoring(parseCodeableConcept(xpp));
13087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
13088        res.setCompositeScoring(parseCodeableConcept(xpp));
13089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13090        res.getType().add(parseCodeableConcept(xpp));
13091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
13092        res.setRiskAdjustmentElement(parseString(xpp));
13093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
13094        res.setRateAggregationElement(parseString(xpp));
13095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
13096        res.setRationaleElement(parseMarkdown(xpp));
13097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
13098        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
13099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
13100        res.setImprovementNotation(parseCodeableConcept(xpp));
13101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13102        res.getDefinition().add(parseMarkdown(xpp));
13103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
13104        res.setGuidanceElement(parseMarkdown(xpp));
13105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
13106        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
13107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
13108        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
13109      } else if (!parseDomainResourceContent(eventType, xpp, res))
13110        return false;
13111    return true;
13112  }
13113
13114  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13115    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
13116    parseBackboneAttributes(xpp, res);
13117    next(xpp);
13118    int eventType = nextNoWhitespace(xpp);
13119    while (eventType != XmlPullParser.END_TAG) {
13120  if (!parseMeasureMeasureGroupComponentContent(eventType, xpp, owner, res))
13121        unknownContent(xpp);
13122      eventType = nextNoWhitespace(xpp);
13123    }
13124    next(xpp);
13125    parseElementClose(res);
13126    return res;
13127  }
13128
13129  protected boolean parseMeasureMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13130      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13131        res.setCode(parseCodeableConcept(xpp));
13132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13133        res.setDescriptionElement(parseString(xpp));
13134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13135        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
13136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
13137        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
13138      } else if (!parseBackboneElementContent(eventType, xpp, res))
13139        return false;
13140    return true;
13141  }
13142
13143  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13144    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
13145    parseBackboneAttributes(xpp, res);
13146    next(xpp);
13147    int eventType = nextNoWhitespace(xpp);
13148    while (eventType != XmlPullParser.END_TAG) {
13149  if (!parseMeasureMeasureGroupPopulationComponentContent(eventType, xpp, owner, res))
13150        unknownContent(xpp);
13151      eventType = nextNoWhitespace(xpp);
13152    }
13153    next(xpp);
13154    parseElementClose(res);
13155    return res;
13156  }
13157
13158  protected boolean parseMeasureMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13160        res.setCode(parseCodeableConcept(xpp));
13161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13162        res.setDescriptionElement(parseString(xpp));
13163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13164        res.setCriteria(parseExpression(xpp));
13165      } else if (!parseBackboneElementContent(eventType, xpp, res))
13166        return false;
13167    return true;
13168  }
13169
13170  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13171    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
13172    parseBackboneAttributes(xpp, res);
13173    next(xpp);
13174    int eventType = nextNoWhitespace(xpp);
13175    while (eventType != XmlPullParser.END_TAG) {
13176  if (!parseMeasureMeasureGroupStratifierComponentContent(eventType, xpp, owner, res))
13177        unknownContent(xpp);
13178      eventType = nextNoWhitespace(xpp);
13179    }
13180    next(xpp);
13181    parseElementClose(res);
13182    return res;
13183  }
13184
13185  protected boolean parseMeasureMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13186      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13187        res.setCode(parseCodeableConcept(xpp));
13188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13189        res.setDescriptionElement(parseString(xpp));
13190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13191        res.setCriteria(parseExpression(xpp));
13192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
13193        res.getComponent().add(parseMeasureMeasureGroupStratifierComponentComponent(xpp, owner));
13194      } else if (!parseBackboneElementContent(eventType, xpp, res))
13195        return false;
13196    return true;
13197  }
13198
13199  protected Measure.MeasureGroupStratifierComponentComponent parseMeasureMeasureGroupStratifierComponentComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13200    Measure.MeasureGroupStratifierComponentComponent res = new Measure.MeasureGroupStratifierComponentComponent();
13201    parseBackboneAttributes(xpp, res);
13202    next(xpp);
13203    int eventType = nextNoWhitespace(xpp);
13204    while (eventType != XmlPullParser.END_TAG) {
13205  if (!parseMeasureMeasureGroupStratifierComponentComponentContent(eventType, xpp, owner, res))
13206        unknownContent(xpp);
13207      eventType = nextNoWhitespace(xpp);
13208    }
13209    next(xpp);
13210    parseElementClose(res);
13211    return res;
13212  }
13213
13214  protected boolean parseMeasureMeasureGroupStratifierComponentComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13215      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13216        res.setCode(parseCodeableConcept(xpp));
13217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13218        res.setDescriptionElement(parseString(xpp));
13219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13220        res.setCriteria(parseExpression(xpp));
13221      } else if (!parseBackboneElementContent(eventType, xpp, res))
13222        return false;
13223    return true;
13224  }
13225
13226  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13227    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
13228    parseBackboneAttributes(xpp, res);
13229    next(xpp);
13230    int eventType = nextNoWhitespace(xpp);
13231    while (eventType != XmlPullParser.END_TAG) {
13232  if (!parseMeasureMeasureSupplementalDataComponentContent(eventType, xpp, owner, res))
13233        unknownContent(xpp);
13234      eventType = nextNoWhitespace(xpp);
13235    }
13236    next(xpp);
13237    parseElementClose(res);
13238    return res;
13239  }
13240
13241  protected boolean parseMeasureMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13242      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13243        res.setCode(parseCodeableConcept(xpp));
13244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
13245        res.getUsage().add(parseCodeableConcept(xpp));
13246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13247        res.setDescriptionElement(parseString(xpp));
13248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13249        res.setCriteria(parseExpression(xpp));
13250      } else if (!parseBackboneElementContent(eventType, xpp, res))
13251        return false;
13252    return true;
13253  }
13254
13255  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13256    MeasureReport res = new MeasureReport();
13257    parseDomainResourceAttributes(xpp, res);
13258    next(xpp);
13259    int eventType = nextNoWhitespace(xpp);
13260    while (eventType != XmlPullParser.END_TAG) {
13261  if (!parseMeasureReportContent(eventType, xpp, res))
13262        unknownContent(xpp);
13263      eventType = nextNoWhitespace(xpp);
13264    }
13265    next(xpp);
13266    parseElementClose(res);
13267    return res;
13268  }
13269
13270  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
13271      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13272        res.getIdentifier().add(parseIdentifier(xpp));
13273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13274        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
13275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13276        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
13277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
13278        res.setMeasureElement(parseCanonical(xpp));
13279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13280        res.setSubject(parseReference(xpp));
13281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13282        res.setDateElement(parseDateTime(xpp));
13283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
13284        res.setReporter(parseReference(xpp));
13285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13286        res.setPeriod(parsePeriod(xpp));
13287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
13288        res.setImprovementNotation(parseCodeableConcept(xpp));
13289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
13290        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
13291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResource")) {
13292        res.getEvaluatedResource().add(parseReference(xpp));
13293      } else if (!parseDomainResourceContent(eventType, xpp, res))
13294        return false;
13295    return true;
13296  }
13297
13298  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13299    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
13300    parseBackboneAttributes(xpp, res);
13301    next(xpp);
13302    int eventType = nextNoWhitespace(xpp);
13303    while (eventType != XmlPullParser.END_TAG) {
13304  if (!parseMeasureReportMeasureReportGroupComponentContent(eventType, xpp, owner, res))
13305        unknownContent(xpp);
13306      eventType = nextNoWhitespace(xpp);
13307    }
13308    next(xpp);
13309    parseElementClose(res);
13310    return res;
13311  }
13312
13313  protected boolean parseMeasureReportMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13314      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13315        res.setCode(parseCodeableConcept(xpp));
13316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13317        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
13318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
13319        res.setMeasureScore(parseQuantity(xpp));
13320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
13321        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
13322      } else if (!parseBackboneElementContent(eventType, xpp, res))
13323        return false;
13324    return true;
13325  }
13326
13327  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13328    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
13329    parseBackboneAttributes(xpp, res);
13330    next(xpp);
13331    int eventType = nextNoWhitespace(xpp);
13332    while (eventType != XmlPullParser.END_TAG) {
13333  if (!parseMeasureReportMeasureReportGroupPopulationComponentContent(eventType, xpp, owner, res))
13334        unknownContent(xpp);
13335      eventType = nextNoWhitespace(xpp);
13336    }
13337    next(xpp);
13338    parseElementClose(res);
13339    return res;
13340  }
13341
13342  protected boolean parseMeasureReportMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13343      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13344        res.setCode(parseCodeableConcept(xpp));
13345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
13346        res.setCountElement(parseInteger(xpp));
13347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
13348        res.setSubjectResults(parseReference(xpp));
13349      } else if (!parseBackboneElementContent(eventType, xpp, res))
13350        return false;
13351    return true;
13352  }
13353
13354  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13355    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
13356    parseBackboneAttributes(xpp, res);
13357    next(xpp);
13358    int eventType = nextNoWhitespace(xpp);
13359    while (eventType != XmlPullParser.END_TAG) {
13360  if (!parseMeasureReportMeasureReportGroupStratifierComponentContent(eventType, xpp, owner, res))
13361        unknownContent(xpp);
13362      eventType = nextNoWhitespace(xpp);
13363    }
13364    next(xpp);
13365    parseElementClose(res);
13366    return res;
13367  }
13368
13369  protected boolean parseMeasureReportMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13370      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13371        res.getCode().add(parseCodeableConcept(xpp));
13372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
13373        res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp, owner));
13374      } else if (!parseBackboneElementContent(eventType, xpp, res))
13375        return false;
13376    return true;
13377  }
13378
13379  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13380    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
13381    parseBackboneAttributes(xpp, res);
13382    next(xpp);
13383    int eventType = nextNoWhitespace(xpp);
13384    while (eventType != XmlPullParser.END_TAG) {
13385  if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, owner, res))
13386        unknownContent(xpp);
13387      eventType = nextNoWhitespace(xpp);
13388    }
13389    next(xpp);
13390    parseElementClose(res);
13391    return res;
13392  }
13393
13394  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13395      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13396        res.setValue(parseCodeableConcept(xpp));
13397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
13398        res.getComponent().add(parseMeasureReportStratifierGroupComponentComponent(xpp, owner));
13399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13400        res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp, owner));
13401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
13402        res.setMeasureScore(parseQuantity(xpp));
13403      } else if (!parseBackboneElementContent(eventType, xpp, res))
13404        return false;
13405    return true;
13406  }
13407
13408  protected MeasureReport.StratifierGroupComponentComponent parseMeasureReportStratifierGroupComponentComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13409    MeasureReport.StratifierGroupComponentComponent res = new MeasureReport.StratifierGroupComponentComponent();
13410    parseBackboneAttributes(xpp, res);
13411    next(xpp);
13412    int eventType = nextNoWhitespace(xpp);
13413    while (eventType != XmlPullParser.END_TAG) {
13414  if (!parseMeasureReportStratifierGroupComponentComponentContent(eventType, xpp, owner, res))
13415        unknownContent(xpp);
13416      eventType = nextNoWhitespace(xpp);
13417    }
13418    next(xpp);
13419    parseElementClose(res);
13420    return res;
13421  }
13422
13423  protected boolean parseMeasureReportStratifierGroupComponentComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13424      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13425        res.setCode(parseCodeableConcept(xpp));
13426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13427        res.setValue(parseCodeableConcept(xpp));
13428      } else if (!parseBackboneElementContent(eventType, xpp, res))
13429        return false;
13430    return true;
13431  }
13432
13433  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13434    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
13435    parseBackboneAttributes(xpp, res);
13436    next(xpp);
13437    int eventType = nextNoWhitespace(xpp);
13438    while (eventType != XmlPullParser.END_TAG) {
13439  if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, owner, res))
13440        unknownContent(xpp);
13441      eventType = nextNoWhitespace(xpp);
13442    }
13443    next(xpp);
13444    parseElementClose(res);
13445    return res;
13446  }
13447
13448  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13449      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13450        res.setCode(parseCodeableConcept(xpp));
13451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
13452        res.setCountElement(parseInteger(xpp));
13453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
13454        res.setSubjectResults(parseReference(xpp));
13455      } else if (!parseBackboneElementContent(eventType, xpp, res))
13456        return false;
13457    return true;
13458  }
13459
13460  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13461    Media res = new Media();
13462    parseDomainResourceAttributes(xpp, res);
13463    next(xpp);
13464    int eventType = nextNoWhitespace(xpp);
13465    while (eventType != XmlPullParser.END_TAG) {
13466  if (!parseMediaContent(eventType, xpp, res))
13467        unknownContent(xpp);
13468      eventType = nextNoWhitespace(xpp);
13469    }
13470    next(xpp);
13471    parseElementClose(res);
13472    return res;
13473  }
13474
13475  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
13476      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13477        res.getIdentifier().add(parseIdentifier(xpp));
13478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13479        res.getBasedOn().add(parseReference(xpp));
13480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13481        res.getPartOf().add(parseReference(xpp));
13482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13483        res.setStatusElement(parseEnumeration(xpp, Media.MediaStatus.NULL, new Media.MediaStatusEnumFactory()));
13484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13485        res.setType(parseCodeableConcept(xpp));
13486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
13487        res.setModality(parseCodeableConcept(xpp));
13488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
13489        res.setView(parseCodeableConcept(xpp));
13490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13491        res.setSubject(parseReference(xpp));
13492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
13493        res.setEncounter(parseReference(xpp));
13494      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "created")) {
13495        res.setCreated(parseType("created", xpp));
13496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
13497        res.setIssuedElement(parseInstant(xpp));
13498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
13499        res.setOperator(parseReference(xpp));
13500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13501        res.getReasonCode().add(parseCodeableConcept(xpp));
13502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13503        res.setBodySite(parseCodeableConcept(xpp));
13504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
13505        res.setDeviceNameElement(parseString(xpp));
13506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13507        res.setDevice(parseReference(xpp));
13508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
13509        res.setHeightElement(parsePositiveInt(xpp));
13510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
13511        res.setWidthElement(parsePositiveInt(xpp));
13512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
13513        res.setFramesElement(parsePositiveInt(xpp));
13514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
13515        res.setDurationElement(parseDecimal(xpp));
13516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
13517        res.setContent(parseAttachment(xpp));
13518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13519        res.getNote().add(parseAnnotation(xpp));
13520      } else if (!parseDomainResourceContent(eventType, xpp, res))
13521        return false;
13522    return true;
13523  }
13524
13525  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13526    Medication res = new Medication();
13527    parseDomainResourceAttributes(xpp, res);
13528    next(xpp);
13529    int eventType = nextNoWhitespace(xpp);
13530    while (eventType != XmlPullParser.END_TAG) {
13531  if (!parseMedicationContent(eventType, xpp, res))
13532        unknownContent(xpp);
13533      eventType = nextNoWhitespace(xpp);
13534    }
13535    next(xpp);
13536    parseElementClose(res);
13537    return res;
13538  }
13539
13540  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
13541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13542        res.getIdentifier().add(parseIdentifier(xpp));
13543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13544        res.setCode(parseCodeableConcept(xpp));
13545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13546        res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatus.NULL, new Medication.MedicationStatusEnumFactory()));
13547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13548        res.setManufacturer(parseReference(xpp));
13549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
13550        res.setForm(parseCodeableConcept(xpp));
13551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13552        res.setAmount(parseRatio(xpp));
13553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13554        res.getIngredient().add(parseMedicationMedicationIngredientComponent(xpp, res));
13555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
13556        res.setBatch(parseMedicationMedicationBatchComponent(xpp, res));
13557      } else if (!parseDomainResourceContent(eventType, xpp, res))
13558        return false;
13559    return true;
13560  }
13561
13562  protected Medication.MedicationIngredientComponent parseMedicationMedicationIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
13563    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
13564    parseBackboneAttributes(xpp, res);
13565    next(xpp);
13566    int eventType = nextNoWhitespace(xpp);
13567    while (eventType != XmlPullParser.END_TAG) {
13568  if (!parseMedicationMedicationIngredientComponentContent(eventType, xpp, owner, res))
13569        unknownContent(xpp);
13570      eventType = nextNoWhitespace(xpp);
13571    }
13572    next(xpp);
13573    parseElementClose(res);
13574    return res;
13575  }
13576
13577  protected boolean parseMedicationMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13578      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
13579        res.setItem(parseType("item", xpp));
13580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
13581        res.setIsActiveElement(parseBoolean(xpp));
13582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13583        res.setStrength(parseRatio(xpp));
13584      } else if (!parseBackboneElementContent(eventType, xpp, res))
13585        return false;
13586    return true;
13587  }
13588
13589  protected Medication.MedicationBatchComponent parseMedicationMedicationBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
13590    Medication.MedicationBatchComponent res = new Medication.MedicationBatchComponent();
13591    parseBackboneAttributes(xpp, res);
13592    next(xpp);
13593    int eventType = nextNoWhitespace(xpp);
13594    while (eventType != XmlPullParser.END_TAG) {
13595  if (!parseMedicationMedicationBatchComponentContent(eventType, xpp, owner, res))
13596        unknownContent(xpp);
13597      eventType = nextNoWhitespace(xpp);
13598    }
13599    next(xpp);
13600    parseElementClose(res);
13601    return res;
13602  }
13603
13604  protected boolean parseMedicationMedicationBatchComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13605      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
13606        res.setLotNumberElement(parseString(xpp));
13607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
13608        res.setExpirationDateElement(parseDateTime(xpp));
13609      } else if (!parseBackboneElementContent(eventType, xpp, res))
13610        return false;
13611    return true;
13612  }
13613
13614  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13615    MedicationAdministration res = new MedicationAdministration();
13616    parseDomainResourceAttributes(xpp, res);
13617    next(xpp);
13618    int eventType = nextNoWhitespace(xpp);
13619    while (eventType != XmlPullParser.END_TAG) {
13620  if (!parseMedicationAdministrationContent(eventType, xpp, res))
13621        unknownContent(xpp);
13622      eventType = nextNoWhitespace(xpp);
13623    }
13624    next(xpp);
13625    parseElementClose(res);
13626    return res;
13627  }
13628
13629  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
13630      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13631        res.getIdentifier().add(parseIdentifier(xpp));
13632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
13633        res.getInstantiates().add(parseUri(xpp));
13634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13635        res.getPartOf().add(parseReference(xpp));
13636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13637        res.setStatusElement(parseCode(xpp));
13638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
13639        res.getStatusReason().add(parseCodeableConcept(xpp));
13640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13641        res.setCategory(parseCodeableConcept(xpp));
13642      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13643        res.setMedication(parseType("medication", xpp));
13644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13645        res.setSubject(parseReference(xpp));
13646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13647        res.setContext(parseReference(xpp));
13648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13649        res.getSupportingInformation().add(parseReference(xpp));
13650      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
13651        res.setEffective(parseType("effective", xpp));
13652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13653        res.getPerformer().add(parseMedicationAdministrationMedicationAdministrationPerformerComponent(xpp, res));
13654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13655        res.getReasonCode().add(parseCodeableConcept(xpp));
13656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13657        res.getReasonReference().add(parseReference(xpp));
13658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13659        res.setRequest(parseReference(xpp));
13660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13661        res.getDevice().add(parseReference(xpp));
13662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13663        res.getNote().add(parseAnnotation(xpp));
13664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
13665        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
13666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13667        res.getEventHistory().add(parseReference(xpp));
13668      } else if (!parseDomainResourceContent(eventType, xpp, res))
13669        return false;
13670    return true;
13671  }
13672
13673  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationMedicationAdministrationPerformerComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
13674    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
13675    parseBackboneAttributes(xpp, res);
13676    next(xpp);
13677    int eventType = nextNoWhitespace(xpp);
13678    while (eventType != XmlPullParser.END_TAG) {
13679  if (!parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(eventType, xpp, owner, res))
13680        unknownContent(xpp);
13681      eventType = nextNoWhitespace(xpp);
13682    }
13683    next(xpp);
13684    parseElementClose(res);
13685    return res;
13686  }
13687
13688  protected boolean parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13689      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13690        res.setFunction(parseCodeableConcept(xpp));
13691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13692        res.setActor(parseReference(xpp));
13693      } else if (!parseBackboneElementContent(eventType, xpp, res))
13694        return false;
13695    return true;
13696  }
13697
13698  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
13699    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
13700    parseBackboneAttributes(xpp, res);
13701    next(xpp);
13702    int eventType = nextNoWhitespace(xpp);
13703    while (eventType != XmlPullParser.END_TAG) {
13704  if (!parseMedicationAdministrationMedicationAdministrationDosageComponentContent(eventType, xpp, owner, res))
13705        unknownContent(xpp);
13706      eventType = nextNoWhitespace(xpp);
13707    }
13708    next(xpp);
13709    parseElementClose(res);
13710    return res;
13711  }
13712
13713  protected boolean parseMedicationAdministrationMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13714      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13715        res.setTextElement(parseString(xpp));
13716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
13717        res.setSite(parseCodeableConcept(xpp));
13718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
13719        res.setRoute(parseCodeableConcept(xpp));
13720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
13721        res.setMethod(parseCodeableConcept(xpp));
13722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
13723        res.setDose(parseQuantity(xpp));
13724      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
13725        res.setRate(parseType("rate", xpp));
13726      } else if (!parseBackboneElementContent(eventType, xpp, res))
13727        return false;
13728    return true;
13729  }
13730
13731  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13732    MedicationDispense res = new MedicationDispense();
13733    parseDomainResourceAttributes(xpp, res);
13734    next(xpp);
13735    int eventType = nextNoWhitespace(xpp);
13736    while (eventType != XmlPullParser.END_TAG) {
13737  if (!parseMedicationDispenseContent(eventType, xpp, res))
13738        unknownContent(xpp);
13739      eventType = nextNoWhitespace(xpp);
13740    }
13741    next(xpp);
13742    parseElementClose(res);
13743    return res;
13744  }
13745
13746  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
13747      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13748        res.getIdentifier().add(parseIdentifier(xpp));
13749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13750        res.getPartOf().add(parseReference(xpp));
13751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13752        res.setStatusElement(parseCode(xpp));
13753      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "statusReason")) {
13754        res.setStatusReason(parseType("statusReason", xpp));
13755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13756        res.setCategory(parseCodeableConcept(xpp));
13757      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13758        res.setMedication(parseType("medication", xpp));
13759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13760        res.setSubject(parseReference(xpp));
13761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13762        res.setContext(parseReference(xpp));
13763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13764        res.getSupportingInformation().add(parseReference(xpp));
13765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13766        res.getPerformer().add(parseMedicationDispenseMedicationDispensePerformerComponent(xpp, res));
13767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13768        res.setLocation(parseReference(xpp));
13769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
13770        res.getAuthorizingPrescription().add(parseReference(xpp));
13771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13772        res.setType(parseCodeableConcept(xpp));
13773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13774        res.setQuantity(parseQuantity(xpp));
13775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
13776        res.setDaysSupply(parseQuantity(xpp));
13777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
13778        res.setWhenPreparedElement(parseDateTime(xpp));
13779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
13780        res.setWhenHandedOverElement(parseDateTime(xpp));
13781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
13782        res.setDestination(parseReference(xpp));
13783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
13784        res.getReceiver().add(parseReference(xpp));
13785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13786        res.getNote().add(parseAnnotation(xpp));
13787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
13788        res.getDosageInstruction().add(parseDosage(xpp));
13789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
13790        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
13791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
13792        res.getDetectedIssue().add(parseReference(xpp));
13793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13794        res.getEventHistory().add(parseReference(xpp));
13795      } else if (!parseDomainResourceContent(eventType, xpp, res))
13796        return false;
13797    return true;
13798  }
13799
13800  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispenseMedicationDispensePerformerComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
13801    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
13802    parseBackboneAttributes(xpp, res);
13803    next(xpp);
13804    int eventType = nextNoWhitespace(xpp);
13805    while (eventType != XmlPullParser.END_TAG) {
13806  if (!parseMedicationDispenseMedicationDispensePerformerComponentContent(eventType, xpp, owner, res))
13807        unknownContent(xpp);
13808      eventType = nextNoWhitespace(xpp);
13809    }
13810    next(xpp);
13811    parseElementClose(res);
13812    return res;
13813  }
13814
13815  protected boolean parseMedicationDispenseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13816      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13817        res.setFunction(parseCodeableConcept(xpp));
13818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13819        res.setActor(parseReference(xpp));
13820      } else if (!parseBackboneElementContent(eventType, xpp, res))
13821        return false;
13822    return true;
13823  }
13824
13825  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
13826    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
13827    parseBackboneAttributes(xpp, res);
13828    next(xpp);
13829    int eventType = nextNoWhitespace(xpp);
13830    while (eventType != XmlPullParser.END_TAG) {
13831  if (!parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(eventType, xpp, owner, res))
13832        unknownContent(xpp);
13833      eventType = nextNoWhitespace(xpp);
13834    }
13835    next(xpp);
13836    parseElementClose(res);
13837    return res;
13838  }
13839
13840  protected boolean parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
13842        res.setWasSubstitutedElement(parseBoolean(xpp));
13843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13844        res.setType(parseCodeableConcept(xpp));
13845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13846        res.getReason().add(parseCodeableConcept(xpp));
13847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
13848        res.getResponsibleParty().add(parseReference(xpp));
13849      } else if (!parseBackboneElementContent(eventType, xpp, res))
13850        return false;
13851    return true;
13852  }
13853
13854  protected MedicationKnowledge parseMedicationKnowledge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13855    MedicationKnowledge res = new MedicationKnowledge();
13856    parseDomainResourceAttributes(xpp, res);
13857    next(xpp);
13858    int eventType = nextNoWhitespace(xpp);
13859    while (eventType != XmlPullParser.END_TAG) {
13860  if (!parseMedicationKnowledgeContent(eventType, xpp, res))
13861        unknownContent(xpp);
13862      eventType = nextNoWhitespace(xpp);
13863    }
13864    next(xpp);
13865    parseElementClose(res);
13866    return res;
13867  }
13868
13869  protected boolean parseMedicationKnowledgeContent(int eventType, XmlPullParser xpp, MedicationKnowledge res) throws XmlPullParserException, IOException, FHIRFormatError {
13870      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13871        res.setCode(parseCodeableConcept(xpp));
13872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13873        res.setStatusElement(parseCode(xpp));
13874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13875        res.setManufacturer(parseReference(xpp));
13876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseForm")) {
13877        res.setDoseForm(parseCodeableConcept(xpp));
13878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13879        res.setAmount(parseQuantity(xpp));
13880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
13881        res.getSynonym().add(parseString(xpp));
13882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedMedicationKnowledge")) {
13883        res.getRelatedMedicationKnowledge().add(parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(xpp, res));
13884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associatedMedication")) {
13885        res.getAssociatedMedication().add(parseReference(xpp));
13886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productType")) {
13887        res.getProductType().add(parseCodeableConcept(xpp));
13888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monograph")) {
13889        res.getMonograph().add(parseMedicationKnowledgeMedicationKnowledgeMonographComponent(xpp, res));
13890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13891        res.getIngredient().add(parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(xpp, res));
13892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparationInstruction")) {
13893        res.setPreparationInstructionElement(parseMarkdown(xpp));
13894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedRoute")) {
13895        res.getIntendedRoute().add(parseCodeableConcept(xpp));
13896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
13897        res.getCost().add(parseMedicationKnowledgeMedicationKnowledgeCostComponent(xpp, res));
13898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monitoringProgram")) {
13899        res.getMonitoringProgram().add(parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(xpp, res));
13900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationGuidelines")) {
13901        res.getAdministrationGuidelines().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(xpp, res));
13902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medicineClassification")) {
13903        res.getMedicineClassification().add(parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(xpp, res));
13904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
13905        res.setPackaging(parseMedicationKnowledgeMedicationKnowledgePackagingComponent(xpp, res));
13906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("drugCharacteristic")) {
13907        res.getDrugCharacteristic().add(parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(xpp, res));
13908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
13909        res.getContraindication().add(parseReference(xpp));
13910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatory")) {
13911        res.getRegulatory().add(parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(xpp, res));
13912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kinetics")) {
13913        res.getKinetics().add(parseMedicationKnowledgeMedicationKnowledgeKineticsComponent(xpp, res));
13914      } else if (!parseDomainResourceContent(eventType, xpp, res))
13915        return false;
13916    return true;
13917  }
13918
13919  protected MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13920    MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res = new MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent();
13921    parseBackboneAttributes(xpp, res);
13922    next(xpp);
13923    int eventType = nextNoWhitespace(xpp);
13924    while (eventType != XmlPullParser.END_TAG) {
13925  if (!parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(eventType, xpp, owner, res))
13926        unknownContent(xpp);
13927      eventType = nextNoWhitespace(xpp);
13928    }
13929    next(xpp);
13930    parseElementClose(res);
13931    return res;
13932  }
13933
13934  protected boolean parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13935      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13936        res.setType(parseCodeableConcept(xpp));
13937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13938        res.getReference().add(parseReference(xpp));
13939      } else if (!parseBackboneElementContent(eventType, xpp, res))
13940        return false;
13941    return true;
13942  }
13943
13944  protected MedicationKnowledge.MedicationKnowledgeMonographComponent parseMedicationKnowledgeMedicationKnowledgeMonographComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13945    MedicationKnowledge.MedicationKnowledgeMonographComponent res = new MedicationKnowledge.MedicationKnowledgeMonographComponent();
13946    parseBackboneAttributes(xpp, res);
13947    next(xpp);
13948    int eventType = nextNoWhitespace(xpp);
13949    while (eventType != XmlPullParser.END_TAG) {
13950  if (!parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(eventType, xpp, owner, res))
13951        unknownContent(xpp);
13952      eventType = nextNoWhitespace(xpp);
13953    }
13954    next(xpp);
13955    parseElementClose(res);
13956    return res;
13957  }
13958
13959  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonographComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13960      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13961        res.setType(parseCodeableConcept(xpp));
13962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13963        res.setSource(parseReference(xpp));
13964      } else if (!parseBackboneElementContent(eventType, xpp, res))
13965        return false;
13966    return true;
13967  }
13968
13969  protected MedicationKnowledge.MedicationKnowledgeIngredientComponent parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13970    MedicationKnowledge.MedicationKnowledgeIngredientComponent res = new MedicationKnowledge.MedicationKnowledgeIngredientComponent();
13971    parseBackboneAttributes(xpp, res);
13972    next(xpp);
13973    int eventType = nextNoWhitespace(xpp);
13974    while (eventType != XmlPullParser.END_TAG) {
13975  if (!parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(eventType, xpp, owner, res))
13976        unknownContent(xpp);
13977      eventType = nextNoWhitespace(xpp);
13978    }
13979    next(xpp);
13980    parseElementClose(res);
13981    return res;
13982  }
13983
13984  protected boolean parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13985      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
13986        res.setItem(parseType("item", xpp));
13987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
13988        res.setIsActiveElement(parseBoolean(xpp));
13989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13990        res.setStrength(parseRatio(xpp));
13991      } else if (!parseBackboneElementContent(eventType, xpp, res))
13992        return false;
13993    return true;
13994  }
13995
13996  protected MedicationKnowledge.MedicationKnowledgeCostComponent parseMedicationKnowledgeMedicationKnowledgeCostComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13997    MedicationKnowledge.MedicationKnowledgeCostComponent res = new MedicationKnowledge.MedicationKnowledgeCostComponent();
13998    parseBackboneAttributes(xpp, res);
13999    next(xpp);
14000    int eventType = nextNoWhitespace(xpp);
14001    while (eventType != XmlPullParser.END_TAG) {
14002  if (!parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(eventType, xpp, owner, res))
14003        unknownContent(xpp);
14004      eventType = nextNoWhitespace(xpp);
14005    }
14006    next(xpp);
14007    parseElementClose(res);
14008    return res;
14009  }
14010
14011  protected boolean parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14012      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14013        res.setType(parseCodeableConcept(xpp));
14014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
14015        res.setSourceElement(parseString(xpp));
14016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
14017        res.setCost(parseMoney(xpp));
14018      } else if (!parseBackboneElementContent(eventType, xpp, res))
14019        return false;
14020    return true;
14021  }
14022
14023  protected MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14024    MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res = new MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent();
14025    parseBackboneAttributes(xpp, res);
14026    next(xpp);
14027    int eventType = nextNoWhitespace(xpp);
14028    while (eventType != XmlPullParser.END_TAG) {
14029  if (!parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(eventType, xpp, owner, res))
14030        unknownContent(xpp);
14031      eventType = nextNoWhitespace(xpp);
14032    }
14033    next(xpp);
14034    parseElementClose(res);
14035    return res;
14036  }
14037
14038  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14039      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14040        res.setType(parseCodeableConcept(xpp));
14041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14042        res.setNameElement(parseString(xpp));
14043      } else if (!parseBackboneElementContent(eventType, xpp, res))
14044        return false;
14045    return true;
14046  }
14047
14048  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14049    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent();
14050    parseBackboneAttributes(xpp, res);
14051    next(xpp);
14052    int eventType = nextNoWhitespace(xpp);
14053    while (eventType != XmlPullParser.END_TAG) {
14054  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(eventType, xpp, owner, res))
14055        unknownContent(xpp);
14056      eventType = nextNoWhitespace(xpp);
14057    }
14058    next(xpp);
14059    parseElementClose(res);
14060    return res;
14061  }
14062
14063  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14064      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14065        res.getDosage().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(xpp, owner));
14066      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
14067        res.setIndication(parseType("indication", xpp));
14068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientCharacteristics")) {
14069        res.getPatientCharacteristics().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(xpp, owner));
14070      } else if (!parseBackboneElementContent(eventType, xpp, res))
14071        return false;
14072    return true;
14073  }
14074
14075  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14076    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent();
14077    parseBackboneAttributes(xpp, res);
14078    next(xpp);
14079    int eventType = nextNoWhitespace(xpp);
14080    while (eventType != XmlPullParser.END_TAG) {
14081  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(eventType, xpp, owner, res))
14082        unknownContent(xpp);
14083      eventType = nextNoWhitespace(xpp);
14084    }
14085    next(xpp);
14086    parseElementClose(res);
14087    return res;
14088  }
14089
14090  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14091      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14092        res.setType(parseCodeableConcept(xpp));
14093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14094        res.getDosage().add(parseDosage(xpp));
14095      } else if (!parseBackboneElementContent(eventType, xpp, res))
14096        return false;
14097    return true;
14098  }
14099
14100  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14101    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent();
14102    parseBackboneAttributes(xpp, res);
14103    next(xpp);
14104    int eventType = nextNoWhitespace(xpp);
14105    while (eventType != XmlPullParser.END_TAG) {
14106  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(eventType, xpp, owner, res))
14107        unknownContent(xpp);
14108      eventType = nextNoWhitespace(xpp);
14109    }
14110    next(xpp);
14111    parseElementClose(res);
14112    return res;
14113  }
14114
14115  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14116      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "characteristic")) {
14117        res.setCharacteristic(parseType("characteristic", xpp));
14118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
14119        res.getValue().add(parseString(xpp));
14120      } else if (!parseBackboneElementContent(eventType, xpp, res))
14121        return false;
14122    return true;
14123  }
14124
14125  protected MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14126    MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res = new MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent();
14127    parseBackboneAttributes(xpp, res);
14128    next(xpp);
14129    int eventType = nextNoWhitespace(xpp);
14130    while (eventType != XmlPullParser.END_TAG) {
14131  if (!parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(eventType, xpp, owner, res))
14132        unknownContent(xpp);
14133      eventType = nextNoWhitespace(xpp);
14134    }
14135    next(xpp);
14136    parseElementClose(res);
14137    return res;
14138  }
14139
14140  protected boolean parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14141      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14142        res.setType(parseCodeableConcept(xpp));
14143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
14144        res.getClassification().add(parseCodeableConcept(xpp));
14145      } else if (!parseBackboneElementContent(eventType, xpp, res))
14146        return false;
14147    return true;
14148  }
14149
14150  protected MedicationKnowledge.MedicationKnowledgePackagingComponent parseMedicationKnowledgeMedicationKnowledgePackagingComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14151    MedicationKnowledge.MedicationKnowledgePackagingComponent res = new MedicationKnowledge.MedicationKnowledgePackagingComponent();
14152    parseBackboneAttributes(xpp, res);
14153    next(xpp);
14154    int eventType = nextNoWhitespace(xpp);
14155    while (eventType != XmlPullParser.END_TAG) {
14156  if (!parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(eventType, xpp, owner, res))
14157        unknownContent(xpp);
14158      eventType = nextNoWhitespace(xpp);
14159    }
14160    next(xpp);
14161    parseElementClose(res);
14162    return res;
14163  }
14164
14165  protected boolean parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgePackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14167        res.setType(parseCodeableConcept(xpp));
14168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14169        res.setQuantity(parseQuantity(xpp));
14170      } else if (!parseBackboneElementContent(eventType, xpp, res))
14171        return false;
14172    return true;
14173  }
14174
14175  protected MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14176    MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res = new MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent();
14177    parseBackboneAttributes(xpp, res);
14178    next(xpp);
14179    int eventType = nextNoWhitespace(xpp);
14180    while (eventType != XmlPullParser.END_TAG) {
14181  if (!parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(eventType, xpp, owner, res))
14182        unknownContent(xpp);
14183      eventType = nextNoWhitespace(xpp);
14184    }
14185    next(xpp);
14186    parseElementClose(res);
14187    return res;
14188  }
14189
14190  protected boolean parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14192        res.setType(parseCodeableConcept(xpp));
14193      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
14194        res.setValue(parseType("value", xpp));
14195      } else if (!parseBackboneElementContent(eventType, xpp, res))
14196        return false;
14197    return true;
14198  }
14199
14200  protected MedicationKnowledge.MedicationKnowledgeRegulatoryComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14201    MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryComponent();
14202    parseBackboneAttributes(xpp, res);
14203    next(xpp);
14204    int eventType = nextNoWhitespace(xpp);
14205    while (eventType != XmlPullParser.END_TAG) {
14206  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponentContent(eventType, xpp, owner, res))
14207        unknownContent(xpp);
14208      eventType = nextNoWhitespace(xpp);
14209    }
14210    next(xpp);
14211    parseElementClose(res);
14212    return res;
14213  }
14214
14215  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatoryAuthority")) {
14217        res.setRegulatoryAuthority(parseReference(xpp));
14218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
14219        res.getSubstitution().add(parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(xpp, owner));
14220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14221        res.getSchedule().add(parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(xpp, owner));
14222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDispense")) {
14223        res.setMaxDispense(parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(xpp, owner));
14224      } else if (!parseBackboneElementContent(eventType, xpp, res))
14225        return false;
14226    return true;
14227  }
14228
14229  protected MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14230    MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent();
14231    parseBackboneAttributes(xpp, res);
14232    next(xpp);
14233    int eventType = nextNoWhitespace(xpp);
14234    while (eventType != XmlPullParser.END_TAG) {
14235  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentContent(eventType, xpp, owner, res))
14236        unknownContent(xpp);
14237      eventType = nextNoWhitespace(xpp);
14238    }
14239    next(xpp);
14240    parseElementClose(res);
14241    return res;
14242  }
14243
14244  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14245      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14246        res.setType(parseCodeableConcept(xpp));
14247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
14248        res.setAllowedElement(parseBoolean(xpp));
14249      } else if (!parseBackboneElementContent(eventType, xpp, res))
14250        return false;
14251    return true;
14252  }
14253
14254  protected MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14255    MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent();
14256    parseBackboneAttributes(xpp, res);
14257    next(xpp);
14258    int eventType = nextNoWhitespace(xpp);
14259    while (eventType != XmlPullParser.END_TAG) {
14260  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentContent(eventType, xpp, owner, res))
14261        unknownContent(xpp);
14262      eventType = nextNoWhitespace(xpp);
14263    }
14264    next(xpp);
14265    parseElementClose(res);
14266    return res;
14267  }
14268
14269  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14270      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14271        res.setSchedule(parseCodeableConcept(xpp));
14272      } else if (!parseBackboneElementContent(eventType, xpp, res))
14273        return false;
14274    return true;
14275  }
14276
14277  protected MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14278    MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent();
14279    parseBackboneAttributes(xpp, res);
14280    next(xpp);
14281    int eventType = nextNoWhitespace(xpp);
14282    while (eventType != XmlPullParser.END_TAG) {
14283  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentContent(eventType, xpp, owner, res))
14284        unknownContent(xpp);
14285      eventType = nextNoWhitespace(xpp);
14286    }
14287    next(xpp);
14288    parseElementClose(res);
14289    return res;
14290  }
14291
14292  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14293      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14294        res.setQuantity(parseQuantity(xpp));
14295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14296        res.setPeriod(parseDuration(xpp));
14297      } else if (!parseBackboneElementContent(eventType, xpp, res))
14298        return false;
14299    return true;
14300  }
14301
14302  protected MedicationKnowledge.MedicationKnowledgeKineticsComponent parseMedicationKnowledgeMedicationKnowledgeKineticsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14303    MedicationKnowledge.MedicationKnowledgeKineticsComponent res = new MedicationKnowledge.MedicationKnowledgeKineticsComponent();
14304    parseBackboneAttributes(xpp, res);
14305    next(xpp);
14306    int eventType = nextNoWhitespace(xpp);
14307    while (eventType != XmlPullParser.END_TAG) {
14308  if (!parseMedicationKnowledgeMedicationKnowledgeKineticsComponentContent(eventType, xpp, owner, res))
14309        unknownContent(xpp);
14310      eventType = nextNoWhitespace(xpp);
14311    }
14312    next(xpp);
14313    parseElementClose(res);
14314    return res;
14315  }
14316
14317  protected boolean parseMedicationKnowledgeMedicationKnowledgeKineticsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeKineticsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14318      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaUnderCurve")) {
14319        res.getAreaUnderCurve().add(parseQuantity(xpp));
14320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lethalDose50")) {
14321        res.getLethalDose50().add(parseQuantity(xpp));
14322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLifePeriod")) {
14323        res.setHalfLifePeriod(parseDuration(xpp));
14324      } else if (!parseBackboneElementContent(eventType, xpp, res))
14325        return false;
14326    return true;
14327  }
14328
14329  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14330    MedicationRequest res = new MedicationRequest();
14331    parseDomainResourceAttributes(xpp, res);
14332    next(xpp);
14333    int eventType = nextNoWhitespace(xpp);
14334    while (eventType != XmlPullParser.END_TAG) {
14335  if (!parseMedicationRequestContent(eventType, xpp, res))
14336        unknownContent(xpp);
14337      eventType = nextNoWhitespace(xpp);
14338    }
14339    next(xpp);
14340    parseElementClose(res);
14341    return res;
14342  }
14343
14344  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
14345      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14346        res.getIdentifier().add(parseIdentifier(xpp));
14347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14348        res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestStatus.NULL, new MedicationRequest.MedicationRequestStatusEnumFactory()));
14349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
14350        res.setStatusReason(parseCodeableConcept(xpp));
14351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14352        res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
14353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14354        res.getCategory().add(parseCodeableConcept(xpp));
14355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14356        res.setPriorityElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestPriority.NULL, new MedicationRequest.MedicationRequestPriorityEnumFactory()));
14357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
14358        res.setDoNotPerformElement(parseBoolean(xpp));
14359      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reported")) {
14360        res.setReported(parseType("reported", xpp));
14361      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14362        res.setMedication(parseType("medication", xpp));
14363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14364        res.setSubject(parseReference(xpp));
14365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
14366        res.setEncounter(parseReference(xpp));
14367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
14368        res.getSupportingInformation().add(parseReference(xpp));
14369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14370        res.setAuthoredOnElement(parseDateTime(xpp));
14371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
14372        res.setRequester(parseReference(xpp));
14373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14374        res.setPerformer(parseReference(xpp));
14375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
14376        res.setPerformerType(parseCodeableConcept(xpp));
14377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
14378        res.setRecorder(parseReference(xpp));
14379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14380        res.getReasonCode().add(parseCodeableConcept(xpp));
14381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14382        res.getReasonReference().add(parseReference(xpp));
14383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
14384        res.getInstantiatesCanonical().add(parseCanonical(xpp));
14385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
14386        res.getInstantiatesUri().add(parseUri(xpp));
14387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14388        res.getBasedOn().add(parseReference(xpp));
14389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14390        res.setGroupIdentifier(parseIdentifier(xpp));
14391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("courseOfTherapyType")) {
14392        res.setCourseOfTherapyType(parseCodeableConcept(xpp));
14393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
14394        res.getInsurance().add(parseReference(xpp));
14395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14396        res.getNote().add(parseAnnotation(xpp));
14397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
14398        res.getDosageInstruction().add(parseDosage(xpp));
14399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
14400        res.setDispenseRequest(parseMedicationRequestMedicationRequestDispenseRequestComponent(xpp, res));
14401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
14402        res.setSubstitution(parseMedicationRequestMedicationRequestSubstitutionComponent(xpp, res));
14403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
14404        res.setPriorPrescription(parseReference(xpp));
14405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
14406        res.getDetectedIssue().add(parseReference(xpp));
14407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
14408        res.getEventHistory().add(parseReference(xpp));
14409      } else if (!parseDomainResourceContent(eventType, xpp, res))
14410        return false;
14411    return true;
14412  }
14413
14414  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestMedicationRequestDispenseRequestComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14415    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
14416    parseBackboneAttributes(xpp, res);
14417    next(xpp);
14418    int eventType = nextNoWhitespace(xpp);
14419    while (eventType != XmlPullParser.END_TAG) {
14420  if (!parseMedicationRequestMedicationRequestDispenseRequestComponentContent(eventType, xpp, owner, res))
14421        unknownContent(xpp);
14422      eventType = nextNoWhitespace(xpp);
14423    }
14424    next(xpp);
14425    parseElementClose(res);
14426    return res;
14427  }
14428
14429  protected boolean parseMedicationRequestMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialFill")) {
14431        res.setInitialFill(parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(xpp, owner));
14432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseInterval")) {
14433        res.setDispenseInterval(parseDuration(xpp));
14434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14435        res.setValidityPeriod(parsePeriod(xpp));
14436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
14437        res.setNumberOfRepeatsAllowedElement(parseUnsignedInt(xpp));
14438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14439        res.setQuantity(parseQuantity(xpp));
14440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
14441        res.setExpectedSupplyDuration(parseDuration(xpp));
14442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14443        res.setPerformer(parseReference(xpp));
14444      } else if (!parseBackboneElementContent(eventType, xpp, res))
14445        return false;
14446    return true;
14447  }
14448
14449  protected MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14450    MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res = new MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent();
14451    parseBackboneAttributes(xpp, res);
14452    next(xpp);
14453    int eventType = nextNoWhitespace(xpp);
14454    while (eventType != XmlPullParser.END_TAG) {
14455  if (!parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponentContent(eventType, xpp, owner, res))
14456        unknownContent(xpp);
14457      eventType = nextNoWhitespace(xpp);
14458    }
14459    next(xpp);
14460    parseElementClose(res);
14461    return res;
14462  }
14463
14464  protected boolean parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14465      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14466        res.setQuantity(parseQuantity(xpp));
14467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14468        res.setDuration(parseDuration(xpp));
14469      } else if (!parseBackboneElementContent(eventType, xpp, res))
14470        return false;
14471    return true;
14472  }
14473
14474  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestMedicationRequestSubstitutionComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14475    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
14476    parseBackboneAttributes(xpp, res);
14477    next(xpp);
14478    int eventType = nextNoWhitespace(xpp);
14479    while (eventType != XmlPullParser.END_TAG) {
14480  if (!parseMedicationRequestMedicationRequestSubstitutionComponentContent(eventType, xpp, owner, res))
14481        unknownContent(xpp);
14482      eventType = nextNoWhitespace(xpp);
14483    }
14484    next(xpp);
14485    parseElementClose(res);
14486    return res;
14487  }
14488
14489  protected boolean parseMedicationRequestMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14490      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
14491        res.setAllowed(parseType("allowed", xpp));
14492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
14493        res.setReason(parseCodeableConcept(xpp));
14494      } else if (!parseBackboneElementContent(eventType, xpp, res))
14495        return false;
14496    return true;
14497  }
14498
14499  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14500    MedicationStatement res = new MedicationStatement();
14501    parseDomainResourceAttributes(xpp, res);
14502    next(xpp);
14503    int eventType = nextNoWhitespace(xpp);
14504    while (eventType != XmlPullParser.END_TAG) {
14505  if (!parseMedicationStatementContent(eventType, xpp, res))
14506        unknownContent(xpp);
14507      eventType = nextNoWhitespace(xpp);
14508    }
14509    next(xpp);
14510    parseElementClose(res);
14511    return res;
14512  }
14513
14514  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
14515      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14516        res.getIdentifier().add(parseIdentifier(xpp));
14517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14518        res.getBasedOn().add(parseReference(xpp));
14519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14520        res.getPartOf().add(parseReference(xpp));
14521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14522        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
14523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
14524        res.getStatusReason().add(parseCodeableConcept(xpp));
14525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14526        res.setCategory(parseCodeableConcept(xpp));
14527      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14528        res.setMedication(parseType("medication", xpp));
14529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14530        res.setSubject(parseReference(xpp));
14531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14532        res.setContext(parseReference(xpp));
14533      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
14534        res.setEffective(parseType("effective", xpp));
14535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
14536        res.setDateAssertedElement(parseDateTime(xpp));
14537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
14538        res.setInformationSource(parseReference(xpp));
14539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
14540        res.getDerivedFrom().add(parseReference(xpp));
14541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14542        res.getReasonCode().add(parseCodeableConcept(xpp));
14543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14544        res.getReasonReference().add(parseReference(xpp));
14545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14546        res.getNote().add(parseAnnotation(xpp));
14547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14548        res.getDosage().add(parseDosage(xpp));
14549      } else if (!parseDomainResourceContent(eventType, xpp, res))
14550        return false;
14551    return true;
14552  }
14553
14554  protected MedicinalProduct parseMedicinalProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14555    MedicinalProduct res = new MedicinalProduct();
14556    parseDomainResourceAttributes(xpp, res);
14557    next(xpp);
14558    int eventType = nextNoWhitespace(xpp);
14559    while (eventType != XmlPullParser.END_TAG) {
14560  if (!parseMedicinalProductContent(eventType, xpp, res))
14561        unknownContent(xpp);
14562      eventType = nextNoWhitespace(xpp);
14563    }
14564    next(xpp);
14565    parseElementClose(res);
14566    return res;
14567  }
14568
14569  protected boolean parseMedicinalProductContent(int eventType, XmlPullParser xpp, MedicinalProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
14570      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14571        res.getIdentifier().add(parseIdentifier(xpp));
14572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14573        res.setType(parseCodeableConcept(xpp));
14574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
14575        res.setDomain(parseCoding(xpp));
14576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combinedPharmaceuticalDoseForm")) {
14577        res.setCombinedPharmaceuticalDoseForm(parseCodeableConcept(xpp));
14578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
14579        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
14580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMonitoringIndicator")) {
14581        res.setAdditionalMonitoringIndicator(parseCodeableConcept(xpp));
14582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialMeasures")) {
14583        res.getSpecialMeasures().add(parseString(xpp));
14584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paediatricUseIndicator")) {
14585        res.setPaediatricUseIndicator(parseCodeableConcept(xpp));
14586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productClassification")) {
14587        res.getProductClassification().add(parseCodeableConcept(xpp));
14588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
14589        res.getMarketingStatus().add(parseMarketingStatus(xpp));
14590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pharmaceuticalProduct")) {
14591        res.getPharmaceuticalProduct().add(parseReference(xpp));
14592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packagedMedicinalProduct")) {
14593        res.getPackagedMedicinalProduct().add(parseReference(xpp));
14594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
14595        res.getAttachedDocument().add(parseReference(xpp));
14596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterFile")) {
14597        res.getMasterFile().add(parseReference(xpp));
14598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14599        res.getContact().add(parseReference(xpp));
14600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalTrial")) {
14601        res.getClinicalTrial().add(parseReference(xpp));
14602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14603        res.getName().add(parseMedicinalProductMedicinalProductNameComponent(xpp, res));
14604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("crossReference")) {
14605        res.getCrossReference().add(parseIdentifier(xpp));
14606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturingBusinessOperation")) {
14607        res.getManufacturingBusinessOperation().add(parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(xpp, res));
14608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialDesignation")) {
14609        res.getSpecialDesignation().add(parseMedicinalProductMedicinalProductSpecialDesignationComponent(xpp, res));
14610      } else if (!parseDomainResourceContent(eventType, xpp, res))
14611        return false;
14612    return true;
14613  }
14614
14615  protected MedicinalProduct.MedicinalProductNameComponent parseMedicinalProductMedicinalProductNameComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14616    MedicinalProduct.MedicinalProductNameComponent res = new MedicinalProduct.MedicinalProductNameComponent();
14617    parseBackboneAttributes(xpp, res);
14618    next(xpp);
14619    int eventType = nextNoWhitespace(xpp);
14620    while (eventType != XmlPullParser.END_TAG) {
14621  if (!parseMedicinalProductMedicinalProductNameComponentContent(eventType, xpp, owner, res))
14622        unknownContent(xpp);
14623      eventType = nextNoWhitespace(xpp);
14624    }
14625    next(xpp);
14626    parseElementClose(res);
14627    return res;
14628  }
14629
14630  protected boolean parseMedicinalProductMedicinalProductNameComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14631      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
14632        res.setProductNameElement(parseString(xpp));
14633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("namePart")) {
14634        res.getNamePart().add(parseMedicinalProductMedicinalProductNameNamePartComponent(xpp, owner));
14635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryLanguage")) {
14636        res.getCountryLanguage().add(parseMedicinalProductMedicinalProductNameCountryLanguageComponent(xpp, owner));
14637      } else if (!parseBackboneElementContent(eventType, xpp, res))
14638        return false;
14639    return true;
14640  }
14641
14642  protected MedicinalProduct.MedicinalProductNameNamePartComponent parseMedicinalProductMedicinalProductNameNamePartComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14643    MedicinalProduct.MedicinalProductNameNamePartComponent res = new MedicinalProduct.MedicinalProductNameNamePartComponent();
14644    parseBackboneAttributes(xpp, res);
14645    next(xpp);
14646    int eventType = nextNoWhitespace(xpp);
14647    while (eventType != XmlPullParser.END_TAG) {
14648  if (!parseMedicinalProductMedicinalProductNameNamePartComponentContent(eventType, xpp, owner, res))
14649        unknownContent(xpp);
14650      eventType = nextNoWhitespace(xpp);
14651    }
14652    next(xpp);
14653    parseElementClose(res);
14654    return res;
14655  }
14656
14657  protected boolean parseMedicinalProductMedicinalProductNameNamePartComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameNamePartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14658      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
14659        res.setPartElement(parseString(xpp));
14660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14661        res.setType(parseCoding(xpp));
14662      } else if (!parseBackboneElementContent(eventType, xpp, res))
14663        return false;
14664    return true;
14665  }
14666
14667  protected MedicinalProduct.MedicinalProductNameCountryLanguageComponent parseMedicinalProductMedicinalProductNameCountryLanguageComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14668    MedicinalProduct.MedicinalProductNameCountryLanguageComponent res = new MedicinalProduct.MedicinalProductNameCountryLanguageComponent();
14669    parseBackboneAttributes(xpp, res);
14670    next(xpp);
14671    int eventType = nextNoWhitespace(xpp);
14672    while (eventType != XmlPullParser.END_TAG) {
14673  if (!parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(eventType, xpp, owner, res))
14674        unknownContent(xpp);
14675      eventType = nextNoWhitespace(xpp);
14676    }
14677    next(xpp);
14678    parseElementClose(res);
14679    return res;
14680  }
14681
14682  protected boolean parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameCountryLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14683      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14684        res.setCountry(parseCodeableConcept(xpp));
14685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14686        res.setJurisdiction(parseCodeableConcept(xpp));
14687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
14688        res.setLanguage(parseCodeableConcept(xpp));
14689      } else if (!parseBackboneElementContent(eventType, xpp, res))
14690        return false;
14691    return true;
14692  }
14693
14694  protected MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14695    MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res = new MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent();
14696    parseBackboneAttributes(xpp, res);
14697    next(xpp);
14698    int eventType = nextNoWhitespace(xpp);
14699    while (eventType != XmlPullParser.END_TAG) {
14700  if (!parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(eventType, xpp, owner, res))
14701        unknownContent(xpp);
14702      eventType = nextNoWhitespace(xpp);
14703    }
14704    next(xpp);
14705    parseElementClose(res);
14706    return res;
14707  }
14708
14709  protected boolean parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14710      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationType")) {
14711        res.setOperationType(parseCodeableConcept(xpp));
14712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorisationReferenceNumber")) {
14713        res.setAuthorisationReferenceNumber(parseIdentifier(xpp));
14714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDate")) {
14715        res.setEffectiveDateElement(parseDateTime(xpp));
14716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentialityIndicator")) {
14717        res.setConfidentialityIndicator(parseCodeableConcept(xpp));
14718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
14719        res.getManufacturer().add(parseReference(xpp));
14720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
14721        res.setRegulator(parseReference(xpp));
14722      } else if (!parseBackboneElementContent(eventType, xpp, res))
14723        return false;
14724    return true;
14725  }
14726
14727  protected MedicinalProduct.MedicinalProductSpecialDesignationComponent parseMedicinalProductMedicinalProductSpecialDesignationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14728    MedicinalProduct.MedicinalProductSpecialDesignationComponent res = new MedicinalProduct.MedicinalProductSpecialDesignationComponent();
14729    parseBackboneAttributes(xpp, res);
14730    next(xpp);
14731    int eventType = nextNoWhitespace(xpp);
14732    while (eventType != XmlPullParser.END_TAG) {
14733  if (!parseMedicinalProductMedicinalProductSpecialDesignationComponentContent(eventType, xpp, owner, res))
14734        unknownContent(xpp);
14735      eventType = nextNoWhitespace(xpp);
14736    }
14737    next(xpp);
14738    parseElementClose(res);
14739    return res;
14740  }
14741
14742  protected boolean parseMedicinalProductMedicinalProductSpecialDesignationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductSpecialDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14744        res.getIdentifier().add(parseIdentifier(xpp));
14745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14746        res.setType(parseCodeableConcept(xpp));
14747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedUse")) {
14748        res.setIntendedUse(parseCodeableConcept(xpp));
14749      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
14750        res.setIndication(parseType("indication", xpp));
14751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14752        res.setStatus(parseCodeableConcept(xpp));
14753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14754        res.setDateElement(parseDateTime(xpp));
14755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
14756        res.setSpecies(parseCodeableConcept(xpp));
14757      } else if (!parseBackboneElementContent(eventType, xpp, res))
14758        return false;
14759    return true;
14760  }
14761
14762  protected MedicinalProductAuthorization parseMedicinalProductAuthorization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14763    MedicinalProductAuthorization res = new MedicinalProductAuthorization();
14764    parseDomainResourceAttributes(xpp, res);
14765    next(xpp);
14766    int eventType = nextNoWhitespace(xpp);
14767    while (eventType != XmlPullParser.END_TAG) {
14768  if (!parseMedicinalProductAuthorizationContent(eventType, xpp, res))
14769        unknownContent(xpp);
14770      eventType = nextNoWhitespace(xpp);
14771    }
14772    next(xpp);
14773    parseElementClose(res);
14774    return res;
14775  }
14776
14777  protected boolean parseMedicinalProductAuthorizationContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization res) throws XmlPullParserException, IOException, FHIRFormatError {
14778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14779        res.getIdentifier().add(parseIdentifier(xpp));
14780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14781        res.setSubject(parseReference(xpp));
14782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14783        res.getCountry().add(parseCodeableConcept(xpp));
14784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14785        res.getJurisdiction().add(parseCodeableConcept(xpp));
14786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14787        res.setStatus(parseCodeableConcept(xpp));
14788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
14789        res.setStatusDateElement(parseDateTime(xpp));
14790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
14791        res.setRestoreDateElement(parseDateTime(xpp));
14792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14793        res.setValidityPeriod(parsePeriod(xpp));
14794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataExclusivityPeriod")) {
14795        res.setDataExclusivityPeriod(parsePeriod(xpp));
14796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateOfFirstAuthorization")) {
14797        res.setDateOfFirstAuthorizationElement(parseDateTime(xpp));
14798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("internationalBirthDate")) {
14799        res.setInternationalBirthDateElement(parseDateTime(xpp));
14800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalBasis")) {
14801        res.setLegalBasis(parseCodeableConcept(xpp));
14802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdictionalAuthorization")) {
14803        res.getJurisdictionalAuthorization().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(xpp, res));
14804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("holder")) {
14805        res.setHolder(parseReference(xpp));
14806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
14807        res.setRegulator(parseReference(xpp));
14808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
14809        res.setProcedure(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, res));
14810      } else if (!parseDomainResourceContent(eventType, xpp, res))
14811        return false;
14812    return true;
14813  }
14814
14815  protected MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14816    MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent();
14817    parseBackboneAttributes(xpp, res);
14818    next(xpp);
14819    int eventType = nextNoWhitespace(xpp);
14820    while (eventType != XmlPullParser.END_TAG) {
14821  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(eventType, xpp, owner, res))
14822        unknownContent(xpp);
14823      eventType = nextNoWhitespace(xpp);
14824    }
14825    next(xpp);
14826    parseElementClose(res);
14827    return res;
14828  }
14829
14830  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14831      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14832        res.getIdentifier().add(parseIdentifier(xpp));
14833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14834        res.setCountry(parseCodeableConcept(xpp));
14835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14836        res.getJurisdiction().add(parseCodeableConcept(xpp));
14837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
14838        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
14839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14840        res.setValidityPeriod(parsePeriod(xpp));
14841      } else if (!parseBackboneElementContent(eventType, xpp, res))
14842        return false;
14843    return true;
14844  }
14845
14846  protected MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14847    MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent();
14848    parseBackboneAttributes(xpp, res);
14849    next(xpp);
14850    int eventType = nextNoWhitespace(xpp);
14851    while (eventType != XmlPullParser.END_TAG) {
14852  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(eventType, xpp, owner, res))
14853        unknownContent(xpp);
14854      eventType = nextNoWhitespace(xpp);
14855    }
14856    next(xpp);
14857    parseElementClose(res);
14858    return res;
14859  }
14860
14861  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14862      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14863        res.setIdentifier(parseIdentifier(xpp));
14864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14865        res.setType(parseCodeableConcept(xpp));
14866      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "date")) {
14867        res.setDate(parseType("date", xpp));
14868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("application")) {
14869        res.getApplication().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, owner));
14870      } else if (!parseBackboneElementContent(eventType, xpp, res))
14871        return false;
14872    return true;
14873  }
14874
14875  protected MedicinalProductContraindication parseMedicinalProductContraindication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14876    MedicinalProductContraindication res = new MedicinalProductContraindication();
14877    parseDomainResourceAttributes(xpp, res);
14878    next(xpp);
14879    int eventType = nextNoWhitespace(xpp);
14880    while (eventType != XmlPullParser.END_TAG) {
14881  if (!parseMedicinalProductContraindicationContent(eventType, xpp, res))
14882        unknownContent(xpp);
14883      eventType = nextNoWhitespace(xpp);
14884    }
14885    next(xpp);
14886    parseElementClose(res);
14887    return res;
14888  }
14889
14890  protected boolean parseMedicinalProductContraindicationContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication res) throws XmlPullParserException, IOException, FHIRFormatError {
14891      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14892        res.getSubject().add(parseReference(xpp));
14893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disease")) {
14894        res.setDisease(parseCodeableConcept(xpp));
14895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14896        res.setDiseaseStatus(parseCodeableConcept(xpp));
14897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14898        res.getComorbidity().add(parseCodeableConcept(xpp));
14899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
14900        res.getTherapeuticIndication().add(parseReference(xpp));
14901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14902        res.getOtherTherapy().add(parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(xpp, res));
14903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14904        res.getPopulation().add(parsePopulation(xpp));
14905      } else if (!parseDomainResourceContent(eventType, xpp, res))
14906        return false;
14907    return true;
14908  }
14909
14910  protected MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductContraindication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14911    MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent res = new MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent();
14912    parseBackboneAttributes(xpp, res);
14913    next(xpp);
14914    int eventType = nextNoWhitespace(xpp);
14915    while (eventType != XmlPullParser.END_TAG) {
14916  if (!parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14917        unknownContent(xpp);
14918      eventType = nextNoWhitespace(xpp);
14919    }
14920    next(xpp);
14921    parseElementClose(res);
14922    return res;
14923  }
14924
14925  protected boolean parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication owner, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14926      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14927        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14928      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14929        res.setMedication(parseType("medication", xpp));
14930      } else if (!parseBackboneElementContent(eventType, xpp, res))
14931        return false;
14932    return true;
14933  }
14934
14935  protected MedicinalProductIndication parseMedicinalProductIndication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14936    MedicinalProductIndication res = new MedicinalProductIndication();
14937    parseDomainResourceAttributes(xpp, res);
14938    next(xpp);
14939    int eventType = nextNoWhitespace(xpp);
14940    while (eventType != XmlPullParser.END_TAG) {
14941  if (!parseMedicinalProductIndicationContent(eventType, xpp, res))
14942        unknownContent(xpp);
14943      eventType = nextNoWhitespace(xpp);
14944    }
14945    next(xpp);
14946    parseElementClose(res);
14947    return res;
14948  }
14949
14950  protected boolean parseMedicinalProductIndicationContent(int eventType, XmlPullParser xpp, MedicinalProductIndication res) throws XmlPullParserException, IOException, FHIRFormatError {
14951      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14952        res.getSubject().add(parseReference(xpp));
14953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
14954        res.setDiseaseSymptomProcedure(parseCodeableConcept(xpp));
14955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14956        res.setDiseaseStatus(parseCodeableConcept(xpp));
14957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14958        res.getComorbidity().add(parseCodeableConcept(xpp));
14959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedEffect")) {
14960        res.setIntendedEffect(parseCodeableConcept(xpp));
14961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14962        res.setDuration(parseQuantity(xpp));
14963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14964        res.getOtherTherapy().add(parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(xpp, res));
14965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
14966        res.getUndesirableEffect().add(parseReference(xpp));
14967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14968        res.getPopulation().add(parsePopulation(xpp));
14969      } else if (!parseDomainResourceContent(eventType, xpp, res))
14970        return false;
14971    return true;
14972  }
14973
14974  protected MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductIndication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14975    MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent res = new MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent();
14976    parseBackboneAttributes(xpp, res);
14977    next(xpp);
14978    int eventType = nextNoWhitespace(xpp);
14979    while (eventType != XmlPullParser.END_TAG) {
14980  if (!parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14981        unknownContent(xpp);
14982      eventType = nextNoWhitespace(xpp);
14983    }
14984    next(xpp);
14985    parseElementClose(res);
14986    return res;
14987  }
14988
14989  protected boolean parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIndication owner, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14990      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14991        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14992      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14993        res.setMedication(parseType("medication", xpp));
14994      } else if (!parseBackboneElementContent(eventType, xpp, res))
14995        return false;
14996    return true;
14997  }
14998
14999  protected MedicinalProductIngredient parseMedicinalProductIngredient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15000    MedicinalProductIngredient res = new MedicinalProductIngredient();
15001    parseDomainResourceAttributes(xpp, res);
15002    next(xpp);
15003    int eventType = nextNoWhitespace(xpp);
15004    while (eventType != XmlPullParser.END_TAG) {
15005  if (!parseMedicinalProductIngredientContent(eventType, xpp, res))
15006        unknownContent(xpp);
15007      eventType = nextNoWhitespace(xpp);
15008    }
15009    next(xpp);
15010    parseElementClose(res);
15011    return res;
15012  }
15013
15014  protected boolean parseMedicinalProductIngredientContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient res) throws XmlPullParserException, IOException, FHIRFormatError {
15015      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15016        res.setIdentifier(parseIdentifier(xpp));
15017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
15018        res.setRole(parseCodeableConcept(xpp));
15019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
15020        res.setAllergenicIndicatorElement(parseBoolean(xpp));
15021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15022        res.getManufacturer().add(parseReference(xpp));
15023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specifiedSubstance")) {
15024        res.getSpecifiedSubstance().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(xpp, res));
15025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
15026        res.setSubstance(parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(xpp, res));
15027      } else if (!parseDomainResourceContent(eventType, xpp, res))
15028        return false;
15029    return true;
15030  }
15031
15032  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15033    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent();
15034    parseBackboneAttributes(xpp, res);
15035    next(xpp);
15036    int eventType = nextNoWhitespace(xpp);
15037    while (eventType != XmlPullParser.END_TAG) {
15038  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(eventType, xpp, owner, res))
15039        unknownContent(xpp);
15040      eventType = nextNoWhitespace(xpp);
15041    }
15042    next(xpp);
15043    parseElementClose(res);
15044    return res;
15045  }
15046
15047  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15048      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15049        res.setCode(parseCodeableConcept(xpp));
15050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
15051        res.setGroup(parseCodeableConcept(xpp));
15052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
15053        res.setConfidentiality(parseCodeableConcept(xpp));
15054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15055        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
15056      } else if (!parseBackboneElementContent(eventType, xpp, res))
15057        return false;
15058    return true;
15059  }
15060
15061  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15062    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent();
15063    parseBackboneAttributes(xpp, res);
15064    next(xpp);
15065    int eventType = nextNoWhitespace(xpp);
15066    while (eventType != XmlPullParser.END_TAG) {
15067  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(eventType, xpp, owner, res))
15068        unknownContent(xpp);
15069      eventType = nextNoWhitespace(xpp);
15070    }
15071    next(xpp);
15072    parseElementClose(res);
15073    return res;
15074  }
15075
15076  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15077      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentation")) {
15078        res.setPresentation(parseRatio(xpp));
15079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationLowLimit")) {
15080        res.setPresentationLowLimit(parseRatio(xpp));
15081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentration")) {
15082        res.setConcentration(parseRatio(xpp));
15083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentrationLowLimit")) {
15084        res.setConcentrationLowLimit(parseRatio(xpp));
15085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
15086        res.setMeasurementPointElement(parseString(xpp));
15087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
15088        res.getCountry().add(parseCodeableConcept(xpp));
15089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceStrength")) {
15090        res.getReferenceStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(xpp, owner));
15091      } else if (!parseBackboneElementContent(eventType, xpp, res))
15092        return false;
15093    return true;
15094  }
15095
15096  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15097    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent();
15098    parseBackboneAttributes(xpp, res);
15099    next(xpp);
15100    int eventType = nextNoWhitespace(xpp);
15101    while (eventType != XmlPullParser.END_TAG) {
15102  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(eventType, xpp, owner, res))
15103        unknownContent(xpp);
15104      eventType = nextNoWhitespace(xpp);
15105    }
15106    next(xpp);
15107    parseElementClose(res);
15108    return res;
15109  }
15110
15111  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15112      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
15113        res.setSubstance(parseCodeableConcept(xpp));
15114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15115        res.setStrength(parseRatio(xpp));
15116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strengthLowLimit")) {
15117        res.setStrengthLowLimit(parseRatio(xpp));
15118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
15119        res.setMeasurementPointElement(parseString(xpp));
15120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
15121        res.getCountry().add(parseCodeableConcept(xpp));
15122      } else if (!parseBackboneElementContent(eventType, xpp, res))
15123        return false;
15124    return true;
15125  }
15126
15127  protected MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15128    MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent();
15129    parseBackboneAttributes(xpp, res);
15130    next(xpp);
15131    int eventType = nextNoWhitespace(xpp);
15132    while (eventType != XmlPullParser.END_TAG) {
15133  if (!parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(eventType, xpp, owner, res))
15134        unknownContent(xpp);
15135      eventType = nextNoWhitespace(xpp);
15136    }
15137    next(xpp);
15138    parseElementClose(res);
15139    return res;
15140  }
15141
15142  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15143      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15144        res.setCode(parseCodeableConcept(xpp));
15145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15146        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
15147      } else if (!parseBackboneElementContent(eventType, xpp, res))
15148        return false;
15149    return true;
15150  }
15151
15152  protected MedicinalProductInteraction parseMedicinalProductInteraction(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15153    MedicinalProductInteraction res = new MedicinalProductInteraction();
15154    parseDomainResourceAttributes(xpp, res);
15155    next(xpp);
15156    int eventType = nextNoWhitespace(xpp);
15157    while (eventType != XmlPullParser.END_TAG) {
15158  if (!parseMedicinalProductInteractionContent(eventType, xpp, res))
15159        unknownContent(xpp);
15160      eventType = nextNoWhitespace(xpp);
15161    }
15162    next(xpp);
15163    parseElementClose(res);
15164    return res;
15165  }
15166
15167  protected boolean parseMedicinalProductInteractionContent(int eventType, XmlPullParser xpp, MedicinalProductInteraction res) throws XmlPullParserException, IOException, FHIRFormatError {
15168      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15169        res.getSubject().add(parseReference(xpp));
15170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15171        res.setDescriptionElement(parseString(xpp));
15172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactant")) {
15173        res.getInteractant().add(parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(xpp, res));
15174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15175        res.setType(parseCodeableConcept(xpp));
15176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effect")) {
15177        res.setEffect(parseCodeableConcept(xpp));
15178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incidence")) {
15179        res.setIncidence(parseCodeableConcept(xpp));
15180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("management")) {
15181        res.setManagement(parseCodeableConcept(xpp));
15182      } else if (!parseDomainResourceContent(eventType, xpp, res))
15183        return false;
15184    return true;
15185  }
15186
15187  protected MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(XmlPullParser xpp, MedicinalProductInteraction owner) throws XmlPullParserException, IOException, FHIRFormatError {
15188    MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent res = new MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent();
15189    parseBackboneAttributes(xpp, res);
15190    next(xpp);
15191    int eventType = nextNoWhitespace(xpp);
15192    while (eventType != XmlPullParser.END_TAG) {
15193  if (!parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponentContent(eventType, xpp, owner, res))
15194        unknownContent(xpp);
15195      eventType = nextNoWhitespace(xpp);
15196    }
15197    next(xpp);
15198    parseElementClose(res);
15199    return res;
15200  }
15201
15202  protected boolean parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponentContent(int eventType, XmlPullParser xpp, MedicinalProductInteraction owner, MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15203      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15204        res.setItem(parseType("item", xpp));
15205      } else if (!parseBackboneElementContent(eventType, xpp, res))
15206        return false;
15207    return true;
15208  }
15209
15210  protected MedicinalProductManufactured parseMedicinalProductManufactured(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15211    MedicinalProductManufactured res = new MedicinalProductManufactured();
15212    parseDomainResourceAttributes(xpp, res);
15213    next(xpp);
15214    int eventType = nextNoWhitespace(xpp);
15215    while (eventType != XmlPullParser.END_TAG) {
15216  if (!parseMedicinalProductManufacturedContent(eventType, xpp, res))
15217        unknownContent(xpp);
15218      eventType = nextNoWhitespace(xpp);
15219    }
15220    next(xpp);
15221    parseElementClose(res);
15222    return res;
15223  }
15224
15225  protected boolean parseMedicinalProductManufacturedContent(int eventType, XmlPullParser xpp, MedicinalProductManufactured res) throws XmlPullParserException, IOException, FHIRFormatError {
15226      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedDoseForm")) {
15227        res.setManufacturedDoseForm(parseCodeableConcept(xpp));
15228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
15229        res.setUnitOfPresentation(parseCodeableConcept(xpp));
15230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15231        res.setQuantity(parseQuantity(xpp));
15232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15233        res.getManufacturer().add(parseReference(xpp));
15234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15235        res.getIngredient().add(parseReference(xpp));
15236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
15237        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
15238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
15239        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
15240      } else if (!parseDomainResourceContent(eventType, xpp, res))
15241        return false;
15242    return true;
15243  }
15244
15245  protected MedicinalProductPackaged parseMedicinalProductPackaged(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15246    MedicinalProductPackaged res = new MedicinalProductPackaged();
15247    parseDomainResourceAttributes(xpp, res);
15248    next(xpp);
15249    int eventType = nextNoWhitespace(xpp);
15250    while (eventType != XmlPullParser.END_TAG) {
15251  if (!parseMedicinalProductPackagedContent(eventType, xpp, res))
15252        unknownContent(xpp);
15253      eventType = nextNoWhitespace(xpp);
15254    }
15255    next(xpp);
15256    parseElementClose(res);
15257    return res;
15258  }
15259
15260  protected boolean parseMedicinalProductPackagedContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged res) throws XmlPullParserException, IOException, FHIRFormatError {
15261      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15262        res.getIdentifier().add(parseIdentifier(xpp));
15263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15264        res.getSubject().add(parseReference(xpp));
15265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15266        res.setDescriptionElement(parseString(xpp));
15267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
15268        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
15269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
15270        res.getMarketingStatus().add(parseMarketingStatus(xpp));
15271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingAuthorization")) {
15272        res.setMarketingAuthorization(parseReference(xpp));
15273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15274        res.getManufacturer().add(parseReference(xpp));
15275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batchIdentifier")) {
15276        res.getBatchIdentifier().add(parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(xpp, res));
15277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
15278        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, res));
15279      } else if (!parseDomainResourceContent(eventType, xpp, res))
15280        return false;
15281    return true;
15282  }
15283
15284  protected MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
15285    MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res = new MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent();
15286    parseBackboneAttributes(xpp, res);
15287    next(xpp);
15288    int eventType = nextNoWhitespace(xpp);
15289    while (eventType != XmlPullParser.END_TAG) {
15290  if (!parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(eventType, xpp, owner, res))
15291        unknownContent(xpp);
15292      eventType = nextNoWhitespace(xpp);
15293    }
15294    next(xpp);
15295    parseElementClose(res);
15296    return res;
15297  }
15298
15299  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15300      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outerPackaging")) {
15301        res.setOuterPackaging(parseIdentifier(xpp));
15302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immediatePackaging")) {
15303        res.setImmediatePackaging(parseIdentifier(xpp));
15304      } else if (!parseBackboneElementContent(eventType, xpp, res))
15305        return false;
15306    return true;
15307  }
15308
15309  protected MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
15310    MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res = new MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent();
15311    parseBackboneAttributes(xpp, res);
15312    next(xpp);
15313    int eventType = nextNoWhitespace(xpp);
15314    while (eventType != XmlPullParser.END_TAG) {
15315  if (!parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(eventType, xpp, owner, res))
15316        unknownContent(xpp);
15317      eventType = nextNoWhitespace(xpp);
15318    }
15319    next(xpp);
15320    parseElementClose(res);
15321    return res;
15322  }
15323
15324  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15325      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15326        res.getIdentifier().add(parseIdentifier(xpp));
15327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15328        res.setType(parseCodeableConcept(xpp));
15329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15330        res.setQuantity(parseQuantity(xpp));
15331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
15332        res.getMaterial().add(parseCodeableConcept(xpp));
15333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternateMaterial")) {
15334        res.getAlternateMaterial().add(parseCodeableConcept(xpp));
15335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15336        res.getDevice().add(parseReference(xpp));
15337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedItem")) {
15338        res.getManufacturedItem().add(parseReference(xpp));
15339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
15340        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, owner));
15341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
15342        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
15343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
15344        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
15345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
15346        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
15347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15348        res.getManufacturer().add(parseReference(xpp));
15349      } else if (!parseBackboneElementContent(eventType, xpp, res))
15350        return false;
15351    return true;
15352  }
15353
15354  protected MedicinalProductPharmaceutical parseMedicinalProductPharmaceutical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15355    MedicinalProductPharmaceutical res = new MedicinalProductPharmaceutical();
15356    parseDomainResourceAttributes(xpp, res);
15357    next(xpp);
15358    int eventType = nextNoWhitespace(xpp);
15359    while (eventType != XmlPullParser.END_TAG) {
15360  if (!parseMedicinalProductPharmaceuticalContent(eventType, xpp, res))
15361        unknownContent(xpp);
15362      eventType = nextNoWhitespace(xpp);
15363    }
15364    next(xpp);
15365    parseElementClose(res);
15366    return res;
15367  }
15368
15369  protected boolean parseMedicinalProductPharmaceuticalContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical res) throws XmlPullParserException, IOException, FHIRFormatError {
15370      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15371        res.getIdentifier().add(parseIdentifier(xpp));
15372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrableDoseForm")) {
15373        res.setAdministrableDoseForm(parseCodeableConcept(xpp));
15374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
15375        res.setUnitOfPresentation(parseCodeableConcept(xpp));
15376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15377        res.getIngredient().add(parseReference(xpp));
15378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15379        res.getDevice().add(parseReference(xpp));
15380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristics")) {
15381        res.getCharacteristics().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(xpp, res));
15382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeOfAdministration")) {
15383        res.getRouteOfAdministration().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(xpp, res));
15384      } else if (!parseDomainResourceContent(eventType, xpp, res))
15385        return false;
15386    return true;
15387  }
15388
15389  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15390    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent();
15391    parseBackboneAttributes(xpp, res);
15392    next(xpp);
15393    int eventType = nextNoWhitespace(xpp);
15394    while (eventType != XmlPullParser.END_TAG) {
15395  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(eventType, xpp, owner, res))
15396        unknownContent(xpp);
15397      eventType = nextNoWhitespace(xpp);
15398    }
15399    next(xpp);
15400    parseElementClose(res);
15401    return res;
15402  }
15403
15404  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15405      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15406        res.setCode(parseCodeableConcept(xpp));
15407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15408        res.setStatus(parseCodeableConcept(xpp));
15409      } else if (!parseBackboneElementContent(eventType, xpp, res))
15410        return false;
15411    return true;
15412  }
15413
15414  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15415    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent();
15416    parseBackboneAttributes(xpp, res);
15417    next(xpp);
15418    int eventType = nextNoWhitespace(xpp);
15419    while (eventType != XmlPullParser.END_TAG) {
15420  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentContent(eventType, xpp, owner, res))
15421        unknownContent(xpp);
15422      eventType = nextNoWhitespace(xpp);
15423    }
15424    next(xpp);
15425    parseElementClose(res);
15426    return res;
15427  }
15428
15429  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15431        res.setCode(parseCodeableConcept(xpp));
15432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstDose")) {
15433        res.setFirstDose(parseQuantity(xpp));
15434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxSingleDose")) {
15435        res.setMaxSingleDose(parseQuantity(xpp));
15436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerDay")) {
15437        res.setMaxDosePerDay(parseQuantity(xpp));
15438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerTreatmentPeriod")) {
15439        res.setMaxDosePerTreatmentPeriod(parseRatio(xpp));
15440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxTreatmentPeriod")) {
15441        res.setMaxTreatmentPeriod(parseDuration(xpp));
15442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetSpecies")) {
15443        res.getTargetSpecies().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(xpp, owner));
15444      } else if (!parseBackboneElementContent(eventType, xpp, res))
15445        return false;
15446    return true;
15447  }
15448
15449  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15450    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent();
15451    parseBackboneAttributes(xpp, res);
15452    next(xpp);
15453    int eventType = nextNoWhitespace(xpp);
15454    while (eventType != XmlPullParser.END_TAG) {
15455  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentContent(eventType, xpp, owner, res))
15456        unknownContent(xpp);
15457      eventType = nextNoWhitespace(xpp);
15458    }
15459    next(xpp);
15460    parseElementClose(res);
15461    return res;
15462  }
15463
15464  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15465      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15466        res.setCode(parseCodeableConcept(xpp));
15467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("withdrawalPeriod")) {
15468        res.getWithdrawalPeriod().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(xpp, owner));
15469      } else if (!parseBackboneElementContent(eventType, xpp, res))
15470        return false;
15471    return true;
15472  }
15473
15474  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15475    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent();
15476    parseBackboneAttributes(xpp, res);
15477    next(xpp);
15478    int eventType = nextNoWhitespace(xpp);
15479    while (eventType != XmlPullParser.END_TAG) {
15480  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(eventType, xpp, owner, res))
15481        unknownContent(xpp);
15482      eventType = nextNoWhitespace(xpp);
15483    }
15484    next(xpp);
15485    parseElementClose(res);
15486    return res;
15487  }
15488
15489  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15490      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tissue")) {
15491        res.setTissue(parseCodeableConcept(xpp));
15492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
15493        res.setValue(parseQuantity(xpp));
15494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
15495        res.setSupportingInformationElement(parseString(xpp));
15496      } else if (!parseBackboneElementContent(eventType, xpp, res))
15497        return false;
15498    return true;
15499  }
15500
15501  protected MedicinalProductUndesirableEffect parseMedicinalProductUndesirableEffect(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15502    MedicinalProductUndesirableEffect res = new MedicinalProductUndesirableEffect();
15503    parseDomainResourceAttributes(xpp, res);
15504    next(xpp);
15505    int eventType = nextNoWhitespace(xpp);
15506    while (eventType != XmlPullParser.END_TAG) {
15507  if (!parseMedicinalProductUndesirableEffectContent(eventType, xpp, res))
15508        unknownContent(xpp);
15509      eventType = nextNoWhitespace(xpp);
15510    }
15511    next(xpp);
15512    parseElementClose(res);
15513    return res;
15514  }
15515
15516  protected boolean parseMedicinalProductUndesirableEffectContent(int eventType, XmlPullParser xpp, MedicinalProductUndesirableEffect res) throws XmlPullParserException, IOException, FHIRFormatError {
15517      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15518        res.getSubject().add(parseReference(xpp));
15519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("symptomConditionEffect")) {
15520        res.setSymptomConditionEffect(parseCodeableConcept(xpp));
15521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
15522        res.setClassification(parseCodeableConcept(xpp));
15523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyOfOccurrence")) {
15524        res.setFrequencyOfOccurrence(parseCodeableConcept(xpp));
15525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
15526        res.getPopulation().add(parsePopulation(xpp));
15527      } else if (!parseDomainResourceContent(eventType, xpp, res))
15528        return false;
15529    return true;
15530  }
15531
15532  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15533    MessageDefinition res = new MessageDefinition();
15534    parseDomainResourceAttributes(xpp, res);
15535    next(xpp);
15536    int eventType = nextNoWhitespace(xpp);
15537    while (eventType != XmlPullParser.END_TAG) {
15538  if (!parseMessageDefinitionContent(eventType, xpp, res))
15539        unknownContent(xpp);
15540      eventType = nextNoWhitespace(xpp);
15541    }
15542    next(xpp);
15543    parseElementClose(res);
15544    return res;
15545  }
15546
15547  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15548      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15549        res.setUrlElement(parseUri(xpp));
15550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15551        res.getIdentifier().add(parseIdentifier(xpp));
15552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15553        res.setVersionElement(parseString(xpp));
15554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15555        res.setNameElement(parseString(xpp));
15556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15557        res.setTitleElement(parseString(xpp));
15558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
15559        res.getReplaces().add(parseCanonical(xpp));
15560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15561        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15563        res.setExperimentalElement(parseBoolean(xpp));
15564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15565        res.setDateElement(parseDateTime(xpp));
15566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15567        res.setPublisherElement(parseString(xpp));
15568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15569        res.getContact().add(parseContactDetail(xpp));
15570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15571        res.setDescriptionElement(parseMarkdown(xpp));
15572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15573        res.getUseContext().add(parseUsageContext(xpp));
15574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15575        res.getJurisdiction().add(parseCodeableConcept(xpp));
15576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15577        res.setPurposeElement(parseMarkdown(xpp));
15578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15579        res.setCopyrightElement(parseMarkdown(xpp));
15580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
15581        res.setBaseElement(parseCanonical(xpp));
15582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
15583        res.getParent().add(parseCanonical(xpp));
15584      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
15585        res.setEvent(parseType("event", xpp));
15586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15587        res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
15588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15589        res.getFocus().add(parseMessageDefinitionMessageDefinitionFocusComponent(xpp, res));
15590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
15591        res.setResponseRequiredElement(parseEnumeration(xpp, MessageDefinition.MessageheaderResponseRequest.NULL, new MessageDefinition.MessageheaderResponseRequestEnumFactory()));
15592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
15593        res.getAllowedResponse().add(parseMessageDefinitionMessageDefinitionAllowedResponseComponent(xpp, res));
15594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("graph")) {
15595        res.getGraph().add(parseCanonical(xpp));
15596      } else if (!parseDomainResourceContent(eventType, xpp, res))
15597        return false;
15598    return true;
15599  }
15600
15601  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionMessageDefinitionFocusComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15602    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
15603    parseBackboneAttributes(xpp, res);
15604    next(xpp);
15605    int eventType = nextNoWhitespace(xpp);
15606    while (eventType != XmlPullParser.END_TAG) {
15607  if (!parseMessageDefinitionMessageDefinitionFocusComponentContent(eventType, xpp, owner, res))
15608        unknownContent(xpp);
15609      eventType = nextNoWhitespace(xpp);
15610    }
15611    next(xpp);
15612    parseElementClose(res);
15613    return res;
15614  }
15615
15616  protected boolean parseMessageDefinitionMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15617      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15618        res.setCodeElement(parseCode(xpp));
15619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
15620        res.setProfileElement(parseCanonical(xpp));
15621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
15622        res.setMinElement(parseUnsignedInt(xpp));
15623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
15624        res.setMaxElement(parseString(xpp));
15625      } else if (!parseBackboneElementContent(eventType, xpp, res))
15626        return false;
15627    return true;
15628  }
15629
15630  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionMessageDefinitionAllowedResponseComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15631    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
15632    parseBackboneAttributes(xpp, res);
15633    next(xpp);
15634    int eventType = nextNoWhitespace(xpp);
15635    while (eventType != XmlPullParser.END_TAG) {
15636  if (!parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(eventType, xpp, owner, res))
15637        unknownContent(xpp);
15638      eventType = nextNoWhitespace(xpp);
15639    }
15640    next(xpp);
15641    parseElementClose(res);
15642    return res;
15643  }
15644
15645  protected boolean parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15646      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
15647        res.setMessageElement(parseCanonical(xpp));
15648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
15649        res.setSituationElement(parseMarkdown(xpp));
15650      } else if (!parseBackboneElementContent(eventType, xpp, res))
15651        return false;
15652    return true;
15653  }
15654
15655  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15656    MessageHeader res = new MessageHeader();
15657    parseDomainResourceAttributes(xpp, res);
15658    next(xpp);
15659    int eventType = nextNoWhitespace(xpp);
15660    while (eventType != XmlPullParser.END_TAG) {
15661  if (!parseMessageHeaderContent(eventType, xpp, res))
15662        unknownContent(xpp);
15663      eventType = nextNoWhitespace(xpp);
15664    }
15665    next(xpp);
15666    parseElementClose(res);
15667    return res;
15668  }
15669
15670  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
15671      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
15672        res.setEvent(parseType("event", xpp));
15673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
15674        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
15675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
15676        res.setSender(parseReference(xpp));
15677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
15678        res.setEnterer(parseReference(xpp));
15679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
15680        res.setAuthor(parseReference(xpp));
15681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15682        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
15683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
15684        res.setResponsible(parseReference(xpp));
15685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15686        res.setReason(parseCodeableConcept(xpp));
15687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
15688        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
15689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15690        res.getFocus().add(parseReference(xpp));
15691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
15692        res.setDefinitionElement(parseCanonical(xpp));
15693      } else if (!parseDomainResourceContent(eventType, xpp, res))
15694        return false;
15695    return true;
15696  }
15697
15698  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15699    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
15700    parseBackboneAttributes(xpp, res);
15701    next(xpp);
15702    int eventType = nextNoWhitespace(xpp);
15703    while (eventType != XmlPullParser.END_TAG) {
15704  if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, owner, res))
15705        unknownContent(xpp);
15706      eventType = nextNoWhitespace(xpp);
15707    }
15708    next(xpp);
15709    parseElementClose(res);
15710    return res;
15711  }
15712
15713  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15714      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15715        res.setNameElement(parseString(xpp));
15716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15717        res.setTarget(parseReference(xpp));
15718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15719        res.setEndpointElement(parseUrl(xpp));
15720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
15721        res.setReceiver(parseReference(xpp));
15722      } else if (!parseBackboneElementContent(eventType, xpp, res))
15723        return false;
15724    return true;
15725  }
15726
15727  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15728    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
15729    parseBackboneAttributes(xpp, res);
15730    next(xpp);
15731    int eventType = nextNoWhitespace(xpp);
15732    while (eventType != XmlPullParser.END_TAG) {
15733  if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, owner, res))
15734        unknownContent(xpp);
15735      eventType = nextNoWhitespace(xpp);
15736    }
15737    next(xpp);
15738    parseElementClose(res);
15739    return res;
15740  }
15741
15742  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15744        res.setNameElement(parseString(xpp));
15745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
15746        res.setSoftwareElement(parseString(xpp));
15747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15748        res.setVersionElement(parseString(xpp));
15749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15750        res.setContact(parseContactPoint(xpp));
15751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15752        res.setEndpointElement(parseUrl(xpp));
15753      } else if (!parseBackboneElementContent(eventType, xpp, res))
15754        return false;
15755    return true;
15756  }
15757
15758  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15759    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
15760    parseBackboneAttributes(xpp, res);
15761    next(xpp);
15762    int eventType = nextNoWhitespace(xpp);
15763    while (eventType != XmlPullParser.END_TAG) {
15764  if (!parseMessageHeaderMessageHeaderResponseComponentContent(eventType, xpp, owner, res))
15765        unknownContent(xpp);
15766      eventType = nextNoWhitespace(xpp);
15767    }
15768    next(xpp);
15769    parseElementClose(res);
15770    return res;
15771  }
15772
15773  protected boolean parseMessageHeaderMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15774      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15775        res.setIdentifierElement(parseId(xpp));
15776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15777        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
15778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
15779        res.setDetails(parseReference(xpp));
15780      } else if (!parseBackboneElementContent(eventType, xpp, res))
15781        return false;
15782    return true;
15783  }
15784
15785  protected MolecularSequence parseMolecularSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15786    MolecularSequence res = new MolecularSequence();
15787    parseDomainResourceAttributes(xpp, res);
15788    next(xpp);
15789    int eventType = nextNoWhitespace(xpp);
15790    while (eventType != XmlPullParser.END_TAG) {
15791  if (!parseMolecularSequenceContent(eventType, xpp, res))
15792        unknownContent(xpp);
15793      eventType = nextNoWhitespace(xpp);
15794    }
15795    next(xpp);
15796    parseElementClose(res);
15797    return res;
15798  }
15799
15800  protected boolean parseMolecularSequenceContent(int eventType, XmlPullParser xpp, MolecularSequence res) throws XmlPullParserException, IOException, FHIRFormatError {
15801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15802        res.getIdentifier().add(parseIdentifier(xpp));
15803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15804        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.SequenceType.NULL, new MolecularSequence.SequenceTypeEnumFactory()));
15805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
15806        res.setCoordinateSystemElement(parseInteger(xpp));
15807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
15808        res.setPatient(parseReference(xpp));
15809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
15810        res.setSpecimen(parseReference(xpp));
15811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15812        res.setDevice(parseReference(xpp));
15813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15814        res.setPerformer(parseReference(xpp));
15815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15816        res.setQuantity(parseQuantity(xpp));
15817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
15818        res.setReferenceSeq(parseMolecularSequenceMolecularSequenceReferenceSeqComponent(xpp, res));
15819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
15820        res.getVariant().add(parseMolecularSequenceMolecularSequenceVariantComponent(xpp, res));
15821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
15822        res.setObservedSeqElement(parseString(xpp));
15823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
15824        res.getQuality().add(parseMolecularSequenceMolecularSequenceQualityComponent(xpp, res));
15825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
15826        res.setReadCoverageElement(parseInteger(xpp));
15827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
15828        res.getRepository().add(parseMolecularSequenceMolecularSequenceRepositoryComponent(xpp, res));
15829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
15830        res.getPointer().add(parseReference(xpp));
15831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureVariant")) {
15832        res.getStructureVariant().add(parseMolecularSequenceMolecularSequenceStructureVariantComponent(xpp, res));
15833      } else if (!parseDomainResourceContent(eventType, xpp, res))
15834        return false;
15835    return true;
15836  }
15837
15838  protected MolecularSequence.MolecularSequenceReferenceSeqComponent parseMolecularSequenceMolecularSequenceReferenceSeqComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15839    MolecularSequence.MolecularSequenceReferenceSeqComponent res = new MolecularSequence.MolecularSequenceReferenceSeqComponent();
15840    parseBackboneAttributes(xpp, res);
15841    next(xpp);
15842    int eventType = nextNoWhitespace(xpp);
15843    while (eventType != XmlPullParser.END_TAG) {
15844  if (!parseMolecularSequenceMolecularSequenceReferenceSeqComponentContent(eventType, xpp, owner, res))
15845        unknownContent(xpp);
15846      eventType = nextNoWhitespace(xpp);
15847    }
15848    next(xpp);
15849    parseElementClose(res);
15850    return res;
15851  }
15852
15853  protected boolean parseMolecularSequenceMolecularSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15854      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
15855        res.setChromosome(parseCodeableConcept(xpp));
15856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
15857        res.setGenomeBuildElement(parseString(xpp));
15858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientation")) {
15859        res.setOrientationElement(parseEnumeration(xpp, MolecularSequence.OrientationType.NULL, new MolecularSequence.OrientationTypeEnumFactory()));
15860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
15861        res.setReferenceSeqId(parseCodeableConcept(xpp));
15862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
15863        res.setReferenceSeqPointer(parseReference(xpp));
15864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
15865        res.setReferenceSeqStringElement(parseString(xpp));
15866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
15867        res.setStrandElement(parseEnumeration(xpp, MolecularSequence.StrandType.NULL, new MolecularSequence.StrandTypeEnumFactory()));
15868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
15869        res.setWindowStartElement(parseInteger(xpp));
15870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
15871        res.setWindowEndElement(parseInteger(xpp));
15872      } else if (!parseBackboneElementContent(eventType, xpp, res))
15873        return false;
15874    return true;
15875  }
15876
15877  protected MolecularSequence.MolecularSequenceVariantComponent parseMolecularSequenceMolecularSequenceVariantComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15878    MolecularSequence.MolecularSequenceVariantComponent res = new MolecularSequence.MolecularSequenceVariantComponent();
15879    parseBackboneAttributes(xpp, res);
15880    next(xpp);
15881    int eventType = nextNoWhitespace(xpp);
15882    while (eventType != XmlPullParser.END_TAG) {
15883  if (!parseMolecularSequenceMolecularSequenceVariantComponentContent(eventType, xpp, owner, res))
15884        unknownContent(xpp);
15885      eventType = nextNoWhitespace(xpp);
15886    }
15887    next(xpp);
15888    parseElementClose(res);
15889    return res;
15890  }
15891
15892  protected boolean parseMolecularSequenceMolecularSequenceVariantComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15893      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
15894        res.setStartElement(parseInteger(xpp));
15895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15896        res.setEndElement(parseInteger(xpp));
15897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
15898        res.setObservedAlleleElement(parseString(xpp));
15899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
15900        res.setReferenceAlleleElement(parseString(xpp));
15901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
15902        res.setCigarElement(parseString(xpp));
15903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
15904        res.setVariantPointer(parseReference(xpp));
15905      } else if (!parseBackboneElementContent(eventType, xpp, res))
15906        return false;
15907    return true;
15908  }
15909
15910  protected MolecularSequence.MolecularSequenceQualityComponent parseMolecularSequenceMolecularSequenceQualityComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15911    MolecularSequence.MolecularSequenceQualityComponent res = new MolecularSequence.MolecularSequenceQualityComponent();
15912    parseBackboneAttributes(xpp, res);
15913    next(xpp);
15914    int eventType = nextNoWhitespace(xpp);
15915    while (eventType != XmlPullParser.END_TAG) {
15916  if (!parseMolecularSequenceMolecularSequenceQualityComponentContent(eventType, xpp, owner, res))
15917        unknownContent(xpp);
15918      eventType = nextNoWhitespace(xpp);
15919    }
15920    next(xpp);
15921    parseElementClose(res);
15922    return res;
15923  }
15924
15925  protected boolean parseMolecularSequenceMolecularSequenceQualityComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15926      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15927        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.QualityType.NULL, new MolecularSequence.QualityTypeEnumFactory()));
15928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
15929        res.setStandardSequence(parseCodeableConcept(xpp));
15930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
15931        res.setStartElement(parseInteger(xpp));
15932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15933        res.setEndElement(parseInteger(xpp));
15934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
15935        res.setScore(parseQuantity(xpp));
15936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
15937        res.setMethod(parseCodeableConcept(xpp));
15938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
15939        res.setTruthTPElement(parseDecimal(xpp));
15940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
15941        res.setQueryTPElement(parseDecimal(xpp));
15942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
15943        res.setTruthFNElement(parseDecimal(xpp));
15944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
15945        res.setQueryFPElement(parseDecimal(xpp));
15946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
15947        res.setGtFPElement(parseDecimal(xpp));
15948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
15949        res.setPrecisionElement(parseDecimal(xpp));
15950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
15951        res.setRecallElement(parseDecimal(xpp));
15952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
15953        res.setFScoreElement(parseDecimal(xpp));
15954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("roc")) {
15955        res.setRoc(parseMolecularSequenceMolecularSequenceQualityRocComponent(xpp, owner));
15956      } else if (!parseBackboneElementContent(eventType, xpp, res))
15957        return false;
15958    return true;
15959  }
15960
15961  protected MolecularSequence.MolecularSequenceQualityRocComponent parseMolecularSequenceMolecularSequenceQualityRocComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15962    MolecularSequence.MolecularSequenceQualityRocComponent res = new MolecularSequence.MolecularSequenceQualityRocComponent();
15963    parseBackboneAttributes(xpp, res);
15964    next(xpp);
15965    int eventType = nextNoWhitespace(xpp);
15966    while (eventType != XmlPullParser.END_TAG) {
15967  if (!parseMolecularSequenceMolecularSequenceQualityRocComponentContent(eventType, xpp, owner, res))
15968        unknownContent(xpp);
15969      eventType = nextNoWhitespace(xpp);
15970    }
15971    next(xpp);
15972    parseElementClose(res);
15973    return res;
15974  }
15975
15976  protected boolean parseMolecularSequenceMolecularSequenceQualityRocComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceQualityRocComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
15978        res.getScore().add(parseInteger(xpp));
15979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numTP")) {
15980        res.getNumTP().add(parseInteger(xpp));
15981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFP")) {
15982        res.getNumFP().add(parseInteger(xpp));
15983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFN")) {
15984        res.getNumFN().add(parseInteger(xpp));
15985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
15986        res.getPrecision().add(parseDecimal(xpp));
15987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sensitivity")) {
15988        res.getSensitivity().add(parseDecimal(xpp));
15989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fMeasure")) {
15990        res.getFMeasure().add(parseDecimal(xpp));
15991      } else if (!parseBackboneElementContent(eventType, xpp, res))
15992        return false;
15993    return true;
15994  }
15995
15996  protected MolecularSequence.MolecularSequenceRepositoryComponent parseMolecularSequenceMolecularSequenceRepositoryComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15997    MolecularSequence.MolecularSequenceRepositoryComponent res = new MolecularSequence.MolecularSequenceRepositoryComponent();
15998    parseBackboneAttributes(xpp, res);
15999    next(xpp);
16000    int eventType = nextNoWhitespace(xpp);
16001    while (eventType != XmlPullParser.END_TAG) {
16002  if (!parseMolecularSequenceMolecularSequenceRepositoryComponentContent(eventType, xpp, owner, res))
16003        unknownContent(xpp);
16004      eventType = nextNoWhitespace(xpp);
16005    }
16006    next(xpp);
16007    parseElementClose(res);
16008    return res;
16009  }
16010
16011  protected boolean parseMolecularSequenceMolecularSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16012      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16013        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.RepositoryType.NULL, new MolecularSequence.RepositoryTypeEnumFactory()));
16014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16015        res.setUrlElement(parseUri(xpp));
16016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16017        res.setNameElement(parseString(xpp));
16018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
16019        res.setDatasetIdElement(parseString(xpp));
16020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
16021        res.setVariantsetIdElement(parseString(xpp));
16022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
16023        res.setReadsetIdElement(parseString(xpp));
16024      } else if (!parseBackboneElementContent(eventType, xpp, res))
16025        return false;
16026    return true;
16027  }
16028
16029  protected MolecularSequence.MolecularSequenceStructureVariantComponent parseMolecularSequenceMolecularSequenceStructureVariantComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16030    MolecularSequence.MolecularSequenceStructureVariantComponent res = new MolecularSequence.MolecularSequenceStructureVariantComponent();
16031    parseBackboneAttributes(xpp, res);
16032    next(xpp);
16033    int eventType = nextNoWhitespace(xpp);
16034    while (eventType != XmlPullParser.END_TAG) {
16035  if (!parseMolecularSequenceMolecularSequenceStructureVariantComponentContent(eventType, xpp, owner, res))
16036        unknownContent(xpp);
16037      eventType = nextNoWhitespace(xpp);
16038    }
16039    next(xpp);
16040    parseElementClose(res);
16041    return res;
16042  }
16043
16044  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16045      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantType")) {
16046        res.setVariantType(parseCodeableConcept(xpp));
16047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exact")) {
16048        res.setExactElement(parseBoolean(xpp));
16049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
16050        res.setLengthElement(parseInteger(xpp));
16051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outer")) {
16052        res.setOuter(parseMolecularSequenceMolecularSequenceStructureVariantOuterComponent(xpp, owner));
16053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inner")) {
16054        res.setInner(parseMolecularSequenceMolecularSequenceStructureVariantInnerComponent(xpp, owner));
16055      } else if (!parseBackboneElementContent(eventType, xpp, res))
16056        return false;
16057    return true;
16058  }
16059
16060  protected MolecularSequence.MolecularSequenceStructureVariantOuterComponent parseMolecularSequenceMolecularSequenceStructureVariantOuterComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16061    MolecularSequence.MolecularSequenceStructureVariantOuterComponent res = new MolecularSequence.MolecularSequenceStructureVariantOuterComponent();
16062    parseBackboneAttributes(xpp, res);
16063    next(xpp);
16064    int eventType = nextNoWhitespace(xpp);
16065    while (eventType != XmlPullParser.END_TAG) {
16066  if (!parseMolecularSequenceMolecularSequenceStructureVariantOuterComponentContent(eventType, xpp, owner, res))
16067        unknownContent(xpp);
16068      eventType = nextNoWhitespace(xpp);
16069    }
16070    next(xpp);
16071    parseElementClose(res);
16072    return res;
16073  }
16074
16075  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantOuterComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantOuterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16076      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
16077        res.setStartElement(parseInteger(xpp));
16078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
16079        res.setEndElement(parseInteger(xpp));
16080      } else if (!parseBackboneElementContent(eventType, xpp, res))
16081        return false;
16082    return true;
16083  }
16084
16085  protected MolecularSequence.MolecularSequenceStructureVariantInnerComponent parseMolecularSequenceMolecularSequenceStructureVariantInnerComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16086    MolecularSequence.MolecularSequenceStructureVariantInnerComponent res = new MolecularSequence.MolecularSequenceStructureVariantInnerComponent();
16087    parseBackboneAttributes(xpp, res);
16088    next(xpp);
16089    int eventType = nextNoWhitespace(xpp);
16090    while (eventType != XmlPullParser.END_TAG) {
16091  if (!parseMolecularSequenceMolecularSequenceStructureVariantInnerComponentContent(eventType, xpp, owner, res))
16092        unknownContent(xpp);
16093      eventType = nextNoWhitespace(xpp);
16094    }
16095    next(xpp);
16096    parseElementClose(res);
16097    return res;
16098  }
16099
16100  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantInnerComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantInnerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16101      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
16102        res.setStartElement(parseInteger(xpp));
16103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
16104        res.setEndElement(parseInteger(xpp));
16105      } else if (!parseBackboneElementContent(eventType, xpp, res))
16106        return false;
16107    return true;
16108  }
16109
16110  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16111    NamingSystem res = new NamingSystem();
16112    parseDomainResourceAttributes(xpp, res);
16113    next(xpp);
16114    int eventType = nextNoWhitespace(xpp);
16115    while (eventType != XmlPullParser.END_TAG) {
16116  if (!parseNamingSystemContent(eventType, xpp, res))
16117        unknownContent(xpp);
16118      eventType = nextNoWhitespace(xpp);
16119    }
16120    next(xpp);
16121    parseElementClose(res);
16122    return res;
16123  }
16124
16125  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
16126      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16127        res.setNameElement(parseString(xpp));
16128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16129        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
16131        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
16132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16133        res.setDateElement(parseDateTime(xpp));
16134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16135        res.setPublisherElement(parseString(xpp));
16136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16137        res.getContact().add(parseContactDetail(xpp));
16138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
16139        res.setResponsibleElement(parseString(xpp));
16140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16141        res.setType(parseCodeableConcept(xpp));
16142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16143        res.setDescriptionElement(parseMarkdown(xpp));
16144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16145        res.getUseContext().add(parseUsageContext(xpp));
16146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16147        res.getJurisdiction().add(parseCodeableConcept(xpp));
16148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
16149        res.setUsageElement(parseString(xpp));
16150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
16151        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
16152      } else if (!parseDomainResourceContent(eventType, xpp, res))
16153        return false;
16154    return true;
16155  }
16156
16157  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
16158    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
16159    parseBackboneAttributes(xpp, res);
16160    next(xpp);
16161    int eventType = nextNoWhitespace(xpp);
16162    while (eventType != XmlPullParser.END_TAG) {
16163  if (!parseNamingSystemNamingSystemUniqueIdComponentContent(eventType, xpp, owner, res))
16164        unknownContent(xpp);
16165      eventType = nextNoWhitespace(xpp);
16166    }
16167    next(xpp);
16168    parseElementClose(res);
16169    return res;
16170  }
16171
16172  protected boolean parseNamingSystemNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem owner, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16174        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
16175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16176        res.setValueElement(parseString(xpp));
16177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
16178        res.setPreferredElement(parseBoolean(xpp));
16179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16180        res.setCommentElement(parseString(xpp));
16181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16182        res.setPeriod(parsePeriod(xpp));
16183      } else if (!parseBackboneElementContent(eventType, xpp, res))
16184        return false;
16185    return true;
16186  }
16187
16188  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16189    NutritionOrder res = new NutritionOrder();
16190    parseDomainResourceAttributes(xpp, res);
16191    next(xpp);
16192    int eventType = nextNoWhitespace(xpp);
16193    while (eventType != XmlPullParser.END_TAG) {
16194  if (!parseNutritionOrderContent(eventType, xpp, res))
16195        unknownContent(xpp);
16196      eventType = nextNoWhitespace(xpp);
16197    }
16198    next(xpp);
16199    parseElementClose(res);
16200    return res;
16201  }
16202
16203  protected boolean parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
16204      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16205        res.getIdentifier().add(parseIdentifier(xpp));
16206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
16207        res.getInstantiatesCanonical().add(parseCanonical(xpp));
16208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
16209        res.getInstantiatesUri().add(parseUri(xpp));
16210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
16211        res.getInstantiates().add(parseUri(xpp));
16212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16213        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
16214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
16215        res.setIntentElement(parseEnumeration(xpp, NutritionOrder.NutritiionOrderIntent.NULL, new NutritionOrder.NutritiionOrderIntentEnumFactory()));
16216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
16217        res.setPatient(parseReference(xpp));
16218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
16219        res.setEncounter(parseReference(xpp));
16220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
16221        res.setDateTimeElement(parseDateTime(xpp));
16222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
16223        res.setOrderer(parseReference(xpp));
16224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
16225        res.getAllergyIntolerance().add(parseReference(xpp));
16226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
16227        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
16228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
16229        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
16230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
16231        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
16232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
16233        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
16234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
16235        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
16236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16237        res.getNote().add(parseAnnotation(xpp));
16238      } else if (!parseDomainResourceContent(eventType, xpp, res))
16239        return false;
16240    return true;
16241  }
16242
16243  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16244    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
16245    parseBackboneAttributes(xpp, res);
16246    next(xpp);
16247    int eventType = nextNoWhitespace(xpp);
16248    while (eventType != XmlPullParser.END_TAG) {
16249  if (!parseNutritionOrderNutritionOrderOralDietComponentContent(eventType, xpp, owner, res))
16250        unknownContent(xpp);
16251      eventType = nextNoWhitespace(xpp);
16252    }
16253    next(xpp);
16254    parseElementClose(res);
16255    return res;
16256  }
16257
16258  protected boolean parseNutritionOrderNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16259      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16260        res.getType().add(parseCodeableConcept(xpp));
16261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16262        res.getSchedule().add(parseTiming(xpp));
16263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
16264        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
16265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
16266        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
16267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
16268        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
16269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
16270        res.setInstructionElement(parseString(xpp));
16271      } else if (!parseBackboneElementContent(eventType, xpp, res))
16272        return false;
16273    return true;
16274  }
16275
16276  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16277    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
16278    parseBackboneAttributes(xpp, res);
16279    next(xpp);
16280    int eventType = nextNoWhitespace(xpp);
16281    while (eventType != XmlPullParser.END_TAG) {
16282  if (!parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(eventType, xpp, owner, res))
16283        unknownContent(xpp);
16284      eventType = nextNoWhitespace(xpp);
16285    }
16286    next(xpp);
16287    parseElementClose(res);
16288    return res;
16289  }
16290
16291  protected boolean parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16292      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
16293        res.setModifier(parseCodeableConcept(xpp));
16294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
16295        res.setAmount(parseQuantity(xpp));
16296      } else if (!parseBackboneElementContent(eventType, xpp, res))
16297        return false;
16298    return true;
16299  }
16300
16301  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16302    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
16303    parseBackboneAttributes(xpp, res);
16304    next(xpp);
16305    int eventType = nextNoWhitespace(xpp);
16306    while (eventType != XmlPullParser.END_TAG) {
16307  if (!parseNutritionOrderNutritionOrderOralDietTextureComponentContent(eventType, xpp, owner, res))
16308        unknownContent(xpp);
16309      eventType = nextNoWhitespace(xpp);
16310    }
16311    next(xpp);
16312    parseElementClose(res);
16313    return res;
16314  }
16315
16316  protected boolean parseNutritionOrderNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16317      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
16318        res.setModifier(parseCodeableConcept(xpp));
16319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
16320        res.setFoodType(parseCodeableConcept(xpp));
16321      } else if (!parseBackboneElementContent(eventType, xpp, res))
16322        return false;
16323    return true;
16324  }
16325
16326  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16327    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
16328    parseBackboneAttributes(xpp, res);
16329    next(xpp);
16330    int eventType = nextNoWhitespace(xpp);
16331    while (eventType != XmlPullParser.END_TAG) {
16332  if (!parseNutritionOrderNutritionOrderSupplementComponentContent(eventType, xpp, owner, res))
16333        unknownContent(xpp);
16334      eventType = nextNoWhitespace(xpp);
16335    }
16336    next(xpp);
16337    parseElementClose(res);
16338    return res;
16339  }
16340
16341  protected boolean parseNutritionOrderNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16342      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16343        res.setType(parseCodeableConcept(xpp));
16344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
16345        res.setProductNameElement(parseString(xpp));
16346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16347        res.getSchedule().add(parseTiming(xpp));
16348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16349        res.setQuantity(parseQuantity(xpp));
16350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
16351        res.setInstructionElement(parseString(xpp));
16352      } else if (!parseBackboneElementContent(eventType, xpp, res))
16353        return false;
16354    return true;
16355  }
16356
16357  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16358    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
16359    parseBackboneAttributes(xpp, res);
16360    next(xpp);
16361    int eventType = nextNoWhitespace(xpp);
16362    while (eventType != XmlPullParser.END_TAG) {
16363  if (!parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(eventType, xpp, owner, res))
16364        unknownContent(xpp);
16365      eventType = nextNoWhitespace(xpp);
16366    }
16367    next(xpp);
16368    parseElementClose(res);
16369    return res;
16370  }
16371
16372  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16373      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
16374        res.setBaseFormulaType(parseCodeableConcept(xpp));
16375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
16376        res.setBaseFormulaProductNameElement(parseString(xpp));
16377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
16378        res.setAdditiveType(parseCodeableConcept(xpp));
16379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
16380        res.setAdditiveProductNameElement(parseString(xpp));
16381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
16382        res.setCaloricDensity(parseQuantity(xpp));
16383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
16384        res.setRouteofAdministration(parseCodeableConcept(xpp));
16385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
16386        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
16387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
16388        res.setMaxVolumeToDeliver(parseQuantity(xpp));
16389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
16390        res.setAdministrationInstructionElement(parseString(xpp));
16391      } else if (!parseBackboneElementContent(eventType, xpp, res))
16392        return false;
16393    return true;
16394  }
16395
16396  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16397    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
16398    parseBackboneAttributes(xpp, res);
16399    next(xpp);
16400    int eventType = nextNoWhitespace(xpp);
16401    while (eventType != XmlPullParser.END_TAG) {
16402  if (!parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, owner, res))
16403        unknownContent(xpp);
16404      eventType = nextNoWhitespace(xpp);
16405    }
16406    next(xpp);
16407    parseElementClose(res);
16408    return res;
16409  }
16410
16411  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16412      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16413        res.setSchedule(parseTiming(xpp));
16414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16415        res.setQuantity(parseQuantity(xpp));
16416      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
16417        res.setRate(parseType("rate", xpp));
16418      } else if (!parseBackboneElementContent(eventType, xpp, res))
16419        return false;
16420    return true;
16421  }
16422
16423  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16424    Observation res = new Observation();
16425    parseDomainResourceAttributes(xpp, res);
16426    next(xpp);
16427    int eventType = nextNoWhitespace(xpp);
16428    while (eventType != XmlPullParser.END_TAG) {
16429  if (!parseObservationContent(eventType, xpp, res))
16430        unknownContent(xpp);
16431      eventType = nextNoWhitespace(xpp);
16432    }
16433    next(xpp);
16434    parseElementClose(res);
16435    return res;
16436  }
16437
16438  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
16439      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16440        res.getIdentifier().add(parseIdentifier(xpp));
16441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
16442        res.getBasedOn().add(parseReference(xpp));
16443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16444        res.getPartOf().add(parseReference(xpp));
16445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16446        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
16447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16448        res.getCategory().add(parseCodeableConcept(xpp));
16449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16450        res.setCode(parseCodeableConcept(xpp));
16451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
16452        res.setSubject(parseReference(xpp));
16453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
16454        res.getFocus().add(parseReference(xpp));
16455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
16456        res.setEncounter(parseReference(xpp));
16457      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
16458        res.setEffective(parseType("effective", xpp));
16459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
16460        res.setIssuedElement(parseInstant(xpp));
16461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
16462        res.getPerformer().add(parseReference(xpp));
16463      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16464        res.setValue(parseType("value", xpp));
16465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
16466        res.setDataAbsentReason(parseCodeableConcept(xpp));
16467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
16468        res.getInterpretation().add(parseCodeableConcept(xpp));
16469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16470        res.getNote().add(parseAnnotation(xpp));
16471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
16472        res.setBodySite(parseCodeableConcept(xpp));
16473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
16474        res.setMethod(parseCodeableConcept(xpp));
16475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
16476        res.setSpecimen(parseReference(xpp));
16477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
16478        res.setDevice(parseReference(xpp));
16479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
16480        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
16481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasMember")) {
16482        res.getHasMember().add(parseReference(xpp));
16483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
16484        res.getDerivedFrom().add(parseReference(xpp));
16485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
16486        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
16487      } else if (!parseDomainResourceContent(eventType, xpp, res))
16488        return false;
16489    return true;
16490  }
16491
16492  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16493    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
16494    parseBackboneAttributes(xpp, res);
16495    next(xpp);
16496    int eventType = nextNoWhitespace(xpp);
16497    while (eventType != XmlPullParser.END_TAG) {
16498  if (!parseObservationObservationReferenceRangeComponentContent(eventType, xpp, owner, res))
16499        unknownContent(xpp);
16500      eventType = nextNoWhitespace(xpp);
16501    }
16502    next(xpp);
16503    parseElementClose(res);
16504    return res;
16505  }
16506
16507  protected boolean parseObservationObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
16509        res.setLow(parseQuantity(xpp));
16510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
16511        res.setHigh(parseQuantity(xpp));
16512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16513        res.setType(parseCodeableConcept(xpp));
16514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
16515        res.getAppliesTo().add(parseCodeableConcept(xpp));
16516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
16517        res.setAge(parseRange(xpp));
16518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
16519        res.setTextElement(parseString(xpp));
16520      } else if (!parseBackboneElementContent(eventType, xpp, res))
16521        return false;
16522    return true;
16523  }
16524
16525  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16526    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
16527    parseBackboneAttributes(xpp, res);
16528    next(xpp);
16529    int eventType = nextNoWhitespace(xpp);
16530    while (eventType != XmlPullParser.END_TAG) {
16531  if (!parseObservationObservationComponentComponentContent(eventType, xpp, owner, res))
16532        unknownContent(xpp);
16533      eventType = nextNoWhitespace(xpp);
16534    }
16535    next(xpp);
16536    parseElementClose(res);
16537    return res;
16538  }
16539
16540  protected boolean parseObservationObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16542        res.setCode(parseCodeableConcept(xpp));
16543      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16544        res.setValue(parseType("value", xpp));
16545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
16546        res.setDataAbsentReason(parseCodeableConcept(xpp));
16547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
16548        res.getInterpretation().add(parseCodeableConcept(xpp));
16549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
16550        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
16551      } else if (!parseBackboneElementContent(eventType, xpp, res))
16552        return false;
16553    return true;
16554  }
16555
16556  protected ObservationDefinition parseObservationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16557    ObservationDefinition res = new ObservationDefinition();
16558    parseDomainResourceAttributes(xpp, res);
16559    next(xpp);
16560    int eventType = nextNoWhitespace(xpp);
16561    while (eventType != XmlPullParser.END_TAG) {
16562  if (!parseObservationDefinitionContent(eventType, xpp, res))
16563        unknownContent(xpp);
16564      eventType = nextNoWhitespace(xpp);
16565    }
16566    next(xpp);
16567    parseElementClose(res);
16568    return res;
16569  }
16570
16571  protected boolean parseObservationDefinitionContent(int eventType, XmlPullParser xpp, ObservationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16572      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16573        res.getCategory().add(parseCodeableConcept(xpp));
16574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16575        res.setCode(parseCodeableConcept(xpp));
16576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16577        res.getIdentifier().add(parseIdentifier(xpp));
16578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedDataType")) {
16579        res.getPermittedDataType().add(parseEnumeration(xpp, ObservationDefinition.ObservationDataType.NULL, new ObservationDefinition.ObservationDataTypeEnumFactory()));
16580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleResultsAllowed")) {
16581        res.setMultipleResultsAllowedElement(parseBoolean(xpp));
16582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
16583        res.setMethod(parseCodeableConcept(xpp));
16584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferredReportName")) {
16585        res.setPreferredReportNameElement(parseString(xpp));
16586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantitativeDetails")) {
16587        res.setQuantitativeDetails(parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(xpp, res));
16588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiedInterval")) {
16589        res.getQualifiedInterval().add(parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(xpp, res));
16590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validCodedValueSet")) {
16591        res.setValidCodedValueSet(parseReference(xpp));
16592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("normalCodedValueSet")) {
16593        res.setNormalCodedValueSet(parseReference(xpp));
16594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abnormalCodedValueSet")) {
16595        res.setAbnormalCodedValueSet(parseReference(xpp));
16596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticalCodedValueSet")) {
16597        res.setCriticalCodedValueSet(parseReference(xpp));
16598      } else if (!parseDomainResourceContent(eventType, xpp, res))
16599        return false;
16600    return true;
16601  }
16602
16603  protected ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16604    ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res = new ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent();
16605    parseBackboneAttributes(xpp, res);
16606    next(xpp);
16607    int eventType = nextNoWhitespace(xpp);
16608    while (eventType != XmlPullParser.END_TAG) {
16609  if (!parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(eventType, xpp, owner, res))
16610        unknownContent(xpp);
16611      eventType = nextNoWhitespace(xpp);
16612    }
16613    next(xpp);
16614    parseElementClose(res);
16615    return res;
16616  }
16617
16618  protected boolean parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16619      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("customaryUnit")) {
16620        res.setCustomaryUnit(parseCodeableConcept(xpp));
16621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
16622        res.setUnit(parseCodeableConcept(xpp));
16623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conversionFactor")) {
16624        res.setConversionFactorElement(parseDecimal(xpp));
16625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decimalPrecision")) {
16626        res.setDecimalPrecisionElement(parseInteger(xpp));
16627      } else if (!parseBackboneElementContent(eventType, xpp, res))
16628        return false;
16629    return true;
16630  }
16631
16632  protected ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16633    ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res = new ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent();
16634    parseBackboneAttributes(xpp, res);
16635    next(xpp);
16636    int eventType = nextNoWhitespace(xpp);
16637    while (eventType != XmlPullParser.END_TAG) {
16638  if (!parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(eventType, xpp, owner, res))
16639        unknownContent(xpp);
16640      eventType = nextNoWhitespace(xpp);
16641    }
16642    next(xpp);
16643    parseElementClose(res);
16644    return res;
16645  }
16646
16647  protected boolean parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16648      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16649        res.setCategoryElement(parseEnumeration(xpp, ObservationDefinition.ObservationRangeCategory.NULL, new ObservationDefinition.ObservationRangeCategoryEnumFactory()));
16650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
16651        res.setRange(parseRange(xpp));
16652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
16653        res.setContext(parseCodeableConcept(xpp));
16654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
16655        res.getAppliesTo().add(parseCodeableConcept(xpp));
16656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
16657        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
16658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
16659        res.setAge(parseRange(xpp));
16660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gestationalAge")) {
16661        res.setGestationalAge(parseRange(xpp));
16662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
16663        res.setConditionElement(parseString(xpp));
16664      } else if (!parseBackboneElementContent(eventType, xpp, res))
16665        return false;
16666    return true;
16667  }
16668
16669  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16670    OperationDefinition res = new OperationDefinition();
16671    parseDomainResourceAttributes(xpp, res);
16672    next(xpp);
16673    int eventType = nextNoWhitespace(xpp);
16674    while (eventType != XmlPullParser.END_TAG) {
16675  if (!parseOperationDefinitionContent(eventType, xpp, res))
16676        unknownContent(xpp);
16677      eventType = nextNoWhitespace(xpp);
16678    }
16679    next(xpp);
16680    parseElementClose(res);
16681    return res;
16682  }
16683
16684  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16685      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16686        res.setUrlElement(parseUri(xpp));
16687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16688        res.setVersionElement(parseString(xpp));
16689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16690        res.setNameElement(parseString(xpp));
16691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16692        res.setTitleElement(parseString(xpp));
16693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16694        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
16696        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
16697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16698        res.setExperimentalElement(parseBoolean(xpp));
16699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16700        res.setDateElement(parseDateTime(xpp));
16701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16702        res.setPublisherElement(parseString(xpp));
16703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16704        res.getContact().add(parseContactDetail(xpp));
16705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16706        res.setDescriptionElement(parseMarkdown(xpp));
16707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16708        res.getUseContext().add(parseUsageContext(xpp));
16709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16710        res.getJurisdiction().add(parseCodeableConcept(xpp));
16711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16712        res.setPurposeElement(parseMarkdown(xpp));
16713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affectsState")) {
16714        res.setAffectsStateElement(parseBoolean(xpp));
16715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16716        res.setCodeElement(parseCode(xpp));
16717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16718        res.setCommentElement(parseMarkdown(xpp));
16719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
16720        res.setBaseElement(parseCanonical(xpp));
16721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16722        res.getResource().add(parseCode(xpp));
16723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
16724        res.setSystemElement(parseBoolean(xpp));
16725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16726        res.setTypeElement(parseBoolean(xpp));
16727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
16728        res.setInstanceElement(parseBoolean(xpp));
16729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputProfile")) {
16730        res.setInputProfileElement(parseCanonical(xpp));
16731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputProfile")) {
16732        res.setOutputProfileElement(parseCanonical(xpp));
16733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
16734        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
16735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
16736        res.getOverload().add(parseOperationDefinitionOperationDefinitionOverloadComponent(xpp, res));
16737      } else if (!parseDomainResourceContent(eventType, xpp, res))
16738        return false;
16739    return true;
16740  }
16741
16742  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16743    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
16744    parseBackboneAttributes(xpp, res);
16745    next(xpp);
16746    int eventType = nextNoWhitespace(xpp);
16747    while (eventType != XmlPullParser.END_TAG) {
16748  if (!parseOperationDefinitionOperationDefinitionParameterComponentContent(eventType, xpp, owner, res))
16749        unknownContent(xpp);
16750      eventType = nextNoWhitespace(xpp);
16751    }
16752    next(xpp);
16753    parseElementClose(res);
16754    return res;
16755  }
16756
16757  protected boolean parseOperationDefinitionOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16758      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16759        res.setNameElement(parseCode(xpp));
16760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
16761        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
16762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
16763        res.setMinElement(parseInteger(xpp));
16764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
16765        res.setMaxElement(parseString(xpp));
16766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
16767        res.setDocumentationElement(parseString(xpp));
16768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16769        res.setTypeElement(parseCode(xpp));
16770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
16771        res.getTargetProfile().add(parseCanonical(xpp));
16772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
16773        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
16774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
16775        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
16776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedFrom")) {
16777        res.getReferencedFrom().add(parseOperationDefinitionOperationDefinitionParameterReferencedFromComponent(xpp, owner));
16778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
16779        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
16780      } else if (!parseBackboneElementContent(eventType, xpp, res))
16781        return false;
16782    return true;
16783  }
16784
16785  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16786    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
16787    parseBackboneAttributes(xpp, res);
16788    next(xpp);
16789    int eventType = nextNoWhitespace(xpp);
16790    while (eventType != XmlPullParser.END_TAG) {
16791  if (!parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(eventType, xpp, owner, res))
16792        unknownContent(xpp);
16793      eventType = nextNoWhitespace(xpp);
16794    }
16795    next(xpp);
16796    parseElementClose(res);
16797    return res;
16798  }
16799
16800  protected boolean parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
16802        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
16803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
16804        res.setValueSetElement(parseCanonical(xpp));
16805      } else if (!parseBackboneElementContent(eventType, xpp, res))
16806        return false;
16807    return true;
16808  }
16809
16810  protected OperationDefinition.OperationDefinitionParameterReferencedFromComponent parseOperationDefinitionOperationDefinitionParameterReferencedFromComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16811    OperationDefinition.OperationDefinitionParameterReferencedFromComponent res = new OperationDefinition.OperationDefinitionParameterReferencedFromComponent();
16812    parseBackboneAttributes(xpp, res);
16813    next(xpp);
16814    int eventType = nextNoWhitespace(xpp);
16815    while (eventType != XmlPullParser.END_TAG) {
16816  if (!parseOperationDefinitionOperationDefinitionParameterReferencedFromComponentContent(eventType, xpp, owner, res))
16817        unknownContent(xpp);
16818      eventType = nextNoWhitespace(xpp);
16819    }
16820    next(xpp);
16821    parseElementClose(res);
16822    return res;
16823  }
16824
16825  protected boolean parseOperationDefinitionOperationDefinitionParameterReferencedFromComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterReferencedFromComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16826      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
16827        res.setSourceElement(parseString(xpp));
16828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16829        res.setSourceIdElement(parseString(xpp));
16830      } else if (!parseBackboneElementContent(eventType, xpp, res))
16831        return false;
16832    return true;
16833  }
16834
16835  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOperationDefinitionOverloadComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16836    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
16837    parseBackboneAttributes(xpp, res);
16838    next(xpp);
16839    int eventType = nextNoWhitespace(xpp);
16840    while (eventType != XmlPullParser.END_TAG) {
16841  if (!parseOperationDefinitionOperationDefinitionOverloadComponentContent(eventType, xpp, owner, res))
16842        unknownContent(xpp);
16843      eventType = nextNoWhitespace(xpp);
16844    }
16845    next(xpp);
16846    parseElementClose(res);
16847    return res;
16848  }
16849
16850  protected boolean parseOperationDefinitionOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16851      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
16852        res.getParameterName().add(parseString(xpp));
16853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16854        res.setCommentElement(parseString(xpp));
16855      } else if (!parseBackboneElementContent(eventType, xpp, res))
16856        return false;
16857    return true;
16858  }
16859
16860  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16861    OperationOutcome res = new OperationOutcome();
16862    parseDomainResourceAttributes(xpp, res);
16863    next(xpp);
16864    int eventType = nextNoWhitespace(xpp);
16865    while (eventType != XmlPullParser.END_TAG) {
16866  if (!parseOperationOutcomeContent(eventType, xpp, res))
16867        unknownContent(xpp);
16868      eventType = nextNoWhitespace(xpp);
16869    }
16870    next(xpp);
16871    parseElementClose(res);
16872    return res;
16873  }
16874
16875  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
16876      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
16877        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
16878      } else if (!parseDomainResourceContent(eventType, xpp, res))
16879        return false;
16880    return true;
16881  }
16882
16883  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
16884    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
16885    parseBackboneAttributes(xpp, res);
16886    next(xpp);
16887    int eventType = nextNoWhitespace(xpp);
16888    while (eventType != XmlPullParser.END_TAG) {
16889  if (!parseOperationOutcomeOperationOutcomeIssueComponentContent(eventType, xpp, owner, res))
16890        unknownContent(xpp);
16891      eventType = nextNoWhitespace(xpp);
16892    }
16893    next(xpp);
16894    parseElementClose(res);
16895    return res;
16896  }
16897
16898  protected boolean parseOperationOutcomeOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome owner, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16899      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
16900        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
16901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16902        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
16903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
16904        res.setDetails(parseCodeableConcept(xpp));
16905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
16906        res.setDiagnosticsElement(parseString(xpp));
16907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
16908        res.getLocation().add(parseString(xpp));
16909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16910        res.getExpression().add(parseString(xpp));
16911      } else if (!parseBackboneElementContent(eventType, xpp, res))
16912        return false;
16913    return true;
16914  }
16915
16916  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16917    Organization res = new Organization();
16918    parseDomainResourceAttributes(xpp, res);
16919    next(xpp);
16920    int eventType = nextNoWhitespace(xpp);
16921    while (eventType != XmlPullParser.END_TAG) {
16922  if (!parseOrganizationContent(eventType, xpp, res))
16923        unknownContent(xpp);
16924      eventType = nextNoWhitespace(xpp);
16925    }
16926    next(xpp);
16927    parseElementClose(res);
16928    return res;
16929  }
16930
16931  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
16932      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16933        res.getIdentifier().add(parseIdentifier(xpp));
16934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16935        res.setActiveElement(parseBoolean(xpp));
16936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16937        res.getType().add(parseCodeableConcept(xpp));
16938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16939        res.setNameElement(parseString(xpp));
16940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
16941        res.getAlias().add(parseString(xpp));
16942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16943        res.getTelecom().add(parseContactPoint(xpp));
16944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16945        res.getAddress().add(parseAddress(xpp));
16946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16947        res.setPartOf(parseReference(xpp));
16948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16949        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
16950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16951        res.getEndpoint().add(parseReference(xpp));
16952      } else if (!parseDomainResourceContent(eventType, xpp, res))
16953        return false;
16954    return true;
16955  }
16956
16957  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
16958    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
16959    parseBackboneAttributes(xpp, res);
16960    next(xpp);
16961    int eventType = nextNoWhitespace(xpp);
16962    while (eventType != XmlPullParser.END_TAG) {
16963  if (!parseOrganizationOrganizationContactComponentContent(eventType, xpp, owner, res))
16964        unknownContent(xpp);
16965      eventType = nextNoWhitespace(xpp);
16966    }
16967    next(xpp);
16968    parseElementClose(res);
16969    return res;
16970  }
16971
16972  protected boolean parseOrganizationOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization owner, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16973      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16974        res.setPurpose(parseCodeableConcept(xpp));
16975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16976        res.setName(parseHumanName(xpp));
16977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16978        res.getTelecom().add(parseContactPoint(xpp));
16979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16980        res.setAddress(parseAddress(xpp));
16981      } else if (!parseBackboneElementContent(eventType, xpp, res))
16982        return false;
16983    return true;
16984  }
16985
16986  protected OrganizationAffiliation parseOrganizationAffiliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16987    OrganizationAffiliation res = new OrganizationAffiliation();
16988    parseDomainResourceAttributes(xpp, res);
16989    next(xpp);
16990    int eventType = nextNoWhitespace(xpp);
16991    while (eventType != XmlPullParser.END_TAG) {
16992  if (!parseOrganizationAffiliationContent(eventType, xpp, res))
16993        unknownContent(xpp);
16994      eventType = nextNoWhitespace(xpp);
16995    }
16996    next(xpp);
16997    parseElementClose(res);
16998    return res;
16999  }
17000
17001  protected boolean parseOrganizationAffiliationContent(int eventType, XmlPullParser xpp, OrganizationAffiliation res) throws XmlPullParserException, IOException, FHIRFormatError {
17002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17003        res.getIdentifier().add(parseIdentifier(xpp));
17004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17005        res.setActiveElement(parseBoolean(xpp));
17006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17007        res.setPeriod(parsePeriod(xpp));
17008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17009        res.setOrganization(parseReference(xpp));
17010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participatingOrganization")) {
17011        res.setParticipatingOrganization(parseReference(xpp));
17012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
17013        res.getNetwork().add(parseReference(xpp));
17014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17015        res.getCode().add(parseCodeableConcept(xpp));
17016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17017        res.getSpecialty().add(parseCodeableConcept(xpp));
17018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17019        res.getLocation().add(parseReference(xpp));
17020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
17021        res.getHealthcareService().add(parseReference(xpp));
17022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17023        res.getTelecom().add(parseContactPoint(xpp));
17024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
17025        res.getEndpoint().add(parseReference(xpp));
17026      } else if (!parseDomainResourceContent(eventType, xpp, res))
17027        return false;
17028    return true;
17029  }
17030
17031  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17032    Patient res = new Patient();
17033    parseDomainResourceAttributes(xpp, res);
17034    next(xpp);
17035    int eventType = nextNoWhitespace(xpp);
17036    while (eventType != XmlPullParser.END_TAG) {
17037  if (!parsePatientContent(eventType, xpp, res))
17038        unknownContent(xpp);
17039      eventType = nextNoWhitespace(xpp);
17040    }
17041    next(xpp);
17042    parseElementClose(res);
17043    return res;
17044  }
17045
17046  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
17047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17048        res.getIdentifier().add(parseIdentifier(xpp));
17049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17050        res.setActiveElement(parseBoolean(xpp));
17051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17052        res.getName().add(parseHumanName(xpp));
17053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17054        res.getTelecom().add(parseContactPoint(xpp));
17055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17056        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17058        res.setBirthDateElement(parseDate(xpp));
17059      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
17060        res.setDeceased(parseType("deceased", xpp));
17061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17062        res.getAddress().add(parseAddress(xpp));
17063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
17064        res.setMaritalStatus(parseCodeableConcept(xpp));
17065      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
17066        res.setMultipleBirth(parseType("multipleBirth", xpp));
17067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17068        res.getPhoto().add(parseAttachment(xpp));
17069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17070        res.getContact().add(parsePatientContactComponent(xpp, res));
17071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
17072        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
17073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
17074        res.getGeneralPractitioner().add(parseReference(xpp));
17075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
17076        res.setManagingOrganization(parseReference(xpp));
17077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
17078        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
17079      } else if (!parseDomainResourceContent(eventType, xpp, res))
17080        return false;
17081    return true;
17082  }
17083
17084  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17085    Patient.ContactComponent res = new Patient.ContactComponent();
17086    parseBackboneAttributes(xpp, res);
17087    next(xpp);
17088    int eventType = nextNoWhitespace(xpp);
17089    while (eventType != XmlPullParser.END_TAG) {
17090  if (!parsePatientContactComponentContent(eventType, xpp, owner, res))
17091        unknownContent(xpp);
17092      eventType = nextNoWhitespace(xpp);
17093    }
17094    next(xpp);
17095    parseElementClose(res);
17096    return res;
17097  }
17098
17099  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17100      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
17101        res.getRelationship().add(parseCodeableConcept(xpp));
17102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17103        res.setName(parseHumanName(xpp));
17104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17105        res.getTelecom().add(parseContactPoint(xpp));
17106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17107        res.setAddress(parseAddress(xpp));
17108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17109        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17111        res.setOrganization(parseReference(xpp));
17112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17113        res.setPeriod(parsePeriod(xpp));
17114      } else if (!parseBackboneElementContent(eventType, xpp, res))
17115        return false;
17116    return true;
17117  }
17118
17119  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17120    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
17121    parseBackboneAttributes(xpp, res);
17122    next(xpp);
17123    int eventType = nextNoWhitespace(xpp);
17124    while (eventType != XmlPullParser.END_TAG) {
17125  if (!parsePatientPatientCommunicationComponentContent(eventType, xpp, owner, res))
17126        unknownContent(xpp);
17127      eventType = nextNoWhitespace(xpp);
17128    }
17129    next(xpp);
17130    parseElementClose(res);
17131    return res;
17132  }
17133
17134  protected boolean parsePatientPatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17135      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17136        res.setLanguage(parseCodeableConcept(xpp));
17137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
17138        res.setPreferredElement(parseBoolean(xpp));
17139      } else if (!parseBackboneElementContent(eventType, xpp, res))
17140        return false;
17141    return true;
17142  }
17143
17144  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17145    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
17146    parseBackboneAttributes(xpp, res);
17147    next(xpp);
17148    int eventType = nextNoWhitespace(xpp);
17149    while (eventType != XmlPullParser.END_TAG) {
17150  if (!parsePatientPatientLinkComponentContent(eventType, xpp, owner, res))
17151        unknownContent(xpp);
17152      eventType = nextNoWhitespace(xpp);
17153    }
17154    next(xpp);
17155    parseElementClose(res);
17156    return res;
17157  }
17158
17159  protected boolean parsePatientPatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17160      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
17161        res.setOther(parseReference(xpp));
17162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17163        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
17164      } else if (!parseBackboneElementContent(eventType, xpp, res))
17165        return false;
17166    return true;
17167  }
17168
17169  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17170    PaymentNotice res = new PaymentNotice();
17171    parseDomainResourceAttributes(xpp, res);
17172    next(xpp);
17173    int eventType = nextNoWhitespace(xpp);
17174    while (eventType != XmlPullParser.END_TAG) {
17175  if (!parsePaymentNoticeContent(eventType, xpp, res))
17176        unknownContent(xpp);
17177      eventType = nextNoWhitespace(xpp);
17178    }
17179    next(xpp);
17180    parseElementClose(res);
17181    return res;
17182  }
17183
17184  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
17185      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17186        res.getIdentifier().add(parseIdentifier(xpp));
17187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17188        res.setStatusElement(parseEnumeration(xpp, PaymentNotice.PaymentNoticeStatus.NULL, new PaymentNotice.PaymentNoticeStatusEnumFactory()));
17189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17190        res.setRequest(parseReference(xpp));
17191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
17192        res.setResponse(parseReference(xpp));
17193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
17194        res.setCreatedElement(parseDateTime(xpp));
17195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
17196        res.setProvider(parseReference(xpp));
17197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
17198        res.setPayment(parseReference(xpp));
17199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
17200        res.setPaymentDateElement(parseDate(xpp));
17201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
17202        res.setPayee(parseReference(xpp));
17203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
17204        res.setRecipient(parseReference(xpp));
17205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17206        res.setAmount(parseMoney(xpp));
17207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
17208        res.setPaymentStatus(parseCodeableConcept(xpp));
17209      } else if (!parseDomainResourceContent(eventType, xpp, res))
17210        return false;
17211    return true;
17212  }
17213
17214  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17215    PaymentReconciliation res = new PaymentReconciliation();
17216    parseDomainResourceAttributes(xpp, res);
17217    next(xpp);
17218    int eventType = nextNoWhitespace(xpp);
17219    while (eventType != XmlPullParser.END_TAG) {
17220  if (!parsePaymentReconciliationContent(eventType, xpp, res))
17221        unknownContent(xpp);
17222      eventType = nextNoWhitespace(xpp);
17223    }
17224    next(xpp);
17225    parseElementClose(res);
17226    return res;
17227  }
17228
17229  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
17230      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17231        res.getIdentifier().add(parseIdentifier(xpp));
17232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17233        res.setStatusElement(parseEnumeration(xpp, PaymentReconciliation.PaymentReconciliationStatus.NULL, new PaymentReconciliation.PaymentReconciliationStatusEnumFactory()));
17234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17235        res.setPeriod(parsePeriod(xpp));
17236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
17237        res.setCreatedElement(parseDateTime(xpp));
17238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIssuer")) {
17239        res.setPaymentIssuer(parseReference(xpp));
17240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17241        res.setRequest(parseReference(xpp));
17242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
17243        res.setRequestor(parseReference(xpp));
17244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17245        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
17246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
17247        res.setDispositionElement(parseString(xpp));
17248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
17249        res.setPaymentDateElement(parseDate(xpp));
17250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAmount")) {
17251        res.setPaymentAmount(parseMoney(xpp));
17252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIdentifier")) {
17253        res.setPaymentIdentifier(parseIdentifier(xpp));
17254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
17255        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
17256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
17257        res.setFormCode(parseCodeableConcept(xpp));
17258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
17259        res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
17260      } else if (!parseDomainResourceContent(eventType, xpp, res))
17261        return false;
17262    return true;
17263  }
17264
17265  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
17266    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
17267    parseBackboneAttributes(xpp, res);
17268    next(xpp);
17269    int eventType = nextNoWhitespace(xpp);
17270    while (eventType != XmlPullParser.END_TAG) {
17271  if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, owner, res))
17272        unknownContent(xpp);
17273      eventType = nextNoWhitespace(xpp);
17274    }
17275    next(xpp);
17276    parseElementClose(res);
17277    return res;
17278  }
17279
17280  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17281      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17282        res.setIdentifier(parseIdentifier(xpp));
17283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("predecessor")) {
17284        res.setPredecessor(parseIdentifier(xpp));
17285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17286        res.setType(parseCodeableConcept(xpp));
17287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17288        res.setRequest(parseReference(xpp));
17289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
17290        res.setSubmitter(parseReference(xpp));
17291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
17292        res.setResponse(parseReference(xpp));
17293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17294        res.setDateElement(parseDate(xpp));
17295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
17296        res.setResponsible(parseReference(xpp));
17297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
17298        res.setPayee(parseReference(xpp));
17299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17300        res.setAmount(parseMoney(xpp));
17301      } else if (!parseBackboneElementContent(eventType, xpp, res))
17302        return false;
17303    return true;
17304  }
17305
17306  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
17307    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
17308    parseBackboneAttributes(xpp, res);
17309    next(xpp);
17310    int eventType = nextNoWhitespace(xpp);
17311    while (eventType != XmlPullParser.END_TAG) {
17312  if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, owner, res))
17313        unknownContent(xpp);
17314      eventType = nextNoWhitespace(xpp);
17315    }
17316    next(xpp);
17317    parseElementClose(res);
17318    return res;
17319  }
17320
17321  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17322      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17323        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
17324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
17325        res.setTextElement(parseString(xpp));
17326      } else if (!parseBackboneElementContent(eventType, xpp, res))
17327        return false;
17328    return true;
17329  }
17330
17331  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17332    Person res = new Person();
17333    parseDomainResourceAttributes(xpp, res);
17334    next(xpp);
17335    int eventType = nextNoWhitespace(xpp);
17336    while (eventType != XmlPullParser.END_TAG) {
17337  if (!parsePersonContent(eventType, xpp, res))
17338        unknownContent(xpp);
17339      eventType = nextNoWhitespace(xpp);
17340    }
17341    next(xpp);
17342    parseElementClose(res);
17343    return res;
17344  }
17345
17346  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
17347      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17348        res.getIdentifier().add(parseIdentifier(xpp));
17349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17350        res.getName().add(parseHumanName(xpp));
17351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17352        res.getTelecom().add(parseContactPoint(xpp));
17353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17354        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17356        res.setBirthDateElement(parseDate(xpp));
17357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17358        res.getAddress().add(parseAddress(xpp));
17359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17360        res.setPhoto(parseAttachment(xpp));
17361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
17362        res.setManagingOrganization(parseReference(xpp));
17363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17364        res.setActiveElement(parseBoolean(xpp));
17365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
17366        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
17367      } else if (!parseDomainResourceContent(eventType, xpp, res))
17368        return false;
17369    return true;
17370  }
17371
17372  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
17373    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
17374    parseBackboneAttributes(xpp, res);
17375    next(xpp);
17376    int eventType = nextNoWhitespace(xpp);
17377    while (eventType != XmlPullParser.END_TAG) {
17378  if (!parsePersonPersonLinkComponentContent(eventType, xpp, owner, res))
17379        unknownContent(xpp);
17380      eventType = nextNoWhitespace(xpp);
17381    }
17382    next(xpp);
17383    parseElementClose(res);
17384    return res;
17385  }
17386
17387  protected boolean parsePersonPersonLinkComponentContent(int eventType, XmlPullParser xpp, Person owner, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17388      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17389        res.setTarget(parseReference(xpp));
17390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
17391        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
17392      } else if (!parseBackboneElementContent(eventType, xpp, res))
17393        return false;
17394    return true;
17395  }
17396
17397  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17398    PlanDefinition res = new PlanDefinition();
17399    parseDomainResourceAttributes(xpp, res);
17400    next(xpp);
17401    int eventType = nextNoWhitespace(xpp);
17402    while (eventType != XmlPullParser.END_TAG) {
17403  if (!parsePlanDefinitionContent(eventType, xpp, res))
17404        unknownContent(xpp);
17405      eventType = nextNoWhitespace(xpp);
17406    }
17407    next(xpp);
17408    parseElementClose(res);
17409    return res;
17410  }
17411
17412  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
17413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17414        res.setUrlElement(parseUri(xpp));
17415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17416        res.getIdentifier().add(parseIdentifier(xpp));
17417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17418        res.setVersionElement(parseString(xpp));
17419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17420        res.setNameElement(parseString(xpp));
17421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17422        res.setTitleElement(parseString(xpp));
17423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
17424        res.setSubtitleElement(parseString(xpp));
17425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17426        res.setType(parseCodeableConcept(xpp));
17427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17428        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17430        res.setExperimentalElement(parseBoolean(xpp));
17431      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
17432        res.setSubject(parseType("subject", xpp));
17433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17434        res.setDateElement(parseDateTime(xpp));
17435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17436        res.setPublisherElement(parseString(xpp));
17437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17438        res.getContact().add(parseContactDetail(xpp));
17439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17440        res.setDescriptionElement(parseMarkdown(xpp));
17441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17442        res.getUseContext().add(parseUsageContext(xpp));
17443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17444        res.getJurisdiction().add(parseCodeableConcept(xpp));
17445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17446        res.setPurposeElement(parseMarkdown(xpp));
17447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
17448        res.setUsageElement(parseString(xpp));
17449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17450        res.setCopyrightElement(parseMarkdown(xpp));
17451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
17452        res.setApprovalDateElement(parseDate(xpp));
17453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
17454        res.setLastReviewDateElement(parseDate(xpp));
17455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
17456        res.setEffectivePeriod(parsePeriod(xpp));
17457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
17458        res.getTopic().add(parseCodeableConcept(xpp));
17459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
17460        res.getAuthor().add(parseContactDetail(xpp));
17461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
17462        res.getEditor().add(parseContactDetail(xpp));
17463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
17464        res.getReviewer().add(parseContactDetail(xpp));
17465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
17466        res.getEndorser().add(parseContactDetail(xpp));
17467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
17468        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
17469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
17470        res.getLibrary().add(parseCanonical(xpp));
17471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
17472        res.getGoal().add(parsePlanDefinitionPlanDefinitionGoalComponent(xpp, res));
17473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17474        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, res));
17475      } else if (!parseDomainResourceContent(eventType, xpp, res))
17476        return false;
17477    return true;
17478  }
17479
17480  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionPlanDefinitionGoalComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17481    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
17482    parseBackboneAttributes(xpp, res);
17483    next(xpp);
17484    int eventType = nextNoWhitespace(xpp);
17485    while (eventType != XmlPullParser.END_TAG) {
17486  if (!parsePlanDefinitionPlanDefinitionGoalComponentContent(eventType, xpp, owner, res))
17487        unknownContent(xpp);
17488      eventType = nextNoWhitespace(xpp);
17489    }
17490    next(xpp);
17491    parseElementClose(res);
17492    return res;
17493  }
17494
17495  protected boolean parsePlanDefinitionPlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17496      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17497        res.setCategory(parseCodeableConcept(xpp));
17498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17499        res.setDescription(parseCodeableConcept(xpp));
17500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
17501        res.setPriority(parseCodeableConcept(xpp));
17502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17503        res.setStart(parseCodeableConcept(xpp));
17504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
17505        res.getAddresses().add(parseCodeableConcept(xpp));
17506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
17507        res.getDocumentation().add(parseRelatedArtifact(xpp));
17508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17509        res.getTarget().add(parsePlanDefinitionPlanDefinitionGoalTargetComponent(xpp, owner));
17510      } else if (!parseBackboneElementContent(eventType, xpp, res))
17511        return false;
17512    return true;
17513  }
17514
17515  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionPlanDefinitionGoalTargetComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17516    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
17517    parseBackboneAttributes(xpp, res);
17518    next(xpp);
17519    int eventType = nextNoWhitespace(xpp);
17520    while (eventType != XmlPullParser.END_TAG) {
17521  if (!parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(eventType, xpp, owner, res))
17522        unknownContent(xpp);
17523      eventType = nextNoWhitespace(xpp);
17524    }
17525    next(xpp);
17526    parseElementClose(res);
17527    return res;
17528  }
17529
17530  protected boolean parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17531      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
17532        res.setMeasure(parseCodeableConcept(xpp));
17533      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
17534        res.setDetail(parseType("detail", xpp));
17535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
17536        res.setDue(parseDuration(xpp));
17537      } else if (!parseBackboneElementContent(eventType, xpp, res))
17538        return false;
17539    return true;
17540  }
17541
17542  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionPlanDefinitionActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17543    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
17544    parseBackboneAttributes(xpp, res);
17545    next(xpp);
17546    int eventType = nextNoWhitespace(xpp);
17547    while (eventType != XmlPullParser.END_TAG) {
17548  if (!parsePlanDefinitionPlanDefinitionActionComponentContent(eventType, xpp, owner, res))
17549        unknownContent(xpp);
17550      eventType = nextNoWhitespace(xpp);
17551    }
17552    next(xpp);
17553    parseElementClose(res);
17554    return res;
17555  }
17556
17557  protected boolean parsePlanDefinitionPlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
17559        res.setPrefixElement(parseString(xpp));
17560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17561        res.setTitleElement(parseString(xpp));
17562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17563        res.setDescriptionElement(parseString(xpp));
17564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
17565        res.setTextEquivalentElement(parseString(xpp));
17566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
17567        res.setPriorityElement(parseEnumeration(xpp, PlanDefinition.RequestPriority.NULL, new PlanDefinition.RequestPriorityEnumFactory()));
17568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17569        res.getCode().add(parseCodeableConcept(xpp));
17570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
17571        res.getReason().add(parseCodeableConcept(xpp));
17572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
17573        res.getDocumentation().add(parseRelatedArtifact(xpp));
17574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
17575        res.getGoalId().add(parseId(xpp));
17576      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
17577        res.setSubject(parseType("subject", xpp));
17578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
17579        res.getTrigger().add(parseTriggerDefinition(xpp));
17580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
17581        res.getCondition().add(parsePlanDefinitionPlanDefinitionActionConditionComponent(xpp, owner));
17582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
17583        res.getInput().add(parseDataRequirement(xpp));
17584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
17585        res.getOutput().add(parseDataRequirement(xpp));
17586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
17587        res.getRelatedAction().add(parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(xpp, owner));
17588      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
17589        res.setTiming(parseType("timing", xpp));
17590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
17591        res.getParticipant().add(parsePlanDefinitionPlanDefinitionActionParticipantComponent(xpp, owner));
17592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17593        res.setType(parseCodeableConcept(xpp));
17594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
17595        res.setGroupingBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionGroupingBehavior.NULL, new PlanDefinition.ActionGroupingBehaviorEnumFactory()));
17596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
17597        res.setSelectionBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionSelectionBehavior.NULL, new PlanDefinition.ActionSelectionBehaviorEnumFactory()));
17598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
17599        res.setRequiredBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionRequiredBehavior.NULL, new PlanDefinition.ActionRequiredBehaviorEnumFactory()));
17600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
17601        res.setPrecheckBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionPrecheckBehavior.NULL, new PlanDefinition.ActionPrecheckBehaviorEnumFactory()));
17602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
17603        res.setCardinalityBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionCardinalityBehavior.NULL, new PlanDefinition.ActionCardinalityBehaviorEnumFactory()));
17604      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
17605        res.setDefinition(parseType("definition", xpp));
17606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
17607        res.setTransformElement(parseCanonical(xpp));
17608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
17609        res.getDynamicValue().add(parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(xpp, owner));
17610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17611        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, owner));
17612      } else if (!parseBackboneElementContent(eventType, xpp, res))
17613        return false;
17614    return true;
17615  }
17616
17617  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionPlanDefinitionActionConditionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17618    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
17619    parseBackboneAttributes(xpp, res);
17620    next(xpp);
17621    int eventType = nextNoWhitespace(xpp);
17622    while (eventType != XmlPullParser.END_TAG) {
17623  if (!parsePlanDefinitionPlanDefinitionActionConditionComponentContent(eventType, xpp, owner, res))
17624        unknownContent(xpp);
17625      eventType = nextNoWhitespace(xpp);
17626    }
17627    next(xpp);
17628    parseElementClose(res);
17629    return res;
17630  }
17631
17632  protected boolean parsePlanDefinitionPlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
17634        res.setKindElement(parseEnumeration(xpp, PlanDefinition.ActionConditionKind.NULL, new PlanDefinition.ActionConditionKindEnumFactory()));
17635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17636        res.setExpression(parseExpression(xpp));
17637      } else if (!parseBackboneElementContent(eventType, xpp, res))
17638        return false;
17639    return true;
17640  }
17641
17642  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17643    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
17644    parseBackboneAttributes(xpp, res);
17645    next(xpp);
17646    int eventType = nextNoWhitespace(xpp);
17647    while (eventType != XmlPullParser.END_TAG) {
17648  if (!parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(eventType, xpp, owner, res))
17649        unknownContent(xpp);
17650      eventType = nextNoWhitespace(xpp);
17651    }
17652    next(xpp);
17653    parseElementClose(res);
17654    return res;
17655  }
17656
17657  protected boolean parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17658      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
17659        res.setActionIdElement(parseId(xpp));
17660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
17661        res.setRelationshipElement(parseEnumeration(xpp, PlanDefinition.ActionRelationshipType.NULL, new PlanDefinition.ActionRelationshipTypeEnumFactory()));
17662      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
17663        res.setOffset(parseType("offset", xpp));
17664      } else if (!parseBackboneElementContent(eventType, xpp, res))
17665        return false;
17666    return true;
17667  }
17668
17669  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionPlanDefinitionActionParticipantComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17670    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
17671    parseBackboneAttributes(xpp, res);
17672    next(xpp);
17673    int eventType = nextNoWhitespace(xpp);
17674    while (eventType != XmlPullParser.END_TAG) {
17675  if (!parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(eventType, xpp, owner, res))
17676        unknownContent(xpp);
17677      eventType = nextNoWhitespace(xpp);
17678    }
17679    next(xpp);
17680    parseElementClose(res);
17681    return res;
17682  }
17683
17684  protected boolean parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17685      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17686        res.setTypeElement(parseEnumeration(xpp, PlanDefinition.ActionParticipantType.NULL, new PlanDefinition.ActionParticipantTypeEnumFactory()));
17687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
17688        res.setRole(parseCodeableConcept(xpp));
17689      } else if (!parseBackboneElementContent(eventType, xpp, res))
17690        return false;
17691    return true;
17692  }
17693
17694  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17695    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
17696    parseBackboneAttributes(xpp, res);
17697    next(xpp);
17698    int eventType = nextNoWhitespace(xpp);
17699    while (eventType != XmlPullParser.END_TAG) {
17700  if (!parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(eventType, xpp, owner, res))
17701        unknownContent(xpp);
17702      eventType = nextNoWhitespace(xpp);
17703    }
17704    next(xpp);
17705    parseElementClose(res);
17706    return res;
17707  }
17708
17709  protected boolean parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17710      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
17711        res.setPathElement(parseString(xpp));
17712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17713        res.setExpression(parseExpression(xpp));
17714      } else if (!parseBackboneElementContent(eventType, xpp, res))
17715        return false;
17716    return true;
17717  }
17718
17719  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17720    Practitioner res = new Practitioner();
17721    parseDomainResourceAttributes(xpp, res);
17722    next(xpp);
17723    int eventType = nextNoWhitespace(xpp);
17724    while (eventType != XmlPullParser.END_TAG) {
17725  if (!parsePractitionerContent(eventType, xpp, res))
17726        unknownContent(xpp);
17727      eventType = nextNoWhitespace(xpp);
17728    }
17729    next(xpp);
17730    parseElementClose(res);
17731    return res;
17732  }
17733
17734  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
17735      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17736        res.getIdentifier().add(parseIdentifier(xpp));
17737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17738        res.setActiveElement(parseBoolean(xpp));
17739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17740        res.getName().add(parseHumanName(xpp));
17741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17742        res.getTelecom().add(parseContactPoint(xpp));
17743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17744        res.getAddress().add(parseAddress(xpp));
17745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17746        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17748        res.setBirthDateElement(parseDate(xpp));
17749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17750        res.getPhoto().add(parseAttachment(xpp));
17751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
17752        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
17753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
17754        res.getCommunication().add(parseCodeableConcept(xpp));
17755      } else if (!parseDomainResourceContent(eventType, xpp, res))
17756        return false;
17757    return true;
17758  }
17759
17760  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
17761    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
17762    parseBackboneAttributes(xpp, res);
17763    next(xpp);
17764    int eventType = nextNoWhitespace(xpp);
17765    while (eventType != XmlPullParser.END_TAG) {
17766  if (!parsePractitionerPractitionerQualificationComponentContent(eventType, xpp, owner, res))
17767        unknownContent(xpp);
17768      eventType = nextNoWhitespace(xpp);
17769    }
17770    next(xpp);
17771    parseElementClose(res);
17772    return res;
17773  }
17774
17775  protected boolean parsePractitionerPractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner owner, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17777        res.getIdentifier().add(parseIdentifier(xpp));
17778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17779        res.setCode(parseCodeableConcept(xpp));
17780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17781        res.setPeriod(parsePeriod(xpp));
17782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
17783        res.setIssuer(parseReference(xpp));
17784      } else if (!parseBackboneElementContent(eventType, xpp, res))
17785        return false;
17786    return true;
17787  }
17788
17789  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17790    PractitionerRole res = new PractitionerRole();
17791    parseDomainResourceAttributes(xpp, res);
17792    next(xpp);
17793    int eventType = nextNoWhitespace(xpp);
17794    while (eventType != XmlPullParser.END_TAG) {
17795  if (!parsePractitionerRoleContent(eventType, xpp, res))
17796        unknownContent(xpp);
17797      eventType = nextNoWhitespace(xpp);
17798    }
17799    next(xpp);
17800    parseElementClose(res);
17801    return res;
17802  }
17803
17804  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
17805      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17806        res.getIdentifier().add(parseIdentifier(xpp));
17807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17808        res.setActiveElement(parseBoolean(xpp));
17809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17810        res.setPeriod(parsePeriod(xpp));
17811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
17812        res.setPractitioner(parseReference(xpp));
17813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17814        res.setOrganization(parseReference(xpp));
17815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17816        res.getCode().add(parseCodeableConcept(xpp));
17817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17818        res.getSpecialty().add(parseCodeableConcept(xpp));
17819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17820        res.getLocation().add(parseReference(xpp));
17821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
17822        res.getHealthcareService().add(parseReference(xpp));
17823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17824        res.getTelecom().add(parseContactPoint(xpp));
17825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
17826        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
17827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
17828        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
17829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
17830        res.setAvailabilityExceptionsElement(parseString(xpp));
17831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
17832        res.getEndpoint().add(parseReference(xpp));
17833      } else if (!parseDomainResourceContent(eventType, xpp, res))
17834        return false;
17835    return true;
17836  }
17837
17838  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
17839    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
17840    parseBackboneAttributes(xpp, res);
17841    next(xpp);
17842    int eventType = nextNoWhitespace(xpp);
17843    while (eventType != XmlPullParser.END_TAG) {
17844  if (!parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
17845        unknownContent(xpp);
17846      eventType = nextNoWhitespace(xpp);
17847    }
17848    next(xpp);
17849    parseElementClose(res);
17850    return res;
17851  }
17852
17853  protected boolean parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17854      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
17855        res.getDaysOfWeek().add(parseEnumeration(xpp, PractitionerRole.DaysOfWeek.NULL, new PractitionerRole.DaysOfWeekEnumFactory()));
17856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
17857        res.setAllDayElement(parseBoolean(xpp));
17858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
17859        res.setAvailableStartTimeElement(parseTime(xpp));
17860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
17861        res.setAvailableEndTimeElement(parseTime(xpp));
17862      } else if (!parseBackboneElementContent(eventType, xpp, res))
17863        return false;
17864    return true;
17865  }
17866
17867  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
17868    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
17869    parseBackboneAttributes(xpp, res);
17870    next(xpp);
17871    int eventType = nextNoWhitespace(xpp);
17872    while (eventType != XmlPullParser.END_TAG) {
17873  if (!parsePractitionerRolePractitionerRoleNotAvailableComponentContent(eventType, xpp, owner, res))
17874        unknownContent(xpp);
17875      eventType = nextNoWhitespace(xpp);
17876    }
17877    next(xpp);
17878    parseElementClose(res);
17879    return res;
17880  }
17881
17882  protected boolean parsePractitionerRolePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17883      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17884        res.setDescriptionElement(parseString(xpp));
17885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
17886        res.setDuring(parsePeriod(xpp));
17887      } else if (!parseBackboneElementContent(eventType, xpp, res))
17888        return false;
17889    return true;
17890  }
17891
17892  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17893    Procedure res = new Procedure();
17894    parseDomainResourceAttributes(xpp, res);
17895    next(xpp);
17896    int eventType = nextNoWhitespace(xpp);
17897    while (eventType != XmlPullParser.END_TAG) {
17898  if (!parseProcedureContent(eventType, xpp, res))
17899        unknownContent(xpp);
17900      eventType = nextNoWhitespace(xpp);
17901    }
17902    next(xpp);
17903    parseElementClose(res);
17904    return res;
17905  }
17906
17907  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
17908      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17909        res.getIdentifier().add(parseIdentifier(xpp));
17910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
17911        res.getInstantiatesCanonical().add(parseCanonical(xpp));
17912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
17913        res.getInstantiatesUri().add(parseUri(xpp));
17914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
17915        res.getBasedOn().add(parseReference(xpp));
17916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
17917        res.getPartOf().add(parseReference(xpp));
17918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17919        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
17920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
17921        res.setStatusReason(parseCodeableConcept(xpp));
17922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17923        res.setCategory(parseCodeableConcept(xpp));
17924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17925        res.setCode(parseCodeableConcept(xpp));
17926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17927        res.setSubject(parseReference(xpp));
17928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17929        res.setEncounter(parseReference(xpp));
17930      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
17931        res.setPerformed(parseType("performed", xpp));
17932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
17933        res.setRecorder(parseReference(xpp));
17934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
17935        res.setAsserter(parseReference(xpp));
17936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17937        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
17938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17939        res.setLocation(parseReference(xpp));
17940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
17941        res.getReasonCode().add(parseCodeableConcept(xpp));
17942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
17943        res.getReasonReference().add(parseReference(xpp));
17944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
17945        res.getBodySite().add(parseCodeableConcept(xpp));
17946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17947        res.setOutcome(parseCodeableConcept(xpp));
17948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
17949        res.getReport().add(parseReference(xpp));
17950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
17951        res.getComplication().add(parseCodeableConcept(xpp));
17952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
17953        res.getComplicationDetail().add(parseReference(xpp));
17954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
17955        res.getFollowUp().add(parseCodeableConcept(xpp));
17956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17957        res.getNote().add(parseAnnotation(xpp));
17958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
17959        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
17960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
17961        res.getUsedReference().add(parseReference(xpp));
17962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
17963        res.getUsedCode().add(parseCodeableConcept(xpp));
17964      } else if (!parseDomainResourceContent(eventType, xpp, res))
17965        return false;
17966    return true;
17967  }
17968
17969  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
17970    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
17971    parseBackboneAttributes(xpp, res);
17972    next(xpp);
17973    int eventType = nextNoWhitespace(xpp);
17974    while (eventType != XmlPullParser.END_TAG) {
17975  if (!parseProcedureProcedurePerformerComponentContent(eventType, xpp, owner, res))
17976        unknownContent(xpp);
17977      eventType = nextNoWhitespace(xpp);
17978    }
17979    next(xpp);
17980    parseElementClose(res);
17981    return res;
17982  }
17983
17984  protected boolean parseProcedureProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17985      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
17986        res.setFunction(parseCodeableConcept(xpp));
17987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
17988        res.setActor(parseReference(xpp));
17989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
17990        res.setOnBehalfOf(parseReference(xpp));
17991      } else if (!parseBackboneElementContent(eventType, xpp, res))
17992        return false;
17993    return true;
17994  }
17995
17996  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
17997    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
17998    parseBackboneAttributes(xpp, res);
17999    next(xpp);
18000    int eventType = nextNoWhitespace(xpp);
18001    while (eventType != XmlPullParser.END_TAG) {
18002  if (!parseProcedureProcedureFocalDeviceComponentContent(eventType, xpp, owner, res))
18003        unknownContent(xpp);
18004      eventType = nextNoWhitespace(xpp);
18005    }
18006    next(xpp);
18007    parseElementClose(res);
18008    return res;
18009  }
18010
18011  protected boolean parseProcedureProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18012      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18013        res.setAction(parseCodeableConcept(xpp));
18014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
18015        res.setManipulated(parseReference(xpp));
18016      } else if (!parseBackboneElementContent(eventType, xpp, res))
18017        return false;
18018    return true;
18019  }
18020
18021  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18022    Provenance res = new Provenance();
18023    parseDomainResourceAttributes(xpp, res);
18024    next(xpp);
18025    int eventType = nextNoWhitespace(xpp);
18026    while (eventType != XmlPullParser.END_TAG) {
18027  if (!parseProvenanceContent(eventType, xpp, res))
18028        unknownContent(xpp);
18029      eventType = nextNoWhitespace(xpp);
18030    }
18031    next(xpp);
18032    parseElementClose(res);
18033    return res;
18034  }
18035
18036  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
18037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
18038        res.getTarget().add(parseReference(xpp));
18039      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurred")) {
18040        res.setOccurred(parseType("occurred", xpp));
18041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
18042        res.setRecordedElement(parseInstant(xpp));
18043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
18044        res.getPolicy().add(parseUri(xpp));
18045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18046        res.setLocation(parseReference(xpp));
18047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
18048        res.getReason().add(parseCodeableConcept(xpp));
18049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
18050        res.setActivity(parseCodeableConcept(xpp));
18051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
18052        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
18053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
18054        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
18055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
18056        res.getSignature().add(parseSignature(xpp));
18057      } else if (!parseDomainResourceContent(eventType, xpp, res))
18058        return false;
18059    return true;
18060  }
18061
18062  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
18063    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
18064    parseBackboneAttributes(xpp, res);
18065    next(xpp);
18066    int eventType = nextNoWhitespace(xpp);
18067    while (eventType != XmlPullParser.END_TAG) {
18068  if (!parseProvenanceProvenanceAgentComponentContent(eventType, xpp, owner, res))
18069        unknownContent(xpp);
18070      eventType = nextNoWhitespace(xpp);
18071    }
18072    next(xpp);
18073    parseElementClose(res);
18074    return res;
18075  }
18076
18077  protected boolean parseProvenanceProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18078      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18079        res.setType(parseCodeableConcept(xpp));
18080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
18081        res.getRole().add(parseCodeableConcept(xpp));
18082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
18083        res.setWho(parseReference(xpp));
18084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
18085        res.setOnBehalfOf(parseReference(xpp));
18086      } else if (!parseBackboneElementContent(eventType, xpp, res))
18087        return false;
18088    return true;
18089  }
18090
18091  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
18092    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
18093    parseBackboneAttributes(xpp, res);
18094    next(xpp);
18095    int eventType = nextNoWhitespace(xpp);
18096    while (eventType != XmlPullParser.END_TAG) {
18097  if (!parseProvenanceProvenanceEntityComponentContent(eventType, xpp, owner, res))
18098        unknownContent(xpp);
18099      eventType = nextNoWhitespace(xpp);
18100    }
18101    next(xpp);
18102    parseElementClose(res);
18103    return res;
18104  }
18105
18106  protected boolean parseProvenanceProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18107      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
18108        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
18109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
18110        res.setWhat(parseReference(xpp));
18111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
18112        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, owner));
18113      } else if (!parseBackboneElementContent(eventType, xpp, res))
18114        return false;
18115    return true;
18116  }
18117
18118  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18119    Questionnaire res = new Questionnaire();
18120    parseDomainResourceAttributes(xpp, res);
18121    next(xpp);
18122    int eventType = nextNoWhitespace(xpp);
18123    while (eventType != XmlPullParser.END_TAG) {
18124  if (!parseQuestionnaireContent(eventType, xpp, res))
18125        unknownContent(xpp);
18126      eventType = nextNoWhitespace(xpp);
18127    }
18128    next(xpp);
18129    parseElementClose(res);
18130    return res;
18131  }
18132
18133  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
18134      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18135        res.setUrlElement(parseUri(xpp));
18136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18137        res.getIdentifier().add(parseIdentifier(xpp));
18138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18139        res.setVersionElement(parseString(xpp));
18140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18141        res.setNameElement(parseString(xpp));
18142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18143        res.setTitleElement(parseString(xpp));
18144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
18145        res.getDerivedFrom().add(parseCanonical(xpp));
18146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18147        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18149        res.setExperimentalElement(parseBoolean(xpp));
18150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
18151        res.getSubjectType().add(parseCode(xpp));
18152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18153        res.setDateElement(parseDateTime(xpp));
18154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18155        res.setPublisherElement(parseString(xpp));
18156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18157        res.getContact().add(parseContactDetail(xpp));
18158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18159        res.setDescriptionElement(parseMarkdown(xpp));
18160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18161        res.getUseContext().add(parseUsageContext(xpp));
18162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18163        res.getJurisdiction().add(parseCodeableConcept(xpp));
18164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18165        res.setPurposeElement(parseMarkdown(xpp));
18166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18167        res.setCopyrightElement(parseMarkdown(xpp));
18168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18169        res.setApprovalDateElement(parseDate(xpp));
18170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18171        res.setLastReviewDateElement(parseDate(xpp));
18172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18173        res.setEffectivePeriod(parsePeriod(xpp));
18174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18175        res.getCode().add(parseCoding(xpp));
18176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18177        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
18178      } else if (!parseDomainResourceContent(eventType, xpp, res))
18179        return false;
18180    return true;
18181  }
18182
18183  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18184    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
18185    parseBackboneAttributes(xpp, res);
18186    next(xpp);
18187    int eventType = nextNoWhitespace(xpp);
18188    while (eventType != XmlPullParser.END_TAG) {
18189  if (!parseQuestionnaireQuestionnaireItemComponentContent(eventType, xpp, owner, res))
18190        unknownContent(xpp);
18191      eventType = nextNoWhitespace(xpp);
18192    }
18193    next(xpp);
18194    parseElementClose(res);
18195    return res;
18196  }
18197
18198  protected boolean parseQuestionnaireQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18199      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18200        res.setLinkIdElement(parseString(xpp));
18201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18202        res.setDefinitionElement(parseUri(xpp));
18203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18204        res.getCode().add(parseCoding(xpp));
18205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
18206        res.setPrefixElement(parseString(xpp));
18207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
18208        res.setTextElement(parseString(xpp));
18209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18210        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
18211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
18212        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
18213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableBehavior")) {
18214        res.setEnableBehaviorElement(parseEnumeration(xpp, Questionnaire.EnableWhenBehavior.NULL, new Questionnaire.EnableWhenBehaviorEnumFactory()));
18215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
18216        res.setRequiredElement(parseBoolean(xpp));
18217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
18218        res.setRepeatsElement(parseBoolean(xpp));
18219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
18220        res.setReadOnlyElement(parseBoolean(xpp));
18221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
18222        res.setMaxLengthElement(parseInteger(xpp));
18223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerValueSet")) {
18224        res.setAnswerValueSetElement(parseCanonical(xpp));
18225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerOption")) {
18226        res.getAnswerOption().add(parseQuestionnaireQuestionnaireItemAnswerOptionComponent(xpp, owner));
18227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
18228        res.getInitial().add(parseQuestionnaireQuestionnaireItemInitialComponent(xpp, owner));
18229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18230        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
18231      } else if (!parseBackboneElementContent(eventType, xpp, res))
18232        return false;
18233    return true;
18234  }
18235
18236  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18237    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
18238    parseBackboneAttributes(xpp, res);
18239    next(xpp);
18240    int eventType = nextNoWhitespace(xpp);
18241    while (eventType != XmlPullParser.END_TAG) {
18242  if (!parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(eventType, xpp, owner, res))
18243        unknownContent(xpp);
18244      eventType = nextNoWhitespace(xpp);
18245    }
18246    next(xpp);
18247    parseElementClose(res);
18248    return res;
18249  }
18250
18251  protected boolean parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18252      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
18253        res.setQuestionElement(parseString(xpp));
18254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
18255        res.setOperatorElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemOperator.NULL, new Questionnaire.QuestionnaireItemOperatorEnumFactory()));
18256      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
18257        res.setAnswer(parseType("answer", xpp));
18258      } else if (!parseBackboneElementContent(eventType, xpp, res))
18259        return false;
18260    return true;
18261  }
18262
18263  protected Questionnaire.QuestionnaireItemAnswerOptionComponent parseQuestionnaireQuestionnaireItemAnswerOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18264    Questionnaire.QuestionnaireItemAnswerOptionComponent res = new Questionnaire.QuestionnaireItemAnswerOptionComponent();
18265    parseBackboneAttributes(xpp, res);
18266    next(xpp);
18267    int eventType = nextNoWhitespace(xpp);
18268    while (eventType != XmlPullParser.END_TAG) {
18269  if (!parseQuestionnaireQuestionnaireItemAnswerOptionComponentContent(eventType, xpp, owner, res))
18270        unknownContent(xpp);
18271      eventType = nextNoWhitespace(xpp);
18272    }
18273    next(xpp);
18274    parseElementClose(res);
18275    return res;
18276  }
18277
18278  protected boolean parseQuestionnaireQuestionnaireItemAnswerOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemAnswerOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18279      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18280        res.setValue(parseType("value", xpp));
18281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialSelected")) {
18282        res.setInitialSelectedElement(parseBoolean(xpp));
18283      } else if (!parseBackboneElementContent(eventType, xpp, res))
18284        return false;
18285    return true;
18286  }
18287
18288  protected Questionnaire.QuestionnaireItemInitialComponent parseQuestionnaireQuestionnaireItemInitialComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18289    Questionnaire.QuestionnaireItemInitialComponent res = new Questionnaire.QuestionnaireItemInitialComponent();
18290    parseBackboneAttributes(xpp, res);
18291    next(xpp);
18292    int eventType = nextNoWhitespace(xpp);
18293    while (eventType != XmlPullParser.END_TAG) {
18294  if (!parseQuestionnaireQuestionnaireItemInitialComponentContent(eventType, xpp, owner, res))
18295        unknownContent(xpp);
18296      eventType = nextNoWhitespace(xpp);
18297    }
18298    next(xpp);
18299    parseElementClose(res);
18300    return res;
18301  }
18302
18303  protected boolean parseQuestionnaireQuestionnaireItemInitialComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemInitialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18304      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18305        res.setValue(parseType("value", xpp));
18306      } else if (!parseBackboneElementContent(eventType, xpp, res))
18307        return false;
18308    return true;
18309  }
18310
18311  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18312    QuestionnaireResponse res = new QuestionnaireResponse();
18313    parseDomainResourceAttributes(xpp, res);
18314    next(xpp);
18315    int eventType = nextNoWhitespace(xpp);
18316    while (eventType != XmlPullParser.END_TAG) {
18317  if (!parseQuestionnaireResponseContent(eventType, xpp, res))
18318        unknownContent(xpp);
18319      eventType = nextNoWhitespace(xpp);
18320    }
18321    next(xpp);
18322    parseElementClose(res);
18323    return res;
18324  }
18325
18326  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
18327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18328        res.setIdentifier(parseIdentifier(xpp));
18329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18330        res.getBasedOn().add(parseReference(xpp));
18331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18332        res.getPartOf().add(parseReference(xpp));
18333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
18334        res.setQuestionnaireElement(parseCanonical(xpp));
18335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18336        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
18337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18338        res.setSubject(parseReference(xpp));
18339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
18340        res.setEncounter(parseReference(xpp));
18341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
18342        res.setAuthoredElement(parseDateTime(xpp));
18343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18344        res.setAuthor(parseReference(xpp));
18345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
18346        res.setSource(parseReference(xpp));
18347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18348        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
18349      } else if (!parseDomainResourceContent(eventType, xpp, res))
18350        return false;
18351    return true;
18352  }
18353
18354  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
18355    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
18356    parseBackboneAttributes(xpp, res);
18357    next(xpp);
18358    int eventType = nextNoWhitespace(xpp);
18359    while (eventType != XmlPullParser.END_TAG) {
18360  if (!parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(eventType, xpp, owner, res))
18361        unknownContent(xpp);
18362      eventType = nextNoWhitespace(xpp);
18363    }
18364    next(xpp);
18365    parseElementClose(res);
18366    return res;
18367  }
18368
18369  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18370      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18371        res.setLinkIdElement(parseString(xpp));
18372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18373        res.setDefinitionElement(parseUri(xpp));
18374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
18375        res.setTextElement(parseString(xpp));
18376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
18377        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
18378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18379        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
18380      } else if (!parseBackboneElementContent(eventType, xpp, res))
18381        return false;
18382    return true;
18383  }
18384
18385  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
18386    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
18387    parseBackboneAttributes(xpp, res);
18388    next(xpp);
18389    int eventType = nextNoWhitespace(xpp);
18390    while (eventType != XmlPullParser.END_TAG) {
18391  if (!parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, owner, res))
18392        unknownContent(xpp);
18393      eventType = nextNoWhitespace(xpp);
18394    }
18395    next(xpp);
18396    parseElementClose(res);
18397    return res;
18398  }
18399
18400  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18401      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18402        res.setValue(parseType("value", xpp));
18403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18404        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
18405      } else if (!parseBackboneElementContent(eventType, xpp, res))
18406        return false;
18407    return true;
18408  }
18409
18410  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18411    RelatedPerson res = new RelatedPerson();
18412    parseDomainResourceAttributes(xpp, res);
18413    next(xpp);
18414    int eventType = nextNoWhitespace(xpp);
18415    while (eventType != XmlPullParser.END_TAG) {
18416  if (!parseRelatedPersonContent(eventType, xpp, res))
18417        unknownContent(xpp);
18418      eventType = nextNoWhitespace(xpp);
18419    }
18420    next(xpp);
18421    parseElementClose(res);
18422    return res;
18423  }
18424
18425  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
18426      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18427        res.getIdentifier().add(parseIdentifier(xpp));
18428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
18429        res.setActiveElement(parseBoolean(xpp));
18430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
18431        res.setPatient(parseReference(xpp));
18432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18433        res.getRelationship().add(parseCodeableConcept(xpp));
18434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18435        res.getName().add(parseHumanName(xpp));
18436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18437        res.getTelecom().add(parseContactPoint(xpp));
18438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
18439        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
18440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
18441        res.setBirthDateElement(parseDate(xpp));
18442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
18443        res.getAddress().add(parseAddress(xpp));
18444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
18445        res.getPhoto().add(parseAttachment(xpp));
18446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18447        res.setPeriod(parsePeriod(xpp));
18448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
18449        res.getCommunication().add(parseRelatedPersonRelatedPersonCommunicationComponent(xpp, res));
18450      } else if (!parseDomainResourceContent(eventType, xpp, res))
18451        return false;
18452    return true;
18453  }
18454
18455  protected RelatedPerson.RelatedPersonCommunicationComponent parseRelatedPersonRelatedPersonCommunicationComponent(XmlPullParser xpp, RelatedPerson owner) throws XmlPullParserException, IOException, FHIRFormatError {
18456    RelatedPerson.RelatedPersonCommunicationComponent res = new RelatedPerson.RelatedPersonCommunicationComponent();
18457    parseBackboneAttributes(xpp, res);
18458    next(xpp);
18459    int eventType = nextNoWhitespace(xpp);
18460    while (eventType != XmlPullParser.END_TAG) {
18461  if (!parseRelatedPersonRelatedPersonCommunicationComponentContent(eventType, xpp, owner, res))
18462        unknownContent(xpp);
18463      eventType = nextNoWhitespace(xpp);
18464    }
18465    next(xpp);
18466    parseElementClose(res);
18467    return res;
18468  }
18469
18470  protected boolean parseRelatedPersonRelatedPersonCommunicationComponentContent(int eventType, XmlPullParser xpp, RelatedPerson owner, RelatedPerson.RelatedPersonCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18471      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
18472        res.setLanguage(parseCodeableConcept(xpp));
18473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
18474        res.setPreferredElement(parseBoolean(xpp));
18475      } else if (!parseBackboneElementContent(eventType, xpp, res))
18476        return false;
18477    return true;
18478  }
18479
18480  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18481    RequestGroup res = new RequestGroup();
18482    parseDomainResourceAttributes(xpp, res);
18483    next(xpp);
18484    int eventType = nextNoWhitespace(xpp);
18485    while (eventType != XmlPullParser.END_TAG) {
18486  if (!parseRequestGroupContent(eventType, xpp, res))
18487        unknownContent(xpp);
18488      eventType = nextNoWhitespace(xpp);
18489    }
18490    next(xpp);
18491    parseElementClose(res);
18492    return res;
18493  }
18494
18495  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
18496      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18497        res.getIdentifier().add(parseIdentifier(xpp));
18498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
18499        res.getInstantiatesCanonical().add(parseCanonical(xpp));
18500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
18501        res.getInstantiatesUri().add(parseUri(xpp));
18502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18503        res.getBasedOn().add(parseReference(xpp));
18504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
18505        res.getReplaces().add(parseReference(xpp));
18506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
18507        res.setGroupIdentifier(parseIdentifier(xpp));
18508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18509        res.setStatusElement(parseEnumeration(xpp, RequestGroup.RequestStatus.NULL, new RequestGroup.RequestStatusEnumFactory()));
18510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
18511        res.setIntentElement(parseEnumeration(xpp, RequestGroup.RequestIntent.NULL, new RequestGroup.RequestIntentEnumFactory()));
18512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18513        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
18514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18515        res.setCode(parseCodeableConcept(xpp));
18516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18517        res.setSubject(parseReference(xpp));
18518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
18519        res.setEncounter(parseReference(xpp));
18520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
18521        res.setAuthoredOnElement(parseDateTime(xpp));
18522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18523        res.setAuthor(parseReference(xpp));
18524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
18525        res.getReasonCode().add(parseCodeableConcept(xpp));
18526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
18527        res.getReasonReference().add(parseReference(xpp));
18528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18529        res.getNote().add(parseAnnotation(xpp));
18530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18531        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, res));
18532      } else if (!parseDomainResourceContent(eventType, xpp, res))
18533        return false;
18534    return true;
18535  }
18536
18537  protected RequestGroup.RequestGroupActionComponent parseRequestGroupRequestGroupActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18538    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
18539    parseBackboneAttributes(xpp, res);
18540    next(xpp);
18541    int eventType = nextNoWhitespace(xpp);
18542    while (eventType != XmlPullParser.END_TAG) {
18543  if (!parseRequestGroupRequestGroupActionComponentContent(eventType, xpp, owner, res))
18544        unknownContent(xpp);
18545      eventType = nextNoWhitespace(xpp);
18546    }
18547    next(xpp);
18548    parseElementClose(res);
18549    return res;
18550  }
18551
18552  protected boolean parseRequestGroupRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18553      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
18554        res.setPrefixElement(parseString(xpp));
18555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18556        res.setTitleElement(parseString(xpp));
18557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18558        res.setDescriptionElement(parseString(xpp));
18559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
18560        res.setTextEquivalentElement(parseString(xpp));
18561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18562        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
18563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18564        res.getCode().add(parseCodeableConcept(xpp));
18565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18566        res.getDocumentation().add(parseRelatedArtifact(xpp));
18567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18568        res.getCondition().add(parseRequestGroupRequestGroupActionConditionComponent(xpp, owner));
18569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
18570        res.getRelatedAction().add(parseRequestGroupRequestGroupActionRelatedActionComponent(xpp, owner));
18571      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
18572        res.setTiming(parseType("timing", xpp));
18573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
18574        res.getParticipant().add(parseReference(xpp));
18575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18576        res.setType(parseCodeableConcept(xpp));
18577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
18578        res.setGroupingBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionGroupingBehavior.NULL, new RequestGroup.ActionGroupingBehaviorEnumFactory()));
18579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
18580        res.setSelectionBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionSelectionBehavior.NULL, new RequestGroup.ActionSelectionBehaviorEnumFactory()));
18581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
18582        res.setRequiredBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionRequiredBehavior.NULL, new RequestGroup.ActionRequiredBehaviorEnumFactory()));
18583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
18584        res.setPrecheckBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionPrecheckBehavior.NULL, new RequestGroup.ActionPrecheckBehaviorEnumFactory()));
18585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
18586        res.setCardinalityBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionCardinalityBehavior.NULL, new RequestGroup.ActionCardinalityBehaviorEnumFactory()));
18587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
18588        res.setResource(parseReference(xpp));
18589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18590        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, owner));
18591      } else if (!parseBackboneElementContent(eventType, xpp, res))
18592        return false;
18593    return true;
18594  }
18595
18596  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupRequestGroupActionConditionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18597    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
18598    parseBackboneAttributes(xpp, res);
18599    next(xpp);
18600    int eventType = nextNoWhitespace(xpp);
18601    while (eventType != XmlPullParser.END_TAG) {
18602  if (!parseRequestGroupRequestGroupActionConditionComponentContent(eventType, xpp, owner, res))
18603        unknownContent(xpp);
18604      eventType = nextNoWhitespace(xpp);
18605    }
18606    next(xpp);
18607    parseElementClose(res);
18608    return res;
18609  }
18610
18611  protected boolean parseRequestGroupRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18612      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
18613        res.setKindElement(parseEnumeration(xpp, RequestGroup.ActionConditionKind.NULL, new RequestGroup.ActionConditionKindEnumFactory()));
18614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
18615        res.setExpression(parseExpression(xpp));
18616      } else if (!parseBackboneElementContent(eventType, xpp, res))
18617        return false;
18618    return true;
18619  }
18620
18621  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupRequestGroupActionRelatedActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18622    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
18623    parseBackboneAttributes(xpp, res);
18624    next(xpp);
18625    int eventType = nextNoWhitespace(xpp);
18626    while (eventType != XmlPullParser.END_TAG) {
18627  if (!parseRequestGroupRequestGroupActionRelatedActionComponentContent(eventType, xpp, owner, res))
18628        unknownContent(xpp);
18629      eventType = nextNoWhitespace(xpp);
18630    }
18631    next(xpp);
18632    parseElementClose(res);
18633    return res;
18634  }
18635
18636  protected boolean parseRequestGroupRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18637      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
18638        res.setActionIdElement(parseId(xpp));
18639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18640        res.setRelationshipElement(parseEnumeration(xpp, RequestGroup.ActionRelationshipType.NULL, new RequestGroup.ActionRelationshipTypeEnumFactory()));
18641      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
18642        res.setOffset(parseType("offset", xpp));
18643      } else if (!parseBackboneElementContent(eventType, xpp, res))
18644        return false;
18645    return true;
18646  }
18647
18648  protected ResearchDefinition parseResearchDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18649    ResearchDefinition res = new ResearchDefinition();
18650    parseDomainResourceAttributes(xpp, res);
18651    next(xpp);
18652    int eventType = nextNoWhitespace(xpp);
18653    while (eventType != XmlPullParser.END_TAG) {
18654  if (!parseResearchDefinitionContent(eventType, xpp, res))
18655        unknownContent(xpp);
18656      eventType = nextNoWhitespace(xpp);
18657    }
18658    next(xpp);
18659    parseElementClose(res);
18660    return res;
18661  }
18662
18663  protected boolean parseResearchDefinitionContent(int eventType, XmlPullParser xpp, ResearchDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18665        res.setUrlElement(parseUri(xpp));
18666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18667        res.getIdentifier().add(parseIdentifier(xpp));
18668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18669        res.setVersionElement(parseString(xpp));
18670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18671        res.setNameElement(parseString(xpp));
18672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18673        res.setTitleElement(parseString(xpp));
18674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
18675        res.setShortTitleElement(parseString(xpp));
18676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
18677        res.setSubtitleElement(parseString(xpp));
18678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18679        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18681        res.setExperimentalElement(parseBoolean(xpp));
18682      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
18683        res.setSubject(parseType("subject", xpp));
18684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18685        res.setDateElement(parseDateTime(xpp));
18686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18687        res.setPublisherElement(parseString(xpp));
18688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18689        res.getContact().add(parseContactDetail(xpp));
18690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18691        res.setDescriptionElement(parseMarkdown(xpp));
18692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18693        res.getComment().add(parseString(xpp));
18694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18695        res.getUseContext().add(parseUsageContext(xpp));
18696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18697        res.getJurisdiction().add(parseCodeableConcept(xpp));
18698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18699        res.setPurposeElement(parseMarkdown(xpp));
18700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
18701        res.setUsageElement(parseString(xpp));
18702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18703        res.setCopyrightElement(parseMarkdown(xpp));
18704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18705        res.setApprovalDateElement(parseDate(xpp));
18706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18707        res.setLastReviewDateElement(parseDate(xpp));
18708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18709        res.setEffectivePeriod(parsePeriod(xpp));
18710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
18711        res.getTopic().add(parseCodeableConcept(xpp));
18712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18713        res.getAuthor().add(parseContactDetail(xpp));
18714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
18715        res.getEditor().add(parseContactDetail(xpp));
18716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
18717        res.getReviewer().add(parseContactDetail(xpp));
18718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
18719        res.getEndorser().add(parseContactDetail(xpp));
18720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18721        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
18723        res.getLibrary().add(parseCanonical(xpp));
18724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
18725        res.setPopulation(parseReference(xpp));
18726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
18727        res.setExposure(parseReference(xpp));
18728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureAlternative")) {
18729        res.setExposureAlternative(parseReference(xpp));
18730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
18731        res.setOutcome(parseReference(xpp));
18732      } else if (!parseDomainResourceContent(eventType, xpp, res))
18733        return false;
18734    return true;
18735  }
18736
18737  protected ResearchElementDefinition parseResearchElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18738    ResearchElementDefinition res = new ResearchElementDefinition();
18739    parseDomainResourceAttributes(xpp, res);
18740    next(xpp);
18741    int eventType = nextNoWhitespace(xpp);
18742    while (eventType != XmlPullParser.END_TAG) {
18743  if (!parseResearchElementDefinitionContent(eventType, xpp, res))
18744        unknownContent(xpp);
18745      eventType = nextNoWhitespace(xpp);
18746    }
18747    next(xpp);
18748    parseElementClose(res);
18749    return res;
18750  }
18751
18752  protected boolean parseResearchElementDefinitionContent(int eventType, XmlPullParser xpp, ResearchElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18753      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18754        res.setUrlElement(parseUri(xpp));
18755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18756        res.getIdentifier().add(parseIdentifier(xpp));
18757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18758        res.setVersionElement(parseString(xpp));
18759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18760        res.setNameElement(parseString(xpp));
18761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18762        res.setTitleElement(parseString(xpp));
18763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
18764        res.setShortTitleElement(parseString(xpp));
18765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
18766        res.setSubtitleElement(parseString(xpp));
18767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18768        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18770        res.setExperimentalElement(parseBoolean(xpp));
18771      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
18772        res.setSubject(parseType("subject", xpp));
18773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18774        res.setDateElement(parseDateTime(xpp));
18775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18776        res.setPublisherElement(parseString(xpp));
18777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18778        res.getContact().add(parseContactDetail(xpp));
18779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18780        res.setDescriptionElement(parseMarkdown(xpp));
18781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18782        res.getComment().add(parseString(xpp));
18783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18784        res.getUseContext().add(parseUsageContext(xpp));
18785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18786        res.getJurisdiction().add(parseCodeableConcept(xpp));
18787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18788        res.setPurposeElement(parseMarkdown(xpp));
18789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
18790        res.setUsageElement(parseString(xpp));
18791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18792        res.setCopyrightElement(parseMarkdown(xpp));
18793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18794        res.setApprovalDateElement(parseDate(xpp));
18795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18796        res.setLastReviewDateElement(parseDate(xpp));
18797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18798        res.setEffectivePeriod(parsePeriod(xpp));
18799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
18800        res.getTopic().add(parseCodeableConcept(xpp));
18801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18802        res.getAuthor().add(parseContactDetail(xpp));
18803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
18804        res.getEditor().add(parseContactDetail(xpp));
18805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
18806        res.getReviewer().add(parseContactDetail(xpp));
18807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
18808        res.getEndorser().add(parseContactDetail(xpp));
18809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18810        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
18812        res.getLibrary().add(parseCanonical(xpp));
18813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18814        res.setTypeElement(parseEnumeration(xpp, ResearchElementDefinition.ResearchElementType.NULL, new ResearchElementDefinition.ResearchElementTypeEnumFactory()));
18815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableType")) {
18816        res.setVariableTypeElement(parseEnumeration(xpp, ResearchElementDefinition.VariableType.NULL, new ResearchElementDefinition.VariableTypeEnumFactory()));
18817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
18818        res.getCharacteristic().add(parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(xpp, res));
18819      } else if (!parseDomainResourceContent(eventType, xpp, res))
18820        return false;
18821    return true;
18822  }
18823
18824  protected ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(XmlPullParser xpp, ResearchElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18825    ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent res = new ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent();
18826    parseBackboneAttributes(xpp, res);
18827    next(xpp);
18828    int eventType = nextNoWhitespace(xpp);
18829    while (eventType != XmlPullParser.END_TAG) {
18830  if (!parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponentContent(eventType, xpp, owner, res))
18831        unknownContent(xpp);
18832      eventType = nextNoWhitespace(xpp);
18833    }
18834    next(xpp);
18835    parseElementClose(res);
18836    return res;
18837  }
18838
18839  protected boolean parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponentContent(int eventType, XmlPullParser xpp, ResearchElementDefinition owner, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18840      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
18841        res.setDefinition(parseType("definition", xpp));
18842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageContext")) {
18843        res.getUsageContext().add(parseUsageContext(xpp));
18844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
18845        res.setExcludeElement(parseBoolean(xpp));
18846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
18847        res.setUnitOfMeasure(parseCodeableConcept(xpp));
18848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveDescription")) {
18849        res.setStudyEffectiveDescriptionElement(parseString(xpp));
18850      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "studyEffective")) {
18851        res.setStudyEffective(parseType("studyEffective", xpp));
18852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveTimeFromStart")) {
18853        res.setStudyEffectiveTimeFromStart(parseDuration(xpp));
18854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveGroupMeasure")) {
18855        res.setStudyEffectiveGroupMeasureElement(parseEnumeration(xpp, ResearchElementDefinition.GroupMeasure.NULL, new ResearchElementDefinition.GroupMeasureEnumFactory()));
18856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveDescription")) {
18857        res.setParticipantEffectiveDescriptionElement(parseString(xpp));
18858      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "participantEffective")) {
18859        res.setParticipantEffective(parseType("participantEffective", xpp));
18860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveTimeFromStart")) {
18861        res.setParticipantEffectiveTimeFromStart(parseDuration(xpp));
18862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveGroupMeasure")) {
18863        res.setParticipantEffectiveGroupMeasureElement(parseEnumeration(xpp, ResearchElementDefinition.GroupMeasure.NULL, new ResearchElementDefinition.GroupMeasureEnumFactory()));
18864      } else if (!parseBackboneElementContent(eventType, xpp, res))
18865        return false;
18866    return true;
18867  }
18868
18869  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18870    ResearchStudy res = new ResearchStudy();
18871    parseDomainResourceAttributes(xpp, res);
18872    next(xpp);
18873    int eventType = nextNoWhitespace(xpp);
18874    while (eventType != XmlPullParser.END_TAG) {
18875  if (!parseResearchStudyContent(eventType, xpp, res))
18876        unknownContent(xpp);
18877      eventType = nextNoWhitespace(xpp);
18878    }
18879    next(xpp);
18880    parseElementClose(res);
18881    return res;
18882  }
18883
18884  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
18885      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18886        res.getIdentifier().add(parseIdentifier(xpp));
18887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18888        res.setTitleElement(parseString(xpp));
18889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
18890        res.getProtocol().add(parseReference(xpp));
18891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18892        res.getPartOf().add(parseReference(xpp));
18893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18894        res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
18895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primaryPurposeType")) {
18896        res.setPrimaryPurposeType(parseCodeableConcept(xpp));
18897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phase")) {
18898        res.setPhase(parseCodeableConcept(xpp));
18899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18900        res.getCategory().add(parseCodeableConcept(xpp));
18901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
18902        res.getFocus().add(parseCodeableConcept(xpp));
18903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18904        res.getCondition().add(parseCodeableConcept(xpp));
18905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18906        res.getContact().add(parseContactDetail(xpp));
18907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18908        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
18910        res.getKeyword().add(parseCodeableConcept(xpp));
18911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18912        res.getLocation().add(parseCodeableConcept(xpp));
18913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18914        res.setDescriptionElement(parseMarkdown(xpp));
18915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
18916        res.getEnrollment().add(parseReference(xpp));
18917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18918        res.setPeriod(parsePeriod(xpp));
18919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
18920        res.setSponsor(parseReference(xpp));
18921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
18922        res.setPrincipalInvestigator(parseReference(xpp));
18923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
18924        res.getSite().add(parseReference(xpp));
18925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
18926        res.setReasonStopped(parseCodeableConcept(xpp));
18927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18928        res.getNote().add(parseAnnotation(xpp));
18929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
18930        res.getArm().add(parseResearchStudyResearchStudyArmComponent(xpp, res));
18931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("objective")) {
18932        res.getObjective().add(parseResearchStudyResearchStudyObjectiveComponent(xpp, res));
18933      } else if (!parseDomainResourceContent(eventType, xpp, res))
18934        return false;
18935    return true;
18936  }
18937
18938  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyResearchStudyArmComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
18939    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
18940    parseBackboneAttributes(xpp, res);
18941    next(xpp);
18942    int eventType = nextNoWhitespace(xpp);
18943    while (eventType != XmlPullParser.END_TAG) {
18944  if (!parseResearchStudyResearchStudyArmComponentContent(eventType, xpp, owner, res))
18945        unknownContent(xpp);
18946      eventType = nextNoWhitespace(xpp);
18947    }
18948    next(xpp);
18949    parseElementClose(res);
18950    return res;
18951  }
18952
18953  protected boolean parseResearchStudyResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18954      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18955        res.setNameElement(parseString(xpp));
18956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18957        res.setType(parseCodeableConcept(xpp));
18958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18959        res.setDescriptionElement(parseString(xpp));
18960      } else if (!parseBackboneElementContent(eventType, xpp, res))
18961        return false;
18962    return true;
18963  }
18964
18965  protected ResearchStudy.ResearchStudyObjectiveComponent parseResearchStudyResearchStudyObjectiveComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
18966    ResearchStudy.ResearchStudyObjectiveComponent res = new ResearchStudy.ResearchStudyObjectiveComponent();
18967    parseBackboneAttributes(xpp, res);
18968    next(xpp);
18969    int eventType = nextNoWhitespace(xpp);
18970    while (eventType != XmlPullParser.END_TAG) {
18971  if (!parseResearchStudyResearchStudyObjectiveComponentContent(eventType, xpp, owner, res))
18972        unknownContent(xpp);
18973      eventType = nextNoWhitespace(xpp);
18974    }
18975    next(xpp);
18976    parseElementClose(res);
18977    return res;
18978  }
18979
18980  protected boolean parseResearchStudyResearchStudyObjectiveComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyObjectiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18981      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18982        res.setNameElement(parseString(xpp));
18983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18984        res.setType(parseCodeableConcept(xpp));
18985      } else if (!parseBackboneElementContent(eventType, xpp, res))
18986        return false;
18987    return true;
18988  }
18989
18990  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18991    ResearchSubject res = new ResearchSubject();
18992    parseDomainResourceAttributes(xpp, res);
18993    next(xpp);
18994    int eventType = nextNoWhitespace(xpp);
18995    while (eventType != XmlPullParser.END_TAG) {
18996  if (!parseResearchSubjectContent(eventType, xpp, res))
18997        unknownContent(xpp);
18998      eventType = nextNoWhitespace(xpp);
18999    }
19000    next(xpp);
19001    parseElementClose(res);
19002    return res;
19003  }
19004
19005  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
19006      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19007        res.getIdentifier().add(parseIdentifier(xpp));
19008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19009        res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
19010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
19011        res.setPeriod(parsePeriod(xpp));
19012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
19013        res.setStudy(parseReference(xpp));
19014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
19015        res.setIndividual(parseReference(xpp));
19016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
19017        res.setAssignedArmElement(parseString(xpp));
19018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
19019        res.setActualArmElement(parseString(xpp));
19020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
19021        res.setConsent(parseReference(xpp));
19022      } else if (!parseDomainResourceContent(eventType, xpp, res))
19023        return false;
19024    return true;
19025  }
19026
19027  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19028    RiskAssessment res = new RiskAssessment();
19029    parseDomainResourceAttributes(xpp, res);
19030    next(xpp);
19031    int eventType = nextNoWhitespace(xpp);
19032    while (eventType != XmlPullParser.END_TAG) {
19033  if (!parseRiskAssessmentContent(eventType, xpp, res))
19034        unknownContent(xpp);
19035      eventType = nextNoWhitespace(xpp);
19036    }
19037    next(xpp);
19038    parseElementClose(res);
19039    return res;
19040  }
19041
19042  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
19043      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19044        res.getIdentifier().add(parseIdentifier(xpp));
19045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19046        res.setBasedOn(parseReference(xpp));
19047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
19048        res.setParent(parseReference(xpp));
19049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19050        res.setStatusElement(parseEnumeration(xpp, RiskAssessment.RiskAssessmentStatus.NULL, new RiskAssessment.RiskAssessmentStatusEnumFactory()));
19051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
19052        res.setMethod(parseCodeableConcept(xpp));
19053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19054        res.setCode(parseCodeableConcept(xpp));
19055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19056        res.setSubject(parseReference(xpp));
19057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19058        res.setEncounter(parseReference(xpp));
19059      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
19060        res.setOccurrence(parseType("occurrence", xpp));
19061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19062        res.setCondition(parseReference(xpp));
19063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19064        res.setPerformer(parseReference(xpp));
19065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19066        res.getReasonCode().add(parseCodeableConcept(xpp));
19067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19068        res.getReasonReference().add(parseReference(xpp));
19069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
19070        res.getBasis().add(parseReference(xpp));
19071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
19072        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
19073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
19074        res.setMitigationElement(parseString(xpp));
19075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19076        res.getNote().add(parseAnnotation(xpp));
19077      } else if (!parseDomainResourceContent(eventType, xpp, res))
19078        return false;
19079    return true;
19080  }
19081
19082  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
19083    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
19084    parseBackboneAttributes(xpp, res);
19085    next(xpp);
19086    int eventType = nextNoWhitespace(xpp);
19087    while (eventType != XmlPullParser.END_TAG) {
19088  if (!parseRiskAssessmentRiskAssessmentPredictionComponentContent(eventType, xpp, owner, res))
19089        unknownContent(xpp);
19090      eventType = nextNoWhitespace(xpp);
19091    }
19092    next(xpp);
19093    parseElementClose(res);
19094    return res;
19095  }
19096
19097  protected boolean parseRiskAssessmentRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment owner, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19098      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
19099        res.setOutcome(parseCodeableConcept(xpp));
19100      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
19101        res.setProbability(parseType("probability", xpp));
19102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
19103        res.setQualitativeRisk(parseCodeableConcept(xpp));
19104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
19105        res.setRelativeRiskElement(parseDecimal(xpp));
19106      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
19107        res.setWhen(parseType("when", xpp));
19108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
19109        res.setRationaleElement(parseString(xpp));
19110      } else if (!parseBackboneElementContent(eventType, xpp, res))
19111        return false;
19112    return true;
19113  }
19114
19115  protected RiskEvidenceSynthesis parseRiskEvidenceSynthesis(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19116    RiskEvidenceSynthesis res = new RiskEvidenceSynthesis();
19117    parseDomainResourceAttributes(xpp, res);
19118    next(xpp);
19119    int eventType = nextNoWhitespace(xpp);
19120    while (eventType != XmlPullParser.END_TAG) {
19121  if (!parseRiskEvidenceSynthesisContent(eventType, xpp, res))
19122        unknownContent(xpp);
19123      eventType = nextNoWhitespace(xpp);
19124    }
19125    next(xpp);
19126    parseElementClose(res);
19127    return res;
19128  }
19129
19130  protected boolean parseRiskEvidenceSynthesisContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis res) throws XmlPullParserException, IOException, FHIRFormatError {
19131      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19132        res.setUrlElement(parseUri(xpp));
19133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19134        res.getIdentifier().add(parseIdentifier(xpp));
19135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19136        res.setVersionElement(parseString(xpp));
19137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19138        res.setNameElement(parseString(xpp));
19139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19140        res.setTitleElement(parseString(xpp));
19141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19142        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19144        res.setDateElement(parseDateTime(xpp));
19145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19146        res.setPublisherElement(parseString(xpp));
19147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19148        res.getContact().add(parseContactDetail(xpp));
19149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19150        res.setDescriptionElement(parseMarkdown(xpp));
19151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19152        res.getNote().add(parseAnnotation(xpp));
19153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19154        res.getUseContext().add(parseUsageContext(xpp));
19155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19156        res.getJurisdiction().add(parseCodeableConcept(xpp));
19157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19158        res.setCopyrightElement(parseMarkdown(xpp));
19159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
19160        res.setApprovalDateElement(parseDate(xpp));
19161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
19162        res.setLastReviewDateElement(parseDate(xpp));
19163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
19164        res.setEffectivePeriod(parsePeriod(xpp));
19165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
19166        res.getTopic().add(parseCodeableConcept(xpp));
19167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
19168        res.getAuthor().add(parseContactDetail(xpp));
19169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
19170        res.getEditor().add(parseContactDetail(xpp));
19171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
19172        res.getReviewer().add(parseContactDetail(xpp));
19173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
19174        res.getEndorser().add(parseContactDetail(xpp));
19175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
19176        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
19177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synthesisType")) {
19178        res.setSynthesisType(parseCodeableConcept(xpp));
19179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyType")) {
19180        res.setStudyType(parseCodeableConcept(xpp));
19181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
19182        res.setPopulation(parseReference(xpp));
19183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
19184        res.setExposure(parseReference(xpp));
19185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
19186        res.setOutcome(parseReference(xpp));
19187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sampleSize")) {
19188        res.setSampleSize(parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(xpp, res));
19189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskEstimate")) {
19190        res.setRiskEstimate(parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(xpp, res));
19191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
19192        res.getCertainty().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(xpp, res));
19193      } else if (!parseDomainResourceContent(eventType, xpp, res))
19194        return false;
19195    return true;
19196  }
19197
19198  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19199    RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent();
19200    parseBackboneAttributes(xpp, res);
19201    next(xpp);
19202    int eventType = nextNoWhitespace(xpp);
19203    while (eventType != XmlPullParser.END_TAG) {
19204  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentContent(eventType, xpp, owner, res))
19205        unknownContent(xpp);
19206      eventType = nextNoWhitespace(xpp);
19207    }
19208    next(xpp);
19209    parseElementClose(res);
19210    return res;
19211  }
19212
19213  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19214      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19215        res.setDescriptionElement(parseString(xpp));
19216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfStudies")) {
19217        res.setNumberOfStudiesElement(parseInteger(xpp));
19218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfParticipants")) {
19219        res.setNumberOfParticipantsElement(parseInteger(xpp));
19220      } else if (!parseBackboneElementContent(eventType, xpp, res))
19221        return false;
19222    return true;
19223  }
19224
19225  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19226    RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent();
19227    parseBackboneAttributes(xpp, res);
19228    next(xpp);
19229    int eventType = nextNoWhitespace(xpp);
19230    while (eventType != XmlPullParser.END_TAG) {
19231  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentContent(eventType, xpp, owner, res))
19232        unknownContent(xpp);
19233      eventType = nextNoWhitespace(xpp);
19234    }
19235    next(xpp);
19236    parseElementClose(res);
19237    return res;
19238  }
19239
19240  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19241      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19242        res.setDescriptionElement(parseString(xpp));
19243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19244        res.setType(parseCodeableConcept(xpp));
19245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
19246        res.setValueElement(parseDecimal(xpp));
19247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
19248        res.setUnitOfMeasure(parseCodeableConcept(xpp));
19249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominatorCount")) {
19250        res.setDenominatorCountElement(parseInteger(xpp));
19251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numeratorCount")) {
19252        res.setNumeratorCountElement(parseInteger(xpp));
19253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precisionEstimate")) {
19254        res.getPrecisionEstimate().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(xpp, owner));
19255      } else if (!parseBackboneElementContent(eventType, xpp, res))
19256        return false;
19257    return true;
19258  }
19259
19260  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19261    RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent();
19262    parseBackboneAttributes(xpp, res);
19263    next(xpp);
19264    int eventType = nextNoWhitespace(xpp);
19265    while (eventType != XmlPullParser.END_TAG) {
19266  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentContent(eventType, xpp, owner, res))
19267        unknownContent(xpp);
19268      eventType = nextNoWhitespace(xpp);
19269    }
19270    next(xpp);
19271    parseElementClose(res);
19272    return res;
19273  }
19274
19275  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19276      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19277        res.setType(parseCodeableConcept(xpp));
19278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("level")) {
19279        res.setLevelElement(parseDecimal(xpp));
19280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("from")) {
19281        res.setFromElement(parseDecimal(xpp));
19282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("to")) {
19283        res.setToElement(parseDecimal(xpp));
19284      } else if (!parseBackboneElementContent(eventType, xpp, res))
19285        return false;
19286    return true;
19287  }
19288
19289  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19290    RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent();
19291    parseBackboneAttributes(xpp, res);
19292    next(xpp);
19293    int eventType = nextNoWhitespace(xpp);
19294    while (eventType != XmlPullParser.END_TAG) {
19295  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentContent(eventType, xpp, owner, res))
19296        unknownContent(xpp);
19297      eventType = nextNoWhitespace(xpp);
19298    }
19299    next(xpp);
19300    parseElementClose(res);
19301    return res;
19302  }
19303
19304  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19305      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
19306        res.getRating().add(parseCodeableConcept(xpp));
19307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19308        res.getNote().add(parseAnnotation(xpp));
19309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certaintySubcomponent")) {
19310        res.getCertaintySubcomponent().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(xpp, owner));
19311      } else if (!parseBackboneElementContent(eventType, xpp, res))
19312        return false;
19313    return true;
19314  }
19315
19316  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19317    RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent();
19318    parseBackboneAttributes(xpp, res);
19319    next(xpp);
19320    int eventType = nextNoWhitespace(xpp);
19321    while (eventType != XmlPullParser.END_TAG) {
19322  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(eventType, xpp, owner, res))
19323        unknownContent(xpp);
19324      eventType = nextNoWhitespace(xpp);
19325    }
19326    next(xpp);
19327    parseElementClose(res);
19328    return res;
19329  }
19330
19331  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19332      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19333        res.setType(parseCodeableConcept(xpp));
19334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
19335        res.getRating().add(parseCodeableConcept(xpp));
19336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19337        res.getNote().add(parseAnnotation(xpp));
19338      } else if (!parseBackboneElementContent(eventType, xpp, res))
19339        return false;
19340    return true;
19341  }
19342
19343  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19344    Schedule res = new Schedule();
19345    parseDomainResourceAttributes(xpp, res);
19346    next(xpp);
19347    int eventType = nextNoWhitespace(xpp);
19348    while (eventType != XmlPullParser.END_TAG) {
19349  if (!parseScheduleContent(eventType, xpp, res))
19350        unknownContent(xpp);
19351      eventType = nextNoWhitespace(xpp);
19352    }
19353    next(xpp);
19354    parseElementClose(res);
19355    return res;
19356  }
19357
19358  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
19359      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19360        res.getIdentifier().add(parseIdentifier(xpp));
19361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
19362        res.setActiveElement(parseBoolean(xpp));
19363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
19364        res.getServiceCategory().add(parseCodeableConcept(xpp));
19365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
19366        res.getServiceType().add(parseCodeableConcept(xpp));
19367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
19368        res.getSpecialty().add(parseCodeableConcept(xpp));
19369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
19370        res.getActor().add(parseReference(xpp));
19371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
19372        res.setPlanningHorizon(parsePeriod(xpp));
19373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19374        res.setCommentElement(parseString(xpp));
19375      } else if (!parseDomainResourceContent(eventType, xpp, res))
19376        return false;
19377    return true;
19378  }
19379
19380  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19381    SearchParameter res = new SearchParameter();
19382    parseDomainResourceAttributes(xpp, res);
19383    next(xpp);
19384    int eventType = nextNoWhitespace(xpp);
19385    while (eventType != XmlPullParser.END_TAG) {
19386  if (!parseSearchParameterContent(eventType, xpp, res))
19387        unknownContent(xpp);
19388      eventType = nextNoWhitespace(xpp);
19389    }
19390    next(xpp);
19391    parseElementClose(res);
19392    return res;
19393  }
19394
19395  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
19396      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19397        res.setUrlElement(parseUri(xpp));
19398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19399        res.setVersionElement(parseString(xpp));
19400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19401        res.setNameElement(parseString(xpp));
19402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
19403        res.setDerivedFromElement(parseCanonical(xpp));
19404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19405        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19407        res.setExperimentalElement(parseBoolean(xpp));
19408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19409        res.setDateElement(parseDateTime(xpp));
19410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19411        res.setPublisherElement(parseString(xpp));
19412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19413        res.getContact().add(parseContactDetail(xpp));
19414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19415        res.setDescriptionElement(parseMarkdown(xpp));
19416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19417        res.getUseContext().add(parseUsageContext(xpp));
19418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19419        res.getJurisdiction().add(parseCodeableConcept(xpp));
19420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19421        res.setPurposeElement(parseMarkdown(xpp));
19422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19423        res.setCodeElement(parseCode(xpp));
19424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
19425        res.getBase().add(parseCode(xpp));
19426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19427        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
19428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19429        res.setExpressionElement(parseString(xpp));
19430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
19431        res.setXpathElement(parseString(xpp));
19432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
19433        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
19434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19435        res.getTarget().add(parseCode(xpp));
19436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleOr")) {
19437        res.setMultipleOrElement(parseBoolean(xpp));
19438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleAnd")) {
19439        res.setMultipleAndElement(parseBoolean(xpp));
19440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
19441        res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
19442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
19443        res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
19444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
19445        res.getChain().add(parseString(xpp));
19446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
19447        res.getComponent().add(parseSearchParameterSearchParameterComponentComponent(xpp, res));
19448      } else if (!parseDomainResourceContent(eventType, xpp, res))
19449        return false;
19450    return true;
19451  }
19452
19453  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterSearchParameterComponentComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
19454    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
19455    parseBackboneAttributes(xpp, res);
19456    next(xpp);
19457    int eventType = nextNoWhitespace(xpp);
19458    while (eventType != XmlPullParser.END_TAG) {
19459  if (!parseSearchParameterSearchParameterComponentComponentContent(eventType, xpp, owner, res))
19460        unknownContent(xpp);
19461      eventType = nextNoWhitespace(xpp);
19462    }
19463    next(xpp);
19464    parseElementClose(res);
19465    return res;
19466  }
19467
19468  protected boolean parseSearchParameterSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter owner, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
19470        res.setDefinitionElement(parseCanonical(xpp));
19471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19472        res.setExpressionElement(parseString(xpp));
19473      } else if (!parseBackboneElementContent(eventType, xpp, res))
19474        return false;
19475    return true;
19476  }
19477
19478  protected ServiceRequest parseServiceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19479    ServiceRequest res = new ServiceRequest();
19480    parseDomainResourceAttributes(xpp, res);
19481    next(xpp);
19482    int eventType = nextNoWhitespace(xpp);
19483    while (eventType != XmlPullParser.END_TAG) {
19484  if (!parseServiceRequestContent(eventType, xpp, res))
19485        unknownContent(xpp);
19486      eventType = nextNoWhitespace(xpp);
19487    }
19488    next(xpp);
19489    parseElementClose(res);
19490    return res;
19491  }
19492
19493  protected boolean parseServiceRequestContent(int eventType, XmlPullParser xpp, ServiceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
19494      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19495        res.getIdentifier().add(parseIdentifier(xpp));
19496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
19497        res.getInstantiatesCanonical().add(parseCanonical(xpp));
19498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
19499        res.getInstantiatesUri().add(parseUri(xpp));
19500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19501        res.getBasedOn().add(parseReference(xpp));
19502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
19503        res.getReplaces().add(parseReference(xpp));
19504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
19505        res.setRequisition(parseIdentifier(xpp));
19506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19507        res.setStatusElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestStatus.NULL, new ServiceRequest.ServiceRequestStatusEnumFactory()));
19508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
19509        res.setIntentElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestIntent.NULL, new ServiceRequest.ServiceRequestIntentEnumFactory()));
19510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19511        res.getCategory().add(parseCodeableConcept(xpp));
19512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
19513        res.setPriorityElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestPriority.NULL, new ServiceRequest.ServiceRequestPriorityEnumFactory()));
19514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
19515        res.setDoNotPerformElement(parseBoolean(xpp));
19516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19517        res.setCode(parseCodeableConcept(xpp));
19518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderDetail")) {
19519        res.getOrderDetail().add(parseCodeableConcept(xpp));
19520      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
19521        res.setQuantity(parseType("quantity", xpp));
19522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19523        res.setSubject(parseReference(xpp));
19524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19525        res.setEncounter(parseReference(xpp));
19526      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
19527        res.setOccurrence(parseType("occurrence", xpp));
19528      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
19529        res.setAsNeeded(parseType("asNeeded", xpp));
19530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
19531        res.setAuthoredOnElement(parseDateTime(xpp));
19532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
19533        res.setRequester(parseReference(xpp));
19534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
19535        res.setPerformerType(parseCodeableConcept(xpp));
19536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19537        res.getPerformer().add(parseReference(xpp));
19538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationCode")) {
19539        res.getLocationCode().add(parseCodeableConcept(xpp));
19540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationReference")) {
19541        res.getLocationReference().add(parseReference(xpp));
19542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19543        res.getReasonCode().add(parseCodeableConcept(xpp));
19544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19545        res.getReasonReference().add(parseReference(xpp));
19546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
19547        res.getInsurance().add(parseReference(xpp));
19548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
19549        res.getSupportingInfo().add(parseReference(xpp));
19550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
19551        res.getSpecimen().add(parseReference(xpp));
19552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19553        res.getBodySite().add(parseCodeableConcept(xpp));
19554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19555        res.getNote().add(parseAnnotation(xpp));
19556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
19557        res.setPatientInstructionElement(parseString(xpp));
19558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
19559        res.getRelevantHistory().add(parseReference(xpp));
19560      } else if (!parseDomainResourceContent(eventType, xpp, res))
19561        return false;
19562    return true;
19563  }
19564
19565  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19566    Slot res = new Slot();
19567    parseDomainResourceAttributes(xpp, res);
19568    next(xpp);
19569    int eventType = nextNoWhitespace(xpp);
19570    while (eventType != XmlPullParser.END_TAG) {
19571  if (!parseSlotContent(eventType, xpp, res))
19572        unknownContent(xpp);
19573      eventType = nextNoWhitespace(xpp);
19574    }
19575    next(xpp);
19576    parseElementClose(res);
19577    return res;
19578  }
19579
19580  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
19581      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19582        res.getIdentifier().add(parseIdentifier(xpp));
19583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
19584        res.getServiceCategory().add(parseCodeableConcept(xpp));
19585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
19586        res.getServiceType().add(parseCodeableConcept(xpp));
19587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
19588        res.getSpecialty().add(parseCodeableConcept(xpp));
19589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
19590        res.setAppointmentType(parseCodeableConcept(xpp));
19591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
19592        res.setSchedule(parseReference(xpp));
19593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19594        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
19595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
19596        res.setStartElement(parseInstant(xpp));
19597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
19598        res.setEndElement(parseInstant(xpp));
19599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
19600        res.setOverbookedElement(parseBoolean(xpp));
19601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19602        res.setCommentElement(parseString(xpp));
19603      } else if (!parseDomainResourceContent(eventType, xpp, res))
19604        return false;
19605    return true;
19606  }
19607
19608  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19609    Specimen res = new Specimen();
19610    parseDomainResourceAttributes(xpp, res);
19611    next(xpp);
19612    int eventType = nextNoWhitespace(xpp);
19613    while (eventType != XmlPullParser.END_TAG) {
19614  if (!parseSpecimenContent(eventType, xpp, res))
19615        unknownContent(xpp);
19616      eventType = nextNoWhitespace(xpp);
19617    }
19618    next(xpp);
19619    parseElementClose(res);
19620    return res;
19621  }
19622
19623  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
19624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19625        res.getIdentifier().add(parseIdentifier(xpp));
19626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
19627        res.setAccessionIdentifier(parseIdentifier(xpp));
19628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19629        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
19630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19631        res.setType(parseCodeableConcept(xpp));
19632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19633        res.setSubject(parseReference(xpp));
19634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
19635        res.setReceivedTimeElement(parseDateTime(xpp));
19636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
19637        res.getParent().add(parseReference(xpp));
19638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
19639        res.getRequest().add(parseReference(xpp));
19640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
19641        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
19642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
19643        res.getProcessing().add(parseSpecimenSpecimenProcessingComponent(xpp, res));
19644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
19645        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
19646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19647        res.getCondition().add(parseCodeableConcept(xpp));
19648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19649        res.getNote().add(parseAnnotation(xpp));
19650      } else if (!parseDomainResourceContent(eventType, xpp, res))
19651        return false;
19652    return true;
19653  }
19654
19655  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19656    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
19657    parseBackboneAttributes(xpp, res);
19658    next(xpp);
19659    int eventType = nextNoWhitespace(xpp);
19660    while (eventType != XmlPullParser.END_TAG) {
19661  if (!parseSpecimenSpecimenCollectionComponentContent(eventType, xpp, owner, res))
19662        unknownContent(xpp);
19663      eventType = nextNoWhitespace(xpp);
19664    }
19665    next(xpp);
19666    parseElementClose(res);
19667    return res;
19668  }
19669
19670  protected boolean parseSpecimenSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19671      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
19672        res.setCollector(parseReference(xpp));
19673      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
19674        res.setCollected(parseType("collected", xpp));
19675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
19676        res.setDuration(parseDuration(xpp));
19677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19678        res.setQuantity(parseQuantity(xpp));
19679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
19680        res.setMethod(parseCodeableConcept(xpp));
19681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19682        res.setBodySite(parseCodeableConcept(xpp));
19683      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fastingStatus")) {
19684        res.setFastingStatus(parseType("fastingStatus", xpp));
19685      } else if (!parseBackboneElementContent(eventType, xpp, res))
19686        return false;
19687    return true;
19688  }
19689
19690  protected Specimen.SpecimenProcessingComponent parseSpecimenSpecimenProcessingComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19691    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
19692    parseBackboneAttributes(xpp, res);
19693    next(xpp);
19694    int eventType = nextNoWhitespace(xpp);
19695    while (eventType != XmlPullParser.END_TAG) {
19696  if (!parseSpecimenSpecimenProcessingComponentContent(eventType, xpp, owner, res))
19697        unknownContent(xpp);
19698      eventType = nextNoWhitespace(xpp);
19699    }
19700    next(xpp);
19701    parseElementClose(res);
19702    return res;
19703  }
19704
19705  protected boolean parseSpecimenSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19706      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19707        res.setDescriptionElement(parseString(xpp));
19708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
19709        res.setProcedure(parseCodeableConcept(xpp));
19710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
19711        res.getAdditive().add(parseReference(xpp));
19712      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
19713        res.setTime(parseType("time", xpp));
19714      } else if (!parseBackboneElementContent(eventType, xpp, res))
19715        return false;
19716    return true;
19717  }
19718
19719  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19720    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
19721    parseBackboneAttributes(xpp, res);
19722    next(xpp);
19723    int eventType = nextNoWhitespace(xpp);
19724    while (eventType != XmlPullParser.END_TAG) {
19725  if (!parseSpecimenSpecimenContainerComponentContent(eventType, xpp, owner, res))
19726        unknownContent(xpp);
19727      eventType = nextNoWhitespace(xpp);
19728    }
19729    next(xpp);
19730    parseElementClose(res);
19731    return res;
19732  }
19733
19734  protected boolean parseSpecimenSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19735      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19736        res.getIdentifier().add(parseIdentifier(xpp));
19737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19738        res.setDescriptionElement(parseString(xpp));
19739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19740        res.setType(parseCodeableConcept(xpp));
19741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
19742        res.setCapacity(parseQuantity(xpp));
19743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
19744        res.setSpecimenQuantity(parseQuantity(xpp));
19745      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
19746        res.setAdditive(parseType("additive", xpp));
19747      } else if (!parseBackboneElementContent(eventType, xpp, res))
19748        return false;
19749    return true;
19750  }
19751
19752  protected SpecimenDefinition parseSpecimenDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19753    SpecimenDefinition res = new SpecimenDefinition();
19754    parseDomainResourceAttributes(xpp, res);
19755    next(xpp);
19756    int eventType = nextNoWhitespace(xpp);
19757    while (eventType != XmlPullParser.END_TAG) {
19758  if (!parseSpecimenDefinitionContent(eventType, xpp, res))
19759        unknownContent(xpp);
19760      eventType = nextNoWhitespace(xpp);
19761    }
19762    next(xpp);
19763    parseElementClose(res);
19764    return res;
19765  }
19766
19767  protected boolean parseSpecimenDefinitionContent(int eventType, XmlPullParser xpp, SpecimenDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19768      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19769        res.setIdentifier(parseIdentifier(xpp));
19770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCollected")) {
19771        res.setTypeCollected(parseCodeableConcept(xpp));
19772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPreparation")) {
19773        res.getPatientPreparation().add(parseCodeableConcept(xpp));
19774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeAspect")) {
19775        res.setTimeAspectElement(parseString(xpp));
19776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
19777        res.getCollection().add(parseCodeableConcept(xpp));
19778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeTested")) {
19779        res.getTypeTested().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(xpp, res));
19780      } else if (!parseDomainResourceContent(eventType, xpp, res))
19781        return false;
19782    return true;
19783  }
19784
19785  protected SpecimenDefinition.SpecimenDefinitionTypeTestedComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19786    SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedComponent();
19787    parseBackboneAttributes(xpp, res);
19788    next(xpp);
19789    int eventType = nextNoWhitespace(xpp);
19790    while (eventType != XmlPullParser.END_TAG) {
19791  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponentContent(eventType, xpp, owner, res))
19792        unknownContent(xpp);
19793      eventType = nextNoWhitespace(xpp);
19794    }
19795    next(xpp);
19796    parseElementClose(res);
19797    return res;
19798  }
19799
19800  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDerived")) {
19802        res.setIsDerivedElement(parseBoolean(xpp));
19803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19804        res.setType(parseCodeableConcept(xpp));
19805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preference")) {
19806        res.setPreferenceElement(parseEnumeration(xpp, SpecimenDefinition.SpecimenContainedPreference.NULL, new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory()));
19807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
19808        res.setContainer(parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(xpp, owner));
19809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
19810        res.setRequirementElement(parseString(xpp));
19811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("retentionTime")) {
19812        res.setRetentionTime(parseDuration(xpp));
19813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rejectionCriterion")) {
19814        res.getRejectionCriterion().add(parseCodeableConcept(xpp));
19815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
19816        res.getHandling().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(xpp, owner));
19817      } else if (!parseBackboneElementContent(eventType, xpp, res))
19818        return false;
19819    return true;
19820  }
19821
19822  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19823    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent();
19824    parseBackboneAttributes(xpp, res);
19825    next(xpp);
19826    int eventType = nextNoWhitespace(xpp);
19827    while (eventType != XmlPullParser.END_TAG) {
19828  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentContent(eventType, xpp, owner, res))
19829        unknownContent(xpp);
19830      eventType = nextNoWhitespace(xpp);
19831    }
19832    next(xpp);
19833    parseElementClose(res);
19834    return res;
19835  }
19836
19837  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19838      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
19839        res.setMaterial(parseCodeableConcept(xpp));
19840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19841        res.setType(parseCodeableConcept(xpp));
19842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cap")) {
19843        res.setCap(parseCodeableConcept(xpp));
19844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19845        res.setDescriptionElement(parseString(xpp));
19846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
19847        res.setCapacity(parseQuantity(xpp));
19848      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minimumVolume")) {
19849        res.setMinimumVolume(parseType("minimumVolume", xpp));
19850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
19851        res.getAdditive().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(xpp, owner));
19852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparation")) {
19853        res.setPreparationElement(parseString(xpp));
19854      } else if (!parseBackboneElementContent(eventType, xpp, res))
19855        return false;
19856    return true;
19857  }
19858
19859  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19860    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent();
19861    parseBackboneAttributes(xpp, res);
19862    next(xpp);
19863    int eventType = nextNoWhitespace(xpp);
19864    while (eventType != XmlPullParser.END_TAG) {
19865  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(eventType, xpp, owner, res))
19866        unknownContent(xpp);
19867      eventType = nextNoWhitespace(xpp);
19868    }
19869    next(xpp);
19870    parseElementClose(res);
19871    return res;
19872  }
19873
19874  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19875      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
19876        res.setAdditive(parseType("additive", xpp));
19877      } else if (!parseBackboneElementContent(eventType, xpp, res))
19878        return false;
19879    return true;
19880  }
19881
19882  protected SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19883    SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent();
19884    parseBackboneAttributes(xpp, res);
19885    next(xpp);
19886    int eventType = nextNoWhitespace(xpp);
19887    while (eventType != XmlPullParser.END_TAG) {
19888  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentContent(eventType, xpp, owner, res))
19889        unknownContent(xpp);
19890      eventType = nextNoWhitespace(xpp);
19891    }
19892    next(xpp);
19893    parseElementClose(res);
19894    return res;
19895  }
19896
19897  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureQualifier")) {
19899        res.setTemperatureQualifier(parseCodeableConcept(xpp));
19900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureRange")) {
19901        res.setTemperatureRange(parseRange(xpp));
19902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDuration")) {
19903        res.setMaxDuration(parseDuration(xpp));
19904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
19905        res.setInstructionElement(parseString(xpp));
19906      } else if (!parseBackboneElementContent(eventType, xpp, res))
19907        return false;
19908    return true;
19909  }
19910
19911  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19912    StructureDefinition res = new StructureDefinition();
19913    parseDomainResourceAttributes(xpp, res);
19914    next(xpp);
19915    int eventType = nextNoWhitespace(xpp);
19916    while (eventType != XmlPullParser.END_TAG) {
19917  if (!parseStructureDefinitionContent(eventType, xpp, res))
19918        unknownContent(xpp);
19919      eventType = nextNoWhitespace(xpp);
19920    }
19921    next(xpp);
19922    parseElementClose(res);
19923    return res;
19924  }
19925
19926  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19927      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19928        res.setUrlElement(parseUri(xpp));
19929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19930        res.getIdentifier().add(parseIdentifier(xpp));
19931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19932        res.setVersionElement(parseString(xpp));
19933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19934        res.setNameElement(parseString(xpp));
19935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19936        res.setTitleElement(parseString(xpp));
19937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19938        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19940        res.setExperimentalElement(parseBoolean(xpp));
19941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19942        res.setDateElement(parseDateTime(xpp));
19943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19944        res.setPublisherElement(parseString(xpp));
19945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19946        res.getContact().add(parseContactDetail(xpp));
19947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19948        res.setDescriptionElement(parseMarkdown(xpp));
19949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19950        res.getUseContext().add(parseUsageContext(xpp));
19951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19952        res.getJurisdiction().add(parseCodeableConcept(xpp));
19953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19954        res.setPurposeElement(parseMarkdown(xpp));
19955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19956        res.setCopyrightElement(parseMarkdown(xpp));
19957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
19958        res.getKeyword().add(parseCoding(xpp));
19959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
19960        res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
19961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
19962        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
19963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
19964        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
19965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
19966        res.setAbstractElement(parseBoolean(xpp));
19967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
19968        res.getContext().add(parseStructureDefinitionStructureDefinitionContextComponent(xpp, res));
19969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
19970        res.getContextInvariant().add(parseString(xpp));
19971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19972        res.setTypeElement(parseUri(xpp));
19973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
19974        res.setBaseDefinitionElement(parseCanonical(xpp));
19975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
19976        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
19977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
19978        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
19979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
19980        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
19981      } else if (!parseDomainResourceContent(eventType, xpp, res))
19982        return false;
19983    return true;
19984  }
19985
19986  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19987    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
19988    parseBackboneAttributes(xpp, res);
19989    next(xpp);
19990    int eventType = nextNoWhitespace(xpp);
19991    while (eventType != XmlPullParser.END_TAG) {
19992  if (!parseStructureDefinitionStructureDefinitionMappingComponentContent(eventType, xpp, owner, res))
19993        unknownContent(xpp);
19994      eventType = nextNoWhitespace(xpp);
19995    }
19996    next(xpp);
19997    parseElementClose(res);
19998    return res;
19999  }
20000
20001  protected boolean parseStructureDefinitionStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
20003        res.setIdentityElement(parseId(xpp));
20004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
20005        res.setUriElement(parseUri(xpp));
20006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20007        res.setNameElement(parseString(xpp));
20008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20009        res.setCommentElement(parseString(xpp));
20010      } else if (!parseBackboneElementContent(eventType, xpp, res))
20011        return false;
20012    return true;
20013  }
20014
20015  protected StructureDefinition.StructureDefinitionContextComponent parseStructureDefinitionStructureDefinitionContextComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20016    StructureDefinition.StructureDefinitionContextComponent res = new StructureDefinition.StructureDefinitionContextComponent();
20017    parseBackboneAttributes(xpp, res);
20018    next(xpp);
20019    int eventType = nextNoWhitespace(xpp);
20020    while (eventType != XmlPullParser.END_TAG) {
20021  if (!parseStructureDefinitionStructureDefinitionContextComponentContent(eventType, xpp, owner, res))
20022        unknownContent(xpp);
20023      eventType = nextNoWhitespace(xpp);
20024    }
20025    next(xpp);
20026    parseElementClose(res);
20027    return res;
20028  }
20029
20030  protected boolean parseStructureDefinitionStructureDefinitionContextComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20031      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20032        res.setTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContextType.NULL, new StructureDefinition.ExtensionContextTypeEnumFactory()));
20033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
20034        res.setExpressionElement(parseString(xpp));
20035      } else if (!parseBackboneElementContent(eventType, xpp, res))
20036        return false;
20037    return true;
20038  }
20039
20040  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20041    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
20042    parseBackboneAttributes(xpp, res);
20043    next(xpp);
20044    int eventType = nextNoWhitespace(xpp);
20045    while (eventType != XmlPullParser.END_TAG) {
20046  if (!parseStructureDefinitionStructureDefinitionSnapshotComponentContent(eventType, xpp, owner, res))
20047        unknownContent(xpp);
20048      eventType = nextNoWhitespace(xpp);
20049    }
20050    next(xpp);
20051    parseElementClose(res);
20052    return res;
20053  }
20054
20055  protected boolean parseStructureDefinitionStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20056      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20057        res.getElement().add(parseElementDefinition(xpp));
20058      } else if (!parseBackboneElementContent(eventType, xpp, res))
20059        return false;
20060    return true;
20061  }
20062
20063  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20064    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
20065    parseBackboneAttributes(xpp, res);
20066    next(xpp);
20067    int eventType = nextNoWhitespace(xpp);
20068    while (eventType != XmlPullParser.END_TAG) {
20069  if (!parseStructureDefinitionStructureDefinitionDifferentialComponentContent(eventType, xpp, owner, res))
20070        unknownContent(xpp);
20071      eventType = nextNoWhitespace(xpp);
20072    }
20073    next(xpp);
20074    parseElementClose(res);
20075    return res;
20076  }
20077
20078  protected boolean parseStructureDefinitionStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20079      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20080        res.getElement().add(parseElementDefinition(xpp));
20081      } else if (!parseBackboneElementContent(eventType, xpp, res))
20082        return false;
20083    return true;
20084  }
20085
20086  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20087    StructureMap res = new StructureMap();
20088    parseDomainResourceAttributes(xpp, res);
20089    next(xpp);
20090    int eventType = nextNoWhitespace(xpp);
20091    while (eventType != XmlPullParser.END_TAG) {
20092  if (!parseStructureMapContent(eventType, xpp, res))
20093        unknownContent(xpp);
20094      eventType = nextNoWhitespace(xpp);
20095    }
20096    next(xpp);
20097    parseElementClose(res);
20098    return res;
20099  }
20100
20101  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
20102      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20103        res.setUrlElement(parseUri(xpp));
20104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20105        res.getIdentifier().add(parseIdentifier(xpp));
20106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20107        res.setVersionElement(parseString(xpp));
20108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20109        res.setNameElement(parseString(xpp));
20110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20111        res.setTitleElement(parseString(xpp));
20112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20113        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
20114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
20115        res.setExperimentalElement(parseBoolean(xpp));
20116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20117        res.setDateElement(parseDateTime(xpp));
20118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
20119        res.setPublisherElement(parseString(xpp));
20120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20121        res.getContact().add(parseContactDetail(xpp));
20122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20123        res.setDescriptionElement(parseMarkdown(xpp));
20124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
20125        res.getUseContext().add(parseUsageContext(xpp));
20126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20127        res.getJurisdiction().add(parseCodeableConcept(xpp));
20128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
20129        res.setPurposeElement(parseMarkdown(xpp));
20130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
20131        res.setCopyrightElement(parseMarkdown(xpp));
20132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
20133        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
20134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
20135        res.getImport().add(parseCanonical(xpp));
20136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
20137        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
20138      } else if (!parseDomainResourceContent(eventType, xpp, res))
20139        return false;
20140    return true;
20141  }
20142
20143  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20144    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
20145    parseBackboneAttributes(xpp, res);
20146    next(xpp);
20147    int eventType = nextNoWhitespace(xpp);
20148    while (eventType != XmlPullParser.END_TAG) {
20149  if (!parseStructureMapStructureMapStructureComponentContent(eventType, xpp, owner, res))
20150        unknownContent(xpp);
20151      eventType = nextNoWhitespace(xpp);
20152    }
20153    next(xpp);
20154    parseElementClose(res);
20155    return res;
20156  }
20157
20158  protected boolean parseStructureMapStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20160        res.setUrlElement(parseCanonical(xpp));
20161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
20162        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
20163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
20164        res.setAliasElement(parseString(xpp));
20165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20166        res.setDocumentationElement(parseString(xpp));
20167      } else if (!parseBackboneElementContent(eventType, xpp, res))
20168        return false;
20169    return true;
20170  }
20171
20172  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20173    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
20174    parseBackboneAttributes(xpp, res);
20175    next(xpp);
20176    int eventType = nextNoWhitespace(xpp);
20177    while (eventType != XmlPullParser.END_TAG) {
20178  if (!parseStructureMapStructureMapGroupComponentContent(eventType, xpp, owner, res))
20179        unknownContent(xpp);
20180      eventType = nextNoWhitespace(xpp);
20181    }
20182    next(xpp);
20183    parseElementClose(res);
20184    return res;
20185  }
20186
20187  protected boolean parseStructureMapStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20188      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20189        res.setNameElement(parseId(xpp));
20190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
20191        res.setExtendsElement(parseId(xpp));
20192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
20193        res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
20194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20195        res.setDocumentationElement(parseString(xpp));
20196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
20197        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
20198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20199        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
20200      } else if (!parseBackboneElementContent(eventType, xpp, res))
20201        return false;
20202    return true;
20203  }
20204
20205  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20206    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
20207    parseBackboneAttributes(xpp, res);
20208    next(xpp);
20209    int eventType = nextNoWhitespace(xpp);
20210    while (eventType != XmlPullParser.END_TAG) {
20211  if (!parseStructureMapStructureMapGroupInputComponentContent(eventType, xpp, owner, res))
20212        unknownContent(xpp);
20213      eventType = nextNoWhitespace(xpp);
20214    }
20215    next(xpp);
20216    parseElementClose(res);
20217    return res;
20218  }
20219
20220  protected boolean parseStructureMapStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20221      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20222        res.setNameElement(parseId(xpp));
20223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20224        res.setTypeElement(parseString(xpp));
20225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
20226        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
20227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20228        res.setDocumentationElement(parseString(xpp));
20229      } else if (!parseBackboneElementContent(eventType, xpp, res))
20230        return false;
20231    return true;
20232  }
20233
20234  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20235    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
20236    parseBackboneAttributes(xpp, res);
20237    next(xpp);
20238    int eventType = nextNoWhitespace(xpp);
20239    while (eventType != XmlPullParser.END_TAG) {
20240  if (!parseStructureMapStructureMapGroupRuleComponentContent(eventType, xpp, owner, res))
20241        unknownContent(xpp);
20242      eventType = nextNoWhitespace(xpp);
20243    }
20244    next(xpp);
20245    parseElementClose(res);
20246    return res;
20247  }
20248
20249  protected boolean parseStructureMapStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20250      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20251        res.setNameElement(parseId(xpp));
20252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20253        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
20254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20255        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
20256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20257        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
20258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
20259        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
20260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20261        res.setDocumentationElement(parseString(xpp));
20262      } else if (!parseBackboneElementContent(eventType, xpp, res))
20263        return false;
20264    return true;
20265  }
20266
20267  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20268    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
20269    parseBackboneAttributes(xpp, res);
20270    next(xpp);
20271    int eventType = nextNoWhitespace(xpp);
20272    while (eventType != XmlPullParser.END_TAG) {
20273  if (!parseStructureMapStructureMapGroupRuleSourceComponentContent(eventType, xpp, owner, res))
20274        unknownContent(xpp);
20275      eventType = nextNoWhitespace(xpp);
20276    }
20277    next(xpp);
20278    parseElementClose(res);
20279    return res;
20280  }
20281
20282  protected boolean parseStructureMapStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20283      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
20284        res.setContextElement(parseId(xpp));
20285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
20286        res.setMinElement(parseInteger(xpp));
20287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
20288        res.setMaxElement(parseString(xpp));
20289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20290        res.setTypeElement(parseString(xpp));
20291      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
20292        res.setDefaultValue(parseType("defaultValue", xpp));
20293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20294        res.setElementElement(parseString(xpp));
20295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
20296        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
20297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20298        res.setVariableElement(parseId(xpp));
20299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
20300        res.setConditionElement(parseString(xpp));
20301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
20302        res.setCheckElement(parseString(xpp));
20303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("logMessage")) {
20304        res.setLogMessageElement(parseString(xpp));
20305      } else if (!parseBackboneElementContent(eventType, xpp, res))
20306        return false;
20307    return true;
20308  }
20309
20310  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20311    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
20312    parseBackboneAttributes(xpp, res);
20313    next(xpp);
20314    int eventType = nextNoWhitespace(xpp);
20315    while (eventType != XmlPullParser.END_TAG) {
20316  if (!parseStructureMapStructureMapGroupRuleTargetComponentContent(eventType, xpp, owner, res))
20317        unknownContent(xpp);
20318      eventType = nextNoWhitespace(xpp);
20319    }
20320    next(xpp);
20321    parseElementClose(res);
20322    return res;
20323  }
20324
20325  protected boolean parseStructureMapStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20326      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
20327        res.setContextElement(parseId(xpp));
20328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
20329        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
20330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20331        res.setElementElement(parseString(xpp));
20332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20333        res.setVariableElement(parseId(xpp));
20334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
20335        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
20336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
20337        res.setListRuleIdElement(parseId(xpp));
20338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
20339        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
20340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
20341        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
20342      } else if (!parseBackboneElementContent(eventType, xpp, res))
20343        return false;
20344    return true;
20345  }
20346
20347  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20348    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
20349    parseBackboneAttributes(xpp, res);
20350    next(xpp);
20351    int eventType = nextNoWhitespace(xpp);
20352    while (eventType != XmlPullParser.END_TAG) {
20353  if (!parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, owner, res))
20354        unknownContent(xpp);
20355      eventType = nextNoWhitespace(xpp);
20356    }
20357    next(xpp);
20358    parseElementClose(res);
20359    return res;
20360  }
20361
20362  protected boolean parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20363      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
20364        res.setValue(parseType("value", xpp));
20365      } else if (!parseBackboneElementContent(eventType, xpp, res))
20366        return false;
20367    return true;
20368  }
20369
20370  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20371    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
20372    parseBackboneAttributes(xpp, res);
20373    next(xpp);
20374    int eventType = nextNoWhitespace(xpp);
20375    while (eventType != XmlPullParser.END_TAG) {
20376  if (!parseStructureMapStructureMapGroupRuleDependentComponentContent(eventType, xpp, owner, res))
20377        unknownContent(xpp);
20378      eventType = nextNoWhitespace(xpp);
20379    }
20380    next(xpp);
20381    parseElementClose(res);
20382    return res;
20383  }
20384
20385  protected boolean parseStructureMapStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20386      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20387        res.setNameElement(parseId(xpp));
20388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20389        res.getVariable().add(parseString(xpp));
20390      } else if (!parseBackboneElementContent(eventType, xpp, res))
20391        return false;
20392    return true;
20393  }
20394
20395  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20396    Subscription res = new Subscription();
20397    parseDomainResourceAttributes(xpp, res);
20398    next(xpp);
20399    int eventType = nextNoWhitespace(xpp);
20400    while (eventType != XmlPullParser.END_TAG) {
20401  if (!parseSubscriptionContent(eventType, xpp, res))
20402        unknownContent(xpp);
20403      eventType = nextNoWhitespace(xpp);
20404    }
20405    next(xpp);
20406    parseElementClose(res);
20407    return res;
20408  }
20409
20410  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
20411      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20412        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
20413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20414        res.getContact().add(parseContactPoint(xpp));
20415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
20416        res.setEndElement(parseInstant(xpp));
20417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
20418        res.setReasonElement(parseString(xpp));
20419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
20420        res.setCriteriaElement(parseString(xpp));
20421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
20422        res.setErrorElement(parseString(xpp));
20423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
20424        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
20425      } else if (!parseDomainResourceContent(eventType, xpp, res))
20426        return false;
20427    return true;
20428  }
20429
20430  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
20431    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
20432    parseBackboneAttributes(xpp, res);
20433    next(xpp);
20434    int eventType = nextNoWhitespace(xpp);
20435    while (eventType != XmlPullParser.END_TAG) {
20436  if (!parseSubscriptionSubscriptionChannelComponentContent(eventType, xpp, owner, res))
20437        unknownContent(xpp);
20438      eventType = nextNoWhitespace(xpp);
20439    }
20440    next(xpp);
20441    parseElementClose(res);
20442    return res;
20443  }
20444
20445  protected boolean parseSubscriptionSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription owner, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20446      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20447        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
20448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
20449        res.setEndpointElement(parseUrl(xpp));
20450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
20451        res.setPayloadElement(parseCode(xpp));
20452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
20453        res.getHeader().add(parseString(xpp));
20454      } else if (!parseBackboneElementContent(eventType, xpp, res))
20455        return false;
20456    return true;
20457  }
20458
20459  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20460    Substance res = new Substance();
20461    parseDomainResourceAttributes(xpp, res);
20462    next(xpp);
20463    int eventType = nextNoWhitespace(xpp);
20464    while (eventType != XmlPullParser.END_TAG) {
20465  if (!parseSubstanceContent(eventType, xpp, res))
20466        unknownContent(xpp);
20467      eventType = nextNoWhitespace(xpp);
20468    }
20469    next(xpp);
20470    parseElementClose(res);
20471    return res;
20472  }
20473
20474  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
20475      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20476        res.getIdentifier().add(parseIdentifier(xpp));
20477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20478        res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
20479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
20480        res.getCategory().add(parseCodeableConcept(xpp));
20481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20482        res.setCode(parseCodeableConcept(xpp));
20483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20484        res.setDescriptionElement(parseString(xpp));
20485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
20486        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
20487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
20488        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
20489      } else if (!parseDomainResourceContent(eventType, xpp, res))
20490        return false;
20491    return true;
20492  }
20493
20494  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
20495    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
20496    parseBackboneAttributes(xpp, res);
20497    next(xpp);
20498    int eventType = nextNoWhitespace(xpp);
20499    while (eventType != XmlPullParser.END_TAG) {
20500  if (!parseSubstanceSubstanceInstanceComponentContent(eventType, xpp, owner, res))
20501        unknownContent(xpp);
20502      eventType = nextNoWhitespace(xpp);
20503    }
20504    next(xpp);
20505    parseElementClose(res);
20506    return res;
20507  }
20508
20509  protected boolean parseSubstanceSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20510      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20511        res.setIdentifier(parseIdentifier(xpp));
20512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
20513        res.setExpiryElement(parseDateTime(xpp));
20514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20515        res.setQuantity(parseQuantity(xpp));
20516      } else if (!parseBackboneElementContent(eventType, xpp, res))
20517        return false;
20518    return true;
20519  }
20520
20521  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
20522    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
20523    parseBackboneAttributes(xpp, res);
20524    next(xpp);
20525    int eventType = nextNoWhitespace(xpp);
20526    while (eventType != XmlPullParser.END_TAG) {
20527  if (!parseSubstanceSubstanceIngredientComponentContent(eventType, xpp, owner, res))
20528        unknownContent(xpp);
20529      eventType = nextNoWhitespace(xpp);
20530    }
20531    next(xpp);
20532    parseElementClose(res);
20533    return res;
20534  }
20535
20536  protected boolean parseSubstanceSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20537      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20538        res.setQuantity(parseRatio(xpp));
20539      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
20540        res.setSubstance(parseType("substance", xpp));
20541      } else if (!parseBackboneElementContent(eventType, xpp, res))
20542        return false;
20543    return true;
20544  }
20545
20546  protected SubstanceNucleicAcid parseSubstanceNucleicAcid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20547    SubstanceNucleicAcid res = new SubstanceNucleicAcid();
20548    parseDomainResourceAttributes(xpp, res);
20549    next(xpp);
20550    int eventType = nextNoWhitespace(xpp);
20551    while (eventType != XmlPullParser.END_TAG) {
20552  if (!parseSubstanceNucleicAcidContent(eventType, xpp, res))
20553        unknownContent(xpp);
20554      eventType = nextNoWhitespace(xpp);
20555    }
20556    next(xpp);
20557    parseElementClose(res);
20558    return res;
20559  }
20560
20561  protected boolean parseSubstanceNucleicAcidContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid res) throws XmlPullParserException, IOException, FHIRFormatError {
20562      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceType")) {
20563        res.setSequenceType(parseCodeableConcept(xpp));
20564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSubunits")) {
20565        res.setNumberOfSubunitsElement(parseInteger(xpp));
20566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaOfHybridisation")) {
20567        res.setAreaOfHybridisationElement(parseString(xpp));
20568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oligoNucleotideType")) {
20569        res.setOligoNucleotideType(parseCodeableConcept(xpp));
20570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20571        res.getSubunit().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(xpp, res));
20572      } else if (!parseDomainResourceContent(eventType, xpp, res))
20573        return false;
20574    return true;
20575  }
20576
20577  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20578    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent();
20579    parseBackboneAttributes(xpp, res);
20580    next(xpp);
20581    int eventType = nextNoWhitespace(xpp);
20582    while (eventType != XmlPullParser.END_TAG) {
20583  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentContent(eventType, xpp, owner, res))
20584        unknownContent(xpp);
20585      eventType = nextNoWhitespace(xpp);
20586    }
20587    next(xpp);
20588    parseElementClose(res);
20589    return res;
20590  }
20591
20592  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20593      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20594        res.setSubunitElement(parseInteger(xpp));
20595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
20596        res.setSequenceElement(parseString(xpp));
20597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
20598        res.setLengthElement(parseInteger(xpp));
20599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceAttachment")) {
20600        res.setSequenceAttachment(parseAttachment(xpp));
20601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fivePrime")) {
20602        res.setFivePrime(parseCodeableConcept(xpp));
20603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("threePrime")) {
20604        res.setThreePrime(parseCodeableConcept(xpp));
20605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkage")) {
20606        res.getLinkage().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(xpp, owner));
20607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sugar")) {
20608        res.getSugar().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(xpp, owner));
20609      } else if (!parseBackboneElementContent(eventType, xpp, res))
20610        return false;
20611    return true;
20612  }
20613
20614  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20615    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent();
20616    parseBackboneAttributes(xpp, res);
20617    next(xpp);
20618    int eventType = nextNoWhitespace(xpp);
20619    while (eventType != XmlPullParser.END_TAG) {
20620  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentContent(eventType, xpp, owner, res))
20621        unknownContent(xpp);
20622      eventType = nextNoWhitespace(xpp);
20623    }
20624    next(xpp);
20625    parseElementClose(res);
20626    return res;
20627  }
20628
20629  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20630      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectivity")) {
20631        res.setConnectivityElement(parseString(xpp));
20632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20633        res.setIdentifier(parseIdentifier(xpp));
20634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20635        res.setNameElement(parseString(xpp));
20636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("residueSite")) {
20637        res.setResidueSiteElement(parseString(xpp));
20638      } else if (!parseBackboneElementContent(eventType, xpp, res))
20639        return false;
20640    return true;
20641  }
20642
20643  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20644    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent();
20645    parseBackboneAttributes(xpp, res);
20646    next(xpp);
20647    int eventType = nextNoWhitespace(xpp);
20648    while (eventType != XmlPullParser.END_TAG) {
20649  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentContent(eventType, xpp, owner, res))
20650        unknownContent(xpp);
20651      eventType = nextNoWhitespace(xpp);
20652    }
20653    next(xpp);
20654    parseElementClose(res);
20655    return res;
20656  }
20657
20658  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20659      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20660        res.setIdentifier(parseIdentifier(xpp));
20661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20662        res.setNameElement(parseString(xpp));
20663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("residueSite")) {
20664        res.setResidueSiteElement(parseString(xpp));
20665      } else if (!parseBackboneElementContent(eventType, xpp, res))
20666        return false;
20667    return true;
20668  }
20669
20670  protected SubstancePolymer parseSubstancePolymer(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20671    SubstancePolymer res = new SubstancePolymer();
20672    parseDomainResourceAttributes(xpp, res);
20673    next(xpp);
20674    int eventType = nextNoWhitespace(xpp);
20675    while (eventType != XmlPullParser.END_TAG) {
20676  if (!parseSubstancePolymerContent(eventType, xpp, res))
20677        unknownContent(xpp);
20678      eventType = nextNoWhitespace(xpp);
20679    }
20680    next(xpp);
20681    parseElementClose(res);
20682    return res;
20683  }
20684
20685  protected boolean parseSubstancePolymerContent(int eventType, XmlPullParser xpp, SubstancePolymer res) throws XmlPullParserException, IOException, FHIRFormatError {
20686      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
20687        res.setClass_(parseCodeableConcept(xpp));
20688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geometry")) {
20689        res.setGeometry(parseCodeableConcept(xpp));
20690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copolymerConnectivity")) {
20691        res.getCopolymerConnectivity().add(parseCodeableConcept(xpp));
20692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modification")) {
20693        res.getModification().add(parseString(xpp));
20694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monomerSet")) {
20695        res.getMonomerSet().add(parseSubstancePolymerSubstancePolymerMonomerSetComponent(xpp, res));
20696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
20697        res.getRepeat().add(parseSubstancePolymerSubstancePolymerRepeatComponent(xpp, res));
20698      } else if (!parseDomainResourceContent(eventType, xpp, res))
20699        return false;
20700    return true;
20701  }
20702
20703  protected SubstancePolymer.SubstancePolymerMonomerSetComponent parseSubstancePolymerSubstancePolymerMonomerSetComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20704    SubstancePolymer.SubstancePolymerMonomerSetComponent res = new SubstancePolymer.SubstancePolymerMonomerSetComponent();
20705    parseBackboneAttributes(xpp, res);
20706    next(xpp);
20707    int eventType = nextNoWhitespace(xpp);
20708    while (eventType != XmlPullParser.END_TAG) {
20709  if (!parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(eventType, xpp, owner, res))
20710        unknownContent(xpp);
20711      eventType = nextNoWhitespace(xpp);
20712    }
20713    next(xpp);
20714    parseElementClose(res);
20715    return res;
20716  }
20717
20718  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20719      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ratioType")) {
20720        res.setRatioType(parseCodeableConcept(xpp));
20721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startingMaterial")) {
20722        res.getStartingMaterial().add(parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(xpp, owner));
20723      } else if (!parseBackboneElementContent(eventType, xpp, res))
20724        return false;
20725    return true;
20726  }
20727
20728  protected SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20729    SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res = new SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent();
20730    parseBackboneAttributes(xpp, res);
20731    next(xpp);
20732    int eventType = nextNoWhitespace(xpp);
20733    while (eventType != XmlPullParser.END_TAG) {
20734  if (!parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(eventType, xpp, owner, res))
20735        unknownContent(xpp);
20736      eventType = nextNoWhitespace(xpp);
20737    }
20738    next(xpp);
20739    parseElementClose(res);
20740    return res;
20741  }
20742
20743  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
20745        res.setMaterial(parseCodeableConcept(xpp));
20746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20747        res.setType(parseCodeableConcept(xpp));
20748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
20749        res.setIsDefiningElement(parseBoolean(xpp));
20750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20751        res.setAmount(parseSubstanceAmount(xpp));
20752      } else if (!parseBackboneElementContent(eventType, xpp, res))
20753        return false;
20754    return true;
20755  }
20756
20757  protected SubstancePolymer.SubstancePolymerRepeatComponent parseSubstancePolymerSubstancePolymerRepeatComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20758    SubstancePolymer.SubstancePolymerRepeatComponent res = new SubstancePolymer.SubstancePolymerRepeatComponent();
20759    parseBackboneAttributes(xpp, res);
20760    next(xpp);
20761    int eventType = nextNoWhitespace(xpp);
20762    while (eventType != XmlPullParser.END_TAG) {
20763  if (!parseSubstancePolymerSubstancePolymerRepeatComponentContent(eventType, xpp, owner, res))
20764        unknownContent(xpp);
20765      eventType = nextNoWhitespace(xpp);
20766    }
20767    next(xpp);
20768    parseElementClose(res);
20769    return res;
20770  }
20771
20772  protected boolean parseSubstancePolymerSubstancePolymerRepeatComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20773      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfUnits")) {
20774        res.setNumberOfUnitsElement(parseInteger(xpp));
20775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("averageMolecularFormula")) {
20776        res.setAverageMolecularFormulaElement(parseString(xpp));
20777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnitAmountType")) {
20778        res.setRepeatUnitAmountType(parseCodeableConcept(xpp));
20779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
20780        res.getRepeatUnit().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(xpp, owner));
20781      } else if (!parseBackboneElementContent(eventType, xpp, res))
20782        return false;
20783    return true;
20784  }
20785
20786  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20787    SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent();
20788    parseBackboneAttributes(xpp, res);
20789    next(xpp);
20790    int eventType = nextNoWhitespace(xpp);
20791    while (eventType != XmlPullParser.END_TAG) {
20792  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(eventType, xpp, owner, res))
20793        unknownContent(xpp);
20794      eventType = nextNoWhitespace(xpp);
20795    }
20796    next(xpp);
20797    parseElementClose(res);
20798    return res;
20799  }
20800
20801  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20802      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientationOfPolymerisation")) {
20803        res.setOrientationOfPolymerisation(parseCodeableConcept(xpp));
20804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
20805        res.setRepeatUnitElement(parseString(xpp));
20806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20807        res.setAmount(parseSubstanceAmount(xpp));
20808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degreeOfPolymerisation")) {
20809        res.getDegreeOfPolymerisation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(xpp, owner));
20810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structuralRepresentation")) {
20811        res.getStructuralRepresentation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(xpp, owner));
20812      } else if (!parseBackboneElementContent(eventType, xpp, res))
20813        return false;
20814    return true;
20815  }
20816
20817  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20818    SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent();
20819    parseBackboneAttributes(xpp, res);
20820    next(xpp);
20821    int eventType = nextNoWhitespace(xpp);
20822    while (eventType != XmlPullParser.END_TAG) {
20823  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(eventType, xpp, owner, res))
20824        unknownContent(xpp);
20825      eventType = nextNoWhitespace(xpp);
20826    }
20827    next(xpp);
20828    parseElementClose(res);
20829    return res;
20830  }
20831
20832  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20833      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degree")) {
20834        res.setDegree(parseCodeableConcept(xpp));
20835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20836        res.setAmount(parseSubstanceAmount(xpp));
20837      } else if (!parseBackboneElementContent(eventType, xpp, res))
20838        return false;
20839    return true;
20840  }
20841
20842  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20843    SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent();
20844    parseBackboneAttributes(xpp, res);
20845    next(xpp);
20846    int eventType = nextNoWhitespace(xpp);
20847    while (eventType != XmlPullParser.END_TAG) {
20848  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(eventType, xpp, owner, res))
20849        unknownContent(xpp);
20850      eventType = nextNoWhitespace(xpp);
20851    }
20852    next(xpp);
20853    parseElementClose(res);
20854    return res;
20855  }
20856
20857  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20858      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20859        res.setType(parseCodeableConcept(xpp));
20860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
20861        res.setRepresentationElement(parseString(xpp));
20862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
20863        res.setAttachment(parseAttachment(xpp));
20864      } else if (!parseBackboneElementContent(eventType, xpp, res))
20865        return false;
20866    return true;
20867  }
20868
20869  protected SubstanceProtein parseSubstanceProtein(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20870    SubstanceProtein res = new SubstanceProtein();
20871    parseDomainResourceAttributes(xpp, res);
20872    next(xpp);
20873    int eventType = nextNoWhitespace(xpp);
20874    while (eventType != XmlPullParser.END_TAG) {
20875  if (!parseSubstanceProteinContent(eventType, xpp, res))
20876        unknownContent(xpp);
20877      eventType = nextNoWhitespace(xpp);
20878    }
20879    next(xpp);
20880    parseElementClose(res);
20881    return res;
20882  }
20883
20884  protected boolean parseSubstanceProteinContent(int eventType, XmlPullParser xpp, SubstanceProtein res) throws XmlPullParserException, IOException, FHIRFormatError {
20885      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceType")) {
20886        res.setSequenceType(parseCodeableConcept(xpp));
20887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSubunits")) {
20888        res.setNumberOfSubunitsElement(parseInteger(xpp));
20889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disulfideLinkage")) {
20890        res.getDisulfideLinkage().add(parseString(xpp));
20891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20892        res.getSubunit().add(parseSubstanceProteinSubstanceProteinSubunitComponent(xpp, res));
20893      } else if (!parseDomainResourceContent(eventType, xpp, res))
20894        return false;
20895    return true;
20896  }
20897
20898  protected SubstanceProtein.SubstanceProteinSubunitComponent parseSubstanceProteinSubstanceProteinSubunitComponent(XmlPullParser xpp, SubstanceProtein owner) throws XmlPullParserException, IOException, FHIRFormatError {
20899    SubstanceProtein.SubstanceProteinSubunitComponent res = new SubstanceProtein.SubstanceProteinSubunitComponent();
20900    parseBackboneAttributes(xpp, res);
20901    next(xpp);
20902    int eventType = nextNoWhitespace(xpp);
20903    while (eventType != XmlPullParser.END_TAG) {
20904  if (!parseSubstanceProteinSubstanceProteinSubunitComponentContent(eventType, xpp, owner, res))
20905        unknownContent(xpp);
20906      eventType = nextNoWhitespace(xpp);
20907    }
20908    next(xpp);
20909    parseElementClose(res);
20910    return res;
20911  }
20912
20913  protected boolean parseSubstanceProteinSubstanceProteinSubunitComponentContent(int eventType, XmlPullParser xpp, SubstanceProtein owner, SubstanceProtein.SubstanceProteinSubunitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20914      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20915        res.setSubunitElement(parseInteger(xpp));
20916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
20917        res.setSequenceElement(parseString(xpp));
20918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
20919        res.setLengthElement(parseInteger(xpp));
20920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceAttachment")) {
20921        res.setSequenceAttachment(parseAttachment(xpp));
20922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nTerminalModificationId")) {
20923        res.setNTerminalModificationId(parseIdentifier(xpp));
20924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nTerminalModification")) {
20925        res.setNTerminalModificationElement(parseString(xpp));
20926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cTerminalModificationId")) {
20927        res.setCTerminalModificationId(parseIdentifier(xpp));
20928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cTerminalModification")) {
20929        res.setCTerminalModificationElement(parseString(xpp));
20930      } else if (!parseBackboneElementContent(eventType, xpp, res))
20931        return false;
20932    return true;
20933  }
20934
20935  protected SubstanceReferenceInformation parseSubstanceReferenceInformation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20936    SubstanceReferenceInformation res = new SubstanceReferenceInformation();
20937    parseDomainResourceAttributes(xpp, res);
20938    next(xpp);
20939    int eventType = nextNoWhitespace(xpp);
20940    while (eventType != XmlPullParser.END_TAG) {
20941  if (!parseSubstanceReferenceInformationContent(eventType, xpp, res))
20942        unknownContent(xpp);
20943      eventType = nextNoWhitespace(xpp);
20944    }
20945    next(xpp);
20946    parseElementClose(res);
20947    return res;
20948  }
20949
20950  protected boolean parseSubstanceReferenceInformationContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation res) throws XmlPullParserException, IOException, FHIRFormatError {
20951      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20952        res.setCommentElement(parseString(xpp));
20953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
20954        res.getGene().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(xpp, res));
20955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneElement")) {
20956        res.getGeneElement().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(xpp, res));
20957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
20958        res.getClassification().add(parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(xpp, res));
20959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20960        res.getTarget().add(parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(xpp, res));
20961      } else if (!parseDomainResourceContent(eventType, xpp, res))
20962        return false;
20963    return true;
20964  }
20965
20966  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20967    SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent();
20968    parseBackboneAttributes(xpp, res);
20969    next(xpp);
20970    int eventType = nextNoWhitespace(xpp);
20971    while (eventType != XmlPullParser.END_TAG) {
20972  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(eventType, xpp, owner, res))
20973        unknownContent(xpp);
20974      eventType = nextNoWhitespace(xpp);
20975    }
20976    next(xpp);
20977    parseElementClose(res);
20978    return res;
20979  }
20980
20981  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20982      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneSequenceOrigin")) {
20983        res.setGeneSequenceOrigin(parseCodeableConcept(xpp));
20984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
20985        res.setGene(parseCodeableConcept(xpp));
20986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20987        res.getSource().add(parseReference(xpp));
20988      } else if (!parseBackboneElementContent(eventType, xpp, res))
20989        return false;
20990    return true;
20991  }
20992
20993  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20994    SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent();
20995    parseBackboneAttributes(xpp, res);
20996    next(xpp);
20997    int eventType = nextNoWhitespace(xpp);
20998    while (eventType != XmlPullParser.END_TAG) {
20999  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(eventType, xpp, owner, res))
21000        unknownContent(xpp);
21001      eventType = nextNoWhitespace(xpp);
21002    }
21003    next(xpp);
21004    parseElementClose(res);
21005    return res;
21006  }
21007
21008  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21009      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21010        res.setType(parseCodeableConcept(xpp));
21011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
21012        res.setElement(parseIdentifier(xpp));
21013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21014        res.getSource().add(parseReference(xpp));
21015      } else if (!parseBackboneElementContent(eventType, xpp, res))
21016        return false;
21017    return true;
21018  }
21019
21020  protected SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
21021    SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent();
21022    parseBackboneAttributes(xpp, res);
21023    next(xpp);
21024    int eventType = nextNoWhitespace(xpp);
21025    while (eventType != XmlPullParser.END_TAG) {
21026  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(eventType, xpp, owner, res))
21027        unknownContent(xpp);
21028      eventType = nextNoWhitespace(xpp);
21029    }
21030    next(xpp);
21031    parseElementClose(res);
21032    return res;
21033  }
21034
21035  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21036      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21037        res.setDomain(parseCodeableConcept(xpp));
21038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
21039        res.setClassification(parseCodeableConcept(xpp));
21040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
21041        res.getSubtype().add(parseCodeableConcept(xpp));
21042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21043        res.getSource().add(parseReference(xpp));
21044      } else if (!parseBackboneElementContent(eventType, xpp, res))
21045        return false;
21046    return true;
21047  }
21048
21049  protected SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
21050    SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent();
21051    parseBackboneAttributes(xpp, res);
21052    next(xpp);
21053    int eventType = nextNoWhitespace(xpp);
21054    while (eventType != XmlPullParser.END_TAG) {
21055  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(eventType, xpp, owner, res))
21056        unknownContent(xpp);
21057      eventType = nextNoWhitespace(xpp);
21058    }
21059    next(xpp);
21060    parseElementClose(res);
21061    return res;
21062  }
21063
21064  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21065      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
21066        res.setTarget(parseIdentifier(xpp));
21067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21068        res.setType(parseCodeableConcept(xpp));
21069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
21070        res.setInteraction(parseCodeableConcept(xpp));
21071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
21072        res.setOrganism(parseCodeableConcept(xpp));
21073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismType")) {
21074        res.setOrganismType(parseCodeableConcept(xpp));
21075      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21076        res.setAmount(parseType("amount", xpp));
21077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
21078        res.setAmountType(parseCodeableConcept(xpp));
21079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21080        res.getSource().add(parseReference(xpp));
21081      } else if (!parseBackboneElementContent(eventType, xpp, res))
21082        return false;
21083    return true;
21084  }
21085
21086  protected SubstanceSourceMaterial parseSubstanceSourceMaterial(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21087    SubstanceSourceMaterial res = new SubstanceSourceMaterial();
21088    parseDomainResourceAttributes(xpp, res);
21089    next(xpp);
21090    int eventType = nextNoWhitespace(xpp);
21091    while (eventType != XmlPullParser.END_TAG) {
21092  if (!parseSubstanceSourceMaterialContent(eventType, xpp, res))
21093        unknownContent(xpp);
21094      eventType = nextNoWhitespace(xpp);
21095    }
21096    next(xpp);
21097    parseElementClose(res);
21098    return res;
21099  }
21100
21101  protected boolean parseSubstanceSourceMaterialContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial res) throws XmlPullParserException, IOException, FHIRFormatError {
21102      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialClass")) {
21103        res.setSourceMaterialClass(parseCodeableConcept(xpp));
21104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialType")) {
21105        res.setSourceMaterialType(parseCodeableConcept(xpp));
21106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialState")) {
21107        res.setSourceMaterialState(parseCodeableConcept(xpp));
21108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismId")) {
21109        res.setOrganismId(parseIdentifier(xpp));
21110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismName")) {
21111        res.setOrganismNameElement(parseString(xpp));
21112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentSubstanceId")) {
21113        res.getParentSubstanceId().add(parseIdentifier(xpp));
21114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentSubstanceName")) {
21115        res.getParentSubstanceName().add(parseString(xpp));
21116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryOfOrigin")) {
21117        res.getCountryOfOrigin().add(parseCodeableConcept(xpp));
21118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geographicalLocation")) {
21119        res.getGeographicalLocation().add(parseString(xpp));
21120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("developmentStage")) {
21121        res.setDevelopmentStage(parseCodeableConcept(xpp));
21122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fractionDescription")) {
21123        res.getFractionDescription().add(parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(xpp, res));
21124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
21125        res.setOrganism(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(xpp, res));
21126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partDescription")) {
21127        res.getPartDescription().add(parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(xpp, res));
21128      } else if (!parseDomainResourceContent(eventType, xpp, res))
21129        return false;
21130    return true;
21131  }
21132
21133  protected SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21134    SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent();
21135    parseBackboneAttributes(xpp, res);
21136    next(xpp);
21137    int eventType = nextNoWhitespace(xpp);
21138    while (eventType != XmlPullParser.END_TAG) {
21139  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentContent(eventType, xpp, owner, res))
21140        unknownContent(xpp);
21141      eventType = nextNoWhitespace(xpp);
21142    }
21143    next(xpp);
21144    parseElementClose(res);
21145    return res;
21146  }
21147
21148  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21149      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fraction")) {
21150        res.setFractionElement(parseString(xpp));
21151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("materialType")) {
21152        res.setMaterialType(parseCodeableConcept(xpp));
21153      } else if (!parseBackboneElementContent(eventType, xpp, res))
21154        return false;
21155    return true;
21156  }
21157
21158  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21159    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent();
21160    parseBackboneAttributes(xpp, res);
21161    next(xpp);
21162    int eventType = nextNoWhitespace(xpp);
21163    while (eventType != XmlPullParser.END_TAG) {
21164  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentContent(eventType, xpp, owner, res))
21165        unknownContent(xpp);
21166      eventType = nextNoWhitespace(xpp);
21167    }
21168    next(xpp);
21169    parseElementClose(res);
21170    return res;
21171  }
21172
21173  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21174      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
21175        res.setFamily(parseCodeableConcept(xpp));
21176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genus")) {
21177        res.setGenus(parseCodeableConcept(xpp));
21178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
21179        res.setSpecies(parseCodeableConcept(xpp));
21180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intraspecificType")) {
21181        res.setIntraspecificType(parseCodeableConcept(xpp));
21182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intraspecificDescription")) {
21183        res.setIntraspecificDescriptionElement(parseString(xpp));
21184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
21185        res.getAuthor().add(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(xpp, owner));
21186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hybrid")) {
21187        res.setHybrid(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(xpp, owner));
21188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismGeneral")) {
21189        res.setOrganismGeneral(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(xpp, owner));
21190      } else if (!parseBackboneElementContent(eventType, xpp, res))
21191        return false;
21192    return true;
21193  }
21194
21195  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21196    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent();
21197    parseBackboneAttributes(xpp, res);
21198    next(xpp);
21199    int eventType = nextNoWhitespace(xpp);
21200    while (eventType != XmlPullParser.END_TAG) {
21201  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentContent(eventType, xpp, owner, res))
21202        unknownContent(xpp);
21203      eventType = nextNoWhitespace(xpp);
21204    }
21205    next(xpp);
21206    parseElementClose(res);
21207    return res;
21208  }
21209
21210  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21211      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorType")) {
21212        res.setAuthorType(parseCodeableConcept(xpp));
21213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorDescription")) {
21214        res.setAuthorDescriptionElement(parseString(xpp));
21215      } else if (!parseBackboneElementContent(eventType, xpp, res))
21216        return false;
21217    return true;
21218  }
21219
21220  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21221    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent();
21222    parseBackboneAttributes(xpp, res);
21223    next(xpp);
21224    int eventType = nextNoWhitespace(xpp);
21225    while (eventType != XmlPullParser.END_TAG) {
21226  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentContent(eventType, xpp, owner, res))
21227        unknownContent(xpp);
21228      eventType = nextNoWhitespace(xpp);
21229    }
21230    next(xpp);
21231    parseElementClose(res);
21232    return res;
21233  }
21234
21235  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21236      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maternalOrganismId")) {
21237        res.setMaternalOrganismIdElement(parseString(xpp));
21238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maternalOrganismName")) {
21239        res.setMaternalOrganismNameElement(parseString(xpp));
21240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paternalOrganismId")) {
21241        res.setPaternalOrganismIdElement(parseString(xpp));
21242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paternalOrganismName")) {
21243        res.setPaternalOrganismNameElement(parseString(xpp));
21244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hybridType")) {
21245        res.setHybridType(parseCodeableConcept(xpp));
21246      } else if (!parseBackboneElementContent(eventType, xpp, res))
21247        return false;
21248    return true;
21249  }
21250
21251  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21252    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent();
21253    parseBackboneAttributes(xpp, res);
21254    next(xpp);
21255    int eventType = nextNoWhitespace(xpp);
21256    while (eventType != XmlPullParser.END_TAG) {
21257  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentContent(eventType, xpp, owner, res))
21258        unknownContent(xpp);
21259      eventType = nextNoWhitespace(xpp);
21260    }
21261    next(xpp);
21262    parseElementClose(res);
21263    return res;
21264  }
21265
21266  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21267      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kingdom")) {
21268        res.setKingdom(parseCodeableConcept(xpp));
21269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phylum")) {
21270        res.setPhylum(parseCodeableConcept(xpp));
21271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
21272        res.setClass_(parseCodeableConcept(xpp));
21273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
21274        res.setOrder(parseCodeableConcept(xpp));
21275      } else if (!parseBackboneElementContent(eventType, xpp, res))
21276        return false;
21277    return true;
21278  }
21279
21280  protected SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21281    SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent();
21282    parseBackboneAttributes(xpp, res);
21283    next(xpp);
21284    int eventType = nextNoWhitespace(xpp);
21285    while (eventType != XmlPullParser.END_TAG) {
21286  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentContent(eventType, xpp, owner, res))
21287        unknownContent(xpp);
21288      eventType = nextNoWhitespace(xpp);
21289    }
21290    next(xpp);
21291    parseElementClose(res);
21292    return res;
21293  }
21294
21295  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21296      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
21297        res.setPart(parseCodeableConcept(xpp));
21298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partLocation")) {
21299        res.setPartLocation(parseCodeableConcept(xpp));
21300      } else if (!parseBackboneElementContent(eventType, xpp, res))
21301        return false;
21302    return true;
21303  }
21304
21305  protected SubstanceSpecification parseSubstanceSpecification(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21306    SubstanceSpecification res = new SubstanceSpecification();
21307    parseDomainResourceAttributes(xpp, res);
21308    next(xpp);
21309    int eventType = nextNoWhitespace(xpp);
21310    while (eventType != XmlPullParser.END_TAG) {
21311  if (!parseSubstanceSpecificationContent(eventType, xpp, res))
21312        unknownContent(xpp);
21313      eventType = nextNoWhitespace(xpp);
21314    }
21315    next(xpp);
21316    parseElementClose(res);
21317    return res;
21318  }
21319
21320  protected boolean parseSubstanceSpecificationContent(int eventType, XmlPullParser xpp, SubstanceSpecification res) throws XmlPullParserException, IOException, FHIRFormatError {
21321      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21322        res.setIdentifier(parseIdentifier(xpp));
21323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21324        res.setType(parseCodeableConcept(xpp));
21325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21326        res.setStatus(parseCodeableConcept(xpp));
21327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21328        res.setDomain(parseCodeableConcept(xpp));
21329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21330        res.setDescriptionElement(parseString(xpp));
21331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21332        res.getSource().add(parseReference(xpp));
21333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21334        res.setCommentElement(parseString(xpp));
21335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moiety")) {
21336        res.getMoiety().add(parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(xpp, res));
21337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
21338        res.getProperty().add(parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(xpp, res));
21339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceInformation")) {
21340        res.setReferenceInformation(parseReference(xpp));
21341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
21342        res.setStructure(parseSubstanceSpecificationSubstanceSpecificationStructureComponent(xpp, res));
21343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21344        res.getCode().add(parseSubstanceSpecificationSubstanceSpecificationCodeComponent(xpp, res));
21345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21346        res.getName().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, res));
21347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21348        res.getMolecularWeight().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, res));
21349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
21350        res.getRelationship().add(parseSubstanceSpecificationSubstanceSpecificationRelationshipComponent(xpp, res));
21351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nucleicAcid")) {
21352        res.setNucleicAcid(parseReference(xpp));
21353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("polymer")) {
21354        res.setPolymer(parseReference(xpp));
21355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protein")) {
21356        res.setProtein(parseReference(xpp));
21357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterial")) {
21358        res.setSourceMaterial(parseReference(xpp));
21359      } else if (!parseDomainResourceContent(eventType, xpp, res))
21360        return false;
21361    return true;
21362  }
21363
21364  protected SubstanceSpecification.SubstanceSpecificationMoietyComponent parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21365    SubstanceSpecification.SubstanceSpecificationMoietyComponent res = new SubstanceSpecification.SubstanceSpecificationMoietyComponent();
21366    parseBackboneAttributes(xpp, res);
21367    next(xpp);
21368    int eventType = nextNoWhitespace(xpp);
21369    while (eventType != XmlPullParser.END_TAG) {
21370  if (!parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(eventType, xpp, owner, res))
21371        unknownContent(xpp);
21372      eventType = nextNoWhitespace(xpp);
21373    }
21374    next(xpp);
21375    parseElementClose(res);
21376    return res;
21377  }
21378
21379  protected boolean parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationMoietyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21380      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
21381        res.setRole(parseCodeableConcept(xpp));
21382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21383        res.setIdentifier(parseIdentifier(xpp));
21384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21385        res.setNameElement(parseString(xpp));
21386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
21387        res.setStereochemistry(parseCodeableConcept(xpp));
21388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
21389        res.setOpticalActivity(parseCodeableConcept(xpp));
21390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
21391        res.setMolecularFormulaElement(parseString(xpp));
21392      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21393        res.setAmount(parseType("amount", xpp));
21394      } else if (!parseBackboneElementContent(eventType, xpp, res))
21395        return false;
21396    return true;
21397  }
21398
21399  protected SubstanceSpecification.SubstanceSpecificationPropertyComponent parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21400    SubstanceSpecification.SubstanceSpecificationPropertyComponent res = new SubstanceSpecification.SubstanceSpecificationPropertyComponent();
21401    parseBackboneAttributes(xpp, res);
21402    next(xpp);
21403    int eventType = nextNoWhitespace(xpp);
21404    while (eventType != XmlPullParser.END_TAG) {
21405  if (!parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(eventType, xpp, owner, res))
21406        unknownContent(xpp);
21407      eventType = nextNoWhitespace(xpp);
21408    }
21409    next(xpp);
21410    parseElementClose(res);
21411    return res;
21412  }
21413
21414  protected boolean parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21415      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21416        res.setCategory(parseCodeableConcept(xpp));
21417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21418        res.setCode(parseCodeableConcept(xpp));
21419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameters")) {
21420        res.setParametersElement(parseString(xpp));
21421      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definingSubstance")) {
21422        res.setDefiningSubstance(parseType("definingSubstance", xpp));
21423      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21424        res.setAmount(parseType("amount", xpp));
21425      } else if (!parseBackboneElementContent(eventType, xpp, res))
21426        return false;
21427    return true;
21428  }
21429
21430  protected SubstanceSpecification.SubstanceSpecificationStructureComponent parseSubstanceSpecificationSubstanceSpecificationStructureComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21431    SubstanceSpecification.SubstanceSpecificationStructureComponent res = new SubstanceSpecification.SubstanceSpecificationStructureComponent();
21432    parseBackboneAttributes(xpp, res);
21433    next(xpp);
21434    int eventType = nextNoWhitespace(xpp);
21435    while (eventType != XmlPullParser.END_TAG) {
21436  if (!parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(eventType, xpp, owner, res))
21437        unknownContent(xpp);
21438      eventType = nextNoWhitespace(xpp);
21439    }
21440    next(xpp);
21441    parseElementClose(res);
21442    return res;
21443  }
21444
21445  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21446      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
21447        res.setStereochemistry(parseCodeableConcept(xpp));
21448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
21449        res.setOpticalActivity(parseCodeableConcept(xpp));
21450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
21451        res.setMolecularFormulaElement(parseString(xpp));
21452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormulaByMoiety")) {
21453        res.setMolecularFormulaByMoietyElement(parseString(xpp));
21454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isotope")) {
21455        res.getIsotope().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(xpp, owner));
21456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21457        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
21458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21459        res.getSource().add(parseReference(xpp));
21460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
21461        res.getRepresentation().add(parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(xpp, owner));
21462      } else if (!parseBackboneElementContent(eventType, xpp, res))
21463        return false;
21464    return true;
21465  }
21466
21467  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21468    SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent();
21469    parseBackboneAttributes(xpp, res);
21470    next(xpp);
21471    int eventType = nextNoWhitespace(xpp);
21472    while (eventType != XmlPullParser.END_TAG) {
21473  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(eventType, xpp, owner, res))
21474        unknownContent(xpp);
21475      eventType = nextNoWhitespace(xpp);
21476    }
21477    next(xpp);
21478    parseElementClose(res);
21479    return res;
21480  }
21481
21482  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21483      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21484        res.setIdentifier(parseIdentifier(xpp));
21485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21486        res.setName(parseCodeableConcept(xpp));
21487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
21488        res.setSubstitution(parseCodeableConcept(xpp));
21489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLife")) {
21490        res.setHalfLife(parseQuantity(xpp));
21491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21492        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
21493      } else if (!parseBackboneElementContent(eventType, xpp, res))
21494        return false;
21495    return true;
21496  }
21497
21498  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21499    SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent();
21500    parseBackboneAttributes(xpp, res);
21501    next(xpp);
21502    int eventType = nextNoWhitespace(xpp);
21503    while (eventType != XmlPullParser.END_TAG) {
21504  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(eventType, xpp, owner, res))
21505        unknownContent(xpp);
21506      eventType = nextNoWhitespace(xpp);
21507    }
21508    next(xpp);
21509    parseElementClose(res);
21510    return res;
21511  }
21512
21513  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21514      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
21515        res.setMethod(parseCodeableConcept(xpp));
21516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21517        res.setType(parseCodeableConcept(xpp));
21518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
21519        res.setAmount(parseQuantity(xpp));
21520      } else if (!parseBackboneElementContent(eventType, xpp, res))
21521        return false;
21522    return true;
21523  }
21524
21525  protected SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21526    SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent res = new SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent();
21527    parseBackboneAttributes(xpp, res);
21528    next(xpp);
21529    int eventType = nextNoWhitespace(xpp);
21530    while (eventType != XmlPullParser.END_TAG) {
21531  if (!parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentContent(eventType, xpp, owner, res))
21532        unknownContent(xpp);
21533      eventType = nextNoWhitespace(xpp);
21534    }
21535    next(xpp);
21536    parseElementClose(res);
21537    return res;
21538  }
21539
21540  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21542        res.setType(parseCodeableConcept(xpp));
21543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
21544        res.setRepresentationElement(parseString(xpp));
21545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
21546        res.setAttachment(parseAttachment(xpp));
21547      } else if (!parseBackboneElementContent(eventType, xpp, res))
21548        return false;
21549    return true;
21550  }
21551
21552  protected SubstanceSpecification.SubstanceSpecificationCodeComponent parseSubstanceSpecificationSubstanceSpecificationCodeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21553    SubstanceSpecification.SubstanceSpecificationCodeComponent res = new SubstanceSpecification.SubstanceSpecificationCodeComponent();
21554    parseBackboneAttributes(xpp, res);
21555    next(xpp);
21556    int eventType = nextNoWhitespace(xpp);
21557    while (eventType != XmlPullParser.END_TAG) {
21558  if (!parseSubstanceSpecificationSubstanceSpecificationCodeComponentContent(eventType, xpp, owner, res))
21559        unknownContent(xpp);
21560      eventType = nextNoWhitespace(xpp);
21561    }
21562    next(xpp);
21563    parseElementClose(res);
21564    return res;
21565  }
21566
21567  protected boolean parseSubstanceSpecificationSubstanceSpecificationCodeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21569        res.setCode(parseCodeableConcept(xpp));
21570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21571        res.setStatus(parseCodeableConcept(xpp));
21572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
21573        res.setStatusDateElement(parseDateTime(xpp));
21574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21575        res.setCommentElement(parseString(xpp));
21576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21577        res.getSource().add(parseReference(xpp));
21578      } else if (!parseBackboneElementContent(eventType, xpp, res))
21579        return false;
21580    return true;
21581  }
21582
21583  protected SubstanceSpecification.SubstanceSpecificationNameComponent parseSubstanceSpecificationSubstanceSpecificationNameComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21584    SubstanceSpecification.SubstanceSpecificationNameComponent res = new SubstanceSpecification.SubstanceSpecificationNameComponent();
21585    parseBackboneAttributes(xpp, res);
21586    next(xpp);
21587    int eventType = nextNoWhitespace(xpp);
21588    while (eventType != XmlPullParser.END_TAG) {
21589  if (!parseSubstanceSpecificationSubstanceSpecificationNameComponentContent(eventType, xpp, owner, res))
21590        unknownContent(xpp);
21591      eventType = nextNoWhitespace(xpp);
21592    }
21593    next(xpp);
21594    parseElementClose(res);
21595    return res;
21596  }
21597
21598  protected boolean parseSubstanceSpecificationSubstanceSpecificationNameComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21599      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21600        res.setNameElement(parseString(xpp));
21601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21602        res.setType(parseCodeableConcept(xpp));
21603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21604        res.setStatus(parseCodeableConcept(xpp));
21605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
21606        res.setPreferredElement(parseBoolean(xpp));
21607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
21608        res.getLanguage().add(parseCodeableConcept(xpp));
21609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21610        res.getDomain().add(parseCodeableConcept(xpp));
21611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21612        res.getJurisdiction().add(parseCodeableConcept(xpp));
21613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
21614        res.getSynonym().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, owner));
21615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
21616        res.getTranslation().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, owner));
21617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("official")) {
21618        res.getOfficial().add(parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(xpp, owner));
21619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21620        res.getSource().add(parseReference(xpp));
21621      } else if (!parseBackboneElementContent(eventType, xpp, res))
21622        return false;
21623    return true;
21624  }
21625
21626  protected SubstanceSpecification.SubstanceSpecificationNameOfficialComponent parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21627    SubstanceSpecification.SubstanceSpecificationNameOfficialComponent res = new SubstanceSpecification.SubstanceSpecificationNameOfficialComponent();
21628    parseBackboneAttributes(xpp, res);
21629    next(xpp);
21630    int eventType = nextNoWhitespace(xpp);
21631    while (eventType != XmlPullParser.END_TAG) {
21632  if (!parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponentContent(eventType, xpp, owner, res))
21633        unknownContent(xpp);
21634      eventType = nextNoWhitespace(xpp);
21635    }
21636    next(xpp);
21637    parseElementClose(res);
21638    return res;
21639  }
21640
21641  protected boolean parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationNameOfficialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21642      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
21643        res.setAuthority(parseCodeableConcept(xpp));
21644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21645        res.setStatus(parseCodeableConcept(xpp));
21646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21647        res.setDateElement(parseDateTime(xpp));
21648      } else if (!parseBackboneElementContent(eventType, xpp, res))
21649        return false;
21650    return true;
21651  }
21652
21653  protected SubstanceSpecification.SubstanceSpecificationRelationshipComponent parseSubstanceSpecificationSubstanceSpecificationRelationshipComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21654    SubstanceSpecification.SubstanceSpecificationRelationshipComponent res = new SubstanceSpecification.SubstanceSpecificationRelationshipComponent();
21655    parseBackboneAttributes(xpp, res);
21656    next(xpp);
21657    int eventType = nextNoWhitespace(xpp);
21658    while (eventType != XmlPullParser.END_TAG) {
21659  if (!parseSubstanceSpecificationSubstanceSpecificationRelationshipComponentContent(eventType, xpp, owner, res))
21660        unknownContent(xpp);
21661      eventType = nextNoWhitespace(xpp);
21662    }
21663    next(xpp);
21664    parseElementClose(res);
21665    return res;
21666  }
21667
21668  protected boolean parseSubstanceSpecificationSubstanceSpecificationRelationshipComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationRelationshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21669      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
21670        res.setSubstance(parseType("substance", xpp));
21671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
21672        res.setRelationship(parseCodeableConcept(xpp));
21673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
21674        res.setIsDefiningElement(parseBoolean(xpp));
21675      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21676        res.setAmount(parseType("amount", xpp));
21677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountRatioLowLimit")) {
21678        res.setAmountRatioLowLimit(parseRatio(xpp));
21679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
21680        res.setAmountType(parseCodeableConcept(xpp));
21681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21682        res.getSource().add(parseReference(xpp));
21683      } else if (!parseBackboneElementContent(eventType, xpp, res))
21684        return false;
21685    return true;
21686  }
21687
21688  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21689    SupplyDelivery res = new SupplyDelivery();
21690    parseDomainResourceAttributes(xpp, res);
21691    next(xpp);
21692    int eventType = nextNoWhitespace(xpp);
21693    while (eventType != XmlPullParser.END_TAG) {
21694  if (!parseSupplyDeliveryContent(eventType, xpp, res))
21695        unknownContent(xpp);
21696      eventType = nextNoWhitespace(xpp);
21697    }
21698    next(xpp);
21699    parseElementClose(res);
21700    return res;
21701  }
21702
21703  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
21704      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21705        res.getIdentifier().add(parseIdentifier(xpp));
21706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
21707        res.getBasedOn().add(parseReference(xpp));
21708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
21709        res.getPartOf().add(parseReference(xpp));
21710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21711        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
21712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
21713        res.setPatient(parseReference(xpp));
21714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21715        res.setType(parseCodeableConcept(xpp));
21716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
21717        res.setSuppliedItem(parseSupplyDeliverySupplyDeliverySuppliedItemComponent(xpp, res));
21718      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
21719        res.setOccurrence(parseType("occurrence", xpp));
21720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
21721        res.setSupplier(parseReference(xpp));
21722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
21723        res.setDestination(parseReference(xpp));
21724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
21725        res.getReceiver().add(parseReference(xpp));
21726      } else if (!parseDomainResourceContent(eventType, xpp, res))
21727        return false;
21728    return true;
21729  }
21730
21731  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySupplyDeliverySuppliedItemComponent(XmlPullParser xpp, SupplyDelivery owner) throws XmlPullParserException, IOException, FHIRFormatError {
21732    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
21733    parseBackboneAttributes(xpp, res);
21734    next(xpp);
21735    int eventType = nextNoWhitespace(xpp);
21736    while (eventType != XmlPullParser.END_TAG) {
21737  if (!parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(eventType, xpp, owner, res))
21738        unknownContent(xpp);
21739      eventType = nextNoWhitespace(xpp);
21740    }
21741    next(xpp);
21742    parseElementClose(res);
21743    return res;
21744  }
21745
21746  protected boolean parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery owner, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21747      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21748        res.setQuantity(parseQuantity(xpp));
21749      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
21750        res.setItem(parseType("item", xpp));
21751      } else if (!parseBackboneElementContent(eventType, xpp, res))
21752        return false;
21753    return true;
21754  }
21755
21756  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21757    SupplyRequest res = new SupplyRequest();
21758    parseDomainResourceAttributes(xpp, res);
21759    next(xpp);
21760    int eventType = nextNoWhitespace(xpp);
21761    while (eventType != XmlPullParser.END_TAG) {
21762  if (!parseSupplyRequestContent(eventType, xpp, res))
21763        unknownContent(xpp);
21764      eventType = nextNoWhitespace(xpp);
21765    }
21766    next(xpp);
21767    parseElementClose(res);
21768    return res;
21769  }
21770
21771  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
21772      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21773        res.getIdentifier().add(parseIdentifier(xpp));
21774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21775        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
21776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21777        res.setCategory(parseCodeableConcept(xpp));
21778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
21779        res.setPriorityElement(parseEnumeration(xpp, SupplyRequest.RequestPriority.NULL, new SupplyRequest.RequestPriorityEnumFactory()));
21780      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
21781        res.setItem(parseType("item", xpp));
21782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21783        res.setQuantity(parseQuantity(xpp));
21784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
21785        res.getParameter().add(parseSupplyRequestSupplyRequestParameterComponent(xpp, res));
21786      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
21787        res.setOccurrence(parseType("occurrence", xpp));
21788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
21789        res.setAuthoredOnElement(parseDateTime(xpp));
21790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
21791        res.setRequester(parseReference(xpp));
21792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
21793        res.getSupplier().add(parseReference(xpp));
21794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
21795        res.getReasonCode().add(parseCodeableConcept(xpp));
21796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
21797        res.getReasonReference().add(parseReference(xpp));
21798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
21799        res.setDeliverFrom(parseReference(xpp));
21800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
21801        res.setDeliverTo(parseReference(xpp));
21802      } else if (!parseDomainResourceContent(eventType, xpp, res))
21803        return false;
21804    return true;
21805  }
21806
21807  protected SupplyRequest.SupplyRequestParameterComponent parseSupplyRequestSupplyRequestParameterComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
21808    SupplyRequest.SupplyRequestParameterComponent res = new SupplyRequest.SupplyRequestParameterComponent();
21809    parseBackboneAttributes(xpp, res);
21810    next(xpp);
21811    int eventType = nextNoWhitespace(xpp);
21812    while (eventType != XmlPullParser.END_TAG) {
21813  if (!parseSupplyRequestSupplyRequestParameterComponentContent(eventType, xpp, owner, res))
21814        unknownContent(xpp);
21815      eventType = nextNoWhitespace(xpp);
21816    }
21817    next(xpp);
21818    parseElementClose(res);
21819    return res;
21820  }
21821
21822  protected boolean parseSupplyRequestSupplyRequestParameterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21823      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21824        res.setCode(parseCodeableConcept(xpp));
21825      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21826        res.setValue(parseType("value", xpp));
21827      } else if (!parseBackboneElementContent(eventType, xpp, res))
21828        return false;
21829    return true;
21830  }
21831
21832  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21833    Task res = new Task();
21834    parseDomainResourceAttributes(xpp, res);
21835    next(xpp);
21836    int eventType = nextNoWhitespace(xpp);
21837    while (eventType != XmlPullParser.END_TAG) {
21838  if (!parseTaskContent(eventType, xpp, res))
21839        unknownContent(xpp);
21840      eventType = nextNoWhitespace(xpp);
21841    }
21842    next(xpp);
21843    parseElementClose(res);
21844    return res;
21845  }
21846
21847  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
21848      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21849        res.getIdentifier().add(parseIdentifier(xpp));
21850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
21851        res.setInstantiatesCanonicalElement(parseCanonical(xpp));
21852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
21853        res.setInstantiatesUriElement(parseUri(xpp));
21854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
21855        res.getBasedOn().add(parseReference(xpp));
21856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
21857        res.setGroupIdentifier(parseIdentifier(xpp));
21858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
21859        res.getPartOf().add(parseReference(xpp));
21860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21861        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
21862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
21863        res.setStatusReason(parseCodeableConcept(xpp));
21864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
21865        res.setBusinessStatus(parseCodeableConcept(xpp));
21866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
21867        res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
21868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
21869        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
21870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21871        res.setCode(parseCodeableConcept(xpp));
21872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21873        res.setDescriptionElement(parseString(xpp));
21874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
21875        res.setFocus(parseReference(xpp));
21876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
21877        res.setFor(parseReference(xpp));
21878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
21879        res.setEncounter(parseReference(xpp));
21880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
21881        res.setExecutionPeriod(parsePeriod(xpp));
21882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
21883        res.setAuthoredOnElement(parseDateTime(xpp));
21884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
21885        res.setLastModifiedElement(parseDateTime(xpp));
21886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
21887        res.setRequester(parseReference(xpp));
21888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
21889        res.getPerformerType().add(parseCodeableConcept(xpp));
21890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
21891        res.setOwner(parseReference(xpp));
21892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
21893        res.setLocation(parseReference(xpp));
21894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
21895        res.setReasonCode(parseCodeableConcept(xpp));
21896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
21897        res.setReasonReference(parseReference(xpp));
21898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
21899        res.getInsurance().add(parseReference(xpp));
21900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
21901        res.getNote().add(parseAnnotation(xpp));
21902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
21903        res.getRelevantHistory().add(parseReference(xpp));
21904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
21905        res.setRestriction(parseTaskTaskRestrictionComponent(xpp, res));
21906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
21907        res.getInput().add(parseTaskParameterComponent(xpp, res));
21908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
21909        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
21910      } else if (!parseDomainResourceContent(eventType, xpp, res))
21911        return false;
21912    return true;
21913  }
21914
21915  protected Task.TaskRestrictionComponent parseTaskTaskRestrictionComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21916    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
21917    parseBackboneAttributes(xpp, res);
21918    next(xpp);
21919    int eventType = nextNoWhitespace(xpp);
21920    while (eventType != XmlPullParser.END_TAG) {
21921  if (!parseTaskTaskRestrictionComponentContent(eventType, xpp, owner, res))
21922        unknownContent(xpp);
21923      eventType = nextNoWhitespace(xpp);
21924    }
21925    next(xpp);
21926    parseElementClose(res);
21927    return res;
21928  }
21929
21930  protected boolean parseTaskTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21931      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
21932        res.setRepetitionsElement(parsePositiveInt(xpp));
21933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
21934        res.setPeriod(parsePeriod(xpp));
21935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
21936        res.getRecipient().add(parseReference(xpp));
21937      } else if (!parseBackboneElementContent(eventType, xpp, res))
21938        return false;
21939    return true;
21940  }
21941
21942  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21943    Task.ParameterComponent res = new Task.ParameterComponent();
21944    parseBackboneAttributes(xpp, res);
21945    next(xpp);
21946    int eventType = nextNoWhitespace(xpp);
21947    while (eventType != XmlPullParser.END_TAG) {
21948  if (!parseTaskParameterComponentContent(eventType, xpp, owner, res))
21949        unknownContent(xpp);
21950      eventType = nextNoWhitespace(xpp);
21951    }
21952    next(xpp);
21953    parseElementClose(res);
21954    return res;
21955  }
21956
21957  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21958      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21959        res.setType(parseCodeableConcept(xpp));
21960      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21961        res.setValue(parseType("value", xpp));
21962      } else if (!parseBackboneElementContent(eventType, xpp, res))
21963        return false;
21964    return true;
21965  }
21966
21967  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21968    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
21969    parseBackboneAttributes(xpp, res);
21970    next(xpp);
21971    int eventType = nextNoWhitespace(xpp);
21972    while (eventType != XmlPullParser.END_TAG) {
21973  if (!parseTaskTaskOutputComponentContent(eventType, xpp, owner, res))
21974        unknownContent(xpp);
21975      eventType = nextNoWhitespace(xpp);
21976    }
21977    next(xpp);
21978    parseElementClose(res);
21979    return res;
21980  }
21981
21982  protected boolean parseTaskTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21983      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21984        res.setType(parseCodeableConcept(xpp));
21985      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21986        res.setValue(parseType("value", xpp));
21987      } else if (!parseBackboneElementContent(eventType, xpp, res))
21988        return false;
21989    return true;
21990  }
21991
21992  protected TerminologyCapabilities parseTerminologyCapabilities(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21993    TerminologyCapabilities res = new TerminologyCapabilities();
21994    parseDomainResourceAttributes(xpp, res);
21995    next(xpp);
21996    int eventType = nextNoWhitespace(xpp);
21997    while (eventType != XmlPullParser.END_TAG) {
21998  if (!parseTerminologyCapabilitiesContent(eventType, xpp, res))
21999        unknownContent(xpp);
22000      eventType = nextNoWhitespace(xpp);
22001    }
22002    next(xpp);
22003    parseElementClose(res);
22004    return res;
22005  }
22006
22007  protected boolean parseTerminologyCapabilitiesContent(int eventType, XmlPullParser xpp, TerminologyCapabilities res) throws XmlPullParserException, IOException, FHIRFormatError {
22008      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22009        res.setUrlElement(parseUri(xpp));
22010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22011        res.setVersionElement(parseString(xpp));
22012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22013        res.setNameElement(parseString(xpp));
22014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22015        res.setTitleElement(parseString(xpp));
22016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22017        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22019        res.setExperimentalElement(parseBoolean(xpp));
22020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22021        res.setDateElement(parseDateTime(xpp));
22022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22023        res.setPublisherElement(parseString(xpp));
22024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22025        res.getContact().add(parseContactDetail(xpp));
22026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22027        res.setDescriptionElement(parseMarkdown(xpp));
22028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22029        res.getUseContext().add(parseUsageContext(xpp));
22030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22031        res.getJurisdiction().add(parseCodeableConcept(xpp));
22032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22033        res.setPurposeElement(parseMarkdown(xpp));
22034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22035        res.setCopyrightElement(parseMarkdown(xpp));
22036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
22037        res.setKindElement(parseEnumeration(xpp, TerminologyCapabilities.CapabilityStatementKind.NULL, new TerminologyCapabilities.CapabilityStatementKindEnumFactory()));
22038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
22039        res.setSoftware(parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(xpp, res));
22040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
22041        res.setImplementation(parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(xpp, res));
22042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
22043        res.setLockedDateElement(parseBoolean(xpp));
22044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
22045        res.getCodeSystem().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(xpp, res));
22046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
22047        res.setExpansion(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(xpp, res));
22048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSearch")) {
22049        res.setCodeSearchElement(parseEnumeration(xpp, TerminologyCapabilities.CodeSearchSupport.NULL, new TerminologyCapabilities.CodeSearchSupportEnumFactory()));
22050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateCode")) {
22051        res.setValidateCode(parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(xpp, res));
22052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
22053        res.setTranslation(parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(xpp, res));
22054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closure")) {
22055        res.setClosure(parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(xpp, res));
22056      } else if (!parseDomainResourceContent(eventType, xpp, res))
22057        return false;
22058    return true;
22059  }
22060
22061  protected TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22062    TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res = new TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent();
22063    parseBackboneAttributes(xpp, res);
22064    next(xpp);
22065    int eventType = nextNoWhitespace(xpp);
22066    while (eventType != XmlPullParser.END_TAG) {
22067  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentContent(eventType, xpp, owner, res))
22068        unknownContent(xpp);
22069      eventType = nextNoWhitespace(xpp);
22070    }
22071    next(xpp);
22072    parseElementClose(res);
22073    return res;
22074  }
22075
22076  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22077      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22078        res.setNameElement(parseString(xpp));
22079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22080        res.setVersionElement(parseString(xpp));
22081      } else if (!parseBackboneElementContent(eventType, xpp, res))
22082        return false;
22083    return true;
22084  }
22085
22086  protected TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22087    TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent();
22088    parseBackboneAttributes(xpp, res);
22089    next(xpp);
22090    int eventType = nextNoWhitespace(xpp);
22091    while (eventType != XmlPullParser.END_TAG) {
22092  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentContent(eventType, xpp, owner, res))
22093        unknownContent(xpp);
22094      eventType = nextNoWhitespace(xpp);
22095    }
22096    next(xpp);
22097    parseElementClose(res);
22098    return res;
22099  }
22100
22101  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22102      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22103        res.setDescriptionElement(parseString(xpp));
22104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22105        res.setUrlElement(parseUrl(xpp));
22106      } else if (!parseBackboneElementContent(eventType, xpp, res))
22107        return false;
22108    return true;
22109  }
22110
22111  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22112    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent();
22113    parseBackboneAttributes(xpp, res);
22114    next(xpp);
22115    int eventType = nextNoWhitespace(xpp);
22116    while (eventType != XmlPullParser.END_TAG) {
22117  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(eventType, xpp, owner, res))
22118        unknownContent(xpp);
22119      eventType = nextNoWhitespace(xpp);
22120    }
22121    next(xpp);
22122    parseElementClose(res);
22123    return res;
22124  }
22125
22126  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22127      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
22128        res.setUriElement(parseCanonical(xpp));
22129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22130        res.getVersion().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(xpp, owner));
22131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subsumption")) {
22132        res.setSubsumptionElement(parseBoolean(xpp));
22133      } else if (!parseBackboneElementContent(eventType, xpp, res))
22134        return false;
22135    return true;
22136  }
22137
22138  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22139    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent();
22140    parseBackboneAttributes(xpp, res);
22141    next(xpp);
22142    int eventType = nextNoWhitespace(xpp);
22143    while (eventType != XmlPullParser.END_TAG) {
22144  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(eventType, xpp, owner, res))
22145        unknownContent(xpp);
22146      eventType = nextNoWhitespace(xpp);
22147    }
22148    next(xpp);
22149    parseElementClose(res);
22150    return res;
22151  }
22152
22153  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22154      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22155        res.setCodeElement(parseString(xpp));
22156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefault")) {
22157        res.setIsDefaultElement(parseBoolean(xpp));
22158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
22159        res.setCompositionalElement(parseBoolean(xpp));
22160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
22161        res.getLanguage().add(parseCode(xpp));
22162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
22163        res.getFilter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(xpp, owner));
22164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
22165        res.getProperty().add(parseCode(xpp));
22166      } else if (!parseBackboneElementContent(eventType, xpp, res))
22167        return false;
22168    return true;
22169  }
22170
22171  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22172    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent();
22173    parseBackboneAttributes(xpp, res);
22174    next(xpp);
22175    int eventType = nextNoWhitespace(xpp);
22176    while (eventType != XmlPullParser.END_TAG) {
22177  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(eventType, xpp, owner, res))
22178        unknownContent(xpp);
22179      eventType = nextNoWhitespace(xpp);
22180    }
22181    next(xpp);
22182    parseElementClose(res);
22183    return res;
22184  }
22185
22186  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22187      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22188        res.setCodeElement(parseCode(xpp));
22189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
22190        res.getOp().add(parseCode(xpp));
22191      } else if (!parseBackboneElementContent(eventType, xpp, res))
22192        return false;
22193    return true;
22194  }
22195
22196  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22197    TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent();
22198    parseBackboneAttributes(xpp, res);
22199    next(xpp);
22200    int eventType = nextNoWhitespace(xpp);
22201    while (eventType != XmlPullParser.END_TAG) {
22202  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(eventType, xpp, owner, res))
22203        unknownContent(xpp);
22204      eventType = nextNoWhitespace(xpp);
22205    }
22206    next(xpp);
22207    parseElementClose(res);
22208    return res;
22209  }
22210
22211  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22212      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchical")) {
22213        res.setHierarchicalElement(parseBoolean(xpp));
22214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paging")) {
22215        res.setPagingElement(parseBoolean(xpp));
22216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomplete")) {
22217        res.setIncompleteElement(parseBoolean(xpp));
22218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
22219        res.getParameter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(xpp, owner));
22220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textFilter")) {
22221        res.setTextFilterElement(parseMarkdown(xpp));
22222      } else if (!parseBackboneElementContent(eventType, xpp, res))
22223        return false;
22224    return true;
22225  }
22226
22227  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22228    TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent();
22229    parseBackboneAttributes(xpp, res);
22230    next(xpp);
22231    int eventType = nextNoWhitespace(xpp);
22232    while (eventType != XmlPullParser.END_TAG) {
22233  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentContent(eventType, xpp, owner, res))
22234        unknownContent(xpp);
22235      eventType = nextNoWhitespace(xpp);
22236    }
22237    next(xpp);
22238    parseElementClose(res);
22239    return res;
22240  }
22241
22242  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22243      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22244        res.setNameElement(parseCode(xpp));
22245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
22246        res.setDocumentationElement(parseString(xpp));
22247      } else if (!parseBackboneElementContent(eventType, xpp, res))
22248        return false;
22249    return true;
22250  }
22251
22252  protected TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22253    TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res = new TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent();
22254    parseBackboneAttributes(xpp, res);
22255    next(xpp);
22256    int eventType = nextNoWhitespace(xpp);
22257    while (eventType != XmlPullParser.END_TAG) {
22258  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(eventType, xpp, owner, res))
22259        unknownContent(xpp);
22260      eventType = nextNoWhitespace(xpp);
22261    }
22262    next(xpp);
22263    parseElementClose(res);
22264    return res;
22265  }
22266
22267  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22268      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translations")) {
22269        res.setTranslationsElement(parseBoolean(xpp));
22270      } else if (!parseBackboneElementContent(eventType, xpp, res))
22271        return false;
22272    return true;
22273  }
22274
22275  protected TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22276    TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent();
22277    parseBackboneAttributes(xpp, res);
22278    next(xpp);
22279    int eventType = nextNoWhitespace(xpp);
22280    while (eventType != XmlPullParser.END_TAG) {
22281  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(eventType, xpp, owner, res))
22282        unknownContent(xpp);
22283      eventType = nextNoWhitespace(xpp);
22284    }
22285    next(xpp);
22286    parseElementClose(res);
22287    return res;
22288  }
22289
22290  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22291      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("needsMap")) {
22292        res.setNeedsMapElement(parseBoolean(xpp));
22293      } else if (!parseBackboneElementContent(eventType, xpp, res))
22294        return false;
22295    return true;
22296  }
22297
22298  protected TerminologyCapabilities.TerminologyCapabilitiesClosureComponent parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22299    TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res = new TerminologyCapabilities.TerminologyCapabilitiesClosureComponent();
22300    parseBackboneAttributes(xpp, res);
22301    next(xpp);
22302    int eventType = nextNoWhitespace(xpp);
22303    while (eventType != XmlPullParser.END_TAG) {
22304  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(eventType, xpp, owner, res))
22305        unknownContent(xpp);
22306      eventType = nextNoWhitespace(xpp);
22307    }
22308    next(xpp);
22309    parseElementClose(res);
22310    return res;
22311  }
22312
22313  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22314      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
22315        res.setTranslationElement(parseBoolean(xpp));
22316      } else if (!parseBackboneElementContent(eventType, xpp, res))
22317        return false;
22318    return true;
22319  }
22320
22321  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22322    TestReport res = new TestReport();
22323    parseDomainResourceAttributes(xpp, res);
22324    next(xpp);
22325    int eventType = nextNoWhitespace(xpp);
22326    while (eventType != XmlPullParser.END_TAG) {
22327  if (!parseTestReportContent(eventType, xpp, res))
22328        unknownContent(xpp);
22329      eventType = nextNoWhitespace(xpp);
22330    }
22331    next(xpp);
22332    parseElementClose(res);
22333    return res;
22334  }
22335
22336  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
22337      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22338        res.setIdentifier(parseIdentifier(xpp));
22339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22340        res.setNameElement(parseString(xpp));
22341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22342        res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
22343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
22344        res.setTestScript(parseReference(xpp));
22345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22346        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
22347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
22348        res.setScoreElement(parseDecimal(xpp));
22349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
22350        res.setTesterElement(parseString(xpp));
22351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
22352        res.setIssuedElement(parseDateTime(xpp));
22353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
22354        res.getParticipant().add(parseTestReportTestReportParticipantComponent(xpp, res));
22355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
22356        res.setSetup(parseTestReportTestReportSetupComponent(xpp, res));
22357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
22358        res.getTest().add(parseTestReportTestReportTestComponent(xpp, res));
22359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
22360        res.setTeardown(parseTestReportTestReportTeardownComponent(xpp, res));
22361      } else if (!parseDomainResourceContent(eventType, xpp, res))
22362        return false;
22363    return true;
22364  }
22365
22366  protected TestReport.TestReportParticipantComponent parseTestReportTestReportParticipantComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22367    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
22368    parseBackboneAttributes(xpp, res);
22369    next(xpp);
22370    int eventType = nextNoWhitespace(xpp);
22371    while (eventType != XmlPullParser.END_TAG) {
22372  if (!parseTestReportTestReportParticipantComponentContent(eventType, xpp, owner, res))
22373        unknownContent(xpp);
22374      eventType = nextNoWhitespace(xpp);
22375    }
22376    next(xpp);
22377    parseElementClose(res);
22378    return res;
22379  }
22380
22381  protected boolean parseTestReportTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22382      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22383        res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
22384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
22385        res.setUriElement(parseUri(xpp));
22386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
22387        res.setDisplayElement(parseString(xpp));
22388      } else if (!parseBackboneElementContent(eventType, xpp, res))
22389        return false;
22390    return true;
22391  }
22392
22393  protected TestReport.TestReportSetupComponent parseTestReportTestReportSetupComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22394    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
22395    parseBackboneAttributes(xpp, res);
22396    next(xpp);
22397    int eventType = nextNoWhitespace(xpp);
22398    while (eventType != XmlPullParser.END_TAG) {
22399  if (!parseTestReportTestReportSetupComponentContent(eventType, xpp, owner, res))
22400        unknownContent(xpp);
22401      eventType = nextNoWhitespace(xpp);
22402    }
22403    next(xpp);
22404    parseElementClose(res);
22405    return res;
22406  }
22407
22408  protected boolean parseTestReportTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22410        res.getAction().add(parseTestReportSetupActionComponent(xpp, owner));
22411      } else if (!parseBackboneElementContent(eventType, xpp, res))
22412        return false;
22413    return true;
22414  }
22415
22416  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22417    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
22418    parseBackboneAttributes(xpp, res);
22419    next(xpp);
22420    int eventType = nextNoWhitespace(xpp);
22421    while (eventType != XmlPullParser.END_TAG) {
22422  if (!parseTestReportSetupActionComponentContent(eventType, xpp, owner, res))
22423        unknownContent(xpp);
22424      eventType = nextNoWhitespace(xpp);
22425    }
22426    next(xpp);
22427    parseElementClose(res);
22428    return res;
22429  }
22430
22431  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22432      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22433        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22435        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
22436      } else if (!parseBackboneElementContent(eventType, xpp, res))
22437        return false;
22438    return true;
22439  }
22440
22441  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22442    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
22443    parseBackboneAttributes(xpp, res);
22444    next(xpp);
22445    int eventType = nextNoWhitespace(xpp);
22446    while (eventType != XmlPullParser.END_TAG) {
22447  if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, owner, res))
22448        unknownContent(xpp);
22449      eventType = nextNoWhitespace(xpp);
22450    }
22451    next(xpp);
22452    parseElementClose(res);
22453    return res;
22454  }
22455
22456  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22457      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22458        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
22459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
22460        res.setMessageElement(parseMarkdown(xpp));
22461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
22462        res.setDetailElement(parseUri(xpp));
22463      } else if (!parseBackboneElementContent(eventType, xpp, res))
22464        return false;
22465    return true;
22466  }
22467
22468  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22469    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
22470    parseBackboneAttributes(xpp, res);
22471    next(xpp);
22472    int eventType = nextNoWhitespace(xpp);
22473    while (eventType != XmlPullParser.END_TAG) {
22474  if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, owner, res))
22475        unknownContent(xpp);
22476      eventType = nextNoWhitespace(xpp);
22477    }
22478    next(xpp);
22479    parseElementClose(res);
22480    return res;
22481  }
22482
22483  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22484      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22485        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
22486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
22487        res.setMessageElement(parseMarkdown(xpp));
22488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
22489        res.setDetailElement(parseString(xpp));
22490      } else if (!parseBackboneElementContent(eventType, xpp, res))
22491        return false;
22492    return true;
22493  }
22494
22495  protected TestReport.TestReportTestComponent parseTestReportTestReportTestComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22496    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
22497    parseBackboneAttributes(xpp, res);
22498    next(xpp);
22499    int eventType = nextNoWhitespace(xpp);
22500    while (eventType != XmlPullParser.END_TAG) {
22501  if (!parseTestReportTestReportTestComponentContent(eventType, xpp, owner, res))
22502        unknownContent(xpp);
22503      eventType = nextNoWhitespace(xpp);
22504    }
22505    next(xpp);
22506    parseElementClose(res);
22507    return res;
22508  }
22509
22510  protected boolean parseTestReportTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22511      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22512        res.setNameElement(parseString(xpp));
22513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22514        res.setDescriptionElement(parseString(xpp));
22515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22516        res.getAction().add(parseTestReportTestActionComponent(xpp, owner));
22517      } else if (!parseBackboneElementContent(eventType, xpp, res))
22518        return false;
22519    return true;
22520  }
22521
22522  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22523    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
22524    parseBackboneAttributes(xpp, res);
22525    next(xpp);
22526    int eventType = nextNoWhitespace(xpp);
22527    while (eventType != XmlPullParser.END_TAG) {
22528  if (!parseTestReportTestActionComponentContent(eventType, xpp, owner, res))
22529        unknownContent(xpp);
22530      eventType = nextNoWhitespace(xpp);
22531    }
22532    next(xpp);
22533    parseElementClose(res);
22534    return res;
22535  }
22536
22537  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22538      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22539        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22541        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
22542      } else if (!parseBackboneElementContent(eventType, xpp, res))
22543        return false;
22544    return true;
22545  }
22546
22547  protected TestReport.TestReportTeardownComponent parseTestReportTestReportTeardownComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22548    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
22549    parseBackboneAttributes(xpp, res);
22550    next(xpp);
22551    int eventType = nextNoWhitespace(xpp);
22552    while (eventType != XmlPullParser.END_TAG) {
22553  if (!parseTestReportTestReportTeardownComponentContent(eventType, xpp, owner, res))
22554        unknownContent(xpp);
22555      eventType = nextNoWhitespace(xpp);
22556    }
22557    next(xpp);
22558    parseElementClose(res);
22559    return res;
22560  }
22561
22562  protected boolean parseTestReportTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22564        res.getAction().add(parseTestReportTeardownActionComponent(xpp, owner));
22565      } else if (!parseBackboneElementContent(eventType, xpp, res))
22566        return false;
22567    return true;
22568  }
22569
22570  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22571    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
22572    parseBackboneAttributes(xpp, res);
22573    next(xpp);
22574    int eventType = nextNoWhitespace(xpp);
22575    while (eventType != XmlPullParser.END_TAG) {
22576  if (!parseTestReportTeardownActionComponentContent(eventType, xpp, owner, res))
22577        unknownContent(xpp);
22578      eventType = nextNoWhitespace(xpp);
22579    }
22580    next(xpp);
22581    parseElementClose(res);
22582    return res;
22583  }
22584
22585  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22586      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22587        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22588      } else if (!parseBackboneElementContent(eventType, xpp, res))
22589        return false;
22590    return true;
22591  }
22592
22593  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22594    TestScript res = new TestScript();
22595    parseDomainResourceAttributes(xpp, res);
22596    next(xpp);
22597    int eventType = nextNoWhitespace(xpp);
22598    while (eventType != XmlPullParser.END_TAG) {
22599  if (!parseTestScriptContent(eventType, xpp, res))
22600        unknownContent(xpp);
22601      eventType = nextNoWhitespace(xpp);
22602    }
22603    next(xpp);
22604    parseElementClose(res);
22605    return res;
22606  }
22607
22608  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
22609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22610        res.setUrlElement(parseUri(xpp));
22611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22612        res.setIdentifier(parseIdentifier(xpp));
22613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22614        res.setVersionElement(parseString(xpp));
22615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22616        res.setNameElement(parseString(xpp));
22617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22618        res.setTitleElement(parseString(xpp));
22619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22620        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22622        res.setExperimentalElement(parseBoolean(xpp));
22623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22624        res.setDateElement(parseDateTime(xpp));
22625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22626        res.setPublisherElement(parseString(xpp));
22627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22628        res.getContact().add(parseContactDetail(xpp));
22629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22630        res.setDescriptionElement(parseMarkdown(xpp));
22631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22632        res.getUseContext().add(parseUsageContext(xpp));
22633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22634        res.getJurisdiction().add(parseCodeableConcept(xpp));
22635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22636        res.setPurposeElement(parseMarkdown(xpp));
22637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22638        res.setCopyrightElement(parseMarkdown(xpp));
22639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22640        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
22641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22642        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
22643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
22644        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
22645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
22646        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
22647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22648        res.getProfile().add(parseReference(xpp));
22649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
22650        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
22651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
22652        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
22653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
22654        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
22655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
22656        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
22657      } else if (!parseDomainResourceContent(eventType, xpp, res))
22658        return false;
22659    return true;
22660  }
22661
22662  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22663    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
22664    parseBackboneAttributes(xpp, res);
22665    next(xpp);
22666    int eventType = nextNoWhitespace(xpp);
22667    while (eventType != XmlPullParser.END_TAG) {
22668  if (!parseTestScriptTestScriptOriginComponentContent(eventType, xpp, owner, res))
22669        unknownContent(xpp);
22670      eventType = nextNoWhitespace(xpp);
22671    }
22672    next(xpp);
22673    parseElementClose(res);
22674    return res;
22675  }
22676
22677  protected boolean parseTestScriptTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22678      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
22679        res.setIndexElement(parseInteger(xpp));
22680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22681        res.setProfile(parseCoding(xpp));
22682      } else if (!parseBackboneElementContent(eventType, xpp, res))
22683        return false;
22684    return true;
22685  }
22686
22687  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22688    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
22689    parseBackboneAttributes(xpp, res);
22690    next(xpp);
22691    int eventType = nextNoWhitespace(xpp);
22692    while (eventType != XmlPullParser.END_TAG) {
22693  if (!parseTestScriptTestScriptDestinationComponentContent(eventType, xpp, owner, res))
22694        unknownContent(xpp);
22695      eventType = nextNoWhitespace(xpp);
22696    }
22697    next(xpp);
22698    parseElementClose(res);
22699    return res;
22700  }
22701
22702  protected boolean parseTestScriptTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22703      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
22704        res.setIndexElement(parseInteger(xpp));
22705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22706        res.setProfile(parseCoding(xpp));
22707      } else if (!parseBackboneElementContent(eventType, xpp, res))
22708        return false;
22709    return true;
22710  }
22711
22712  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22713    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
22714    parseBackboneAttributes(xpp, res);
22715    next(xpp);
22716    int eventType = nextNoWhitespace(xpp);
22717    while (eventType != XmlPullParser.END_TAG) {
22718  if (!parseTestScriptTestScriptMetadataComponentContent(eventType, xpp, owner, res))
22719        unknownContent(xpp);
22720      eventType = nextNoWhitespace(xpp);
22721    }
22722    next(xpp);
22723    parseElementClose(res);
22724    return res;
22725  }
22726
22727  protected boolean parseTestScriptTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
22729        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
22730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
22731        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
22732      } else if (!parseBackboneElementContent(eventType, xpp, res))
22733        return false;
22734    return true;
22735  }
22736
22737  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22738    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
22739    parseBackboneAttributes(xpp, res);
22740    next(xpp);
22741    int eventType = nextNoWhitespace(xpp);
22742    while (eventType != XmlPullParser.END_TAG) {
22743  if (!parseTestScriptTestScriptMetadataLinkComponentContent(eventType, xpp, owner, res))
22744        unknownContent(xpp);
22745      eventType = nextNoWhitespace(xpp);
22746    }
22747    next(xpp);
22748    parseElementClose(res);
22749    return res;
22750  }
22751
22752  protected boolean parseTestScriptTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22753      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22754        res.setUrlElement(parseUri(xpp));
22755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22756        res.setDescriptionElement(parseString(xpp));
22757      } else if (!parseBackboneElementContent(eventType, xpp, res))
22758        return false;
22759    return true;
22760  }
22761
22762  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22763    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
22764    parseBackboneAttributes(xpp, res);
22765    next(xpp);
22766    int eventType = nextNoWhitespace(xpp);
22767    while (eventType != XmlPullParser.END_TAG) {
22768  if (!parseTestScriptTestScriptMetadataCapabilityComponentContent(eventType, xpp, owner, res))
22769        unknownContent(xpp);
22770      eventType = nextNoWhitespace(xpp);
22771    }
22772    next(xpp);
22773    parseElementClose(res);
22774    return res;
22775  }
22776
22777  protected boolean parseTestScriptTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
22779        res.setRequiredElement(parseBoolean(xpp));
22780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
22781        res.setValidatedElement(parseBoolean(xpp));
22782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22783        res.setDescriptionElement(parseString(xpp));
22784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22785        res.getOrigin().add(parseInteger(xpp));
22786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22787        res.setDestinationElement(parseInteger(xpp));
22788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
22789        res.getLink().add(parseUri(xpp));
22790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
22791        res.setCapabilitiesElement(parseCanonical(xpp));
22792      } else if (!parseBackboneElementContent(eventType, xpp, res))
22793        return false;
22794    return true;
22795  }
22796
22797  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22798    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
22799    parseBackboneAttributes(xpp, res);
22800    next(xpp);
22801    int eventType = nextNoWhitespace(xpp);
22802    while (eventType != XmlPullParser.END_TAG) {
22803  if (!parseTestScriptTestScriptFixtureComponentContent(eventType, xpp, owner, res))
22804        unknownContent(xpp);
22805      eventType = nextNoWhitespace(xpp);
22806    }
22807    next(xpp);
22808    parseElementClose(res);
22809    return res;
22810  }
22811
22812  protected boolean parseTestScriptTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22813      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
22814        res.setAutocreateElement(parseBoolean(xpp));
22815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
22816        res.setAutodeleteElement(parseBoolean(xpp));
22817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22818        res.setResource(parseReference(xpp));
22819      } else if (!parseBackboneElementContent(eventType, xpp, res))
22820        return false;
22821    return true;
22822  }
22823
22824  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22825    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
22826    parseBackboneAttributes(xpp, res);
22827    next(xpp);
22828    int eventType = nextNoWhitespace(xpp);
22829    while (eventType != XmlPullParser.END_TAG) {
22830  if (!parseTestScriptTestScriptVariableComponentContent(eventType, xpp, owner, res))
22831        unknownContent(xpp);
22832      eventType = nextNoWhitespace(xpp);
22833    }
22834    next(xpp);
22835    parseElementClose(res);
22836    return res;
22837  }
22838
22839  protected boolean parseTestScriptTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22840      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22841        res.setNameElement(parseString(xpp));
22842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
22843        res.setDefaultValueElement(parseString(xpp));
22844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22845        res.setDescriptionElement(parseString(xpp));
22846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
22847        res.setExpressionElement(parseString(xpp));
22848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
22849        res.setHeaderFieldElement(parseString(xpp));
22850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
22851        res.setHintElement(parseString(xpp));
22852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
22853        res.setPathElement(parseString(xpp));
22854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
22855        res.setSourceIdElement(parseId(xpp));
22856      } else if (!parseBackboneElementContent(eventType, xpp, res))
22857        return false;
22858    return true;
22859  }
22860
22861  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22862    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
22863    parseBackboneAttributes(xpp, res);
22864    next(xpp);
22865    int eventType = nextNoWhitespace(xpp);
22866    while (eventType != XmlPullParser.END_TAG) {
22867  if (!parseTestScriptTestScriptSetupComponentContent(eventType, xpp, owner, res))
22868        unknownContent(xpp);
22869      eventType = nextNoWhitespace(xpp);
22870    }
22871    next(xpp);
22872    parseElementClose(res);
22873    return res;
22874  }
22875
22876  protected boolean parseTestScriptTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22877      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22878        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
22879      } else if (!parseBackboneElementContent(eventType, xpp, res))
22880        return false;
22881    return true;
22882  }
22883
22884  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22885    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
22886    parseBackboneAttributes(xpp, res);
22887    next(xpp);
22888    int eventType = nextNoWhitespace(xpp);
22889    while (eventType != XmlPullParser.END_TAG) {
22890  if (!parseTestScriptSetupActionComponentContent(eventType, xpp, owner, res))
22891        unknownContent(xpp);
22892      eventType = nextNoWhitespace(xpp);
22893    }
22894    next(xpp);
22895    parseElementClose(res);
22896    return res;
22897  }
22898
22899  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22900      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22901        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
22902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22903        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
22904      } else if (!parseBackboneElementContent(eventType, xpp, res))
22905        return false;
22906    return true;
22907  }
22908
22909  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22910    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
22911    parseBackboneAttributes(xpp, res);
22912    next(xpp);
22913    int eventType = nextNoWhitespace(xpp);
22914    while (eventType != XmlPullParser.END_TAG) {
22915  if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, owner, res))
22916        unknownContent(xpp);
22917      eventType = nextNoWhitespace(xpp);
22918    }
22919    next(xpp);
22920    parseElementClose(res);
22921    return res;
22922  }
22923
22924  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22925      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22926        res.setType(parseCoding(xpp));
22927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22928        res.setResourceElement(parseCode(xpp));
22929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
22930        res.setLabelElement(parseString(xpp));
22931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22932        res.setDescriptionElement(parseString(xpp));
22933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
22934        res.setAcceptElement(parseCode(xpp));
22935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
22936        res.setContentTypeElement(parseCode(xpp));
22937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22938        res.setDestinationElement(parseInteger(xpp));
22939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
22940        res.setEncodeRequestUrlElement(parseBoolean(xpp));
22941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
22942        res.setMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
22943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22944        res.setOriginElement(parseInteger(xpp));
22945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
22946        res.setParamsElement(parseString(xpp));
22947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
22948        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
22949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
22950        res.setRequestIdElement(parseId(xpp));
22951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
22952        res.setResponseIdElement(parseId(xpp));
22953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
22954        res.setSourceIdElement(parseId(xpp));
22955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
22956        res.setTargetIdElement(parseId(xpp));
22957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22958        res.setUrlElement(parseString(xpp));
22959      } else if (!parseBackboneElementContent(eventType, xpp, res))
22960        return false;
22961    return true;
22962  }
22963
22964  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22965    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
22966    parseBackboneAttributes(xpp, res);
22967    next(xpp);
22968    int eventType = nextNoWhitespace(xpp);
22969    while (eventType != XmlPullParser.END_TAG) {
22970  if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, owner, res))
22971        unknownContent(xpp);
22972      eventType = nextNoWhitespace(xpp);
22973    }
22974    next(xpp);
22975    parseElementClose(res);
22976    return res;
22977  }
22978
22979  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22980      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
22981        res.setFieldElement(parseString(xpp));
22982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22983        res.setValueElement(parseString(xpp));
22984      } else if (!parseBackboneElementContent(eventType, xpp, res))
22985        return false;
22986    return true;
22987  }
22988
22989  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22990    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
22991    parseBackboneAttributes(xpp, res);
22992    next(xpp);
22993    int eventType = nextNoWhitespace(xpp);
22994    while (eventType != XmlPullParser.END_TAG) {
22995  if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, owner, res))
22996        unknownContent(xpp);
22997      eventType = nextNoWhitespace(xpp);
22998    }
22999    next(xpp);
23000    parseElementClose(res);
23001    return res;
23002  }
23003
23004  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23005      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
23006        res.setLabelElement(parseString(xpp));
23007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23008        res.setDescriptionElement(parseString(xpp));
23009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
23010        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
23011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
23012        res.setCompareToSourceIdElement(parseString(xpp));
23013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
23014        res.setCompareToSourceExpressionElement(parseString(xpp));
23015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
23016        res.setCompareToSourcePathElement(parseString(xpp));
23017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
23018        res.setContentTypeElement(parseCode(xpp));
23019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
23020        res.setExpressionElement(parseString(xpp));
23021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
23022        res.setHeaderFieldElement(parseString(xpp));
23023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
23024        res.setMinimumIdElement(parseString(xpp));
23025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
23026        res.setNavigationLinksElement(parseBoolean(xpp));
23027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
23028        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
23029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
23030        res.setPathElement(parseString(xpp));
23031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
23032        res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
23033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
23034        res.setRequestURLElement(parseString(xpp));
23035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
23036        res.setResourceElement(parseCode(xpp));
23037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
23038        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
23039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
23040        res.setResponseCodeElement(parseString(xpp));
23041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
23042        res.setSourceIdElement(parseId(xpp));
23043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
23044        res.setValidateProfileIdElement(parseId(xpp));
23045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23046        res.setValueElement(parseString(xpp));
23047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
23048        res.setWarningOnlyElement(parseBoolean(xpp));
23049      } else if (!parseBackboneElementContent(eventType, xpp, res))
23050        return false;
23051    return true;
23052  }
23053
23054  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23055    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
23056    parseBackboneAttributes(xpp, res);
23057    next(xpp);
23058    int eventType = nextNoWhitespace(xpp);
23059    while (eventType != XmlPullParser.END_TAG) {
23060  if (!parseTestScriptTestScriptTestComponentContent(eventType, xpp, owner, res))
23061        unknownContent(xpp);
23062      eventType = nextNoWhitespace(xpp);
23063    }
23064    next(xpp);
23065    parseElementClose(res);
23066    return res;
23067  }
23068
23069  protected boolean parseTestScriptTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23070      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23071        res.setNameElement(parseString(xpp));
23072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23073        res.setDescriptionElement(parseString(xpp));
23074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23075        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
23076      } else if (!parseBackboneElementContent(eventType, xpp, res))
23077        return false;
23078    return true;
23079  }
23080
23081  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23082    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
23083    parseBackboneAttributes(xpp, res);
23084    next(xpp);
23085    int eventType = nextNoWhitespace(xpp);
23086    while (eventType != XmlPullParser.END_TAG) {
23087  if (!parseTestScriptTestActionComponentContent(eventType, xpp, owner, res))
23088        unknownContent(xpp);
23089      eventType = nextNoWhitespace(xpp);
23090    }
23091    next(xpp);
23092    parseElementClose(res);
23093    return res;
23094  }
23095
23096  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23098        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
23099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
23100        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
23101      } else if (!parseBackboneElementContent(eventType, xpp, res))
23102        return false;
23103    return true;
23104  }
23105
23106  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23107    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
23108    parseBackboneAttributes(xpp, res);
23109    next(xpp);
23110    int eventType = nextNoWhitespace(xpp);
23111    while (eventType != XmlPullParser.END_TAG) {
23112  if (!parseTestScriptTestScriptTeardownComponentContent(eventType, xpp, owner, res))
23113        unknownContent(xpp);
23114      eventType = nextNoWhitespace(xpp);
23115    }
23116    next(xpp);
23117    parseElementClose(res);
23118    return res;
23119  }
23120
23121  protected boolean parseTestScriptTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23122      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23123        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
23124      } else if (!parseBackboneElementContent(eventType, xpp, res))
23125        return false;
23126    return true;
23127  }
23128
23129  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23130    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
23131    parseBackboneAttributes(xpp, res);
23132    next(xpp);
23133    int eventType = nextNoWhitespace(xpp);
23134    while (eventType != XmlPullParser.END_TAG) {
23135  if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, owner, res))
23136        unknownContent(xpp);
23137      eventType = nextNoWhitespace(xpp);
23138    }
23139    next(xpp);
23140    parseElementClose(res);
23141    return res;
23142  }
23143
23144  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23145      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23146        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
23147      } else if (!parseBackboneElementContent(eventType, xpp, res))
23148        return false;
23149    return true;
23150  }
23151
23152  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23153    ValueSet res = new ValueSet();
23154    parseDomainResourceAttributes(xpp, res);
23155    next(xpp);
23156    int eventType = nextNoWhitespace(xpp);
23157    while (eventType != XmlPullParser.END_TAG) {
23158  if (!parseValueSetContent(eventType, xpp, res))
23159        unknownContent(xpp);
23160      eventType = nextNoWhitespace(xpp);
23161    }
23162    next(xpp);
23163    parseElementClose(res);
23164    return res;
23165  }
23166
23167  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
23168      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
23169        res.setUrlElement(parseUri(xpp));
23170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23171        res.getIdentifier().add(parseIdentifier(xpp));
23172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23173        res.setVersionElement(parseString(xpp));
23174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23175        res.setNameElement(parseString(xpp));
23176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
23177        res.setTitleElement(parseString(xpp));
23178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23179        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
23180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
23181        res.setExperimentalElement(parseBoolean(xpp));
23182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23183        res.setDateElement(parseDateTime(xpp));
23184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
23185        res.setPublisherElement(parseString(xpp));
23186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
23187        res.getContact().add(parseContactDetail(xpp));
23188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23189        res.setDescriptionElement(parseMarkdown(xpp));
23190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
23191        res.getUseContext().add(parseUsageContext(xpp));
23192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
23193        res.getJurisdiction().add(parseCodeableConcept(xpp));
23194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
23195        res.setImmutableElement(parseBoolean(xpp));
23196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
23197        res.setPurposeElement(parseMarkdown(xpp));
23198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
23199        res.setCopyrightElement(parseMarkdown(xpp));
23200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
23201        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
23202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
23203        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
23204      } else if (!parseDomainResourceContent(eventType, xpp, res))
23205        return false;
23206    return true;
23207  }
23208
23209  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23210    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
23211    parseBackboneAttributes(xpp, res);
23212    next(xpp);
23213    int eventType = nextNoWhitespace(xpp);
23214    while (eventType != XmlPullParser.END_TAG) {
23215  if (!parseValueSetValueSetComposeComponentContent(eventType, xpp, owner, res))
23216        unknownContent(xpp);
23217      eventType = nextNoWhitespace(xpp);
23218    }
23219    next(xpp);
23220    parseElementClose(res);
23221    return res;
23222  }
23223
23224  protected boolean parseValueSetValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23225      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
23226        res.setLockedDateElement(parseDate(xpp));
23227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
23228        res.setInactiveElement(parseBoolean(xpp));
23229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
23230        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
23231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
23232        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
23233      } else if (!parseBackboneElementContent(eventType, xpp, res))
23234        return false;
23235    return true;
23236  }
23237
23238  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23239    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
23240    parseBackboneAttributes(xpp, res);
23241    next(xpp);
23242    int eventType = nextNoWhitespace(xpp);
23243    while (eventType != XmlPullParser.END_TAG) {
23244  if (!parseValueSetConceptSetComponentContent(eventType, xpp, owner, res))
23245        unknownContent(xpp);
23246      eventType = nextNoWhitespace(xpp);
23247    }
23248    next(xpp);
23249    parseElementClose(res);
23250    return res;
23251  }
23252
23253  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23254      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
23255        res.setSystemElement(parseUri(xpp));
23256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23257        res.setVersionElement(parseString(xpp));
23258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
23259        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
23260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
23261        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
23262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
23263        res.getValueSet().add(parseCanonical(xpp));
23264      } else if (!parseBackboneElementContent(eventType, xpp, res))
23265        return false;
23266    return true;
23267  }
23268
23269  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23270    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
23271    parseBackboneAttributes(xpp, res);
23272    next(xpp);
23273    int eventType = nextNoWhitespace(xpp);
23274    while (eventType != XmlPullParser.END_TAG) {
23275  if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, owner, res))
23276        unknownContent(xpp);
23277      eventType = nextNoWhitespace(xpp);
23278    }
23279    next(xpp);
23280    parseElementClose(res);
23281    return res;
23282  }
23283
23284  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23286        res.setCodeElement(parseCode(xpp));
23287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
23288        res.setDisplayElement(parseString(xpp));
23289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
23290        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
23291      } else if (!parseBackboneElementContent(eventType, xpp, res))
23292        return false;
23293    return true;
23294  }
23295
23296  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23297    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
23298    parseBackboneAttributes(xpp, res);
23299    next(xpp);
23300    int eventType = nextNoWhitespace(xpp);
23301    while (eventType != XmlPullParser.END_TAG) {
23302  if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, owner, res))
23303        unknownContent(xpp);
23304      eventType = nextNoWhitespace(xpp);
23305    }
23306    next(xpp);
23307    parseElementClose(res);
23308    return res;
23309  }
23310
23311  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
23313        res.setLanguageElement(parseCode(xpp));
23314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
23315        res.setUse(parseCoding(xpp));
23316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23317        res.setValueElement(parseString(xpp));
23318      } else if (!parseBackboneElementContent(eventType, xpp, res))
23319        return false;
23320    return true;
23321  }
23322
23323  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23324    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
23325    parseBackboneAttributes(xpp, res);
23326    next(xpp);
23327    int eventType = nextNoWhitespace(xpp);
23328    while (eventType != XmlPullParser.END_TAG) {
23329  if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, owner, res))
23330        unknownContent(xpp);
23331      eventType = nextNoWhitespace(xpp);
23332    }
23333    next(xpp);
23334    parseElementClose(res);
23335    return res;
23336  }
23337
23338  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
23340        res.setPropertyElement(parseCode(xpp));
23341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
23342        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
23343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23344        res.setValueElement(parseString(xpp));
23345      } else if (!parseBackboneElementContent(eventType, xpp, res))
23346        return false;
23347    return true;
23348  }
23349
23350  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23351    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
23352    parseBackboneAttributes(xpp, res);
23353    next(xpp);
23354    int eventType = nextNoWhitespace(xpp);
23355    while (eventType != XmlPullParser.END_TAG) {
23356  if (!parseValueSetValueSetExpansionComponentContent(eventType, xpp, owner, res))
23357        unknownContent(xpp);
23358      eventType = nextNoWhitespace(xpp);
23359    }
23360    next(xpp);
23361    parseElementClose(res);
23362    return res;
23363  }
23364
23365  protected boolean parseValueSetValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23366      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23367        res.setIdentifierElement(parseUri(xpp));
23368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
23369        res.setTimestampElement(parseDateTime(xpp));
23370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
23371        res.setTotalElement(parseInteger(xpp));
23372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
23373        res.setOffsetElement(parseInteger(xpp));
23374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
23375        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
23376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
23377        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
23378      } else if (!parseBackboneElementContent(eventType, xpp, res))
23379        return false;
23380    return true;
23381  }
23382
23383  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23384    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
23385    parseBackboneAttributes(xpp, res);
23386    next(xpp);
23387    int eventType = nextNoWhitespace(xpp);
23388    while (eventType != XmlPullParser.END_TAG) {
23389  if (!parseValueSetValueSetExpansionParameterComponentContent(eventType, xpp, owner, res))
23390        unknownContent(xpp);
23391      eventType = nextNoWhitespace(xpp);
23392    }
23393    next(xpp);
23394    parseElementClose(res);
23395    return res;
23396  }
23397
23398  protected boolean parseValueSetValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23399      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23400        res.setNameElement(parseString(xpp));
23401      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
23402        res.setValue(parseType("value", xpp));
23403      } else if (!parseBackboneElementContent(eventType, xpp, res))
23404        return false;
23405    return true;
23406  }
23407
23408  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23409    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
23410    parseBackboneAttributes(xpp, res);
23411    next(xpp);
23412    int eventType = nextNoWhitespace(xpp);
23413    while (eventType != XmlPullParser.END_TAG) {
23414  if (!parseValueSetValueSetExpansionContainsComponentContent(eventType, xpp, owner, res))
23415        unknownContent(xpp);
23416      eventType = nextNoWhitespace(xpp);
23417    }
23418    next(xpp);
23419    parseElementClose(res);
23420    return res;
23421  }
23422
23423  protected boolean parseValueSetValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23424      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
23425        res.setSystemElement(parseUri(xpp));
23426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
23427        res.setAbstractElement(parseBoolean(xpp));
23428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
23429        res.setInactiveElement(parseBoolean(xpp));
23430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23431        res.setVersionElement(parseString(xpp));
23432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23433        res.setCodeElement(parseCode(xpp));
23434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
23435        res.setDisplayElement(parseString(xpp));
23436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
23437        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
23438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
23439        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
23440      } else if (!parseBackboneElementContent(eventType, xpp, res))
23441        return false;
23442    return true;
23443  }
23444
23445  protected VerificationResult parseVerificationResult(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23446    VerificationResult res = new VerificationResult();
23447    parseDomainResourceAttributes(xpp, res);
23448    next(xpp);
23449    int eventType = nextNoWhitespace(xpp);
23450    while (eventType != XmlPullParser.END_TAG) {
23451  if (!parseVerificationResultContent(eventType, xpp, res))
23452        unknownContent(xpp);
23453      eventType = nextNoWhitespace(xpp);
23454    }
23455    next(xpp);
23456    parseElementClose(res);
23457    return res;
23458  }
23459
23460  protected boolean parseVerificationResultContent(int eventType, XmlPullParser xpp, VerificationResult res) throws XmlPullParserException, IOException, FHIRFormatError {
23461      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
23462        res.getTarget().add(parseReference(xpp));
23463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetLocation")) {
23464        res.getTargetLocation().add(parseString(xpp));
23465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("need")) {
23466        res.setNeed(parseCodeableConcept(xpp));
23467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23468        res.setStatusElement(parseEnumeration(xpp, VerificationResult.Status.NULL, new VerificationResult.StatusEnumFactory()));
23469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
23470        res.setStatusDateElement(parseDateTime(xpp));
23471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationType")) {
23472        res.setValidationType(parseCodeableConcept(xpp));
23473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
23474        res.getValidationProcess().add(parseCodeableConcept(xpp));
23475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
23476        res.setFrequency(parseTiming(xpp));
23477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPerformed")) {
23478        res.setLastPerformedElement(parseDateTime(xpp));
23479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nextScheduled")) {
23480        res.setNextScheduledElement(parseDate(xpp));
23481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("failureAction")) {
23482        res.setFailureAction(parseCodeableConcept(xpp));
23483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
23484        res.getPrimarySource().add(parseVerificationResultVerificationResultPrimarySourceComponent(xpp, res));
23485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestation")) {
23486        res.setAttestation(parseVerificationResultVerificationResultAttestationComponent(xpp, res));
23487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validator")) {
23488        res.getValidator().add(parseVerificationResultVerificationResultValidatorComponent(xpp, res));
23489      } else if (!parseDomainResourceContent(eventType, xpp, res))
23490        return false;
23491    return true;
23492  }
23493
23494  protected VerificationResult.VerificationResultPrimarySourceComponent parseVerificationResultVerificationResultPrimarySourceComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23495    VerificationResult.VerificationResultPrimarySourceComponent res = new VerificationResult.VerificationResultPrimarySourceComponent();
23496    parseBackboneAttributes(xpp, res);
23497    next(xpp);
23498    int eventType = nextNoWhitespace(xpp);
23499    while (eventType != XmlPullParser.END_TAG) {
23500  if (!parseVerificationResultVerificationResultPrimarySourceComponentContent(eventType, xpp, owner, res))
23501        unknownContent(xpp);
23502      eventType = nextNoWhitespace(xpp);
23503    }
23504    next(xpp);
23505    parseElementClose(res);
23506    return res;
23507  }
23508
23509  protected boolean parseVerificationResultVerificationResultPrimarySourceComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultPrimarySourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23510      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
23511        res.setWho(parseReference(xpp));
23512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23513        res.getType().add(parseCodeableConcept(xpp));
23514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
23515        res.getCommunicationMethod().add(parseCodeableConcept(xpp));
23516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationStatus")) {
23517        res.setValidationStatus(parseCodeableConcept(xpp));
23518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationDate")) {
23519        res.setValidationDateElement(parseDateTime(xpp));
23520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canPushUpdates")) {
23521        res.setCanPushUpdates(parseCodeableConcept(xpp));
23522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pushTypeAvailable")) {
23523        res.getPushTypeAvailable().add(parseCodeableConcept(xpp));
23524      } else if (!parseBackboneElementContent(eventType, xpp, res))
23525        return false;
23526    return true;
23527  }
23528
23529  protected VerificationResult.VerificationResultAttestationComponent parseVerificationResultVerificationResultAttestationComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23530    VerificationResult.VerificationResultAttestationComponent res = new VerificationResult.VerificationResultAttestationComponent();
23531    parseBackboneAttributes(xpp, res);
23532    next(xpp);
23533    int eventType = nextNoWhitespace(xpp);
23534    while (eventType != XmlPullParser.END_TAG) {
23535  if (!parseVerificationResultVerificationResultAttestationComponentContent(eventType, xpp, owner, res))
23536        unknownContent(xpp);
23537      eventType = nextNoWhitespace(xpp);
23538    }
23539    next(xpp);
23540    parseElementClose(res);
23541    return res;
23542  }
23543
23544  protected boolean parseVerificationResultVerificationResultAttestationComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultAttestationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23545      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
23546        res.setWho(parseReference(xpp));
23547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
23548        res.setOnBehalfOf(parseReference(xpp));
23549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
23550        res.setCommunicationMethod(parseCodeableConcept(xpp));
23551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23552        res.setDateElement(parseDate(xpp));
23553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceIdentityCertificate")) {
23554        res.setSourceIdentityCertificateElement(parseString(xpp));
23555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxyIdentityCertificate")) {
23556        res.setProxyIdentityCertificateElement(parseString(xpp));
23557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxySignature")) {
23558        res.setProxySignature(parseSignature(xpp));
23559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceSignature")) {
23560        res.setSourceSignature(parseSignature(xpp));
23561      } else if (!parseBackboneElementContent(eventType, xpp, res))
23562        return false;
23563    return true;
23564  }
23565
23566  protected VerificationResult.VerificationResultValidatorComponent parseVerificationResultVerificationResultValidatorComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23567    VerificationResult.VerificationResultValidatorComponent res = new VerificationResult.VerificationResultValidatorComponent();
23568    parseBackboneAttributes(xpp, res);
23569    next(xpp);
23570    int eventType = nextNoWhitespace(xpp);
23571    while (eventType != XmlPullParser.END_TAG) {
23572  if (!parseVerificationResultVerificationResultValidatorComponentContent(eventType, xpp, owner, res))
23573        unknownContent(xpp);
23574      eventType = nextNoWhitespace(xpp);
23575    }
23576    next(xpp);
23577    parseElementClose(res);
23578    return res;
23579  }
23580
23581  protected boolean parseVerificationResultVerificationResultValidatorComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultValidatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23582      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
23583        res.setOrganization(parseReference(xpp));
23584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identityCertificate")) {
23585        res.setIdentityCertificateElement(parseString(xpp));
23586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestationSignature")) {
23587        res.setAttestationSignature(parseSignature(xpp));
23588      } else if (!parseBackboneElementContent(eventType, xpp, res))
23589        return false;
23590    return true;
23591  }
23592
23593  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23594    VisionPrescription res = new VisionPrescription();
23595    parseDomainResourceAttributes(xpp, res);
23596    next(xpp);
23597    int eventType = nextNoWhitespace(xpp);
23598    while (eventType != XmlPullParser.END_TAG) {
23599  if (!parseVisionPrescriptionContent(eventType, xpp, res))
23600        unknownContent(xpp);
23601      eventType = nextNoWhitespace(xpp);
23602    }
23603    next(xpp);
23604    parseElementClose(res);
23605    return res;
23606  }
23607
23608  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
23609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23610        res.getIdentifier().add(parseIdentifier(xpp));
23611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23612        res.setStatusElement(parseEnumeration(xpp, VisionPrescription.VisionStatus.NULL, new VisionPrescription.VisionStatusEnumFactory()));
23613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
23614        res.setCreatedElement(parseDateTime(xpp));
23615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
23616        res.setPatient(parseReference(xpp));
23617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
23618        res.setEncounter(parseReference(xpp));
23619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
23620        res.setDateWrittenElement(parseDateTime(xpp));
23621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
23622        res.setPrescriber(parseReference(xpp));
23623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lensSpecification")) {
23624        res.getLensSpecification().add(parseVisionPrescriptionVisionPrescriptionLensSpecificationComponent(xpp, res));
23625      } else if (!parseDomainResourceContent(eventType, xpp, res))
23626        return false;
23627    return true;
23628  }
23629
23630  protected VisionPrescription.VisionPrescriptionLensSpecificationComponent parseVisionPrescriptionVisionPrescriptionLensSpecificationComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
23631    VisionPrescription.VisionPrescriptionLensSpecificationComponent res = new VisionPrescription.VisionPrescriptionLensSpecificationComponent();
23632    parseBackboneAttributes(xpp, res);
23633    next(xpp);
23634    int eventType = nextNoWhitespace(xpp);
23635    while (eventType != XmlPullParser.END_TAG) {
23636  if (!parseVisionPrescriptionVisionPrescriptionLensSpecificationComponentContent(eventType, xpp, owner, res))
23637        unknownContent(xpp);
23638      eventType = nextNoWhitespace(xpp);
23639    }
23640    next(xpp);
23641    parseElementClose(res);
23642    return res;
23643  }
23644
23645  protected boolean parseVisionPrescriptionVisionPrescriptionLensSpecificationComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.VisionPrescriptionLensSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23646      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
23647        res.setProduct(parseCodeableConcept(xpp));
23648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
23649        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
23650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
23651        res.setSphereElement(parseDecimal(xpp));
23652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
23653        res.setCylinderElement(parseDecimal(xpp));
23654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
23655        res.setAxisElement(parseInteger(xpp));
23656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
23657        res.getPrism().add(parseVisionPrescriptionPrismComponent(xpp, owner));
23658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
23659        res.setAddElement(parseDecimal(xpp));
23660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
23661        res.setPowerElement(parseDecimal(xpp));
23662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
23663        res.setBackCurveElement(parseDecimal(xpp));
23664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
23665        res.setDiameterElement(parseDecimal(xpp));
23666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
23667        res.setDuration(parseQuantity(xpp));
23668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
23669        res.setColorElement(parseString(xpp));
23670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
23671        res.setBrandElement(parseString(xpp));
23672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
23673        res.getNote().add(parseAnnotation(xpp));
23674      } else if (!parseBackboneElementContent(eventType, xpp, res))
23675        return false;
23676    return true;
23677  }
23678
23679  protected VisionPrescription.PrismComponent parseVisionPrescriptionPrismComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
23680    VisionPrescription.PrismComponent res = new VisionPrescription.PrismComponent();
23681    parseBackboneAttributes(xpp, res);
23682    next(xpp);
23683    int eventType = nextNoWhitespace(xpp);
23684    while (eventType != XmlPullParser.END_TAG) {
23685  if (!parseVisionPrescriptionPrismComponentContent(eventType, xpp, owner, res))
23686        unknownContent(xpp);
23687      eventType = nextNoWhitespace(xpp);
23688    }
23689    next(xpp);
23690    parseElementClose(res);
23691    return res;
23692  }
23693
23694  protected boolean parseVisionPrescriptionPrismComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.PrismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23695      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
23696        res.setAmountElement(parseDecimal(xpp));
23697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
23698        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
23699      } else if (!parseBackboneElementContent(eventType, xpp, res))
23700        return false;
23701    return true;
23702  }
23703
23704  @Override
23705  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23706    if (xpp.getName().equals("Parameters"))
23707      return parseParameters(xpp);
23708    else if (xpp.getName().equals("Account"))
23709      return parseAccount(xpp);
23710    else if (xpp.getName().equals("ActivityDefinition"))
23711      return parseActivityDefinition(xpp);
23712    else if (xpp.getName().equals("AdverseEvent"))
23713      return parseAdverseEvent(xpp);
23714    else if (xpp.getName().equals("AllergyIntolerance"))
23715      return parseAllergyIntolerance(xpp);
23716    else if (xpp.getName().equals("Appointment"))
23717      return parseAppointment(xpp);
23718    else if (xpp.getName().equals("AppointmentResponse"))
23719      return parseAppointmentResponse(xpp);
23720    else if (xpp.getName().equals("AuditEvent"))
23721      return parseAuditEvent(xpp);
23722    else if (xpp.getName().equals("Basic"))
23723      return parseBasic(xpp);
23724    else if (xpp.getName().equals("Binary"))
23725      return parseBinary(xpp);
23726    else if (xpp.getName().equals("BiologicallyDerivedProduct"))
23727      return parseBiologicallyDerivedProduct(xpp);
23728    else if (xpp.getName().equals("BodyStructure"))
23729      return parseBodyStructure(xpp);
23730    else if (xpp.getName().equals("Bundle"))
23731      return parseBundle(xpp);
23732    else if (xpp.getName().equals("CapabilityStatement"))
23733      return parseCapabilityStatement(xpp);
23734    else if (xpp.getName().equals("CarePlan"))
23735      return parseCarePlan(xpp);
23736    else if (xpp.getName().equals("CareTeam"))
23737      return parseCareTeam(xpp);
23738    else if (xpp.getName().equals("CatalogEntry"))
23739      return parseCatalogEntry(xpp);
23740    else if (xpp.getName().equals("ChargeItem"))
23741      return parseChargeItem(xpp);
23742    else if (xpp.getName().equals("ChargeItemDefinition"))
23743      return parseChargeItemDefinition(xpp);
23744    else if (xpp.getName().equals("Claim"))
23745      return parseClaim(xpp);
23746    else if (xpp.getName().equals("ClaimResponse"))
23747      return parseClaimResponse(xpp);
23748    else if (xpp.getName().equals("ClinicalImpression"))
23749      return parseClinicalImpression(xpp);
23750    else if (xpp.getName().equals("CodeSystem"))
23751      return parseCodeSystem(xpp);
23752    else if (xpp.getName().equals("Communication"))
23753      return parseCommunication(xpp);
23754    else if (xpp.getName().equals("CommunicationRequest"))
23755      return parseCommunicationRequest(xpp);
23756    else if (xpp.getName().equals("CompartmentDefinition"))
23757      return parseCompartmentDefinition(xpp);
23758    else if (xpp.getName().equals("Composition"))
23759      return parseComposition(xpp);
23760    else if (xpp.getName().equals("ConceptMap"))
23761      return parseConceptMap(xpp);
23762    else if (xpp.getName().equals("Condition"))
23763      return parseCondition(xpp);
23764    else if (xpp.getName().equals("Consent"))
23765      return parseConsent(xpp);
23766    else if (xpp.getName().equals("Contract"))
23767      return parseContract(xpp);
23768    else if (xpp.getName().equals("Coverage"))
23769      return parseCoverage(xpp);
23770    else if (xpp.getName().equals("CoverageEligibilityRequest"))
23771      return parseCoverageEligibilityRequest(xpp);
23772    else if (xpp.getName().equals("CoverageEligibilityResponse"))
23773      return parseCoverageEligibilityResponse(xpp);
23774    else if (xpp.getName().equals("DetectedIssue"))
23775      return parseDetectedIssue(xpp);
23776    else if (xpp.getName().equals("Device"))
23777      return parseDevice(xpp);
23778    else if (xpp.getName().equals("DeviceDefinition"))
23779      return parseDeviceDefinition(xpp);
23780    else if (xpp.getName().equals("DeviceMetric"))
23781      return parseDeviceMetric(xpp);
23782    else if (xpp.getName().equals("DeviceRequest"))
23783      return parseDeviceRequest(xpp);
23784    else if (xpp.getName().equals("DeviceUseStatement"))
23785      return parseDeviceUseStatement(xpp);
23786    else if (xpp.getName().equals("DiagnosticReport"))
23787      return parseDiagnosticReport(xpp);
23788    else if (xpp.getName().equals("DocumentManifest"))
23789      return parseDocumentManifest(xpp);
23790    else if (xpp.getName().equals("DocumentReference"))
23791      return parseDocumentReference(xpp);
23792    else if (xpp.getName().equals("EffectEvidenceSynthesis"))
23793      return parseEffectEvidenceSynthesis(xpp);
23794    else if (xpp.getName().equals("Encounter"))
23795      return parseEncounter(xpp);
23796    else if (xpp.getName().equals("Endpoint"))
23797      return parseEndpoint(xpp);
23798    else if (xpp.getName().equals("EnrollmentRequest"))
23799      return parseEnrollmentRequest(xpp);
23800    else if (xpp.getName().equals("EnrollmentResponse"))
23801      return parseEnrollmentResponse(xpp);
23802    else if (xpp.getName().equals("EpisodeOfCare"))
23803      return parseEpisodeOfCare(xpp);
23804    else if (xpp.getName().equals("EventDefinition"))
23805      return parseEventDefinition(xpp);
23806    else if (xpp.getName().equals("Evidence"))
23807      return parseEvidence(xpp);
23808    else if (xpp.getName().equals("EvidenceVariable"))
23809      return parseEvidenceVariable(xpp);
23810    else if (xpp.getName().equals("ExampleScenario"))
23811      return parseExampleScenario(xpp);
23812    else if (xpp.getName().equals("ExplanationOfBenefit"))
23813      return parseExplanationOfBenefit(xpp);
23814    else if (xpp.getName().equals("FamilyMemberHistory"))
23815      return parseFamilyMemberHistory(xpp);
23816    else if (xpp.getName().equals("Flag"))
23817      return parseFlag(xpp);
23818    else if (xpp.getName().equals("Goal"))
23819      return parseGoal(xpp);
23820    else if (xpp.getName().equals("GraphDefinition"))
23821      return parseGraphDefinition(xpp);
23822    else if (xpp.getName().equals("Group"))
23823      return parseGroup(xpp);
23824    else if (xpp.getName().equals("GuidanceResponse"))
23825      return parseGuidanceResponse(xpp);
23826    else if (xpp.getName().equals("HealthcareService"))
23827      return parseHealthcareService(xpp);
23828    else if (xpp.getName().equals("ImagingStudy"))
23829      return parseImagingStudy(xpp);
23830    else if (xpp.getName().equals("Immunization"))
23831      return parseImmunization(xpp);
23832    else if (xpp.getName().equals("ImmunizationEvaluation"))
23833      return parseImmunizationEvaluation(xpp);
23834    else if (xpp.getName().equals("ImmunizationRecommendation"))
23835      return parseImmunizationRecommendation(xpp);
23836    else if (xpp.getName().equals("ImplementationGuide"))
23837      return parseImplementationGuide(xpp);
23838    else if (xpp.getName().equals("InsurancePlan"))
23839      return parseInsurancePlan(xpp);
23840    else if (xpp.getName().equals("Invoice"))
23841      return parseInvoice(xpp);
23842    else if (xpp.getName().equals("Library"))
23843      return parseLibrary(xpp);
23844    else if (xpp.getName().equals("Linkage"))
23845      return parseLinkage(xpp);
23846    else if (xpp.getName().equals("List"))
23847      return parseListResource(xpp);
23848    else if (xpp.getName().equals("Location"))
23849      return parseLocation(xpp);
23850    else if (xpp.getName().equals("Measure"))
23851      return parseMeasure(xpp);
23852    else if (xpp.getName().equals("MeasureReport"))
23853      return parseMeasureReport(xpp);
23854    else if (xpp.getName().equals("Media"))
23855      return parseMedia(xpp);
23856    else if (xpp.getName().equals("Medication"))
23857      return parseMedication(xpp);
23858    else if (xpp.getName().equals("MedicationAdministration"))
23859      return parseMedicationAdministration(xpp);
23860    else if (xpp.getName().equals("MedicationDispense"))
23861      return parseMedicationDispense(xpp);
23862    else if (xpp.getName().equals("MedicationKnowledge"))
23863      return parseMedicationKnowledge(xpp);
23864    else if (xpp.getName().equals("MedicationRequest"))
23865      return parseMedicationRequest(xpp);
23866    else if (xpp.getName().equals("MedicationStatement"))
23867      return parseMedicationStatement(xpp);
23868    else if (xpp.getName().equals("MedicinalProduct"))
23869      return parseMedicinalProduct(xpp);
23870    else if (xpp.getName().equals("MedicinalProductAuthorization"))
23871      return parseMedicinalProductAuthorization(xpp);
23872    else if (xpp.getName().equals("MedicinalProductContraindication"))
23873      return parseMedicinalProductContraindication(xpp);
23874    else if (xpp.getName().equals("MedicinalProductIndication"))
23875      return parseMedicinalProductIndication(xpp);
23876    else if (xpp.getName().equals("MedicinalProductIngredient"))
23877      return parseMedicinalProductIngredient(xpp);
23878    else if (xpp.getName().equals("MedicinalProductInteraction"))
23879      return parseMedicinalProductInteraction(xpp);
23880    else if (xpp.getName().equals("MedicinalProductManufactured"))
23881      return parseMedicinalProductManufactured(xpp);
23882    else if (xpp.getName().equals("MedicinalProductPackaged"))
23883      return parseMedicinalProductPackaged(xpp);
23884    else if (xpp.getName().equals("MedicinalProductPharmaceutical"))
23885      return parseMedicinalProductPharmaceutical(xpp);
23886    else if (xpp.getName().equals("MedicinalProductUndesirableEffect"))
23887      return parseMedicinalProductUndesirableEffect(xpp);
23888    else if (xpp.getName().equals("MessageDefinition"))
23889      return parseMessageDefinition(xpp);
23890    else if (xpp.getName().equals("MessageHeader"))
23891      return parseMessageHeader(xpp);
23892    else if (xpp.getName().equals("MolecularSequence"))
23893      return parseMolecularSequence(xpp);
23894    else if (xpp.getName().equals("NamingSystem"))
23895      return parseNamingSystem(xpp);
23896    else if (xpp.getName().equals("NutritionOrder"))
23897      return parseNutritionOrder(xpp);
23898    else if (xpp.getName().equals("Observation"))
23899      return parseObservation(xpp);
23900    else if (xpp.getName().equals("ObservationDefinition"))
23901      return parseObservationDefinition(xpp);
23902    else if (xpp.getName().equals("OperationDefinition"))
23903      return parseOperationDefinition(xpp);
23904    else if (xpp.getName().equals("OperationOutcome"))
23905      return parseOperationOutcome(xpp);
23906    else if (xpp.getName().equals("Organization"))
23907      return parseOrganization(xpp);
23908    else if (xpp.getName().equals("OrganizationAffiliation"))
23909      return parseOrganizationAffiliation(xpp);
23910    else if (xpp.getName().equals("Patient"))
23911      return parsePatient(xpp);
23912    else if (xpp.getName().equals("PaymentNotice"))
23913      return parsePaymentNotice(xpp);
23914    else if (xpp.getName().equals("PaymentReconciliation"))
23915      return parsePaymentReconciliation(xpp);
23916    else if (xpp.getName().equals("Person"))
23917      return parsePerson(xpp);
23918    else if (xpp.getName().equals("PlanDefinition"))
23919      return parsePlanDefinition(xpp);
23920    else if (xpp.getName().equals("Practitioner"))
23921      return parsePractitioner(xpp);
23922    else if (xpp.getName().equals("PractitionerRole"))
23923      return parsePractitionerRole(xpp);
23924    else if (xpp.getName().equals("Procedure"))
23925      return parseProcedure(xpp);
23926    else if (xpp.getName().equals("Provenance"))
23927      return parseProvenance(xpp);
23928    else if (xpp.getName().equals("Questionnaire"))
23929      return parseQuestionnaire(xpp);
23930    else if (xpp.getName().equals("QuestionnaireResponse"))
23931      return parseQuestionnaireResponse(xpp);
23932    else if (xpp.getName().equals("RelatedPerson"))
23933      return parseRelatedPerson(xpp);
23934    else if (xpp.getName().equals("RequestGroup"))
23935      return parseRequestGroup(xpp);
23936    else if (xpp.getName().equals("ResearchDefinition"))
23937      return parseResearchDefinition(xpp);
23938    else if (xpp.getName().equals("ResearchElementDefinition"))
23939      return parseResearchElementDefinition(xpp);
23940    else if (xpp.getName().equals("ResearchStudy"))
23941      return parseResearchStudy(xpp);
23942    else if (xpp.getName().equals("ResearchSubject"))
23943      return parseResearchSubject(xpp);
23944    else if (xpp.getName().equals("RiskAssessment"))
23945      return parseRiskAssessment(xpp);
23946    else if (xpp.getName().equals("RiskEvidenceSynthesis"))
23947      return parseRiskEvidenceSynthesis(xpp);
23948    else if (xpp.getName().equals("Schedule"))
23949      return parseSchedule(xpp);
23950    else if (xpp.getName().equals("SearchParameter"))
23951      return parseSearchParameter(xpp);
23952    else if (xpp.getName().equals("ServiceRequest"))
23953      return parseServiceRequest(xpp);
23954    else if (xpp.getName().equals("Slot"))
23955      return parseSlot(xpp);
23956    else if (xpp.getName().equals("Specimen"))
23957      return parseSpecimen(xpp);
23958    else if (xpp.getName().equals("SpecimenDefinition"))
23959      return parseSpecimenDefinition(xpp);
23960    else if (xpp.getName().equals("StructureDefinition"))
23961      return parseStructureDefinition(xpp);
23962    else if (xpp.getName().equals("StructureMap"))
23963      return parseStructureMap(xpp);
23964    else if (xpp.getName().equals("Subscription"))
23965      return parseSubscription(xpp);
23966    else if (xpp.getName().equals("Substance"))
23967      return parseSubstance(xpp);
23968    else if (xpp.getName().equals("SubstanceNucleicAcid"))
23969      return parseSubstanceNucleicAcid(xpp);
23970    else if (xpp.getName().equals("SubstancePolymer"))
23971      return parseSubstancePolymer(xpp);
23972    else if (xpp.getName().equals("SubstanceProtein"))
23973      return parseSubstanceProtein(xpp);
23974    else if (xpp.getName().equals("SubstanceReferenceInformation"))
23975      return parseSubstanceReferenceInformation(xpp);
23976    else if (xpp.getName().equals("SubstanceSourceMaterial"))
23977      return parseSubstanceSourceMaterial(xpp);
23978    else if (xpp.getName().equals("SubstanceSpecification"))
23979      return parseSubstanceSpecification(xpp);
23980    else if (xpp.getName().equals("SupplyDelivery"))
23981      return parseSupplyDelivery(xpp);
23982    else if (xpp.getName().equals("SupplyRequest"))
23983      return parseSupplyRequest(xpp);
23984    else if (xpp.getName().equals("Task"))
23985      return parseTask(xpp);
23986    else if (xpp.getName().equals("TerminologyCapabilities"))
23987      return parseTerminologyCapabilities(xpp);
23988    else if (xpp.getName().equals("TestReport"))
23989      return parseTestReport(xpp);
23990    else if (xpp.getName().equals("TestScript"))
23991      return parseTestScript(xpp);
23992    else if (xpp.getName().equals("ValueSet"))
23993      return parseValueSet(xpp);
23994    else if (xpp.getName().equals("VerificationResult"))
23995      return parseVerificationResult(xpp);
23996    else if (xpp.getName().equals("VisionPrescription"))
23997      return parseVisionPrescription(xpp);
23998    else if (xpp.getName().equals("Binary"))
23999      return parseBinary(xpp);
24000    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
24001  }
24002
24003  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24004    if (xpp.getName().equals(prefix+"date"))
24005      return parseDate(xpp);
24006    else if (xpp.getName().equals(prefix+"dateTime"))
24007      return parseDateTime(xpp);
24008    else if (xpp.getName().equals(prefix+"code"))
24009      return parseCode(xpp);
24010    else if (xpp.getName().equals(prefix+"string"))
24011      return parseString(xpp);
24012    else if (xpp.getName().equals(prefix+"integer"))
24013      return parseInteger(xpp);
24014    else if (xpp.getName().equals(prefix+"oid"))
24015      return parseOid(xpp);
24016    else if (xpp.getName().equals(prefix+"canonical"))
24017      return parseCanonical(xpp);
24018    else if (xpp.getName().equals(prefix+"uri"))
24019      return parseUri(xpp);
24020    else if (xpp.getName().equals(prefix+"uuid"))
24021      return parseUuid(xpp);
24022    else if (xpp.getName().equals(prefix+"url"))
24023      return parseUrl(xpp);
24024    else if (xpp.getName().equals(prefix+"instant"))
24025      return parseInstant(xpp);
24026    else if (xpp.getName().equals(prefix+"boolean"))
24027      return parseBoolean(xpp);
24028    else if (xpp.getName().equals(prefix+"base64Binary"))
24029      return parseBase64Binary(xpp);
24030    else if (xpp.getName().equals(prefix+"unsignedInt"))
24031      return parseUnsignedInt(xpp);
24032    else if (xpp.getName().equals(prefix+"markdown"))
24033      return parseMarkdown(xpp);
24034    else if (xpp.getName().equals(prefix+"time"))
24035      return parseTime(xpp);
24036    else if (xpp.getName().equals(prefix+"id"))
24037      return parseId(xpp);
24038    else if (xpp.getName().equals(prefix+"positiveInt"))
24039      return parsePositiveInt(xpp);
24040    else if (xpp.getName().equals(prefix+"decimal"))
24041      return parseDecimal(xpp);
24042    else if (xpp.getName().equals(prefix+"Extension"))
24043      return parseExtension(xpp);
24044    else if (xpp.getName().equals(prefix+"Narrative"))
24045      return parseNarrative(xpp);
24046    else if (xpp.getName().equals(prefix+"Meta"))
24047      return parseMeta(xpp);
24048    else if (xpp.getName().equals(prefix+"Address"))
24049      return parseAddress(xpp);
24050    else if (xpp.getName().equals(prefix+"Contributor"))
24051      return parseContributor(xpp);
24052    else if (xpp.getName().equals(prefix+"Attachment"))
24053      return parseAttachment(xpp);
24054    else if (xpp.getName().equals(prefix+"Count"))
24055      return parseCount(xpp);
24056    else if (xpp.getName().equals(prefix+"DataRequirement"))
24057      return parseDataRequirement(xpp);
24058    else if (xpp.getName().equals(prefix+"Dosage"))
24059      return parseDosage(xpp);
24060    else if (xpp.getName().equals(prefix+"Money"))
24061      return parseMoney(xpp);
24062    else if (xpp.getName().equals(prefix+"HumanName"))
24063      return parseHumanName(xpp);
24064    else if (xpp.getName().equals(prefix+"ContactPoint"))
24065      return parseContactPoint(xpp);
24066    else if (xpp.getName().equals(prefix+"MarketingStatus"))
24067      return parseMarketingStatus(xpp);
24068    else if (xpp.getName().equals(prefix+"Identifier"))
24069      return parseIdentifier(xpp);
24070    else if (xpp.getName().equals(prefix+"SubstanceAmount"))
24071      return parseSubstanceAmount(xpp);
24072    else if (xpp.getName().equals(prefix+"Coding"))
24073      return parseCoding(xpp);
24074    else if (xpp.getName().equals(prefix+"SampledData"))
24075      return parseSampledData(xpp);
24076    else if (xpp.getName().equals(prefix+"Population"))
24077      return parsePopulation(xpp);
24078    else if (xpp.getName().equals(prefix+"Ratio"))
24079      return parseRatio(xpp);
24080    else if (xpp.getName().equals(prefix+"Distance"))
24081      return parseDistance(xpp);
24082    else if (xpp.getName().equals(prefix+"Age"))
24083      return parseAge(xpp);
24084    else if (xpp.getName().equals(prefix+"Reference"))
24085      return parseReference(xpp);
24086    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
24087      return parseTriggerDefinition(xpp);
24088    else if (xpp.getName().equals(prefix+"Quantity"))
24089      return parseQuantity(xpp);
24090    else if (xpp.getName().equals(prefix+"Period"))
24091      return parsePeriod(xpp);
24092    else if (xpp.getName().equals(prefix+"Duration"))
24093      return parseDuration(xpp);
24094    else if (xpp.getName().equals(prefix+"Range"))
24095      return parseRange(xpp);
24096    else if (xpp.getName().equals(prefix+"RelatedArtifact"))
24097      return parseRelatedArtifact(xpp);
24098    else if (xpp.getName().equals(prefix+"Annotation"))
24099      return parseAnnotation(xpp);
24100    else if (xpp.getName().equals(prefix+"ProductShelfLife"))
24101      return parseProductShelfLife(xpp);
24102    else if (xpp.getName().equals(prefix+"ContactDetail"))
24103      return parseContactDetail(xpp);
24104    else if (xpp.getName().equals(prefix+"UsageContext"))
24105      return parseUsageContext(xpp);
24106    else if (xpp.getName().equals(prefix+"Expression"))
24107      return parseExpression(xpp);
24108    else if (xpp.getName().equals(prefix+"Signature"))
24109      return parseSignature(xpp);
24110    else if (xpp.getName().equals(prefix+"Timing"))
24111      return parseTiming(xpp);
24112    else if (xpp.getName().equals(prefix+"ProdCharacteristic"))
24113      return parseProdCharacteristic(xpp);
24114    else if (xpp.getName().equals(prefix+"CodeableConcept"))
24115      return parseCodeableConcept(xpp);
24116    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
24117      return parseParameterDefinition(xpp);
24118    else if (xpp.getName().equals(prefix+"Date"))
24119      return parseDate(xpp);
24120    else if (xpp.getName().equals(prefix+"DateTime"))
24121      return parseDateTime(xpp);
24122    else if (xpp.getName().equals(prefix+"Code"))
24123      return parseCode(xpp);
24124    else if (xpp.getName().equals(prefix+"String"))
24125      return parseString(xpp);
24126    else if (xpp.getName().equals(prefix+"Integer"))
24127      return parseInteger(xpp);
24128    else if (xpp.getName().equals(prefix+"Oid"))
24129      return parseOid(xpp);
24130    else if (xpp.getName().equals(prefix+"Canonical"))
24131      return parseCanonical(xpp);
24132    else if (xpp.getName().equals(prefix+"Uri"))
24133      return parseUri(xpp);
24134    else if (xpp.getName().equals(prefix+"Uuid"))
24135      return parseUuid(xpp);
24136    else if (xpp.getName().equals(prefix+"Url"))
24137      return parseUrl(xpp);
24138    else if (xpp.getName().equals(prefix+"Instant"))
24139      return parseInstant(xpp);
24140    else if (xpp.getName().equals(prefix+"Boolean"))
24141      return parseBoolean(xpp);
24142    else if (xpp.getName().equals(prefix+"Base64Binary"))
24143      return parseBase64Binary(xpp);
24144    else if (xpp.getName().equals(prefix+"UnsignedInt"))
24145      return parseUnsignedInt(xpp);
24146    else if (xpp.getName().equals(prefix+"Markdown"))
24147      return parseMarkdown(xpp);
24148    else if (xpp.getName().equals(prefix+"Time"))
24149      return parseTime(xpp);
24150    else if (xpp.getName().equals(prefix+"Id"))
24151      return parseId(xpp);
24152    else if (xpp.getName().equals(prefix+"PositiveInt"))
24153      return parsePositiveInt(xpp);
24154    else if (xpp.getName().equals(prefix+"Decimal"))
24155      return parseDecimal(xpp);
24156    throw new FHIRFormatError("Unknown type "+xpp.getName());
24157  }
24158
24159  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
24160    if (type.equals("date"))
24161      return parseDate(xpp);
24162    else if (type.equals("dateTime"))
24163      return parseDateTime(xpp);
24164    else if (type.equals("code"))
24165      return parseCode(xpp);
24166    else if (type.equals("string"))
24167      return parseString(xpp);
24168    else if (type.equals("integer"))
24169      return parseInteger(xpp);
24170    else if (type.equals("oid"))
24171      return parseOid(xpp);
24172    else if (type.equals("canonical"))
24173      return parseCanonical(xpp);
24174    else if (type.equals("uri"))
24175      return parseUri(xpp);
24176    else if (type.equals("uuid"))
24177      return parseUuid(xpp);
24178    else if (type.equals("url"))
24179      return parseUrl(xpp);
24180    else if (type.equals("instant"))
24181      return parseInstant(xpp);
24182    else if (type.equals("boolean"))
24183      return parseBoolean(xpp);
24184    else if (type.equals("base64Binary"))
24185      return parseBase64Binary(xpp);
24186    else if (type.equals("unsignedInt"))
24187      return parseUnsignedInt(xpp);
24188    else if (type.equals("markdown"))
24189      return parseMarkdown(xpp);
24190    else if (type.equals("time"))
24191      return parseTime(xpp);
24192    else if (type.equals("id"))
24193      return parseId(xpp);
24194    else if (type.equals("positiveInt"))
24195      return parsePositiveInt(xpp);
24196    else if (type.equals("decimal"))
24197      return parseDecimal(xpp);
24198    else if (type.equals("Extension"))
24199      return parseExtension(xpp);
24200    else if (type.equals("Narrative"))
24201      return parseNarrative(xpp);
24202    else if (type.equals("Meta"))
24203      return parseMeta(xpp);
24204    else if (type.equals("Address"))
24205      return parseAddress(xpp);
24206    else if (type.equals("Contributor"))
24207      return parseContributor(xpp);
24208    else if (type.equals("Attachment"))
24209      return parseAttachment(xpp);
24210    else if (type.equals("Count"))
24211      return parseCount(xpp);
24212    else if (type.equals("DataRequirement"))
24213      return parseDataRequirement(xpp);
24214    else if (type.equals("Dosage"))
24215      return parseDosage(xpp);
24216    else if (type.equals("Money"))
24217      return parseMoney(xpp);
24218    else if (type.equals("HumanName"))
24219      return parseHumanName(xpp);
24220    else if (type.equals("ContactPoint"))
24221      return parseContactPoint(xpp);
24222    else if (type.equals("MarketingStatus"))
24223      return parseMarketingStatus(xpp);
24224    else if (type.equals("Identifier"))
24225      return parseIdentifier(xpp);
24226    else if (type.equals("SubstanceAmount"))
24227      return parseSubstanceAmount(xpp);
24228    else if (type.equals("Coding"))
24229      return parseCoding(xpp);
24230    else if (type.equals("SampledData"))
24231      return parseSampledData(xpp);
24232    else if (type.equals("Population"))
24233      return parsePopulation(xpp);
24234    else if (type.equals("Ratio"))
24235      return parseRatio(xpp);
24236    else if (type.equals("Distance"))
24237      return parseDistance(xpp);
24238    else if (type.equals("Age"))
24239      return parseAge(xpp);
24240    else if (type.equals("Reference"))
24241      return parseReference(xpp);
24242    else if (type.equals("TriggerDefinition"))
24243      return parseTriggerDefinition(xpp);
24244    else if (type.equals("Quantity"))
24245      return parseQuantity(xpp);
24246    else if (type.equals("Period"))
24247      return parsePeriod(xpp);
24248    else if (type.equals("Duration"))
24249      return parseDuration(xpp);
24250    else if (type.equals("Range"))
24251      return parseRange(xpp);
24252    else if (type.equals("RelatedArtifact"))
24253      return parseRelatedArtifact(xpp);
24254    else if (type.equals("Annotation"))
24255      return parseAnnotation(xpp);
24256    else if (type.equals("ProductShelfLife"))
24257      return parseProductShelfLife(xpp);
24258    else if (type.equals("ContactDetail"))
24259      return parseContactDetail(xpp);
24260    else if (type.equals("UsageContext"))
24261      return parseUsageContext(xpp);
24262    else if (type.equals("Expression"))
24263      return parseExpression(xpp);
24264    else if (type.equals("Signature"))
24265      return parseSignature(xpp);
24266    else if (type.equals("Timing"))
24267      return parseTiming(xpp);
24268    else if (type.equals("ProdCharacteristic"))
24269      return parseProdCharacteristic(xpp);
24270    else if (type.equals("CodeableConcept"))
24271      return parseCodeableConcept(xpp);
24272    else if (type.equals("ParameterDefinition"))
24273      return parseParameterDefinition(xpp);
24274    throw new FHIRFormatError("Unknown type "+type);
24275  }
24276
24277  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
24278    if (type.equals("Extension"))
24279      return parseExtension(xpp);
24280    else if (type.equals("Narrative"))
24281      return parseNarrative(xpp);
24282    else if (type.equals("Meta"))
24283      return parseMeta(xpp);
24284    else if (type.equals("Address"))
24285      return parseAddress(xpp);
24286    else if (type.equals("Contributor"))
24287      return parseContributor(xpp);
24288    else if (type.equals("Attachment"))
24289      return parseAttachment(xpp);
24290    else if (type.equals("Count"))
24291      return parseCount(xpp);
24292    else if (type.equals("DataRequirement"))
24293      return parseDataRequirement(xpp);
24294    else if (type.equals("Dosage"))
24295      return parseDosage(xpp);
24296    else if (type.equals("Money"))
24297      return parseMoney(xpp);
24298    else if (type.equals("HumanName"))
24299      return parseHumanName(xpp);
24300    else if (type.equals("ContactPoint"))
24301      return parseContactPoint(xpp);
24302    else if (type.equals("MarketingStatus"))
24303      return parseMarketingStatus(xpp);
24304    else if (type.equals("Identifier"))
24305      return parseIdentifier(xpp);
24306    else if (type.equals("SubstanceAmount"))
24307      return parseSubstanceAmount(xpp);
24308    else if (type.equals("Coding"))
24309      return parseCoding(xpp);
24310    else if (type.equals("SampledData"))
24311      return parseSampledData(xpp);
24312    else if (type.equals("Population"))
24313      return parsePopulation(xpp);
24314    else if (type.equals("Ratio"))
24315      return parseRatio(xpp);
24316    else if (type.equals("Distance"))
24317      return parseDistance(xpp);
24318    else if (type.equals("Age"))
24319      return parseAge(xpp);
24320    else if (type.equals("Reference"))
24321      return parseReference(xpp);
24322    else if (type.equals("TriggerDefinition"))
24323      return parseTriggerDefinition(xpp);
24324    else if (type.equals("Quantity"))
24325      return parseQuantity(xpp);
24326    else if (type.equals("Period"))
24327      return parsePeriod(xpp);
24328    else if (type.equals("Duration"))
24329      return parseDuration(xpp);
24330    else if (type.equals("Range"))
24331      return parseRange(xpp);
24332    else if (type.equals("RelatedArtifact"))
24333      return parseRelatedArtifact(xpp);
24334    else if (type.equals("Annotation"))
24335      return parseAnnotation(xpp);
24336    else if (type.equals("ProductShelfLife"))
24337      return parseProductShelfLife(xpp);
24338    else if (type.equals("ContactDetail"))
24339      return parseContactDetail(xpp);
24340    else if (type.equals("UsageContext"))
24341      return parseUsageContext(xpp);
24342    else if (type.equals("Expression"))
24343      return parseExpression(xpp);
24344    else if (type.equals("Signature"))
24345      return parseSignature(xpp);
24346    else if (type.equals("Timing"))
24347      return parseTiming(xpp);
24348    else if (type.equals("ProdCharacteristic"))
24349      return parseProdCharacteristic(xpp);
24350    else if (type.equals("CodeableConcept"))
24351      return parseCodeableConcept(xpp);
24352    else if (type.equals("ParameterDefinition"))
24353      return parseParameterDefinition(xpp);
24354    else if (type.equals("Parameters"))
24355      return parseParameters(xpp);
24356    else if (type.equals("Account"))
24357      return parseAccount(xpp);
24358    else if (type.equals("ActivityDefinition"))
24359      return parseActivityDefinition(xpp);
24360    else if (type.equals("AdverseEvent"))
24361      return parseAdverseEvent(xpp);
24362    else if (type.equals("AllergyIntolerance"))
24363      return parseAllergyIntolerance(xpp);
24364    else if (type.equals("Appointment"))
24365      return parseAppointment(xpp);
24366    else if (type.equals("AppointmentResponse"))
24367      return parseAppointmentResponse(xpp);
24368    else if (type.equals("AuditEvent"))
24369      return parseAuditEvent(xpp);
24370    else if (type.equals("Basic"))
24371      return parseBasic(xpp);
24372    else if (type.equals("Binary"))
24373      return parseBinary(xpp);
24374    else if (type.equals("BiologicallyDerivedProduct"))
24375      return parseBiologicallyDerivedProduct(xpp);
24376    else if (type.equals("BodyStructure"))
24377      return parseBodyStructure(xpp);
24378    else if (type.equals("Bundle"))
24379      return parseBundle(xpp);
24380    else if (type.equals("CapabilityStatement"))
24381      return parseCapabilityStatement(xpp);
24382    else if (type.equals("CarePlan"))
24383      return parseCarePlan(xpp);
24384    else if (type.equals("CareTeam"))
24385      return parseCareTeam(xpp);
24386    else if (type.equals("CatalogEntry"))
24387      return parseCatalogEntry(xpp);
24388    else if (type.equals("ChargeItem"))
24389      return parseChargeItem(xpp);
24390    else if (type.equals("ChargeItemDefinition"))
24391      return parseChargeItemDefinition(xpp);
24392    else if (type.equals("Claim"))
24393      return parseClaim(xpp);
24394    else if (type.equals("ClaimResponse"))
24395      return parseClaimResponse(xpp);
24396    else if (type.equals("ClinicalImpression"))
24397      return parseClinicalImpression(xpp);
24398    else if (type.equals("CodeSystem"))
24399      return parseCodeSystem(xpp);
24400    else if (type.equals("Communication"))
24401      return parseCommunication(xpp);
24402    else if (type.equals("CommunicationRequest"))
24403      return parseCommunicationRequest(xpp);
24404    else if (type.equals("CompartmentDefinition"))
24405      return parseCompartmentDefinition(xpp);
24406    else if (type.equals("Composition"))
24407      return parseComposition(xpp);
24408    else if (type.equals("ConceptMap"))
24409      return parseConceptMap(xpp);
24410    else if (type.equals("Condition"))
24411      return parseCondition(xpp);
24412    else if (type.equals("Consent"))
24413      return parseConsent(xpp);
24414    else if (type.equals("Contract"))
24415      return parseContract(xpp);
24416    else if (type.equals("Coverage"))
24417      return parseCoverage(xpp);
24418    else if (type.equals("CoverageEligibilityRequest"))
24419      return parseCoverageEligibilityRequest(xpp);
24420    else if (type.equals("CoverageEligibilityResponse"))
24421      return parseCoverageEligibilityResponse(xpp);
24422    else if (type.equals("DetectedIssue"))
24423      return parseDetectedIssue(xpp);
24424    else if (type.equals("Device"))
24425      return parseDevice(xpp);
24426    else if (type.equals("DeviceDefinition"))
24427      return parseDeviceDefinition(xpp);
24428    else if (type.equals("DeviceMetric"))
24429      return parseDeviceMetric(xpp);
24430    else if (type.equals("DeviceRequest"))
24431      return parseDeviceRequest(xpp);
24432    else if (type.equals("DeviceUseStatement"))
24433      return parseDeviceUseStatement(xpp);
24434    else if (type.equals("DiagnosticReport"))
24435      return parseDiagnosticReport(xpp);
24436    else if (type.equals("DocumentManifest"))
24437      return parseDocumentManifest(xpp);
24438    else if (type.equals("DocumentReference"))
24439      return parseDocumentReference(xpp);
24440    else if (type.equals("EffectEvidenceSynthesis"))
24441      return parseEffectEvidenceSynthesis(xpp);
24442    else if (type.equals("Encounter"))
24443      return parseEncounter(xpp);
24444    else if (type.equals("Endpoint"))
24445      return parseEndpoint(xpp);
24446    else if (type.equals("EnrollmentRequest"))
24447      return parseEnrollmentRequest(xpp);
24448    else if (type.equals("EnrollmentResponse"))
24449      return parseEnrollmentResponse(xpp);
24450    else if (type.equals("EpisodeOfCare"))
24451      return parseEpisodeOfCare(xpp);
24452    else if (type.equals("EventDefinition"))
24453      return parseEventDefinition(xpp);
24454    else if (type.equals("Evidence"))
24455      return parseEvidence(xpp);
24456    else if (type.equals("EvidenceVariable"))
24457      return parseEvidenceVariable(xpp);
24458    else if (type.equals("ExampleScenario"))
24459      return parseExampleScenario(xpp);
24460    else if (type.equals("ExplanationOfBenefit"))
24461      return parseExplanationOfBenefit(xpp);
24462    else if (type.equals("FamilyMemberHistory"))
24463      return parseFamilyMemberHistory(xpp);
24464    else if (type.equals("Flag"))
24465      return parseFlag(xpp);
24466    else if (type.equals("Goal"))
24467      return parseGoal(xpp);
24468    else if (type.equals("GraphDefinition"))
24469      return parseGraphDefinition(xpp);
24470    else if (type.equals("Group"))
24471      return parseGroup(xpp);
24472    else if (type.equals("GuidanceResponse"))
24473      return parseGuidanceResponse(xpp);
24474    else if (type.equals("HealthcareService"))
24475      return parseHealthcareService(xpp);
24476    else if (type.equals("ImagingStudy"))
24477      return parseImagingStudy(xpp);
24478    else if (type.equals("Immunization"))
24479      return parseImmunization(xpp);
24480    else if (type.equals("ImmunizationEvaluation"))
24481      return parseImmunizationEvaluation(xpp);
24482    else if (type.equals("ImmunizationRecommendation"))
24483      return parseImmunizationRecommendation(xpp);
24484    else if (type.equals("ImplementationGuide"))
24485      return parseImplementationGuide(xpp);
24486    else if (type.equals("InsurancePlan"))
24487      return parseInsurancePlan(xpp);
24488    else if (type.equals("Invoice"))
24489      return parseInvoice(xpp);
24490    else if (type.equals("Library"))
24491      return parseLibrary(xpp);
24492    else if (type.equals("Linkage"))
24493      return parseLinkage(xpp);
24494    else if (type.equals("List"))
24495      return parseListResource(xpp);
24496    else if (type.equals("Location"))
24497      return parseLocation(xpp);
24498    else if (type.equals("Measure"))
24499      return parseMeasure(xpp);
24500    else if (type.equals("MeasureReport"))
24501      return parseMeasureReport(xpp);
24502    else if (type.equals("Media"))
24503      return parseMedia(xpp);
24504    else if (type.equals("Medication"))
24505      return parseMedication(xpp);
24506    else if (type.equals("MedicationAdministration"))
24507      return parseMedicationAdministration(xpp);
24508    else if (type.equals("MedicationDispense"))
24509      return parseMedicationDispense(xpp);
24510    else if (type.equals("MedicationKnowledge"))
24511      return parseMedicationKnowledge(xpp);
24512    else if (type.equals("MedicationRequest"))
24513      return parseMedicationRequest(xpp);
24514    else if (type.equals("MedicationStatement"))
24515      return parseMedicationStatement(xpp);
24516    else if (type.equals("MedicinalProduct"))
24517      return parseMedicinalProduct(xpp);
24518    else if (type.equals("MedicinalProductAuthorization"))
24519      return parseMedicinalProductAuthorization(xpp);
24520    else if (type.equals("MedicinalProductContraindication"))
24521      return parseMedicinalProductContraindication(xpp);
24522    else if (type.equals("MedicinalProductIndication"))
24523      return parseMedicinalProductIndication(xpp);
24524    else if (type.equals("MedicinalProductIngredient"))
24525      return parseMedicinalProductIngredient(xpp);
24526    else if (type.equals("MedicinalProductInteraction"))
24527      return parseMedicinalProductInteraction(xpp);
24528    else if (type.equals("MedicinalProductManufactured"))
24529      return parseMedicinalProductManufactured(xpp);
24530    else if (type.equals("MedicinalProductPackaged"))
24531      return parseMedicinalProductPackaged(xpp);
24532    else if (type.equals("MedicinalProductPharmaceutical"))
24533      return parseMedicinalProductPharmaceutical(xpp);
24534    else if (type.equals("MedicinalProductUndesirableEffect"))
24535      return parseMedicinalProductUndesirableEffect(xpp);
24536    else if (type.equals("MessageDefinition"))
24537      return parseMessageDefinition(xpp);
24538    else if (type.equals("MessageHeader"))
24539      return parseMessageHeader(xpp);
24540    else if (type.equals("MolecularSequence"))
24541      return parseMolecularSequence(xpp);
24542    else if (type.equals("NamingSystem"))
24543      return parseNamingSystem(xpp);
24544    else if (type.equals("NutritionOrder"))
24545      return parseNutritionOrder(xpp);
24546    else if (type.equals("Observation"))
24547      return parseObservation(xpp);
24548    else if (type.equals("ObservationDefinition"))
24549      return parseObservationDefinition(xpp);
24550    else if (type.equals("OperationDefinition"))
24551      return parseOperationDefinition(xpp);
24552    else if (type.equals("OperationOutcome"))
24553      return parseOperationOutcome(xpp);
24554    else if (type.equals("Organization"))
24555      return parseOrganization(xpp);
24556    else if (type.equals("OrganizationAffiliation"))
24557      return parseOrganizationAffiliation(xpp);
24558    else if (type.equals("Patient"))
24559      return parsePatient(xpp);
24560    else if (type.equals("PaymentNotice"))
24561      return parsePaymentNotice(xpp);
24562    else if (type.equals("PaymentReconciliation"))
24563      return parsePaymentReconciliation(xpp);
24564    else if (type.equals("Person"))
24565      return parsePerson(xpp);
24566    else if (type.equals("PlanDefinition"))
24567      return parsePlanDefinition(xpp);
24568    else if (type.equals("Practitioner"))
24569      return parsePractitioner(xpp);
24570    else if (type.equals("PractitionerRole"))
24571      return parsePractitionerRole(xpp);
24572    else if (type.equals("Procedure"))
24573      return parseProcedure(xpp);
24574    else if (type.equals("Provenance"))
24575      return parseProvenance(xpp);
24576    else if (type.equals("Questionnaire"))
24577      return parseQuestionnaire(xpp);
24578    else if (type.equals("QuestionnaireResponse"))
24579      return parseQuestionnaireResponse(xpp);
24580    else if (type.equals("RelatedPerson"))
24581      return parseRelatedPerson(xpp);
24582    else if (type.equals("RequestGroup"))
24583      return parseRequestGroup(xpp);
24584    else if (type.equals("ResearchDefinition"))
24585      return parseResearchDefinition(xpp);
24586    else if (type.equals("ResearchElementDefinition"))
24587      return parseResearchElementDefinition(xpp);
24588    else if (type.equals("ResearchStudy"))
24589      return parseResearchStudy(xpp);
24590    else if (type.equals("ResearchSubject"))
24591      return parseResearchSubject(xpp);
24592    else if (type.equals("RiskAssessment"))
24593      return parseRiskAssessment(xpp);
24594    else if (type.equals("RiskEvidenceSynthesis"))
24595      return parseRiskEvidenceSynthesis(xpp);
24596    else if (type.equals("Schedule"))
24597      return parseSchedule(xpp);
24598    else if (type.equals("SearchParameter"))
24599      return parseSearchParameter(xpp);
24600    else if (type.equals("ServiceRequest"))
24601      return parseServiceRequest(xpp);
24602    else if (type.equals("Slot"))
24603      return parseSlot(xpp);
24604    else if (type.equals("Specimen"))
24605      return parseSpecimen(xpp);
24606    else if (type.equals("SpecimenDefinition"))
24607      return parseSpecimenDefinition(xpp);
24608    else if (type.equals("StructureDefinition"))
24609      return parseStructureDefinition(xpp);
24610    else if (type.equals("StructureMap"))
24611      return parseStructureMap(xpp);
24612    else if (type.equals("Subscription"))
24613      return parseSubscription(xpp);
24614    else if (type.equals("Substance"))
24615      return parseSubstance(xpp);
24616    else if (type.equals("SubstanceNucleicAcid"))
24617      return parseSubstanceNucleicAcid(xpp);
24618    else if (type.equals("SubstancePolymer"))
24619      return parseSubstancePolymer(xpp);
24620    else if (type.equals("SubstanceProtein"))
24621      return parseSubstanceProtein(xpp);
24622    else if (type.equals("SubstanceReferenceInformation"))
24623      return parseSubstanceReferenceInformation(xpp);
24624    else if (type.equals("SubstanceSourceMaterial"))
24625      return parseSubstanceSourceMaterial(xpp);
24626    else if (type.equals("SubstanceSpecification"))
24627      return parseSubstanceSpecification(xpp);
24628    else if (type.equals("SupplyDelivery"))
24629      return parseSupplyDelivery(xpp);
24630    else if (type.equals("SupplyRequest"))
24631      return parseSupplyRequest(xpp);
24632    else if (type.equals("Task"))
24633      return parseTask(xpp);
24634    else if (type.equals("TerminologyCapabilities"))
24635      return parseTerminologyCapabilities(xpp);
24636    else if (type.equals("TestReport"))
24637      return parseTestReport(xpp);
24638    else if (type.equals("TestScript"))
24639      return parseTestScript(xpp);
24640    else if (type.equals("ValueSet"))
24641      return parseValueSet(xpp);
24642    else if (type.equals("VerificationResult"))
24643      return parseVerificationResult(xpp);
24644    else if (type.equals("VisionPrescription"))
24645      return parseVisionPrescription(xpp);
24646    else if (type.equals("date"))
24647      return parseDate(xpp);
24648    else if (type.equals("dateTime"))
24649      return parseDateTime(xpp);
24650    else if (type.equals("code"))
24651      return parseCode(xpp);
24652    else if (type.equals("string"))
24653      return parseString(xpp);
24654    else if (type.equals("integer"))
24655      return parseInteger(xpp);
24656    else if (type.equals("oid"))
24657      return parseOid(xpp);
24658    else if (type.equals("canonical"))
24659      return parseCanonical(xpp);
24660    else if (type.equals("uri"))
24661      return parseUri(xpp);
24662    else if (type.equals("uuid"))
24663      return parseUuid(xpp);
24664    else if (type.equals("url"))
24665      return parseUrl(xpp);
24666    else if (type.equals("instant"))
24667      return parseInstant(xpp);
24668    else if (type.equals("boolean"))
24669      return parseBoolean(xpp);
24670    else if (type.equals("base64Binary"))
24671      return parseBase64Binary(xpp);
24672    else if (type.equals("unsignedInt"))
24673      return parseUnsignedInt(xpp);
24674    else if (type.equals("markdown"))
24675      return parseMarkdown(xpp);
24676    else if (type.equals("time"))
24677      return parseTime(xpp);
24678    else if (type.equals("id"))
24679      return parseId(xpp);
24680    else if (type.equals("positiveInt"))
24681      return parsePositiveInt(xpp);
24682    else if (type.equals("decimal"))
24683      return parseDecimal(xpp);
24684    throw new FHIRFormatError("Unknown type "+type);
24685  }
24686
24687  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
24688        if (xpp.getName().equals(prefix+"Meta"))
24689      return true;
24690    if (xpp.getName().equals(prefix+"Address"))
24691      return true;
24692    if (xpp.getName().equals(prefix+"Contributor"))
24693      return true;
24694    if (xpp.getName().equals(prefix+"Attachment"))
24695      return true;
24696    if (xpp.getName().equals(prefix+"Count"))
24697      return true;
24698    if (xpp.getName().equals(prefix+"DataRequirement"))
24699      return true;
24700    if (xpp.getName().equals(prefix+"Dosage"))
24701      return true;
24702    if (xpp.getName().equals(prefix+"Money"))
24703      return true;
24704    if (xpp.getName().equals(prefix+"HumanName"))
24705      return true;
24706    if (xpp.getName().equals(prefix+"ContactPoint"))
24707      return true;
24708    if (xpp.getName().equals(prefix+"MarketingStatus"))
24709      return true;
24710    if (xpp.getName().equals(prefix+"Identifier"))
24711      return true;
24712    if (xpp.getName().equals(prefix+"SubstanceAmount"))
24713      return true;
24714    if (xpp.getName().equals(prefix+"Coding"))
24715      return true;
24716    if (xpp.getName().equals(prefix+"SampledData"))
24717      return true;
24718    if (xpp.getName().equals(prefix+"Population"))
24719      return true;
24720    if (xpp.getName().equals(prefix+"Ratio"))
24721      return true;
24722    if (xpp.getName().equals(prefix+"Distance"))
24723      return true;
24724    if (xpp.getName().equals(prefix+"Age"))
24725      return true;
24726    if (xpp.getName().equals(prefix+"Reference"))
24727      return true;
24728    if (xpp.getName().equals(prefix+"TriggerDefinition"))
24729      return true;
24730    if (xpp.getName().equals(prefix+"Quantity"))
24731      return true;
24732    if (xpp.getName().equals(prefix+"Period"))
24733      return true;
24734    if (xpp.getName().equals(prefix+"Duration"))
24735      return true;
24736    if (xpp.getName().equals(prefix+"Range"))
24737      return true;
24738    if (xpp.getName().equals(prefix+"RelatedArtifact"))
24739      return true;
24740    if (xpp.getName().equals(prefix+"Annotation"))
24741      return true;
24742    if (xpp.getName().equals(prefix+"ProductShelfLife"))
24743      return true;
24744    if (xpp.getName().equals(prefix+"ContactDetail"))
24745      return true;
24746    if (xpp.getName().equals(prefix+"UsageContext"))
24747      return true;
24748    if (xpp.getName().equals(prefix+"Expression"))
24749      return true;
24750    if (xpp.getName().equals(prefix+"Signature"))
24751      return true;
24752    if (xpp.getName().equals(prefix+"Timing"))
24753      return true;
24754    if (xpp.getName().equals(prefix+"ProdCharacteristic"))
24755      return true;
24756    if (xpp.getName().equals(prefix+"CodeableConcept"))
24757      return true;
24758    if (xpp.getName().equals(prefix+"ParameterDefinition"))
24759      return true;
24760    if (xpp.getName().equals(prefix+"Parameters"))
24761      return true;
24762    if (xpp.getName().equals(prefix+"Account"))
24763      return true;
24764    if (xpp.getName().equals(prefix+"ActivityDefinition"))
24765      return true;
24766    if (xpp.getName().equals(prefix+"AdverseEvent"))
24767      return true;
24768    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
24769      return true;
24770    if (xpp.getName().equals(prefix+"Appointment"))
24771      return true;
24772    if (xpp.getName().equals(prefix+"AppointmentResponse"))
24773      return true;
24774    if (xpp.getName().equals(prefix+"AuditEvent"))
24775      return true;
24776    if (xpp.getName().equals(prefix+"Basic"))
24777      return true;
24778    if (xpp.getName().equals(prefix+"Binary"))
24779      return true;
24780    if (xpp.getName().equals(prefix+"BiologicallyDerivedProduct"))
24781      return true;
24782    if (xpp.getName().equals(prefix+"BodyStructure"))
24783      return true;
24784    if (xpp.getName().equals(prefix+"Bundle"))
24785      return true;
24786    if (xpp.getName().equals(prefix+"CapabilityStatement"))
24787      return true;
24788    if (xpp.getName().equals(prefix+"CarePlan"))
24789      return true;
24790    if (xpp.getName().equals(prefix+"CareTeam"))
24791      return true;
24792    if (xpp.getName().equals(prefix+"CatalogEntry"))
24793      return true;
24794    if (xpp.getName().equals(prefix+"ChargeItem"))
24795      return true;
24796    if (xpp.getName().equals(prefix+"ChargeItemDefinition"))
24797      return true;
24798    if (xpp.getName().equals(prefix+"Claim"))
24799      return true;
24800    if (xpp.getName().equals(prefix+"ClaimResponse"))
24801      return true;
24802    if (xpp.getName().equals(prefix+"ClinicalImpression"))
24803      return true;
24804    if (xpp.getName().equals(prefix+"CodeSystem"))
24805      return true;
24806    if (xpp.getName().equals(prefix+"Communication"))
24807      return true;
24808    if (xpp.getName().equals(prefix+"CommunicationRequest"))
24809      return true;
24810    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
24811      return true;
24812    if (xpp.getName().equals(prefix+"Composition"))
24813      return true;
24814    if (xpp.getName().equals(prefix+"ConceptMap"))
24815      return true;
24816    if (xpp.getName().equals(prefix+"Condition"))
24817      return true;
24818    if (xpp.getName().equals(prefix+"Consent"))
24819      return true;
24820    if (xpp.getName().equals(prefix+"Contract"))
24821      return true;
24822    if (xpp.getName().equals(prefix+"Coverage"))
24823      return true;
24824    if (xpp.getName().equals(prefix+"CoverageEligibilityRequest"))
24825      return true;
24826    if (xpp.getName().equals(prefix+"CoverageEligibilityResponse"))
24827      return true;
24828    if (xpp.getName().equals(prefix+"DetectedIssue"))
24829      return true;
24830    if (xpp.getName().equals(prefix+"Device"))
24831      return true;
24832    if (xpp.getName().equals(prefix+"DeviceDefinition"))
24833      return true;
24834    if (xpp.getName().equals(prefix+"DeviceMetric"))
24835      return true;
24836    if (xpp.getName().equals(prefix+"DeviceRequest"))
24837      return true;
24838    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
24839      return true;
24840    if (xpp.getName().equals(prefix+"DiagnosticReport"))
24841      return true;
24842    if (xpp.getName().equals(prefix+"DocumentManifest"))
24843      return true;
24844    if (xpp.getName().equals(prefix+"DocumentReference"))
24845      return true;
24846    if (xpp.getName().equals(prefix+"EffectEvidenceSynthesis"))
24847      return true;
24848    if (xpp.getName().equals(prefix+"Encounter"))
24849      return true;
24850    if (xpp.getName().equals(prefix+"Endpoint"))
24851      return true;
24852    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
24853      return true;
24854    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
24855      return true;
24856    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
24857      return true;
24858    if (xpp.getName().equals(prefix+"EventDefinition"))
24859      return true;
24860    if (xpp.getName().equals(prefix+"Evidence"))
24861      return true;
24862    if (xpp.getName().equals(prefix+"EvidenceVariable"))
24863      return true;
24864    if (xpp.getName().equals(prefix+"ExampleScenario"))
24865      return true;
24866    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
24867      return true;
24868    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
24869      return true;
24870    if (xpp.getName().equals(prefix+"Flag"))
24871      return true;
24872    if (xpp.getName().equals(prefix+"Goal"))
24873      return true;
24874    if (xpp.getName().equals(prefix+"GraphDefinition"))
24875      return true;
24876    if (xpp.getName().equals(prefix+"Group"))
24877      return true;
24878    if (xpp.getName().equals(prefix+"GuidanceResponse"))
24879      return true;
24880    if (xpp.getName().equals(prefix+"HealthcareService"))
24881      return true;
24882    if (xpp.getName().equals(prefix+"ImagingStudy"))
24883      return true;
24884    if (xpp.getName().equals(prefix+"Immunization"))
24885      return true;
24886    if (xpp.getName().equals(prefix+"ImmunizationEvaluation"))
24887      return true;
24888    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
24889      return true;
24890    if (xpp.getName().equals(prefix+"ImplementationGuide"))
24891      return true;
24892    if (xpp.getName().equals(prefix+"InsurancePlan"))
24893      return true;
24894    if (xpp.getName().equals(prefix+"Invoice"))
24895      return true;
24896    if (xpp.getName().equals(prefix+"Library"))
24897      return true;
24898    if (xpp.getName().equals(prefix+"Linkage"))
24899      return true;
24900    if (xpp.getName().equals(prefix+"List"))
24901      return true;
24902    if (xpp.getName().equals(prefix+"Location"))
24903      return true;
24904    if (xpp.getName().equals(prefix+"Measure"))
24905      return true;
24906    if (xpp.getName().equals(prefix+"MeasureReport"))
24907      return true;
24908    if (xpp.getName().equals(prefix+"Media"))
24909      return true;
24910    if (xpp.getName().equals(prefix+"Medication"))
24911      return true;
24912    if (xpp.getName().equals(prefix+"MedicationAdministration"))
24913      return true;
24914    if (xpp.getName().equals(prefix+"MedicationDispense"))
24915      return true;
24916    if (xpp.getName().equals(prefix+"MedicationKnowledge"))
24917      return true;
24918    if (xpp.getName().equals(prefix+"MedicationRequest"))
24919      return true;
24920    if (xpp.getName().equals(prefix+"MedicationStatement"))
24921      return true;
24922    if (xpp.getName().equals(prefix+"MedicinalProduct"))
24923      return true;
24924    if (xpp.getName().equals(prefix+"MedicinalProductAuthorization"))
24925      return true;
24926    if (xpp.getName().equals(prefix+"MedicinalProductContraindication"))
24927      return true;
24928    if (xpp.getName().equals(prefix+"MedicinalProductIndication"))
24929      return true;
24930    if (xpp.getName().equals(prefix+"MedicinalProductIngredient"))
24931      return true;
24932    if (xpp.getName().equals(prefix+"MedicinalProductInteraction"))
24933      return true;
24934    if (xpp.getName().equals(prefix+"MedicinalProductManufactured"))
24935      return true;
24936    if (xpp.getName().equals(prefix+"MedicinalProductPackaged"))
24937      return true;
24938    if (xpp.getName().equals(prefix+"MedicinalProductPharmaceutical"))
24939      return true;
24940    if (xpp.getName().equals(prefix+"MedicinalProductUndesirableEffect"))
24941      return true;
24942    if (xpp.getName().equals(prefix+"MessageDefinition"))
24943      return true;
24944    if (xpp.getName().equals(prefix+"MessageHeader"))
24945      return true;
24946    if (xpp.getName().equals(prefix+"MolecularSequence"))
24947      return true;
24948    if (xpp.getName().equals(prefix+"NamingSystem"))
24949      return true;
24950    if (xpp.getName().equals(prefix+"NutritionOrder"))
24951      return true;
24952    if (xpp.getName().equals(prefix+"Observation"))
24953      return true;
24954    if (xpp.getName().equals(prefix+"ObservationDefinition"))
24955      return true;
24956    if (xpp.getName().equals(prefix+"OperationDefinition"))
24957      return true;
24958    if (xpp.getName().equals(prefix+"OperationOutcome"))
24959      return true;
24960    if (xpp.getName().equals(prefix+"Organization"))
24961      return true;
24962    if (xpp.getName().equals(prefix+"OrganizationAffiliation"))
24963      return true;
24964    if (xpp.getName().equals(prefix+"Patient"))
24965      return true;
24966    if (xpp.getName().equals(prefix+"PaymentNotice"))
24967      return true;
24968    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
24969      return true;
24970    if (xpp.getName().equals(prefix+"Person"))
24971      return true;
24972    if (xpp.getName().equals(prefix+"PlanDefinition"))
24973      return true;
24974    if (xpp.getName().equals(prefix+"Practitioner"))
24975      return true;
24976    if (xpp.getName().equals(prefix+"PractitionerRole"))
24977      return true;
24978    if (xpp.getName().equals(prefix+"Procedure"))
24979      return true;
24980    if (xpp.getName().equals(prefix+"Provenance"))
24981      return true;
24982    if (xpp.getName().equals(prefix+"Questionnaire"))
24983      return true;
24984    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
24985      return true;
24986    if (xpp.getName().equals(prefix+"RelatedPerson"))
24987      return true;
24988    if (xpp.getName().equals(prefix+"RequestGroup"))
24989      return true;
24990    if (xpp.getName().equals(prefix+"ResearchDefinition"))
24991      return true;
24992    if (xpp.getName().equals(prefix+"ResearchElementDefinition"))
24993      return true;
24994    if (xpp.getName().equals(prefix+"ResearchStudy"))
24995      return true;
24996    if (xpp.getName().equals(prefix+"ResearchSubject"))
24997      return true;
24998    if (xpp.getName().equals(prefix+"RiskAssessment"))
24999      return true;
25000    if (xpp.getName().equals(prefix+"RiskEvidenceSynthesis"))
25001      return true;
25002    if (xpp.getName().equals(prefix+"Schedule"))
25003      return true;
25004    if (xpp.getName().equals(prefix+"SearchParameter"))
25005      return true;
25006    if (xpp.getName().equals(prefix+"ServiceRequest"))
25007      return true;
25008    if (xpp.getName().equals(prefix+"Slot"))
25009      return true;
25010    if (xpp.getName().equals(prefix+"Specimen"))
25011      return true;
25012    if (xpp.getName().equals(prefix+"SpecimenDefinition"))
25013      return true;
25014    if (xpp.getName().equals(prefix+"StructureDefinition"))
25015      return true;
25016    if (xpp.getName().equals(prefix+"StructureMap"))
25017      return true;
25018    if (xpp.getName().equals(prefix+"Subscription"))
25019      return true;
25020    if (xpp.getName().equals(prefix+"Substance"))
25021      return true;
25022    if (xpp.getName().equals(prefix+"SubstanceNucleicAcid"))
25023      return true;
25024    if (xpp.getName().equals(prefix+"SubstancePolymer"))
25025      return true;
25026    if (xpp.getName().equals(prefix+"SubstanceProtein"))
25027      return true;
25028    if (xpp.getName().equals(prefix+"SubstanceReferenceInformation"))
25029      return true;
25030    if (xpp.getName().equals(prefix+"SubstanceSourceMaterial"))
25031      return true;
25032    if (xpp.getName().equals(prefix+"SubstanceSpecification"))
25033      return true;
25034    if (xpp.getName().equals(prefix+"SupplyDelivery"))
25035      return true;
25036    if (xpp.getName().equals(prefix+"SupplyRequest"))
25037      return true;
25038    if (xpp.getName().equals(prefix+"Task"))
25039      return true;
25040    if (xpp.getName().equals(prefix+"TerminologyCapabilities"))
25041      return true;
25042    if (xpp.getName().equals(prefix+"TestReport"))
25043      return true;
25044    if (xpp.getName().equals(prefix+"TestScript"))
25045      return true;
25046    if (xpp.getName().equals(prefix+"ValueSet"))
25047      return true;
25048    if (xpp.getName().equals(prefix+"VerificationResult"))
25049      return true;
25050    if (xpp.getName().equals(prefix+"VisionPrescription"))
25051      return true;
25052    if (xpp.getName().equals(prefix+"Date"))
25053      return true;
25054    if (xpp.getName().equals(prefix+"DateTime"))
25055      return true;
25056    if (xpp.getName().equals(prefix+"Code"))
25057      return true;
25058    if (xpp.getName().equals(prefix+"String"))
25059      return true;
25060    if (xpp.getName().equals(prefix+"Integer"))
25061      return true;
25062    if (xpp.getName().equals(prefix+"Oid"))
25063      return true;
25064    if (xpp.getName().equals(prefix+"Canonical"))
25065      return true;
25066    if (xpp.getName().equals(prefix+"Uri"))
25067      return true;
25068    if (xpp.getName().equals(prefix+"Uuid"))
25069      return true;
25070    if (xpp.getName().equals(prefix+"Url"))
25071      return true;
25072    if (xpp.getName().equals(prefix+"Instant"))
25073      return true;
25074    if (xpp.getName().equals(prefix+"Boolean"))
25075      return true;
25076    if (xpp.getName().equals(prefix+"Base64Binary"))
25077      return true;
25078    if (xpp.getName().equals(prefix+"UnsignedInt"))
25079      return true;
25080    if (xpp.getName().equals(prefix+"Markdown"))
25081      return true;
25082    if (xpp.getName().equals(prefix+"Time"))
25083      return true;
25084    if (xpp.getName().equals(prefix+"Id"))
25085      return true;
25086    if (xpp.getName().equals(prefix+"PositiveInt"))
25087      return true;
25088    if (xpp.getName().equals(prefix+"Decimal"))
25089      return true;
25090    return false;
25091  }
25092
25093  @Override
25094    protected Type parseAnyType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
25095      if (type.equals("ElementDefinition"))
25096        return parseElementDefinition(xpp);
25097      else if (type.equals("DataRequirement"))
25098        return parseDataRequirement(xpp);
25099      else
25100        return parseType(xpp, type);
25101  }
25102
25103  protected void composeElementElements(Element element) throws IOException {
25104    for (Extension e : element.getExtension()) {
25105      composeExtension("extension", e);
25106    }
25107  }
25108
25109  protected void composeBackboneElementElements(BackboneElement element) throws IOException {
25110    composeElementElements(element);
25111    for (Extension e : element.getModifierExtension()) {
25112      composeExtension("modifierExtension", e);
25113    }
25114  }
25115
25116  protected void composeBackboneElementElements(BackboneType element) throws IOException {
25117    composeElementElements(element);
25118    for (Extension e : element.getModifierExtension()) {
25119      composeExtension("modifierExtension", e);
25120    }
25121  }
25122
25123  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
25124    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
25125      composeElementAttributes(value);
25126      if (value.getValue() != null) 
25127        xml.attribute("value", e.toCode(value.getValue()));
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 composeDate(String name, DateType value) throws IOException  {
25137    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
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 composeDateTime(String name, DateTimeType value) throws IOException  {
25150    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
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 composeCode(String name, CodeType value) throws IOException  {
25163    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
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 composeString(String name, StringType value) throws IOException  {
25176    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
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 composeInteger(String name, IntegerType value) throws IOException  {
25189    if (value != null) { // integer
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 composeOid(String name, OidType value) throws IOException  {
25202    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
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 composeCanonical(String name, CanonicalType value) throws IOException  {
25215    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// canonical
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 composeUri(String name, UriType value) throws IOException  {
25228    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
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 composeUuid(String name, UuidType value) throws IOException  {
25241    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
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 composeUrl(String name, UrlType value) throws IOException  {
25254    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// url
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 composeInstant(String name, InstantType value) throws IOException  {
25267    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
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 composeBoolean(String name, BooleanType value) throws IOException  {
25280    if (value != null) { // boolean
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 composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
25293    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
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 composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
25306    if (value != null) { // unsignedInt
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 composeMarkdown(String name, MarkdownType value) throws IOException  {
25319    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
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 composeTime(String name, TimeType value) throws IOException  {
25332    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
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 composeId(String name, IdType value) throws IOException  {
25345    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
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 composePositiveInt(String name, PositiveIntType value) throws IOException  {
25358    if (value != null) { // positiveInt
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 composeDecimal(String name, DecimalType value) throws IOException  {
25371    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
25372      composeElementAttributes(value);
25373      if (value.asStringValue() != null) 
25374        xml.attribute("value", value.asStringValue());
25375        
25376      xml.enter(FHIR_NS, name);
25377      composeElementElements(value);
25378      composeElementClose(value);
25379      xml.exit(FHIR_NS, name);
25380    }    
25381  }    
25382
25383  protected void composeExtension(String name, Extension element) throws IOException {
25384    if (element != null) {
25385      composeElementAttributes(element);
25386      if (element.hasUrlElement())
25387        xml.attribute("url", element.getUrlElement().getValue());
25388      xml.enter(FHIR_NS, name);
25389      composeExtensionElements(element);
25390      composeElementClose(element);
25391      xml.exit(FHIR_NS, name);
25392    }
25393  }
25394
25395  protected void composeExtensionElements(Extension element) throws IOException {
25396      composeElementElements(element);
25397      if (element.hasValue()) {
25398        composeType("value", element.getValue());
25399      }  }
25400
25401  protected void composeNarrative(String name, Narrative element) throws IOException {
25402    if (element != null) {
25403      composeElementAttributes(element);
25404      xml.enter(FHIR_NS, name);
25405      composeNarrativeElements(element);
25406      composeElementClose(element);
25407      xml.exit(FHIR_NS, name);
25408    }
25409  }
25410
25411  protected void composeNarrativeElements(Narrative element) throws IOException {
25412      composeElementElements(element);
25413      if (element.hasStatusElement())
25414        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
25415      if (element.hasDiv()) {
25416        composeXhtml("div", element.getDiv());
25417      }
25418  }
25419
25420  protected void composeCount(String name, Count element) throws IOException {
25421    if (element != null) {
25422      composeTypeAttributes(element);
25423      xml.enter(FHIR_NS, name);
25424      composeCountElements(element);
25425      composeElementClose(element);
25426      xml.exit(FHIR_NS, name);
25427    }
25428  }
25429
25430  protected void composeCountElements(Count element) throws IOException {
25431      composeQuantityElements(element);
25432  }
25433
25434  protected void composeDosage(String name, Dosage element) throws IOException {
25435    if (element != null) {
25436      composeTypeAttributes(element);
25437      xml.enter(FHIR_NS, name);
25438      composeDosageElements(element);
25439      composeElementClose(element);
25440      xml.exit(FHIR_NS, name);
25441    }
25442  }
25443
25444  protected void composeDosageElements(Dosage element) throws IOException {
25445      composeBackboneElementElements(element);
25446      if (element.hasSequenceElement()) {
25447        composeInteger("sequence", element.getSequenceElement());
25448      }
25449      if (element.hasTextElement()) {
25450        composeString("text", element.getTextElement());
25451      }
25452      if (element.hasAdditionalInstruction()) { 
25453        for (CodeableConcept e : element.getAdditionalInstruction()) 
25454          composeCodeableConcept("additionalInstruction", e);
25455      }
25456      if (element.hasPatientInstructionElement()) {
25457        composeString("patientInstruction", element.getPatientInstructionElement());
25458      }
25459      if (element.hasTiming()) {
25460        composeTiming("timing", element.getTiming());
25461      }
25462      if (element.hasAsNeeded()) {
25463        composeType("asNeeded", element.getAsNeeded());
25464      }      if (element.hasSite()) {
25465        composeCodeableConcept("site", element.getSite());
25466      }
25467      if (element.hasRoute()) {
25468        composeCodeableConcept("route", element.getRoute());
25469      }
25470      if (element.hasMethod()) {
25471        composeCodeableConcept("method", element.getMethod());
25472      }
25473      if (element.hasDoseAndRate()) { 
25474        for (Dosage.DosageDoseAndRateComponent e : element.getDoseAndRate()) 
25475          composeDosageDosageDoseAndRateComponent("doseAndRate", e);
25476      }
25477      if (element.hasMaxDosePerPeriod()) {
25478        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
25479      }
25480      if (element.hasMaxDosePerAdministration()) {
25481        composeQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
25482      }
25483      if (element.hasMaxDosePerLifetime()) {
25484        composeQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
25485      }
25486  }
25487
25488  protected void composeDosageDosageDoseAndRateComponent(String name, Dosage.DosageDoseAndRateComponent element) throws IOException {
25489    if (element != null) {
25490      composeElementAttributes(element);
25491      xml.enter(FHIR_NS, name);
25492      composeDosageDosageDoseAndRateComponentElements(element);
25493      composeElementClose(element);
25494      xml.exit(FHIR_NS, name);
25495    }
25496  }
25497
25498  protected void composeDosageDosageDoseAndRateComponentElements(Dosage.DosageDoseAndRateComponent element) throws IOException {
25499      composeElementElements(element);
25500      if (element.hasType()) {
25501        composeCodeableConcept("type", element.getType());
25502      }
25503      if (element.hasDose()) {
25504        composeType("dose", element.getDose());
25505      }      if (element.hasRate()) {
25506        composeType("rate", element.getRate());
25507      }  }
25508
25509  protected void composeMarketingStatus(String name, MarketingStatus element) throws IOException {
25510    if (element != null) {
25511      composeTypeAttributes(element);
25512      xml.enter(FHIR_NS, name);
25513      composeMarketingStatusElements(element);
25514      composeElementClose(element);
25515      xml.exit(FHIR_NS, name);
25516    }
25517  }
25518
25519  protected void composeMarketingStatusElements(MarketingStatus element) throws IOException {
25520      composeBackboneElementElements(element);
25521      if (element.hasCountry()) {
25522        composeCodeableConcept("country", element.getCountry());
25523      }
25524      if (element.hasJurisdiction()) {
25525        composeCodeableConcept("jurisdiction", element.getJurisdiction());
25526      }
25527      if (element.hasStatus()) {
25528        composeCodeableConcept("status", element.getStatus());
25529      }
25530      if (element.hasDateRange()) {
25531        composePeriod("dateRange", element.getDateRange());
25532      }
25533      if (element.hasRestoreDateElement()) {
25534        composeDateTime("restoreDate", element.getRestoreDateElement());
25535      }
25536  }
25537
25538  protected void composeSubstanceAmount(String name, SubstanceAmount element) throws IOException {
25539    if (element != null) {
25540      composeTypeAttributes(element);
25541      xml.enter(FHIR_NS, name);
25542      composeSubstanceAmountElements(element);
25543      composeElementClose(element);
25544      xml.exit(FHIR_NS, name);
25545    }
25546  }
25547
25548  protected void composeSubstanceAmountElements(SubstanceAmount element) throws IOException {
25549      composeBackboneElementElements(element);
25550      if (element.hasAmount()) {
25551        composeType("amount", element.getAmount());
25552      }      if (element.hasAmountType()) {
25553        composeCodeableConcept("amountType", element.getAmountType());
25554      }
25555      if (element.hasAmountTextElement()) {
25556        composeString("amountText", element.getAmountTextElement());
25557      }
25558      if (element.hasReferenceRange()) {
25559        composeSubstanceAmountSubstanceAmountReferenceRangeComponent("referenceRange", element.getReferenceRange());
25560      }
25561  }
25562
25563  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponent(String name, SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
25564    if (element != null) {
25565      composeElementAttributes(element);
25566      xml.enter(FHIR_NS, name);
25567      composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(element);
25568      composeElementClose(element);
25569      xml.exit(FHIR_NS, name);
25570    }
25571  }
25572
25573  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
25574      composeElementElements(element);
25575      if (element.hasLowLimit()) {
25576        composeQuantity("lowLimit", element.getLowLimit());
25577      }
25578      if (element.hasHighLimit()) {
25579        composeQuantity("highLimit", element.getHighLimit());
25580      }
25581  }
25582
25583  protected void composePopulation(String name, Population element) throws IOException {
25584    if (element != null) {
25585      composeTypeAttributes(element);
25586      xml.enter(FHIR_NS, name);
25587      composePopulationElements(element);
25588      composeElementClose(element);
25589      xml.exit(FHIR_NS, name);
25590    }
25591  }
25592
25593  protected void composePopulationElements(Population element) throws IOException {
25594      composeBackboneElementElements(element);
25595      if (element.hasAge()) {
25596        composeType("age", element.getAge());
25597      }      if (element.hasGender()) {
25598        composeCodeableConcept("gender", element.getGender());
25599      }
25600      if (element.hasRace()) {
25601        composeCodeableConcept("race", element.getRace());
25602      }
25603      if (element.hasPhysiologicalCondition()) {
25604        composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
25605      }
25606  }
25607
25608  protected void composeDistance(String name, Distance element) throws IOException {
25609    if (element != null) {
25610      composeTypeAttributes(element);
25611      xml.enter(FHIR_NS, name);
25612      composeDistanceElements(element);
25613      composeElementClose(element);
25614      xml.exit(FHIR_NS, name);
25615    }
25616  }
25617
25618  protected void composeDistanceElements(Distance element) throws IOException {
25619      composeQuantityElements(element);
25620  }
25621
25622  protected void composeAge(String name, Age element) throws IOException {
25623    if (element != null) {
25624      composeTypeAttributes(element);
25625      xml.enter(FHIR_NS, name);
25626      composeAgeElements(element);
25627      composeElementClose(element);
25628      xml.exit(FHIR_NS, name);
25629    }
25630  }
25631
25632  protected void composeAgeElements(Age element) throws IOException {
25633      composeQuantityElements(element);
25634  }
25635
25636  protected void composeDuration(String name, Duration element) throws IOException {
25637    if (element != null) {
25638      composeTypeAttributes(element);
25639      xml.enter(FHIR_NS, name);
25640      composeDurationElements(element);
25641      composeElementClose(element);
25642      xml.exit(FHIR_NS, name);
25643    }
25644  }
25645
25646  protected void composeDurationElements(Duration element) throws IOException {
25647      composeQuantityElements(element);
25648  }
25649
25650  protected void composeProductShelfLife(String name, ProductShelfLife element) throws IOException {
25651    if (element != null) {
25652      composeTypeAttributes(element);
25653      xml.enter(FHIR_NS, name);
25654      composeProductShelfLifeElements(element);
25655      composeElementClose(element);
25656      xml.exit(FHIR_NS, name);
25657    }
25658  }
25659
25660  protected void composeProductShelfLifeElements(ProductShelfLife element) throws IOException {
25661      composeBackboneElementElements(element);
25662      if (element.hasIdentifier()) {
25663        composeIdentifier("identifier", element.getIdentifier());
25664      }
25665      if (element.hasType()) {
25666        composeCodeableConcept("type", element.getType());
25667      }
25668      if (element.hasPeriod()) {
25669        composeQuantity("period", element.getPeriod());
25670      }
25671      if (element.hasSpecialPrecautionsForStorage()) { 
25672        for (CodeableConcept e : element.getSpecialPrecautionsForStorage()) 
25673          composeCodeableConcept("specialPrecautionsForStorage", e);
25674      }
25675  }
25676
25677  protected void composeTiming(String name, Timing element) throws IOException {
25678    if (element != null) {
25679      composeTypeAttributes(element);
25680      xml.enter(FHIR_NS, name);
25681      composeTimingElements(element);
25682      composeElementClose(element);
25683      xml.exit(FHIR_NS, name);
25684    }
25685  }
25686
25687  protected void composeTimingElements(Timing element) throws IOException {
25688      composeBackboneElementElements(element);
25689      if (element.hasEvent()) { 
25690        for (DateTimeType e : element.getEvent()) 
25691          composeDateTime("event", e);
25692      }
25693      if (element.hasRepeat()) {
25694        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
25695      }
25696      if (element.hasCode()) {
25697        composeCodeableConcept("code", element.getCode());
25698      }
25699  }
25700
25701  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
25702    if (element != null) {
25703      composeElementAttributes(element);
25704      xml.enter(FHIR_NS, name);
25705      composeTimingTimingRepeatComponentElements(element);
25706      composeElementClose(element);
25707      xml.exit(FHIR_NS, name);
25708    }
25709  }
25710
25711  protected void composeTimingTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
25712      composeElementElements(element);
25713      if (element.hasBounds()) {
25714        composeType("bounds", element.getBounds());
25715      }      if (element.hasCountElement()) {
25716        composePositiveInt("count", element.getCountElement());
25717      }
25718      if (element.hasCountMaxElement()) {
25719        composePositiveInt("countMax", element.getCountMaxElement());
25720      }
25721      if (element.hasDurationElement()) {
25722        composeDecimal("duration", element.getDurationElement());
25723      }
25724      if (element.hasDurationMaxElement()) {
25725        composeDecimal("durationMax", element.getDurationMaxElement());
25726      }
25727      if (element.hasDurationUnitElement())
25728        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
25729      if (element.hasFrequencyElement()) {
25730        composePositiveInt("frequency", element.getFrequencyElement());
25731      }
25732      if (element.hasFrequencyMaxElement()) {
25733        composePositiveInt("frequencyMax", element.getFrequencyMaxElement());
25734      }
25735      if (element.hasPeriodElement()) {
25736        composeDecimal("period", element.getPeriodElement());
25737      }
25738      if (element.hasPeriodMaxElement()) {
25739        composeDecimal("periodMax", element.getPeriodMaxElement());
25740      }
25741      if (element.hasPeriodUnitElement())
25742        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
25743        if (element.hasDayOfWeek()) 
25744          for (Enumeration<Timing.DayOfWeek> e : element.getDayOfWeek()) 
25745            composeEnumeration("dayOfWeek", e, new Timing.DayOfWeekEnumFactory());
25746      if (element.hasTimeOfDay()) { 
25747        for (TimeType e : element.getTimeOfDay()) 
25748          composeTime("timeOfDay", e);
25749      }
25750        if (element.hasWhen()) 
25751          for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
25752            composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
25753      if (element.hasOffsetElement()) {
25754        composeUnsignedInt("offset", element.getOffsetElement());
25755      }
25756  }
25757
25758  protected void composeProdCharacteristic(String name, ProdCharacteristic element) throws IOException {
25759    if (element != null) {
25760      composeTypeAttributes(element);
25761      xml.enter(FHIR_NS, name);
25762      composeProdCharacteristicElements(element);
25763      composeElementClose(element);
25764      xml.exit(FHIR_NS, name);
25765    }
25766  }
25767
25768  protected void composeProdCharacteristicElements(ProdCharacteristic element) throws IOException {
25769      composeBackboneElementElements(element);
25770      if (element.hasHeight()) {
25771        composeQuantity("height", element.getHeight());
25772      }
25773      if (element.hasWidth()) {
25774        composeQuantity("width", element.getWidth());
25775      }
25776      if (element.hasDepth()) {
25777        composeQuantity("depth", element.getDepth());
25778      }
25779      if (element.hasWeight()) {
25780        composeQuantity("weight", element.getWeight());
25781      }
25782      if (element.hasNominalVolume()) {
25783        composeQuantity("nominalVolume", element.getNominalVolume());
25784      }
25785      if (element.hasExternalDiameter()) {
25786        composeQuantity("externalDiameter", element.getExternalDiameter());
25787      }
25788      if (element.hasShapeElement()) {
25789        composeString("shape", element.getShapeElement());
25790      }
25791      if (element.hasColor()) { 
25792        for (StringType e : element.getColor()) 
25793          composeString("color", e);
25794      }
25795      if (element.hasImprint()) { 
25796        for (StringType e : element.getImprint()) 
25797          composeString("imprint", e);
25798      }
25799      if (element.hasImage()) { 
25800        for (Attachment e : element.getImage()) 
25801          composeAttachment("image", e);
25802      }
25803      if (element.hasScoring()) {
25804        composeCodeableConcept("scoring", element.getScoring());
25805      }
25806  }
25807
25808  protected void composeMeta(String name, Meta element) throws IOException {
25809    if (element != null) {
25810      composeTypeAttributes(element);
25811      xml.enter(FHIR_NS, name);
25812      composeMetaElements(element);
25813      composeElementClose(element);
25814      xml.exit(FHIR_NS, name);
25815    }
25816  }
25817
25818  protected void composeMetaElements(Meta element) throws IOException {
25819      composeElementElements(element);
25820      if (element.hasVersionIdElement()) {
25821        composeId("versionId", element.getVersionIdElement());
25822      }
25823      if (element.hasLastUpdatedElement()) {
25824        composeInstant("lastUpdated", element.getLastUpdatedElement());
25825      }
25826      if (element.hasSourceElement()) {
25827        composeUri("source", element.getSourceElement());
25828      }
25829      if (element.hasProfile()) { 
25830        for (CanonicalType e : element.getProfile()) 
25831          composeCanonical("profile", e);
25832      }
25833      if (element.hasSecurity()) { 
25834        for (Coding e : element.getSecurity()) 
25835          composeCoding("security", e);
25836      }
25837      if (element.hasTag()) { 
25838        for (Coding e : element.getTag()) 
25839          composeCoding("tag", e);
25840      }
25841  }
25842
25843  protected void composeAddress(String name, Address element) throws IOException {
25844    if (element != null) {
25845      composeTypeAttributes(element);
25846      xml.enter(FHIR_NS, name);
25847      composeAddressElements(element);
25848      composeElementClose(element);
25849      xml.exit(FHIR_NS, name);
25850    }
25851  }
25852
25853  protected void composeAddressElements(Address element) throws IOException {
25854      composeElementElements(element);
25855      if (element.hasUseElement())
25856        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
25857      if (element.hasTypeElement())
25858        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
25859      if (element.hasTextElement()) {
25860        composeString("text", element.getTextElement());
25861      }
25862      if (element.hasLine()) { 
25863        for (StringType e : element.getLine()) 
25864          composeString("line", e);
25865      }
25866      if (element.hasCityElement()) {
25867        composeString("city", element.getCityElement());
25868      }
25869      if (element.hasDistrictElement()) {
25870        composeString("district", element.getDistrictElement());
25871      }
25872      if (element.hasStateElement()) {
25873        composeString("state", element.getStateElement());
25874      }
25875      if (element.hasPostalCodeElement()) {
25876        composeString("postalCode", element.getPostalCodeElement());
25877      }
25878      if (element.hasCountryElement()) {
25879        composeString("country", element.getCountryElement());
25880      }
25881      if (element.hasPeriod()) {
25882        composePeriod("period", element.getPeriod());
25883      }
25884  }
25885
25886  protected void composeContributor(String name, Contributor element) throws IOException {
25887    if (element != null) {
25888      composeTypeAttributes(element);
25889      xml.enter(FHIR_NS, name);
25890      composeContributorElements(element);
25891      composeElementClose(element);
25892      xml.exit(FHIR_NS, name);
25893    }
25894  }
25895
25896  protected void composeContributorElements(Contributor element) throws IOException {
25897      composeElementElements(element);
25898      if (element.hasTypeElement())
25899        composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
25900      if (element.hasNameElement()) {
25901        composeString("name", element.getNameElement());
25902      }
25903      if (element.hasContact()) { 
25904        for (ContactDetail e : element.getContact()) 
25905          composeContactDetail("contact", e);
25906      }
25907  }
25908
25909  protected void composeAttachment(String name, Attachment element) throws IOException {
25910    if (element != null) {
25911      composeTypeAttributes(element);
25912      xml.enter(FHIR_NS, name);
25913      composeAttachmentElements(element);
25914      composeElementClose(element);
25915      xml.exit(FHIR_NS, name);
25916    }
25917  }
25918
25919  protected void composeAttachmentElements(Attachment element) throws IOException {
25920      composeElementElements(element);
25921      if (element.hasContentTypeElement()) {
25922        composeCode("contentType", element.getContentTypeElement());
25923      }
25924      if (element.hasLanguageElement()) {
25925        composeCode("language", element.getLanguageElement());
25926      }
25927      if (element.hasDataElement()) {
25928        composeBase64Binary("data", element.getDataElement());
25929      }
25930      if (element.hasUrlElement()) {
25931        composeUrl("url", element.getUrlElement());
25932      }
25933      if (element.hasSizeElement()) {
25934        composeUnsignedInt("size", element.getSizeElement());
25935      }
25936      if (element.hasHashElement()) {
25937        composeBase64Binary("hash", element.getHashElement());
25938      }
25939      if (element.hasTitleElement()) {
25940        composeString("title", element.getTitleElement());
25941      }
25942      if (element.hasCreationElement()) {
25943        composeDateTime("creation", element.getCreationElement());
25944      }
25945  }
25946
25947  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
25948    if (element != null) {
25949      composeTypeAttributes(element);
25950      xml.enter(FHIR_NS, name);
25951      composeDataRequirementElements(element);
25952      composeElementClose(element);
25953      xml.exit(FHIR_NS, name);
25954    }
25955  }
25956
25957  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
25958      composeElementElements(element);
25959      if (element.hasTypeElement()) {
25960        composeCode("type", element.getTypeElement());
25961      }
25962      if (element.hasProfile()) { 
25963        for (CanonicalType e : element.getProfile()) 
25964          composeCanonical("profile", e);
25965      }
25966      if (element.hasSubject()) {
25967        composeType("subject", element.getSubject());
25968      }      if (element.hasMustSupport()) { 
25969        for (StringType e : element.getMustSupport()) 
25970          composeString("mustSupport", e);
25971      }
25972      if (element.hasCodeFilter()) { 
25973        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
25974          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
25975      }
25976      if (element.hasDateFilter()) { 
25977        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
25978          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
25979      }
25980      if (element.hasLimitElement()) {
25981        composePositiveInt("limit", element.getLimitElement());
25982      }
25983      if (element.hasSort()) { 
25984        for (DataRequirement.DataRequirementSortComponent e : element.getSort()) 
25985          composeDataRequirementDataRequirementSortComponent("sort", e);
25986      }
25987  }
25988
25989  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
25990    if (element != null) {
25991      composeElementAttributes(element);
25992      xml.enter(FHIR_NS, name);
25993      composeDataRequirementDataRequirementCodeFilterComponentElements(element);
25994      composeElementClose(element);
25995      xml.exit(FHIR_NS, name);
25996    }
25997  }
25998
25999  protected void composeDataRequirementDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
26000      composeElementElements(element);
26001      if (element.hasPathElement()) {
26002        composeString("path", element.getPathElement());
26003      }
26004      if (element.hasSearchParamElement()) {
26005        composeString("searchParam", element.getSearchParamElement());
26006      }
26007      if (element.hasValueSetElement()) {
26008        composeCanonical("valueSet", element.getValueSetElement());
26009      }
26010      if (element.hasCode()) { 
26011        for (Coding e : element.getCode()) 
26012          composeCoding("code", e);
26013      }
26014  }
26015
26016  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
26017    if (element != null) {
26018      composeElementAttributes(element);
26019      xml.enter(FHIR_NS, name);
26020      composeDataRequirementDataRequirementDateFilterComponentElements(element);
26021      composeElementClose(element);
26022      xml.exit(FHIR_NS, name);
26023    }
26024  }
26025
26026  protected void composeDataRequirementDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
26027      composeElementElements(element);
26028      if (element.hasPathElement()) {
26029        composeString("path", element.getPathElement());
26030      }
26031      if (element.hasSearchParamElement()) {
26032        composeString("searchParam", element.getSearchParamElement());
26033      }
26034      if (element.hasValue()) {
26035        composeType("value", element.getValue());
26036      }  }
26037
26038  protected void composeDataRequirementDataRequirementSortComponent(String name, DataRequirement.DataRequirementSortComponent element) throws IOException {
26039    if (element != null) {
26040      composeElementAttributes(element);
26041      xml.enter(FHIR_NS, name);
26042      composeDataRequirementDataRequirementSortComponentElements(element);
26043      composeElementClose(element);
26044      xml.exit(FHIR_NS, name);
26045    }
26046  }
26047
26048  protected void composeDataRequirementDataRequirementSortComponentElements(DataRequirement.DataRequirementSortComponent element) throws IOException {
26049      composeElementElements(element);
26050      if (element.hasPathElement()) {
26051        composeString("path", element.getPathElement());
26052      }
26053      if (element.hasDirectionElement())
26054        composeEnumeration("direction", element.getDirectionElement(), new DataRequirement.SortDirectionEnumFactory());
26055  }
26056
26057  protected void composeMoney(String name, Money element) throws IOException {
26058    if (element != null) {
26059      composeTypeAttributes(element);
26060      xml.enter(FHIR_NS, name);
26061      composeMoneyElements(element);
26062      composeElementClose(element);
26063      xml.exit(FHIR_NS, name);
26064    }
26065  }
26066
26067  protected void composeMoneyElements(Money element) throws IOException {
26068      composeElementElements(element);
26069      if (element.hasValueElement()) {
26070        composeDecimal("value", element.getValueElement());
26071      }
26072      if (element.hasCurrencyElement()) {
26073        composeCode("currency", element.getCurrencyElement());
26074      }
26075  }
26076
26077  protected void composeHumanName(String name, HumanName element) throws IOException {
26078    if (element != null) {
26079      composeTypeAttributes(element);
26080      xml.enter(FHIR_NS, name);
26081      composeHumanNameElements(element);
26082      composeElementClose(element);
26083      xml.exit(FHIR_NS, name);
26084    }
26085  }
26086
26087  protected void composeHumanNameElements(HumanName element) throws IOException {
26088      composeElementElements(element);
26089      if (element.hasUseElement())
26090        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
26091      if (element.hasTextElement()) {
26092        composeString("text", element.getTextElement());
26093      }
26094      if (element.hasFamilyElement()) {
26095        composeString("family", element.getFamilyElement());
26096      }
26097      if (element.hasGiven()) { 
26098        for (StringType e : element.getGiven()) 
26099          composeString("given", e);
26100      }
26101      if (element.hasPrefix()) { 
26102        for (StringType e : element.getPrefix()) 
26103          composeString("prefix", e);
26104      }
26105      if (element.hasSuffix()) { 
26106        for (StringType e : element.getSuffix()) 
26107          composeString("suffix", e);
26108      }
26109      if (element.hasPeriod()) {
26110        composePeriod("period", element.getPeriod());
26111      }
26112  }
26113
26114  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
26115    if (element != null) {
26116      composeTypeAttributes(element);
26117      xml.enter(FHIR_NS, name);
26118      composeContactPointElements(element);
26119      composeElementClose(element);
26120      xml.exit(FHIR_NS, name);
26121    }
26122  }
26123
26124  protected void composeContactPointElements(ContactPoint element) throws IOException {
26125      composeElementElements(element);
26126      if (element.hasSystemElement())
26127        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
26128      if (element.hasValueElement()) {
26129        composeString("value", element.getValueElement());
26130      }
26131      if (element.hasUseElement())
26132        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
26133      if (element.hasRankElement()) {
26134        composePositiveInt("rank", element.getRankElement());
26135      }
26136      if (element.hasPeriod()) {
26137        composePeriod("period", element.getPeriod());
26138      }
26139  }
26140
26141  protected void composeIdentifier(String name, Identifier element) throws IOException {
26142    if (element != null) {
26143      composeTypeAttributes(element);
26144      xml.enter(FHIR_NS, name);
26145      composeIdentifierElements(element);
26146      composeElementClose(element);
26147      xml.exit(FHIR_NS, name);
26148    }
26149  }
26150
26151  protected void composeIdentifierElements(Identifier element) throws IOException {
26152      composeElementElements(element);
26153      if (element.hasUseElement())
26154        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
26155      if (element.hasType()) {
26156        composeCodeableConcept("type", element.getType());
26157      }
26158      if (element.hasSystemElement()) {
26159        composeUri("system", element.getSystemElement());
26160      }
26161      if (element.hasValueElement()) {
26162        composeString("value", element.getValueElement());
26163      }
26164      if (element.hasPeriod()) {
26165        composePeriod("period", element.getPeriod());
26166      }
26167      if (element.hasAssigner()) {
26168        composeReference("assigner", element.getAssigner());
26169      }
26170  }
26171
26172  protected void composeCoding(String name, Coding element) throws IOException {
26173    if (element != null) {
26174      composeTypeAttributes(element);
26175      xml.enter(FHIR_NS, name);
26176      composeCodingElements(element);
26177      composeElementClose(element);
26178      xml.exit(FHIR_NS, name);
26179    }
26180  }
26181
26182  protected void composeCodingElements(Coding element) throws IOException {
26183      composeElementElements(element);
26184      if (element.hasSystemElement()) {
26185        composeUri("system", element.getSystemElement());
26186      }
26187      if (element.hasVersionElement()) {
26188        composeString("version", element.getVersionElement());
26189      }
26190      if (element.hasCodeElement()) {
26191        composeCode("code", element.getCodeElement());
26192      }
26193      if (element.hasDisplayElement()) {
26194        composeString("display", element.getDisplayElement());
26195      }
26196      if (element.hasUserSelectedElement()) {
26197        composeBoolean("userSelected", element.getUserSelectedElement());
26198      }
26199  }
26200
26201  protected void composeSampledData(String name, SampledData element) throws IOException {
26202    if (element != null) {
26203      composeTypeAttributes(element);
26204      xml.enter(FHIR_NS, name);
26205      composeSampledDataElements(element);
26206      composeElementClose(element);
26207      xml.exit(FHIR_NS, name);
26208    }
26209  }
26210
26211  protected void composeSampledDataElements(SampledData element) throws IOException {
26212      composeElementElements(element);
26213      if (element.hasOrigin()) {
26214        composeQuantity("origin", element.getOrigin());
26215      }
26216      if (element.hasPeriodElement()) {
26217        composeDecimal("period", element.getPeriodElement());
26218      }
26219      if (element.hasFactorElement()) {
26220        composeDecimal("factor", element.getFactorElement());
26221      }
26222      if (element.hasLowerLimitElement()) {
26223        composeDecimal("lowerLimit", element.getLowerLimitElement());
26224      }
26225      if (element.hasUpperLimitElement()) {
26226        composeDecimal("upperLimit", element.getUpperLimitElement());
26227      }
26228      if (element.hasDimensionsElement()) {
26229        composePositiveInt("dimensions", element.getDimensionsElement());
26230      }
26231      if (element.hasDataElement()) {
26232        composeString("data", element.getDataElement());
26233      }
26234  }
26235
26236  protected void composeRatio(String name, Ratio element) throws IOException {
26237    if (element != null) {
26238      composeTypeAttributes(element);
26239      xml.enter(FHIR_NS, name);
26240      composeRatioElements(element);
26241      composeElementClose(element);
26242      xml.exit(FHIR_NS, name);
26243    }
26244  }
26245
26246  protected void composeRatioElements(Ratio element) throws IOException {
26247      composeElementElements(element);
26248      if (element.hasNumerator()) {
26249        composeQuantity("numerator", element.getNumerator());
26250      }
26251      if (element.hasDenominator()) {
26252        composeQuantity("denominator", element.getDenominator());
26253      }
26254  }
26255
26256  protected void composeReference(String name, Reference element) throws IOException {
26257    if (element != null) {
26258      composeTypeAttributes(element);
26259      xml.enter(FHIR_NS, name);
26260      composeReferenceElements(element);
26261      composeElementClose(element);
26262      xml.exit(FHIR_NS, name);
26263    }
26264  }
26265
26266  protected void composeReferenceElements(Reference element) throws IOException {
26267      composeElementElements(element);
26268      if (element.hasReferenceElement()) {
26269        composeString("reference", element.getReferenceElement());
26270      }
26271      if (element.hasTypeElement()) {
26272        composeUri("type", element.getTypeElement());
26273      }
26274      if (element.hasIdentifier()) {
26275        composeIdentifier("identifier", element.getIdentifier());
26276      }
26277      if (element.hasDisplayElement()) {
26278        composeString("display", element.getDisplayElement());
26279      }
26280  }
26281
26282  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
26283    if (element != null) {
26284      composeTypeAttributes(element);
26285      xml.enter(FHIR_NS, name);
26286      composeTriggerDefinitionElements(element);
26287      composeElementClose(element);
26288      xml.exit(FHIR_NS, name);
26289    }
26290  }
26291
26292  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
26293      composeElementElements(element);
26294      if (element.hasTypeElement())
26295        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
26296      if (element.hasNameElement()) {
26297        composeString("name", element.getNameElement());
26298      }
26299      if (element.hasTiming()) {
26300        composeType("timing", element.getTiming());
26301      }      if (element.hasData()) { 
26302        for (DataRequirement e : element.getData()) 
26303          composeDataRequirement("data", e);
26304      }
26305      if (element.hasCondition()) {
26306        composeExpression("condition", element.getCondition());
26307      }
26308  }
26309
26310  protected void composeQuantity(String name, Quantity element) throws IOException {
26311    if (element != null) {
26312      composeTypeAttributes(element);
26313      xml.enter(FHIR_NS, name);
26314      composeQuantityElements(element);
26315      composeElementClose(element);
26316      xml.exit(FHIR_NS, name);
26317    }
26318  }
26319
26320  protected void composeQuantityElements(Quantity element) throws IOException {
26321      composeElementElements(element);
26322      if (element.hasValueElement()) {
26323        composeDecimal("value", element.getValueElement());
26324      }
26325      if (element.hasComparatorElement())
26326        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
26327      if (element.hasUnitElement()) {
26328        composeString("unit", element.getUnitElement());
26329      }
26330      if (element.hasSystemElement()) {
26331        composeUri("system", element.getSystemElement());
26332      }
26333      if (element.hasCodeElement()) {
26334        composeCode("code", element.getCodeElement());
26335      }
26336  }
26337
26338  protected void composePeriod(String name, Period element) throws IOException {
26339    if (element != null) {
26340      composeTypeAttributes(element);
26341      xml.enter(FHIR_NS, name);
26342      composePeriodElements(element);
26343      composeElementClose(element);
26344      xml.exit(FHIR_NS, name);
26345    }
26346  }
26347
26348  protected void composePeriodElements(Period element) throws IOException {
26349      composeElementElements(element);
26350      if (element.hasStartElement()) {
26351        composeDateTime("start", element.getStartElement());
26352      }
26353      if (element.hasEndElement()) {
26354        composeDateTime("end", element.getEndElement());
26355      }
26356  }
26357
26358  protected void composeRange(String name, Range element) throws IOException {
26359    if (element != null) {
26360      composeTypeAttributes(element);
26361      xml.enter(FHIR_NS, name);
26362      composeRangeElements(element);
26363      composeElementClose(element);
26364      xml.exit(FHIR_NS, name);
26365    }
26366  }
26367
26368  protected void composeRangeElements(Range element) throws IOException {
26369      composeElementElements(element);
26370      if (element.hasLow()) {
26371        composeQuantity("low", element.getLow());
26372      }
26373      if (element.hasHigh()) {
26374        composeQuantity("high", element.getHigh());
26375      }
26376  }
26377
26378  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
26379    if (element != null) {
26380      composeTypeAttributes(element);
26381      xml.enter(FHIR_NS, name);
26382      composeRelatedArtifactElements(element);
26383      composeElementClose(element);
26384      xml.exit(FHIR_NS, name);
26385    }
26386  }
26387
26388  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
26389      composeElementElements(element);
26390      if (element.hasTypeElement())
26391        composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
26392      if (element.hasLabelElement()) {
26393        composeString("label", element.getLabelElement());
26394      }
26395      if (element.hasDisplayElement()) {
26396        composeString("display", element.getDisplayElement());
26397      }
26398      if (element.hasCitationElement()) {
26399        composeMarkdown("citation", element.getCitationElement());
26400      }
26401      if (element.hasUrlElement()) {
26402        composeUrl("url", element.getUrlElement());
26403      }
26404      if (element.hasDocument()) {
26405        composeAttachment("document", element.getDocument());
26406      }
26407      if (element.hasResourceElement()) {
26408        composeCanonical("resource", element.getResourceElement());
26409      }
26410  }
26411
26412  protected void composeAnnotation(String name, Annotation element) throws IOException {
26413    if (element != null) {
26414      composeTypeAttributes(element);
26415      xml.enter(FHIR_NS, name);
26416      composeAnnotationElements(element);
26417      composeElementClose(element);
26418      xml.exit(FHIR_NS, name);
26419    }
26420  }
26421
26422  protected void composeAnnotationElements(Annotation element) throws IOException {
26423      composeElementElements(element);
26424      if (element.hasAuthor()) {
26425        composeType("author", element.getAuthor());
26426      }      if (element.hasTimeElement()) {
26427        composeDateTime("time", element.getTimeElement());
26428      }
26429      if (element.hasTextElement()) {
26430        composeMarkdown("text", element.getTextElement());
26431      }
26432  }
26433
26434  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
26435    if (element != null) {
26436      composeTypeAttributes(element);
26437      xml.enter(FHIR_NS, name);
26438      composeContactDetailElements(element);
26439      composeElementClose(element);
26440      xml.exit(FHIR_NS, name);
26441    }
26442  }
26443
26444  protected void composeContactDetailElements(ContactDetail element) throws IOException {
26445      composeElementElements(element);
26446      if (element.hasNameElement()) {
26447        composeString("name", element.getNameElement());
26448      }
26449      if (element.hasTelecom()) { 
26450        for (ContactPoint e : element.getTelecom()) 
26451          composeContactPoint("telecom", e);
26452      }
26453  }
26454
26455  protected void composeUsageContext(String name, UsageContext element) throws IOException {
26456    if (element != null) {
26457      composeTypeAttributes(element);
26458      xml.enter(FHIR_NS, name);
26459      composeUsageContextElements(element);
26460      composeElementClose(element);
26461      xml.exit(FHIR_NS, name);
26462    }
26463  }
26464
26465  protected void composeUsageContextElements(UsageContext element) throws IOException {
26466      composeElementElements(element);
26467      if (element.hasCode()) {
26468        composeCoding("code", element.getCode());
26469      }
26470      if (element.hasValue()) {
26471        composeType("value", element.getValue());
26472      }  }
26473
26474  protected void composeExpression(String name, Expression element) throws IOException {
26475    if (element != null) {
26476      composeTypeAttributes(element);
26477      xml.enter(FHIR_NS, name);
26478      composeExpressionElements(element);
26479      composeElementClose(element);
26480      xml.exit(FHIR_NS, name);
26481    }
26482  }
26483
26484  protected void composeExpressionElements(Expression element) throws IOException {
26485      composeElementElements(element);
26486      if (element.hasDescriptionElement()) {
26487        composeString("description", element.getDescriptionElement());
26488      }
26489      if (element.hasNameElement()) {
26490        composeId("name", element.getNameElement());
26491      }
26492      if (element.hasLanguageElement())
26493        composeCode("language", element.getLanguageElement());
26494      if (element.hasExpressionElement()) {
26495        composeString("expression", element.getExpressionElement());
26496      }
26497      if (element.hasReferenceElement()) {
26498        composeUri("reference", element.getReferenceElement());
26499      }
26500  }
26501
26502  protected void composeSignature(String name, Signature element) throws IOException {
26503    if (element != null) {
26504      composeTypeAttributes(element);
26505      xml.enter(FHIR_NS, name);
26506      composeSignatureElements(element);
26507      composeElementClose(element);
26508      xml.exit(FHIR_NS, name);
26509    }
26510  }
26511
26512  protected void composeSignatureElements(Signature element) throws IOException {
26513      composeElementElements(element);
26514      if (element.hasType()) { 
26515        for (Coding e : element.getType()) 
26516          composeCoding("type", e);
26517      }
26518      if (element.hasWhenElement()) {
26519        composeInstant("when", element.getWhenElement());
26520      }
26521      if (element.hasWho()) {
26522        composeReference("who", element.getWho());
26523      }
26524      if (element.hasOnBehalfOf()) {
26525        composeReference("onBehalfOf", element.getOnBehalfOf());
26526      }
26527      if (element.hasTargetFormatElement()) {
26528        composeCode("targetFormat", element.getTargetFormatElement());
26529      }
26530      if (element.hasSigFormatElement()) {
26531        composeCode("sigFormat", element.getSigFormatElement());
26532      }
26533      if (element.hasDataElement()) {
26534        composeBase64Binary("data", element.getDataElement());
26535      }
26536  }
26537
26538  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
26539    if (element != null) {
26540      composeTypeAttributes(element);
26541      xml.enter(FHIR_NS, name);
26542      composeCodeableConceptElements(element);
26543      composeElementClose(element);
26544      xml.exit(FHIR_NS, name);
26545    }
26546  }
26547
26548  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
26549      composeElementElements(element);
26550      if (element.hasCoding()) { 
26551        for (Coding e : element.getCoding()) 
26552          composeCoding("coding", e);
26553      }
26554      if (element.hasTextElement()) {
26555        composeString("text", element.getTextElement());
26556      }
26557  }
26558
26559  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
26560    if (element != null) {
26561      composeTypeAttributes(element);
26562      xml.enter(FHIR_NS, name);
26563      composeParameterDefinitionElements(element);
26564      composeElementClose(element);
26565      xml.exit(FHIR_NS, name);
26566    }
26567  }
26568
26569  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
26570      composeElementElements(element);
26571      if (element.hasNameElement()) {
26572        composeCode("name", element.getNameElement());
26573      }
26574      if (element.hasUseElement())
26575        composeEnumeration("use", element.getUseElement(), new ParameterDefinition.ParameterUseEnumFactory());
26576      if (element.hasMinElement()) {
26577        composeInteger("min", element.getMinElement());
26578      }
26579      if (element.hasMaxElement()) {
26580        composeString("max", element.getMaxElement());
26581      }
26582      if (element.hasDocumentationElement()) {
26583        composeString("documentation", element.getDocumentationElement());
26584      }
26585      if (element.hasTypeElement()) {
26586        composeCode("type", element.getTypeElement());
26587      }
26588      if (element.hasProfileElement()) {
26589        composeCanonical("profile", element.getProfileElement());
26590      }
26591  }
26592
26593  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
26594    if (element != null) {
26595      composeElementAttributes(element);
26596      xml.enter(FHIR_NS, name);
26597      composeElementDefinitionElements(element);
26598      composeElementClose(element);
26599      xml.exit(FHIR_NS, name);
26600    }
26601  }
26602
26603  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
26604      composeBackboneElementElements(element);
26605      if (element.hasPathElement()) {
26606        composeString("path", element.getPathElement());
26607      }
26608        if (element.hasRepresentation()) 
26609          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
26610            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
26611      if (element.hasSliceNameElement()) {
26612        composeString("sliceName", element.getSliceNameElement());
26613      }
26614      if (element.hasSliceIsConstrainingElement()) {
26615        composeBoolean("sliceIsConstraining", element.getSliceIsConstrainingElement());
26616      }
26617      if (element.hasLabelElement()) {
26618        composeString("label", element.getLabelElement());
26619      }
26620      if (element.hasCode()) { 
26621        for (Coding e : element.getCode()) 
26622          composeCoding("code", e);
26623      }
26624      if (element.hasSlicing()) {
26625        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
26626      }
26627      if (element.hasShortElement()) {
26628        composeString("short", element.getShortElement());
26629      }
26630      if (element.hasDefinitionElement()) {
26631        composeMarkdown("definition", element.getDefinitionElement());
26632      }
26633      if (element.hasCommentElement()) {
26634        composeMarkdown("comment", element.getCommentElement());
26635      }
26636      if (element.hasRequirementsElement()) {
26637        composeMarkdown("requirements", element.getRequirementsElement());
26638      }
26639      if (element.hasAlias()) { 
26640        for (StringType e : element.getAlias()) 
26641          composeString("alias", e);
26642      }
26643      if (element.hasMinElement()) {
26644        composeUnsignedInt("min", element.getMinElement());
26645      }
26646      if (element.hasMaxElement()) {
26647        composeString("max", element.getMaxElement());
26648      }
26649      if (element.hasBase()) {
26650        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
26651      }
26652      if (element.hasContentReferenceElement()) {
26653        composeUri("contentReference", element.getContentReferenceElement());
26654      }
26655      if (element.hasType()) { 
26656        for (ElementDefinition.TypeRefComponent e : element.getType()) 
26657          composeElementDefinitionTypeRefComponent("type", e);
26658      }
26659      if (element.hasDefaultValue()) {
26660        composeType("defaultValue", element.getDefaultValue());
26661      }      if (element.hasMeaningWhenMissingElement()) {
26662        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
26663      }
26664      if (element.hasOrderMeaningElement()) {
26665        composeString("orderMeaning", element.getOrderMeaningElement());
26666      }
26667      if (element.hasFixed()) {
26668        composeType("fixed", element.getFixed());
26669      }      if (element.hasPattern()) {
26670        composeType("pattern", element.getPattern());
26671      }      if (element.hasExample()) { 
26672        for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
26673          composeElementDefinitionElementDefinitionExampleComponent("example", e);
26674      }
26675      if (element.hasMinValue()) {
26676        composeType("minValue", element.getMinValue());
26677      }      if (element.hasMaxValue()) {
26678        composeType("maxValue", element.getMaxValue());
26679      }      if (element.hasMaxLengthElement()) {
26680        composeInteger("maxLength", element.getMaxLengthElement());
26681      }
26682      if (element.hasCondition()) { 
26683        for (IdType e : element.getCondition()) 
26684          composeId("condition", e);
26685      }
26686      if (element.hasConstraint()) { 
26687        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
26688          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
26689      }
26690      if (element.hasMustSupportElement()) {
26691        composeBoolean("mustSupport", element.getMustSupportElement());
26692      }
26693      if (element.hasIsModifierElement()) {
26694        composeBoolean("isModifier", element.getIsModifierElement());
26695      }
26696      if (element.hasIsModifierReasonElement()) {
26697        composeString("isModifierReason", element.getIsModifierReasonElement());
26698      }
26699      if (element.hasIsSummaryElement()) {
26700        composeBoolean("isSummary", element.getIsSummaryElement());
26701      }
26702      if (element.hasBinding()) {
26703        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
26704      }
26705      if (element.hasMapping()) { 
26706        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
26707          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
26708      }
26709  }
26710
26711  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
26712    if (element != null) {
26713      composeElementAttributes(element);
26714      xml.enter(FHIR_NS, name);
26715      composeElementDefinitionElementDefinitionSlicingComponentElements(element);
26716      composeElementClose(element);
26717      xml.exit(FHIR_NS, name);
26718    }
26719  }
26720
26721  protected void composeElementDefinitionElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
26722      composeElementElements(element);
26723      if (element.hasDiscriminator()) { 
26724        for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
26725          composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
26726      }
26727      if (element.hasDescriptionElement()) {
26728        composeString("description", element.getDescriptionElement());
26729      }
26730      if (element.hasOrderedElement()) {
26731        composeBoolean("ordered", element.getOrderedElement());
26732      }
26733      if (element.hasRulesElement())
26734        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
26735  }
26736
26737  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
26738    if (element != null) {
26739      composeElementAttributes(element);
26740      xml.enter(FHIR_NS, name);
26741      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(element);
26742      composeElementClose(element);
26743      xml.exit(FHIR_NS, name);
26744    }
26745  }
26746
26747  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
26748      composeElementElements(element);
26749      if (element.hasTypeElement())
26750        composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
26751      if (element.hasPathElement()) {
26752        composeString("path", element.getPathElement());
26753      }
26754  }
26755
26756  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
26757    if (element != null) {
26758      composeElementAttributes(element);
26759      xml.enter(FHIR_NS, name);
26760      composeElementDefinitionElementDefinitionBaseComponentElements(element);
26761      composeElementClose(element);
26762      xml.exit(FHIR_NS, name);
26763    }
26764  }
26765
26766  protected void composeElementDefinitionElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
26767      composeElementElements(element);
26768      if (element.hasPathElement()) {
26769        composeString("path", element.getPathElement());
26770      }
26771      if (element.hasMinElement()) {
26772        composeUnsignedInt("min", element.getMinElement());
26773      }
26774      if (element.hasMaxElement()) {
26775        composeString("max", element.getMaxElement());
26776      }
26777  }
26778
26779  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
26780    if (element != null) {
26781      composeElementAttributes(element);
26782      xml.enter(FHIR_NS, name);
26783      composeElementDefinitionTypeRefComponentElements(element);
26784      composeElementClose(element);
26785      xml.exit(FHIR_NS, name);
26786    }
26787  }
26788
26789  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
26790      composeElementElements(element);
26791      if (element.hasCodeElement()) {
26792        composeUri("code", element.getCodeElement());
26793      }
26794      if (element.hasProfile()) { 
26795        for (CanonicalType e : element.getProfile()) 
26796          composeCanonical("profile", e);
26797      }
26798      if (element.hasTargetProfile()) { 
26799        for (CanonicalType e : element.getTargetProfile()) 
26800          composeCanonical("targetProfile", e);
26801      }
26802        if (element.hasAggregation()) 
26803          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
26804            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
26805      if (element.hasVersioningElement())
26806        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
26807  }
26808
26809  protected void composeElementDefinitionElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
26810    if (element != null) {
26811      composeElementAttributes(element);
26812      xml.enter(FHIR_NS, name);
26813      composeElementDefinitionElementDefinitionExampleComponentElements(element);
26814      composeElementClose(element);
26815      xml.exit(FHIR_NS, name);
26816    }
26817  }
26818
26819  protected void composeElementDefinitionElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
26820      composeElementElements(element);
26821      if (element.hasLabelElement()) {
26822        composeString("label", element.getLabelElement());
26823      }
26824      if (element.hasValue()) {
26825        composeType("value", element.getValue());
26826      }  }
26827
26828  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
26829    if (element != null) {
26830      composeElementAttributes(element);
26831      xml.enter(FHIR_NS, name);
26832      composeElementDefinitionElementDefinitionConstraintComponentElements(element);
26833      composeElementClose(element);
26834      xml.exit(FHIR_NS, name);
26835    }
26836  }
26837
26838  protected void composeElementDefinitionElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
26839      composeElementElements(element);
26840      if (element.hasKeyElement()) {
26841        composeId("key", element.getKeyElement());
26842      }
26843      if (element.hasRequirementsElement()) {
26844        composeString("requirements", element.getRequirementsElement());
26845      }
26846      if (element.hasSeverityElement())
26847        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
26848      if (element.hasHumanElement()) {
26849        composeString("human", element.getHumanElement());
26850      }
26851      if (element.hasExpressionElement()) {
26852        composeString("expression", element.getExpressionElement());
26853      }
26854      if (element.hasXpathElement()) {
26855        composeString("xpath", element.getXpathElement());
26856      }
26857      if (element.hasSourceElement()) {
26858        composeCanonical("source", element.getSourceElement());
26859      }
26860  }
26861
26862  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
26863    if (element != null) {
26864      composeElementAttributes(element);
26865      xml.enter(FHIR_NS, name);
26866      composeElementDefinitionElementDefinitionBindingComponentElements(element);
26867      composeElementClose(element);
26868      xml.exit(FHIR_NS, name);
26869    }
26870  }
26871
26872  protected void composeElementDefinitionElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
26873      composeElementElements(element);
26874      if (element.hasStrengthElement())
26875        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
26876      if (element.hasDescriptionElement()) {
26877        composeString("description", element.getDescriptionElement());
26878      }
26879      if (element.hasValueSetElement()) {
26880        composeCanonical("valueSet", element.getValueSetElement());
26881      }
26882  }
26883
26884  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
26885    if (element != null) {
26886      composeElementAttributes(element);
26887      xml.enter(FHIR_NS, name);
26888      composeElementDefinitionElementDefinitionMappingComponentElements(element);
26889      composeElementClose(element);
26890      xml.exit(FHIR_NS, name);
26891    }
26892  }
26893
26894  protected void composeElementDefinitionElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
26895      composeElementElements(element);
26896      if (element.hasIdentityElement()) {
26897        composeId("identity", element.getIdentityElement());
26898      }
26899      if (element.hasLanguageElement()) {
26900        composeCode("language", element.getLanguageElement());
26901      }
26902      if (element.hasMapElement()) {
26903        composeString("map", element.getMapElement());
26904      }
26905      if (element.hasCommentElement()) {
26906        composeString("comment", element.getCommentElement());
26907      }
26908  }
26909
26910  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
26911    composeResourceAttributes(element);
26912  }
26913
26914  protected void composeDomainResourceElements(DomainResource element) throws IOException {
26915    composeResourceElements(element);
26916      if (element.hasText()) {
26917        composeNarrative("text", element.getText());
26918      }
26919      if (element.hasContained()) { 
26920        for (Resource e : element.getContained()) 
26921        {
26922          xml.enter(FHIR_NS, "contained");
26923          composeResource(e);
26924          xml.exit(FHIR_NS, "contained");
26925        }
26926      }
26927      if (element.hasExtension()) 
26928        for (Extension e : element.getExtension()) 
26929          composeExtension("extension", e);
26930      if (element.hasModifierExtension()) { 
26931        for (Extension e : element.getModifierExtension()) 
26932          composeExtension("modifierExtension", e);
26933      }
26934  }
26935
26936  protected void composeParameters(String name, Parameters element) throws IOException {
26937    if (element != null) {
26938      composeResourceAttributes(element);
26939      xml.enter(FHIR_NS, name);
26940      composeParametersElements(element);
26941      composeElementClose(element);
26942      xml.exit(FHIR_NS, name);
26943    }
26944  }
26945
26946  protected void composeParametersElements(Parameters element) throws IOException {
26947      composeResourceElements(element);
26948      if (element.hasParameter()) { 
26949        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
26950          composeParametersParametersParameterComponent("parameter", e);
26951      }
26952  }
26953
26954  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
26955    if (element != null) {
26956      composeElementAttributes(element);
26957      xml.enter(FHIR_NS, name);
26958      composeParametersParametersParameterComponentElements(element);
26959      composeElementClose(element);
26960      xml.exit(FHIR_NS, name);
26961    }
26962  }
26963
26964  protected void composeParametersParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
26965      composeBackboneElementElements(element);
26966      if (element.hasNameElement()) {
26967        composeString("name", element.getNameElement());
26968      }
26969      if (element.hasValue()) {
26970        composeType("value", element.getValue());
26971      }      if (element.hasResource()) {
26972        xml.enter(FHIR_NS, "resource");
26973        composeResource(element.getResource());
26974        xml.exit(FHIR_NS, "resource");
26975      }
26976      if (element.hasPart()) { 
26977        for (Parameters.ParametersParameterComponent e : element.getPart()) 
26978          composeParametersParametersParameterComponent("part", e);
26979      }
26980  }
26981
26982  protected void composeResourceAttributes(Resource element) throws IOException {
26983    if (style != OutputStyle.CANONICAL)
26984      for (String comment : element.getFormatCommentsPre())
26985        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
26986  }
26987
26988  protected void composeResourceElements(Resource element) throws IOException {
26989      if (element.hasIdElement()) {
26990        composeId("id", element.getIdElement());
26991      }
26992      if (element.hasMeta()) {
26993        composeMeta("meta", element.getMeta());
26994      }
26995      if (element.hasImplicitRulesElement()) {
26996        composeUri("implicitRules", element.getImplicitRulesElement());
26997      }
26998      if (element.hasLanguageElement()) {
26999        composeCode("language", element.getLanguageElement());
27000      }
27001  }
27002
27003  protected void composeAccount(String name, Account element) throws IOException {
27004    if (element != null) {
27005      composeDomainResourceAttributes(element);
27006      xml.enter(FHIR_NS, name);
27007      composeAccountElements(element);
27008      composeElementClose(element);
27009      xml.exit(FHIR_NS, name);
27010    }
27011  }
27012
27013  protected void composeAccountElements(Account element) throws IOException {
27014      composeDomainResourceElements(element);
27015      if (element.hasIdentifier()) { 
27016        for (Identifier e : element.getIdentifier()) 
27017          composeIdentifier("identifier", e);
27018      }
27019      if (element.hasStatusElement())
27020        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
27021      if (element.hasType()) {
27022        composeCodeableConcept("type", element.getType());
27023      }
27024      if (element.hasNameElement()) {
27025        composeString("name", element.getNameElement());
27026      }
27027      if (element.hasSubject()) { 
27028        for (Reference e : element.getSubject()) 
27029          composeReference("subject", e);
27030      }
27031      if (element.hasServicePeriod()) {
27032        composePeriod("servicePeriod", element.getServicePeriod());
27033      }
27034      if (element.hasCoverage()) { 
27035        for (Account.CoverageComponent e : element.getCoverage()) 
27036          composeAccountCoverageComponent("coverage", e);
27037      }
27038      if (element.hasOwner()) {
27039        composeReference("owner", element.getOwner());
27040      }
27041      if (element.hasDescriptionElement()) {
27042        composeString("description", element.getDescriptionElement());
27043      }
27044      if (element.hasGuarantor()) { 
27045        for (Account.GuarantorComponent e : element.getGuarantor()) 
27046          composeAccountGuarantorComponent("guarantor", e);
27047      }
27048      if (element.hasPartOf()) {
27049        composeReference("partOf", element.getPartOf());
27050      }
27051  }
27052
27053  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
27054    if (element != null) {
27055      composeElementAttributes(element);
27056      xml.enter(FHIR_NS, name);
27057      composeAccountCoverageComponentElements(element);
27058      composeElementClose(element);
27059      xml.exit(FHIR_NS, name);
27060    }
27061  }
27062
27063  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
27064      composeBackboneElementElements(element);
27065      if (element.hasCoverage()) {
27066        composeReference("coverage", element.getCoverage());
27067      }
27068      if (element.hasPriorityElement()) {
27069        composePositiveInt("priority", element.getPriorityElement());
27070      }
27071  }
27072
27073  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
27074    if (element != null) {
27075      composeElementAttributes(element);
27076      xml.enter(FHIR_NS, name);
27077      composeAccountGuarantorComponentElements(element);
27078      composeElementClose(element);
27079      xml.exit(FHIR_NS, name);
27080    }
27081  }
27082
27083  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
27084      composeBackboneElementElements(element);
27085      if (element.hasParty()) {
27086        composeReference("party", element.getParty());
27087      }
27088      if (element.hasOnHoldElement()) {
27089        composeBoolean("onHold", element.getOnHoldElement());
27090      }
27091      if (element.hasPeriod()) {
27092        composePeriod("period", element.getPeriod());
27093      }
27094  }
27095
27096  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
27097    if (element != null) {
27098      composeDomainResourceAttributes(element);
27099      xml.enter(FHIR_NS, name);
27100      composeActivityDefinitionElements(element);
27101      composeElementClose(element);
27102      xml.exit(FHIR_NS, name);
27103    }
27104  }
27105
27106  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
27107      composeDomainResourceElements(element);
27108      if (element.hasUrlElement()) {
27109        composeUri("url", element.getUrlElement());
27110      }
27111      if (element.hasIdentifier()) { 
27112        for (Identifier e : element.getIdentifier()) 
27113          composeIdentifier("identifier", e);
27114      }
27115      if (element.hasVersionElement()) {
27116        composeString("version", element.getVersionElement());
27117      }
27118      if (element.hasNameElement()) {
27119        composeString("name", element.getNameElement());
27120      }
27121      if (element.hasTitleElement()) {
27122        composeString("title", element.getTitleElement());
27123      }
27124      if (element.hasSubtitleElement()) {
27125        composeString("subtitle", element.getSubtitleElement());
27126      }
27127      if (element.hasStatusElement())
27128        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
27129      if (element.hasExperimentalElement()) {
27130        composeBoolean("experimental", element.getExperimentalElement());
27131      }
27132      if (element.hasSubject()) {
27133        composeType("subject", element.getSubject());
27134      }      if (element.hasDateElement()) {
27135        composeDateTime("date", element.getDateElement());
27136      }
27137      if (element.hasPublisherElement()) {
27138        composeString("publisher", element.getPublisherElement());
27139      }
27140      if (element.hasContact()) { 
27141        for (ContactDetail e : element.getContact()) 
27142          composeContactDetail("contact", e);
27143      }
27144      if (element.hasDescriptionElement()) {
27145        composeMarkdown("description", element.getDescriptionElement());
27146      }
27147      if (element.hasUseContext()) { 
27148        for (UsageContext e : element.getUseContext()) 
27149          composeUsageContext("useContext", e);
27150      }
27151      if (element.hasJurisdiction()) { 
27152        for (CodeableConcept e : element.getJurisdiction()) 
27153          composeCodeableConcept("jurisdiction", e);
27154      }
27155      if (element.hasPurposeElement()) {
27156        composeMarkdown("purpose", element.getPurposeElement());
27157      }
27158      if (element.hasUsageElement()) {
27159        composeString("usage", element.getUsageElement());
27160      }
27161      if (element.hasCopyrightElement()) {
27162        composeMarkdown("copyright", element.getCopyrightElement());
27163      }
27164      if (element.hasApprovalDateElement()) {
27165        composeDate("approvalDate", element.getApprovalDateElement());
27166      }
27167      if (element.hasLastReviewDateElement()) {
27168        composeDate("lastReviewDate", element.getLastReviewDateElement());
27169      }
27170      if (element.hasEffectivePeriod()) {
27171        composePeriod("effectivePeriod", element.getEffectivePeriod());
27172      }
27173      if (element.hasTopic()) { 
27174        for (CodeableConcept e : element.getTopic()) 
27175          composeCodeableConcept("topic", e);
27176      }
27177      if (element.hasAuthor()) { 
27178        for (ContactDetail e : element.getAuthor()) 
27179          composeContactDetail("author", e);
27180      }
27181      if (element.hasEditor()) { 
27182        for (ContactDetail e : element.getEditor()) 
27183          composeContactDetail("editor", e);
27184      }
27185      if (element.hasReviewer()) { 
27186        for (ContactDetail e : element.getReviewer()) 
27187          composeContactDetail("reviewer", e);
27188      }
27189      if (element.hasEndorser()) { 
27190        for (ContactDetail e : element.getEndorser()) 
27191          composeContactDetail("endorser", e);
27192      }
27193      if (element.hasRelatedArtifact()) { 
27194        for (RelatedArtifact e : element.getRelatedArtifact()) 
27195          composeRelatedArtifact("relatedArtifact", e);
27196      }
27197      if (element.hasLibrary()) { 
27198        for (CanonicalType e : element.getLibrary()) 
27199          composeCanonical("library", e);
27200      }
27201      if (element.hasKindElement())
27202        composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.ActivityDefinitionKindEnumFactory());
27203      if (element.hasProfileElement()) {
27204        composeCanonical("profile", element.getProfileElement());
27205      }
27206      if (element.hasCode()) {
27207        composeCodeableConcept("code", element.getCode());
27208      }
27209      if (element.hasIntentElement())
27210        composeEnumeration("intent", element.getIntentElement(), new ActivityDefinition.RequestIntentEnumFactory());
27211      if (element.hasPriorityElement())
27212        composeEnumeration("priority", element.getPriorityElement(), new ActivityDefinition.RequestPriorityEnumFactory());
27213      if (element.hasDoNotPerformElement()) {
27214        composeBoolean("doNotPerform", element.getDoNotPerformElement());
27215      }
27216      if (element.hasTiming()) {
27217        composeType("timing", element.getTiming());
27218      }      if (element.hasLocation()) {
27219        composeReference("location", element.getLocation());
27220      }
27221      if (element.hasParticipant()) { 
27222        for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
27223          composeActivityDefinitionActivityDefinitionParticipantComponent("participant", e);
27224      }
27225      if (element.hasProduct()) {
27226        composeType("product", element.getProduct());
27227      }      if (element.hasQuantity()) {
27228        composeQuantity("quantity", element.getQuantity());
27229      }
27230      if (element.hasDosage()) { 
27231        for (Dosage e : element.getDosage()) 
27232          composeDosage("dosage", e);
27233      }
27234      if (element.hasBodySite()) { 
27235        for (CodeableConcept e : element.getBodySite()) 
27236          composeCodeableConcept("bodySite", e);
27237      }
27238      if (element.hasSpecimenRequirement()) { 
27239        for (Reference e : element.getSpecimenRequirement()) 
27240          composeReference("specimenRequirement", e);
27241      }
27242      if (element.hasObservationRequirement()) { 
27243        for (Reference e : element.getObservationRequirement()) 
27244          composeReference("observationRequirement", e);
27245      }
27246      if (element.hasObservationResultRequirement()) { 
27247        for (Reference e : element.getObservationResultRequirement()) 
27248          composeReference("observationResultRequirement", e);
27249      }
27250      if (element.hasTransformElement()) {
27251        composeCanonical("transform", element.getTransformElement());
27252      }
27253      if (element.hasDynamicValue()) { 
27254        for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
27255          composeActivityDefinitionActivityDefinitionDynamicValueComponent("dynamicValue", e);
27256      }
27257  }
27258
27259  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
27260    if (element != null) {
27261      composeElementAttributes(element);
27262      xml.enter(FHIR_NS, name);
27263      composeActivityDefinitionActivityDefinitionParticipantComponentElements(element);
27264      composeElementClose(element);
27265      xml.exit(FHIR_NS, name);
27266    }
27267  }
27268
27269  protected void composeActivityDefinitionActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
27270      composeBackboneElementElements(element);
27271      if (element.hasTypeElement())
27272        composeEnumeration("type", element.getTypeElement(), new ActivityDefinition.ActivityParticipantTypeEnumFactory());
27273      if (element.hasRole()) {
27274        composeCodeableConcept("role", element.getRole());
27275      }
27276  }
27277
27278  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
27279    if (element != null) {
27280      composeElementAttributes(element);
27281      xml.enter(FHIR_NS, name);
27282      composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(element);
27283      composeElementClose(element);
27284      xml.exit(FHIR_NS, name);
27285    }
27286  }
27287
27288  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
27289      composeBackboneElementElements(element);
27290      if (element.hasPathElement()) {
27291        composeString("path", element.getPathElement());
27292      }
27293      if (element.hasExpression()) {
27294        composeExpression("expression", element.getExpression());
27295      }
27296  }
27297
27298  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
27299    if (element != null) {
27300      composeDomainResourceAttributes(element);
27301      xml.enter(FHIR_NS, name);
27302      composeAdverseEventElements(element);
27303      composeElementClose(element);
27304      xml.exit(FHIR_NS, name);
27305    }
27306  }
27307
27308  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
27309      composeDomainResourceElements(element);
27310      if (element.hasIdentifier()) {
27311        composeIdentifier("identifier", element.getIdentifier());
27312      }
27313      if (element.hasActualityElement())
27314        composeEnumeration("actuality", element.getActualityElement(), new AdverseEvent.AdverseEventActualityEnumFactory());
27315      if (element.hasCategory()) { 
27316        for (CodeableConcept e : element.getCategory()) 
27317          composeCodeableConcept("category", e);
27318      }
27319      if (element.hasEvent()) {
27320        composeCodeableConcept("event", element.getEvent());
27321      }
27322      if (element.hasSubject()) {
27323        composeReference("subject", element.getSubject());
27324      }
27325      if (element.hasEncounter()) {
27326        composeReference("encounter", element.getEncounter());
27327      }
27328      if (element.hasDateElement()) {
27329        composeDateTime("date", element.getDateElement());
27330      }
27331      if (element.hasDetectedElement()) {
27332        composeDateTime("detected", element.getDetectedElement());
27333      }
27334      if (element.hasRecordedDateElement()) {
27335        composeDateTime("recordedDate", element.getRecordedDateElement());
27336      }
27337      if (element.hasResultingCondition()) { 
27338        for (Reference e : element.getResultingCondition()) 
27339          composeReference("resultingCondition", e);
27340      }
27341      if (element.hasLocation()) {
27342        composeReference("location", element.getLocation());
27343      }
27344      if (element.hasSeriousness()) {
27345        composeCodeableConcept("seriousness", element.getSeriousness());
27346      }
27347      if (element.hasSeverity()) {
27348        composeCodeableConcept("severity", element.getSeverity());
27349      }
27350      if (element.hasOutcome()) {
27351        composeCodeableConcept("outcome", element.getOutcome());
27352      }
27353      if (element.hasRecorder()) {
27354        composeReference("recorder", element.getRecorder());
27355      }
27356      if (element.hasContributor()) { 
27357        for (Reference e : element.getContributor()) 
27358          composeReference("contributor", e);
27359      }
27360      if (element.hasSuspectEntity()) { 
27361        for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
27362          composeAdverseEventAdverseEventSuspectEntityComponent("suspectEntity", e);
27363      }
27364      if (element.hasSubjectMedicalHistory()) { 
27365        for (Reference e : element.getSubjectMedicalHistory()) 
27366          composeReference("subjectMedicalHistory", e);
27367      }
27368      if (element.hasReferenceDocument()) { 
27369        for (Reference e : element.getReferenceDocument()) 
27370          composeReference("referenceDocument", e);
27371      }
27372      if (element.hasStudy()) { 
27373        for (Reference e : element.getStudy()) 
27374          composeReference("study", e);
27375      }
27376  }
27377
27378  protected void composeAdverseEventAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
27379    if (element != null) {
27380      composeElementAttributes(element);
27381      xml.enter(FHIR_NS, name);
27382      composeAdverseEventAdverseEventSuspectEntityComponentElements(element);
27383      composeElementClose(element);
27384      xml.exit(FHIR_NS, name);
27385    }
27386  }
27387
27388  protected void composeAdverseEventAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
27389      composeBackboneElementElements(element);
27390      if (element.hasInstance()) {
27391        composeReference("instance", element.getInstance());
27392      }
27393      if (element.hasCausality()) { 
27394        for (AdverseEvent.AdverseEventSuspectEntityCausalityComponent e : element.getCausality()) 
27395          composeAdverseEventAdverseEventSuspectEntityCausalityComponent("causality", e);
27396      }
27397  }
27398
27399  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponent(String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
27400    if (element != null) {
27401      composeElementAttributes(element);
27402      xml.enter(FHIR_NS, name);
27403      composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(element);
27404      composeElementClose(element);
27405      xml.exit(FHIR_NS, name);
27406    }
27407  }
27408
27409  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
27410      composeBackboneElementElements(element);
27411      if (element.hasAssessment()) {
27412        composeCodeableConcept("assessment", element.getAssessment());
27413      }
27414      if (element.hasProductRelatednessElement()) {
27415        composeString("productRelatedness", element.getProductRelatednessElement());
27416      }
27417      if (element.hasAuthor()) {
27418        composeReference("author", element.getAuthor());
27419      }
27420      if (element.hasMethod()) {
27421        composeCodeableConcept("method", element.getMethod());
27422      }
27423  }
27424
27425  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
27426    if (element != null) {
27427      composeDomainResourceAttributes(element);
27428      xml.enter(FHIR_NS, name);
27429      composeAllergyIntoleranceElements(element);
27430      composeElementClose(element);
27431      xml.exit(FHIR_NS, name);
27432    }
27433  }
27434
27435  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
27436      composeDomainResourceElements(element);
27437      if (element.hasIdentifier()) { 
27438        for (Identifier e : element.getIdentifier()) 
27439          composeIdentifier("identifier", e);
27440      }
27441      if (element.hasClinicalStatus()) {
27442        composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
27443      }
27444      if (element.hasVerificationStatus()) {
27445        composeCodeableConcept("verificationStatus", element.getVerificationStatus());
27446      }
27447      if (element.hasTypeElement())
27448        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
27449        if (element.hasCategory()) 
27450          for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
27451            composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
27452      if (element.hasCriticalityElement())
27453        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
27454      if (element.hasCode()) {
27455        composeCodeableConcept("code", element.getCode());
27456      }
27457      if (element.hasPatient()) {
27458        composeReference("patient", element.getPatient());
27459      }
27460      if (element.hasEncounter()) {
27461        composeReference("encounter", element.getEncounter());
27462      }
27463      if (element.hasOnset()) {
27464        composeType("onset", element.getOnset());
27465      }      if (element.hasRecordedDateElement()) {
27466        composeDateTime("recordedDate", element.getRecordedDateElement());
27467      }
27468      if (element.hasRecorder()) {
27469        composeReference("recorder", element.getRecorder());
27470      }
27471      if (element.hasAsserter()) {
27472        composeReference("asserter", element.getAsserter());
27473      }
27474      if (element.hasLastOccurrenceElement()) {
27475        composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
27476      }
27477      if (element.hasNote()) { 
27478        for (Annotation e : element.getNote()) 
27479          composeAnnotation("note", e);
27480      }
27481      if (element.hasReaction()) { 
27482        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
27483          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
27484      }
27485  }
27486
27487  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
27488    if (element != null) {
27489      composeElementAttributes(element);
27490      xml.enter(FHIR_NS, name);
27491      composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(element);
27492      composeElementClose(element);
27493      xml.exit(FHIR_NS, name);
27494    }
27495  }
27496
27497  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
27498      composeBackboneElementElements(element);
27499      if (element.hasSubstance()) {
27500        composeCodeableConcept("substance", element.getSubstance());
27501      }
27502      if (element.hasManifestation()) { 
27503        for (CodeableConcept e : element.getManifestation()) 
27504          composeCodeableConcept("manifestation", e);
27505      }
27506      if (element.hasDescriptionElement()) {
27507        composeString("description", element.getDescriptionElement());
27508      }
27509      if (element.hasOnsetElement()) {
27510        composeDateTime("onset", element.getOnsetElement());
27511      }
27512      if (element.hasSeverityElement())
27513        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
27514      if (element.hasExposureRoute()) {
27515        composeCodeableConcept("exposureRoute", element.getExposureRoute());
27516      }
27517      if (element.hasNote()) { 
27518        for (Annotation e : element.getNote()) 
27519          composeAnnotation("note", e);
27520      }
27521  }
27522
27523  protected void composeAppointment(String name, Appointment element) throws IOException {
27524    if (element != null) {
27525      composeDomainResourceAttributes(element);
27526      xml.enter(FHIR_NS, name);
27527      composeAppointmentElements(element);
27528      composeElementClose(element);
27529      xml.exit(FHIR_NS, name);
27530    }
27531  }
27532
27533  protected void composeAppointmentElements(Appointment element) throws IOException {
27534      composeDomainResourceElements(element);
27535      if (element.hasIdentifier()) { 
27536        for (Identifier e : element.getIdentifier()) 
27537          composeIdentifier("identifier", e);
27538      }
27539      if (element.hasStatusElement())
27540        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
27541      if (element.hasCancelationReason()) {
27542        composeCodeableConcept("cancelationReason", element.getCancelationReason());
27543      }
27544      if (element.hasServiceCategory()) { 
27545        for (CodeableConcept e : element.getServiceCategory()) 
27546          composeCodeableConcept("serviceCategory", e);
27547      }
27548      if (element.hasServiceType()) { 
27549        for (CodeableConcept e : element.getServiceType()) 
27550          composeCodeableConcept("serviceType", e);
27551      }
27552      if (element.hasSpecialty()) { 
27553        for (CodeableConcept e : element.getSpecialty()) 
27554          composeCodeableConcept("specialty", e);
27555      }
27556      if (element.hasAppointmentType()) {
27557        composeCodeableConcept("appointmentType", element.getAppointmentType());
27558      }
27559      if (element.hasReasonCode()) { 
27560        for (CodeableConcept e : element.getReasonCode()) 
27561          composeCodeableConcept("reasonCode", e);
27562      }
27563      if (element.hasReasonReference()) { 
27564        for (Reference e : element.getReasonReference()) 
27565          composeReference("reasonReference", e);
27566      }
27567      if (element.hasPriorityElement()) {
27568        composeUnsignedInt("priority", element.getPriorityElement());
27569      }
27570      if (element.hasDescriptionElement()) {
27571        composeString("description", element.getDescriptionElement());
27572      }
27573      if (element.hasSupportingInformation()) { 
27574        for (Reference e : element.getSupportingInformation()) 
27575          composeReference("supportingInformation", e);
27576      }
27577      if (element.hasStartElement()) {
27578        composeInstant("start", element.getStartElement());
27579      }
27580      if (element.hasEndElement()) {
27581        composeInstant("end", element.getEndElement());
27582      }
27583      if (element.hasMinutesDurationElement()) {
27584        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
27585      }
27586      if (element.hasSlot()) { 
27587        for (Reference e : element.getSlot()) 
27588          composeReference("slot", e);
27589      }
27590      if (element.hasCreatedElement()) {
27591        composeDateTime("created", element.getCreatedElement());
27592      }
27593      if (element.hasCommentElement()) {
27594        composeString("comment", element.getCommentElement());
27595      }
27596      if (element.hasPatientInstructionElement()) {
27597        composeString("patientInstruction", element.getPatientInstructionElement());
27598      }
27599      if (element.hasBasedOn()) { 
27600        for (Reference e : element.getBasedOn()) 
27601          composeReference("basedOn", e);
27602      }
27603      if (element.hasParticipant()) { 
27604        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
27605          composeAppointmentAppointmentParticipantComponent("participant", e);
27606      }
27607      if (element.hasRequestedPeriod()) { 
27608        for (Period e : element.getRequestedPeriod()) 
27609          composePeriod("requestedPeriod", e);
27610      }
27611  }
27612
27613  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
27614    if (element != null) {
27615      composeElementAttributes(element);
27616      xml.enter(FHIR_NS, name);
27617      composeAppointmentAppointmentParticipantComponentElements(element);
27618      composeElementClose(element);
27619      xml.exit(FHIR_NS, name);
27620    }
27621  }
27622
27623  protected void composeAppointmentAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
27624      composeBackboneElementElements(element);
27625      if (element.hasType()) { 
27626        for (CodeableConcept e : element.getType()) 
27627          composeCodeableConcept("type", e);
27628      }
27629      if (element.hasActor()) {
27630        composeReference("actor", element.getActor());
27631      }
27632      if (element.hasRequiredElement())
27633        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
27634      if (element.hasStatusElement())
27635        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
27636      if (element.hasPeriod()) {
27637        composePeriod("period", element.getPeriod());
27638      }
27639  }
27640
27641  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
27642    if (element != null) {
27643      composeDomainResourceAttributes(element);
27644      xml.enter(FHIR_NS, name);
27645      composeAppointmentResponseElements(element);
27646      composeElementClose(element);
27647      xml.exit(FHIR_NS, name);
27648    }
27649  }
27650
27651  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
27652      composeDomainResourceElements(element);
27653      if (element.hasIdentifier()) { 
27654        for (Identifier e : element.getIdentifier()) 
27655          composeIdentifier("identifier", e);
27656      }
27657      if (element.hasAppointment()) {
27658        composeReference("appointment", element.getAppointment());
27659      }
27660      if (element.hasStartElement()) {
27661        composeInstant("start", element.getStartElement());
27662      }
27663      if (element.hasEndElement()) {
27664        composeInstant("end", element.getEndElement());
27665      }
27666      if (element.hasParticipantType()) { 
27667        for (CodeableConcept e : element.getParticipantType()) 
27668          composeCodeableConcept("participantType", e);
27669      }
27670      if (element.hasActor()) {
27671        composeReference("actor", element.getActor());
27672      }
27673      if (element.hasParticipantStatusElement())
27674        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
27675      if (element.hasCommentElement()) {
27676        composeString("comment", element.getCommentElement());
27677      }
27678  }
27679
27680  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
27681    if (element != null) {
27682      composeDomainResourceAttributes(element);
27683      xml.enter(FHIR_NS, name);
27684      composeAuditEventElements(element);
27685      composeElementClose(element);
27686      xml.exit(FHIR_NS, name);
27687    }
27688  }
27689
27690  protected void composeAuditEventElements(AuditEvent element) throws IOException {
27691      composeDomainResourceElements(element);
27692      if (element.hasType()) {
27693        composeCoding("type", element.getType());
27694      }
27695      if (element.hasSubtype()) { 
27696        for (Coding e : element.getSubtype()) 
27697          composeCoding("subtype", e);
27698      }
27699      if (element.hasActionElement())
27700        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
27701      if (element.hasPeriod()) {
27702        composePeriod("period", element.getPeriod());
27703      }
27704      if (element.hasRecordedElement()) {
27705        composeInstant("recorded", element.getRecordedElement());
27706      }
27707      if (element.hasOutcomeElement())
27708        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
27709      if (element.hasOutcomeDescElement()) {
27710        composeString("outcomeDesc", element.getOutcomeDescElement());
27711      }
27712      if (element.hasPurposeOfEvent()) { 
27713        for (CodeableConcept e : element.getPurposeOfEvent()) 
27714          composeCodeableConcept("purposeOfEvent", e);
27715      }
27716      if (element.hasAgent()) { 
27717        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
27718          composeAuditEventAuditEventAgentComponent("agent", e);
27719      }
27720      if (element.hasSource()) {
27721        composeAuditEventAuditEventSourceComponent("source", element.getSource());
27722      }
27723      if (element.hasEntity()) { 
27724        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
27725          composeAuditEventAuditEventEntityComponent("entity", e);
27726      }
27727  }
27728
27729  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
27730    if (element != null) {
27731      composeElementAttributes(element);
27732      xml.enter(FHIR_NS, name);
27733      composeAuditEventAuditEventAgentComponentElements(element);
27734      composeElementClose(element);
27735      xml.exit(FHIR_NS, name);
27736    }
27737  }
27738
27739  protected void composeAuditEventAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
27740      composeBackboneElementElements(element);
27741      if (element.hasType()) {
27742        composeCodeableConcept("type", element.getType());
27743      }
27744      if (element.hasRole()) { 
27745        for (CodeableConcept e : element.getRole()) 
27746          composeCodeableConcept("role", e);
27747      }
27748      if (element.hasWho()) {
27749        composeReference("who", element.getWho());
27750      }
27751      if (element.hasAltIdElement()) {
27752        composeString("altId", element.getAltIdElement());
27753      }
27754      if (element.hasNameElement()) {
27755        composeString("name", element.getNameElement());
27756      }
27757      if (element.hasRequestorElement()) {
27758        composeBoolean("requestor", element.getRequestorElement());
27759      }
27760      if (element.hasLocation()) {
27761        composeReference("location", element.getLocation());
27762      }
27763      if (element.hasPolicy()) { 
27764        for (UriType e : element.getPolicy()) 
27765          composeUri("policy", e);
27766      }
27767      if (element.hasMedia()) {
27768        composeCoding("media", element.getMedia());
27769      }
27770      if (element.hasNetwork()) {
27771        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
27772      }
27773      if (element.hasPurposeOfUse()) { 
27774        for (CodeableConcept e : element.getPurposeOfUse()) 
27775          composeCodeableConcept("purposeOfUse", e);
27776      }
27777  }
27778
27779  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
27780    if (element != null) {
27781      composeElementAttributes(element);
27782      xml.enter(FHIR_NS, name);
27783      composeAuditEventAuditEventAgentNetworkComponentElements(element);
27784      composeElementClose(element);
27785      xml.exit(FHIR_NS, name);
27786    }
27787  }
27788
27789  protected void composeAuditEventAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
27790      composeBackboneElementElements(element);
27791      if (element.hasAddressElement()) {
27792        composeString("address", element.getAddressElement());
27793      }
27794      if (element.hasTypeElement())
27795        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
27796  }
27797
27798  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
27799    if (element != null) {
27800      composeElementAttributes(element);
27801      xml.enter(FHIR_NS, name);
27802      composeAuditEventAuditEventSourceComponentElements(element);
27803      composeElementClose(element);
27804      xml.exit(FHIR_NS, name);
27805    }
27806  }
27807
27808  protected void composeAuditEventAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
27809      composeBackboneElementElements(element);
27810      if (element.hasSiteElement()) {
27811        composeString("site", element.getSiteElement());
27812      }
27813      if (element.hasObserver()) {
27814        composeReference("observer", element.getObserver());
27815      }
27816      if (element.hasType()) { 
27817        for (Coding e : element.getType()) 
27818          composeCoding("type", e);
27819      }
27820  }
27821
27822  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
27823    if (element != null) {
27824      composeElementAttributes(element);
27825      xml.enter(FHIR_NS, name);
27826      composeAuditEventAuditEventEntityComponentElements(element);
27827      composeElementClose(element);
27828      xml.exit(FHIR_NS, name);
27829    }
27830  }
27831
27832  protected void composeAuditEventAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
27833      composeBackboneElementElements(element);
27834      if (element.hasWhat()) {
27835        composeReference("what", element.getWhat());
27836      }
27837      if (element.hasType()) {
27838        composeCoding("type", element.getType());
27839      }
27840      if (element.hasRole()) {
27841        composeCoding("role", element.getRole());
27842      }
27843      if (element.hasLifecycle()) {
27844        composeCoding("lifecycle", element.getLifecycle());
27845      }
27846      if (element.hasSecurityLabel()) { 
27847        for (Coding e : element.getSecurityLabel()) 
27848          composeCoding("securityLabel", e);
27849      }
27850      if (element.hasNameElement()) {
27851        composeString("name", element.getNameElement());
27852      }
27853      if (element.hasDescriptionElement()) {
27854        composeString("description", element.getDescriptionElement());
27855      }
27856      if (element.hasQueryElement()) {
27857        composeBase64Binary("query", element.getQueryElement());
27858      }
27859      if (element.hasDetail()) { 
27860        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
27861          composeAuditEventAuditEventEntityDetailComponent("detail", e);
27862      }
27863  }
27864
27865  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
27866    if (element != null) {
27867      composeElementAttributes(element);
27868      xml.enter(FHIR_NS, name);
27869      composeAuditEventAuditEventEntityDetailComponentElements(element);
27870      composeElementClose(element);
27871      xml.exit(FHIR_NS, name);
27872    }
27873  }
27874
27875  protected void composeAuditEventAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
27876      composeBackboneElementElements(element);
27877      if (element.hasTypeElement()) {
27878        composeString("type", element.getTypeElement());
27879      }
27880      if (element.hasValue()) {
27881        composeType("value", element.getValue());
27882      }  }
27883
27884  protected void composeBasic(String name, Basic element) throws IOException {
27885    if (element != null) {
27886      composeDomainResourceAttributes(element);
27887      xml.enter(FHIR_NS, name);
27888      composeBasicElements(element);
27889      composeElementClose(element);
27890      xml.exit(FHIR_NS, name);
27891    }
27892  }
27893
27894  protected void composeBasicElements(Basic element) throws IOException {
27895      composeDomainResourceElements(element);
27896      if (element.hasIdentifier()) { 
27897        for (Identifier e : element.getIdentifier()) 
27898          composeIdentifier("identifier", e);
27899      }
27900      if (element.hasCode()) {
27901        composeCodeableConcept("code", element.getCode());
27902      }
27903      if (element.hasSubject()) {
27904        composeReference("subject", element.getSubject());
27905      }
27906      if (element.hasCreatedElement()) {
27907        composeDate("created", element.getCreatedElement());
27908      }
27909      if (element.hasAuthor()) {
27910        composeReference("author", element.getAuthor());
27911      }
27912  }
27913
27914  protected void composeBinary(String name, Binary element) throws IOException {
27915    if (element != null) {
27916      composeResourceAttributes(element);
27917      xml.enter(FHIR_NS, name);
27918      composeBinaryElements(element);
27919      composeElementClose(element);
27920      xml.exit(FHIR_NS, name);
27921    }
27922  }
27923
27924  protected void composeBinaryElements(Binary element) throws IOException {
27925      composeResourceElements(element);
27926      if (element.hasContentTypeElement()) {
27927        composeCode("contentType", element.getContentTypeElement());
27928      }
27929      if (element.hasSecurityContext()) {
27930        composeReference("securityContext", element.getSecurityContext());
27931      }
27932      if (element.hasDataElement()) {
27933        composeBase64Binary("data", element.getDataElement());
27934      }
27935  }
27936
27937  protected void composeBiologicallyDerivedProduct(String name, BiologicallyDerivedProduct element) throws IOException {
27938    if (element != null) {
27939      composeDomainResourceAttributes(element);
27940      xml.enter(FHIR_NS, name);
27941      composeBiologicallyDerivedProductElements(element);
27942      composeElementClose(element);
27943      xml.exit(FHIR_NS, name);
27944    }
27945  }
27946
27947  protected void composeBiologicallyDerivedProductElements(BiologicallyDerivedProduct element) throws IOException {
27948      composeDomainResourceElements(element);
27949      if (element.hasIdentifier()) { 
27950        for (Identifier e : element.getIdentifier()) 
27951          composeIdentifier("identifier", e);
27952      }
27953      if (element.hasProductCategoryElement())
27954        composeEnumeration("productCategory", element.getProductCategoryElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory());
27955      if (element.hasProductCode()) {
27956        composeCodeableConcept("productCode", element.getProductCode());
27957      }
27958      if (element.hasStatusElement())
27959        composeEnumeration("status", element.getStatusElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory());
27960      if (element.hasRequest()) { 
27961        for (Reference e : element.getRequest()) 
27962          composeReference("request", e);
27963      }
27964      if (element.hasQuantityElement()) {
27965        composeInteger("quantity", element.getQuantityElement());
27966      }
27967      if (element.hasParent()) { 
27968        for (Reference e : element.getParent()) 
27969          composeReference("parent", e);
27970      }
27971      if (element.hasCollection()) {
27972        composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent("collection", element.getCollection());
27973      }
27974      if (element.hasProcessing()) { 
27975        for (BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent e : element.getProcessing()) 
27976          composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent("processing", e);
27977      }
27978      if (element.hasManipulation()) {
27979        composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent("manipulation", element.getManipulation());
27980      }
27981      if (element.hasStorage()) { 
27982        for (BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent e : element.getStorage()) 
27983          composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent("storage", e);
27984      }
27985  }
27986
27987  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
27988    if (element != null) {
27989      composeElementAttributes(element);
27990      xml.enter(FHIR_NS, name);
27991      composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(element);
27992      composeElementClose(element);
27993      xml.exit(FHIR_NS, name);
27994    }
27995  }
27996
27997  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
27998      composeBackboneElementElements(element);
27999      if (element.hasCollector()) {
28000        composeReference("collector", element.getCollector());
28001      }
28002      if (element.hasSource()) {
28003        composeReference("source", element.getSource());
28004      }
28005      if (element.hasCollected()) {
28006        composeType("collected", element.getCollected());
28007      }  }
28008
28009  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
28010    if (element != null) {
28011      composeElementAttributes(element);
28012      xml.enter(FHIR_NS, name);
28013      composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(element);
28014      composeElementClose(element);
28015      xml.exit(FHIR_NS, name);
28016    }
28017  }
28018
28019  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
28020      composeBackboneElementElements(element);
28021      if (element.hasDescriptionElement()) {
28022        composeString("description", element.getDescriptionElement());
28023      }
28024      if (element.hasProcedure()) {
28025        composeCodeableConcept("procedure", element.getProcedure());
28026      }
28027      if (element.hasAdditive()) {
28028        composeReference("additive", element.getAdditive());
28029      }
28030      if (element.hasTime()) {
28031        composeType("time", element.getTime());
28032      }  }
28033
28034  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
28035    if (element != null) {
28036      composeElementAttributes(element);
28037      xml.enter(FHIR_NS, name);
28038      composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(element);
28039      composeElementClose(element);
28040      xml.exit(FHIR_NS, name);
28041    }
28042  }
28043
28044  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
28045      composeBackboneElementElements(element);
28046      if (element.hasDescriptionElement()) {
28047        composeString("description", element.getDescriptionElement());
28048      }
28049      if (element.hasTime()) {
28050        composeType("time", element.getTime());
28051      }  }
28052
28053  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
28054    if (element != null) {
28055      composeElementAttributes(element);
28056      xml.enter(FHIR_NS, name);
28057      composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(element);
28058      composeElementClose(element);
28059      xml.exit(FHIR_NS, name);
28060    }
28061  }
28062
28063  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
28064      composeBackboneElementElements(element);
28065      if (element.hasDescriptionElement()) {
28066        composeString("description", element.getDescriptionElement());
28067      }
28068      if (element.hasTemperatureElement()) {
28069        composeDecimal("temperature", element.getTemperatureElement());
28070      }
28071      if (element.hasScaleElement())
28072        composeEnumeration("scale", element.getScaleElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory());
28073      if (element.hasDuration()) {
28074        composePeriod("duration", element.getDuration());
28075      }
28076  }
28077
28078  protected void composeBodyStructure(String name, BodyStructure element) throws IOException {
28079    if (element != null) {
28080      composeDomainResourceAttributes(element);
28081      xml.enter(FHIR_NS, name);
28082      composeBodyStructureElements(element);
28083      composeElementClose(element);
28084      xml.exit(FHIR_NS, name);
28085    }
28086  }
28087
28088  protected void composeBodyStructureElements(BodyStructure element) throws IOException {
28089      composeDomainResourceElements(element);
28090      if (element.hasIdentifier()) { 
28091        for (Identifier e : element.getIdentifier()) 
28092          composeIdentifier("identifier", e);
28093      }
28094      if (element.hasActiveElement()) {
28095        composeBoolean("active", element.getActiveElement());
28096      }
28097      if (element.hasMorphology()) {
28098        composeCodeableConcept("morphology", element.getMorphology());
28099      }
28100      if (element.hasLocation()) {
28101        composeCodeableConcept("location", element.getLocation());
28102      }
28103      if (element.hasLocationQualifier()) { 
28104        for (CodeableConcept e : element.getLocationQualifier()) 
28105          composeCodeableConcept("locationQualifier", e);
28106      }
28107      if (element.hasDescriptionElement()) {
28108        composeString("description", element.getDescriptionElement());
28109      }
28110      if (element.hasImage()) { 
28111        for (Attachment e : element.getImage()) 
28112          composeAttachment("image", e);
28113      }
28114      if (element.hasPatient()) {
28115        composeReference("patient", element.getPatient());
28116      }
28117  }
28118
28119  protected void composeBundle(String name, Bundle element) throws IOException {
28120    if (element != null) {
28121      composeResourceAttributes(element);
28122      xml.enter(FHIR_NS, name);
28123      composeBundleElements(element);
28124      composeElementClose(element);
28125      xml.exit(FHIR_NS, name);
28126    }
28127  }
28128
28129  protected void composeBundleElements(Bundle element) throws IOException {
28130      composeResourceElements(element);
28131      if (element.hasIdentifier()) {
28132        composeIdentifier("identifier", element.getIdentifier());
28133      }
28134      if (element.hasTypeElement())
28135        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
28136      if (element.hasTimestampElement()) {
28137        composeInstant("timestamp", element.getTimestampElement());
28138      }
28139      if (element.hasTotalElement()) {
28140        composeUnsignedInt("total", element.getTotalElement());
28141      }
28142      if (element.hasLink()) { 
28143        for (Bundle.BundleLinkComponent e : element.getLink()) 
28144          composeBundleBundleLinkComponent("link", e);
28145      }
28146      if (element.hasEntry()) { 
28147        for (Bundle.BundleEntryComponent e : element.getEntry()) 
28148          composeBundleBundleEntryComponent("entry", e);
28149      }
28150      if (element.hasSignature()) {
28151        composeSignature("signature", element.getSignature());
28152      }
28153  }
28154
28155  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
28156    if (element != null) {
28157      composeElementAttributes(element);
28158      xml.enter(FHIR_NS, name);
28159      composeBundleBundleLinkComponentElements(element);
28160      composeElementClose(element);
28161      xml.exit(FHIR_NS, name);
28162    }
28163  }
28164
28165  protected void composeBundleBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
28166      composeBackboneElementElements(element);
28167      if (element.hasRelationElement()) {
28168        composeString("relation", element.getRelationElement());
28169      }
28170      if (element.hasUrlElement()) {
28171        composeUri("url", element.getUrlElement());
28172      }
28173  }
28174
28175  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
28176    if (element != null) {
28177      composeElementAttributes(element);
28178      xml.enter(FHIR_NS, name);
28179      composeBundleBundleEntryComponentElements(element);
28180      composeElementClose(element);
28181      xml.exit(FHIR_NS, name);
28182    }
28183  }
28184
28185  protected void composeBundleBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
28186      composeBackboneElementElements(element);
28187      if (element.hasLink()) { 
28188        for (Bundle.BundleLinkComponent e : element.getLink()) 
28189          composeBundleBundleLinkComponent("link", e);
28190      }
28191      if (element.hasFullUrlElement()) {
28192        composeUri("fullUrl", element.getFullUrlElement());
28193      }
28194      if (element.hasResource()) {
28195        xml.enter(FHIR_NS, "resource");
28196        composeResource(element.getResource());
28197        xml.exit(FHIR_NS, "resource");
28198      }
28199      if (element.hasSearch()) {
28200        composeBundleBundleEntrySearchComponent("search", element.getSearch());
28201      }
28202      if (element.hasRequest()) {
28203        composeBundleBundleEntryRequestComponent("request", element.getRequest());
28204      }
28205      if (element.hasResponse()) {
28206        composeBundleBundleEntryResponseComponent("response", element.getResponse());
28207      }
28208  }
28209
28210  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
28211    if (element != null) {
28212      composeElementAttributes(element);
28213      xml.enter(FHIR_NS, name);
28214      composeBundleBundleEntrySearchComponentElements(element);
28215      composeElementClose(element);
28216      xml.exit(FHIR_NS, name);
28217    }
28218  }
28219
28220  protected void composeBundleBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
28221      composeBackboneElementElements(element);
28222      if (element.hasModeElement())
28223        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
28224      if (element.hasScoreElement()) {
28225        composeDecimal("score", element.getScoreElement());
28226      }
28227  }
28228
28229  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
28230    if (element != null) {
28231      composeElementAttributes(element);
28232      xml.enter(FHIR_NS, name);
28233      composeBundleBundleEntryRequestComponentElements(element);
28234      composeElementClose(element);
28235      xml.exit(FHIR_NS, name);
28236    }
28237  }
28238
28239  protected void composeBundleBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
28240      composeBackboneElementElements(element);
28241      if (element.hasMethodElement())
28242        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
28243      if (element.hasUrlElement()) {
28244        composeUri("url", element.getUrlElement());
28245      }
28246      if (element.hasIfNoneMatchElement()) {
28247        composeString("ifNoneMatch", element.getIfNoneMatchElement());
28248      }
28249      if (element.hasIfModifiedSinceElement()) {
28250        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
28251      }
28252      if (element.hasIfMatchElement()) {
28253        composeString("ifMatch", element.getIfMatchElement());
28254      }
28255      if (element.hasIfNoneExistElement()) {
28256        composeString("ifNoneExist", element.getIfNoneExistElement());
28257      }
28258  }
28259
28260  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
28261    if (element != null) {
28262      composeElementAttributes(element);
28263      xml.enter(FHIR_NS, name);
28264      composeBundleBundleEntryResponseComponentElements(element);
28265      composeElementClose(element);
28266      xml.exit(FHIR_NS, name);
28267    }
28268  }
28269
28270  protected void composeBundleBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
28271      composeBackboneElementElements(element);
28272      if (element.hasStatusElement()) {
28273        composeString("status", element.getStatusElement());
28274      }
28275      if (element.hasLocationElement()) {
28276        composeUri("location", element.getLocationElement());
28277      }
28278      if (element.hasEtagElement()) {
28279        composeString("etag", element.getEtagElement());
28280      }
28281      if (element.hasLastModifiedElement()) {
28282        composeInstant("lastModified", element.getLastModifiedElement());
28283      }
28284      if (element.hasOutcome()) {
28285        xml.enter(FHIR_NS, "outcome");
28286        composeResource(element.getOutcome());
28287        xml.exit(FHIR_NS, "outcome");
28288      }
28289  }
28290
28291  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
28292    if (element != null) {
28293      composeDomainResourceAttributes(element);
28294      xml.enter(FHIR_NS, name);
28295      composeCapabilityStatementElements(element);
28296      composeElementClose(element);
28297      xml.exit(FHIR_NS, name);
28298    }
28299  }
28300
28301  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
28302      composeDomainResourceElements(element);
28303      if (element.hasUrlElement()) {
28304        composeUri("url", element.getUrlElement());
28305      }
28306      if (element.hasVersionElement()) {
28307        composeString("version", element.getVersionElement());
28308      }
28309      if (element.hasNameElement()) {
28310        composeString("name", element.getNameElement());
28311      }
28312      if (element.hasTitleElement()) {
28313        composeString("title", element.getTitleElement());
28314      }
28315      if (element.hasStatusElement())
28316        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28317      if (element.hasExperimentalElement()) {
28318        composeBoolean("experimental", element.getExperimentalElement());
28319      }
28320      if (element.hasDateElement()) {
28321        composeDateTime("date", element.getDateElement());
28322      }
28323      if (element.hasPublisherElement()) {
28324        composeString("publisher", element.getPublisherElement());
28325      }
28326      if (element.hasContact()) { 
28327        for (ContactDetail e : element.getContact()) 
28328          composeContactDetail("contact", e);
28329      }
28330      if (element.hasDescriptionElement()) {
28331        composeMarkdown("description", element.getDescriptionElement());
28332      }
28333      if (element.hasUseContext()) { 
28334        for (UsageContext e : element.getUseContext()) 
28335          composeUsageContext("useContext", e);
28336      }
28337      if (element.hasJurisdiction()) { 
28338        for (CodeableConcept e : element.getJurisdiction()) 
28339          composeCodeableConcept("jurisdiction", e);
28340      }
28341      if (element.hasPurposeElement()) {
28342        composeMarkdown("purpose", element.getPurposeElement());
28343      }
28344      if (element.hasCopyrightElement()) {
28345        composeMarkdown("copyright", element.getCopyrightElement());
28346      }
28347      if (element.hasKindElement())
28348        composeEnumeration("kind", element.getKindElement(), new CapabilityStatement.CapabilityStatementKindEnumFactory());
28349      if (element.hasInstantiates()) { 
28350        for (CanonicalType e : element.getInstantiates()) 
28351          composeCanonical("instantiates", e);
28352      }
28353      if (element.hasImports()) { 
28354        for (CanonicalType e : element.getImports()) 
28355          composeCanonical("imports", e);
28356      }
28357      if (element.hasSoftware()) {
28358        composeCapabilityStatementCapabilityStatementSoftwareComponent("software", element.getSoftware());
28359      }
28360      if (element.hasImplementation()) {
28361        composeCapabilityStatementCapabilityStatementImplementationComponent("implementation", element.getImplementation());
28362      }
28363      if (element.hasFhirVersionElement())
28364        composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
28365      if (element.hasFormat()) { 
28366        for (CodeType e : element.getFormat()) 
28367          composeCode("format", e);
28368      }
28369      if (element.hasPatchFormat()) { 
28370        for (CodeType e : element.getPatchFormat()) 
28371          composeCode("patchFormat", e);
28372      }
28373      if (element.hasImplementationGuide()) { 
28374        for (CanonicalType e : element.getImplementationGuide()) 
28375          composeCanonical("implementationGuide", e);
28376      }
28377      if (element.hasRest()) { 
28378        for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
28379          composeCapabilityStatementCapabilityStatementRestComponent("rest", e);
28380      }
28381      if (element.hasMessaging()) { 
28382        for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
28383          composeCapabilityStatementCapabilityStatementMessagingComponent("messaging", e);
28384      }
28385      if (element.hasDocument()) { 
28386        for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
28387          composeCapabilityStatementCapabilityStatementDocumentComponent("document", e);
28388      }
28389  }
28390
28391  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
28392    if (element != null) {
28393      composeElementAttributes(element);
28394      xml.enter(FHIR_NS, name);
28395      composeCapabilityStatementCapabilityStatementSoftwareComponentElements(element);
28396      composeElementClose(element);
28397      xml.exit(FHIR_NS, name);
28398    }
28399  }
28400
28401  protected void composeCapabilityStatementCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
28402      composeBackboneElementElements(element);
28403      if (element.hasNameElement()) {
28404        composeString("name", element.getNameElement());
28405      }
28406      if (element.hasVersionElement()) {
28407        composeString("version", element.getVersionElement());
28408      }
28409      if (element.hasReleaseDateElement()) {
28410        composeDateTime("releaseDate", element.getReleaseDateElement());
28411      }
28412  }
28413
28414  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
28415    if (element != null) {
28416      composeElementAttributes(element);
28417      xml.enter(FHIR_NS, name);
28418      composeCapabilityStatementCapabilityStatementImplementationComponentElements(element);
28419      composeElementClose(element);
28420      xml.exit(FHIR_NS, name);
28421    }
28422  }
28423
28424  protected void composeCapabilityStatementCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
28425      composeBackboneElementElements(element);
28426      if (element.hasDescriptionElement()) {
28427        composeString("description", element.getDescriptionElement());
28428      }
28429      if (element.hasUrlElement()) {
28430        composeUrl("url", element.getUrlElement());
28431      }
28432      if (element.hasCustodian()) {
28433        composeReference("custodian", element.getCustodian());
28434      }
28435  }
28436
28437  protected void composeCapabilityStatementCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
28438    if (element != null) {
28439      composeElementAttributes(element);
28440      xml.enter(FHIR_NS, name);
28441      composeCapabilityStatementCapabilityStatementRestComponentElements(element);
28442      composeElementClose(element);
28443      xml.exit(FHIR_NS, name);
28444    }
28445  }
28446
28447  protected void composeCapabilityStatementCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
28448      composeBackboneElementElements(element);
28449      if (element.hasModeElement())
28450        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
28451      if (element.hasDocumentationElement()) {
28452        composeMarkdown("documentation", element.getDocumentationElement());
28453      }
28454      if (element.hasSecurity()) {
28455        composeCapabilityStatementCapabilityStatementRestSecurityComponent("security", element.getSecurity());
28456      }
28457      if (element.hasResource()) { 
28458        for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
28459          composeCapabilityStatementCapabilityStatementRestResourceComponent("resource", e);
28460      }
28461      if (element.hasInteraction()) { 
28462        for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
28463          composeCapabilityStatementSystemInteractionComponent("interaction", e);
28464      }
28465      if (element.hasSearchParam()) { 
28466        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
28467          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
28468      }
28469      if (element.hasOperation()) { 
28470        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
28471          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
28472      }
28473      if (element.hasCompartment()) { 
28474        for (CanonicalType e : element.getCompartment()) 
28475          composeCanonical("compartment", e);
28476      }
28477  }
28478
28479  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
28480    if (element != null) {
28481      composeElementAttributes(element);
28482      xml.enter(FHIR_NS, name);
28483      composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(element);
28484      composeElementClose(element);
28485      xml.exit(FHIR_NS, name);
28486    }
28487  }
28488
28489  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
28490      composeBackboneElementElements(element);
28491      if (element.hasCorsElement()) {
28492        composeBoolean("cors", element.getCorsElement());
28493      }
28494      if (element.hasService()) { 
28495        for (CodeableConcept e : element.getService()) 
28496          composeCodeableConcept("service", e);
28497      }
28498      if (element.hasDescriptionElement()) {
28499        composeMarkdown("description", element.getDescriptionElement());
28500      }
28501  }
28502
28503  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
28504    if (element != null) {
28505      composeElementAttributes(element);
28506      xml.enter(FHIR_NS, name);
28507      composeCapabilityStatementCapabilityStatementRestResourceComponentElements(element);
28508      composeElementClose(element);
28509      xml.exit(FHIR_NS, name);
28510    }
28511  }
28512
28513  protected void composeCapabilityStatementCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
28514      composeBackboneElementElements(element);
28515      if (element.hasTypeElement()) {
28516        composeCode("type", element.getTypeElement());
28517      }
28518      if (element.hasProfileElement()) {
28519        composeCanonical("profile", element.getProfileElement());
28520      }
28521      if (element.hasSupportedProfile()) { 
28522        for (CanonicalType e : element.getSupportedProfile()) 
28523          composeCanonical("supportedProfile", e);
28524      }
28525      if (element.hasDocumentationElement()) {
28526        composeMarkdown("documentation", element.getDocumentationElement());
28527      }
28528      if (element.hasInteraction()) { 
28529        for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
28530          composeCapabilityStatementResourceInteractionComponent("interaction", e);
28531      }
28532      if (element.hasVersioningElement())
28533        composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
28534      if (element.hasReadHistoryElement()) {
28535        composeBoolean("readHistory", element.getReadHistoryElement());
28536      }
28537      if (element.hasUpdateCreateElement()) {
28538        composeBoolean("updateCreate", element.getUpdateCreateElement());
28539      }
28540      if (element.hasConditionalCreateElement()) {
28541        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
28542      }
28543      if (element.hasConditionalReadElement())
28544        composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
28545      if (element.hasConditionalUpdateElement()) {
28546        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
28547      }
28548      if (element.hasConditionalDeleteElement())
28549        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
28550        if (element.hasReferencePolicy()) 
28551          for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
28552            composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
28553      if (element.hasSearchInclude()) { 
28554        for (StringType e : element.getSearchInclude()) 
28555          composeString("searchInclude", e);
28556      }
28557      if (element.hasSearchRevInclude()) { 
28558        for (StringType e : element.getSearchRevInclude()) 
28559          composeString("searchRevInclude", e);
28560      }
28561      if (element.hasSearchParam()) { 
28562        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
28563          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
28564      }
28565      if (element.hasOperation()) { 
28566        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
28567          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
28568      }
28569  }
28570
28571  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
28572    if (element != null) {
28573      composeElementAttributes(element);
28574      xml.enter(FHIR_NS, name);
28575      composeCapabilityStatementResourceInteractionComponentElements(element);
28576      composeElementClose(element);
28577      xml.exit(FHIR_NS, name);
28578    }
28579  }
28580
28581  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
28582      composeBackboneElementElements(element);
28583      if (element.hasCodeElement())
28584        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
28585      if (element.hasDocumentationElement()) {
28586        composeMarkdown("documentation", element.getDocumentationElement());
28587      }
28588  }
28589
28590  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
28591    if (element != null) {
28592      composeElementAttributes(element);
28593      xml.enter(FHIR_NS, name);
28594      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(element);
28595      composeElementClose(element);
28596      xml.exit(FHIR_NS, name);
28597    }
28598  }
28599
28600  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
28601      composeBackboneElementElements(element);
28602      if (element.hasNameElement()) {
28603        composeString("name", element.getNameElement());
28604      }
28605      if (element.hasDefinitionElement()) {
28606        composeCanonical("definition", element.getDefinitionElement());
28607      }
28608      if (element.hasTypeElement())
28609        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
28610      if (element.hasDocumentationElement()) {
28611        composeMarkdown("documentation", element.getDocumentationElement());
28612      }
28613  }
28614
28615  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
28616    if (element != null) {
28617      composeElementAttributes(element);
28618      xml.enter(FHIR_NS, name);
28619      composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(element);
28620      composeElementClose(element);
28621      xml.exit(FHIR_NS, name);
28622    }
28623  }
28624
28625  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
28626      composeBackboneElementElements(element);
28627      if (element.hasNameElement()) {
28628        composeString("name", element.getNameElement());
28629      }
28630      if (element.hasDefinitionElement()) {
28631        composeCanonical("definition", element.getDefinitionElement());
28632      }
28633      if (element.hasDocumentationElement()) {
28634        composeMarkdown("documentation", element.getDocumentationElement());
28635      }
28636  }
28637
28638  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
28639    if (element != null) {
28640      composeElementAttributes(element);
28641      xml.enter(FHIR_NS, name);
28642      composeCapabilityStatementSystemInteractionComponentElements(element);
28643      composeElementClose(element);
28644      xml.exit(FHIR_NS, name);
28645    }
28646  }
28647
28648  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
28649      composeBackboneElementElements(element);
28650      if (element.hasCodeElement())
28651        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
28652      if (element.hasDocumentationElement()) {
28653        composeMarkdown("documentation", element.getDocumentationElement());
28654      }
28655  }
28656
28657  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
28658    if (element != null) {
28659      composeElementAttributes(element);
28660      xml.enter(FHIR_NS, name);
28661      composeCapabilityStatementCapabilityStatementMessagingComponentElements(element);
28662      composeElementClose(element);
28663      xml.exit(FHIR_NS, name);
28664    }
28665  }
28666
28667  protected void composeCapabilityStatementCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
28668      composeBackboneElementElements(element);
28669      if (element.hasEndpoint()) { 
28670        for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
28671          composeCapabilityStatementCapabilityStatementMessagingEndpointComponent("endpoint", e);
28672      }
28673      if (element.hasReliableCacheElement()) {
28674        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
28675      }
28676      if (element.hasDocumentationElement()) {
28677        composeMarkdown("documentation", element.getDocumentationElement());
28678      }
28679      if (element.hasSupportedMessage()) { 
28680        for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
28681          composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
28682      }
28683  }
28684
28685  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
28686    if (element != null) {
28687      composeElementAttributes(element);
28688      xml.enter(FHIR_NS, name);
28689      composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(element);
28690      composeElementClose(element);
28691      xml.exit(FHIR_NS, name);
28692    }
28693  }
28694
28695  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
28696      composeBackboneElementElements(element);
28697      if (element.hasProtocol()) {
28698        composeCoding("protocol", element.getProtocol());
28699      }
28700      if (element.hasAddressElement()) {
28701        composeUrl("address", element.getAddressElement());
28702      }
28703  }
28704
28705  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
28706    if (element != null) {
28707      composeElementAttributes(element);
28708      xml.enter(FHIR_NS, name);
28709      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(element);
28710      composeElementClose(element);
28711      xml.exit(FHIR_NS, name);
28712    }
28713  }
28714
28715  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
28716      composeBackboneElementElements(element);
28717      if (element.hasModeElement())
28718        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
28719      if (element.hasDefinitionElement()) {
28720        composeCanonical("definition", element.getDefinitionElement());
28721      }
28722  }
28723
28724  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
28725    if (element != null) {
28726      composeElementAttributes(element);
28727      xml.enter(FHIR_NS, name);
28728      composeCapabilityStatementCapabilityStatementDocumentComponentElements(element);
28729      composeElementClose(element);
28730      xml.exit(FHIR_NS, name);
28731    }
28732  }
28733
28734  protected void composeCapabilityStatementCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
28735      composeBackboneElementElements(element);
28736      if (element.hasModeElement())
28737        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
28738      if (element.hasDocumentationElement()) {
28739        composeMarkdown("documentation", element.getDocumentationElement());
28740      }
28741      if (element.hasProfileElement()) {
28742        composeCanonical("profile", element.getProfileElement());
28743      }
28744  }
28745
28746  protected void composeCarePlan(String name, CarePlan element) throws IOException {
28747    if (element != null) {
28748      composeDomainResourceAttributes(element);
28749      xml.enter(FHIR_NS, name);
28750      composeCarePlanElements(element);
28751      composeElementClose(element);
28752      xml.exit(FHIR_NS, name);
28753    }
28754  }
28755
28756  protected void composeCarePlanElements(CarePlan element) throws IOException {
28757      composeDomainResourceElements(element);
28758      if (element.hasIdentifier()) { 
28759        for (Identifier e : element.getIdentifier()) 
28760          composeIdentifier("identifier", e);
28761      }
28762      if (element.hasInstantiatesCanonical()) { 
28763        for (CanonicalType e : element.getInstantiatesCanonical()) 
28764          composeCanonical("instantiatesCanonical", e);
28765      }
28766      if (element.hasInstantiatesUri()) { 
28767        for (UriType e : element.getInstantiatesUri()) 
28768          composeUri("instantiatesUri", e);
28769      }
28770      if (element.hasBasedOn()) { 
28771        for (Reference e : element.getBasedOn()) 
28772          composeReference("basedOn", e);
28773      }
28774      if (element.hasReplaces()) { 
28775        for (Reference e : element.getReplaces()) 
28776          composeReference("replaces", e);
28777      }
28778      if (element.hasPartOf()) { 
28779        for (Reference e : element.getPartOf()) 
28780          composeReference("partOf", e);
28781      }
28782      if (element.hasStatusElement())
28783        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
28784      if (element.hasIntentElement())
28785        composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
28786      if (element.hasCategory()) { 
28787        for (CodeableConcept e : element.getCategory()) 
28788          composeCodeableConcept("category", e);
28789      }
28790      if (element.hasTitleElement()) {
28791        composeString("title", element.getTitleElement());
28792      }
28793      if (element.hasDescriptionElement()) {
28794        composeString("description", element.getDescriptionElement());
28795      }
28796      if (element.hasSubject()) {
28797        composeReference("subject", element.getSubject());
28798      }
28799      if (element.hasEncounter()) {
28800        composeReference("encounter", element.getEncounter());
28801      }
28802      if (element.hasPeriod()) {
28803        composePeriod("period", element.getPeriod());
28804      }
28805      if (element.hasCreatedElement()) {
28806        composeDateTime("created", element.getCreatedElement());
28807      }
28808      if (element.hasAuthor()) {
28809        composeReference("author", element.getAuthor());
28810      }
28811      if (element.hasContributor()) { 
28812        for (Reference e : element.getContributor()) 
28813          composeReference("contributor", e);
28814      }
28815      if (element.hasCareTeam()) { 
28816        for (Reference e : element.getCareTeam()) 
28817          composeReference("careTeam", e);
28818      }
28819      if (element.hasAddresses()) { 
28820        for (Reference e : element.getAddresses()) 
28821          composeReference("addresses", e);
28822      }
28823      if (element.hasSupportingInfo()) { 
28824        for (Reference e : element.getSupportingInfo()) 
28825          composeReference("supportingInfo", e);
28826      }
28827      if (element.hasGoal()) { 
28828        for (Reference e : element.getGoal()) 
28829          composeReference("goal", e);
28830      }
28831      if (element.hasActivity()) { 
28832        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
28833          composeCarePlanCarePlanActivityComponent("activity", e);
28834      }
28835      if (element.hasNote()) { 
28836        for (Annotation e : element.getNote()) 
28837          composeAnnotation("note", e);
28838      }
28839  }
28840
28841  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
28842    if (element != null) {
28843      composeElementAttributes(element);
28844      xml.enter(FHIR_NS, name);
28845      composeCarePlanCarePlanActivityComponentElements(element);
28846      composeElementClose(element);
28847      xml.exit(FHIR_NS, name);
28848    }
28849  }
28850
28851  protected void composeCarePlanCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
28852      composeBackboneElementElements(element);
28853      if (element.hasOutcomeCodeableConcept()) { 
28854        for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
28855          composeCodeableConcept("outcomeCodeableConcept", e);
28856      }
28857      if (element.hasOutcomeReference()) { 
28858        for (Reference e : element.getOutcomeReference()) 
28859          composeReference("outcomeReference", e);
28860      }
28861      if (element.hasProgress()) { 
28862        for (Annotation e : element.getProgress()) 
28863          composeAnnotation("progress", e);
28864      }
28865      if (element.hasReference()) {
28866        composeReference("reference", element.getReference());
28867      }
28868      if (element.hasDetail()) {
28869        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
28870      }
28871  }
28872
28873  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
28874    if (element != null) {
28875      composeElementAttributes(element);
28876      xml.enter(FHIR_NS, name);
28877      composeCarePlanCarePlanActivityDetailComponentElements(element);
28878      composeElementClose(element);
28879      xml.exit(FHIR_NS, name);
28880    }
28881  }
28882
28883  protected void composeCarePlanCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
28884      composeBackboneElementElements(element);
28885      if (element.hasKindElement())
28886        composeEnumeration("kind", element.getKindElement(), new CarePlan.CarePlanActivityKindEnumFactory());
28887      if (element.hasInstantiatesCanonical()) { 
28888        for (CanonicalType e : element.getInstantiatesCanonical()) 
28889          composeCanonical("instantiatesCanonical", e);
28890      }
28891      if (element.hasInstantiatesUri()) { 
28892        for (UriType e : element.getInstantiatesUri()) 
28893          composeUri("instantiatesUri", e);
28894      }
28895      if (element.hasCode()) {
28896        composeCodeableConcept("code", element.getCode());
28897      }
28898      if (element.hasReasonCode()) { 
28899        for (CodeableConcept e : element.getReasonCode()) 
28900          composeCodeableConcept("reasonCode", e);
28901      }
28902      if (element.hasReasonReference()) { 
28903        for (Reference e : element.getReasonReference()) 
28904          composeReference("reasonReference", e);
28905      }
28906      if (element.hasGoal()) { 
28907        for (Reference e : element.getGoal()) 
28908          composeReference("goal", e);
28909      }
28910      if (element.hasStatusElement())
28911        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
28912      if (element.hasStatusReason()) {
28913        composeCodeableConcept("statusReason", element.getStatusReason());
28914      }
28915      if (element.hasDoNotPerformElement()) {
28916        composeBoolean("doNotPerform", element.getDoNotPerformElement());
28917      }
28918      if (element.hasScheduled()) {
28919        composeType("scheduled", element.getScheduled());
28920      }      if (element.hasLocation()) {
28921        composeReference("location", element.getLocation());
28922      }
28923      if (element.hasPerformer()) { 
28924        for (Reference e : element.getPerformer()) 
28925          composeReference("performer", e);
28926      }
28927      if (element.hasProduct()) {
28928        composeType("product", element.getProduct());
28929      }      if (element.hasDailyAmount()) {
28930        composeQuantity("dailyAmount", element.getDailyAmount());
28931      }
28932      if (element.hasQuantity()) {
28933        composeQuantity("quantity", element.getQuantity());
28934      }
28935      if (element.hasDescriptionElement()) {
28936        composeString("description", element.getDescriptionElement());
28937      }
28938  }
28939
28940  protected void composeCareTeam(String name, CareTeam element) throws IOException {
28941    if (element != null) {
28942      composeDomainResourceAttributes(element);
28943      xml.enter(FHIR_NS, name);
28944      composeCareTeamElements(element);
28945      composeElementClose(element);
28946      xml.exit(FHIR_NS, name);
28947    }
28948  }
28949
28950  protected void composeCareTeamElements(CareTeam element) throws IOException {
28951      composeDomainResourceElements(element);
28952      if (element.hasIdentifier()) { 
28953        for (Identifier e : element.getIdentifier()) 
28954          composeIdentifier("identifier", e);
28955      }
28956      if (element.hasStatusElement())
28957        composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
28958      if (element.hasCategory()) { 
28959        for (CodeableConcept e : element.getCategory()) 
28960          composeCodeableConcept("category", e);
28961      }
28962      if (element.hasNameElement()) {
28963        composeString("name", element.getNameElement());
28964      }
28965      if (element.hasSubject()) {
28966        composeReference("subject", element.getSubject());
28967      }
28968      if (element.hasEncounter()) {
28969        composeReference("encounter", element.getEncounter());
28970      }
28971      if (element.hasPeriod()) {
28972        composePeriod("period", element.getPeriod());
28973      }
28974      if (element.hasParticipant()) { 
28975        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
28976          composeCareTeamCareTeamParticipantComponent("participant", e);
28977      }
28978      if (element.hasReasonCode()) { 
28979        for (CodeableConcept e : element.getReasonCode()) 
28980          composeCodeableConcept("reasonCode", e);
28981      }
28982      if (element.hasReasonReference()) { 
28983        for (Reference e : element.getReasonReference()) 
28984          composeReference("reasonReference", e);
28985      }
28986      if (element.hasManagingOrganization()) { 
28987        for (Reference e : element.getManagingOrganization()) 
28988          composeReference("managingOrganization", e);
28989      }
28990      if (element.hasTelecom()) { 
28991        for (ContactPoint e : element.getTelecom()) 
28992          composeContactPoint("telecom", e);
28993      }
28994      if (element.hasNote()) { 
28995        for (Annotation e : element.getNote()) 
28996          composeAnnotation("note", e);
28997      }
28998  }
28999
29000  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
29001    if (element != null) {
29002      composeElementAttributes(element);
29003      xml.enter(FHIR_NS, name);
29004      composeCareTeamCareTeamParticipantComponentElements(element);
29005      composeElementClose(element);
29006      xml.exit(FHIR_NS, name);
29007    }
29008  }
29009
29010  protected void composeCareTeamCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
29011      composeBackboneElementElements(element);
29012      if (element.hasRole()) { 
29013        for (CodeableConcept e : element.getRole()) 
29014          composeCodeableConcept("role", e);
29015      }
29016      if (element.hasMember()) {
29017        composeReference("member", element.getMember());
29018      }
29019      if (element.hasOnBehalfOf()) {
29020        composeReference("onBehalfOf", element.getOnBehalfOf());
29021      }
29022      if (element.hasPeriod()) {
29023        composePeriod("period", element.getPeriod());
29024      }
29025  }
29026
29027  protected void composeCatalogEntry(String name, CatalogEntry element) throws IOException {
29028    if (element != null) {
29029      composeDomainResourceAttributes(element);
29030      xml.enter(FHIR_NS, name);
29031      composeCatalogEntryElements(element);
29032      composeElementClose(element);
29033      xml.exit(FHIR_NS, name);
29034    }
29035  }
29036
29037  protected void composeCatalogEntryElements(CatalogEntry element) throws IOException {
29038      composeDomainResourceElements(element);
29039      if (element.hasIdentifier()) { 
29040        for (Identifier e : element.getIdentifier()) 
29041          composeIdentifier("identifier", e);
29042      }
29043      if (element.hasType()) {
29044        composeCodeableConcept("type", element.getType());
29045      }
29046      if (element.hasOrderableElement()) {
29047        composeBoolean("orderable", element.getOrderableElement());
29048      }
29049      if (element.hasReferencedItem()) {
29050        composeReference("referencedItem", element.getReferencedItem());
29051      }
29052      if (element.hasAdditionalIdentifier()) { 
29053        for (Identifier e : element.getAdditionalIdentifier()) 
29054          composeIdentifier("additionalIdentifier", e);
29055      }
29056      if (element.hasClassification()) { 
29057        for (CodeableConcept e : element.getClassification()) 
29058          composeCodeableConcept("classification", e);
29059      }
29060      if (element.hasStatusElement())
29061        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29062      if (element.hasValidityPeriod()) {
29063        composePeriod("validityPeriod", element.getValidityPeriod());
29064      }
29065      if (element.hasValidToElement()) {
29066        composeDateTime("validTo", element.getValidToElement());
29067      }
29068      if (element.hasLastUpdatedElement()) {
29069        composeDateTime("lastUpdated", element.getLastUpdatedElement());
29070      }
29071      if (element.hasAdditionalCharacteristic()) { 
29072        for (CodeableConcept e : element.getAdditionalCharacteristic()) 
29073          composeCodeableConcept("additionalCharacteristic", e);
29074      }
29075      if (element.hasAdditionalClassification()) { 
29076        for (CodeableConcept e : element.getAdditionalClassification()) 
29077          composeCodeableConcept("additionalClassification", e);
29078      }
29079      if (element.hasRelatedEntry()) { 
29080        for (CatalogEntry.CatalogEntryRelatedEntryComponent e : element.getRelatedEntry()) 
29081          composeCatalogEntryCatalogEntryRelatedEntryComponent("relatedEntry", e);
29082      }
29083  }
29084
29085  protected void composeCatalogEntryCatalogEntryRelatedEntryComponent(String name, CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
29086    if (element != null) {
29087      composeElementAttributes(element);
29088      xml.enter(FHIR_NS, name);
29089      composeCatalogEntryCatalogEntryRelatedEntryComponentElements(element);
29090      composeElementClose(element);
29091      xml.exit(FHIR_NS, name);
29092    }
29093  }
29094
29095  protected void composeCatalogEntryCatalogEntryRelatedEntryComponentElements(CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
29096      composeBackboneElementElements(element);
29097      if (element.hasRelationtypeElement())
29098        composeEnumeration("relationtype", element.getRelationtypeElement(), new CatalogEntry.CatalogEntryRelationTypeEnumFactory());
29099      if (element.hasItem()) {
29100        composeReference("item", element.getItem());
29101      }
29102  }
29103
29104  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
29105    if (element != null) {
29106      composeDomainResourceAttributes(element);
29107      xml.enter(FHIR_NS, name);
29108      composeChargeItemElements(element);
29109      composeElementClose(element);
29110      xml.exit(FHIR_NS, name);
29111    }
29112  }
29113
29114  protected void composeChargeItemElements(ChargeItem element) throws IOException {
29115      composeDomainResourceElements(element);
29116      if (element.hasIdentifier()) { 
29117        for (Identifier e : element.getIdentifier()) 
29118          composeIdentifier("identifier", e);
29119      }
29120      if (element.hasDefinitionUri()) { 
29121        for (UriType e : element.getDefinitionUri()) 
29122          composeUri("definitionUri", e);
29123      }
29124      if (element.hasDefinitionCanonical()) { 
29125        for (CanonicalType e : element.getDefinitionCanonical()) 
29126          composeCanonical("definitionCanonical", e);
29127      }
29128      if (element.hasStatusElement())
29129        composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
29130      if (element.hasPartOf()) { 
29131        for (Reference e : element.getPartOf()) 
29132          composeReference("partOf", e);
29133      }
29134      if (element.hasCode()) {
29135        composeCodeableConcept("code", element.getCode());
29136      }
29137      if (element.hasSubject()) {
29138        composeReference("subject", element.getSubject());
29139      }
29140      if (element.hasContext()) {
29141        composeReference("context", element.getContext());
29142      }
29143      if (element.hasOccurrence()) {
29144        composeType("occurrence", element.getOccurrence());
29145      }      if (element.hasPerformer()) { 
29146        for (ChargeItem.ChargeItemPerformerComponent e : element.getPerformer()) 
29147          composeChargeItemChargeItemPerformerComponent("performer", e);
29148      }
29149      if (element.hasPerformingOrganization()) {
29150        composeReference("performingOrganization", element.getPerformingOrganization());
29151      }
29152      if (element.hasRequestingOrganization()) {
29153        composeReference("requestingOrganization", element.getRequestingOrganization());
29154      }
29155      if (element.hasCostCenter()) {
29156        composeReference("costCenter", element.getCostCenter());
29157      }
29158      if (element.hasQuantity()) {
29159        composeQuantity("quantity", element.getQuantity());
29160      }
29161      if (element.hasBodysite()) { 
29162        for (CodeableConcept e : element.getBodysite()) 
29163          composeCodeableConcept("bodysite", e);
29164      }
29165      if (element.hasFactorOverrideElement()) {
29166        composeDecimal("factorOverride", element.getFactorOverrideElement());
29167      }
29168      if (element.hasPriceOverride()) {
29169        composeMoney("priceOverride", element.getPriceOverride());
29170      }
29171      if (element.hasOverrideReasonElement()) {
29172        composeString("overrideReason", element.getOverrideReasonElement());
29173      }
29174      if (element.hasEnterer()) {
29175        composeReference("enterer", element.getEnterer());
29176      }
29177      if (element.hasEnteredDateElement()) {
29178        composeDateTime("enteredDate", element.getEnteredDateElement());
29179      }
29180      if (element.hasReason()) { 
29181        for (CodeableConcept e : element.getReason()) 
29182          composeCodeableConcept("reason", e);
29183      }
29184      if (element.hasService()) { 
29185        for (Reference e : element.getService()) 
29186          composeReference("service", e);
29187      }
29188      if (element.hasProduct()) {
29189        composeType("product", element.getProduct());
29190      }      if (element.hasAccount()) { 
29191        for (Reference e : element.getAccount()) 
29192          composeReference("account", e);
29193      }
29194      if (element.hasNote()) { 
29195        for (Annotation e : element.getNote()) 
29196          composeAnnotation("note", e);
29197      }
29198      if (element.hasSupportingInformation()) { 
29199        for (Reference e : element.getSupportingInformation()) 
29200          composeReference("supportingInformation", e);
29201      }
29202  }
29203
29204  protected void composeChargeItemChargeItemPerformerComponent(String name, ChargeItem.ChargeItemPerformerComponent element) throws IOException {
29205    if (element != null) {
29206      composeElementAttributes(element);
29207      xml.enter(FHIR_NS, name);
29208      composeChargeItemChargeItemPerformerComponentElements(element);
29209      composeElementClose(element);
29210      xml.exit(FHIR_NS, name);
29211    }
29212  }
29213
29214  protected void composeChargeItemChargeItemPerformerComponentElements(ChargeItem.ChargeItemPerformerComponent element) throws IOException {
29215      composeBackboneElementElements(element);
29216      if (element.hasFunction()) {
29217        composeCodeableConcept("function", element.getFunction());
29218      }
29219      if (element.hasActor()) {
29220        composeReference("actor", element.getActor());
29221      }
29222  }
29223
29224  protected void composeChargeItemDefinition(String name, ChargeItemDefinition element) throws IOException {
29225    if (element != null) {
29226      composeDomainResourceAttributes(element);
29227      xml.enter(FHIR_NS, name);
29228      composeChargeItemDefinitionElements(element);
29229      composeElementClose(element);
29230      xml.exit(FHIR_NS, name);
29231    }
29232  }
29233
29234  protected void composeChargeItemDefinitionElements(ChargeItemDefinition element) throws IOException {
29235      composeDomainResourceElements(element);
29236      if (element.hasUrlElement()) {
29237        composeUri("url", element.getUrlElement());
29238      }
29239      if (element.hasIdentifier()) { 
29240        for (Identifier e : element.getIdentifier()) 
29241          composeIdentifier("identifier", e);
29242      }
29243      if (element.hasVersionElement()) {
29244        composeString("version", element.getVersionElement());
29245      }
29246      if (element.hasTitleElement()) {
29247        composeString("title", element.getTitleElement());
29248      }
29249      if (element.hasDerivedFromUri()) { 
29250        for (UriType e : element.getDerivedFromUri()) 
29251          composeUri("derivedFromUri", e);
29252      }
29253      if (element.hasPartOf()) { 
29254        for (CanonicalType e : element.getPartOf()) 
29255          composeCanonical("partOf", e);
29256      }
29257      if (element.hasReplaces()) { 
29258        for (CanonicalType e : element.getReplaces()) 
29259          composeCanonical("replaces", e);
29260      }
29261      if (element.hasStatusElement())
29262        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29263      if (element.hasExperimentalElement()) {
29264        composeBoolean("experimental", element.getExperimentalElement());
29265      }
29266      if (element.hasDateElement()) {
29267        composeDateTime("date", element.getDateElement());
29268      }
29269      if (element.hasPublisherElement()) {
29270        composeString("publisher", element.getPublisherElement());
29271      }
29272      if (element.hasContact()) { 
29273        for (ContactDetail e : element.getContact()) 
29274          composeContactDetail("contact", e);
29275      }
29276      if (element.hasDescriptionElement()) {
29277        composeMarkdown("description", element.getDescriptionElement());
29278      }
29279      if (element.hasUseContext()) { 
29280        for (UsageContext e : element.getUseContext()) 
29281          composeUsageContext("useContext", e);
29282      }
29283      if (element.hasJurisdiction()) { 
29284        for (CodeableConcept e : element.getJurisdiction()) 
29285          composeCodeableConcept("jurisdiction", e);
29286      }
29287      if (element.hasCopyrightElement()) {
29288        composeMarkdown("copyright", element.getCopyrightElement());
29289      }
29290      if (element.hasApprovalDateElement()) {
29291        composeDate("approvalDate", element.getApprovalDateElement());
29292      }
29293      if (element.hasLastReviewDateElement()) {
29294        composeDate("lastReviewDate", element.getLastReviewDateElement());
29295      }
29296      if (element.hasEffectivePeriod()) {
29297        composePeriod("effectivePeriod", element.getEffectivePeriod());
29298      }
29299      if (element.hasCode()) {
29300        composeCodeableConcept("code", element.getCode());
29301      }
29302      if (element.hasInstance()) { 
29303        for (Reference e : element.getInstance()) 
29304          composeReference("instance", e);
29305      }
29306      if (element.hasApplicability()) { 
29307        for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
29308          composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent("applicability", e);
29309      }
29310      if (element.hasPropertyGroup()) { 
29311        for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent e : element.getPropertyGroup()) 
29312          composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent("propertyGroup", e);
29313      }
29314  }
29315
29316  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
29317    if (element != null) {
29318      composeElementAttributes(element);
29319      xml.enter(FHIR_NS, name);
29320      composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponentElements(element);
29321      composeElementClose(element);
29322      xml.exit(FHIR_NS, name);
29323    }
29324  }
29325
29326  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponentElements(ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
29327      composeBackboneElementElements(element);
29328      if (element.hasDescriptionElement()) {
29329        composeString("description", element.getDescriptionElement());
29330      }
29331      if (element.hasLanguageElement()) {
29332        composeString("language", element.getLanguageElement());
29333      }
29334      if (element.hasExpressionElement()) {
29335        composeString("expression", element.getExpressionElement());
29336      }
29337  }
29338
29339  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
29340    if (element != null) {
29341      composeElementAttributes(element);
29342      xml.enter(FHIR_NS, name);
29343      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentElements(element);
29344      composeElementClose(element);
29345      xml.exit(FHIR_NS, name);
29346    }
29347  }
29348
29349  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
29350      composeBackboneElementElements(element);
29351      if (element.hasApplicability()) { 
29352        for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
29353          composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent("applicability", e);
29354      }
29355      if (element.hasPriceComponent()) { 
29356        for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent e : element.getPriceComponent()) 
29357          composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent("priceComponent", e);
29358      }
29359  }
29360
29361  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
29362    if (element != null) {
29363      composeElementAttributes(element);
29364      xml.enter(FHIR_NS, name);
29365      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentElements(element);
29366      composeElementClose(element);
29367      xml.exit(FHIR_NS, name);
29368    }
29369  }
29370
29371  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
29372      composeBackboneElementElements(element);
29373      if (element.hasTypeElement())
29374        composeEnumeration("type", element.getTypeElement(), new ChargeItemDefinition.ChargeItemDefinitionPriceComponentTypeEnumFactory());
29375      if (element.hasCode()) {
29376        composeCodeableConcept("code", element.getCode());
29377      }
29378      if (element.hasFactorElement()) {
29379        composeDecimal("factor", element.getFactorElement());
29380      }
29381      if (element.hasAmount()) {
29382        composeMoney("amount", element.getAmount());
29383      }
29384  }
29385
29386  protected void composeClaim(String name, Claim element) throws IOException {
29387    if (element != null) {
29388      composeDomainResourceAttributes(element);
29389      xml.enter(FHIR_NS, name);
29390      composeClaimElements(element);
29391      composeElementClose(element);
29392      xml.exit(FHIR_NS, name);
29393    }
29394  }
29395
29396  protected void composeClaimElements(Claim element) throws IOException {
29397      composeDomainResourceElements(element);
29398      if (element.hasIdentifier()) { 
29399        for (Identifier e : element.getIdentifier()) 
29400          composeIdentifier("identifier", e);
29401      }
29402      if (element.hasStatusElement())
29403        composeEnumeration("status", element.getStatusElement(), new Claim.ClaimStatusEnumFactory());
29404      if (element.hasType()) {
29405        composeCodeableConcept("type", element.getType());
29406      }
29407      if (element.hasSubType()) {
29408        composeCodeableConcept("subType", element.getSubType());
29409      }
29410      if (element.hasUseElement())
29411        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
29412      if (element.hasPatient()) {
29413        composeReference("patient", element.getPatient());
29414      }
29415      if (element.hasBillablePeriod()) {
29416        composePeriod("billablePeriod", element.getBillablePeriod());
29417      }
29418      if (element.hasCreatedElement()) {
29419        composeDateTime("created", element.getCreatedElement());
29420      }
29421      if (element.hasEnterer()) {
29422        composeReference("enterer", element.getEnterer());
29423      }
29424      if (element.hasInsurer()) {
29425        composeReference("insurer", element.getInsurer());
29426      }
29427      if (element.hasProvider()) {
29428        composeReference("provider", element.getProvider());
29429      }
29430      if (element.hasPriority()) {
29431        composeCodeableConcept("priority", element.getPriority());
29432      }
29433      if (element.hasFundsReserve()) {
29434        composeCodeableConcept("fundsReserve", element.getFundsReserve());
29435      }
29436      if (element.hasRelated()) { 
29437        for (Claim.RelatedClaimComponent e : element.getRelated()) 
29438          composeClaimRelatedClaimComponent("related", e);
29439      }
29440      if (element.hasPrescription()) {
29441        composeReference("prescription", element.getPrescription());
29442      }
29443      if (element.hasOriginalPrescription()) {
29444        composeReference("originalPrescription", element.getOriginalPrescription());
29445      }
29446      if (element.hasPayee()) {
29447        composeClaimPayeeComponent("payee", element.getPayee());
29448      }
29449      if (element.hasReferral()) {
29450        composeReference("referral", element.getReferral());
29451      }
29452      if (element.hasFacility()) {
29453        composeReference("facility", element.getFacility());
29454      }
29455      if (element.hasCareTeam()) { 
29456        for (Claim.CareTeamComponent e : element.getCareTeam()) 
29457          composeClaimCareTeamComponent("careTeam", e);
29458      }
29459      if (element.hasSupportingInfo()) { 
29460        for (Claim.SupportingInformationComponent e : element.getSupportingInfo()) 
29461          composeClaimSupportingInformationComponent("supportingInfo", e);
29462      }
29463      if (element.hasDiagnosis()) { 
29464        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
29465          composeClaimDiagnosisComponent("diagnosis", e);
29466      }
29467      if (element.hasProcedure()) { 
29468        for (Claim.ProcedureComponent e : element.getProcedure()) 
29469          composeClaimProcedureComponent("procedure", e);
29470      }
29471      if (element.hasInsurance()) { 
29472        for (Claim.InsuranceComponent e : element.getInsurance()) 
29473          composeClaimInsuranceComponent("insurance", e);
29474      }
29475      if (element.hasAccident()) {
29476        composeClaimAccidentComponent("accident", element.getAccident());
29477      }
29478      if (element.hasItem()) { 
29479        for (Claim.ItemComponent e : element.getItem()) 
29480          composeClaimItemComponent("item", e);
29481      }
29482      if (element.hasTotal()) {
29483        composeMoney("total", element.getTotal());
29484      }
29485  }
29486
29487  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
29488    if (element != null) {
29489      composeElementAttributes(element);
29490      xml.enter(FHIR_NS, name);
29491      composeClaimRelatedClaimComponentElements(element);
29492      composeElementClose(element);
29493      xml.exit(FHIR_NS, name);
29494    }
29495  }
29496
29497  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
29498      composeBackboneElementElements(element);
29499      if (element.hasClaim()) {
29500        composeReference("claim", element.getClaim());
29501      }
29502      if (element.hasRelationship()) {
29503        composeCodeableConcept("relationship", element.getRelationship());
29504      }
29505      if (element.hasReference()) {
29506        composeIdentifier("reference", element.getReference());
29507      }
29508  }
29509
29510  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
29511    if (element != null) {
29512      composeElementAttributes(element);
29513      xml.enter(FHIR_NS, name);
29514      composeClaimPayeeComponentElements(element);
29515      composeElementClose(element);
29516      xml.exit(FHIR_NS, name);
29517    }
29518  }
29519
29520  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
29521      composeBackboneElementElements(element);
29522      if (element.hasType()) {
29523        composeCodeableConcept("type", element.getType());
29524      }
29525      if (element.hasParty()) {
29526        composeReference("party", element.getParty());
29527      }
29528  }
29529
29530  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
29531    if (element != null) {
29532      composeElementAttributes(element);
29533      xml.enter(FHIR_NS, name);
29534      composeClaimCareTeamComponentElements(element);
29535      composeElementClose(element);
29536      xml.exit(FHIR_NS, name);
29537    }
29538  }
29539
29540  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
29541      composeBackboneElementElements(element);
29542      if (element.hasSequenceElement()) {
29543        composePositiveInt("sequence", element.getSequenceElement());
29544      }
29545      if (element.hasProvider()) {
29546        composeReference("provider", element.getProvider());
29547      }
29548      if (element.hasResponsibleElement()) {
29549        composeBoolean("responsible", element.getResponsibleElement());
29550      }
29551      if (element.hasRole()) {
29552        composeCodeableConcept("role", element.getRole());
29553      }
29554      if (element.hasQualification()) {
29555        composeCodeableConcept("qualification", element.getQualification());
29556      }
29557  }
29558
29559  protected void composeClaimSupportingInformationComponent(String name, Claim.SupportingInformationComponent element) throws IOException {
29560    if (element != null) {
29561      composeElementAttributes(element);
29562      xml.enter(FHIR_NS, name);
29563      composeClaimSupportingInformationComponentElements(element);
29564      composeElementClose(element);
29565      xml.exit(FHIR_NS, name);
29566    }
29567  }
29568
29569  protected void composeClaimSupportingInformationComponentElements(Claim.SupportingInformationComponent element) throws IOException {
29570      composeBackboneElementElements(element);
29571      if (element.hasSequenceElement()) {
29572        composePositiveInt("sequence", element.getSequenceElement());
29573      }
29574      if (element.hasCategory()) {
29575        composeCodeableConcept("category", element.getCategory());
29576      }
29577      if (element.hasCode()) {
29578        composeCodeableConcept("code", element.getCode());
29579      }
29580      if (element.hasTiming()) {
29581        composeType("timing", element.getTiming());
29582      }      if (element.hasValue()) {
29583        composeType("value", element.getValue());
29584      }      if (element.hasReason()) {
29585        composeCodeableConcept("reason", element.getReason());
29586      }
29587  }
29588
29589  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
29590    if (element != null) {
29591      composeElementAttributes(element);
29592      xml.enter(FHIR_NS, name);
29593      composeClaimDiagnosisComponentElements(element);
29594      composeElementClose(element);
29595      xml.exit(FHIR_NS, name);
29596    }
29597  }
29598
29599  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
29600      composeBackboneElementElements(element);
29601      if (element.hasSequenceElement()) {
29602        composePositiveInt("sequence", element.getSequenceElement());
29603      }
29604      if (element.hasDiagnosis()) {
29605        composeType("diagnosis", element.getDiagnosis());
29606      }      if (element.hasType()) { 
29607        for (CodeableConcept e : element.getType()) 
29608          composeCodeableConcept("type", e);
29609      }
29610      if (element.hasOnAdmission()) {
29611        composeCodeableConcept("onAdmission", element.getOnAdmission());
29612      }
29613      if (element.hasPackageCode()) {
29614        composeCodeableConcept("packageCode", element.getPackageCode());
29615      }
29616  }
29617
29618  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
29619    if (element != null) {
29620      composeElementAttributes(element);
29621      xml.enter(FHIR_NS, name);
29622      composeClaimProcedureComponentElements(element);
29623      composeElementClose(element);
29624      xml.exit(FHIR_NS, name);
29625    }
29626  }
29627
29628  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
29629      composeBackboneElementElements(element);
29630      if (element.hasSequenceElement()) {
29631        composePositiveInt("sequence", element.getSequenceElement());
29632      }
29633      if (element.hasType()) { 
29634        for (CodeableConcept e : element.getType()) 
29635          composeCodeableConcept("type", e);
29636      }
29637      if (element.hasDateElement()) {
29638        composeDateTime("date", element.getDateElement());
29639      }
29640      if (element.hasProcedure()) {
29641        composeType("procedure", element.getProcedure());
29642      }      if (element.hasUdi()) { 
29643        for (Reference e : element.getUdi()) 
29644          composeReference("udi", e);
29645      }
29646  }
29647
29648  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
29649    if (element != null) {
29650      composeElementAttributes(element);
29651      xml.enter(FHIR_NS, name);
29652      composeClaimInsuranceComponentElements(element);
29653      composeElementClose(element);
29654      xml.exit(FHIR_NS, name);
29655    }
29656  }
29657
29658  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
29659      composeBackboneElementElements(element);
29660      if (element.hasSequenceElement()) {
29661        composePositiveInt("sequence", element.getSequenceElement());
29662      }
29663      if (element.hasFocalElement()) {
29664        composeBoolean("focal", element.getFocalElement());
29665      }
29666      if (element.hasIdentifier()) {
29667        composeIdentifier("identifier", element.getIdentifier());
29668      }
29669      if (element.hasCoverage()) {
29670        composeReference("coverage", element.getCoverage());
29671      }
29672      if (element.hasBusinessArrangementElement()) {
29673        composeString("businessArrangement", element.getBusinessArrangementElement());
29674      }
29675      if (element.hasPreAuthRef()) { 
29676        for (StringType e : element.getPreAuthRef()) 
29677          composeString("preAuthRef", e);
29678      }
29679      if (element.hasClaimResponse()) {
29680        composeReference("claimResponse", element.getClaimResponse());
29681      }
29682  }
29683
29684  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
29685    if (element != null) {
29686      composeElementAttributes(element);
29687      xml.enter(FHIR_NS, name);
29688      composeClaimAccidentComponentElements(element);
29689      composeElementClose(element);
29690      xml.exit(FHIR_NS, name);
29691    }
29692  }
29693
29694  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
29695      composeBackboneElementElements(element);
29696      if (element.hasDateElement()) {
29697        composeDate("date", element.getDateElement());
29698      }
29699      if (element.hasType()) {
29700        composeCodeableConcept("type", element.getType());
29701      }
29702      if (element.hasLocation()) {
29703        composeType("location", element.getLocation());
29704      }  }
29705
29706  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
29707    if (element != null) {
29708      composeElementAttributes(element);
29709      xml.enter(FHIR_NS, name);
29710      composeClaimItemComponentElements(element);
29711      composeElementClose(element);
29712      xml.exit(FHIR_NS, name);
29713    }
29714  }
29715
29716  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
29717      composeBackboneElementElements(element);
29718      if (element.hasSequenceElement()) {
29719        composePositiveInt("sequence", element.getSequenceElement());
29720      }
29721      if (element.hasCareTeamSequence()) { 
29722        for (PositiveIntType e : element.getCareTeamSequence()) 
29723          composePositiveInt("careTeamSequence", e);
29724      }
29725      if (element.hasDiagnosisSequence()) { 
29726        for (PositiveIntType e : element.getDiagnosisSequence()) 
29727          composePositiveInt("diagnosisSequence", e);
29728      }
29729      if (element.hasProcedureSequence()) { 
29730        for (PositiveIntType e : element.getProcedureSequence()) 
29731          composePositiveInt("procedureSequence", e);
29732      }
29733      if (element.hasInformationSequence()) { 
29734        for (PositiveIntType e : element.getInformationSequence()) 
29735          composePositiveInt("informationSequence", e);
29736      }
29737      if (element.hasRevenue()) {
29738        composeCodeableConcept("revenue", element.getRevenue());
29739      }
29740      if (element.hasCategory()) {
29741        composeCodeableConcept("category", element.getCategory());
29742      }
29743      if (element.hasProductOrService()) {
29744        composeCodeableConcept("productOrService", element.getProductOrService());
29745      }
29746      if (element.hasModifier()) { 
29747        for (CodeableConcept e : element.getModifier()) 
29748          composeCodeableConcept("modifier", e);
29749      }
29750      if (element.hasProgramCode()) { 
29751        for (CodeableConcept e : element.getProgramCode()) 
29752          composeCodeableConcept("programCode", e);
29753      }
29754      if (element.hasServiced()) {
29755        composeType("serviced", element.getServiced());
29756      }      if (element.hasLocation()) {
29757        composeType("location", element.getLocation());
29758      }      if (element.hasQuantity()) {
29759        composeQuantity("quantity", element.getQuantity());
29760      }
29761      if (element.hasUnitPrice()) {
29762        composeMoney("unitPrice", element.getUnitPrice());
29763      }
29764      if (element.hasFactorElement()) {
29765        composeDecimal("factor", element.getFactorElement());
29766      }
29767      if (element.hasNet()) {
29768        composeMoney("net", element.getNet());
29769      }
29770      if (element.hasUdi()) { 
29771        for (Reference e : element.getUdi()) 
29772          composeReference("udi", e);
29773      }
29774      if (element.hasBodySite()) {
29775        composeCodeableConcept("bodySite", element.getBodySite());
29776      }
29777      if (element.hasSubSite()) { 
29778        for (CodeableConcept e : element.getSubSite()) 
29779          composeCodeableConcept("subSite", e);
29780      }
29781      if (element.hasEncounter()) { 
29782        for (Reference e : element.getEncounter()) 
29783          composeReference("encounter", e);
29784      }
29785      if (element.hasDetail()) { 
29786        for (Claim.DetailComponent e : element.getDetail()) 
29787          composeClaimDetailComponent("detail", e);
29788      }
29789  }
29790
29791  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
29792    if (element != null) {
29793      composeElementAttributes(element);
29794      xml.enter(FHIR_NS, name);
29795      composeClaimDetailComponentElements(element);
29796      composeElementClose(element);
29797      xml.exit(FHIR_NS, name);
29798    }
29799  }
29800
29801  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
29802      composeBackboneElementElements(element);
29803      if (element.hasSequenceElement()) {
29804        composePositiveInt("sequence", element.getSequenceElement());
29805      }
29806      if (element.hasRevenue()) {
29807        composeCodeableConcept("revenue", element.getRevenue());
29808      }
29809      if (element.hasCategory()) {
29810        composeCodeableConcept("category", element.getCategory());
29811      }
29812      if (element.hasProductOrService()) {
29813        composeCodeableConcept("productOrService", element.getProductOrService());
29814      }
29815      if (element.hasModifier()) { 
29816        for (CodeableConcept e : element.getModifier()) 
29817          composeCodeableConcept("modifier", e);
29818      }
29819      if (element.hasProgramCode()) { 
29820        for (CodeableConcept e : element.getProgramCode()) 
29821          composeCodeableConcept("programCode", e);
29822      }
29823      if (element.hasQuantity()) {
29824        composeQuantity("quantity", element.getQuantity());
29825      }
29826      if (element.hasUnitPrice()) {
29827        composeMoney("unitPrice", element.getUnitPrice());
29828      }
29829      if (element.hasFactorElement()) {
29830        composeDecimal("factor", element.getFactorElement());
29831      }
29832      if (element.hasNet()) {
29833        composeMoney("net", element.getNet());
29834      }
29835      if (element.hasUdi()) { 
29836        for (Reference e : element.getUdi()) 
29837          composeReference("udi", e);
29838      }
29839      if (element.hasSubDetail()) { 
29840        for (Claim.SubDetailComponent e : element.getSubDetail()) 
29841          composeClaimSubDetailComponent("subDetail", e);
29842      }
29843  }
29844
29845  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
29846    if (element != null) {
29847      composeElementAttributes(element);
29848      xml.enter(FHIR_NS, name);
29849      composeClaimSubDetailComponentElements(element);
29850      composeElementClose(element);
29851      xml.exit(FHIR_NS, name);
29852    }
29853  }
29854
29855  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
29856      composeBackboneElementElements(element);
29857      if (element.hasSequenceElement()) {
29858        composePositiveInt("sequence", element.getSequenceElement());
29859      }
29860      if (element.hasRevenue()) {
29861        composeCodeableConcept("revenue", element.getRevenue());
29862      }
29863      if (element.hasCategory()) {
29864        composeCodeableConcept("category", element.getCategory());
29865      }
29866      if (element.hasProductOrService()) {
29867        composeCodeableConcept("productOrService", element.getProductOrService());
29868      }
29869      if (element.hasModifier()) { 
29870        for (CodeableConcept e : element.getModifier()) 
29871          composeCodeableConcept("modifier", e);
29872      }
29873      if (element.hasProgramCode()) { 
29874        for (CodeableConcept e : element.getProgramCode()) 
29875          composeCodeableConcept("programCode", e);
29876      }
29877      if (element.hasQuantity()) {
29878        composeQuantity("quantity", element.getQuantity());
29879      }
29880      if (element.hasUnitPrice()) {
29881        composeMoney("unitPrice", element.getUnitPrice());
29882      }
29883      if (element.hasFactorElement()) {
29884        composeDecimal("factor", element.getFactorElement());
29885      }
29886      if (element.hasNet()) {
29887        composeMoney("net", element.getNet());
29888      }
29889      if (element.hasUdi()) { 
29890        for (Reference e : element.getUdi()) 
29891          composeReference("udi", e);
29892      }
29893  }
29894
29895  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
29896    if (element != null) {
29897      composeDomainResourceAttributes(element);
29898      xml.enter(FHIR_NS, name);
29899      composeClaimResponseElements(element);
29900      composeElementClose(element);
29901      xml.exit(FHIR_NS, name);
29902    }
29903  }
29904
29905  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
29906      composeDomainResourceElements(element);
29907      if (element.hasIdentifier()) { 
29908        for (Identifier e : element.getIdentifier()) 
29909          composeIdentifier("identifier", e);
29910      }
29911      if (element.hasStatusElement())
29912        composeEnumeration("status", element.getStatusElement(), new ClaimResponse.ClaimResponseStatusEnumFactory());
29913      if (element.hasType()) {
29914        composeCodeableConcept("type", element.getType());
29915      }
29916      if (element.hasSubType()) {
29917        composeCodeableConcept("subType", element.getSubType());
29918      }
29919      if (element.hasUseElement())
29920        composeEnumeration("use", element.getUseElement(), new ClaimResponse.UseEnumFactory());
29921      if (element.hasPatient()) {
29922        composeReference("patient", element.getPatient());
29923      }
29924      if (element.hasCreatedElement()) {
29925        composeDateTime("created", element.getCreatedElement());
29926      }
29927      if (element.hasInsurer()) {
29928        composeReference("insurer", element.getInsurer());
29929      }
29930      if (element.hasRequestor()) {
29931        composeReference("requestor", element.getRequestor());
29932      }
29933      if (element.hasRequest()) {
29934        composeReference("request", element.getRequest());
29935      }
29936      if (element.hasOutcomeElement())
29937        composeEnumeration("outcome", element.getOutcomeElement(), new ClaimResponse.RemittanceOutcomeEnumFactory());
29938      if (element.hasDispositionElement()) {
29939        composeString("disposition", element.getDispositionElement());
29940      }
29941      if (element.hasPreAuthRefElement()) {
29942        composeString("preAuthRef", element.getPreAuthRefElement());
29943      }
29944      if (element.hasPreAuthPeriod()) {
29945        composePeriod("preAuthPeriod", element.getPreAuthPeriod());
29946      }
29947      if (element.hasPayeeType()) {
29948        composeCodeableConcept("payeeType", element.getPayeeType());
29949      }
29950      if (element.hasItem()) { 
29951        for (ClaimResponse.ItemComponent e : element.getItem()) 
29952          composeClaimResponseItemComponent("item", e);
29953      }
29954      if (element.hasAddItem()) { 
29955        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
29956          composeClaimResponseAddedItemComponent("addItem", e);
29957      }
29958      if (element.hasAdjudication()) { 
29959        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29960          composeClaimResponseAdjudicationComponent("adjudication", e);
29961      }
29962      if (element.hasTotal()) { 
29963        for (ClaimResponse.TotalComponent e : element.getTotal()) 
29964          composeClaimResponseTotalComponent("total", e);
29965      }
29966      if (element.hasPayment()) {
29967        composeClaimResponsePaymentComponent("payment", element.getPayment());
29968      }
29969      if (element.hasFundsReserve()) {
29970        composeCodeableConcept("fundsReserve", element.getFundsReserve());
29971      }
29972      if (element.hasFormCode()) {
29973        composeCodeableConcept("formCode", element.getFormCode());
29974      }
29975      if (element.hasForm()) {
29976        composeAttachment("form", element.getForm());
29977      }
29978      if (element.hasProcessNote()) { 
29979        for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
29980          composeClaimResponseNoteComponent("processNote", e);
29981      }
29982      if (element.hasCommunicationRequest()) { 
29983        for (Reference e : element.getCommunicationRequest()) 
29984          composeReference("communicationRequest", e);
29985      }
29986      if (element.hasInsurance()) { 
29987        for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
29988          composeClaimResponseInsuranceComponent("insurance", e);
29989      }
29990      if (element.hasError()) { 
29991        for (ClaimResponse.ErrorComponent e : element.getError()) 
29992          composeClaimResponseErrorComponent("error", e);
29993      }
29994  }
29995
29996  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
29997    if (element != null) {
29998      composeElementAttributes(element);
29999      xml.enter(FHIR_NS, name);
30000      composeClaimResponseItemComponentElements(element);
30001      composeElementClose(element);
30002      xml.exit(FHIR_NS, name);
30003    }
30004  }
30005
30006  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
30007      composeBackboneElementElements(element);
30008      if (element.hasItemSequenceElement()) {
30009        composePositiveInt("itemSequence", element.getItemSequenceElement());
30010      }
30011      if (element.hasNoteNumber()) { 
30012        for (PositiveIntType e : element.getNoteNumber()) 
30013          composePositiveInt("noteNumber", e);
30014      }
30015      if (element.hasAdjudication()) { 
30016        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30017          composeClaimResponseAdjudicationComponent("adjudication", e);
30018      }
30019      if (element.hasDetail()) { 
30020        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
30021          composeClaimResponseItemDetailComponent("detail", e);
30022      }
30023  }
30024
30025  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
30026    if (element != null) {
30027      composeElementAttributes(element);
30028      xml.enter(FHIR_NS, name);
30029      composeClaimResponseAdjudicationComponentElements(element);
30030      composeElementClose(element);
30031      xml.exit(FHIR_NS, name);
30032    }
30033  }
30034
30035  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
30036      composeBackboneElementElements(element);
30037      if (element.hasCategory()) {
30038        composeCodeableConcept("category", element.getCategory());
30039      }
30040      if (element.hasReason()) {
30041        composeCodeableConcept("reason", element.getReason());
30042      }
30043      if (element.hasAmount()) {
30044        composeMoney("amount", element.getAmount());
30045      }
30046      if (element.hasValueElement()) {
30047        composeDecimal("value", element.getValueElement());
30048      }
30049  }
30050
30051  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
30052    if (element != null) {
30053      composeElementAttributes(element);
30054      xml.enter(FHIR_NS, name);
30055      composeClaimResponseItemDetailComponentElements(element);
30056      composeElementClose(element);
30057      xml.exit(FHIR_NS, name);
30058    }
30059  }
30060
30061  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
30062      composeBackboneElementElements(element);
30063      if (element.hasDetailSequenceElement()) {
30064        composePositiveInt("detailSequence", element.getDetailSequenceElement());
30065      }
30066      if (element.hasNoteNumber()) { 
30067        for (PositiveIntType e : element.getNoteNumber()) 
30068          composePositiveInt("noteNumber", e);
30069      }
30070      if (element.hasAdjudication()) { 
30071        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30072          composeClaimResponseAdjudicationComponent("adjudication", e);
30073      }
30074      if (element.hasSubDetail()) { 
30075        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
30076          composeClaimResponseSubDetailComponent("subDetail", e);
30077      }
30078  }
30079
30080  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
30081    if (element != null) {
30082      composeElementAttributes(element);
30083      xml.enter(FHIR_NS, name);
30084      composeClaimResponseSubDetailComponentElements(element);
30085      composeElementClose(element);
30086      xml.exit(FHIR_NS, name);
30087    }
30088  }
30089
30090  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
30091      composeBackboneElementElements(element);
30092      if (element.hasSubDetailSequenceElement()) {
30093        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
30094      }
30095      if (element.hasNoteNumber()) { 
30096        for (PositiveIntType e : element.getNoteNumber()) 
30097          composePositiveInt("noteNumber", e);
30098      }
30099      if (element.hasAdjudication()) { 
30100        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30101          composeClaimResponseAdjudicationComponent("adjudication", e);
30102      }
30103  }
30104
30105  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
30106    if (element != null) {
30107      composeElementAttributes(element);
30108      xml.enter(FHIR_NS, name);
30109      composeClaimResponseAddedItemComponentElements(element);
30110      composeElementClose(element);
30111      xml.exit(FHIR_NS, name);
30112    }
30113  }
30114
30115  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
30116      composeBackboneElementElements(element);
30117      if (element.hasItemSequence()) { 
30118        for (PositiveIntType e : element.getItemSequence()) 
30119          composePositiveInt("itemSequence", e);
30120      }
30121      if (element.hasDetailSequence()) { 
30122        for (PositiveIntType e : element.getDetailSequence()) 
30123          composePositiveInt("detailSequence", e);
30124      }
30125      if (element.hasSubdetailSequence()) { 
30126        for (PositiveIntType e : element.getSubdetailSequence()) 
30127          composePositiveInt("subdetailSequence", e);
30128      }
30129      if (element.hasProvider()) { 
30130        for (Reference e : element.getProvider()) 
30131          composeReference("provider", e);
30132      }
30133      if (element.hasProductOrService()) {
30134        composeCodeableConcept("productOrService", element.getProductOrService());
30135      }
30136      if (element.hasModifier()) { 
30137        for (CodeableConcept e : element.getModifier()) 
30138          composeCodeableConcept("modifier", e);
30139      }
30140      if (element.hasProgramCode()) { 
30141        for (CodeableConcept e : element.getProgramCode()) 
30142          composeCodeableConcept("programCode", e);
30143      }
30144      if (element.hasServiced()) {
30145        composeType("serviced", element.getServiced());
30146      }      if (element.hasLocation()) {
30147        composeType("location", element.getLocation());
30148      }      if (element.hasQuantity()) {
30149        composeQuantity("quantity", element.getQuantity());
30150      }
30151      if (element.hasUnitPrice()) {
30152        composeMoney("unitPrice", element.getUnitPrice());
30153      }
30154      if (element.hasFactorElement()) {
30155        composeDecimal("factor", element.getFactorElement());
30156      }
30157      if (element.hasNet()) {
30158        composeMoney("net", element.getNet());
30159      }
30160      if (element.hasBodySite()) {
30161        composeCodeableConcept("bodySite", element.getBodySite());
30162      }
30163      if (element.hasSubSite()) { 
30164        for (CodeableConcept e : element.getSubSite()) 
30165          composeCodeableConcept("subSite", e);
30166      }
30167      if (element.hasNoteNumber()) { 
30168        for (PositiveIntType e : element.getNoteNumber()) 
30169          composePositiveInt("noteNumber", e);
30170      }
30171      if (element.hasAdjudication()) { 
30172        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30173          composeClaimResponseAdjudicationComponent("adjudication", e);
30174      }
30175      if (element.hasDetail()) { 
30176        for (ClaimResponse.AddedItemDetailComponent e : element.getDetail()) 
30177          composeClaimResponseAddedItemDetailComponent("detail", e);
30178      }
30179  }
30180
30181  protected void composeClaimResponseAddedItemDetailComponent(String name, ClaimResponse.AddedItemDetailComponent element) throws IOException {
30182    if (element != null) {
30183      composeElementAttributes(element);
30184      xml.enter(FHIR_NS, name);
30185      composeClaimResponseAddedItemDetailComponentElements(element);
30186      composeElementClose(element);
30187      xml.exit(FHIR_NS, name);
30188    }
30189  }
30190
30191  protected void composeClaimResponseAddedItemDetailComponentElements(ClaimResponse.AddedItemDetailComponent element) throws IOException {
30192      composeBackboneElementElements(element);
30193      if (element.hasProductOrService()) {
30194        composeCodeableConcept("productOrService", element.getProductOrService());
30195      }
30196      if (element.hasModifier()) { 
30197        for (CodeableConcept e : element.getModifier()) 
30198          composeCodeableConcept("modifier", e);
30199      }
30200      if (element.hasQuantity()) {
30201        composeQuantity("quantity", element.getQuantity());
30202      }
30203      if (element.hasUnitPrice()) {
30204        composeMoney("unitPrice", element.getUnitPrice());
30205      }
30206      if (element.hasFactorElement()) {
30207        composeDecimal("factor", element.getFactorElement());
30208      }
30209      if (element.hasNet()) {
30210        composeMoney("net", element.getNet());
30211      }
30212      if (element.hasNoteNumber()) { 
30213        for (PositiveIntType e : element.getNoteNumber()) 
30214          composePositiveInt("noteNumber", e);
30215      }
30216      if (element.hasAdjudication()) { 
30217        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30218          composeClaimResponseAdjudicationComponent("adjudication", e);
30219      }
30220      if (element.hasSubDetail()) { 
30221        for (ClaimResponse.AddedItemSubDetailComponent e : element.getSubDetail()) 
30222          composeClaimResponseAddedItemSubDetailComponent("subDetail", e);
30223      }
30224  }
30225
30226  protected void composeClaimResponseAddedItemSubDetailComponent(String name, ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
30227    if (element != null) {
30228      composeElementAttributes(element);
30229      xml.enter(FHIR_NS, name);
30230      composeClaimResponseAddedItemSubDetailComponentElements(element);
30231      composeElementClose(element);
30232      xml.exit(FHIR_NS, name);
30233    }
30234  }
30235
30236  protected void composeClaimResponseAddedItemSubDetailComponentElements(ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
30237      composeBackboneElementElements(element);
30238      if (element.hasProductOrService()) {
30239        composeCodeableConcept("productOrService", element.getProductOrService());
30240      }
30241      if (element.hasModifier()) { 
30242        for (CodeableConcept e : element.getModifier()) 
30243          composeCodeableConcept("modifier", e);
30244      }
30245      if (element.hasQuantity()) {
30246        composeQuantity("quantity", element.getQuantity());
30247      }
30248      if (element.hasUnitPrice()) {
30249        composeMoney("unitPrice", element.getUnitPrice());
30250      }
30251      if (element.hasFactorElement()) {
30252        composeDecimal("factor", element.getFactorElement());
30253      }
30254      if (element.hasNet()) {
30255        composeMoney("net", element.getNet());
30256      }
30257      if (element.hasNoteNumber()) { 
30258        for (PositiveIntType e : element.getNoteNumber()) 
30259          composePositiveInt("noteNumber", e);
30260      }
30261      if (element.hasAdjudication()) { 
30262        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30263          composeClaimResponseAdjudicationComponent("adjudication", e);
30264      }
30265  }
30266
30267  protected void composeClaimResponseTotalComponent(String name, ClaimResponse.TotalComponent element) throws IOException {
30268    if (element != null) {
30269      composeElementAttributes(element);
30270      xml.enter(FHIR_NS, name);
30271      composeClaimResponseTotalComponentElements(element);
30272      composeElementClose(element);
30273      xml.exit(FHIR_NS, name);
30274    }
30275  }
30276
30277  protected void composeClaimResponseTotalComponentElements(ClaimResponse.TotalComponent element) throws IOException {
30278      composeBackboneElementElements(element);
30279      if (element.hasCategory()) {
30280        composeCodeableConcept("category", element.getCategory());
30281      }
30282      if (element.hasAmount()) {
30283        composeMoney("amount", element.getAmount());
30284      }
30285  }
30286
30287  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
30288    if (element != null) {
30289      composeElementAttributes(element);
30290      xml.enter(FHIR_NS, name);
30291      composeClaimResponsePaymentComponentElements(element);
30292      composeElementClose(element);
30293      xml.exit(FHIR_NS, name);
30294    }
30295  }
30296
30297  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
30298      composeBackboneElementElements(element);
30299      if (element.hasType()) {
30300        composeCodeableConcept("type", element.getType());
30301      }
30302      if (element.hasAdjustment()) {
30303        composeMoney("adjustment", element.getAdjustment());
30304      }
30305      if (element.hasAdjustmentReason()) {
30306        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
30307      }
30308      if (element.hasDateElement()) {
30309        composeDate("date", element.getDateElement());
30310      }
30311      if (element.hasAmount()) {
30312        composeMoney("amount", element.getAmount());
30313      }
30314      if (element.hasIdentifier()) {
30315        composeIdentifier("identifier", element.getIdentifier());
30316      }
30317  }
30318
30319  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
30320    if (element != null) {
30321      composeElementAttributes(element);
30322      xml.enter(FHIR_NS, name);
30323      composeClaimResponseNoteComponentElements(element);
30324      composeElementClose(element);
30325      xml.exit(FHIR_NS, name);
30326    }
30327  }
30328
30329  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
30330      composeBackboneElementElements(element);
30331      if (element.hasNumberElement()) {
30332        composePositiveInt("number", element.getNumberElement());
30333      }
30334      if (element.hasTypeElement())
30335        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
30336      if (element.hasTextElement()) {
30337        composeString("text", element.getTextElement());
30338      }
30339      if (element.hasLanguage()) {
30340        composeCodeableConcept("language", element.getLanguage());
30341      }
30342  }
30343
30344  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
30345    if (element != null) {
30346      composeElementAttributes(element);
30347      xml.enter(FHIR_NS, name);
30348      composeClaimResponseInsuranceComponentElements(element);
30349      composeElementClose(element);
30350      xml.exit(FHIR_NS, name);
30351    }
30352  }
30353
30354  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
30355      composeBackboneElementElements(element);
30356      if (element.hasSequenceElement()) {
30357        composePositiveInt("sequence", element.getSequenceElement());
30358      }
30359      if (element.hasFocalElement()) {
30360        composeBoolean("focal", element.getFocalElement());
30361      }
30362      if (element.hasCoverage()) {
30363        composeReference("coverage", element.getCoverage());
30364      }
30365      if (element.hasBusinessArrangementElement()) {
30366        composeString("businessArrangement", element.getBusinessArrangementElement());
30367      }
30368      if (element.hasClaimResponse()) {
30369        composeReference("claimResponse", element.getClaimResponse());
30370      }
30371  }
30372
30373  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
30374    if (element != null) {
30375      composeElementAttributes(element);
30376      xml.enter(FHIR_NS, name);
30377      composeClaimResponseErrorComponentElements(element);
30378      composeElementClose(element);
30379      xml.exit(FHIR_NS, name);
30380    }
30381  }
30382
30383  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
30384      composeBackboneElementElements(element);
30385      if (element.hasItemSequenceElement()) {
30386        composePositiveInt("itemSequence", element.getItemSequenceElement());
30387      }
30388      if (element.hasDetailSequenceElement()) {
30389        composePositiveInt("detailSequence", element.getDetailSequenceElement());
30390      }
30391      if (element.hasSubDetailSequenceElement()) {
30392        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
30393      }
30394      if (element.hasCode()) {
30395        composeCodeableConcept("code", element.getCode());
30396      }
30397  }
30398
30399  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
30400    if (element != null) {
30401      composeDomainResourceAttributes(element);
30402      xml.enter(FHIR_NS, name);
30403      composeClinicalImpressionElements(element);
30404      composeElementClose(element);
30405      xml.exit(FHIR_NS, name);
30406    }
30407  }
30408
30409  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
30410      composeDomainResourceElements(element);
30411      if (element.hasIdentifier()) { 
30412        for (Identifier e : element.getIdentifier()) 
30413          composeIdentifier("identifier", e);
30414      }
30415      if (element.hasStatusElement())
30416        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
30417      if (element.hasStatusReason()) {
30418        composeCodeableConcept("statusReason", element.getStatusReason());
30419      }
30420      if (element.hasCode()) {
30421        composeCodeableConcept("code", element.getCode());
30422      }
30423      if (element.hasDescriptionElement()) {
30424        composeString("description", element.getDescriptionElement());
30425      }
30426      if (element.hasSubject()) {
30427        composeReference("subject", element.getSubject());
30428      }
30429      if (element.hasEncounter()) {
30430        composeReference("encounter", element.getEncounter());
30431      }
30432      if (element.hasEffective()) {
30433        composeType("effective", element.getEffective());
30434      }      if (element.hasDateElement()) {
30435        composeDateTime("date", element.getDateElement());
30436      }
30437      if (element.hasAssessor()) {
30438        composeReference("assessor", element.getAssessor());
30439      }
30440      if (element.hasPrevious()) {
30441        composeReference("previous", element.getPrevious());
30442      }
30443      if (element.hasProblem()) { 
30444        for (Reference e : element.getProblem()) 
30445          composeReference("problem", e);
30446      }
30447      if (element.hasInvestigation()) { 
30448        for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
30449          composeClinicalImpressionClinicalImpressionInvestigationComponent("investigation", e);
30450      }
30451      if (element.hasProtocol()) { 
30452        for (UriType e : element.getProtocol()) 
30453          composeUri("protocol", e);
30454      }
30455      if (element.hasSummaryElement()) {
30456        composeString("summary", element.getSummaryElement());
30457      }
30458      if (element.hasFinding()) { 
30459        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
30460          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
30461      }
30462      if (element.hasPrognosisCodeableConcept()) { 
30463        for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
30464          composeCodeableConcept("prognosisCodeableConcept", e);
30465      }
30466      if (element.hasPrognosisReference()) { 
30467        for (Reference e : element.getPrognosisReference()) 
30468          composeReference("prognosisReference", e);
30469      }
30470      if (element.hasSupportingInfo()) { 
30471        for (Reference e : element.getSupportingInfo()) 
30472          composeReference("supportingInfo", e);
30473      }
30474      if (element.hasNote()) { 
30475        for (Annotation e : element.getNote()) 
30476          composeAnnotation("note", e);
30477      }
30478  }
30479
30480  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
30481    if (element != null) {
30482      composeElementAttributes(element);
30483      xml.enter(FHIR_NS, name);
30484      composeClinicalImpressionClinicalImpressionInvestigationComponentElements(element);
30485      composeElementClose(element);
30486      xml.exit(FHIR_NS, name);
30487    }
30488  }
30489
30490  protected void composeClinicalImpressionClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
30491      composeBackboneElementElements(element);
30492      if (element.hasCode()) {
30493        composeCodeableConcept("code", element.getCode());
30494      }
30495      if (element.hasItem()) { 
30496        for (Reference e : element.getItem()) 
30497          composeReference("item", e);
30498      }
30499  }
30500
30501  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
30502    if (element != null) {
30503      composeElementAttributes(element);
30504      xml.enter(FHIR_NS, name);
30505      composeClinicalImpressionClinicalImpressionFindingComponentElements(element);
30506      composeElementClose(element);
30507      xml.exit(FHIR_NS, name);
30508    }
30509  }
30510
30511  protected void composeClinicalImpressionClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
30512      composeBackboneElementElements(element);
30513      if (element.hasItemCodeableConcept()) {
30514        composeCodeableConcept("itemCodeableConcept", element.getItemCodeableConcept());
30515      }
30516      if (element.hasItemReference()) {
30517        composeReference("itemReference", element.getItemReference());
30518      }
30519      if (element.hasBasisElement()) {
30520        composeString("basis", element.getBasisElement());
30521      }
30522  }
30523
30524  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
30525    if (element != null) {
30526      composeDomainResourceAttributes(element);
30527      xml.enter(FHIR_NS, name);
30528      composeCodeSystemElements(element);
30529      composeElementClose(element);
30530      xml.exit(FHIR_NS, name);
30531    }
30532  }
30533
30534  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
30535      composeDomainResourceElements(element);
30536      if (element.hasUrlElement()) {
30537        composeUri("url", element.getUrlElement());
30538      }
30539      if (element.hasIdentifier()) { 
30540        for (Identifier e : element.getIdentifier()) 
30541          composeIdentifier("identifier", e);
30542      }
30543      if (element.hasVersionElement()) {
30544        composeString("version", element.getVersionElement());
30545      }
30546      if (element.hasNameElement()) {
30547        composeString("name", element.getNameElement());
30548      }
30549      if (element.hasTitleElement()) {
30550        composeString("title", element.getTitleElement());
30551      }
30552      if (element.hasStatusElement())
30553        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30554      if (element.hasExperimentalElement()) {
30555        composeBoolean("experimental", element.getExperimentalElement());
30556      }
30557      if (element.hasDateElement()) {
30558        composeDateTime("date", element.getDateElement());
30559      }
30560      if (element.hasPublisherElement()) {
30561        composeString("publisher", element.getPublisherElement());
30562      }
30563      if (element.hasContact()) { 
30564        for (ContactDetail e : element.getContact()) 
30565          composeContactDetail("contact", e);
30566      }
30567      if (element.hasDescriptionElement()) {
30568        composeMarkdown("description", element.getDescriptionElement());
30569      }
30570      if (element.hasUseContext()) { 
30571        for (UsageContext e : element.getUseContext()) 
30572          composeUsageContext("useContext", e);
30573      }
30574      if (element.hasJurisdiction()) { 
30575        for (CodeableConcept e : element.getJurisdiction()) 
30576          composeCodeableConcept("jurisdiction", e);
30577      }
30578      if (element.hasPurposeElement()) {
30579        composeMarkdown("purpose", element.getPurposeElement());
30580      }
30581      if (element.hasCopyrightElement()) {
30582        composeMarkdown("copyright", element.getCopyrightElement());
30583      }
30584      if (element.hasCaseSensitiveElement()) {
30585        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
30586      }
30587      if (element.hasValueSetElement()) {
30588        composeCanonical("valueSet", element.getValueSetElement());
30589      }
30590      if (element.hasHierarchyMeaningElement())
30591        composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
30592      if (element.hasCompositionalElement()) {
30593        composeBoolean("compositional", element.getCompositionalElement());
30594      }
30595      if (element.hasVersionNeededElement()) {
30596        composeBoolean("versionNeeded", element.getVersionNeededElement());
30597      }
30598      if (element.hasContentElement())
30599        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
30600      if (element.hasSupplementsElement()) {
30601        composeCanonical("supplements", element.getSupplementsElement());
30602      }
30603      if (element.hasCountElement()) {
30604        composeUnsignedInt("count", element.getCountElement());
30605      }
30606      if (element.hasFilter()) { 
30607        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
30608          composeCodeSystemCodeSystemFilterComponent("filter", e);
30609      }
30610      if (element.hasProperty()) { 
30611        for (CodeSystem.PropertyComponent e : element.getProperty()) 
30612          composeCodeSystemPropertyComponent("property", e);
30613      }
30614      if (element.hasConcept()) { 
30615        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
30616          composeCodeSystemConceptDefinitionComponent("concept", e);
30617      }
30618  }
30619
30620  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
30621    if (element != null) {
30622      composeElementAttributes(element);
30623      xml.enter(FHIR_NS, name);
30624      composeCodeSystemCodeSystemFilterComponentElements(element);
30625      composeElementClose(element);
30626      xml.exit(FHIR_NS, name);
30627    }
30628  }
30629
30630  protected void composeCodeSystemCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
30631      composeBackboneElementElements(element);
30632      if (element.hasCodeElement()) {
30633        composeCode("code", element.getCodeElement());
30634      }
30635      if (element.hasDescriptionElement()) {
30636        composeString("description", element.getDescriptionElement());
30637      }
30638        if (element.hasOperator()) 
30639          for (Enumeration<CodeSystem.FilterOperator> e : element.getOperator()) 
30640            composeEnumeration("operator", e, new CodeSystem.FilterOperatorEnumFactory());
30641      if (element.hasValueElement()) {
30642        composeString("value", element.getValueElement());
30643      }
30644  }
30645
30646  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
30647    if (element != null) {
30648      composeElementAttributes(element);
30649      xml.enter(FHIR_NS, name);
30650      composeCodeSystemPropertyComponentElements(element);
30651      composeElementClose(element);
30652      xml.exit(FHIR_NS, name);
30653    }
30654  }
30655
30656  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
30657      composeBackboneElementElements(element);
30658      if (element.hasCodeElement()) {
30659        composeCode("code", element.getCodeElement());
30660      }
30661      if (element.hasUriElement()) {
30662        composeUri("uri", element.getUriElement());
30663      }
30664      if (element.hasDescriptionElement()) {
30665        composeString("description", element.getDescriptionElement());
30666      }
30667      if (element.hasTypeElement())
30668        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
30669  }
30670
30671  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
30672    if (element != null) {
30673      composeElementAttributes(element);
30674      xml.enter(FHIR_NS, name);
30675      composeCodeSystemConceptDefinitionComponentElements(element);
30676      composeElementClose(element);
30677      xml.exit(FHIR_NS, name);
30678    }
30679  }
30680
30681  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
30682      composeBackboneElementElements(element);
30683      if (element.hasCodeElement()) {
30684        composeCode("code", element.getCodeElement());
30685      }
30686      if (element.hasDisplayElement()) {
30687        composeString("display", element.getDisplayElement());
30688      }
30689      if (element.hasDefinitionElement()) {
30690        composeString("definition", element.getDefinitionElement());
30691      }
30692      if (element.hasDesignation()) { 
30693        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
30694          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
30695      }
30696      if (element.hasProperty()) { 
30697        for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
30698          composeCodeSystemConceptPropertyComponent("property", e);
30699      }
30700      if (element.hasConcept()) { 
30701        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
30702          composeCodeSystemConceptDefinitionComponent("concept", e);
30703      }
30704  }
30705
30706  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
30707    if (element != null) {
30708      composeElementAttributes(element);
30709      xml.enter(FHIR_NS, name);
30710      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
30711      composeElementClose(element);
30712      xml.exit(FHIR_NS, name);
30713    }
30714  }
30715
30716  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
30717      composeBackboneElementElements(element);
30718      if (element.hasLanguageElement()) {
30719        composeCode("language", element.getLanguageElement());
30720      }
30721      if (element.hasUse()) {
30722        composeCoding("use", element.getUse());
30723      }
30724      if (element.hasValueElement()) {
30725        composeString("value", element.getValueElement());
30726      }
30727  }
30728
30729  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
30730    if (element != null) {
30731      composeElementAttributes(element);
30732      xml.enter(FHIR_NS, name);
30733      composeCodeSystemConceptPropertyComponentElements(element);
30734      composeElementClose(element);
30735      xml.exit(FHIR_NS, name);
30736    }
30737  }
30738
30739  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
30740      composeBackboneElementElements(element);
30741      if (element.hasCodeElement()) {
30742        composeCode("code", element.getCodeElement());
30743      }
30744      if (element.hasValue()) {
30745        composeType("value", element.getValue());
30746      }  }
30747
30748  protected void composeCommunication(String name, Communication element) throws IOException {
30749    if (element != null) {
30750      composeDomainResourceAttributes(element);
30751      xml.enter(FHIR_NS, name);
30752      composeCommunicationElements(element);
30753      composeElementClose(element);
30754      xml.exit(FHIR_NS, name);
30755    }
30756  }
30757
30758  protected void composeCommunicationElements(Communication element) throws IOException {
30759      composeDomainResourceElements(element);
30760      if (element.hasIdentifier()) { 
30761        for (Identifier e : element.getIdentifier()) 
30762          composeIdentifier("identifier", e);
30763      }
30764      if (element.hasInstantiatesCanonical()) { 
30765        for (CanonicalType e : element.getInstantiatesCanonical()) 
30766          composeCanonical("instantiatesCanonical", e);
30767      }
30768      if (element.hasInstantiatesUri()) { 
30769        for (UriType e : element.getInstantiatesUri()) 
30770          composeUri("instantiatesUri", e);
30771      }
30772      if (element.hasBasedOn()) { 
30773        for (Reference e : element.getBasedOn()) 
30774          composeReference("basedOn", e);
30775      }
30776      if (element.hasPartOf()) { 
30777        for (Reference e : element.getPartOf()) 
30778          composeReference("partOf", e);
30779      }
30780      if (element.hasInResponseTo()) { 
30781        for (Reference e : element.getInResponseTo()) 
30782          composeReference("inResponseTo", e);
30783      }
30784      if (element.hasStatusElement())
30785        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
30786      if (element.hasStatusReason()) {
30787        composeCodeableConcept("statusReason", element.getStatusReason());
30788      }
30789      if (element.hasCategory()) { 
30790        for (CodeableConcept e : element.getCategory()) 
30791          composeCodeableConcept("category", e);
30792      }
30793      if (element.hasPriorityElement())
30794        composeEnumeration("priority", element.getPriorityElement(), new Communication.CommunicationPriorityEnumFactory());
30795      if (element.hasMedium()) { 
30796        for (CodeableConcept e : element.getMedium()) 
30797          composeCodeableConcept("medium", e);
30798      }
30799      if (element.hasSubject()) {
30800        composeReference("subject", element.getSubject());
30801      }
30802      if (element.hasTopic()) {
30803        composeCodeableConcept("topic", element.getTopic());
30804      }
30805      if (element.hasAbout()) { 
30806        for (Reference e : element.getAbout()) 
30807          composeReference("about", e);
30808      }
30809      if (element.hasEncounter()) {
30810        composeReference("encounter", element.getEncounter());
30811      }
30812      if (element.hasSentElement()) {
30813        composeDateTime("sent", element.getSentElement());
30814      }
30815      if (element.hasReceivedElement()) {
30816        composeDateTime("received", element.getReceivedElement());
30817      }
30818      if (element.hasRecipient()) { 
30819        for (Reference e : element.getRecipient()) 
30820          composeReference("recipient", e);
30821      }
30822      if (element.hasSender()) {
30823        composeReference("sender", element.getSender());
30824      }
30825      if (element.hasReasonCode()) { 
30826        for (CodeableConcept e : element.getReasonCode()) 
30827          composeCodeableConcept("reasonCode", e);
30828      }
30829      if (element.hasReasonReference()) { 
30830        for (Reference e : element.getReasonReference()) 
30831          composeReference("reasonReference", e);
30832      }
30833      if (element.hasPayload()) { 
30834        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
30835          composeCommunicationCommunicationPayloadComponent("payload", e);
30836      }
30837      if (element.hasNote()) { 
30838        for (Annotation e : element.getNote()) 
30839          composeAnnotation("note", e);
30840      }
30841  }
30842
30843  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
30844    if (element != null) {
30845      composeElementAttributes(element);
30846      xml.enter(FHIR_NS, name);
30847      composeCommunicationCommunicationPayloadComponentElements(element);
30848      composeElementClose(element);
30849      xml.exit(FHIR_NS, name);
30850    }
30851  }
30852
30853  protected void composeCommunicationCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
30854      composeBackboneElementElements(element);
30855      if (element.hasContent()) {
30856        composeType("content", element.getContent());
30857      }  }
30858
30859  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
30860    if (element != null) {
30861      composeDomainResourceAttributes(element);
30862      xml.enter(FHIR_NS, name);
30863      composeCommunicationRequestElements(element);
30864      composeElementClose(element);
30865      xml.exit(FHIR_NS, name);
30866    }
30867  }
30868
30869  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
30870      composeDomainResourceElements(element);
30871      if (element.hasIdentifier()) { 
30872        for (Identifier e : element.getIdentifier()) 
30873          composeIdentifier("identifier", e);
30874      }
30875      if (element.hasBasedOn()) { 
30876        for (Reference e : element.getBasedOn()) 
30877          composeReference("basedOn", e);
30878      }
30879      if (element.hasReplaces()) { 
30880        for (Reference e : element.getReplaces()) 
30881          composeReference("replaces", e);
30882      }
30883      if (element.hasGroupIdentifier()) {
30884        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
30885      }
30886      if (element.hasStatusElement())
30887        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
30888      if (element.hasStatusReason()) {
30889        composeCodeableConcept("statusReason", element.getStatusReason());
30890      }
30891      if (element.hasCategory()) { 
30892        for (CodeableConcept e : element.getCategory()) 
30893          composeCodeableConcept("category", e);
30894      }
30895      if (element.hasPriorityElement())
30896        composeEnumeration("priority", element.getPriorityElement(), new CommunicationRequest.CommunicationPriorityEnumFactory());
30897      if (element.hasDoNotPerformElement()) {
30898        composeBoolean("doNotPerform", element.getDoNotPerformElement());
30899      }
30900      if (element.hasMedium()) { 
30901        for (CodeableConcept e : element.getMedium()) 
30902          composeCodeableConcept("medium", e);
30903      }
30904      if (element.hasSubject()) {
30905        composeReference("subject", element.getSubject());
30906      }
30907      if (element.hasAbout()) { 
30908        for (Reference e : element.getAbout()) 
30909          composeReference("about", e);
30910      }
30911      if (element.hasEncounter()) {
30912        composeReference("encounter", element.getEncounter());
30913      }
30914      if (element.hasPayload()) { 
30915        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
30916          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
30917      }
30918      if (element.hasOccurrence()) {
30919        composeType("occurrence", element.getOccurrence());
30920      }      if (element.hasAuthoredOnElement()) {
30921        composeDateTime("authoredOn", element.getAuthoredOnElement());
30922      }
30923      if (element.hasRequester()) {
30924        composeReference("requester", element.getRequester());
30925      }
30926      if (element.hasRecipient()) { 
30927        for (Reference e : element.getRecipient()) 
30928          composeReference("recipient", e);
30929      }
30930      if (element.hasSender()) {
30931        composeReference("sender", element.getSender());
30932      }
30933      if (element.hasReasonCode()) { 
30934        for (CodeableConcept e : element.getReasonCode()) 
30935          composeCodeableConcept("reasonCode", e);
30936      }
30937      if (element.hasReasonReference()) { 
30938        for (Reference e : element.getReasonReference()) 
30939          composeReference("reasonReference", e);
30940      }
30941      if (element.hasNote()) { 
30942        for (Annotation e : element.getNote()) 
30943          composeAnnotation("note", e);
30944      }
30945  }
30946
30947  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
30948    if (element != null) {
30949      composeElementAttributes(element);
30950      xml.enter(FHIR_NS, name);
30951      composeCommunicationRequestCommunicationRequestPayloadComponentElements(element);
30952      composeElementClose(element);
30953      xml.exit(FHIR_NS, name);
30954    }
30955  }
30956
30957  protected void composeCommunicationRequestCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
30958      composeBackboneElementElements(element);
30959      if (element.hasContent()) {
30960        composeType("content", element.getContent());
30961      }  }
30962
30963  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
30964    if (element != null) {
30965      composeDomainResourceAttributes(element);
30966      xml.enter(FHIR_NS, name);
30967      composeCompartmentDefinitionElements(element);
30968      composeElementClose(element);
30969      xml.exit(FHIR_NS, name);
30970    }
30971  }
30972
30973  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
30974      composeDomainResourceElements(element);
30975      if (element.hasUrlElement()) {
30976        composeUri("url", element.getUrlElement());
30977      }
30978      if (element.hasVersionElement()) {
30979        composeString("version", element.getVersionElement());
30980      }
30981      if (element.hasNameElement()) {
30982        composeString("name", element.getNameElement());
30983      }
30984      if (element.hasStatusElement())
30985        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30986      if (element.hasExperimentalElement()) {
30987        composeBoolean("experimental", element.getExperimentalElement());
30988      }
30989      if (element.hasDateElement()) {
30990        composeDateTime("date", element.getDateElement());
30991      }
30992      if (element.hasPublisherElement()) {
30993        composeString("publisher", element.getPublisherElement());
30994      }
30995      if (element.hasContact()) { 
30996        for (ContactDetail e : element.getContact()) 
30997          composeContactDetail("contact", e);
30998      }
30999      if (element.hasDescriptionElement()) {
31000        composeMarkdown("description", element.getDescriptionElement());
31001      }
31002      if (element.hasUseContext()) { 
31003        for (UsageContext e : element.getUseContext()) 
31004          composeUsageContext("useContext", e);
31005      }
31006      if (element.hasPurposeElement()) {
31007        composeMarkdown("purpose", element.getPurposeElement());
31008      }
31009      if (element.hasCodeElement())
31010        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
31011      if (element.hasSearchElement()) {
31012        composeBoolean("search", element.getSearchElement());
31013      }
31014      if (element.hasResource()) { 
31015        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
31016          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
31017      }
31018  }
31019
31020  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
31021    if (element != null) {
31022      composeElementAttributes(element);
31023      xml.enter(FHIR_NS, name);
31024      composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(element);
31025      composeElementClose(element);
31026      xml.exit(FHIR_NS, name);
31027    }
31028  }
31029
31030  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
31031      composeBackboneElementElements(element);
31032      if (element.hasCodeElement()) {
31033        composeCode("code", element.getCodeElement());
31034      }
31035      if (element.hasParam()) { 
31036        for (StringType e : element.getParam()) 
31037          composeString("param", e);
31038      }
31039      if (element.hasDocumentationElement()) {
31040        composeString("documentation", element.getDocumentationElement());
31041      }
31042  }
31043
31044  protected void composeComposition(String name, Composition element) throws IOException {
31045    if (element != null) {
31046      composeDomainResourceAttributes(element);
31047      xml.enter(FHIR_NS, name);
31048      composeCompositionElements(element);
31049      composeElementClose(element);
31050      xml.exit(FHIR_NS, name);
31051    }
31052  }
31053
31054  protected void composeCompositionElements(Composition element) throws IOException {
31055      composeDomainResourceElements(element);
31056      if (element.hasIdentifier()) {
31057        composeIdentifier("identifier", element.getIdentifier());
31058      }
31059      if (element.hasStatusElement())
31060        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
31061      if (element.hasType()) {
31062        composeCodeableConcept("type", element.getType());
31063      }
31064      if (element.hasCategory()) { 
31065        for (CodeableConcept e : element.getCategory()) 
31066          composeCodeableConcept("category", e);
31067      }
31068      if (element.hasSubject()) {
31069        composeReference("subject", element.getSubject());
31070      }
31071      if (element.hasEncounter()) {
31072        composeReference("encounter", element.getEncounter());
31073      }
31074      if (element.hasDateElement()) {
31075        composeDateTime("date", element.getDateElement());
31076      }
31077      if (element.hasAuthor()) { 
31078        for (Reference e : element.getAuthor()) 
31079          composeReference("author", e);
31080      }
31081      if (element.hasTitleElement()) {
31082        composeString("title", element.getTitleElement());
31083      }
31084      if (element.hasConfidentialityElement())
31085        composeEnumeration("confidentiality", element.getConfidentialityElement(), new Composition.DocumentConfidentialityEnumFactory());
31086      if (element.hasAttester()) { 
31087        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
31088          composeCompositionCompositionAttesterComponent("attester", e);
31089      }
31090      if (element.hasCustodian()) {
31091        composeReference("custodian", element.getCustodian());
31092      }
31093      if (element.hasRelatesTo()) { 
31094        for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
31095          composeCompositionCompositionRelatesToComponent("relatesTo", e);
31096      }
31097      if (element.hasEvent()) { 
31098        for (Composition.CompositionEventComponent e : element.getEvent()) 
31099          composeCompositionCompositionEventComponent("event", e);
31100      }
31101      if (element.hasSection()) { 
31102        for (Composition.SectionComponent e : element.getSection()) 
31103          composeCompositionSectionComponent("section", e);
31104      }
31105  }
31106
31107  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
31108    if (element != null) {
31109      composeElementAttributes(element);
31110      xml.enter(FHIR_NS, name);
31111      composeCompositionCompositionAttesterComponentElements(element);
31112      composeElementClose(element);
31113      xml.exit(FHIR_NS, name);
31114    }
31115  }
31116
31117  protected void composeCompositionCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
31118      composeBackboneElementElements(element);
31119      if (element.hasModeElement())
31120        composeEnumeration("mode", element.getModeElement(), new Composition.CompositionAttestationModeEnumFactory());
31121      if (element.hasTimeElement()) {
31122        composeDateTime("time", element.getTimeElement());
31123      }
31124      if (element.hasParty()) {
31125        composeReference("party", element.getParty());
31126      }
31127  }
31128
31129  protected void composeCompositionCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
31130    if (element != null) {
31131      composeElementAttributes(element);
31132      xml.enter(FHIR_NS, name);
31133      composeCompositionCompositionRelatesToComponentElements(element);
31134      composeElementClose(element);
31135      xml.exit(FHIR_NS, name);
31136    }
31137  }
31138
31139  protected void composeCompositionCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
31140      composeBackboneElementElements(element);
31141      if (element.hasCodeElement())
31142        composeEnumeration("code", element.getCodeElement(), new Composition.DocumentRelationshipTypeEnumFactory());
31143      if (element.hasTarget()) {
31144        composeType("target", element.getTarget());
31145      }  }
31146
31147  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
31148    if (element != null) {
31149      composeElementAttributes(element);
31150      xml.enter(FHIR_NS, name);
31151      composeCompositionCompositionEventComponentElements(element);
31152      composeElementClose(element);
31153      xml.exit(FHIR_NS, name);
31154    }
31155  }
31156
31157  protected void composeCompositionCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
31158      composeBackboneElementElements(element);
31159      if (element.hasCode()) { 
31160        for (CodeableConcept e : element.getCode()) 
31161          composeCodeableConcept("code", e);
31162      }
31163      if (element.hasPeriod()) {
31164        composePeriod("period", element.getPeriod());
31165      }
31166      if (element.hasDetail()) { 
31167        for (Reference e : element.getDetail()) 
31168          composeReference("detail", e);
31169      }
31170  }
31171
31172  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
31173    if (element != null) {
31174      composeElementAttributes(element);
31175      xml.enter(FHIR_NS, name);
31176      composeCompositionSectionComponentElements(element);
31177      composeElementClose(element);
31178      xml.exit(FHIR_NS, name);
31179    }
31180  }
31181
31182  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
31183      composeBackboneElementElements(element);
31184      if (element.hasTitleElement()) {
31185        composeString("title", element.getTitleElement());
31186      }
31187      if (element.hasCode()) {
31188        composeCodeableConcept("code", element.getCode());
31189      }
31190      if (element.hasAuthor()) { 
31191        for (Reference e : element.getAuthor()) 
31192          composeReference("author", e);
31193      }
31194      if (element.hasFocus()) {
31195        composeReference("focus", element.getFocus());
31196      }
31197      if (element.hasText()) {
31198        composeNarrative("text", element.getText());
31199      }
31200      if (element.hasModeElement())
31201        composeEnumeration("mode", element.getModeElement(), new Composition.SectionModeEnumFactory());
31202      if (element.hasOrderedBy()) {
31203        composeCodeableConcept("orderedBy", element.getOrderedBy());
31204      }
31205      if (element.hasEntry()) { 
31206        for (Reference e : element.getEntry()) 
31207          composeReference("entry", e);
31208      }
31209      if (element.hasEmptyReason()) {
31210        composeCodeableConcept("emptyReason", element.getEmptyReason());
31211      }
31212      if (element.hasSection()) { 
31213        for (Composition.SectionComponent e : element.getSection()) 
31214          composeCompositionSectionComponent("section", e);
31215      }
31216  }
31217
31218  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
31219    if (element != null) {
31220      composeDomainResourceAttributes(element);
31221      xml.enter(FHIR_NS, name);
31222      composeConceptMapElements(element);
31223      composeElementClose(element);
31224      xml.exit(FHIR_NS, name);
31225    }
31226  }
31227
31228  protected void composeConceptMapElements(ConceptMap element) throws IOException {
31229      composeDomainResourceElements(element);
31230      if (element.hasUrlElement()) {
31231        composeUri("url", element.getUrlElement());
31232      }
31233      if (element.hasIdentifier()) {
31234        composeIdentifier("identifier", element.getIdentifier());
31235      }
31236      if (element.hasVersionElement()) {
31237        composeString("version", element.getVersionElement());
31238      }
31239      if (element.hasNameElement()) {
31240        composeString("name", element.getNameElement());
31241      }
31242      if (element.hasTitleElement()) {
31243        composeString("title", element.getTitleElement());
31244      }
31245      if (element.hasStatusElement())
31246        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31247      if (element.hasExperimentalElement()) {
31248        composeBoolean("experimental", element.getExperimentalElement());
31249      }
31250      if (element.hasDateElement()) {
31251        composeDateTime("date", element.getDateElement());
31252      }
31253      if (element.hasPublisherElement()) {
31254        composeString("publisher", element.getPublisherElement());
31255      }
31256      if (element.hasContact()) { 
31257        for (ContactDetail e : element.getContact()) 
31258          composeContactDetail("contact", e);
31259      }
31260      if (element.hasDescriptionElement()) {
31261        composeMarkdown("description", element.getDescriptionElement());
31262      }
31263      if (element.hasUseContext()) { 
31264        for (UsageContext e : element.getUseContext()) 
31265          composeUsageContext("useContext", e);
31266      }
31267      if (element.hasJurisdiction()) { 
31268        for (CodeableConcept e : element.getJurisdiction()) 
31269          composeCodeableConcept("jurisdiction", e);
31270      }
31271      if (element.hasPurposeElement()) {
31272        composeMarkdown("purpose", element.getPurposeElement());
31273      }
31274      if (element.hasCopyrightElement()) {
31275        composeMarkdown("copyright", element.getCopyrightElement());
31276      }
31277      if (element.hasSource()) {
31278        composeType("source", element.getSource());
31279      }      if (element.hasTarget()) {
31280        composeType("target", element.getTarget());
31281      }      if (element.hasGroup()) { 
31282        for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
31283          composeConceptMapConceptMapGroupComponent("group", e);
31284      }
31285  }
31286
31287  protected void composeConceptMapConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
31288    if (element != null) {
31289      composeElementAttributes(element);
31290      xml.enter(FHIR_NS, name);
31291      composeConceptMapConceptMapGroupComponentElements(element);
31292      composeElementClose(element);
31293      xml.exit(FHIR_NS, name);
31294    }
31295  }
31296
31297  protected void composeConceptMapConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
31298      composeBackboneElementElements(element);
31299      if (element.hasSourceElement()) {
31300        composeUri("source", element.getSourceElement());
31301      }
31302      if (element.hasSourceVersionElement()) {
31303        composeString("sourceVersion", element.getSourceVersionElement());
31304      }
31305      if (element.hasTargetElement()) {
31306        composeUri("target", element.getTargetElement());
31307      }
31308      if (element.hasTargetVersionElement()) {
31309        composeString("targetVersion", element.getTargetVersionElement());
31310      }
31311      if (element.hasElement()) { 
31312        for (ConceptMap.SourceElementComponent e : element.getElement()) 
31313          composeConceptMapSourceElementComponent("element", e);
31314      }
31315      if (element.hasUnmapped()) {
31316        composeConceptMapConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
31317      }
31318  }
31319
31320  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
31321    if (element != null) {
31322      composeElementAttributes(element);
31323      xml.enter(FHIR_NS, name);
31324      composeConceptMapSourceElementComponentElements(element);
31325      composeElementClose(element);
31326      xml.exit(FHIR_NS, name);
31327    }
31328  }
31329
31330  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
31331      composeBackboneElementElements(element);
31332      if (element.hasCodeElement()) {
31333        composeCode("code", element.getCodeElement());
31334      }
31335      if (element.hasDisplayElement()) {
31336        composeString("display", element.getDisplayElement());
31337      }
31338      if (element.hasTarget()) { 
31339        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
31340          composeConceptMapTargetElementComponent("target", e);
31341      }
31342  }
31343
31344  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
31345    if (element != null) {
31346      composeElementAttributes(element);
31347      xml.enter(FHIR_NS, name);
31348      composeConceptMapTargetElementComponentElements(element);
31349      composeElementClose(element);
31350      xml.exit(FHIR_NS, name);
31351    }
31352  }
31353
31354  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
31355      composeBackboneElementElements(element);
31356      if (element.hasCodeElement()) {
31357        composeCode("code", element.getCodeElement());
31358      }
31359      if (element.hasDisplayElement()) {
31360        composeString("display", element.getDisplayElement());
31361      }
31362      if (element.hasEquivalenceElement())
31363        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
31364      if (element.hasCommentElement()) {
31365        composeString("comment", element.getCommentElement());
31366      }
31367      if (element.hasDependsOn()) { 
31368        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
31369          composeConceptMapOtherElementComponent("dependsOn", e);
31370      }
31371      if (element.hasProduct()) { 
31372        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
31373          composeConceptMapOtherElementComponent("product", e);
31374      }
31375  }
31376
31377  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
31378    if (element != null) {
31379      composeElementAttributes(element);
31380      xml.enter(FHIR_NS, name);
31381      composeConceptMapOtherElementComponentElements(element);
31382      composeElementClose(element);
31383      xml.exit(FHIR_NS, name);
31384    }
31385  }
31386
31387  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
31388      composeBackboneElementElements(element);
31389      if (element.hasPropertyElement()) {
31390        composeUri("property", element.getPropertyElement());
31391      }
31392      if (element.hasSystemElement()) {
31393        composeCanonical("system", element.getSystemElement());
31394      }
31395      if (element.hasValueElement()) {
31396        composeString("value", element.getValueElement());
31397      }
31398      if (element.hasDisplayElement()) {
31399        composeString("display", element.getDisplayElement());
31400      }
31401  }
31402
31403  protected void composeConceptMapConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
31404    if (element != null) {
31405      composeElementAttributes(element);
31406      xml.enter(FHIR_NS, name);
31407      composeConceptMapConceptMapGroupUnmappedComponentElements(element);
31408      composeElementClose(element);
31409      xml.exit(FHIR_NS, name);
31410    }
31411  }
31412
31413  protected void composeConceptMapConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
31414      composeBackboneElementElements(element);
31415      if (element.hasModeElement())
31416        composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
31417      if (element.hasCodeElement()) {
31418        composeCode("code", element.getCodeElement());
31419      }
31420      if (element.hasDisplayElement()) {
31421        composeString("display", element.getDisplayElement());
31422      }
31423      if (element.hasUrlElement()) {
31424        composeCanonical("url", element.getUrlElement());
31425      }
31426  }
31427
31428  protected void composeCondition(String name, Condition element) throws IOException {
31429    if (element != null) {
31430      composeDomainResourceAttributes(element);
31431      xml.enter(FHIR_NS, name);
31432      composeConditionElements(element);
31433      composeElementClose(element);
31434      xml.exit(FHIR_NS, name);
31435    }
31436  }
31437
31438  protected void composeConditionElements(Condition element) throws IOException {
31439      composeDomainResourceElements(element);
31440      if (element.hasIdentifier()) { 
31441        for (Identifier e : element.getIdentifier()) 
31442          composeIdentifier("identifier", e);
31443      }
31444      if (element.hasClinicalStatus()) {
31445        composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
31446      }
31447      if (element.hasVerificationStatus()) {
31448        composeCodeableConcept("verificationStatus", element.getVerificationStatus());
31449      }
31450      if (element.hasCategory()) { 
31451        for (CodeableConcept e : element.getCategory()) 
31452          composeCodeableConcept("category", e);
31453      }
31454      if (element.hasSeverity()) {
31455        composeCodeableConcept("severity", element.getSeverity());
31456      }
31457      if (element.hasCode()) {
31458        composeCodeableConcept("code", element.getCode());
31459      }
31460      if (element.hasBodySite()) { 
31461        for (CodeableConcept e : element.getBodySite()) 
31462          composeCodeableConcept("bodySite", e);
31463      }
31464      if (element.hasSubject()) {
31465        composeReference("subject", element.getSubject());
31466      }
31467      if (element.hasEncounter()) {
31468        composeReference("encounter", element.getEncounter());
31469      }
31470      if (element.hasOnset()) {
31471        composeType("onset", element.getOnset());
31472      }      if (element.hasAbatement()) {
31473        composeType("abatement", element.getAbatement());
31474      }      if (element.hasRecordedDateElement()) {
31475        composeDateTime("recordedDate", element.getRecordedDateElement());
31476      }
31477      if (element.hasRecorder()) {
31478        composeReference("recorder", element.getRecorder());
31479      }
31480      if (element.hasAsserter()) {
31481        composeReference("asserter", element.getAsserter());
31482      }
31483      if (element.hasStage()) { 
31484        for (Condition.ConditionStageComponent e : element.getStage()) 
31485          composeConditionConditionStageComponent("stage", e);
31486      }
31487      if (element.hasEvidence()) { 
31488        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
31489          composeConditionConditionEvidenceComponent("evidence", e);
31490      }
31491      if (element.hasNote()) { 
31492        for (Annotation e : element.getNote()) 
31493          composeAnnotation("note", e);
31494      }
31495  }
31496
31497  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
31498    if (element != null) {
31499      composeElementAttributes(element);
31500      xml.enter(FHIR_NS, name);
31501      composeConditionConditionStageComponentElements(element);
31502      composeElementClose(element);
31503      xml.exit(FHIR_NS, name);
31504    }
31505  }
31506
31507  protected void composeConditionConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
31508      composeBackboneElementElements(element);
31509      if (element.hasSummary()) {
31510        composeCodeableConcept("summary", element.getSummary());
31511      }
31512      if (element.hasAssessment()) { 
31513        for (Reference e : element.getAssessment()) 
31514          composeReference("assessment", e);
31515      }
31516      if (element.hasType()) {
31517        composeCodeableConcept("type", element.getType());
31518      }
31519  }
31520
31521  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
31522    if (element != null) {
31523      composeElementAttributes(element);
31524      xml.enter(FHIR_NS, name);
31525      composeConditionConditionEvidenceComponentElements(element);
31526      composeElementClose(element);
31527      xml.exit(FHIR_NS, name);
31528    }
31529  }
31530
31531  protected void composeConditionConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
31532      composeBackboneElementElements(element);
31533      if (element.hasCode()) { 
31534        for (CodeableConcept e : element.getCode()) 
31535          composeCodeableConcept("code", e);
31536      }
31537      if (element.hasDetail()) { 
31538        for (Reference e : element.getDetail()) 
31539          composeReference("detail", e);
31540      }
31541  }
31542
31543  protected void composeConsent(String name, Consent element) throws IOException {
31544    if (element != null) {
31545      composeDomainResourceAttributes(element);
31546      xml.enter(FHIR_NS, name);
31547      composeConsentElements(element);
31548      composeElementClose(element);
31549      xml.exit(FHIR_NS, name);
31550    }
31551  }
31552
31553  protected void composeConsentElements(Consent element) throws IOException {
31554      composeDomainResourceElements(element);
31555      if (element.hasIdentifier()) { 
31556        for (Identifier e : element.getIdentifier()) 
31557          composeIdentifier("identifier", e);
31558      }
31559      if (element.hasStatusElement())
31560        composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
31561      if (element.hasScope()) {
31562        composeCodeableConcept("scope", element.getScope());
31563      }
31564      if (element.hasCategory()) { 
31565        for (CodeableConcept e : element.getCategory()) 
31566          composeCodeableConcept("category", e);
31567      }
31568      if (element.hasPatient()) {
31569        composeReference("patient", element.getPatient());
31570      }
31571      if (element.hasDateTimeElement()) {
31572        composeDateTime("dateTime", element.getDateTimeElement());
31573      }
31574      if (element.hasPerformer()) { 
31575        for (Reference e : element.getPerformer()) 
31576          composeReference("performer", e);
31577      }
31578      if (element.hasOrganization()) { 
31579        for (Reference e : element.getOrganization()) 
31580          composeReference("organization", e);
31581      }
31582      if (element.hasSource()) {
31583        composeType("source", element.getSource());
31584      }      if (element.hasPolicy()) { 
31585        for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
31586          composeConsentConsentPolicyComponent("policy", e);
31587      }
31588      if (element.hasPolicyRule()) {
31589        composeCodeableConcept("policyRule", element.getPolicyRule());
31590      }
31591      if (element.hasVerification()) { 
31592        for (Consent.ConsentVerificationComponent e : element.getVerification()) 
31593          composeConsentConsentVerificationComponent("verification", e);
31594      }
31595      if (element.hasProvision()) {
31596        composeConsentprovisionComponent("provision", element.getProvision());
31597      }
31598  }
31599
31600  protected void composeConsentConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
31601    if (element != null) {
31602      composeElementAttributes(element);
31603      xml.enter(FHIR_NS, name);
31604      composeConsentConsentPolicyComponentElements(element);
31605      composeElementClose(element);
31606      xml.exit(FHIR_NS, name);
31607    }
31608  }
31609
31610  protected void composeConsentConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
31611      composeBackboneElementElements(element);
31612      if (element.hasAuthorityElement()) {
31613        composeUri("authority", element.getAuthorityElement());
31614      }
31615      if (element.hasUriElement()) {
31616        composeUri("uri", element.getUriElement());
31617      }
31618  }
31619
31620  protected void composeConsentConsentVerificationComponent(String name, Consent.ConsentVerificationComponent element) throws IOException {
31621    if (element != null) {
31622      composeElementAttributes(element);
31623      xml.enter(FHIR_NS, name);
31624      composeConsentConsentVerificationComponentElements(element);
31625      composeElementClose(element);
31626      xml.exit(FHIR_NS, name);
31627    }
31628  }
31629
31630  protected void composeConsentConsentVerificationComponentElements(Consent.ConsentVerificationComponent element) throws IOException {
31631      composeBackboneElementElements(element);
31632      if (element.hasVerifiedElement()) {
31633        composeBoolean("verified", element.getVerifiedElement());
31634      }
31635      if (element.hasVerifiedWith()) {
31636        composeReference("verifiedWith", element.getVerifiedWith());
31637      }
31638      if (element.hasVerificationDateElement()) {
31639        composeDateTime("verificationDate", element.getVerificationDateElement());
31640      }
31641  }
31642
31643  protected void composeConsentprovisionComponent(String name, Consent.provisionComponent element) throws IOException {
31644    if (element != null) {
31645      composeElementAttributes(element);
31646      xml.enter(FHIR_NS, name);
31647      composeConsentprovisionComponentElements(element);
31648      composeElementClose(element);
31649      xml.exit(FHIR_NS, name);
31650    }
31651  }
31652
31653  protected void composeConsentprovisionComponentElements(Consent.provisionComponent element) throws IOException {
31654      composeBackboneElementElements(element);
31655      if (element.hasTypeElement())
31656        composeEnumeration("type", element.getTypeElement(), new Consent.ConsentProvisionTypeEnumFactory());
31657      if (element.hasPeriod()) {
31658        composePeriod("period", element.getPeriod());
31659      }
31660      if (element.hasActor()) { 
31661        for (Consent.provisionActorComponent e : element.getActor()) 
31662          composeConsentprovisionActorComponent("actor", e);
31663      }
31664      if (element.hasAction()) { 
31665        for (CodeableConcept e : element.getAction()) 
31666          composeCodeableConcept("action", e);
31667      }
31668      if (element.hasSecurityLabel()) { 
31669        for (Coding e : element.getSecurityLabel()) 
31670          composeCoding("securityLabel", e);
31671      }
31672      if (element.hasPurpose()) { 
31673        for (Coding e : element.getPurpose()) 
31674          composeCoding("purpose", e);
31675      }
31676      if (element.hasClass_()) { 
31677        for (Coding e : element.getClass_()) 
31678          composeCoding("class", e);
31679      }
31680      if (element.hasCode()) { 
31681        for (CodeableConcept e : element.getCode()) 
31682          composeCodeableConcept("code", e);
31683      }
31684      if (element.hasDataPeriod()) {
31685        composePeriod("dataPeriod", element.getDataPeriod());
31686      }
31687      if (element.hasData()) { 
31688        for (Consent.provisionDataComponent e : element.getData()) 
31689          composeConsentprovisionDataComponent("data", e);
31690      }
31691      if (element.hasProvision()) { 
31692        for (Consent.provisionComponent e : element.getProvision()) 
31693          composeConsentprovisionComponent("provision", e);
31694      }
31695  }
31696
31697  protected void composeConsentprovisionActorComponent(String name, Consent.provisionActorComponent element) throws IOException {
31698    if (element != null) {
31699      composeElementAttributes(element);
31700      xml.enter(FHIR_NS, name);
31701      composeConsentprovisionActorComponentElements(element);
31702      composeElementClose(element);
31703      xml.exit(FHIR_NS, name);
31704    }
31705  }
31706
31707  protected void composeConsentprovisionActorComponentElements(Consent.provisionActorComponent element) throws IOException {
31708      composeBackboneElementElements(element);
31709      if (element.hasRole()) {
31710        composeCodeableConcept("role", element.getRole());
31711      }
31712      if (element.hasReference()) {
31713        composeReference("reference", element.getReference());
31714      }
31715  }
31716
31717  protected void composeConsentprovisionDataComponent(String name, Consent.provisionDataComponent element) throws IOException {
31718    if (element != null) {
31719      composeElementAttributes(element);
31720      xml.enter(FHIR_NS, name);
31721      composeConsentprovisionDataComponentElements(element);
31722      composeElementClose(element);
31723      xml.exit(FHIR_NS, name);
31724    }
31725  }
31726
31727  protected void composeConsentprovisionDataComponentElements(Consent.provisionDataComponent element) throws IOException {
31728      composeBackboneElementElements(element);
31729      if (element.hasMeaningElement())
31730        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
31731      if (element.hasReference()) {
31732        composeReference("reference", element.getReference());
31733      }
31734  }
31735
31736  protected void composeContract(String name, Contract element) throws IOException {
31737    if (element != null) {
31738      composeDomainResourceAttributes(element);
31739      xml.enter(FHIR_NS, name);
31740      composeContractElements(element);
31741      composeElementClose(element);
31742      xml.exit(FHIR_NS, name);
31743    }
31744  }
31745
31746  protected void composeContractElements(Contract element) throws IOException {
31747      composeDomainResourceElements(element);
31748      if (element.hasIdentifier()) { 
31749        for (Identifier e : element.getIdentifier()) 
31750          composeIdentifier("identifier", e);
31751      }
31752      if (element.hasUrlElement()) {
31753        composeUri("url", element.getUrlElement());
31754      }
31755      if (element.hasVersionElement()) {
31756        composeString("version", element.getVersionElement());
31757      }
31758      if (element.hasStatusElement())
31759        composeEnumeration("status", element.getStatusElement(), new Contract.ContractStatusEnumFactory());
31760      if (element.hasLegalState()) {
31761        composeCodeableConcept("legalState", element.getLegalState());
31762      }
31763      if (element.hasInstantiatesCanonical()) {
31764        composeReference("instantiatesCanonical", element.getInstantiatesCanonical());
31765      }
31766      if (element.hasInstantiatesUriElement()) {
31767        composeUri("instantiatesUri", element.getInstantiatesUriElement());
31768      }
31769      if (element.hasContentDerivative()) {
31770        composeCodeableConcept("contentDerivative", element.getContentDerivative());
31771      }
31772      if (element.hasIssuedElement()) {
31773        composeDateTime("issued", element.getIssuedElement());
31774      }
31775      if (element.hasApplies()) {
31776        composePeriod("applies", element.getApplies());
31777      }
31778      if (element.hasExpirationType()) {
31779        composeCodeableConcept("expirationType", element.getExpirationType());
31780      }
31781      if (element.hasSubject()) { 
31782        for (Reference e : element.getSubject()) 
31783          composeReference("subject", e);
31784      }
31785      if (element.hasAuthority()) { 
31786        for (Reference e : element.getAuthority()) 
31787          composeReference("authority", e);
31788      }
31789      if (element.hasDomain()) { 
31790        for (Reference e : element.getDomain()) 
31791          composeReference("domain", e);
31792      }
31793      if (element.hasSite()) { 
31794        for (Reference e : element.getSite()) 
31795          composeReference("site", e);
31796      }
31797      if (element.hasNameElement()) {
31798        composeString("name", element.getNameElement());
31799      }
31800      if (element.hasTitleElement()) {
31801        composeString("title", element.getTitleElement());
31802      }
31803      if (element.hasSubtitleElement()) {
31804        composeString("subtitle", element.getSubtitleElement());
31805      }
31806      if (element.hasAlias()) { 
31807        for (StringType e : element.getAlias()) 
31808          composeString("alias", e);
31809      }
31810      if (element.hasAuthor()) {
31811        composeReference("author", element.getAuthor());
31812      }
31813      if (element.hasScope()) {
31814        composeCodeableConcept("scope", element.getScope());
31815      }
31816      if (element.hasTopic()) {
31817        composeType("topic", element.getTopic());
31818      }      if (element.hasType()) {
31819        composeCodeableConcept("type", element.getType());
31820      }
31821      if (element.hasSubType()) { 
31822        for (CodeableConcept e : element.getSubType()) 
31823          composeCodeableConcept("subType", e);
31824      }
31825      if (element.hasContentDefinition()) {
31826        composeContractContentDefinitionComponent("contentDefinition", element.getContentDefinition());
31827      }
31828      if (element.hasTerm()) { 
31829        for (Contract.TermComponent e : element.getTerm()) 
31830          composeContractTermComponent("term", e);
31831      }
31832      if (element.hasSupportingInfo()) { 
31833        for (Reference e : element.getSupportingInfo()) 
31834          composeReference("supportingInfo", e);
31835      }
31836      if (element.hasRelevantHistory()) { 
31837        for (Reference e : element.getRelevantHistory()) 
31838          composeReference("relevantHistory", e);
31839      }
31840      if (element.hasSigner()) { 
31841        for (Contract.SignatoryComponent e : element.getSigner()) 
31842          composeContractSignatoryComponent("signer", e);
31843      }
31844      if (element.hasFriendly()) { 
31845        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
31846          composeContractFriendlyLanguageComponent("friendly", e);
31847      }
31848      if (element.hasLegal()) { 
31849        for (Contract.LegalLanguageComponent e : element.getLegal()) 
31850          composeContractLegalLanguageComponent("legal", e);
31851      }
31852      if (element.hasRule()) { 
31853        for (Contract.ComputableLanguageComponent e : element.getRule()) 
31854          composeContractComputableLanguageComponent("rule", e);
31855      }
31856      if (element.hasLegallyBinding()) {
31857        composeType("legallyBinding", element.getLegallyBinding());
31858      }  }
31859
31860  protected void composeContractContentDefinitionComponent(String name, Contract.ContentDefinitionComponent element) throws IOException {
31861    if (element != null) {
31862      composeElementAttributes(element);
31863      xml.enter(FHIR_NS, name);
31864      composeContractContentDefinitionComponentElements(element);
31865      composeElementClose(element);
31866      xml.exit(FHIR_NS, name);
31867    }
31868  }
31869
31870  protected void composeContractContentDefinitionComponentElements(Contract.ContentDefinitionComponent element) throws IOException {
31871      composeBackboneElementElements(element);
31872      if (element.hasType()) {
31873        composeCodeableConcept("type", element.getType());
31874      }
31875      if (element.hasSubType()) {
31876        composeCodeableConcept("subType", element.getSubType());
31877      }
31878      if (element.hasPublisher()) {
31879        composeReference("publisher", element.getPublisher());
31880      }
31881      if (element.hasPublicationDateElement()) {
31882        composeDateTime("publicationDate", element.getPublicationDateElement());
31883      }
31884      if (element.hasPublicationStatusElement())
31885        composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Contract.ContractPublicationStatusEnumFactory());
31886      if (element.hasCopyrightElement()) {
31887        composeMarkdown("copyright", element.getCopyrightElement());
31888      }
31889  }
31890
31891  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
31892    if (element != null) {
31893      composeElementAttributes(element);
31894      xml.enter(FHIR_NS, name);
31895      composeContractTermComponentElements(element);
31896      composeElementClose(element);
31897      xml.exit(FHIR_NS, name);
31898    }
31899  }
31900
31901  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
31902      composeBackboneElementElements(element);
31903      if (element.hasIdentifier()) {
31904        composeIdentifier("identifier", element.getIdentifier());
31905      }
31906      if (element.hasIssuedElement()) {
31907        composeDateTime("issued", element.getIssuedElement());
31908      }
31909      if (element.hasApplies()) {
31910        composePeriod("applies", element.getApplies());
31911      }
31912      if (element.hasTopic()) {
31913        composeType("topic", element.getTopic());
31914      }      if (element.hasType()) {
31915        composeCodeableConcept("type", element.getType());
31916      }
31917      if (element.hasSubType()) {
31918        composeCodeableConcept("subType", element.getSubType());
31919      }
31920      if (element.hasTextElement()) {
31921        composeString("text", element.getTextElement());
31922      }
31923      if (element.hasSecurityLabel()) { 
31924        for (Contract.SecurityLabelComponent e : element.getSecurityLabel()) 
31925          composeContractSecurityLabelComponent("securityLabel", e);
31926      }
31927      if (element.hasOffer()) {
31928        composeContractContractOfferComponent("offer", element.getOffer());
31929      }
31930      if (element.hasAsset()) { 
31931        for (Contract.ContractAssetComponent e : element.getAsset()) 
31932          composeContractContractAssetComponent("asset", e);
31933      }
31934      if (element.hasAction()) { 
31935        for (Contract.ActionComponent e : element.getAction()) 
31936          composeContractActionComponent("action", e);
31937      }
31938      if (element.hasGroup()) { 
31939        for (Contract.TermComponent e : element.getGroup()) 
31940          composeContractTermComponent("group", e);
31941      }
31942  }
31943
31944  protected void composeContractSecurityLabelComponent(String name, Contract.SecurityLabelComponent element) throws IOException {
31945    if (element != null) {
31946      composeElementAttributes(element);
31947      xml.enter(FHIR_NS, name);
31948      composeContractSecurityLabelComponentElements(element);
31949      composeElementClose(element);
31950      xml.exit(FHIR_NS, name);
31951    }
31952  }
31953
31954  protected void composeContractSecurityLabelComponentElements(Contract.SecurityLabelComponent element) throws IOException {
31955      composeBackboneElementElements(element);
31956      if (element.hasNumber()) { 
31957        for (UnsignedIntType e : element.getNumber()) 
31958          composeUnsignedInt("number", e);
31959      }
31960      if (element.hasClassification()) {
31961        composeCoding("classification", element.getClassification());
31962      }
31963      if (element.hasCategory()) { 
31964        for (Coding e : element.getCategory()) 
31965          composeCoding("category", e);
31966      }
31967      if (element.hasControl()) { 
31968        for (Coding e : element.getControl()) 
31969          composeCoding("control", e);
31970      }
31971  }
31972
31973  protected void composeContractContractOfferComponent(String name, Contract.ContractOfferComponent element) throws IOException {
31974    if (element != null) {
31975      composeElementAttributes(element);
31976      xml.enter(FHIR_NS, name);
31977      composeContractContractOfferComponentElements(element);
31978      composeElementClose(element);
31979      xml.exit(FHIR_NS, name);
31980    }
31981  }
31982
31983  protected void composeContractContractOfferComponentElements(Contract.ContractOfferComponent element) throws IOException {
31984      composeBackboneElementElements(element);
31985      if (element.hasIdentifier()) { 
31986        for (Identifier e : element.getIdentifier()) 
31987          composeIdentifier("identifier", e);
31988      }
31989      if (element.hasParty()) { 
31990        for (Contract.ContractPartyComponent e : element.getParty()) 
31991          composeContractContractPartyComponent("party", e);
31992      }
31993      if (element.hasTopic()) {
31994        composeReference("topic", element.getTopic());
31995      }
31996      if (element.hasType()) {
31997        composeCodeableConcept("type", element.getType());
31998      }
31999      if (element.hasDecision()) {
32000        composeCodeableConcept("decision", element.getDecision());
32001      }
32002      if (element.hasDecisionMode()) { 
32003        for (CodeableConcept e : element.getDecisionMode()) 
32004          composeCodeableConcept("decisionMode", e);
32005      }
32006      if (element.hasAnswer()) { 
32007        for (Contract.AnswerComponent e : element.getAnswer()) 
32008          composeContractAnswerComponent("answer", e);
32009      }
32010      if (element.hasTextElement()) {
32011        composeString("text", element.getTextElement());
32012      }
32013      if (element.hasLinkId()) { 
32014        for (StringType e : element.getLinkId()) 
32015          composeString("linkId", e);
32016      }
32017      if (element.hasSecurityLabelNumber()) { 
32018        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32019          composeUnsignedInt("securityLabelNumber", e);
32020      }
32021  }
32022
32023  protected void composeContractContractPartyComponent(String name, Contract.ContractPartyComponent element) throws IOException {
32024    if (element != null) {
32025      composeElementAttributes(element);
32026      xml.enter(FHIR_NS, name);
32027      composeContractContractPartyComponentElements(element);
32028      composeElementClose(element);
32029      xml.exit(FHIR_NS, name);
32030    }
32031  }
32032
32033  protected void composeContractContractPartyComponentElements(Contract.ContractPartyComponent element) throws IOException {
32034      composeBackboneElementElements(element);
32035      if (element.hasReference()) { 
32036        for (Reference e : element.getReference()) 
32037          composeReference("reference", e);
32038      }
32039      if (element.hasRole()) {
32040        composeCodeableConcept("role", element.getRole());
32041      }
32042  }
32043
32044  protected void composeContractAnswerComponent(String name, Contract.AnswerComponent element) throws IOException {
32045    if (element != null) {
32046      composeElementAttributes(element);
32047      xml.enter(FHIR_NS, name);
32048      composeContractAnswerComponentElements(element);
32049      composeElementClose(element);
32050      xml.exit(FHIR_NS, name);
32051    }
32052  }
32053
32054  protected void composeContractAnswerComponentElements(Contract.AnswerComponent element) throws IOException {
32055      composeBackboneElementElements(element);
32056      if (element.hasValue()) {
32057        composeType("value", element.getValue());
32058      }  }
32059
32060  protected void composeContractContractAssetComponent(String name, Contract.ContractAssetComponent element) throws IOException {
32061    if (element != null) {
32062      composeElementAttributes(element);
32063      xml.enter(FHIR_NS, name);
32064      composeContractContractAssetComponentElements(element);
32065      composeElementClose(element);
32066      xml.exit(FHIR_NS, name);
32067    }
32068  }
32069
32070  protected void composeContractContractAssetComponentElements(Contract.ContractAssetComponent element) throws IOException {
32071      composeBackboneElementElements(element);
32072      if (element.hasScope()) {
32073        composeCodeableConcept("scope", element.getScope());
32074      }
32075      if (element.hasType()) { 
32076        for (CodeableConcept e : element.getType()) 
32077          composeCodeableConcept("type", e);
32078      }
32079      if (element.hasTypeReference()) { 
32080        for (Reference e : element.getTypeReference()) 
32081          composeReference("typeReference", e);
32082      }
32083      if (element.hasSubtype()) { 
32084        for (CodeableConcept e : element.getSubtype()) 
32085          composeCodeableConcept("subtype", e);
32086      }
32087      if (element.hasRelationship()) {
32088        composeCoding("relationship", element.getRelationship());
32089      }
32090      if (element.hasContext()) { 
32091        for (Contract.AssetContextComponent e : element.getContext()) 
32092          composeContractAssetContextComponent("context", e);
32093      }
32094      if (element.hasConditionElement()) {
32095        composeString("condition", element.getConditionElement());
32096      }
32097      if (element.hasPeriodType()) { 
32098        for (CodeableConcept e : element.getPeriodType()) 
32099          composeCodeableConcept("periodType", e);
32100      }
32101      if (element.hasPeriod()) { 
32102        for (Period e : element.getPeriod()) 
32103          composePeriod("period", e);
32104      }
32105      if (element.hasUsePeriod()) { 
32106        for (Period e : element.getUsePeriod()) 
32107          composePeriod("usePeriod", e);
32108      }
32109      if (element.hasTextElement()) {
32110        composeString("text", element.getTextElement());
32111      }
32112      if (element.hasLinkId()) { 
32113        for (StringType e : element.getLinkId()) 
32114          composeString("linkId", e);
32115      }
32116      if (element.hasAnswer()) { 
32117        for (Contract.AnswerComponent e : element.getAnswer()) 
32118          composeContractAnswerComponent("answer", e);
32119      }
32120      if (element.hasSecurityLabelNumber()) { 
32121        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32122          composeUnsignedInt("securityLabelNumber", e);
32123      }
32124      if (element.hasValuedItem()) { 
32125        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
32126          composeContractValuedItemComponent("valuedItem", e);
32127      }
32128  }
32129
32130  protected void composeContractAssetContextComponent(String name, Contract.AssetContextComponent element) throws IOException {
32131    if (element != null) {
32132      composeElementAttributes(element);
32133      xml.enter(FHIR_NS, name);
32134      composeContractAssetContextComponentElements(element);
32135      composeElementClose(element);
32136      xml.exit(FHIR_NS, name);
32137    }
32138  }
32139
32140  protected void composeContractAssetContextComponentElements(Contract.AssetContextComponent element) throws IOException {
32141      composeBackboneElementElements(element);
32142      if (element.hasReference()) {
32143        composeReference("reference", element.getReference());
32144      }
32145      if (element.hasCode()) { 
32146        for (CodeableConcept e : element.getCode()) 
32147          composeCodeableConcept("code", e);
32148      }
32149      if (element.hasTextElement()) {
32150        composeString("text", element.getTextElement());
32151      }
32152  }
32153
32154  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
32155    if (element != null) {
32156      composeElementAttributes(element);
32157      xml.enter(FHIR_NS, name);
32158      composeContractValuedItemComponentElements(element);
32159      composeElementClose(element);
32160      xml.exit(FHIR_NS, name);
32161    }
32162  }
32163
32164  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
32165      composeBackboneElementElements(element);
32166      if (element.hasEntity()) {
32167        composeType("entity", element.getEntity());
32168      }      if (element.hasIdentifier()) {
32169        composeIdentifier("identifier", element.getIdentifier());
32170      }
32171      if (element.hasEffectiveTimeElement()) {
32172        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
32173      }
32174      if (element.hasQuantity()) {
32175        composeQuantity("quantity", element.getQuantity());
32176      }
32177      if (element.hasUnitPrice()) {
32178        composeMoney("unitPrice", element.getUnitPrice());
32179      }
32180      if (element.hasFactorElement()) {
32181        composeDecimal("factor", element.getFactorElement());
32182      }
32183      if (element.hasPointsElement()) {
32184        composeDecimal("points", element.getPointsElement());
32185      }
32186      if (element.hasNet()) {
32187        composeMoney("net", element.getNet());
32188      }
32189      if (element.hasPaymentElement()) {
32190        composeString("payment", element.getPaymentElement());
32191      }
32192      if (element.hasPaymentDateElement()) {
32193        composeDateTime("paymentDate", element.getPaymentDateElement());
32194      }
32195      if (element.hasResponsible()) {
32196        composeReference("responsible", element.getResponsible());
32197      }
32198      if (element.hasRecipient()) {
32199        composeReference("recipient", element.getRecipient());
32200      }
32201      if (element.hasLinkId()) { 
32202        for (StringType e : element.getLinkId()) 
32203          composeString("linkId", e);
32204      }
32205      if (element.hasSecurityLabelNumber()) { 
32206        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32207          composeUnsignedInt("securityLabelNumber", e);
32208      }
32209  }
32210
32211  protected void composeContractActionComponent(String name, Contract.ActionComponent element) throws IOException {
32212    if (element != null) {
32213      composeElementAttributes(element);
32214      xml.enter(FHIR_NS, name);
32215      composeContractActionComponentElements(element);
32216      composeElementClose(element);
32217      xml.exit(FHIR_NS, name);
32218    }
32219  }
32220
32221  protected void composeContractActionComponentElements(Contract.ActionComponent element) throws IOException {
32222      composeBackboneElementElements(element);
32223      if (element.hasDoNotPerformElement()) {
32224        composeBoolean("doNotPerform", element.getDoNotPerformElement());
32225      }
32226      if (element.hasType()) {
32227        composeCodeableConcept("type", element.getType());
32228      }
32229      if (element.hasSubject()) { 
32230        for (Contract.ActionSubjectComponent e : element.getSubject()) 
32231          composeContractActionSubjectComponent("subject", e);
32232      }
32233      if (element.hasIntent()) {
32234        composeCodeableConcept("intent", element.getIntent());
32235      }
32236      if (element.hasLinkId()) { 
32237        for (StringType e : element.getLinkId()) 
32238          composeString("linkId", e);
32239      }
32240      if (element.hasStatus()) {
32241        composeCodeableConcept("status", element.getStatus());
32242      }
32243      if (element.hasContext()) {
32244        composeReference("context", element.getContext());
32245      }
32246      if (element.hasContextLinkId()) { 
32247        for (StringType e : element.getContextLinkId()) 
32248          composeString("contextLinkId", e);
32249      }
32250      if (element.hasOccurrence()) {
32251        composeType("occurrence", element.getOccurrence());
32252      }      if (element.hasRequester()) { 
32253        for (Reference e : element.getRequester()) 
32254          composeReference("requester", e);
32255      }
32256      if (element.hasRequesterLinkId()) { 
32257        for (StringType e : element.getRequesterLinkId()) 
32258          composeString("requesterLinkId", e);
32259      }
32260      if (element.hasPerformerType()) { 
32261        for (CodeableConcept e : element.getPerformerType()) 
32262          composeCodeableConcept("performerType", e);
32263      }
32264      if (element.hasPerformerRole()) {
32265        composeCodeableConcept("performerRole", element.getPerformerRole());
32266      }
32267      if (element.hasPerformer()) {
32268        composeReference("performer", element.getPerformer());
32269      }
32270      if (element.hasPerformerLinkId()) { 
32271        for (StringType e : element.getPerformerLinkId()) 
32272          composeString("performerLinkId", e);
32273      }
32274      if (element.hasReasonCode()) { 
32275        for (CodeableConcept e : element.getReasonCode()) 
32276          composeCodeableConcept("reasonCode", e);
32277      }
32278      if (element.hasReasonReference()) { 
32279        for (Reference e : element.getReasonReference()) 
32280          composeReference("reasonReference", e);
32281      }
32282      if (element.hasReason()) { 
32283        for (StringType e : element.getReason()) 
32284          composeString("reason", e);
32285      }
32286      if (element.hasReasonLinkId()) { 
32287        for (StringType e : element.getReasonLinkId()) 
32288          composeString("reasonLinkId", e);
32289      }
32290      if (element.hasNote()) { 
32291        for (Annotation e : element.getNote()) 
32292          composeAnnotation("note", e);
32293      }
32294      if (element.hasSecurityLabelNumber()) { 
32295        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32296          composeUnsignedInt("securityLabelNumber", e);
32297      }
32298  }
32299
32300  protected void composeContractActionSubjectComponent(String name, Contract.ActionSubjectComponent element) throws IOException {
32301    if (element != null) {
32302      composeElementAttributes(element);
32303      xml.enter(FHIR_NS, name);
32304      composeContractActionSubjectComponentElements(element);
32305      composeElementClose(element);
32306      xml.exit(FHIR_NS, name);
32307    }
32308  }
32309
32310  protected void composeContractActionSubjectComponentElements(Contract.ActionSubjectComponent element) throws IOException {
32311      composeBackboneElementElements(element);
32312      if (element.hasReference()) { 
32313        for (Reference e : element.getReference()) 
32314          composeReference("reference", e);
32315      }
32316      if (element.hasRole()) {
32317        composeCodeableConcept("role", element.getRole());
32318      }
32319  }
32320
32321  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
32322    if (element != null) {
32323      composeElementAttributes(element);
32324      xml.enter(FHIR_NS, name);
32325      composeContractSignatoryComponentElements(element);
32326      composeElementClose(element);
32327      xml.exit(FHIR_NS, name);
32328    }
32329  }
32330
32331  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
32332      composeBackboneElementElements(element);
32333      if (element.hasType()) {
32334        composeCoding("type", element.getType());
32335      }
32336      if (element.hasParty()) {
32337        composeReference("party", element.getParty());
32338      }
32339      if (element.hasSignature()) { 
32340        for (Signature e : element.getSignature()) 
32341          composeSignature("signature", e);
32342      }
32343  }
32344
32345  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
32346    if (element != null) {
32347      composeElementAttributes(element);
32348      xml.enter(FHIR_NS, name);
32349      composeContractFriendlyLanguageComponentElements(element);
32350      composeElementClose(element);
32351      xml.exit(FHIR_NS, name);
32352    }
32353  }
32354
32355  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
32356      composeBackboneElementElements(element);
32357      if (element.hasContent()) {
32358        composeType("content", element.getContent());
32359      }  }
32360
32361  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
32362    if (element != null) {
32363      composeElementAttributes(element);
32364      xml.enter(FHIR_NS, name);
32365      composeContractLegalLanguageComponentElements(element);
32366      composeElementClose(element);
32367      xml.exit(FHIR_NS, name);
32368    }
32369  }
32370
32371  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
32372      composeBackboneElementElements(element);
32373      if (element.hasContent()) {
32374        composeType("content", element.getContent());
32375      }  }
32376
32377  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
32378    if (element != null) {
32379      composeElementAttributes(element);
32380      xml.enter(FHIR_NS, name);
32381      composeContractComputableLanguageComponentElements(element);
32382      composeElementClose(element);
32383      xml.exit(FHIR_NS, name);
32384    }
32385  }
32386
32387  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
32388      composeBackboneElementElements(element);
32389      if (element.hasContent()) {
32390        composeType("content", element.getContent());
32391      }  }
32392
32393  protected void composeCoverage(String name, Coverage element) throws IOException {
32394    if (element != null) {
32395      composeDomainResourceAttributes(element);
32396      xml.enter(FHIR_NS, name);
32397      composeCoverageElements(element);
32398      composeElementClose(element);
32399      xml.exit(FHIR_NS, name);
32400    }
32401  }
32402
32403  protected void composeCoverageElements(Coverage element) throws IOException {
32404      composeDomainResourceElements(element);
32405      if (element.hasIdentifier()) { 
32406        for (Identifier e : element.getIdentifier()) 
32407          composeIdentifier("identifier", e);
32408      }
32409      if (element.hasStatusElement())
32410        composeEnumeration("status", element.getStatusElement(), new Coverage.CoverageStatusEnumFactory());
32411      if (element.hasType()) {
32412        composeCodeableConcept("type", element.getType());
32413      }
32414      if (element.hasPolicyHolder()) {
32415        composeReference("policyHolder", element.getPolicyHolder());
32416      }
32417      if (element.hasSubscriber()) {
32418        composeReference("subscriber", element.getSubscriber());
32419      }
32420      if (element.hasSubscriberIdElement()) {
32421        composeString("subscriberId", element.getSubscriberIdElement());
32422      }
32423      if (element.hasBeneficiary()) {
32424        composeReference("beneficiary", element.getBeneficiary());
32425      }
32426      if (element.hasDependentElement()) {
32427        composeString("dependent", element.getDependentElement());
32428      }
32429      if (element.hasRelationship()) {
32430        composeCodeableConcept("relationship", element.getRelationship());
32431      }
32432      if (element.hasPeriod()) {
32433        composePeriod("period", element.getPeriod());
32434      }
32435      if (element.hasPayor()) { 
32436        for (Reference e : element.getPayor()) 
32437          composeReference("payor", e);
32438      }
32439      if (element.hasClass_()) { 
32440        for (Coverage.ClassComponent e : element.getClass_()) 
32441          composeCoverageClassComponent("class", e);
32442      }
32443      if (element.hasOrderElement()) {
32444        composePositiveInt("order", element.getOrderElement());
32445      }
32446      if (element.hasNetworkElement()) {
32447        composeString("network", element.getNetworkElement());
32448      }
32449      if (element.hasCostToBeneficiary()) { 
32450        for (Coverage.CostToBeneficiaryComponent e : element.getCostToBeneficiary()) 
32451          composeCoverageCostToBeneficiaryComponent("costToBeneficiary", e);
32452      }
32453      if (element.hasSubrogationElement()) {
32454        composeBoolean("subrogation", element.getSubrogationElement());
32455      }
32456      if (element.hasContract()) { 
32457        for (Reference e : element.getContract()) 
32458          composeReference("contract", e);
32459      }
32460  }
32461
32462  protected void composeCoverageClassComponent(String name, Coverage.ClassComponent element) throws IOException {
32463    if (element != null) {
32464      composeElementAttributes(element);
32465      xml.enter(FHIR_NS, name);
32466      composeCoverageClassComponentElements(element);
32467      composeElementClose(element);
32468      xml.exit(FHIR_NS, name);
32469    }
32470  }
32471
32472  protected void composeCoverageClassComponentElements(Coverage.ClassComponent element) throws IOException {
32473      composeBackboneElementElements(element);
32474      if (element.hasType()) {
32475        composeCodeableConcept("type", element.getType());
32476      }
32477      if (element.hasValueElement()) {
32478        composeString("value", element.getValueElement());
32479      }
32480      if (element.hasNameElement()) {
32481        composeString("name", element.getNameElement());
32482      }
32483  }
32484
32485  protected void composeCoverageCostToBeneficiaryComponent(String name, Coverage.CostToBeneficiaryComponent element) throws IOException {
32486    if (element != null) {
32487      composeElementAttributes(element);
32488      xml.enter(FHIR_NS, name);
32489      composeCoverageCostToBeneficiaryComponentElements(element);
32490      composeElementClose(element);
32491      xml.exit(FHIR_NS, name);
32492    }
32493  }
32494
32495  protected void composeCoverageCostToBeneficiaryComponentElements(Coverage.CostToBeneficiaryComponent element) throws IOException {
32496      composeBackboneElementElements(element);
32497      if (element.hasType()) {
32498        composeCodeableConcept("type", element.getType());
32499      }
32500      if (element.hasValue()) {
32501        composeType("value", element.getValue());
32502      }      if (element.hasException()) { 
32503        for (Coverage.ExemptionComponent e : element.getException()) 
32504          composeCoverageExemptionComponent("exception", e);
32505      }
32506  }
32507
32508  protected void composeCoverageExemptionComponent(String name, Coverage.ExemptionComponent element) throws IOException {
32509    if (element != null) {
32510      composeElementAttributes(element);
32511      xml.enter(FHIR_NS, name);
32512      composeCoverageExemptionComponentElements(element);
32513      composeElementClose(element);
32514      xml.exit(FHIR_NS, name);
32515    }
32516  }
32517
32518  protected void composeCoverageExemptionComponentElements(Coverage.ExemptionComponent element) throws IOException {
32519      composeBackboneElementElements(element);
32520      if (element.hasType()) {
32521        composeCodeableConcept("type", element.getType());
32522      }
32523      if (element.hasPeriod()) {
32524        composePeriod("period", element.getPeriod());
32525      }
32526  }
32527
32528  protected void composeCoverageEligibilityRequest(String name, CoverageEligibilityRequest element) throws IOException {
32529    if (element != null) {
32530      composeDomainResourceAttributes(element);
32531      xml.enter(FHIR_NS, name);
32532      composeCoverageEligibilityRequestElements(element);
32533      composeElementClose(element);
32534      xml.exit(FHIR_NS, name);
32535    }
32536  }
32537
32538  protected void composeCoverageEligibilityRequestElements(CoverageEligibilityRequest element) throws IOException {
32539      composeDomainResourceElements(element);
32540      if (element.hasIdentifier()) { 
32541        for (Identifier e : element.getIdentifier()) 
32542          composeIdentifier("identifier", e);
32543      }
32544      if (element.hasStatusElement())
32545        composeEnumeration("status", element.getStatusElement(), new CoverageEligibilityRequest.EligibilityRequestStatusEnumFactory());
32546      if (element.hasPriority()) {
32547        composeCodeableConcept("priority", element.getPriority());
32548      }
32549        if (element.hasPurpose()) 
32550          for (Enumeration<CoverageEligibilityRequest.EligibilityRequestPurpose> e : element.getPurpose()) 
32551            composeEnumeration("purpose", e, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory());
32552      if (element.hasPatient()) {
32553        composeReference("patient", element.getPatient());
32554      }
32555      if (element.hasServiced()) {
32556        composeType("serviced", element.getServiced());
32557      }      if (element.hasCreatedElement()) {
32558        composeDateTime("created", element.getCreatedElement());
32559      }
32560      if (element.hasEnterer()) {
32561        composeReference("enterer", element.getEnterer());
32562      }
32563      if (element.hasProvider()) {
32564        composeReference("provider", element.getProvider());
32565      }
32566      if (element.hasInsurer()) {
32567        composeReference("insurer", element.getInsurer());
32568      }
32569      if (element.hasFacility()) {
32570        composeReference("facility", element.getFacility());
32571      }
32572      if (element.hasSupportingInfo()) { 
32573        for (CoverageEligibilityRequest.SupportingInformationComponent e : element.getSupportingInfo()) 
32574          composeCoverageEligibilityRequestSupportingInformationComponent("supportingInfo", e);
32575      }
32576      if (element.hasInsurance()) { 
32577        for (CoverageEligibilityRequest.InsuranceComponent e : element.getInsurance()) 
32578          composeCoverageEligibilityRequestInsuranceComponent("insurance", e);
32579      }
32580      if (element.hasItem()) { 
32581        for (CoverageEligibilityRequest.DetailsComponent e : element.getItem()) 
32582          composeCoverageEligibilityRequestDetailsComponent("item", e);
32583      }
32584  }
32585
32586  protected void composeCoverageEligibilityRequestSupportingInformationComponent(String name, CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
32587    if (element != null) {
32588      composeElementAttributes(element);
32589      xml.enter(FHIR_NS, name);
32590      composeCoverageEligibilityRequestSupportingInformationComponentElements(element);
32591      composeElementClose(element);
32592      xml.exit(FHIR_NS, name);
32593    }
32594  }
32595
32596  protected void composeCoverageEligibilityRequestSupportingInformationComponentElements(CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
32597      composeBackboneElementElements(element);
32598      if (element.hasSequenceElement()) {
32599        composePositiveInt("sequence", element.getSequenceElement());
32600      }
32601      if (element.hasInformation()) {
32602        composeReference("information", element.getInformation());
32603      }
32604      if (element.hasAppliesToAllElement()) {
32605        composeBoolean("appliesToAll", element.getAppliesToAllElement());
32606      }
32607  }
32608
32609  protected void composeCoverageEligibilityRequestInsuranceComponent(String name, CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
32610    if (element != null) {
32611      composeElementAttributes(element);
32612      xml.enter(FHIR_NS, name);
32613      composeCoverageEligibilityRequestInsuranceComponentElements(element);
32614      composeElementClose(element);
32615      xml.exit(FHIR_NS, name);
32616    }
32617  }
32618
32619  protected void composeCoverageEligibilityRequestInsuranceComponentElements(CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
32620      composeBackboneElementElements(element);
32621      if (element.hasFocalElement()) {
32622        composeBoolean("focal", element.getFocalElement());
32623      }
32624      if (element.hasCoverage()) {
32625        composeReference("coverage", element.getCoverage());
32626      }
32627      if (element.hasBusinessArrangementElement()) {
32628        composeString("businessArrangement", element.getBusinessArrangementElement());
32629      }
32630  }
32631
32632  protected void composeCoverageEligibilityRequestDetailsComponent(String name, CoverageEligibilityRequest.DetailsComponent element) throws IOException {
32633    if (element != null) {
32634      composeElementAttributes(element);
32635      xml.enter(FHIR_NS, name);
32636      composeCoverageEligibilityRequestDetailsComponentElements(element);
32637      composeElementClose(element);
32638      xml.exit(FHIR_NS, name);
32639    }
32640  }
32641
32642  protected void composeCoverageEligibilityRequestDetailsComponentElements(CoverageEligibilityRequest.DetailsComponent element) throws IOException {
32643      composeBackboneElementElements(element);
32644      if (element.hasSupportingInfoSequence()) { 
32645        for (PositiveIntType e : element.getSupportingInfoSequence()) 
32646          composePositiveInt("supportingInfoSequence", e);
32647      }
32648      if (element.hasCategory()) {
32649        composeCodeableConcept("category", element.getCategory());
32650      }
32651      if (element.hasProductOrService()) {
32652        composeCodeableConcept("productOrService", element.getProductOrService());
32653      }
32654      if (element.hasModifier()) { 
32655        for (CodeableConcept e : element.getModifier()) 
32656          composeCodeableConcept("modifier", e);
32657      }
32658      if (element.hasProvider()) {
32659        composeReference("provider", element.getProvider());
32660      }
32661      if (element.hasQuantity()) {
32662        composeQuantity("quantity", element.getQuantity());
32663      }
32664      if (element.hasUnitPrice()) {
32665        composeMoney("unitPrice", element.getUnitPrice());
32666      }
32667      if (element.hasFacility()) {
32668        composeReference("facility", element.getFacility());
32669      }
32670      if (element.hasDiagnosis()) { 
32671        for (CoverageEligibilityRequest.DiagnosisComponent e : element.getDiagnosis()) 
32672          composeCoverageEligibilityRequestDiagnosisComponent("diagnosis", e);
32673      }
32674      if (element.hasDetail()) { 
32675        for (Reference e : element.getDetail()) 
32676          composeReference("detail", e);
32677      }
32678  }
32679
32680  protected void composeCoverageEligibilityRequestDiagnosisComponent(String name, CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
32681    if (element != null) {
32682      composeElementAttributes(element);
32683      xml.enter(FHIR_NS, name);
32684      composeCoverageEligibilityRequestDiagnosisComponentElements(element);
32685      composeElementClose(element);
32686      xml.exit(FHIR_NS, name);
32687    }
32688  }
32689
32690  protected void composeCoverageEligibilityRequestDiagnosisComponentElements(CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
32691      composeBackboneElementElements(element);
32692      if (element.hasDiagnosis()) {
32693        composeType("diagnosis", element.getDiagnosis());
32694      }  }
32695
32696  protected void composeCoverageEligibilityResponse(String name, CoverageEligibilityResponse element) throws IOException {
32697    if (element != null) {
32698      composeDomainResourceAttributes(element);
32699      xml.enter(FHIR_NS, name);
32700      composeCoverageEligibilityResponseElements(element);
32701      composeElementClose(element);
32702      xml.exit(FHIR_NS, name);
32703    }
32704  }
32705
32706  protected void composeCoverageEligibilityResponseElements(CoverageEligibilityResponse element) throws IOException {
32707      composeDomainResourceElements(element);
32708      if (element.hasIdentifier()) { 
32709        for (Identifier e : element.getIdentifier()) 
32710          composeIdentifier("identifier", e);
32711      }
32712      if (element.hasStatusElement())
32713        composeEnumeration("status", element.getStatusElement(), new CoverageEligibilityResponse.EligibilityResponseStatusEnumFactory());
32714        if (element.hasPurpose()) 
32715          for (Enumeration<CoverageEligibilityResponse.EligibilityResponsePurpose> e : element.getPurpose()) 
32716            composeEnumeration("purpose", e, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory());
32717      if (element.hasPatient()) {
32718        composeReference("patient", element.getPatient());
32719      }
32720      if (element.hasServiced()) {
32721        composeType("serviced", element.getServiced());
32722      }      if (element.hasCreatedElement()) {
32723        composeDateTime("created", element.getCreatedElement());
32724      }
32725      if (element.hasRequestor()) {
32726        composeReference("requestor", element.getRequestor());
32727      }
32728      if (element.hasRequest()) {
32729        composeReference("request", element.getRequest());
32730      }
32731      if (element.hasOutcomeElement())
32732        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
32733      if (element.hasDispositionElement()) {
32734        composeString("disposition", element.getDispositionElement());
32735      }
32736      if (element.hasInsurer()) {
32737        composeReference("insurer", element.getInsurer());
32738      }
32739      if (element.hasInsurance()) { 
32740        for (CoverageEligibilityResponse.InsuranceComponent e : element.getInsurance()) 
32741          composeCoverageEligibilityResponseInsuranceComponent("insurance", e);
32742      }
32743      if (element.hasPreAuthRefElement()) {
32744        composeString("preAuthRef", element.getPreAuthRefElement());
32745      }
32746      if (element.hasForm()) {
32747        composeCodeableConcept("form", element.getForm());
32748      }
32749      if (element.hasError()) { 
32750        for (CoverageEligibilityResponse.ErrorsComponent e : element.getError()) 
32751          composeCoverageEligibilityResponseErrorsComponent("error", e);
32752      }
32753  }
32754
32755  protected void composeCoverageEligibilityResponseInsuranceComponent(String name, CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
32756    if (element != null) {
32757      composeElementAttributes(element);
32758      xml.enter(FHIR_NS, name);
32759      composeCoverageEligibilityResponseInsuranceComponentElements(element);
32760      composeElementClose(element);
32761      xml.exit(FHIR_NS, name);
32762    }
32763  }
32764
32765  protected void composeCoverageEligibilityResponseInsuranceComponentElements(CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
32766      composeBackboneElementElements(element);
32767      if (element.hasCoverage()) {
32768        composeReference("coverage", element.getCoverage());
32769      }
32770      if (element.hasInforceElement()) {
32771        composeBoolean("inforce", element.getInforceElement());
32772      }
32773      if (element.hasBenefitPeriod()) {
32774        composePeriod("benefitPeriod", element.getBenefitPeriod());
32775      }
32776      if (element.hasItem()) { 
32777        for (CoverageEligibilityResponse.ItemsComponent e : element.getItem()) 
32778          composeCoverageEligibilityResponseItemsComponent("item", e);
32779      }
32780  }
32781
32782  protected void composeCoverageEligibilityResponseItemsComponent(String name, CoverageEligibilityResponse.ItemsComponent element) throws IOException {
32783    if (element != null) {
32784      composeElementAttributes(element);
32785      xml.enter(FHIR_NS, name);
32786      composeCoverageEligibilityResponseItemsComponentElements(element);
32787      composeElementClose(element);
32788      xml.exit(FHIR_NS, name);
32789    }
32790  }
32791
32792  protected void composeCoverageEligibilityResponseItemsComponentElements(CoverageEligibilityResponse.ItemsComponent element) throws IOException {
32793      composeBackboneElementElements(element);
32794      if (element.hasCategory()) {
32795        composeCodeableConcept("category", element.getCategory());
32796      }
32797      if (element.hasProductOrService()) {
32798        composeCodeableConcept("productOrService", element.getProductOrService());
32799      }
32800      if (element.hasModifier()) { 
32801        for (CodeableConcept e : element.getModifier()) 
32802          composeCodeableConcept("modifier", e);
32803      }
32804      if (element.hasProvider()) {
32805        composeReference("provider", element.getProvider());
32806      }
32807      if (element.hasExcludedElement()) {
32808        composeBoolean("excluded", element.getExcludedElement());
32809      }
32810      if (element.hasNameElement()) {
32811        composeString("name", element.getNameElement());
32812      }
32813      if (element.hasDescriptionElement()) {
32814        composeString("description", element.getDescriptionElement());
32815      }
32816      if (element.hasNetwork()) {
32817        composeCodeableConcept("network", element.getNetwork());
32818      }
32819      if (element.hasUnit()) {
32820        composeCodeableConcept("unit", element.getUnit());
32821      }
32822      if (element.hasTerm()) {
32823        composeCodeableConcept("term", element.getTerm());
32824      }
32825      if (element.hasBenefit()) { 
32826        for (CoverageEligibilityResponse.BenefitComponent e : element.getBenefit()) 
32827          composeCoverageEligibilityResponseBenefitComponent("benefit", e);
32828      }
32829      if (element.hasAuthorizationRequiredElement()) {
32830        composeBoolean("authorizationRequired", element.getAuthorizationRequiredElement());
32831      }
32832      if (element.hasAuthorizationSupporting()) { 
32833        for (CodeableConcept e : element.getAuthorizationSupporting()) 
32834          composeCodeableConcept("authorizationSupporting", e);
32835      }
32836      if (element.hasAuthorizationUrlElement()) {
32837        composeUri("authorizationUrl", element.getAuthorizationUrlElement());
32838      }
32839  }
32840
32841  protected void composeCoverageEligibilityResponseBenefitComponent(String name, CoverageEligibilityResponse.BenefitComponent element) throws IOException {
32842    if (element != null) {
32843      composeElementAttributes(element);
32844      xml.enter(FHIR_NS, name);
32845      composeCoverageEligibilityResponseBenefitComponentElements(element);
32846      composeElementClose(element);
32847      xml.exit(FHIR_NS, name);
32848    }
32849  }
32850
32851  protected void composeCoverageEligibilityResponseBenefitComponentElements(CoverageEligibilityResponse.BenefitComponent element) throws IOException {
32852      composeBackboneElementElements(element);
32853      if (element.hasType()) {
32854        composeCodeableConcept("type", element.getType());
32855      }
32856      if (element.hasAllowed()) {
32857        composeType("allowed", element.getAllowed());
32858      }      if (element.hasUsed()) {
32859        composeType("used", element.getUsed());
32860      }  }
32861
32862  protected void composeCoverageEligibilityResponseErrorsComponent(String name, CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
32863    if (element != null) {
32864      composeElementAttributes(element);
32865      xml.enter(FHIR_NS, name);
32866      composeCoverageEligibilityResponseErrorsComponentElements(element);
32867      composeElementClose(element);
32868      xml.exit(FHIR_NS, name);
32869    }
32870  }
32871
32872  protected void composeCoverageEligibilityResponseErrorsComponentElements(CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
32873      composeBackboneElementElements(element);
32874      if (element.hasCode()) {
32875        composeCodeableConcept("code", element.getCode());
32876      }
32877  }
32878
32879  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
32880    if (element != null) {
32881      composeDomainResourceAttributes(element);
32882      xml.enter(FHIR_NS, name);
32883      composeDetectedIssueElements(element);
32884      composeElementClose(element);
32885      xml.exit(FHIR_NS, name);
32886    }
32887  }
32888
32889  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
32890      composeDomainResourceElements(element);
32891      if (element.hasIdentifier()) { 
32892        for (Identifier e : element.getIdentifier()) 
32893          composeIdentifier("identifier", e);
32894      }
32895      if (element.hasStatusElement())
32896        composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
32897      if (element.hasCode()) {
32898        composeCodeableConcept("code", element.getCode());
32899      }
32900      if (element.hasSeverityElement())
32901        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
32902      if (element.hasPatient()) {
32903        composeReference("patient", element.getPatient());
32904      }
32905      if (element.hasIdentified()) {
32906        composeType("identified", element.getIdentified());
32907      }      if (element.hasAuthor()) {
32908        composeReference("author", element.getAuthor());
32909      }
32910      if (element.hasImplicated()) { 
32911        for (Reference e : element.getImplicated()) 
32912          composeReference("implicated", e);
32913      }
32914      if (element.hasEvidence()) { 
32915        for (DetectedIssue.DetectedIssueEvidenceComponent e : element.getEvidence()) 
32916          composeDetectedIssueDetectedIssueEvidenceComponent("evidence", e);
32917      }
32918      if (element.hasDetailElement()) {
32919        composeString("detail", element.getDetailElement());
32920      }
32921      if (element.hasReferenceElement()) {
32922        composeUri("reference", element.getReferenceElement());
32923      }
32924      if (element.hasMitigation()) { 
32925        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
32926          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
32927      }
32928  }
32929
32930  protected void composeDetectedIssueDetectedIssueEvidenceComponent(String name, DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
32931    if (element != null) {
32932      composeElementAttributes(element);
32933      xml.enter(FHIR_NS, name);
32934      composeDetectedIssueDetectedIssueEvidenceComponentElements(element);
32935      composeElementClose(element);
32936      xml.exit(FHIR_NS, name);
32937    }
32938  }
32939
32940  protected void composeDetectedIssueDetectedIssueEvidenceComponentElements(DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
32941      composeBackboneElementElements(element);
32942      if (element.hasCode()) { 
32943        for (CodeableConcept e : element.getCode()) 
32944          composeCodeableConcept("code", e);
32945      }
32946      if (element.hasDetail()) { 
32947        for (Reference e : element.getDetail()) 
32948          composeReference("detail", e);
32949      }
32950  }
32951
32952  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
32953    if (element != null) {
32954      composeElementAttributes(element);
32955      xml.enter(FHIR_NS, name);
32956      composeDetectedIssueDetectedIssueMitigationComponentElements(element);
32957      composeElementClose(element);
32958      xml.exit(FHIR_NS, name);
32959    }
32960  }
32961
32962  protected void composeDetectedIssueDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
32963      composeBackboneElementElements(element);
32964      if (element.hasAction()) {
32965        composeCodeableConcept("action", element.getAction());
32966      }
32967      if (element.hasDateElement()) {
32968        composeDateTime("date", element.getDateElement());
32969      }
32970      if (element.hasAuthor()) {
32971        composeReference("author", element.getAuthor());
32972      }
32973  }
32974
32975  protected void composeDevice(String name, Device element) throws IOException {
32976    if (element != null) {
32977      composeDomainResourceAttributes(element);
32978      xml.enter(FHIR_NS, name);
32979      composeDeviceElements(element);
32980      composeElementClose(element);
32981      xml.exit(FHIR_NS, name);
32982    }
32983  }
32984
32985  protected void composeDeviceElements(Device element) throws IOException {
32986      composeDomainResourceElements(element);
32987      if (element.hasIdentifier()) { 
32988        for (Identifier e : element.getIdentifier()) 
32989          composeIdentifier("identifier", e);
32990      }
32991      if (element.hasDefinition()) {
32992        composeReference("definition", element.getDefinition());
32993      }
32994      if (element.hasUdiCarrier()) { 
32995        for (Device.DeviceUdiCarrierComponent e : element.getUdiCarrier()) 
32996          composeDeviceDeviceUdiCarrierComponent("udiCarrier", e);
32997      }
32998      if (element.hasStatusElement())
32999        composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
33000      if (element.hasStatusReason()) { 
33001        for (CodeableConcept e : element.getStatusReason()) 
33002          composeCodeableConcept("statusReason", e);
33003      }
33004      if (element.hasDistinctIdentifierElement()) {
33005        composeString("distinctIdentifier", element.getDistinctIdentifierElement());
33006      }
33007      if (element.hasManufacturerElement()) {
33008        composeString("manufacturer", element.getManufacturerElement());
33009      }
33010      if (element.hasManufactureDateElement()) {
33011        composeDateTime("manufactureDate", element.getManufactureDateElement());
33012      }
33013      if (element.hasExpirationDateElement()) {
33014        composeDateTime("expirationDate", element.getExpirationDateElement());
33015      }
33016      if (element.hasLotNumberElement()) {
33017        composeString("lotNumber", element.getLotNumberElement());
33018      }
33019      if (element.hasSerialNumberElement()) {
33020        composeString("serialNumber", element.getSerialNumberElement());
33021      }
33022      if (element.hasDeviceName()) { 
33023        for (Device.DeviceDeviceNameComponent e : element.getDeviceName()) 
33024          composeDeviceDeviceDeviceNameComponent("deviceName", e);
33025      }
33026      if (element.hasModelNumberElement()) {
33027        composeString("modelNumber", element.getModelNumberElement());
33028      }
33029      if (element.hasPartNumberElement()) {
33030        composeString("partNumber", element.getPartNumberElement());
33031      }
33032      if (element.hasType()) {
33033        composeCodeableConcept("type", element.getType());
33034      }
33035      if (element.hasSpecialization()) { 
33036        for (Device.DeviceSpecializationComponent e : element.getSpecialization()) 
33037          composeDeviceDeviceSpecializationComponent("specialization", e);
33038      }
33039      if (element.hasVersion()) { 
33040        for (Device.DeviceVersionComponent e : element.getVersion()) 
33041          composeDeviceDeviceVersionComponent("version", e);
33042      }
33043      if (element.hasProperty()) { 
33044        for (Device.DevicePropertyComponent e : element.getProperty()) 
33045          composeDeviceDevicePropertyComponent("property", e);
33046      }
33047      if (element.hasPatient()) {
33048        composeReference("patient", element.getPatient());
33049      }
33050      if (element.hasOwner()) {
33051        composeReference("owner", element.getOwner());
33052      }
33053      if (element.hasContact()) { 
33054        for (ContactPoint e : element.getContact()) 
33055          composeContactPoint("contact", e);
33056      }
33057      if (element.hasLocation()) {
33058        composeReference("location", element.getLocation());
33059      }
33060      if (element.hasUrlElement()) {
33061        composeUri("url", element.getUrlElement());
33062      }
33063      if (element.hasNote()) { 
33064        for (Annotation e : element.getNote()) 
33065          composeAnnotation("note", e);
33066      }
33067      if (element.hasSafety()) { 
33068        for (CodeableConcept e : element.getSafety()) 
33069          composeCodeableConcept("safety", e);
33070      }
33071      if (element.hasParent()) {
33072        composeReference("parent", element.getParent());
33073      }
33074  }
33075
33076  protected void composeDeviceDeviceUdiCarrierComponent(String name, Device.DeviceUdiCarrierComponent element) throws IOException {
33077    if (element != null) {
33078      composeElementAttributes(element);
33079      xml.enter(FHIR_NS, name);
33080      composeDeviceDeviceUdiCarrierComponentElements(element);
33081      composeElementClose(element);
33082      xml.exit(FHIR_NS, name);
33083    }
33084  }
33085
33086  protected void composeDeviceDeviceUdiCarrierComponentElements(Device.DeviceUdiCarrierComponent element) throws IOException {
33087      composeBackboneElementElements(element);
33088      if (element.hasDeviceIdentifierElement()) {
33089        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
33090      }
33091      if (element.hasIssuerElement()) {
33092        composeUri("issuer", element.getIssuerElement());
33093      }
33094      if (element.hasJurisdictionElement()) {
33095        composeUri("jurisdiction", element.getJurisdictionElement());
33096      }
33097      if (element.hasCarrierAIDCElement()) {
33098        composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
33099      }
33100      if (element.hasCarrierHRFElement()) {
33101        composeString("carrierHRF", element.getCarrierHRFElement());
33102      }
33103      if (element.hasEntryTypeElement())
33104        composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
33105  }
33106
33107  protected void composeDeviceDeviceDeviceNameComponent(String name, Device.DeviceDeviceNameComponent element) throws IOException {
33108    if (element != null) {
33109      composeElementAttributes(element);
33110      xml.enter(FHIR_NS, name);
33111      composeDeviceDeviceDeviceNameComponentElements(element);
33112      composeElementClose(element);
33113      xml.exit(FHIR_NS, name);
33114    }
33115  }
33116
33117  protected void composeDeviceDeviceDeviceNameComponentElements(Device.DeviceDeviceNameComponent element) throws IOException {
33118      composeBackboneElementElements(element);
33119      if (element.hasNameElement()) {
33120        composeString("name", element.getNameElement());
33121      }
33122      if (element.hasTypeElement())
33123        composeEnumeration("type", element.getTypeElement(), new Device.DeviceNameTypeEnumFactory());
33124  }
33125
33126  protected void composeDeviceDeviceSpecializationComponent(String name, Device.DeviceSpecializationComponent element) throws IOException {
33127    if (element != null) {
33128      composeElementAttributes(element);
33129      xml.enter(FHIR_NS, name);
33130      composeDeviceDeviceSpecializationComponentElements(element);
33131      composeElementClose(element);
33132      xml.exit(FHIR_NS, name);
33133    }
33134  }
33135
33136  protected void composeDeviceDeviceSpecializationComponentElements(Device.DeviceSpecializationComponent element) throws IOException {
33137      composeBackboneElementElements(element);
33138      if (element.hasSystemType()) {
33139        composeCodeableConcept("systemType", element.getSystemType());
33140      }
33141      if (element.hasVersionElement()) {
33142        composeString("version", element.getVersionElement());
33143      }
33144  }
33145
33146  protected void composeDeviceDeviceVersionComponent(String name, Device.DeviceVersionComponent element) throws IOException {
33147    if (element != null) {
33148      composeElementAttributes(element);
33149      xml.enter(FHIR_NS, name);
33150      composeDeviceDeviceVersionComponentElements(element);
33151      composeElementClose(element);
33152      xml.exit(FHIR_NS, name);
33153    }
33154  }
33155
33156  protected void composeDeviceDeviceVersionComponentElements(Device.DeviceVersionComponent element) throws IOException {
33157      composeBackboneElementElements(element);
33158      if (element.hasType()) {
33159        composeCodeableConcept("type", element.getType());
33160      }
33161      if (element.hasComponent()) {
33162        composeIdentifier("component", element.getComponent());
33163      }
33164      if (element.hasValueElement()) {
33165        composeString("value", element.getValueElement());
33166      }
33167  }
33168
33169  protected void composeDeviceDevicePropertyComponent(String name, Device.DevicePropertyComponent element) throws IOException {
33170    if (element != null) {
33171      composeElementAttributes(element);
33172      xml.enter(FHIR_NS, name);
33173      composeDeviceDevicePropertyComponentElements(element);
33174      composeElementClose(element);
33175      xml.exit(FHIR_NS, name);
33176    }
33177  }
33178
33179  protected void composeDeviceDevicePropertyComponentElements(Device.DevicePropertyComponent element) throws IOException {
33180      composeBackboneElementElements(element);
33181      if (element.hasType()) {
33182        composeCodeableConcept("type", element.getType());
33183      }
33184      if (element.hasValueQuantity()) { 
33185        for (Quantity e : element.getValueQuantity()) 
33186          composeQuantity("valueQuantity", e);
33187      }
33188      if (element.hasValueCode()) { 
33189        for (CodeableConcept e : element.getValueCode()) 
33190          composeCodeableConcept("valueCode", e);
33191      }
33192  }
33193
33194  protected void composeDeviceDefinition(String name, DeviceDefinition element) throws IOException {
33195    if (element != null) {
33196      composeDomainResourceAttributes(element);
33197      xml.enter(FHIR_NS, name);
33198      composeDeviceDefinitionElements(element);
33199      composeElementClose(element);
33200      xml.exit(FHIR_NS, name);
33201    }
33202  }
33203
33204  protected void composeDeviceDefinitionElements(DeviceDefinition element) throws IOException {
33205      composeDomainResourceElements(element);
33206      if (element.hasIdentifier()) { 
33207        for (Identifier e : element.getIdentifier()) 
33208          composeIdentifier("identifier", e);
33209      }
33210      if (element.hasUdiDeviceIdentifier()) { 
33211        for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
33212          composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
33213      }
33214      if (element.hasManufacturer()) {
33215        composeType("manufacturer", element.getManufacturer());
33216      }      if (element.hasDeviceName()) { 
33217        for (DeviceDefinition.DeviceDefinitionDeviceNameComponent e : element.getDeviceName()) 
33218          composeDeviceDefinitionDeviceDefinitionDeviceNameComponent("deviceName", e);
33219      }
33220      if (element.hasModelNumberElement()) {
33221        composeString("modelNumber", element.getModelNumberElement());
33222      }
33223      if (element.hasType()) {
33224        composeCodeableConcept("type", element.getType());
33225      }
33226      if (element.hasSpecialization()) { 
33227        for (DeviceDefinition.DeviceDefinitionSpecializationComponent e : element.getSpecialization()) 
33228          composeDeviceDefinitionDeviceDefinitionSpecializationComponent("specialization", e);
33229      }
33230      if (element.hasVersion()) { 
33231        for (StringType e : element.getVersion()) 
33232          composeString("version", e);
33233      }
33234      if (element.hasSafety()) { 
33235        for (CodeableConcept e : element.getSafety()) 
33236          composeCodeableConcept("safety", e);
33237      }
33238      if (element.hasShelfLifeStorage()) { 
33239        for (ProductShelfLife e : element.getShelfLifeStorage()) 
33240          composeProductShelfLife("shelfLifeStorage", e);
33241      }
33242      if (element.hasPhysicalCharacteristics()) {
33243        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
33244      }
33245      if (element.hasLanguageCode()) { 
33246        for (CodeableConcept e : element.getLanguageCode()) 
33247          composeCodeableConcept("languageCode", e);
33248      }
33249      if (element.hasCapability()) { 
33250        for (DeviceDefinition.DeviceDefinitionCapabilityComponent e : element.getCapability()) 
33251          composeDeviceDefinitionDeviceDefinitionCapabilityComponent("capability", e);
33252      }
33253      if (element.hasProperty()) { 
33254        for (DeviceDefinition.DeviceDefinitionPropertyComponent e : element.getProperty()) 
33255          composeDeviceDefinitionDeviceDefinitionPropertyComponent("property", e);
33256      }
33257      if (element.hasOwner()) {
33258        composeReference("owner", element.getOwner());
33259      }
33260      if (element.hasContact()) { 
33261        for (ContactPoint e : element.getContact()) 
33262          composeContactPoint("contact", e);
33263      }
33264      if (element.hasUrlElement()) {
33265        composeUri("url", element.getUrlElement());
33266      }
33267      if (element.hasOnlineInformationElement()) {
33268        composeUri("onlineInformation", element.getOnlineInformationElement());
33269      }
33270      if (element.hasNote()) { 
33271        for (Annotation e : element.getNote()) 
33272          composeAnnotation("note", e);
33273      }
33274      if (element.hasQuantity()) {
33275        composeQuantity("quantity", element.getQuantity());
33276      }
33277      if (element.hasParentDevice()) {
33278        composeReference("parentDevice", element.getParentDevice());
33279      }
33280      if (element.hasMaterial()) { 
33281        for (DeviceDefinition.DeviceDefinitionMaterialComponent e : element.getMaterial()) 
33282          composeDeviceDefinitionDeviceDefinitionMaterialComponent("material", e);
33283      }
33284  }
33285
33286  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
33287    if (element != null) {
33288      composeElementAttributes(element);
33289      xml.enter(FHIR_NS, name);
33290      composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentElements(element);
33291      composeElementClose(element);
33292      xml.exit(FHIR_NS, name);
33293    }
33294  }
33295
33296  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentElements(DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
33297      composeBackboneElementElements(element);
33298      if (element.hasDeviceIdentifierElement()) {
33299        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
33300      }
33301      if (element.hasIssuerElement()) {
33302        composeUri("issuer", element.getIssuerElement());
33303      }
33304      if (element.hasJurisdictionElement()) {
33305        composeUri("jurisdiction", element.getJurisdictionElement());
33306      }
33307  }
33308
33309  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponent(String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
33310    if (element != null) {
33311      composeElementAttributes(element);
33312      xml.enter(FHIR_NS, name);
33313      composeDeviceDefinitionDeviceDefinitionDeviceNameComponentElements(element);
33314      composeElementClose(element);
33315      xml.exit(FHIR_NS, name);
33316    }
33317  }
33318
33319  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponentElements(DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
33320      composeBackboneElementElements(element);
33321      if (element.hasNameElement()) {
33322        composeString("name", element.getNameElement());
33323      }
33324      if (element.hasTypeElement())
33325        composeEnumeration("type", element.getTypeElement(), new DeviceDefinition.DeviceNameTypeEnumFactory());
33326  }
33327
33328  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponent(String name, DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
33329    if (element != null) {
33330      composeElementAttributes(element);
33331      xml.enter(FHIR_NS, name);
33332      composeDeviceDefinitionDeviceDefinitionSpecializationComponentElements(element);
33333      composeElementClose(element);
33334      xml.exit(FHIR_NS, name);
33335    }
33336  }
33337
33338  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponentElements(DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
33339      composeBackboneElementElements(element);
33340      if (element.hasSystemTypeElement()) {
33341        composeString("systemType", element.getSystemTypeElement());
33342      }
33343      if (element.hasVersionElement()) {
33344        composeString("version", element.getVersionElement());
33345      }
33346  }
33347
33348  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponent(String name, DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
33349    if (element != null) {
33350      composeElementAttributes(element);
33351      xml.enter(FHIR_NS, name);
33352      composeDeviceDefinitionDeviceDefinitionCapabilityComponentElements(element);
33353      composeElementClose(element);
33354      xml.exit(FHIR_NS, name);
33355    }
33356  }
33357
33358  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponentElements(DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
33359      composeBackboneElementElements(element);
33360      if (element.hasType()) {
33361        composeCodeableConcept("type", element.getType());
33362      }
33363      if (element.hasDescription()) { 
33364        for (CodeableConcept e : element.getDescription()) 
33365          composeCodeableConcept("description", e);
33366      }
33367  }
33368
33369  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponent(String name, DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
33370    if (element != null) {
33371      composeElementAttributes(element);
33372      xml.enter(FHIR_NS, name);
33373      composeDeviceDefinitionDeviceDefinitionPropertyComponentElements(element);
33374      composeElementClose(element);
33375      xml.exit(FHIR_NS, name);
33376    }
33377  }
33378
33379  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponentElements(DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
33380      composeBackboneElementElements(element);
33381      if (element.hasType()) {
33382        composeCodeableConcept("type", element.getType());
33383      }
33384      if (element.hasValueQuantity()) { 
33385        for (Quantity e : element.getValueQuantity()) 
33386          composeQuantity("valueQuantity", e);
33387      }
33388      if (element.hasValueCode()) { 
33389        for (CodeableConcept e : element.getValueCode()) 
33390          composeCodeableConcept("valueCode", e);
33391      }
33392  }
33393
33394  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponent(String name, DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
33395    if (element != null) {
33396      composeElementAttributes(element);
33397      xml.enter(FHIR_NS, name);
33398      composeDeviceDefinitionDeviceDefinitionMaterialComponentElements(element);
33399      composeElementClose(element);
33400      xml.exit(FHIR_NS, name);
33401    }
33402  }
33403
33404  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponentElements(DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
33405      composeBackboneElementElements(element);
33406      if (element.hasSubstance()) {
33407        composeCodeableConcept("substance", element.getSubstance());
33408      }
33409      if (element.hasAlternateElement()) {
33410        composeBoolean("alternate", element.getAlternateElement());
33411      }
33412      if (element.hasAllergenicIndicatorElement()) {
33413        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
33414      }
33415  }
33416
33417  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
33418    if (element != null) {
33419      composeDomainResourceAttributes(element);
33420      xml.enter(FHIR_NS, name);
33421      composeDeviceMetricElements(element);
33422      composeElementClose(element);
33423      xml.exit(FHIR_NS, name);
33424    }
33425  }
33426
33427  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
33428      composeDomainResourceElements(element);
33429      if (element.hasIdentifier()) { 
33430        for (Identifier e : element.getIdentifier()) 
33431          composeIdentifier("identifier", e);
33432      }
33433      if (element.hasType()) {
33434        composeCodeableConcept("type", element.getType());
33435      }
33436      if (element.hasUnit()) {
33437        composeCodeableConcept("unit", element.getUnit());
33438      }
33439      if (element.hasSource()) {
33440        composeReference("source", element.getSource());
33441      }
33442      if (element.hasParent()) {
33443        composeReference("parent", element.getParent());
33444      }
33445      if (element.hasOperationalStatusElement())
33446        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
33447      if (element.hasColorElement())
33448        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
33449      if (element.hasCategoryElement())
33450        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
33451      if (element.hasMeasurementPeriod()) {
33452        composeTiming("measurementPeriod", element.getMeasurementPeriod());
33453      }
33454      if (element.hasCalibration()) { 
33455        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
33456          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
33457      }
33458  }
33459
33460  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
33461    if (element != null) {
33462      composeElementAttributes(element);
33463      xml.enter(FHIR_NS, name);
33464      composeDeviceMetricDeviceMetricCalibrationComponentElements(element);
33465      composeElementClose(element);
33466      xml.exit(FHIR_NS, name);
33467    }
33468  }
33469
33470  protected void composeDeviceMetricDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
33471      composeBackboneElementElements(element);
33472      if (element.hasTypeElement())
33473        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
33474      if (element.hasStateElement())
33475        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
33476      if (element.hasTimeElement()) {
33477        composeInstant("time", element.getTimeElement());
33478      }
33479  }
33480
33481  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
33482    if (element != null) {
33483      composeDomainResourceAttributes(element);
33484      xml.enter(FHIR_NS, name);
33485      composeDeviceRequestElements(element);
33486      composeElementClose(element);
33487      xml.exit(FHIR_NS, name);
33488    }
33489  }
33490
33491  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
33492      composeDomainResourceElements(element);
33493      if (element.hasIdentifier()) { 
33494        for (Identifier e : element.getIdentifier()) 
33495          composeIdentifier("identifier", e);
33496      }
33497      if (element.hasInstantiatesCanonical()) { 
33498        for (CanonicalType e : element.getInstantiatesCanonical()) 
33499          composeCanonical("instantiatesCanonical", e);
33500      }
33501      if (element.hasInstantiatesUri()) { 
33502        for (UriType e : element.getInstantiatesUri()) 
33503          composeUri("instantiatesUri", e);
33504      }
33505      if (element.hasBasedOn()) { 
33506        for (Reference e : element.getBasedOn()) 
33507          composeReference("basedOn", e);
33508      }
33509      if (element.hasPriorRequest()) { 
33510        for (Reference e : element.getPriorRequest()) 
33511          composeReference("priorRequest", e);
33512      }
33513      if (element.hasGroupIdentifier()) {
33514        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33515      }
33516      if (element.hasStatusElement())
33517        composeEnumeration("status", element.getStatusElement(), new DeviceRequest.DeviceRequestStatusEnumFactory());
33518      if (element.hasIntentElement())
33519        composeEnumeration("intent", element.getIntentElement(), new DeviceRequest.RequestIntentEnumFactory());
33520      if (element.hasPriorityElement())
33521        composeEnumeration("priority", element.getPriorityElement(), new DeviceRequest.RequestPriorityEnumFactory());
33522      if (element.hasCode()) {
33523        composeType("code", element.getCode());
33524      }      if (element.hasParameter()) { 
33525        for (DeviceRequest.DeviceRequestParameterComponent e : element.getParameter()) 
33526          composeDeviceRequestDeviceRequestParameterComponent("parameter", e);
33527      }
33528      if (element.hasSubject()) {
33529        composeReference("subject", element.getSubject());
33530      }
33531      if (element.hasEncounter()) {
33532        composeReference("encounter", element.getEncounter());
33533      }
33534      if (element.hasOccurrence()) {
33535        composeType("occurrence", element.getOccurrence());
33536      }      if (element.hasAuthoredOnElement()) {
33537        composeDateTime("authoredOn", element.getAuthoredOnElement());
33538      }
33539      if (element.hasRequester()) {
33540        composeReference("requester", element.getRequester());
33541      }
33542      if (element.hasPerformerType()) {
33543        composeCodeableConcept("performerType", element.getPerformerType());
33544      }
33545      if (element.hasPerformer()) {
33546        composeReference("performer", element.getPerformer());
33547      }
33548      if (element.hasReasonCode()) { 
33549        for (CodeableConcept e : element.getReasonCode()) 
33550          composeCodeableConcept("reasonCode", e);
33551      }
33552      if (element.hasReasonReference()) { 
33553        for (Reference e : element.getReasonReference()) 
33554          composeReference("reasonReference", e);
33555      }
33556      if (element.hasInsurance()) { 
33557        for (Reference e : element.getInsurance()) 
33558          composeReference("insurance", e);
33559      }
33560      if (element.hasSupportingInfo()) { 
33561        for (Reference e : element.getSupportingInfo()) 
33562          composeReference("supportingInfo", e);
33563      }
33564      if (element.hasNote()) { 
33565        for (Annotation e : element.getNote()) 
33566          composeAnnotation("note", e);
33567      }
33568      if (element.hasRelevantHistory()) { 
33569        for (Reference e : element.getRelevantHistory()) 
33570          composeReference("relevantHistory", e);
33571      }
33572  }
33573
33574  protected void composeDeviceRequestDeviceRequestParameterComponent(String name, DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
33575    if (element != null) {
33576      composeElementAttributes(element);
33577      xml.enter(FHIR_NS, name);
33578      composeDeviceRequestDeviceRequestParameterComponentElements(element);
33579      composeElementClose(element);
33580      xml.exit(FHIR_NS, name);
33581    }
33582  }
33583
33584  protected void composeDeviceRequestDeviceRequestParameterComponentElements(DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
33585      composeBackboneElementElements(element);
33586      if (element.hasCode()) {
33587        composeCodeableConcept("code", element.getCode());
33588      }
33589      if (element.hasValue()) {
33590        composeType("value", element.getValue());
33591      }  }
33592
33593  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
33594    if (element != null) {
33595      composeDomainResourceAttributes(element);
33596      xml.enter(FHIR_NS, name);
33597      composeDeviceUseStatementElements(element);
33598      composeElementClose(element);
33599      xml.exit(FHIR_NS, name);
33600    }
33601  }
33602
33603  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
33604      composeDomainResourceElements(element);
33605      if (element.hasIdentifier()) { 
33606        for (Identifier e : element.getIdentifier()) 
33607          composeIdentifier("identifier", e);
33608      }
33609      if (element.hasBasedOn()) { 
33610        for (Reference e : element.getBasedOn()) 
33611          composeReference("basedOn", e);
33612      }
33613      if (element.hasStatusElement())
33614        composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
33615      if (element.hasSubject()) {
33616        composeReference("subject", element.getSubject());
33617      }
33618      if (element.hasDerivedFrom()) { 
33619        for (Reference e : element.getDerivedFrom()) 
33620          composeReference("derivedFrom", e);
33621      }
33622      if (element.hasTiming()) {
33623        composeType("timing", element.getTiming());
33624      }      if (element.hasRecordedOnElement()) {
33625        composeDateTime("recordedOn", element.getRecordedOnElement());
33626      }
33627      if (element.hasSource()) {
33628        composeReference("source", element.getSource());
33629      }
33630      if (element.hasDevice()) {
33631        composeReference("device", element.getDevice());
33632      }
33633      if (element.hasReasonCode()) { 
33634        for (CodeableConcept e : element.getReasonCode()) 
33635          composeCodeableConcept("reasonCode", e);
33636      }
33637      if (element.hasReasonReference()) { 
33638        for (Reference e : element.getReasonReference()) 
33639          composeReference("reasonReference", e);
33640      }
33641      if (element.hasBodySite()) {
33642        composeCodeableConcept("bodySite", element.getBodySite());
33643      }
33644      if (element.hasNote()) { 
33645        for (Annotation e : element.getNote()) 
33646          composeAnnotation("note", e);
33647      }
33648  }
33649
33650  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
33651    if (element != null) {
33652      composeDomainResourceAttributes(element);
33653      xml.enter(FHIR_NS, name);
33654      composeDiagnosticReportElements(element);
33655      composeElementClose(element);
33656      xml.exit(FHIR_NS, name);
33657    }
33658  }
33659
33660  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
33661      composeDomainResourceElements(element);
33662      if (element.hasIdentifier()) { 
33663        for (Identifier e : element.getIdentifier()) 
33664          composeIdentifier("identifier", e);
33665      }
33666      if (element.hasBasedOn()) { 
33667        for (Reference e : element.getBasedOn()) 
33668          composeReference("basedOn", e);
33669      }
33670      if (element.hasStatusElement())
33671        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
33672      if (element.hasCategory()) { 
33673        for (CodeableConcept e : element.getCategory()) 
33674          composeCodeableConcept("category", e);
33675      }
33676      if (element.hasCode()) {
33677        composeCodeableConcept("code", element.getCode());
33678      }
33679      if (element.hasSubject()) {
33680        composeReference("subject", element.getSubject());
33681      }
33682      if (element.hasEncounter()) {
33683        composeReference("encounter", element.getEncounter());
33684      }
33685      if (element.hasEffective()) {
33686        composeType("effective", element.getEffective());
33687      }      if (element.hasIssuedElement()) {
33688        composeInstant("issued", element.getIssuedElement());
33689      }
33690      if (element.hasPerformer()) { 
33691        for (Reference e : element.getPerformer()) 
33692          composeReference("performer", e);
33693      }
33694      if (element.hasResultsInterpreter()) { 
33695        for (Reference e : element.getResultsInterpreter()) 
33696          composeReference("resultsInterpreter", e);
33697      }
33698      if (element.hasSpecimen()) { 
33699        for (Reference e : element.getSpecimen()) 
33700          composeReference("specimen", e);
33701      }
33702      if (element.hasResult()) { 
33703        for (Reference e : element.getResult()) 
33704          composeReference("result", e);
33705      }
33706      if (element.hasImagingStudy()) { 
33707        for (Reference e : element.getImagingStudy()) 
33708          composeReference("imagingStudy", e);
33709      }
33710      if (element.hasMedia()) { 
33711        for (DiagnosticReport.DiagnosticReportMediaComponent e : element.getMedia()) 
33712          composeDiagnosticReportDiagnosticReportMediaComponent("media", e);
33713      }
33714      if (element.hasConclusionElement()) {
33715        composeString("conclusion", element.getConclusionElement());
33716      }
33717      if (element.hasConclusionCode()) { 
33718        for (CodeableConcept e : element.getConclusionCode()) 
33719          composeCodeableConcept("conclusionCode", e);
33720      }
33721      if (element.hasPresentedForm()) { 
33722        for (Attachment e : element.getPresentedForm()) 
33723          composeAttachment("presentedForm", e);
33724      }
33725  }
33726
33727  protected void composeDiagnosticReportDiagnosticReportMediaComponent(String name, DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
33728    if (element != null) {
33729      composeElementAttributes(element);
33730      xml.enter(FHIR_NS, name);
33731      composeDiagnosticReportDiagnosticReportMediaComponentElements(element);
33732      composeElementClose(element);
33733      xml.exit(FHIR_NS, name);
33734    }
33735  }
33736
33737  protected void composeDiagnosticReportDiagnosticReportMediaComponentElements(DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
33738      composeBackboneElementElements(element);
33739      if (element.hasCommentElement()) {
33740        composeString("comment", element.getCommentElement());
33741      }
33742      if (element.hasLink()) {
33743        composeReference("link", element.getLink());
33744      }
33745  }
33746
33747  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
33748    if (element != null) {
33749      composeDomainResourceAttributes(element);
33750      xml.enter(FHIR_NS, name);
33751      composeDocumentManifestElements(element);
33752      composeElementClose(element);
33753      xml.exit(FHIR_NS, name);
33754    }
33755  }
33756
33757  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
33758      composeDomainResourceElements(element);
33759      if (element.hasMasterIdentifier()) {
33760        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
33761      }
33762      if (element.hasIdentifier()) { 
33763        for (Identifier e : element.getIdentifier()) 
33764          composeIdentifier("identifier", e);
33765      }
33766      if (element.hasStatusElement())
33767        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
33768      if (element.hasType()) {
33769        composeCodeableConcept("type", element.getType());
33770      }
33771      if (element.hasSubject()) {
33772        composeReference("subject", element.getSubject());
33773      }
33774      if (element.hasCreatedElement()) {
33775        composeDateTime("created", element.getCreatedElement());
33776      }
33777      if (element.hasAuthor()) { 
33778        for (Reference e : element.getAuthor()) 
33779          composeReference("author", e);
33780      }
33781      if (element.hasRecipient()) { 
33782        for (Reference e : element.getRecipient()) 
33783          composeReference("recipient", e);
33784      }
33785      if (element.hasSourceElement()) {
33786        composeUri("source", element.getSourceElement());
33787      }
33788      if (element.hasDescriptionElement()) {
33789        composeString("description", element.getDescriptionElement());
33790      }
33791      if (element.hasContent()) { 
33792        for (Reference e : element.getContent()) 
33793          composeReference("content", e);
33794      }
33795      if (element.hasRelated()) { 
33796        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
33797          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
33798      }
33799  }
33800
33801  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
33802    if (element != null) {
33803      composeElementAttributes(element);
33804      xml.enter(FHIR_NS, name);
33805      composeDocumentManifestDocumentManifestRelatedComponentElements(element);
33806      composeElementClose(element);
33807      xml.exit(FHIR_NS, name);
33808    }
33809  }
33810
33811  protected void composeDocumentManifestDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
33812      composeBackboneElementElements(element);
33813      if (element.hasIdentifier()) {
33814        composeIdentifier("identifier", element.getIdentifier());
33815      }
33816      if (element.hasRef()) {
33817        composeReference("ref", element.getRef());
33818      }
33819  }
33820
33821  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
33822    if (element != null) {
33823      composeDomainResourceAttributes(element);
33824      xml.enter(FHIR_NS, name);
33825      composeDocumentReferenceElements(element);
33826      composeElementClose(element);
33827      xml.exit(FHIR_NS, name);
33828    }
33829  }
33830
33831  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
33832      composeDomainResourceElements(element);
33833      if (element.hasMasterIdentifier()) {
33834        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
33835      }
33836      if (element.hasIdentifier()) { 
33837        for (Identifier e : element.getIdentifier()) 
33838          composeIdentifier("identifier", e);
33839      }
33840      if (element.hasStatusElement())
33841        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
33842      if (element.hasDocStatusElement())
33843        composeEnumeration("docStatus", element.getDocStatusElement(), new DocumentReference.ReferredDocumentStatusEnumFactory());
33844      if (element.hasType()) {
33845        composeCodeableConcept("type", element.getType());
33846      }
33847      if (element.hasCategory()) { 
33848        for (CodeableConcept e : element.getCategory()) 
33849          composeCodeableConcept("category", e);
33850      }
33851      if (element.hasSubject()) {
33852        composeReference("subject", element.getSubject());
33853      }
33854      if (element.hasDateElement()) {
33855        composeInstant("date", element.getDateElement());
33856      }
33857      if (element.hasAuthor()) { 
33858        for (Reference e : element.getAuthor()) 
33859          composeReference("author", e);
33860      }
33861      if (element.hasAuthenticator()) {
33862        composeReference("authenticator", element.getAuthenticator());
33863      }
33864      if (element.hasCustodian()) {
33865        composeReference("custodian", element.getCustodian());
33866      }
33867      if (element.hasRelatesTo()) { 
33868        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
33869          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
33870      }
33871      if (element.hasDescriptionElement()) {
33872        composeString("description", element.getDescriptionElement());
33873      }
33874      if (element.hasSecurityLabel()) { 
33875        for (CodeableConcept e : element.getSecurityLabel()) 
33876          composeCodeableConcept("securityLabel", e);
33877      }
33878      if (element.hasContent()) { 
33879        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
33880          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
33881      }
33882      if (element.hasContext()) {
33883        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
33884      }
33885  }
33886
33887  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
33888    if (element != null) {
33889      composeElementAttributes(element);
33890      xml.enter(FHIR_NS, name);
33891      composeDocumentReferenceDocumentReferenceRelatesToComponentElements(element);
33892      composeElementClose(element);
33893      xml.exit(FHIR_NS, name);
33894    }
33895  }
33896
33897  protected void composeDocumentReferenceDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
33898      composeBackboneElementElements(element);
33899      if (element.hasCodeElement())
33900        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
33901      if (element.hasTarget()) {
33902        composeReference("target", element.getTarget());
33903      }
33904  }
33905
33906  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
33907    if (element != null) {
33908      composeElementAttributes(element);
33909      xml.enter(FHIR_NS, name);
33910      composeDocumentReferenceDocumentReferenceContentComponentElements(element);
33911      composeElementClose(element);
33912      xml.exit(FHIR_NS, name);
33913    }
33914  }
33915
33916  protected void composeDocumentReferenceDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
33917      composeBackboneElementElements(element);
33918      if (element.hasAttachment()) {
33919        composeAttachment("attachment", element.getAttachment());
33920      }
33921      if (element.hasFormat()) {
33922        composeCoding("format", element.getFormat());
33923      }
33924  }
33925
33926  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
33927    if (element != null) {
33928      composeElementAttributes(element);
33929      xml.enter(FHIR_NS, name);
33930      composeDocumentReferenceDocumentReferenceContextComponentElements(element);
33931      composeElementClose(element);
33932      xml.exit(FHIR_NS, name);
33933    }
33934  }
33935
33936  protected void composeDocumentReferenceDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
33937      composeBackboneElementElements(element);
33938      if (element.hasEncounter()) { 
33939        for (Reference e : element.getEncounter()) 
33940          composeReference("encounter", e);
33941      }
33942      if (element.hasEvent()) { 
33943        for (CodeableConcept e : element.getEvent()) 
33944          composeCodeableConcept("event", e);
33945      }
33946      if (element.hasPeriod()) {
33947        composePeriod("period", element.getPeriod());
33948      }
33949      if (element.hasFacilityType()) {
33950        composeCodeableConcept("facilityType", element.getFacilityType());
33951      }
33952      if (element.hasPracticeSetting()) {
33953        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
33954      }
33955      if (element.hasSourcePatientInfo()) {
33956        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
33957      }
33958      if (element.hasRelated()) { 
33959        for (Reference e : element.getRelated()) 
33960          composeReference("related", e);
33961      }
33962  }
33963
33964  protected void composeEffectEvidenceSynthesis(String name, EffectEvidenceSynthesis element) throws IOException {
33965    if (element != null) {
33966      composeDomainResourceAttributes(element);
33967      xml.enter(FHIR_NS, name);
33968      composeEffectEvidenceSynthesisElements(element);
33969      composeElementClose(element);
33970      xml.exit(FHIR_NS, name);
33971    }
33972  }
33973
33974  protected void composeEffectEvidenceSynthesisElements(EffectEvidenceSynthesis element) throws IOException {
33975      composeDomainResourceElements(element);
33976      if (element.hasUrlElement()) {
33977        composeUri("url", element.getUrlElement());
33978      }
33979      if (element.hasIdentifier()) { 
33980        for (Identifier e : element.getIdentifier()) 
33981          composeIdentifier("identifier", e);
33982      }
33983      if (element.hasVersionElement()) {
33984        composeString("version", element.getVersionElement());
33985      }
33986      if (element.hasNameElement()) {
33987        composeString("name", element.getNameElement());
33988      }
33989      if (element.hasTitleElement()) {
33990        composeString("title", element.getTitleElement());
33991      }
33992      if (element.hasStatusElement())
33993        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33994      if (element.hasDateElement()) {
33995        composeDateTime("date", element.getDateElement());
33996      }
33997      if (element.hasPublisherElement()) {
33998        composeString("publisher", element.getPublisherElement());
33999      }
34000      if (element.hasContact()) { 
34001        for (ContactDetail e : element.getContact()) 
34002          composeContactDetail("contact", e);
34003      }
34004      if (element.hasDescriptionElement()) {
34005        composeMarkdown("description", element.getDescriptionElement());
34006      }
34007      if (element.hasNote()) { 
34008        for (Annotation e : element.getNote()) 
34009          composeAnnotation("note", e);
34010      }
34011      if (element.hasUseContext()) { 
34012        for (UsageContext e : element.getUseContext()) 
34013          composeUsageContext("useContext", e);
34014      }
34015      if (element.hasJurisdiction()) { 
34016        for (CodeableConcept e : element.getJurisdiction()) 
34017          composeCodeableConcept("jurisdiction", e);
34018      }
34019      if (element.hasCopyrightElement()) {
34020        composeMarkdown("copyright", element.getCopyrightElement());
34021      }
34022      if (element.hasApprovalDateElement()) {
34023        composeDate("approvalDate", element.getApprovalDateElement());
34024      }
34025      if (element.hasLastReviewDateElement()) {
34026        composeDate("lastReviewDate", element.getLastReviewDateElement());
34027      }
34028      if (element.hasEffectivePeriod()) {
34029        composePeriod("effectivePeriod", element.getEffectivePeriod());
34030      }
34031      if (element.hasTopic()) { 
34032        for (CodeableConcept e : element.getTopic()) 
34033          composeCodeableConcept("topic", e);
34034      }
34035      if (element.hasAuthor()) { 
34036        for (ContactDetail e : element.getAuthor()) 
34037          composeContactDetail("author", e);
34038      }
34039      if (element.hasEditor()) { 
34040        for (ContactDetail e : element.getEditor()) 
34041          composeContactDetail("editor", e);
34042      }
34043      if (element.hasReviewer()) { 
34044        for (ContactDetail e : element.getReviewer()) 
34045          composeContactDetail("reviewer", e);
34046      }
34047      if (element.hasEndorser()) { 
34048        for (ContactDetail e : element.getEndorser()) 
34049          composeContactDetail("endorser", e);
34050      }
34051      if (element.hasRelatedArtifact()) { 
34052        for (RelatedArtifact e : element.getRelatedArtifact()) 
34053          composeRelatedArtifact("relatedArtifact", e);
34054      }
34055      if (element.hasSynthesisType()) {
34056        composeCodeableConcept("synthesisType", element.getSynthesisType());
34057      }
34058      if (element.hasStudyType()) {
34059        composeCodeableConcept("studyType", element.getStudyType());
34060      }
34061      if (element.hasPopulation()) {
34062        composeReference("population", element.getPopulation());
34063      }
34064      if (element.hasExposure()) {
34065        composeReference("exposure", element.getExposure());
34066      }
34067      if (element.hasExposureAlternative()) {
34068        composeReference("exposureAlternative", element.getExposureAlternative());
34069      }
34070      if (element.hasOutcome()) {
34071        composeReference("outcome", element.getOutcome());
34072      }
34073      if (element.hasSampleSize()) {
34074        composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent("sampleSize", element.getSampleSize());
34075      }
34076      if (element.hasResultsByExposure()) { 
34077        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent e : element.getResultsByExposure()) 
34078          composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent("resultsByExposure", e);
34079      }
34080      if (element.hasEffectEstimate()) { 
34081        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent e : element.getEffectEstimate()) 
34082          composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent("effectEstimate", e);
34083      }
34084      if (element.hasCertainty()) { 
34085        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent e : element.getCertainty()) 
34086          composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent("certainty", e);
34087      }
34088  }
34089
34090  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent element) throws IOException {
34091    if (element != null) {
34092      composeElementAttributes(element);
34093      xml.enter(FHIR_NS, name);
34094      composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentElements(element);
34095      composeElementClose(element);
34096      xml.exit(FHIR_NS, name);
34097    }
34098  }
34099
34100  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent element) throws IOException {
34101      composeBackboneElementElements(element);
34102      if (element.hasDescriptionElement()) {
34103        composeString("description", element.getDescriptionElement());
34104      }
34105      if (element.hasNumberOfStudiesElement()) {
34106        composeInteger("numberOfStudies", element.getNumberOfStudiesElement());
34107      }
34108      if (element.hasNumberOfParticipantsElement()) {
34109        composeInteger("numberOfParticipants", element.getNumberOfParticipantsElement());
34110      }
34111  }
34112
34113  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent element) throws IOException {
34114    if (element != null) {
34115      composeElementAttributes(element);
34116      xml.enter(FHIR_NS, name);
34117      composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentElements(element);
34118      composeElementClose(element);
34119      xml.exit(FHIR_NS, name);
34120    }
34121  }
34122
34123  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent element) throws IOException {
34124      composeBackboneElementElements(element);
34125      if (element.hasDescriptionElement()) {
34126        composeString("description", element.getDescriptionElement());
34127      }
34128      if (element.hasExposureStateElement())
34129        composeEnumeration("exposureState", element.getExposureStateElement(), new EffectEvidenceSynthesis.ExposureStateEnumFactory());
34130      if (element.hasVariantState()) {
34131        composeCodeableConcept("variantState", element.getVariantState());
34132      }
34133      if (element.hasRiskEvidenceSynthesis()) {
34134        composeReference("riskEvidenceSynthesis", element.getRiskEvidenceSynthesis());
34135      }
34136  }
34137
34138  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent element) throws IOException {
34139    if (element != null) {
34140      composeElementAttributes(element);
34141      xml.enter(FHIR_NS, name);
34142      composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentElements(element);
34143      composeElementClose(element);
34144      xml.exit(FHIR_NS, name);
34145    }
34146  }
34147
34148  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent element) throws IOException {
34149      composeBackboneElementElements(element);
34150      if (element.hasDescriptionElement()) {
34151        composeString("description", element.getDescriptionElement());
34152      }
34153      if (element.hasType()) {
34154        composeCodeableConcept("type", element.getType());
34155      }
34156      if (element.hasVariantState()) {
34157        composeCodeableConcept("variantState", element.getVariantState());
34158      }
34159      if (element.hasValueElement()) {
34160        composeDecimal("value", element.getValueElement());
34161      }
34162      if (element.hasUnitOfMeasure()) {
34163        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
34164      }
34165      if (element.hasPrecisionEstimate()) { 
34166        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent e : element.getPrecisionEstimate()) 
34167          composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent("precisionEstimate", e);
34168      }
34169  }
34170
34171  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent element) throws IOException {
34172    if (element != null) {
34173      composeElementAttributes(element);
34174      xml.enter(FHIR_NS, name);
34175      composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentElements(element);
34176      composeElementClose(element);
34177      xml.exit(FHIR_NS, name);
34178    }
34179  }
34180
34181  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent element) throws IOException {
34182      composeBackboneElementElements(element);
34183      if (element.hasType()) {
34184        composeCodeableConcept("type", element.getType());
34185      }
34186      if (element.hasLevelElement()) {
34187        composeDecimal("level", element.getLevelElement());
34188      }
34189      if (element.hasFromElement()) {
34190        composeDecimal("from", element.getFromElement());
34191      }
34192      if (element.hasToElement()) {
34193        composeDecimal("to", element.getToElement());
34194      }
34195  }
34196
34197  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent element) throws IOException {
34198    if (element != null) {
34199      composeElementAttributes(element);
34200      xml.enter(FHIR_NS, name);
34201      composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentElements(element);
34202      composeElementClose(element);
34203      xml.exit(FHIR_NS, name);
34204    }
34205  }
34206
34207  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent element) throws IOException {
34208      composeBackboneElementElements(element);
34209      if (element.hasRating()) { 
34210        for (CodeableConcept e : element.getRating()) 
34211          composeCodeableConcept("rating", e);
34212      }
34213      if (element.hasNote()) { 
34214        for (Annotation e : element.getNote()) 
34215          composeAnnotation("note", e);
34216      }
34217      if (element.hasCertaintySubcomponent()) { 
34218        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent e : element.getCertaintySubcomponent()) 
34219          composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent("certaintySubcomponent", e);
34220      }
34221  }
34222
34223  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
34224    if (element != null) {
34225      composeElementAttributes(element);
34226      xml.enter(FHIR_NS, name);
34227      composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(element);
34228      composeElementClose(element);
34229      xml.exit(FHIR_NS, name);
34230    }
34231  }
34232
34233  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
34234      composeBackboneElementElements(element);
34235      if (element.hasType()) {
34236        composeCodeableConcept("type", element.getType());
34237      }
34238      if (element.hasRating()) { 
34239        for (CodeableConcept e : element.getRating()) 
34240          composeCodeableConcept("rating", e);
34241      }
34242      if (element.hasNote()) { 
34243        for (Annotation e : element.getNote()) 
34244          composeAnnotation("note", e);
34245      }
34246  }
34247
34248  protected void composeEncounter(String name, Encounter element) throws IOException {
34249    if (element != null) {
34250      composeDomainResourceAttributes(element);
34251      xml.enter(FHIR_NS, name);
34252      composeEncounterElements(element);
34253      composeElementClose(element);
34254      xml.exit(FHIR_NS, name);
34255    }
34256  }
34257
34258  protected void composeEncounterElements(Encounter element) throws IOException {
34259      composeDomainResourceElements(element);
34260      if (element.hasIdentifier()) { 
34261        for (Identifier e : element.getIdentifier()) 
34262          composeIdentifier("identifier", e);
34263      }
34264      if (element.hasStatusElement())
34265        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
34266      if (element.hasStatusHistory()) { 
34267        for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
34268          composeEncounterStatusHistoryComponent("statusHistory", e);
34269      }
34270      if (element.hasClass_()) {
34271        composeCoding("class", element.getClass_());
34272      }
34273      if (element.hasClassHistory()) { 
34274        for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
34275          composeEncounterClassHistoryComponent("classHistory", e);
34276      }
34277      if (element.hasType()) { 
34278        for (CodeableConcept e : element.getType()) 
34279          composeCodeableConcept("type", e);
34280      }
34281      if (element.hasServiceType()) {
34282        composeCodeableConcept("serviceType", element.getServiceType());
34283      }
34284      if (element.hasPriority()) {
34285        composeCodeableConcept("priority", element.getPriority());
34286      }
34287      if (element.hasSubject()) {
34288        composeReference("subject", element.getSubject());
34289      }
34290      if (element.hasEpisodeOfCare()) { 
34291        for (Reference e : element.getEpisodeOfCare()) 
34292          composeReference("episodeOfCare", e);
34293      }
34294      if (element.hasBasedOn()) { 
34295        for (Reference e : element.getBasedOn()) 
34296          composeReference("basedOn", e);
34297      }
34298      if (element.hasParticipant()) { 
34299        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
34300          composeEncounterEncounterParticipantComponent("participant", e);
34301      }
34302      if (element.hasAppointment()) { 
34303        for (Reference e : element.getAppointment()) 
34304          composeReference("appointment", e);
34305      }
34306      if (element.hasPeriod()) {
34307        composePeriod("period", element.getPeriod());
34308      }
34309      if (element.hasLength()) {
34310        composeDuration("length", element.getLength());
34311      }
34312      if (element.hasReasonCode()) { 
34313        for (CodeableConcept e : element.getReasonCode()) 
34314          composeCodeableConcept("reasonCode", e);
34315      }
34316      if (element.hasReasonReference()) { 
34317        for (Reference e : element.getReasonReference()) 
34318          composeReference("reasonReference", e);
34319      }
34320      if (element.hasDiagnosis()) { 
34321        for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
34322          composeEncounterDiagnosisComponent("diagnosis", e);
34323      }
34324      if (element.hasAccount()) { 
34325        for (Reference e : element.getAccount()) 
34326          composeReference("account", e);
34327      }
34328      if (element.hasHospitalization()) {
34329        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
34330      }
34331      if (element.hasLocation()) { 
34332        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
34333          composeEncounterEncounterLocationComponent("location", e);
34334      }
34335      if (element.hasServiceProvider()) {
34336        composeReference("serviceProvider", element.getServiceProvider());
34337      }
34338      if (element.hasPartOf()) {
34339        composeReference("partOf", element.getPartOf());
34340      }
34341  }
34342
34343  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
34344    if (element != null) {
34345      composeElementAttributes(element);
34346      xml.enter(FHIR_NS, name);
34347      composeEncounterStatusHistoryComponentElements(element);
34348      composeElementClose(element);
34349      xml.exit(FHIR_NS, name);
34350    }
34351  }
34352
34353  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
34354      composeBackboneElementElements(element);
34355      if (element.hasStatusElement())
34356        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
34357      if (element.hasPeriod()) {
34358        composePeriod("period", element.getPeriod());
34359      }
34360  }
34361
34362  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
34363    if (element != null) {
34364      composeElementAttributes(element);
34365      xml.enter(FHIR_NS, name);
34366      composeEncounterClassHistoryComponentElements(element);
34367      composeElementClose(element);
34368      xml.exit(FHIR_NS, name);
34369    }
34370  }
34371
34372  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
34373      composeBackboneElementElements(element);
34374      if (element.hasClass_()) {
34375        composeCoding("class", element.getClass_());
34376      }
34377      if (element.hasPeriod()) {
34378        composePeriod("period", element.getPeriod());
34379      }
34380  }
34381
34382  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
34383    if (element != null) {
34384      composeElementAttributes(element);
34385      xml.enter(FHIR_NS, name);
34386      composeEncounterEncounterParticipantComponentElements(element);
34387      composeElementClose(element);
34388      xml.exit(FHIR_NS, name);
34389    }
34390  }
34391
34392  protected void composeEncounterEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
34393      composeBackboneElementElements(element);
34394      if (element.hasType()) { 
34395        for (CodeableConcept e : element.getType()) 
34396          composeCodeableConcept("type", e);
34397      }
34398      if (element.hasPeriod()) {
34399        composePeriod("period", element.getPeriod());
34400      }
34401      if (element.hasIndividual()) {
34402        composeReference("individual", element.getIndividual());
34403      }
34404  }
34405
34406  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
34407    if (element != null) {
34408      composeElementAttributes(element);
34409      xml.enter(FHIR_NS, name);
34410      composeEncounterDiagnosisComponentElements(element);
34411      composeElementClose(element);
34412      xml.exit(FHIR_NS, name);
34413    }
34414  }
34415
34416  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
34417      composeBackboneElementElements(element);
34418      if (element.hasCondition()) {
34419        composeReference("condition", element.getCondition());
34420      }
34421      if (element.hasUse()) {
34422        composeCodeableConcept("use", element.getUse());
34423      }
34424      if (element.hasRankElement()) {
34425        composePositiveInt("rank", element.getRankElement());
34426      }
34427  }
34428
34429  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
34430    if (element != null) {
34431      composeElementAttributes(element);
34432      xml.enter(FHIR_NS, name);
34433      composeEncounterEncounterHospitalizationComponentElements(element);
34434      composeElementClose(element);
34435      xml.exit(FHIR_NS, name);
34436    }
34437  }
34438
34439  protected void composeEncounterEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
34440      composeBackboneElementElements(element);
34441      if (element.hasPreAdmissionIdentifier()) {
34442        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
34443      }
34444      if (element.hasOrigin()) {
34445        composeReference("origin", element.getOrigin());
34446      }
34447      if (element.hasAdmitSource()) {
34448        composeCodeableConcept("admitSource", element.getAdmitSource());
34449      }
34450      if (element.hasReAdmission()) {
34451        composeCodeableConcept("reAdmission", element.getReAdmission());
34452      }
34453      if (element.hasDietPreference()) { 
34454        for (CodeableConcept e : element.getDietPreference()) 
34455          composeCodeableConcept("dietPreference", e);
34456      }
34457      if (element.hasSpecialCourtesy()) { 
34458        for (CodeableConcept e : element.getSpecialCourtesy()) 
34459          composeCodeableConcept("specialCourtesy", e);
34460      }
34461      if (element.hasSpecialArrangement()) { 
34462        for (CodeableConcept e : element.getSpecialArrangement()) 
34463          composeCodeableConcept("specialArrangement", e);
34464      }
34465      if (element.hasDestination()) {
34466        composeReference("destination", element.getDestination());
34467      }
34468      if (element.hasDischargeDisposition()) {
34469        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
34470      }
34471  }
34472
34473  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
34474    if (element != null) {
34475      composeElementAttributes(element);
34476      xml.enter(FHIR_NS, name);
34477      composeEncounterEncounterLocationComponentElements(element);
34478      composeElementClose(element);
34479      xml.exit(FHIR_NS, name);
34480    }
34481  }
34482
34483  protected void composeEncounterEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
34484      composeBackboneElementElements(element);
34485      if (element.hasLocation()) {
34486        composeReference("location", element.getLocation());
34487      }
34488      if (element.hasStatusElement())
34489        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
34490      if (element.hasPhysicalType()) {
34491        composeCodeableConcept("physicalType", element.getPhysicalType());
34492      }
34493      if (element.hasPeriod()) {
34494        composePeriod("period", element.getPeriod());
34495      }
34496  }
34497
34498  protected void composeEndpoint(String name, Endpoint element) throws IOException {
34499    if (element != null) {
34500      composeDomainResourceAttributes(element);
34501      xml.enter(FHIR_NS, name);
34502      composeEndpointElements(element);
34503      composeElementClose(element);
34504      xml.exit(FHIR_NS, name);
34505    }
34506  }
34507
34508  protected void composeEndpointElements(Endpoint element) throws IOException {
34509      composeDomainResourceElements(element);
34510      if (element.hasIdentifier()) { 
34511        for (Identifier e : element.getIdentifier()) 
34512          composeIdentifier("identifier", e);
34513      }
34514      if (element.hasStatusElement())
34515        composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
34516      if (element.hasConnectionType()) {
34517        composeCoding("connectionType", element.getConnectionType());
34518      }
34519      if (element.hasNameElement()) {
34520        composeString("name", element.getNameElement());
34521      }
34522      if (element.hasManagingOrganization()) {
34523        composeReference("managingOrganization", element.getManagingOrganization());
34524      }
34525      if (element.hasContact()) { 
34526        for (ContactPoint e : element.getContact()) 
34527          composeContactPoint("contact", e);
34528      }
34529      if (element.hasPeriod()) {
34530        composePeriod("period", element.getPeriod());
34531      }
34532      if (element.hasPayloadType()) { 
34533        for (CodeableConcept e : element.getPayloadType()) 
34534          composeCodeableConcept("payloadType", e);
34535      }
34536      if (element.hasPayloadMimeType()) { 
34537        for (CodeType e : element.getPayloadMimeType()) 
34538          composeCode("payloadMimeType", e);
34539      }
34540      if (element.hasAddressElement()) {
34541        composeUrl("address", element.getAddressElement());
34542      }
34543      if (element.hasHeader()) { 
34544        for (StringType e : element.getHeader()) 
34545          composeString("header", e);
34546      }
34547  }
34548
34549  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
34550    if (element != null) {
34551      composeDomainResourceAttributes(element);
34552      xml.enter(FHIR_NS, name);
34553      composeEnrollmentRequestElements(element);
34554      composeElementClose(element);
34555      xml.exit(FHIR_NS, name);
34556    }
34557  }
34558
34559  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
34560      composeDomainResourceElements(element);
34561      if (element.hasIdentifier()) { 
34562        for (Identifier e : element.getIdentifier()) 
34563          composeIdentifier("identifier", e);
34564      }
34565      if (element.hasStatusElement())
34566        composeEnumeration("status", element.getStatusElement(), new EnrollmentRequest.EnrollmentRequestStatusEnumFactory());
34567      if (element.hasCreatedElement()) {
34568        composeDateTime("created", element.getCreatedElement());
34569      }
34570      if (element.hasInsurer()) {
34571        composeReference("insurer", element.getInsurer());
34572      }
34573      if (element.hasProvider()) {
34574        composeReference("provider", element.getProvider());
34575      }
34576      if (element.hasCandidate()) {
34577        composeReference("candidate", element.getCandidate());
34578      }
34579      if (element.hasCoverage()) {
34580        composeReference("coverage", element.getCoverage());
34581      }
34582  }
34583
34584  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
34585    if (element != null) {
34586      composeDomainResourceAttributes(element);
34587      xml.enter(FHIR_NS, name);
34588      composeEnrollmentResponseElements(element);
34589      composeElementClose(element);
34590      xml.exit(FHIR_NS, name);
34591    }
34592  }
34593
34594  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
34595      composeDomainResourceElements(element);
34596      if (element.hasIdentifier()) { 
34597        for (Identifier e : element.getIdentifier()) 
34598          composeIdentifier("identifier", e);
34599      }
34600      if (element.hasStatusElement())
34601        composeEnumeration("status", element.getStatusElement(), new EnrollmentResponse.EnrollmentResponseStatusEnumFactory());
34602      if (element.hasRequest()) {
34603        composeReference("request", element.getRequest());
34604      }
34605      if (element.hasOutcomeElement())
34606        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
34607      if (element.hasDispositionElement()) {
34608        composeString("disposition", element.getDispositionElement());
34609      }
34610      if (element.hasCreatedElement()) {
34611        composeDateTime("created", element.getCreatedElement());
34612      }
34613      if (element.hasOrganization()) {
34614        composeReference("organization", element.getOrganization());
34615      }
34616      if (element.hasRequestProvider()) {
34617        composeReference("requestProvider", element.getRequestProvider());
34618      }
34619  }
34620
34621  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
34622    if (element != null) {
34623      composeDomainResourceAttributes(element);
34624      xml.enter(FHIR_NS, name);
34625      composeEpisodeOfCareElements(element);
34626      composeElementClose(element);
34627      xml.exit(FHIR_NS, name);
34628    }
34629  }
34630
34631  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
34632      composeDomainResourceElements(element);
34633      if (element.hasIdentifier()) { 
34634        for (Identifier e : element.getIdentifier()) 
34635          composeIdentifier("identifier", e);
34636      }
34637      if (element.hasStatusElement())
34638        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
34639      if (element.hasStatusHistory()) { 
34640        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
34641          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
34642      }
34643      if (element.hasType()) { 
34644        for (CodeableConcept e : element.getType()) 
34645          composeCodeableConcept("type", e);
34646      }
34647      if (element.hasDiagnosis()) { 
34648        for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
34649          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
34650      }
34651      if (element.hasPatient()) {
34652        composeReference("patient", element.getPatient());
34653      }
34654      if (element.hasManagingOrganization()) {
34655        composeReference("managingOrganization", element.getManagingOrganization());
34656      }
34657      if (element.hasPeriod()) {
34658        composePeriod("period", element.getPeriod());
34659      }
34660      if (element.hasReferralRequest()) { 
34661        for (Reference e : element.getReferralRequest()) 
34662          composeReference("referralRequest", e);
34663      }
34664      if (element.hasCareManager()) {
34665        composeReference("careManager", element.getCareManager());
34666      }
34667      if (element.hasTeam()) { 
34668        for (Reference e : element.getTeam()) 
34669          composeReference("team", e);
34670      }
34671      if (element.hasAccount()) { 
34672        for (Reference e : element.getAccount()) 
34673          composeReference("account", e);
34674      }
34675  }
34676
34677  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
34678    if (element != null) {
34679      composeElementAttributes(element);
34680      xml.enter(FHIR_NS, name);
34681      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(element);
34682      composeElementClose(element);
34683      xml.exit(FHIR_NS, name);
34684    }
34685  }
34686
34687  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
34688      composeBackboneElementElements(element);
34689      if (element.hasStatusElement())
34690        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
34691      if (element.hasPeriod()) {
34692        composePeriod("period", element.getPeriod());
34693      }
34694  }
34695
34696  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
34697    if (element != null) {
34698      composeElementAttributes(element);
34699      xml.enter(FHIR_NS, name);
34700      composeEpisodeOfCareDiagnosisComponentElements(element);
34701      composeElementClose(element);
34702      xml.exit(FHIR_NS, name);
34703    }
34704  }
34705
34706  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
34707      composeBackboneElementElements(element);
34708      if (element.hasCondition()) {
34709        composeReference("condition", element.getCondition());
34710      }
34711      if (element.hasRole()) {
34712        composeCodeableConcept("role", element.getRole());
34713      }
34714      if (element.hasRankElement()) {
34715        composePositiveInt("rank", element.getRankElement());
34716      }
34717  }
34718
34719  protected void composeEventDefinition(String name, EventDefinition element) throws IOException {
34720    if (element != null) {
34721      composeDomainResourceAttributes(element);
34722      xml.enter(FHIR_NS, name);
34723      composeEventDefinitionElements(element);
34724      composeElementClose(element);
34725      xml.exit(FHIR_NS, name);
34726    }
34727  }
34728
34729  protected void composeEventDefinitionElements(EventDefinition element) throws IOException {
34730      composeDomainResourceElements(element);
34731      if (element.hasUrlElement()) {
34732        composeUri("url", element.getUrlElement());
34733      }
34734      if (element.hasIdentifier()) { 
34735        for (Identifier e : element.getIdentifier()) 
34736          composeIdentifier("identifier", e);
34737      }
34738      if (element.hasVersionElement()) {
34739        composeString("version", element.getVersionElement());
34740      }
34741      if (element.hasNameElement()) {
34742        composeString("name", element.getNameElement());
34743      }
34744      if (element.hasTitleElement()) {
34745        composeString("title", element.getTitleElement());
34746      }
34747      if (element.hasSubtitleElement()) {
34748        composeString("subtitle", element.getSubtitleElement());
34749      }
34750      if (element.hasStatusElement())
34751        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34752      if (element.hasExperimentalElement()) {
34753        composeBoolean("experimental", element.getExperimentalElement());
34754      }
34755      if (element.hasSubject()) {
34756        composeType("subject", element.getSubject());
34757      }      if (element.hasDateElement()) {
34758        composeDateTime("date", element.getDateElement());
34759      }
34760      if (element.hasPublisherElement()) {
34761        composeString("publisher", element.getPublisherElement());
34762      }
34763      if (element.hasContact()) { 
34764        for (ContactDetail e : element.getContact()) 
34765          composeContactDetail("contact", e);
34766      }
34767      if (element.hasDescriptionElement()) {
34768        composeMarkdown("description", element.getDescriptionElement());
34769      }
34770      if (element.hasUseContext()) { 
34771        for (UsageContext e : element.getUseContext()) 
34772          composeUsageContext("useContext", e);
34773      }
34774      if (element.hasJurisdiction()) { 
34775        for (CodeableConcept e : element.getJurisdiction()) 
34776          composeCodeableConcept("jurisdiction", e);
34777      }
34778      if (element.hasPurposeElement()) {
34779        composeMarkdown("purpose", element.getPurposeElement());
34780      }
34781      if (element.hasUsageElement()) {
34782        composeString("usage", element.getUsageElement());
34783      }
34784      if (element.hasCopyrightElement()) {
34785        composeMarkdown("copyright", element.getCopyrightElement());
34786      }
34787      if (element.hasApprovalDateElement()) {
34788        composeDate("approvalDate", element.getApprovalDateElement());
34789      }
34790      if (element.hasLastReviewDateElement()) {
34791        composeDate("lastReviewDate", element.getLastReviewDateElement());
34792      }
34793      if (element.hasEffectivePeriod()) {
34794        composePeriod("effectivePeriod", element.getEffectivePeriod());
34795      }
34796      if (element.hasTopic()) { 
34797        for (CodeableConcept e : element.getTopic()) 
34798          composeCodeableConcept("topic", e);
34799      }
34800      if (element.hasAuthor()) { 
34801        for (ContactDetail e : element.getAuthor()) 
34802          composeContactDetail("author", e);
34803      }
34804      if (element.hasEditor()) { 
34805        for (ContactDetail e : element.getEditor()) 
34806          composeContactDetail("editor", e);
34807      }
34808      if (element.hasReviewer()) { 
34809        for (ContactDetail e : element.getReviewer()) 
34810          composeContactDetail("reviewer", e);
34811      }
34812      if (element.hasEndorser()) { 
34813        for (ContactDetail e : element.getEndorser()) 
34814          composeContactDetail("endorser", e);
34815      }
34816      if (element.hasRelatedArtifact()) { 
34817        for (RelatedArtifact e : element.getRelatedArtifact()) 
34818          composeRelatedArtifact("relatedArtifact", e);
34819      }
34820      if (element.hasTrigger()) { 
34821        for (TriggerDefinition e : element.getTrigger()) 
34822          composeTriggerDefinition("trigger", e);
34823      }
34824  }
34825
34826  protected void composeEvidence(String name, Evidence element) throws IOException {
34827    if (element != null) {
34828      composeDomainResourceAttributes(element);
34829      xml.enter(FHIR_NS, name);
34830      composeEvidenceElements(element);
34831      composeElementClose(element);
34832      xml.exit(FHIR_NS, name);
34833    }
34834  }
34835
34836  protected void composeEvidenceElements(Evidence element) throws IOException {
34837      composeDomainResourceElements(element);
34838      if (element.hasUrlElement()) {
34839        composeUri("url", element.getUrlElement());
34840      }
34841      if (element.hasIdentifier()) { 
34842        for (Identifier e : element.getIdentifier()) 
34843          composeIdentifier("identifier", e);
34844      }
34845      if (element.hasVersionElement()) {
34846        composeString("version", element.getVersionElement());
34847      }
34848      if (element.hasNameElement()) {
34849        composeString("name", element.getNameElement());
34850      }
34851      if (element.hasTitleElement()) {
34852        composeString("title", element.getTitleElement());
34853      }
34854      if (element.hasShortTitleElement()) {
34855        composeString("shortTitle", element.getShortTitleElement());
34856      }
34857      if (element.hasSubtitleElement()) {
34858        composeString("subtitle", element.getSubtitleElement());
34859      }
34860      if (element.hasStatusElement())
34861        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34862      if (element.hasDateElement()) {
34863        composeDateTime("date", element.getDateElement());
34864      }
34865      if (element.hasPublisherElement()) {
34866        composeString("publisher", element.getPublisherElement());
34867      }
34868      if (element.hasContact()) { 
34869        for (ContactDetail e : element.getContact()) 
34870          composeContactDetail("contact", e);
34871      }
34872      if (element.hasDescriptionElement()) {
34873        composeMarkdown("description", element.getDescriptionElement());
34874      }
34875      if (element.hasNote()) { 
34876        for (Annotation e : element.getNote()) 
34877          composeAnnotation("note", e);
34878      }
34879      if (element.hasUseContext()) { 
34880        for (UsageContext e : element.getUseContext()) 
34881          composeUsageContext("useContext", e);
34882      }
34883      if (element.hasJurisdiction()) { 
34884        for (CodeableConcept e : element.getJurisdiction()) 
34885          composeCodeableConcept("jurisdiction", e);
34886      }
34887      if (element.hasCopyrightElement()) {
34888        composeMarkdown("copyright", element.getCopyrightElement());
34889      }
34890      if (element.hasApprovalDateElement()) {
34891        composeDate("approvalDate", element.getApprovalDateElement());
34892      }
34893      if (element.hasLastReviewDateElement()) {
34894        composeDate("lastReviewDate", element.getLastReviewDateElement());
34895      }
34896      if (element.hasEffectivePeriod()) {
34897        composePeriod("effectivePeriod", element.getEffectivePeriod());
34898      }
34899      if (element.hasTopic()) { 
34900        for (CodeableConcept e : element.getTopic()) 
34901          composeCodeableConcept("topic", e);
34902      }
34903      if (element.hasAuthor()) { 
34904        for (ContactDetail e : element.getAuthor()) 
34905          composeContactDetail("author", e);
34906      }
34907      if (element.hasEditor()) { 
34908        for (ContactDetail e : element.getEditor()) 
34909          composeContactDetail("editor", e);
34910      }
34911      if (element.hasReviewer()) { 
34912        for (ContactDetail e : element.getReviewer()) 
34913          composeContactDetail("reviewer", e);
34914      }
34915      if (element.hasEndorser()) { 
34916        for (ContactDetail e : element.getEndorser()) 
34917          composeContactDetail("endorser", e);
34918      }
34919      if (element.hasRelatedArtifact()) { 
34920        for (RelatedArtifact e : element.getRelatedArtifact()) 
34921          composeRelatedArtifact("relatedArtifact", e);
34922      }
34923      if (element.hasExposureBackground()) {
34924        composeReference("exposureBackground", element.getExposureBackground());
34925      }
34926      if (element.hasExposureVariant()) { 
34927        for (Reference e : element.getExposureVariant()) 
34928          composeReference("exposureVariant", e);
34929      }
34930      if (element.hasOutcome()) { 
34931        for (Reference e : element.getOutcome()) 
34932          composeReference("outcome", e);
34933      }
34934  }
34935
34936  protected void composeEvidenceVariable(String name, EvidenceVariable element) throws IOException {
34937    if (element != null) {
34938      composeDomainResourceAttributes(element);
34939      xml.enter(FHIR_NS, name);
34940      composeEvidenceVariableElements(element);
34941      composeElementClose(element);
34942      xml.exit(FHIR_NS, name);
34943    }
34944  }
34945
34946  protected void composeEvidenceVariableElements(EvidenceVariable element) throws IOException {
34947      composeDomainResourceElements(element);
34948      if (element.hasUrlElement()) {
34949        composeUri("url", element.getUrlElement());
34950      }
34951      if (element.hasIdentifier()) { 
34952        for (Identifier e : element.getIdentifier()) 
34953          composeIdentifier("identifier", e);
34954      }
34955      if (element.hasVersionElement()) {
34956        composeString("version", element.getVersionElement());
34957      }
34958      if (element.hasNameElement()) {
34959        composeString("name", element.getNameElement());
34960      }
34961      if (element.hasTitleElement()) {
34962        composeString("title", element.getTitleElement());
34963      }
34964      if (element.hasShortTitleElement()) {
34965        composeString("shortTitle", element.getShortTitleElement());
34966      }
34967      if (element.hasSubtitleElement()) {
34968        composeString("subtitle", element.getSubtitleElement());
34969      }
34970      if (element.hasStatusElement())
34971        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34972      if (element.hasDateElement()) {
34973        composeDateTime("date", element.getDateElement());
34974      }
34975      if (element.hasPublisherElement()) {
34976        composeString("publisher", element.getPublisherElement());
34977      }
34978      if (element.hasContact()) { 
34979        for (ContactDetail e : element.getContact()) 
34980          composeContactDetail("contact", e);
34981      }
34982      if (element.hasDescriptionElement()) {
34983        composeMarkdown("description", element.getDescriptionElement());
34984      }
34985      if (element.hasNote()) { 
34986        for (Annotation e : element.getNote()) 
34987          composeAnnotation("note", e);
34988      }
34989      if (element.hasUseContext()) { 
34990        for (UsageContext e : element.getUseContext()) 
34991          composeUsageContext("useContext", e);
34992      }
34993      if (element.hasJurisdiction()) { 
34994        for (CodeableConcept e : element.getJurisdiction()) 
34995          composeCodeableConcept("jurisdiction", e);
34996      }
34997      if (element.hasCopyrightElement()) {
34998        composeMarkdown("copyright", element.getCopyrightElement());
34999      }
35000      if (element.hasApprovalDateElement()) {
35001        composeDate("approvalDate", element.getApprovalDateElement());
35002      }
35003      if (element.hasLastReviewDateElement()) {
35004        composeDate("lastReviewDate", element.getLastReviewDateElement());
35005      }
35006      if (element.hasEffectivePeriod()) {
35007        composePeriod("effectivePeriod", element.getEffectivePeriod());
35008      }
35009      if (element.hasTopic()) { 
35010        for (CodeableConcept e : element.getTopic()) 
35011          composeCodeableConcept("topic", e);
35012      }
35013      if (element.hasAuthor()) { 
35014        for (ContactDetail e : element.getAuthor()) 
35015          composeContactDetail("author", e);
35016      }
35017      if (element.hasEditor()) { 
35018        for (ContactDetail e : element.getEditor()) 
35019          composeContactDetail("editor", e);
35020      }
35021      if (element.hasReviewer()) { 
35022        for (ContactDetail e : element.getReviewer()) 
35023          composeContactDetail("reviewer", e);
35024      }
35025      if (element.hasEndorser()) { 
35026        for (ContactDetail e : element.getEndorser()) 
35027          composeContactDetail("endorser", e);
35028      }
35029      if (element.hasRelatedArtifact()) { 
35030        for (RelatedArtifact e : element.getRelatedArtifact()) 
35031          composeRelatedArtifact("relatedArtifact", e);
35032      }
35033      if (element.hasTypeElement())
35034        composeEnumeration("type", element.getTypeElement(), new EvidenceVariable.EvidenceVariableTypeEnumFactory());
35035      if (element.hasCharacteristic()) { 
35036        for (EvidenceVariable.EvidenceVariableCharacteristicComponent e : element.getCharacteristic()) 
35037          composeEvidenceVariableEvidenceVariableCharacteristicComponent("characteristic", e);
35038      }
35039  }
35040
35041  protected void composeEvidenceVariableEvidenceVariableCharacteristicComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
35042    if (element != null) {
35043      composeElementAttributes(element);
35044      xml.enter(FHIR_NS, name);
35045      composeEvidenceVariableEvidenceVariableCharacteristicComponentElements(element);
35046      composeElementClose(element);
35047      xml.exit(FHIR_NS, name);
35048    }
35049  }
35050
35051  protected void composeEvidenceVariableEvidenceVariableCharacteristicComponentElements(EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
35052      composeBackboneElementElements(element);
35053      if (element.hasDescriptionElement()) {
35054        composeString("description", element.getDescriptionElement());
35055      }
35056      if (element.hasDefinition()) {
35057        composeType("definition", element.getDefinition());
35058      }      if (element.hasUsageContext()) { 
35059        for (UsageContext e : element.getUsageContext()) 
35060          composeUsageContext("usageContext", e);
35061      }
35062      if (element.hasExcludeElement()) {
35063        composeBoolean("exclude", element.getExcludeElement());
35064      }
35065      if (element.hasParticipantEffective()) {
35066        composeType("participantEffective", element.getParticipantEffective());
35067      }      if (element.hasTimeFromStart()) {
35068        composeDuration("timeFromStart", element.getTimeFromStart());
35069      }
35070      if (element.hasGroupMeasureElement())
35071        composeEnumeration("groupMeasure", element.getGroupMeasureElement(), new EvidenceVariable.GroupMeasureEnumFactory());
35072  }
35073
35074  protected void composeExampleScenario(String name, ExampleScenario element) throws IOException {
35075    if (element != null) {
35076      composeDomainResourceAttributes(element);
35077      xml.enter(FHIR_NS, name);
35078      composeExampleScenarioElements(element);
35079      composeElementClose(element);
35080      xml.exit(FHIR_NS, name);
35081    }
35082  }
35083
35084  protected void composeExampleScenarioElements(ExampleScenario element) throws IOException {
35085      composeDomainResourceElements(element);
35086      if (element.hasUrlElement()) {
35087        composeUri("url", element.getUrlElement());
35088      }
35089      if (element.hasIdentifier()) { 
35090        for (Identifier e : element.getIdentifier()) 
35091          composeIdentifier("identifier", e);
35092      }
35093      if (element.hasVersionElement()) {
35094        composeString("version", element.getVersionElement());
35095      }
35096      if (element.hasNameElement()) {
35097        composeString("name", element.getNameElement());
35098      }
35099      if (element.hasStatusElement())
35100        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
35101      if (element.hasExperimentalElement()) {
35102        composeBoolean("experimental", element.getExperimentalElement());
35103      }
35104      if (element.hasDateElement()) {
35105        composeDateTime("date", element.getDateElement());
35106      }
35107      if (element.hasPublisherElement()) {
35108        composeString("publisher", element.getPublisherElement());
35109      }
35110      if (element.hasContact()) { 
35111        for (ContactDetail e : element.getContact()) 
35112          composeContactDetail("contact", e);
35113      }
35114      if (element.hasUseContext()) { 
35115        for (UsageContext e : element.getUseContext()) 
35116          composeUsageContext("useContext", e);
35117      }
35118      if (element.hasJurisdiction()) { 
35119        for (CodeableConcept e : element.getJurisdiction()) 
35120          composeCodeableConcept("jurisdiction", e);
35121      }
35122      if (element.hasCopyrightElement()) {
35123        composeMarkdown("copyright", element.getCopyrightElement());
35124      }
35125      if (element.hasPurposeElement()) {
35126        composeMarkdown("purpose", element.getPurposeElement());
35127      }
35128      if (element.hasActor()) { 
35129        for (ExampleScenario.ExampleScenarioActorComponent e : element.getActor()) 
35130          composeExampleScenarioExampleScenarioActorComponent("actor", e);
35131      }
35132      if (element.hasInstance()) { 
35133        for (ExampleScenario.ExampleScenarioInstanceComponent e : element.getInstance()) 
35134          composeExampleScenarioExampleScenarioInstanceComponent("instance", e);
35135      }
35136      if (element.hasProcess()) { 
35137        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
35138          composeExampleScenarioExampleScenarioProcessComponent("process", e);
35139      }
35140      if (element.hasWorkflow()) { 
35141        for (CanonicalType e : element.getWorkflow()) 
35142          composeCanonical("workflow", e);
35143      }
35144  }
35145
35146  protected void composeExampleScenarioExampleScenarioActorComponent(String name, ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
35147    if (element != null) {
35148      composeElementAttributes(element);
35149      xml.enter(FHIR_NS, name);
35150      composeExampleScenarioExampleScenarioActorComponentElements(element);
35151      composeElementClose(element);
35152      xml.exit(FHIR_NS, name);
35153    }
35154  }
35155
35156  protected void composeExampleScenarioExampleScenarioActorComponentElements(ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
35157      composeBackboneElementElements(element);
35158      if (element.hasActorIdElement()) {
35159        composeString("actorId", element.getActorIdElement());
35160      }
35161      if (element.hasTypeElement())
35162        composeEnumeration("type", element.getTypeElement(), new ExampleScenario.ExampleScenarioActorTypeEnumFactory());
35163      if (element.hasNameElement()) {
35164        composeString("name", element.getNameElement());
35165      }
35166      if (element.hasDescriptionElement()) {
35167        composeMarkdown("description", element.getDescriptionElement());
35168      }
35169  }
35170
35171  protected void composeExampleScenarioExampleScenarioInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
35172    if (element != null) {
35173      composeElementAttributes(element);
35174      xml.enter(FHIR_NS, name);
35175      composeExampleScenarioExampleScenarioInstanceComponentElements(element);
35176      composeElementClose(element);
35177      xml.exit(FHIR_NS, name);
35178    }
35179  }
35180
35181  protected void composeExampleScenarioExampleScenarioInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
35182      composeBackboneElementElements(element);
35183      if (element.hasResourceIdElement()) {
35184        composeString("resourceId", element.getResourceIdElement());
35185      }
35186      if (element.hasResourceTypeElement())
35187        composeEnumeration("resourceType", element.getResourceTypeElement(), new ExampleScenario.FHIRResourceTypeEnumFactory());
35188      if (element.hasNameElement()) {
35189        composeString("name", element.getNameElement());
35190      }
35191      if (element.hasDescriptionElement()) {
35192        composeMarkdown("description", element.getDescriptionElement());
35193      }
35194      if (element.hasVersion()) { 
35195        for (ExampleScenario.ExampleScenarioInstanceVersionComponent e : element.getVersion()) 
35196          composeExampleScenarioExampleScenarioInstanceVersionComponent("version", e);
35197      }
35198      if (element.hasContainedInstance()) { 
35199        for (ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent e : element.getContainedInstance()) 
35200          composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("containedInstance", e);
35201      }
35202  }
35203
35204  protected void composeExampleScenarioExampleScenarioInstanceVersionComponent(String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
35205    if (element != null) {
35206      composeElementAttributes(element);
35207      xml.enter(FHIR_NS, name);
35208      composeExampleScenarioExampleScenarioInstanceVersionComponentElements(element);
35209      composeElementClose(element);
35210      xml.exit(FHIR_NS, name);
35211    }
35212  }
35213
35214  protected void composeExampleScenarioExampleScenarioInstanceVersionComponentElements(ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
35215      composeBackboneElementElements(element);
35216      if (element.hasVersionIdElement()) {
35217        composeString("versionId", element.getVersionIdElement());
35218      }
35219      if (element.hasDescriptionElement()) {
35220        composeMarkdown("description", element.getDescriptionElement());
35221      }
35222  }
35223
35224  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
35225    if (element != null) {
35226      composeElementAttributes(element);
35227      xml.enter(FHIR_NS, name);
35228      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(element);
35229      composeElementClose(element);
35230      xml.exit(FHIR_NS, name);
35231    }
35232  }
35233
35234  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
35235      composeBackboneElementElements(element);
35236      if (element.hasResourceIdElement()) {
35237        composeString("resourceId", element.getResourceIdElement());
35238      }
35239      if (element.hasVersionIdElement()) {
35240        composeString("versionId", element.getVersionIdElement());
35241      }
35242  }
35243
35244  protected void composeExampleScenarioExampleScenarioProcessComponent(String name, ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
35245    if (element != null) {
35246      composeElementAttributes(element);
35247      xml.enter(FHIR_NS, name);
35248      composeExampleScenarioExampleScenarioProcessComponentElements(element);
35249      composeElementClose(element);
35250      xml.exit(FHIR_NS, name);
35251    }
35252  }
35253
35254  protected void composeExampleScenarioExampleScenarioProcessComponentElements(ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
35255      composeBackboneElementElements(element);
35256      if (element.hasTitleElement()) {
35257        composeString("title", element.getTitleElement());
35258      }
35259      if (element.hasDescriptionElement()) {
35260        composeMarkdown("description", element.getDescriptionElement());
35261      }
35262      if (element.hasPreConditionsElement()) {
35263        composeMarkdown("preConditions", element.getPreConditionsElement());
35264      }
35265      if (element.hasPostConditionsElement()) {
35266        composeMarkdown("postConditions", element.getPostConditionsElement());
35267      }
35268      if (element.hasStep()) { 
35269        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
35270          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
35271      }
35272  }
35273
35274  protected void composeExampleScenarioExampleScenarioProcessStepComponent(String name, ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
35275    if (element != null) {
35276      composeElementAttributes(element);
35277      xml.enter(FHIR_NS, name);
35278      composeExampleScenarioExampleScenarioProcessStepComponentElements(element);
35279      composeElementClose(element);
35280      xml.exit(FHIR_NS, name);
35281    }
35282  }
35283
35284  protected void composeExampleScenarioExampleScenarioProcessStepComponentElements(ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
35285      composeBackboneElementElements(element);
35286      if (element.hasProcess()) { 
35287        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
35288          composeExampleScenarioExampleScenarioProcessComponent("process", e);
35289      }
35290      if (element.hasPauseElement()) {
35291        composeBoolean("pause", element.getPauseElement());
35292      }
35293      if (element.hasOperation()) {
35294        composeExampleScenarioExampleScenarioProcessStepOperationComponent("operation", element.getOperation());
35295      }
35296      if (element.hasAlternative()) { 
35297        for (ExampleScenario.ExampleScenarioProcessStepAlternativeComponent e : element.getAlternative()) 
35298          composeExampleScenarioExampleScenarioProcessStepAlternativeComponent("alternative", e);
35299      }
35300  }
35301
35302  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponent(String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
35303    if (element != null) {
35304      composeElementAttributes(element);
35305      xml.enter(FHIR_NS, name);
35306      composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(element);
35307      composeElementClose(element);
35308      xml.exit(FHIR_NS, name);
35309    }
35310  }
35311
35312  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
35313      composeBackboneElementElements(element);
35314      if (element.hasNumberElement()) {
35315        composeString("number", element.getNumberElement());
35316      }
35317      if (element.hasTypeElement()) {
35318        composeString("type", element.getTypeElement());
35319      }
35320      if (element.hasNameElement()) {
35321        composeString("name", element.getNameElement());
35322      }
35323      if (element.hasInitiatorElement()) {
35324        composeString("initiator", element.getInitiatorElement());
35325      }
35326      if (element.hasReceiverElement()) {
35327        composeString("receiver", element.getReceiverElement());
35328      }
35329      if (element.hasDescriptionElement()) {
35330        composeMarkdown("description", element.getDescriptionElement());
35331      }
35332      if (element.hasInitiatorActiveElement()) {
35333        composeBoolean("initiatorActive", element.getInitiatorActiveElement());
35334      }
35335      if (element.hasReceiverActiveElement()) {
35336        composeBoolean("receiverActive", element.getReceiverActiveElement());
35337      }
35338      if (element.hasRequest()) {
35339        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("request", element.getRequest());
35340      }
35341      if (element.hasResponse()) {
35342        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("response", element.getResponse());
35343      }
35344  }
35345
35346  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
35347    if (element != null) {
35348      composeElementAttributes(element);
35349      xml.enter(FHIR_NS, name);
35350      composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(element);
35351      composeElementClose(element);
35352      xml.exit(FHIR_NS, name);
35353    }
35354  }
35355
35356  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
35357      composeBackboneElementElements(element);
35358      if (element.hasTitleElement()) {
35359        composeString("title", element.getTitleElement());
35360      }
35361      if (element.hasDescriptionElement()) {
35362        composeMarkdown("description", element.getDescriptionElement());
35363      }
35364      if (element.hasStep()) { 
35365        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
35366          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
35367      }
35368  }
35369
35370  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
35371    if (element != null) {
35372      composeDomainResourceAttributes(element);
35373      xml.enter(FHIR_NS, name);
35374      composeExplanationOfBenefitElements(element);
35375      composeElementClose(element);
35376      xml.exit(FHIR_NS, name);
35377    }
35378  }
35379
35380  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
35381      composeDomainResourceElements(element);
35382      if (element.hasIdentifier()) { 
35383        for (Identifier e : element.getIdentifier()) 
35384          composeIdentifier("identifier", e);
35385      }
35386      if (element.hasStatusElement())
35387        composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
35388      if (element.hasType()) {
35389        composeCodeableConcept("type", element.getType());
35390      }
35391      if (element.hasSubType()) {
35392        composeCodeableConcept("subType", element.getSubType());
35393      }
35394      if (element.hasUseElement())
35395        composeEnumeration("use", element.getUseElement(), new ExplanationOfBenefit.UseEnumFactory());
35396      if (element.hasPatient()) {
35397        composeReference("patient", element.getPatient());
35398      }
35399      if (element.hasBillablePeriod()) {
35400        composePeriod("billablePeriod", element.getBillablePeriod());
35401      }
35402      if (element.hasCreatedElement()) {
35403        composeDateTime("created", element.getCreatedElement());
35404      }
35405      if (element.hasEnterer()) {
35406        composeReference("enterer", element.getEnterer());
35407      }
35408      if (element.hasInsurer()) {
35409        composeReference("insurer", element.getInsurer());
35410      }
35411      if (element.hasProvider()) {
35412        composeReference("provider", element.getProvider());
35413      }
35414      if (element.hasPriority()) {
35415        composeCodeableConcept("priority", element.getPriority());
35416      }
35417      if (element.hasFundsReserveRequested()) {
35418        composeCodeableConcept("fundsReserveRequested", element.getFundsReserveRequested());
35419      }
35420      if (element.hasFundsReserve()) {
35421        composeCodeableConcept("fundsReserve", element.getFundsReserve());
35422      }
35423      if (element.hasRelated()) { 
35424        for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
35425          composeExplanationOfBenefitRelatedClaimComponent("related", e);
35426      }
35427      if (element.hasPrescription()) {
35428        composeReference("prescription", element.getPrescription());
35429      }
35430      if (element.hasOriginalPrescription()) {
35431        composeReference("originalPrescription", element.getOriginalPrescription());
35432      }
35433      if (element.hasPayee()) {
35434        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
35435      }
35436      if (element.hasReferral()) {
35437        composeReference("referral", element.getReferral());
35438      }
35439      if (element.hasFacility()) {
35440        composeReference("facility", element.getFacility());
35441      }
35442      if (element.hasClaim()) {
35443        composeReference("claim", element.getClaim());
35444      }
35445      if (element.hasClaimResponse()) {
35446        composeReference("claimResponse", element.getClaimResponse());
35447      }
35448      if (element.hasOutcomeElement())
35449        composeEnumeration("outcome", element.getOutcomeElement(), new ExplanationOfBenefit.RemittanceOutcomeEnumFactory());
35450      if (element.hasDispositionElement()) {
35451        composeString("disposition", element.getDispositionElement());
35452      }
35453      if (element.hasPreAuthRef()) { 
35454        for (StringType e : element.getPreAuthRef()) 
35455          composeString("preAuthRef", e);
35456      }
35457      if (element.hasPreAuthRefPeriod()) { 
35458        for (Period e : element.getPreAuthRefPeriod()) 
35459          composePeriod("preAuthRefPeriod", e);
35460      }
35461      if (element.hasCareTeam()) { 
35462        for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
35463          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
35464      }
35465      if (element.hasSupportingInfo()) { 
35466        for (ExplanationOfBenefit.SupportingInformationComponent e : element.getSupportingInfo()) 
35467          composeExplanationOfBenefitSupportingInformationComponent("supportingInfo", e);
35468      }
35469      if (element.hasDiagnosis()) { 
35470        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
35471          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
35472      }
35473      if (element.hasProcedure()) { 
35474        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
35475          composeExplanationOfBenefitProcedureComponent("procedure", e);
35476      }
35477      if (element.hasPrecedenceElement()) {
35478        composePositiveInt("precedence", element.getPrecedenceElement());
35479      }
35480      if (element.hasInsurance()) { 
35481        for (ExplanationOfBenefit.InsuranceComponent e : element.getInsurance()) 
35482          composeExplanationOfBenefitInsuranceComponent("insurance", e);
35483      }
35484      if (element.hasAccident()) {
35485        composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
35486      }
35487      if (element.hasItem()) { 
35488        for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
35489          composeExplanationOfBenefitItemComponent("item", e);
35490      }
35491      if (element.hasAddItem()) { 
35492        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
35493          composeExplanationOfBenefitAddedItemComponent("addItem", e);
35494      }
35495      if (element.hasAdjudication()) { 
35496        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35497          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35498      }
35499      if (element.hasTotal()) { 
35500        for (ExplanationOfBenefit.TotalComponent e : element.getTotal()) 
35501          composeExplanationOfBenefitTotalComponent("total", e);
35502      }
35503      if (element.hasPayment()) {
35504        composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
35505      }
35506      if (element.hasFormCode()) {
35507        composeCodeableConcept("formCode", element.getFormCode());
35508      }
35509      if (element.hasForm()) {
35510        composeAttachment("form", element.getForm());
35511      }
35512      if (element.hasProcessNote()) { 
35513        for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
35514          composeExplanationOfBenefitNoteComponent("processNote", e);
35515      }
35516      if (element.hasBenefitPeriod()) {
35517        composePeriod("benefitPeriod", element.getBenefitPeriod());
35518      }
35519      if (element.hasBenefitBalance()) { 
35520        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
35521          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
35522      }
35523  }
35524
35525  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
35526    if (element != null) {
35527      composeElementAttributes(element);
35528      xml.enter(FHIR_NS, name);
35529      composeExplanationOfBenefitRelatedClaimComponentElements(element);
35530      composeElementClose(element);
35531      xml.exit(FHIR_NS, name);
35532    }
35533  }
35534
35535  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
35536      composeBackboneElementElements(element);
35537      if (element.hasClaim()) {
35538        composeReference("claim", element.getClaim());
35539      }
35540      if (element.hasRelationship()) {
35541        composeCodeableConcept("relationship", element.getRelationship());
35542      }
35543      if (element.hasReference()) {
35544        composeIdentifier("reference", element.getReference());
35545      }
35546  }
35547
35548  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
35549    if (element != null) {
35550      composeElementAttributes(element);
35551      xml.enter(FHIR_NS, name);
35552      composeExplanationOfBenefitPayeeComponentElements(element);
35553      composeElementClose(element);
35554      xml.exit(FHIR_NS, name);
35555    }
35556  }
35557
35558  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
35559      composeBackboneElementElements(element);
35560      if (element.hasType()) {
35561        composeCodeableConcept("type", element.getType());
35562      }
35563      if (element.hasParty()) {
35564        composeReference("party", element.getParty());
35565      }
35566  }
35567
35568  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
35569    if (element != null) {
35570      composeElementAttributes(element);
35571      xml.enter(FHIR_NS, name);
35572      composeExplanationOfBenefitCareTeamComponentElements(element);
35573      composeElementClose(element);
35574      xml.exit(FHIR_NS, name);
35575    }
35576  }
35577
35578  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
35579      composeBackboneElementElements(element);
35580      if (element.hasSequenceElement()) {
35581        composePositiveInt("sequence", element.getSequenceElement());
35582      }
35583      if (element.hasProvider()) {
35584        composeReference("provider", element.getProvider());
35585      }
35586      if (element.hasResponsibleElement()) {
35587        composeBoolean("responsible", element.getResponsibleElement());
35588      }
35589      if (element.hasRole()) {
35590        composeCodeableConcept("role", element.getRole());
35591      }
35592      if (element.hasQualification()) {
35593        composeCodeableConcept("qualification", element.getQualification());
35594      }
35595  }
35596
35597  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
35598    if (element != null) {
35599      composeElementAttributes(element);
35600      xml.enter(FHIR_NS, name);
35601      composeExplanationOfBenefitSupportingInformationComponentElements(element);
35602      composeElementClose(element);
35603      xml.exit(FHIR_NS, name);
35604    }
35605  }
35606
35607  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
35608      composeBackboneElementElements(element);
35609      if (element.hasSequenceElement()) {
35610        composePositiveInt("sequence", element.getSequenceElement());
35611      }
35612      if (element.hasCategory()) {
35613        composeCodeableConcept("category", element.getCategory());
35614      }
35615      if (element.hasCode()) {
35616        composeCodeableConcept("code", element.getCode());
35617      }
35618      if (element.hasTiming()) {
35619        composeType("timing", element.getTiming());
35620      }      if (element.hasValue()) {
35621        composeType("value", element.getValue());
35622      }      if (element.hasReason()) {
35623        composeCoding("reason", element.getReason());
35624      }
35625  }
35626
35627  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
35628    if (element != null) {
35629      composeElementAttributes(element);
35630      xml.enter(FHIR_NS, name);
35631      composeExplanationOfBenefitDiagnosisComponentElements(element);
35632      composeElementClose(element);
35633      xml.exit(FHIR_NS, name);
35634    }
35635  }
35636
35637  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
35638      composeBackboneElementElements(element);
35639      if (element.hasSequenceElement()) {
35640        composePositiveInt("sequence", element.getSequenceElement());
35641      }
35642      if (element.hasDiagnosis()) {
35643        composeType("diagnosis", element.getDiagnosis());
35644      }      if (element.hasType()) { 
35645        for (CodeableConcept e : element.getType()) 
35646          composeCodeableConcept("type", e);
35647      }
35648      if (element.hasOnAdmission()) {
35649        composeCodeableConcept("onAdmission", element.getOnAdmission());
35650      }
35651      if (element.hasPackageCode()) {
35652        composeCodeableConcept("packageCode", element.getPackageCode());
35653      }
35654  }
35655
35656  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
35657    if (element != null) {
35658      composeElementAttributes(element);
35659      xml.enter(FHIR_NS, name);
35660      composeExplanationOfBenefitProcedureComponentElements(element);
35661      composeElementClose(element);
35662      xml.exit(FHIR_NS, name);
35663    }
35664  }
35665
35666  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
35667      composeBackboneElementElements(element);
35668      if (element.hasSequenceElement()) {
35669        composePositiveInt("sequence", element.getSequenceElement());
35670      }
35671      if (element.hasType()) { 
35672        for (CodeableConcept e : element.getType()) 
35673          composeCodeableConcept("type", e);
35674      }
35675      if (element.hasDateElement()) {
35676        composeDateTime("date", element.getDateElement());
35677      }
35678      if (element.hasProcedure()) {
35679        composeType("procedure", element.getProcedure());
35680      }      if (element.hasUdi()) { 
35681        for (Reference e : element.getUdi()) 
35682          composeReference("udi", e);
35683      }
35684  }
35685
35686  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
35687    if (element != null) {
35688      composeElementAttributes(element);
35689      xml.enter(FHIR_NS, name);
35690      composeExplanationOfBenefitInsuranceComponentElements(element);
35691      composeElementClose(element);
35692      xml.exit(FHIR_NS, name);
35693    }
35694  }
35695
35696  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
35697      composeBackboneElementElements(element);
35698      if (element.hasFocalElement()) {
35699        composeBoolean("focal", element.getFocalElement());
35700      }
35701      if (element.hasCoverage()) {
35702        composeReference("coverage", element.getCoverage());
35703      }
35704      if (element.hasPreAuthRef()) { 
35705        for (StringType e : element.getPreAuthRef()) 
35706          composeString("preAuthRef", e);
35707      }
35708  }
35709
35710  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
35711    if (element != null) {
35712      composeElementAttributes(element);
35713      xml.enter(FHIR_NS, name);
35714      composeExplanationOfBenefitAccidentComponentElements(element);
35715      composeElementClose(element);
35716      xml.exit(FHIR_NS, name);
35717    }
35718  }
35719
35720  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
35721      composeBackboneElementElements(element);
35722      if (element.hasDateElement()) {
35723        composeDate("date", element.getDateElement());
35724      }
35725      if (element.hasType()) {
35726        composeCodeableConcept("type", element.getType());
35727      }
35728      if (element.hasLocation()) {
35729        composeType("location", element.getLocation());
35730      }  }
35731
35732  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
35733    if (element != null) {
35734      composeElementAttributes(element);
35735      xml.enter(FHIR_NS, name);
35736      composeExplanationOfBenefitItemComponentElements(element);
35737      composeElementClose(element);
35738      xml.exit(FHIR_NS, name);
35739    }
35740  }
35741
35742  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
35743      composeBackboneElementElements(element);
35744      if (element.hasSequenceElement()) {
35745        composePositiveInt("sequence", element.getSequenceElement());
35746      }
35747      if (element.hasCareTeamSequence()) { 
35748        for (PositiveIntType e : element.getCareTeamSequence()) 
35749          composePositiveInt("careTeamSequence", e);
35750      }
35751      if (element.hasDiagnosisSequence()) { 
35752        for (PositiveIntType e : element.getDiagnosisSequence()) 
35753          composePositiveInt("diagnosisSequence", e);
35754      }
35755      if (element.hasProcedureSequence()) { 
35756        for (PositiveIntType e : element.getProcedureSequence()) 
35757          composePositiveInt("procedureSequence", e);
35758      }
35759      if (element.hasInformationSequence()) { 
35760        for (PositiveIntType e : element.getInformationSequence()) 
35761          composePositiveInt("informationSequence", e);
35762      }
35763      if (element.hasRevenue()) {
35764        composeCodeableConcept("revenue", element.getRevenue());
35765      }
35766      if (element.hasCategory()) {
35767        composeCodeableConcept("category", element.getCategory());
35768      }
35769      if (element.hasProductOrService()) {
35770        composeCodeableConcept("productOrService", element.getProductOrService());
35771      }
35772      if (element.hasModifier()) { 
35773        for (CodeableConcept e : element.getModifier()) 
35774          composeCodeableConcept("modifier", e);
35775      }
35776      if (element.hasProgramCode()) { 
35777        for (CodeableConcept e : element.getProgramCode()) 
35778          composeCodeableConcept("programCode", e);
35779      }
35780      if (element.hasServiced()) {
35781        composeType("serviced", element.getServiced());
35782      }      if (element.hasLocation()) {
35783        composeType("location", element.getLocation());
35784      }      if (element.hasQuantity()) {
35785        composeQuantity("quantity", element.getQuantity());
35786      }
35787      if (element.hasUnitPrice()) {
35788        composeMoney("unitPrice", element.getUnitPrice());
35789      }
35790      if (element.hasFactorElement()) {
35791        composeDecimal("factor", element.getFactorElement());
35792      }
35793      if (element.hasNet()) {
35794        composeMoney("net", element.getNet());
35795      }
35796      if (element.hasUdi()) { 
35797        for (Reference e : element.getUdi()) 
35798          composeReference("udi", e);
35799      }
35800      if (element.hasBodySite()) {
35801        composeCodeableConcept("bodySite", element.getBodySite());
35802      }
35803      if (element.hasSubSite()) { 
35804        for (CodeableConcept e : element.getSubSite()) 
35805          composeCodeableConcept("subSite", e);
35806      }
35807      if (element.hasEncounter()) { 
35808        for (Reference e : element.getEncounter()) 
35809          composeReference("encounter", e);
35810      }
35811      if (element.hasNoteNumber()) { 
35812        for (PositiveIntType e : element.getNoteNumber()) 
35813          composePositiveInt("noteNumber", e);
35814      }
35815      if (element.hasAdjudication()) { 
35816        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35817          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35818      }
35819      if (element.hasDetail()) { 
35820        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
35821          composeExplanationOfBenefitDetailComponent("detail", e);
35822      }
35823  }
35824
35825  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
35826    if (element != null) {
35827      composeElementAttributes(element);
35828      xml.enter(FHIR_NS, name);
35829      composeExplanationOfBenefitAdjudicationComponentElements(element);
35830      composeElementClose(element);
35831      xml.exit(FHIR_NS, name);
35832    }
35833  }
35834
35835  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
35836      composeBackboneElementElements(element);
35837      if (element.hasCategory()) {
35838        composeCodeableConcept("category", element.getCategory());
35839      }
35840      if (element.hasReason()) {
35841        composeCodeableConcept("reason", element.getReason());
35842      }
35843      if (element.hasAmount()) {
35844        composeMoney("amount", element.getAmount());
35845      }
35846      if (element.hasValueElement()) {
35847        composeDecimal("value", element.getValueElement());
35848      }
35849  }
35850
35851  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
35852    if (element != null) {
35853      composeElementAttributes(element);
35854      xml.enter(FHIR_NS, name);
35855      composeExplanationOfBenefitDetailComponentElements(element);
35856      composeElementClose(element);
35857      xml.exit(FHIR_NS, name);
35858    }
35859  }
35860
35861  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
35862      composeBackboneElementElements(element);
35863      if (element.hasSequenceElement()) {
35864        composePositiveInt("sequence", element.getSequenceElement());
35865      }
35866      if (element.hasRevenue()) {
35867        composeCodeableConcept("revenue", element.getRevenue());
35868      }
35869      if (element.hasCategory()) {
35870        composeCodeableConcept("category", element.getCategory());
35871      }
35872      if (element.hasProductOrService()) {
35873        composeCodeableConcept("productOrService", element.getProductOrService());
35874      }
35875      if (element.hasModifier()) { 
35876        for (CodeableConcept e : element.getModifier()) 
35877          composeCodeableConcept("modifier", e);
35878      }
35879      if (element.hasProgramCode()) { 
35880        for (CodeableConcept e : element.getProgramCode()) 
35881          composeCodeableConcept("programCode", e);
35882      }
35883      if (element.hasQuantity()) {
35884        composeQuantity("quantity", element.getQuantity());
35885      }
35886      if (element.hasUnitPrice()) {
35887        composeMoney("unitPrice", element.getUnitPrice());
35888      }
35889      if (element.hasFactorElement()) {
35890        composeDecimal("factor", element.getFactorElement());
35891      }
35892      if (element.hasNet()) {
35893        composeMoney("net", element.getNet());
35894      }
35895      if (element.hasUdi()) { 
35896        for (Reference e : element.getUdi()) 
35897          composeReference("udi", e);
35898      }
35899      if (element.hasNoteNumber()) { 
35900        for (PositiveIntType e : element.getNoteNumber()) 
35901          composePositiveInt("noteNumber", e);
35902      }
35903      if (element.hasAdjudication()) { 
35904        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35905          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35906      }
35907      if (element.hasSubDetail()) { 
35908        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
35909          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
35910      }
35911  }
35912
35913  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
35914    if (element != null) {
35915      composeElementAttributes(element);
35916      xml.enter(FHIR_NS, name);
35917      composeExplanationOfBenefitSubDetailComponentElements(element);
35918      composeElementClose(element);
35919      xml.exit(FHIR_NS, name);
35920    }
35921  }
35922
35923  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
35924      composeBackboneElementElements(element);
35925      if (element.hasSequenceElement()) {
35926        composePositiveInt("sequence", element.getSequenceElement());
35927      }
35928      if (element.hasRevenue()) {
35929        composeCodeableConcept("revenue", element.getRevenue());
35930      }
35931      if (element.hasCategory()) {
35932        composeCodeableConcept("category", element.getCategory());
35933      }
35934      if (element.hasProductOrService()) {
35935        composeCodeableConcept("productOrService", element.getProductOrService());
35936      }
35937      if (element.hasModifier()) { 
35938        for (CodeableConcept e : element.getModifier()) 
35939          composeCodeableConcept("modifier", e);
35940      }
35941      if (element.hasProgramCode()) { 
35942        for (CodeableConcept e : element.getProgramCode()) 
35943          composeCodeableConcept("programCode", e);
35944      }
35945      if (element.hasQuantity()) {
35946        composeQuantity("quantity", element.getQuantity());
35947      }
35948      if (element.hasUnitPrice()) {
35949        composeMoney("unitPrice", element.getUnitPrice());
35950      }
35951      if (element.hasFactorElement()) {
35952        composeDecimal("factor", element.getFactorElement());
35953      }
35954      if (element.hasNet()) {
35955        composeMoney("net", element.getNet());
35956      }
35957      if (element.hasUdi()) { 
35958        for (Reference e : element.getUdi()) 
35959          composeReference("udi", e);
35960      }
35961      if (element.hasNoteNumber()) { 
35962        for (PositiveIntType e : element.getNoteNumber()) 
35963          composePositiveInt("noteNumber", e);
35964      }
35965      if (element.hasAdjudication()) { 
35966        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35967          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35968      }
35969  }
35970
35971  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
35972    if (element != null) {
35973      composeElementAttributes(element);
35974      xml.enter(FHIR_NS, name);
35975      composeExplanationOfBenefitAddedItemComponentElements(element);
35976      composeElementClose(element);
35977      xml.exit(FHIR_NS, name);
35978    }
35979  }
35980
35981  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
35982      composeBackboneElementElements(element);
35983      if (element.hasItemSequence()) { 
35984        for (PositiveIntType e : element.getItemSequence()) 
35985          composePositiveInt("itemSequence", e);
35986      }
35987      if (element.hasDetailSequence()) { 
35988        for (PositiveIntType e : element.getDetailSequence()) 
35989          composePositiveInt("detailSequence", e);
35990      }
35991      if (element.hasSubDetailSequence()) { 
35992        for (PositiveIntType e : element.getSubDetailSequence()) 
35993          composePositiveInt("subDetailSequence", e);
35994      }
35995      if (element.hasProvider()) { 
35996        for (Reference e : element.getProvider()) 
35997          composeReference("provider", e);
35998      }
35999      if (element.hasProductOrService()) {
36000        composeCodeableConcept("productOrService", element.getProductOrService());
36001      }
36002      if (element.hasModifier()) { 
36003        for (CodeableConcept e : element.getModifier()) 
36004          composeCodeableConcept("modifier", e);
36005      }
36006      if (element.hasProgramCode()) { 
36007        for (CodeableConcept e : element.getProgramCode()) 
36008          composeCodeableConcept("programCode", e);
36009      }
36010      if (element.hasServiced()) {
36011        composeType("serviced", element.getServiced());
36012      }      if (element.hasLocation()) {
36013        composeType("location", element.getLocation());
36014      }      if (element.hasQuantity()) {
36015        composeQuantity("quantity", element.getQuantity());
36016      }
36017      if (element.hasUnitPrice()) {
36018        composeMoney("unitPrice", element.getUnitPrice());
36019      }
36020      if (element.hasFactorElement()) {
36021        composeDecimal("factor", element.getFactorElement());
36022      }
36023      if (element.hasNet()) {
36024        composeMoney("net", element.getNet());
36025      }
36026      if (element.hasBodySite()) {
36027        composeCodeableConcept("bodySite", element.getBodySite());
36028      }
36029      if (element.hasSubSite()) { 
36030        for (CodeableConcept e : element.getSubSite()) 
36031          composeCodeableConcept("subSite", e);
36032      }
36033      if (element.hasNoteNumber()) { 
36034        for (PositiveIntType e : element.getNoteNumber()) 
36035          composePositiveInt("noteNumber", e);
36036      }
36037      if (element.hasAdjudication()) { 
36038        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36039          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36040      }
36041      if (element.hasDetail()) { 
36042        for (ExplanationOfBenefit.AddedItemDetailComponent e : element.getDetail()) 
36043          composeExplanationOfBenefitAddedItemDetailComponent("detail", e);
36044      }
36045  }
36046
36047  protected void composeExplanationOfBenefitAddedItemDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
36048    if (element != null) {
36049      composeElementAttributes(element);
36050      xml.enter(FHIR_NS, name);
36051      composeExplanationOfBenefitAddedItemDetailComponentElements(element);
36052      composeElementClose(element);
36053      xml.exit(FHIR_NS, name);
36054    }
36055  }
36056
36057  protected void composeExplanationOfBenefitAddedItemDetailComponentElements(ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
36058      composeBackboneElementElements(element);
36059      if (element.hasProductOrService()) {
36060        composeCodeableConcept("productOrService", element.getProductOrService());
36061      }
36062      if (element.hasModifier()) { 
36063        for (CodeableConcept e : element.getModifier()) 
36064          composeCodeableConcept("modifier", e);
36065      }
36066      if (element.hasQuantity()) {
36067        composeQuantity("quantity", element.getQuantity());
36068      }
36069      if (element.hasUnitPrice()) {
36070        composeMoney("unitPrice", element.getUnitPrice());
36071      }
36072      if (element.hasFactorElement()) {
36073        composeDecimal("factor", element.getFactorElement());
36074      }
36075      if (element.hasNet()) {
36076        composeMoney("net", element.getNet());
36077      }
36078      if (element.hasNoteNumber()) { 
36079        for (PositiveIntType e : element.getNoteNumber()) 
36080          composePositiveInt("noteNumber", e);
36081      }
36082      if (element.hasAdjudication()) { 
36083        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36084          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36085      }
36086      if (element.hasSubDetail()) { 
36087        for (ExplanationOfBenefit.AddedItemDetailSubDetailComponent e : element.getSubDetail()) 
36088          composeExplanationOfBenefitAddedItemDetailSubDetailComponent("subDetail", e);
36089      }
36090  }
36091
36092  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
36093    if (element != null) {
36094      composeElementAttributes(element);
36095      xml.enter(FHIR_NS, name);
36096      composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(element);
36097      composeElementClose(element);
36098      xml.exit(FHIR_NS, name);
36099    }
36100  }
36101
36102  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
36103      composeBackboneElementElements(element);
36104      if (element.hasProductOrService()) {
36105        composeCodeableConcept("productOrService", element.getProductOrService());
36106      }
36107      if (element.hasModifier()) { 
36108        for (CodeableConcept e : element.getModifier()) 
36109          composeCodeableConcept("modifier", e);
36110      }
36111      if (element.hasQuantity()) {
36112        composeQuantity("quantity", element.getQuantity());
36113      }
36114      if (element.hasUnitPrice()) {
36115        composeMoney("unitPrice", element.getUnitPrice());
36116      }
36117      if (element.hasFactorElement()) {
36118        composeDecimal("factor", element.getFactorElement());
36119      }
36120      if (element.hasNet()) {
36121        composeMoney("net", element.getNet());
36122      }
36123      if (element.hasNoteNumber()) { 
36124        for (PositiveIntType e : element.getNoteNumber()) 
36125          composePositiveInt("noteNumber", e);
36126      }
36127      if (element.hasAdjudication()) { 
36128        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36129          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36130      }
36131  }
36132
36133  protected void composeExplanationOfBenefitTotalComponent(String name, ExplanationOfBenefit.TotalComponent element) throws IOException {
36134    if (element != null) {
36135      composeElementAttributes(element);
36136      xml.enter(FHIR_NS, name);
36137      composeExplanationOfBenefitTotalComponentElements(element);
36138      composeElementClose(element);
36139      xml.exit(FHIR_NS, name);
36140    }
36141  }
36142
36143  protected void composeExplanationOfBenefitTotalComponentElements(ExplanationOfBenefit.TotalComponent element) throws IOException {
36144      composeBackboneElementElements(element);
36145      if (element.hasCategory()) {
36146        composeCodeableConcept("category", element.getCategory());
36147      }
36148      if (element.hasAmount()) {
36149        composeMoney("amount", element.getAmount());
36150      }
36151  }
36152
36153  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
36154    if (element != null) {
36155      composeElementAttributes(element);
36156      xml.enter(FHIR_NS, name);
36157      composeExplanationOfBenefitPaymentComponentElements(element);
36158      composeElementClose(element);
36159      xml.exit(FHIR_NS, name);
36160    }
36161  }
36162
36163  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
36164      composeBackboneElementElements(element);
36165      if (element.hasType()) {
36166        composeCodeableConcept("type", element.getType());
36167      }
36168      if (element.hasAdjustment()) {
36169        composeMoney("adjustment", element.getAdjustment());
36170      }
36171      if (element.hasAdjustmentReason()) {
36172        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
36173      }
36174      if (element.hasDateElement()) {
36175        composeDate("date", element.getDateElement());
36176      }
36177      if (element.hasAmount()) {
36178        composeMoney("amount", element.getAmount());
36179      }
36180      if (element.hasIdentifier()) {
36181        composeIdentifier("identifier", element.getIdentifier());
36182      }
36183  }
36184
36185  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
36186    if (element != null) {
36187      composeElementAttributes(element);
36188      xml.enter(FHIR_NS, name);
36189      composeExplanationOfBenefitNoteComponentElements(element);
36190      composeElementClose(element);
36191      xml.exit(FHIR_NS, name);
36192    }
36193  }
36194
36195  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
36196      composeBackboneElementElements(element);
36197      if (element.hasNumberElement()) {
36198        composePositiveInt("number", element.getNumberElement());
36199      }
36200      if (element.hasTypeElement())
36201        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
36202      if (element.hasTextElement()) {
36203        composeString("text", element.getTextElement());
36204      }
36205      if (element.hasLanguage()) {
36206        composeCodeableConcept("language", element.getLanguage());
36207      }
36208  }
36209
36210  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
36211    if (element != null) {
36212      composeElementAttributes(element);
36213      xml.enter(FHIR_NS, name);
36214      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
36215      composeElementClose(element);
36216      xml.exit(FHIR_NS, name);
36217    }
36218  }
36219
36220  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
36221      composeBackboneElementElements(element);
36222      if (element.hasCategory()) {
36223        composeCodeableConcept("category", element.getCategory());
36224      }
36225      if (element.hasExcludedElement()) {
36226        composeBoolean("excluded", element.getExcludedElement());
36227      }
36228      if (element.hasNameElement()) {
36229        composeString("name", element.getNameElement());
36230      }
36231      if (element.hasDescriptionElement()) {
36232        composeString("description", element.getDescriptionElement());
36233      }
36234      if (element.hasNetwork()) {
36235        composeCodeableConcept("network", element.getNetwork());
36236      }
36237      if (element.hasUnit()) {
36238        composeCodeableConcept("unit", element.getUnit());
36239      }
36240      if (element.hasTerm()) {
36241        composeCodeableConcept("term", element.getTerm());
36242      }
36243      if (element.hasFinancial()) { 
36244        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
36245          composeExplanationOfBenefitBenefitComponent("financial", e);
36246      }
36247  }
36248
36249  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
36250    if (element != null) {
36251      composeElementAttributes(element);
36252      xml.enter(FHIR_NS, name);
36253      composeExplanationOfBenefitBenefitComponentElements(element);
36254      composeElementClose(element);
36255      xml.exit(FHIR_NS, name);
36256    }
36257  }
36258
36259  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
36260      composeBackboneElementElements(element);
36261      if (element.hasType()) {
36262        composeCodeableConcept("type", element.getType());
36263      }
36264      if (element.hasAllowed()) {
36265        composeType("allowed", element.getAllowed());
36266      }      if (element.hasUsed()) {
36267        composeType("used", element.getUsed());
36268      }  }
36269
36270  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
36271    if (element != null) {
36272      composeDomainResourceAttributes(element);
36273      xml.enter(FHIR_NS, name);
36274      composeFamilyMemberHistoryElements(element);
36275      composeElementClose(element);
36276      xml.exit(FHIR_NS, name);
36277    }
36278  }
36279
36280  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
36281      composeDomainResourceElements(element);
36282      if (element.hasIdentifier()) { 
36283        for (Identifier e : element.getIdentifier()) 
36284          composeIdentifier("identifier", e);
36285      }
36286      if (element.hasInstantiatesCanonical()) { 
36287        for (CanonicalType e : element.getInstantiatesCanonical()) 
36288          composeCanonical("instantiatesCanonical", e);
36289      }
36290      if (element.hasInstantiatesUri()) { 
36291        for (UriType e : element.getInstantiatesUri()) 
36292          composeUri("instantiatesUri", e);
36293      }
36294      if (element.hasStatusElement())
36295        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
36296      if (element.hasDataAbsentReason()) {
36297        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
36298      }
36299      if (element.hasPatient()) {
36300        composeReference("patient", element.getPatient());
36301      }
36302      if (element.hasDateElement()) {
36303        composeDateTime("date", element.getDateElement());
36304      }
36305      if (element.hasNameElement()) {
36306        composeString("name", element.getNameElement());
36307      }
36308      if (element.hasRelationship()) {
36309        composeCodeableConcept("relationship", element.getRelationship());
36310      }
36311      if (element.hasSex()) {
36312        composeCodeableConcept("sex", element.getSex());
36313      }
36314      if (element.hasBorn()) {
36315        composeType("born", element.getBorn());
36316      }      if (element.hasAge()) {
36317        composeType("age", element.getAge());
36318      }      if (element.hasEstimatedAgeElement()) {
36319        composeBoolean("estimatedAge", element.getEstimatedAgeElement());
36320      }
36321      if (element.hasDeceased()) {
36322        composeType("deceased", element.getDeceased());
36323      }      if (element.hasReasonCode()) { 
36324        for (CodeableConcept e : element.getReasonCode()) 
36325          composeCodeableConcept("reasonCode", e);
36326      }
36327      if (element.hasReasonReference()) { 
36328        for (Reference e : element.getReasonReference()) 
36329          composeReference("reasonReference", e);
36330      }
36331      if (element.hasNote()) { 
36332        for (Annotation e : element.getNote()) 
36333          composeAnnotation("note", e);
36334      }
36335      if (element.hasCondition()) { 
36336        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
36337          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
36338      }
36339  }
36340
36341  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
36342    if (element != null) {
36343      composeElementAttributes(element);
36344      xml.enter(FHIR_NS, name);
36345      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(element);
36346      composeElementClose(element);
36347      xml.exit(FHIR_NS, name);
36348    }
36349  }
36350
36351  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
36352      composeBackboneElementElements(element);
36353      if (element.hasCode()) {
36354        composeCodeableConcept("code", element.getCode());
36355      }
36356      if (element.hasOutcome()) {
36357        composeCodeableConcept("outcome", element.getOutcome());
36358      }
36359      if (element.hasContributedToDeathElement()) {
36360        composeBoolean("contributedToDeath", element.getContributedToDeathElement());
36361      }
36362      if (element.hasOnset()) {
36363        composeType("onset", element.getOnset());
36364      }      if (element.hasNote()) { 
36365        for (Annotation e : element.getNote()) 
36366          composeAnnotation("note", e);
36367      }
36368  }
36369
36370  protected void composeFlag(String name, Flag element) throws IOException {
36371    if (element != null) {
36372      composeDomainResourceAttributes(element);
36373      xml.enter(FHIR_NS, name);
36374      composeFlagElements(element);
36375      composeElementClose(element);
36376      xml.exit(FHIR_NS, name);
36377    }
36378  }
36379
36380  protected void composeFlagElements(Flag element) throws IOException {
36381      composeDomainResourceElements(element);
36382      if (element.hasIdentifier()) { 
36383        for (Identifier e : element.getIdentifier()) 
36384          composeIdentifier("identifier", e);
36385      }
36386      if (element.hasStatusElement())
36387        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
36388      if (element.hasCategory()) { 
36389        for (CodeableConcept e : element.getCategory()) 
36390          composeCodeableConcept("category", e);
36391      }
36392      if (element.hasCode()) {
36393        composeCodeableConcept("code", element.getCode());
36394      }
36395      if (element.hasSubject()) {
36396        composeReference("subject", element.getSubject());
36397      }
36398      if (element.hasPeriod()) {
36399        composePeriod("period", element.getPeriod());
36400      }
36401      if (element.hasEncounter()) {
36402        composeReference("encounter", element.getEncounter());
36403      }
36404      if (element.hasAuthor()) {
36405        composeReference("author", element.getAuthor());
36406      }
36407  }
36408
36409  protected void composeGoal(String name, Goal element) throws IOException {
36410    if (element != null) {
36411      composeDomainResourceAttributes(element);
36412      xml.enter(FHIR_NS, name);
36413      composeGoalElements(element);
36414      composeElementClose(element);
36415      xml.exit(FHIR_NS, name);
36416    }
36417  }
36418
36419  protected void composeGoalElements(Goal element) throws IOException {
36420      composeDomainResourceElements(element);
36421      if (element.hasIdentifier()) { 
36422        for (Identifier e : element.getIdentifier()) 
36423          composeIdentifier("identifier", e);
36424      }
36425      if (element.hasLifecycleStatusElement())
36426        composeEnumeration("lifecycleStatus", element.getLifecycleStatusElement(), new Goal.GoalLifecycleStatusEnumFactory());
36427      if (element.hasAchievementStatus()) {
36428        composeCodeableConcept("achievementStatus", element.getAchievementStatus());
36429      }
36430      if (element.hasCategory()) { 
36431        for (CodeableConcept e : element.getCategory()) 
36432          composeCodeableConcept("category", e);
36433      }
36434      if (element.hasPriority()) {
36435        composeCodeableConcept("priority", element.getPriority());
36436      }
36437      if (element.hasDescription()) {
36438        composeCodeableConcept("description", element.getDescription());
36439      }
36440      if (element.hasSubject()) {
36441        composeReference("subject", element.getSubject());
36442      }
36443      if (element.hasStart()) {
36444        composeType("start", element.getStart());
36445      }      if (element.hasTarget()) { 
36446        for (Goal.GoalTargetComponent e : element.getTarget()) 
36447          composeGoalGoalTargetComponent("target", e);
36448      }
36449      if (element.hasStatusDateElement()) {
36450        composeDate("statusDate", element.getStatusDateElement());
36451      }
36452      if (element.hasStatusReasonElement()) {
36453        composeString("statusReason", element.getStatusReasonElement());
36454      }
36455      if (element.hasExpressedBy()) {
36456        composeReference("expressedBy", element.getExpressedBy());
36457      }
36458      if (element.hasAddresses()) { 
36459        for (Reference e : element.getAddresses()) 
36460          composeReference("addresses", e);
36461      }
36462      if (element.hasNote()) { 
36463        for (Annotation e : element.getNote()) 
36464          composeAnnotation("note", e);
36465      }
36466      if (element.hasOutcomeCode()) { 
36467        for (CodeableConcept e : element.getOutcomeCode()) 
36468          composeCodeableConcept("outcomeCode", e);
36469      }
36470      if (element.hasOutcomeReference()) { 
36471        for (Reference e : element.getOutcomeReference()) 
36472          composeReference("outcomeReference", e);
36473      }
36474  }
36475
36476  protected void composeGoalGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
36477    if (element != null) {
36478      composeElementAttributes(element);
36479      xml.enter(FHIR_NS, name);
36480      composeGoalGoalTargetComponentElements(element);
36481      composeElementClose(element);
36482      xml.exit(FHIR_NS, name);
36483    }
36484  }
36485
36486  protected void composeGoalGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
36487      composeBackboneElementElements(element);
36488      if (element.hasMeasure()) {
36489        composeCodeableConcept("measure", element.getMeasure());
36490      }
36491      if (element.hasDetail()) {
36492        composeType("detail", element.getDetail());
36493      }      if (element.hasDue()) {
36494        composeType("due", element.getDue());
36495      }  }
36496
36497  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
36498    if (element != null) {
36499      composeDomainResourceAttributes(element);
36500      xml.enter(FHIR_NS, name);
36501      composeGraphDefinitionElements(element);
36502      composeElementClose(element);
36503      xml.exit(FHIR_NS, name);
36504    }
36505  }
36506
36507  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
36508      composeDomainResourceElements(element);
36509      if (element.hasUrlElement()) {
36510        composeUri("url", element.getUrlElement());
36511      }
36512      if (element.hasVersionElement()) {
36513        composeString("version", element.getVersionElement());
36514      }
36515      if (element.hasNameElement()) {
36516        composeString("name", element.getNameElement());
36517      }
36518      if (element.hasStatusElement())
36519        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36520      if (element.hasExperimentalElement()) {
36521        composeBoolean("experimental", element.getExperimentalElement());
36522      }
36523      if (element.hasDateElement()) {
36524        composeDateTime("date", element.getDateElement());
36525      }
36526      if (element.hasPublisherElement()) {
36527        composeString("publisher", element.getPublisherElement());
36528      }
36529      if (element.hasContact()) { 
36530        for (ContactDetail e : element.getContact()) 
36531          composeContactDetail("contact", e);
36532      }
36533      if (element.hasDescriptionElement()) {
36534        composeMarkdown("description", element.getDescriptionElement());
36535      }
36536      if (element.hasUseContext()) { 
36537        for (UsageContext e : element.getUseContext()) 
36538          composeUsageContext("useContext", e);
36539      }
36540      if (element.hasJurisdiction()) { 
36541        for (CodeableConcept e : element.getJurisdiction()) 
36542          composeCodeableConcept("jurisdiction", e);
36543      }
36544      if (element.hasPurposeElement()) {
36545        composeMarkdown("purpose", element.getPurposeElement());
36546      }
36547      if (element.hasStartElement()) {
36548        composeCode("start", element.getStartElement());
36549      }
36550      if (element.hasProfileElement()) {
36551        composeCanonical("profile", element.getProfileElement());
36552      }
36553      if (element.hasLink()) { 
36554        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
36555          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
36556      }
36557  }
36558
36559  protected void composeGraphDefinitionGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
36560    if (element != null) {
36561      composeElementAttributes(element);
36562      xml.enter(FHIR_NS, name);
36563      composeGraphDefinitionGraphDefinitionLinkComponentElements(element);
36564      composeElementClose(element);
36565      xml.exit(FHIR_NS, name);
36566    }
36567  }
36568
36569  protected void composeGraphDefinitionGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
36570      composeBackboneElementElements(element);
36571      if (element.hasPathElement()) {
36572        composeString("path", element.getPathElement());
36573      }
36574      if (element.hasSliceNameElement()) {
36575        composeString("sliceName", element.getSliceNameElement());
36576      }
36577      if (element.hasMinElement()) {
36578        composeInteger("min", element.getMinElement());
36579      }
36580      if (element.hasMaxElement()) {
36581        composeString("max", element.getMaxElement());
36582      }
36583      if (element.hasDescriptionElement()) {
36584        composeString("description", element.getDescriptionElement());
36585      }
36586      if (element.hasTarget()) { 
36587        for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
36588          composeGraphDefinitionGraphDefinitionLinkTargetComponent("target", e);
36589      }
36590  }
36591
36592  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
36593    if (element != null) {
36594      composeElementAttributes(element);
36595      xml.enter(FHIR_NS, name);
36596      composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(element);
36597      composeElementClose(element);
36598      xml.exit(FHIR_NS, name);
36599    }
36600  }
36601
36602  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
36603      composeBackboneElementElements(element);
36604      if (element.hasTypeElement()) {
36605        composeCode("type", element.getTypeElement());
36606      }
36607      if (element.hasParamsElement()) {
36608        composeString("params", element.getParamsElement());
36609      }
36610      if (element.hasProfileElement()) {
36611        composeCanonical("profile", element.getProfileElement());
36612      }
36613      if (element.hasCompartment()) { 
36614        for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
36615          composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
36616      }
36617      if (element.hasLink()) { 
36618        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
36619          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
36620      }
36621  }
36622
36623  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
36624    if (element != null) {
36625      composeElementAttributes(element);
36626      xml.enter(FHIR_NS, name);
36627      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(element);
36628      composeElementClose(element);
36629      xml.exit(FHIR_NS, name);
36630    }
36631  }
36632
36633  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
36634      composeBackboneElementElements(element);
36635      if (element.hasUseElement())
36636        composeEnumeration("use", element.getUseElement(), new GraphDefinition.GraphCompartmentUseEnumFactory());
36637      if (element.hasCodeElement())
36638        composeEnumeration("code", element.getCodeElement(), new GraphDefinition.CompartmentCodeEnumFactory());
36639      if (element.hasRuleElement())
36640        composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
36641      if (element.hasExpressionElement()) {
36642        composeString("expression", element.getExpressionElement());
36643      }
36644      if (element.hasDescriptionElement()) {
36645        composeString("description", element.getDescriptionElement());
36646      }
36647  }
36648
36649  protected void composeGroup(String name, Group element) throws IOException {
36650    if (element != null) {
36651      composeDomainResourceAttributes(element);
36652      xml.enter(FHIR_NS, name);
36653      composeGroupElements(element);
36654      composeElementClose(element);
36655      xml.exit(FHIR_NS, name);
36656    }
36657  }
36658
36659  protected void composeGroupElements(Group element) throws IOException {
36660      composeDomainResourceElements(element);
36661      if (element.hasIdentifier()) { 
36662        for (Identifier e : element.getIdentifier()) 
36663          composeIdentifier("identifier", e);
36664      }
36665      if (element.hasActiveElement()) {
36666        composeBoolean("active", element.getActiveElement());
36667      }
36668      if (element.hasTypeElement())
36669        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
36670      if (element.hasActualElement()) {
36671        composeBoolean("actual", element.getActualElement());
36672      }
36673      if (element.hasCode()) {
36674        composeCodeableConcept("code", element.getCode());
36675      }
36676      if (element.hasNameElement()) {
36677        composeString("name", element.getNameElement());
36678      }
36679      if (element.hasQuantityElement()) {
36680        composeUnsignedInt("quantity", element.getQuantityElement());
36681      }
36682      if (element.hasManagingEntity()) {
36683        composeReference("managingEntity", element.getManagingEntity());
36684      }
36685      if (element.hasCharacteristic()) { 
36686        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
36687          composeGroupGroupCharacteristicComponent("characteristic", e);
36688      }
36689      if (element.hasMember()) { 
36690        for (Group.GroupMemberComponent e : element.getMember()) 
36691          composeGroupGroupMemberComponent("member", e);
36692      }
36693  }
36694
36695  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
36696    if (element != null) {
36697      composeElementAttributes(element);
36698      xml.enter(FHIR_NS, name);
36699      composeGroupGroupCharacteristicComponentElements(element);
36700      composeElementClose(element);
36701      xml.exit(FHIR_NS, name);
36702    }
36703  }
36704
36705  protected void composeGroupGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
36706      composeBackboneElementElements(element);
36707      if (element.hasCode()) {
36708        composeCodeableConcept("code", element.getCode());
36709      }
36710      if (element.hasValue()) {
36711        composeType("value", element.getValue());
36712      }      if (element.hasExcludeElement()) {
36713        composeBoolean("exclude", element.getExcludeElement());
36714      }
36715      if (element.hasPeriod()) {
36716        composePeriod("period", element.getPeriod());
36717      }
36718  }
36719
36720  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
36721    if (element != null) {
36722      composeElementAttributes(element);
36723      xml.enter(FHIR_NS, name);
36724      composeGroupGroupMemberComponentElements(element);
36725      composeElementClose(element);
36726      xml.exit(FHIR_NS, name);
36727    }
36728  }
36729
36730  protected void composeGroupGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
36731      composeBackboneElementElements(element);
36732      if (element.hasEntity()) {
36733        composeReference("entity", element.getEntity());
36734      }
36735      if (element.hasPeriod()) {
36736        composePeriod("period", element.getPeriod());
36737      }
36738      if (element.hasInactiveElement()) {
36739        composeBoolean("inactive", element.getInactiveElement());
36740      }
36741  }
36742
36743  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
36744    if (element != null) {
36745      composeDomainResourceAttributes(element);
36746      xml.enter(FHIR_NS, name);
36747      composeGuidanceResponseElements(element);
36748      composeElementClose(element);
36749      xml.exit(FHIR_NS, name);
36750    }
36751  }
36752
36753  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
36754      composeDomainResourceElements(element);
36755      if (element.hasRequestIdentifier()) {
36756        composeIdentifier("requestIdentifier", element.getRequestIdentifier());
36757      }
36758      if (element.hasIdentifier()) { 
36759        for (Identifier e : element.getIdentifier()) 
36760          composeIdentifier("identifier", e);
36761      }
36762      if (element.hasModule()) {
36763        composeType("module", element.getModule());
36764      }      if (element.hasStatusElement())
36765        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
36766      if (element.hasSubject()) {
36767        composeReference("subject", element.getSubject());
36768      }
36769      if (element.hasEncounter()) {
36770        composeReference("encounter", element.getEncounter());
36771      }
36772      if (element.hasOccurrenceDateTimeElement()) {
36773        composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
36774      }
36775      if (element.hasPerformer()) {
36776        composeReference("performer", element.getPerformer());
36777      }
36778      if (element.hasReasonCode()) { 
36779        for (CodeableConcept e : element.getReasonCode()) 
36780          composeCodeableConcept("reasonCode", e);
36781      }
36782      if (element.hasReasonReference()) { 
36783        for (Reference e : element.getReasonReference()) 
36784          composeReference("reasonReference", e);
36785      }
36786      if (element.hasNote()) { 
36787        for (Annotation e : element.getNote()) 
36788          composeAnnotation("note", e);
36789      }
36790      if (element.hasEvaluationMessage()) { 
36791        for (Reference e : element.getEvaluationMessage()) 
36792          composeReference("evaluationMessage", e);
36793      }
36794      if (element.hasOutputParameters()) {
36795        composeReference("outputParameters", element.getOutputParameters());
36796      }
36797      if (element.hasResult()) {
36798        composeReference("result", element.getResult());
36799      }
36800      if (element.hasDataRequirement()) { 
36801        for (DataRequirement e : element.getDataRequirement()) 
36802          composeDataRequirement("dataRequirement", e);
36803      }
36804  }
36805
36806  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
36807    if (element != null) {
36808      composeDomainResourceAttributes(element);
36809      xml.enter(FHIR_NS, name);
36810      composeHealthcareServiceElements(element);
36811      composeElementClose(element);
36812      xml.exit(FHIR_NS, name);
36813    }
36814  }
36815
36816  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
36817      composeDomainResourceElements(element);
36818      if (element.hasIdentifier()) { 
36819        for (Identifier e : element.getIdentifier()) 
36820          composeIdentifier("identifier", e);
36821      }
36822      if (element.hasActiveElement()) {
36823        composeBoolean("active", element.getActiveElement());
36824      }
36825      if (element.hasProvidedBy()) {
36826        composeReference("providedBy", element.getProvidedBy());
36827      }
36828      if (element.hasCategory()) { 
36829        for (CodeableConcept e : element.getCategory()) 
36830          composeCodeableConcept("category", e);
36831      }
36832      if (element.hasType()) { 
36833        for (CodeableConcept e : element.getType()) 
36834          composeCodeableConcept("type", e);
36835      }
36836      if (element.hasSpecialty()) { 
36837        for (CodeableConcept e : element.getSpecialty()) 
36838          composeCodeableConcept("specialty", e);
36839      }
36840      if (element.hasLocation()) { 
36841        for (Reference e : element.getLocation()) 
36842          composeReference("location", e);
36843      }
36844      if (element.hasNameElement()) {
36845        composeString("name", element.getNameElement());
36846      }
36847      if (element.hasCommentElement()) {
36848        composeString("comment", element.getCommentElement());
36849      }
36850      if (element.hasExtraDetailsElement()) {
36851        composeMarkdown("extraDetails", element.getExtraDetailsElement());
36852      }
36853      if (element.hasPhoto()) {
36854        composeAttachment("photo", element.getPhoto());
36855      }
36856      if (element.hasTelecom()) { 
36857        for (ContactPoint e : element.getTelecom()) 
36858          composeContactPoint("telecom", e);
36859      }
36860      if (element.hasCoverageArea()) { 
36861        for (Reference e : element.getCoverageArea()) 
36862          composeReference("coverageArea", e);
36863      }
36864      if (element.hasServiceProvisionCode()) { 
36865        for (CodeableConcept e : element.getServiceProvisionCode()) 
36866          composeCodeableConcept("serviceProvisionCode", e);
36867      }
36868      if (element.hasEligibility()) { 
36869        for (HealthcareService.HealthcareServiceEligibilityComponent e : element.getEligibility()) 
36870          composeHealthcareServiceHealthcareServiceEligibilityComponent("eligibility", e);
36871      }
36872      if (element.hasProgram()) { 
36873        for (CodeableConcept e : element.getProgram()) 
36874          composeCodeableConcept("program", e);
36875      }
36876      if (element.hasCharacteristic()) { 
36877        for (CodeableConcept e : element.getCharacteristic()) 
36878          composeCodeableConcept("characteristic", e);
36879      }
36880      if (element.hasCommunication()) { 
36881        for (CodeableConcept e : element.getCommunication()) 
36882          composeCodeableConcept("communication", e);
36883      }
36884      if (element.hasReferralMethod()) { 
36885        for (CodeableConcept e : element.getReferralMethod()) 
36886          composeCodeableConcept("referralMethod", e);
36887      }
36888      if (element.hasAppointmentRequiredElement()) {
36889        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
36890      }
36891      if (element.hasAvailableTime()) { 
36892        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
36893          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
36894      }
36895      if (element.hasNotAvailable()) { 
36896        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
36897          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
36898      }
36899      if (element.hasAvailabilityExceptionsElement()) {
36900        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
36901      }
36902      if (element.hasEndpoint()) { 
36903        for (Reference e : element.getEndpoint()) 
36904          composeReference("endpoint", e);
36905      }
36906  }
36907
36908  protected void composeHealthcareServiceHealthcareServiceEligibilityComponent(String name, HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
36909    if (element != null) {
36910      composeElementAttributes(element);
36911      xml.enter(FHIR_NS, name);
36912      composeHealthcareServiceHealthcareServiceEligibilityComponentElements(element);
36913      composeElementClose(element);
36914      xml.exit(FHIR_NS, name);
36915    }
36916  }
36917
36918  protected void composeHealthcareServiceHealthcareServiceEligibilityComponentElements(HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
36919      composeBackboneElementElements(element);
36920      if (element.hasCode()) {
36921        composeCodeableConcept("code", element.getCode());
36922      }
36923      if (element.hasCommentElement()) {
36924        composeMarkdown("comment", element.getCommentElement());
36925      }
36926  }
36927
36928  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
36929    if (element != null) {
36930      composeElementAttributes(element);
36931      xml.enter(FHIR_NS, name);
36932      composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(element);
36933      composeElementClose(element);
36934      xml.exit(FHIR_NS, name);
36935    }
36936  }
36937
36938  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
36939      composeBackboneElementElements(element);
36940        if (element.hasDaysOfWeek()) 
36941          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
36942            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
36943      if (element.hasAllDayElement()) {
36944        composeBoolean("allDay", element.getAllDayElement());
36945      }
36946      if (element.hasAvailableStartTimeElement()) {
36947        composeTime("availableStartTime", element.getAvailableStartTimeElement());
36948      }
36949      if (element.hasAvailableEndTimeElement()) {
36950        composeTime("availableEndTime", element.getAvailableEndTimeElement());
36951      }
36952  }
36953
36954  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
36955    if (element != null) {
36956      composeElementAttributes(element);
36957      xml.enter(FHIR_NS, name);
36958      composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(element);
36959      composeElementClose(element);
36960      xml.exit(FHIR_NS, name);
36961    }
36962  }
36963
36964  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
36965      composeBackboneElementElements(element);
36966      if (element.hasDescriptionElement()) {
36967        composeString("description", element.getDescriptionElement());
36968      }
36969      if (element.hasDuring()) {
36970        composePeriod("during", element.getDuring());
36971      }
36972  }
36973
36974  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
36975    if (element != null) {
36976      composeDomainResourceAttributes(element);
36977      xml.enter(FHIR_NS, name);
36978      composeImagingStudyElements(element);
36979      composeElementClose(element);
36980      xml.exit(FHIR_NS, name);
36981    }
36982  }
36983
36984  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
36985      composeDomainResourceElements(element);
36986      if (element.hasIdentifier()) { 
36987        for (Identifier e : element.getIdentifier()) 
36988          composeIdentifier("identifier", e);
36989      }
36990      if (element.hasStatusElement())
36991        composeEnumeration("status", element.getStatusElement(), new ImagingStudy.ImagingStudyStatusEnumFactory());
36992      if (element.hasModality()) { 
36993        for (Coding e : element.getModality()) 
36994          composeCoding("modality", e);
36995      }
36996      if (element.hasSubject()) {
36997        composeReference("subject", element.getSubject());
36998      }
36999      if (element.hasEncounter()) {
37000        composeReference("encounter", element.getEncounter());
37001      }
37002      if (element.hasStartedElement()) {
37003        composeDateTime("started", element.getStartedElement());
37004      }
37005      if (element.hasBasedOn()) { 
37006        for (Reference e : element.getBasedOn()) 
37007          composeReference("basedOn", e);
37008      }
37009      if (element.hasReferrer()) {
37010        composeReference("referrer", element.getReferrer());
37011      }
37012      if (element.hasInterpreter()) { 
37013        for (Reference e : element.getInterpreter()) 
37014          composeReference("interpreter", e);
37015      }
37016      if (element.hasEndpoint()) { 
37017        for (Reference e : element.getEndpoint()) 
37018          composeReference("endpoint", e);
37019      }
37020      if (element.hasNumberOfSeriesElement()) {
37021        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
37022      }
37023      if (element.hasNumberOfInstancesElement()) {
37024        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
37025      }
37026      if (element.hasProcedureReference()) {
37027        composeReference("procedureReference", element.getProcedureReference());
37028      }
37029      if (element.hasProcedureCode()) { 
37030        for (CodeableConcept e : element.getProcedureCode()) 
37031          composeCodeableConcept("procedureCode", e);
37032      }
37033      if (element.hasLocation()) {
37034        composeReference("location", element.getLocation());
37035      }
37036      if (element.hasReasonCode()) { 
37037        for (CodeableConcept e : element.getReasonCode()) 
37038          composeCodeableConcept("reasonCode", e);
37039      }
37040      if (element.hasReasonReference()) { 
37041        for (Reference e : element.getReasonReference()) 
37042          composeReference("reasonReference", e);
37043      }
37044      if (element.hasNote()) { 
37045        for (Annotation e : element.getNote()) 
37046          composeAnnotation("note", e);
37047      }
37048      if (element.hasDescriptionElement()) {
37049        composeString("description", element.getDescriptionElement());
37050      }
37051      if (element.hasSeries()) { 
37052        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
37053          composeImagingStudyImagingStudySeriesComponent("series", e);
37054      }
37055  }
37056
37057  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
37058    if (element != null) {
37059      composeElementAttributes(element);
37060      xml.enter(FHIR_NS, name);
37061      composeImagingStudyImagingStudySeriesComponentElements(element);
37062      composeElementClose(element);
37063      xml.exit(FHIR_NS, name);
37064    }
37065  }
37066
37067  protected void composeImagingStudyImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
37068      composeBackboneElementElements(element);
37069      if (element.hasUidElement()) {
37070        composeId("uid", element.getUidElement());
37071      }
37072      if (element.hasNumberElement()) {
37073        composeUnsignedInt("number", element.getNumberElement());
37074      }
37075      if (element.hasModality()) {
37076        composeCoding("modality", element.getModality());
37077      }
37078      if (element.hasDescriptionElement()) {
37079        composeString("description", element.getDescriptionElement());
37080      }
37081      if (element.hasNumberOfInstancesElement()) {
37082        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
37083      }
37084      if (element.hasEndpoint()) { 
37085        for (Reference e : element.getEndpoint()) 
37086          composeReference("endpoint", e);
37087      }
37088      if (element.hasBodySite()) {
37089        composeCoding("bodySite", element.getBodySite());
37090      }
37091      if (element.hasLaterality()) {
37092        composeCoding("laterality", element.getLaterality());
37093      }
37094      if (element.hasSpecimen()) { 
37095        for (Reference e : element.getSpecimen()) 
37096          composeReference("specimen", e);
37097      }
37098      if (element.hasStartedElement()) {
37099        composeDateTime("started", element.getStartedElement());
37100      }
37101      if (element.hasPerformer()) { 
37102        for (ImagingStudy.ImagingStudySeriesPerformerComponent e : element.getPerformer()) 
37103          composeImagingStudyImagingStudySeriesPerformerComponent("performer", e);
37104      }
37105      if (element.hasInstance()) { 
37106        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
37107          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
37108      }
37109  }
37110
37111  protected void composeImagingStudyImagingStudySeriesPerformerComponent(String name, ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
37112    if (element != null) {
37113      composeElementAttributes(element);
37114      xml.enter(FHIR_NS, name);
37115      composeImagingStudyImagingStudySeriesPerformerComponentElements(element);
37116      composeElementClose(element);
37117      xml.exit(FHIR_NS, name);
37118    }
37119  }
37120
37121  protected void composeImagingStudyImagingStudySeriesPerformerComponentElements(ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
37122      composeBackboneElementElements(element);
37123      if (element.hasFunction()) {
37124        composeCodeableConcept("function", element.getFunction());
37125      }
37126      if (element.hasActor()) {
37127        composeReference("actor", element.getActor());
37128      }
37129  }
37130
37131  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
37132    if (element != null) {
37133      composeElementAttributes(element);
37134      xml.enter(FHIR_NS, name);
37135      composeImagingStudyImagingStudySeriesInstanceComponentElements(element);
37136      composeElementClose(element);
37137      xml.exit(FHIR_NS, name);
37138    }
37139  }
37140
37141  protected void composeImagingStudyImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
37142      composeBackboneElementElements(element);
37143      if (element.hasUidElement()) {
37144        composeId("uid", element.getUidElement());
37145      }
37146      if (element.hasSopClass()) {
37147        composeCoding("sopClass", element.getSopClass());
37148      }
37149      if (element.hasNumberElement()) {
37150        composeUnsignedInt("number", element.getNumberElement());
37151      }
37152      if (element.hasTitleElement()) {
37153        composeString("title", element.getTitleElement());
37154      }
37155  }
37156
37157  protected void composeImmunization(String name, Immunization element) throws IOException {
37158    if (element != null) {
37159      composeDomainResourceAttributes(element);
37160      xml.enter(FHIR_NS, name);
37161      composeImmunizationElements(element);
37162      composeElementClose(element);
37163      xml.exit(FHIR_NS, name);
37164    }
37165  }
37166
37167  protected void composeImmunizationElements(Immunization element) throws IOException {
37168      composeDomainResourceElements(element);
37169      if (element.hasIdentifier()) { 
37170        for (Identifier e : element.getIdentifier()) 
37171          composeIdentifier("identifier", e);
37172      }
37173      if (element.hasStatusElement())
37174        composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusEnumFactory());
37175      if (element.hasStatusReason()) {
37176        composeCodeableConcept("statusReason", element.getStatusReason());
37177      }
37178      if (element.hasVaccineCode()) {
37179        composeCodeableConcept("vaccineCode", element.getVaccineCode());
37180      }
37181      if (element.hasPatient()) {
37182        composeReference("patient", element.getPatient());
37183      }
37184      if (element.hasEncounter()) {
37185        composeReference("encounter", element.getEncounter());
37186      }
37187      if (element.hasOccurrence()) {
37188        composeType("occurrence", element.getOccurrence());
37189      }      if (element.hasRecordedElement()) {
37190        composeDateTime("recorded", element.getRecordedElement());
37191      }
37192      if (element.hasPrimarySourceElement()) {
37193        composeBoolean("primarySource", element.getPrimarySourceElement());
37194      }
37195      if (element.hasReportOrigin()) {
37196        composeCodeableConcept("reportOrigin", element.getReportOrigin());
37197      }
37198      if (element.hasLocation()) {
37199        composeReference("location", element.getLocation());
37200      }
37201      if (element.hasManufacturer()) {
37202        composeReference("manufacturer", element.getManufacturer());
37203      }
37204      if (element.hasLotNumberElement()) {
37205        composeString("lotNumber", element.getLotNumberElement());
37206      }
37207      if (element.hasExpirationDateElement()) {
37208        composeDate("expirationDate", element.getExpirationDateElement());
37209      }
37210      if (element.hasSite()) {
37211        composeCodeableConcept("site", element.getSite());
37212      }
37213      if (element.hasRoute()) {
37214        composeCodeableConcept("route", element.getRoute());
37215      }
37216      if (element.hasDoseQuantity()) {
37217        composeQuantity("doseQuantity", element.getDoseQuantity());
37218      }
37219      if (element.hasPerformer()) { 
37220        for (Immunization.ImmunizationPerformerComponent e : element.getPerformer()) 
37221          composeImmunizationImmunizationPerformerComponent("performer", e);
37222      }
37223      if (element.hasNote()) { 
37224        for (Annotation e : element.getNote()) 
37225          composeAnnotation("note", e);
37226      }
37227      if (element.hasReasonCode()) { 
37228        for (CodeableConcept e : element.getReasonCode()) 
37229          composeCodeableConcept("reasonCode", e);
37230      }
37231      if (element.hasReasonReference()) { 
37232        for (Reference e : element.getReasonReference()) 
37233          composeReference("reasonReference", e);
37234      }
37235      if (element.hasIsSubpotentElement()) {
37236        composeBoolean("isSubpotent", element.getIsSubpotentElement());
37237      }
37238      if (element.hasSubpotentReason()) { 
37239        for (CodeableConcept e : element.getSubpotentReason()) 
37240          composeCodeableConcept("subpotentReason", e);
37241      }
37242      if (element.hasEducation()) { 
37243        for (Immunization.ImmunizationEducationComponent e : element.getEducation()) 
37244          composeImmunizationImmunizationEducationComponent("education", e);
37245      }
37246      if (element.hasProgramEligibility()) { 
37247        for (CodeableConcept e : element.getProgramEligibility()) 
37248          composeCodeableConcept("programEligibility", e);
37249      }
37250      if (element.hasFundingSource()) {
37251        composeCodeableConcept("fundingSource", element.getFundingSource());
37252      }
37253      if (element.hasReaction()) { 
37254        for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
37255          composeImmunizationImmunizationReactionComponent("reaction", e);
37256      }
37257      if (element.hasProtocolApplied()) { 
37258        for (Immunization.ImmunizationProtocolAppliedComponent e : element.getProtocolApplied()) 
37259          composeImmunizationImmunizationProtocolAppliedComponent("protocolApplied", e);
37260      }
37261  }
37262
37263  protected void composeImmunizationImmunizationPerformerComponent(String name, Immunization.ImmunizationPerformerComponent element) throws IOException {
37264    if (element != null) {
37265      composeElementAttributes(element);
37266      xml.enter(FHIR_NS, name);
37267      composeImmunizationImmunizationPerformerComponentElements(element);
37268      composeElementClose(element);
37269      xml.exit(FHIR_NS, name);
37270    }
37271  }
37272
37273  protected void composeImmunizationImmunizationPerformerComponentElements(Immunization.ImmunizationPerformerComponent element) throws IOException {
37274      composeBackboneElementElements(element);
37275      if (element.hasFunction()) {
37276        composeCodeableConcept("function", element.getFunction());
37277      }
37278      if (element.hasActor()) {
37279        composeReference("actor", element.getActor());
37280      }
37281  }
37282
37283  protected void composeImmunizationImmunizationEducationComponent(String name, Immunization.ImmunizationEducationComponent element) throws IOException {
37284    if (element != null) {
37285      composeElementAttributes(element);
37286      xml.enter(FHIR_NS, name);
37287      composeImmunizationImmunizationEducationComponentElements(element);
37288      composeElementClose(element);
37289      xml.exit(FHIR_NS, name);
37290    }
37291  }
37292
37293  protected void composeImmunizationImmunizationEducationComponentElements(Immunization.ImmunizationEducationComponent element) throws IOException {
37294      composeBackboneElementElements(element);
37295      if (element.hasDocumentTypeElement()) {
37296        composeString("documentType", element.getDocumentTypeElement());
37297      }
37298      if (element.hasReferenceElement()) {
37299        composeUri("reference", element.getReferenceElement());
37300      }
37301      if (element.hasPublicationDateElement()) {
37302        composeDateTime("publicationDate", element.getPublicationDateElement());
37303      }
37304      if (element.hasPresentationDateElement()) {
37305        composeDateTime("presentationDate", element.getPresentationDateElement());
37306      }
37307  }
37308
37309  protected void composeImmunizationImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
37310    if (element != null) {
37311      composeElementAttributes(element);
37312      xml.enter(FHIR_NS, name);
37313      composeImmunizationImmunizationReactionComponentElements(element);
37314      composeElementClose(element);
37315      xml.exit(FHIR_NS, name);
37316    }
37317  }
37318
37319  protected void composeImmunizationImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
37320      composeBackboneElementElements(element);
37321      if (element.hasDateElement()) {
37322        composeDateTime("date", element.getDateElement());
37323      }
37324      if (element.hasDetail()) {
37325        composeReference("detail", element.getDetail());
37326      }
37327      if (element.hasReportedElement()) {
37328        composeBoolean("reported", element.getReportedElement());
37329      }
37330  }
37331
37332  protected void composeImmunizationImmunizationProtocolAppliedComponent(String name, Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
37333    if (element != null) {
37334      composeElementAttributes(element);
37335      xml.enter(FHIR_NS, name);
37336      composeImmunizationImmunizationProtocolAppliedComponentElements(element);
37337      composeElementClose(element);
37338      xml.exit(FHIR_NS, name);
37339    }
37340  }
37341
37342  protected void composeImmunizationImmunizationProtocolAppliedComponentElements(Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
37343      composeBackboneElementElements(element);
37344      if (element.hasSeriesElement()) {
37345        composeString("series", element.getSeriesElement());
37346      }
37347      if (element.hasAuthority()) {
37348        composeReference("authority", element.getAuthority());
37349      }
37350      if (element.hasTargetDisease()) { 
37351        for (CodeableConcept e : element.getTargetDisease()) 
37352          composeCodeableConcept("targetDisease", e);
37353      }
37354      if (element.hasDoseNumber()) {
37355        composeType("doseNumber", element.getDoseNumber());
37356      }      if (element.hasSeriesDoses()) {
37357        composeType("seriesDoses", element.getSeriesDoses());
37358      }  }
37359
37360  protected void composeImmunizationEvaluation(String name, ImmunizationEvaluation element) throws IOException {
37361    if (element != null) {
37362      composeDomainResourceAttributes(element);
37363      xml.enter(FHIR_NS, name);
37364      composeImmunizationEvaluationElements(element);
37365      composeElementClose(element);
37366      xml.exit(FHIR_NS, name);
37367    }
37368  }
37369
37370  protected void composeImmunizationEvaluationElements(ImmunizationEvaluation element) throws IOException {
37371      composeDomainResourceElements(element);
37372      if (element.hasIdentifier()) { 
37373        for (Identifier e : element.getIdentifier()) 
37374          composeIdentifier("identifier", e);
37375      }
37376      if (element.hasStatusElement())
37377        composeEnumeration("status", element.getStatusElement(), new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory());
37378      if (element.hasPatient()) {
37379        composeReference("patient", element.getPatient());
37380      }
37381      if (element.hasDateElement()) {
37382        composeDateTime("date", element.getDateElement());
37383      }
37384      if (element.hasAuthority()) {
37385        composeReference("authority", element.getAuthority());
37386      }
37387      if (element.hasTargetDisease()) {
37388        composeCodeableConcept("targetDisease", element.getTargetDisease());
37389      }
37390      if (element.hasImmunizationEvent()) {
37391        composeReference("immunizationEvent", element.getImmunizationEvent());
37392      }
37393      if (element.hasDoseStatus()) {
37394        composeCodeableConcept("doseStatus", element.getDoseStatus());
37395      }
37396      if (element.hasDoseStatusReason()) { 
37397        for (CodeableConcept e : element.getDoseStatusReason()) 
37398          composeCodeableConcept("doseStatusReason", e);
37399      }
37400      if (element.hasDescriptionElement()) {
37401        composeString("description", element.getDescriptionElement());
37402      }
37403      if (element.hasSeriesElement()) {
37404        composeString("series", element.getSeriesElement());
37405      }
37406      if (element.hasDoseNumber()) {
37407        composeType("doseNumber", element.getDoseNumber());
37408      }      if (element.hasSeriesDoses()) {
37409        composeType("seriesDoses", element.getSeriesDoses());
37410      }  }
37411
37412  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
37413    if (element != null) {
37414      composeDomainResourceAttributes(element);
37415      xml.enter(FHIR_NS, name);
37416      composeImmunizationRecommendationElements(element);
37417      composeElementClose(element);
37418      xml.exit(FHIR_NS, name);
37419    }
37420  }
37421
37422  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
37423      composeDomainResourceElements(element);
37424      if (element.hasIdentifier()) { 
37425        for (Identifier e : element.getIdentifier()) 
37426          composeIdentifier("identifier", e);
37427      }
37428      if (element.hasPatient()) {
37429        composeReference("patient", element.getPatient());
37430      }
37431      if (element.hasDateElement()) {
37432        composeDateTime("date", element.getDateElement());
37433      }
37434      if (element.hasAuthority()) {
37435        composeReference("authority", element.getAuthority());
37436      }
37437      if (element.hasRecommendation()) { 
37438        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
37439          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
37440      }
37441  }
37442
37443  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
37444    if (element != null) {
37445      composeElementAttributes(element);
37446      xml.enter(FHIR_NS, name);
37447      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(element);
37448      composeElementClose(element);
37449      xml.exit(FHIR_NS, name);
37450    }
37451  }
37452
37453  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
37454      composeBackboneElementElements(element);
37455      if (element.hasVaccineCode()) { 
37456        for (CodeableConcept e : element.getVaccineCode()) 
37457          composeCodeableConcept("vaccineCode", e);
37458      }
37459      if (element.hasTargetDisease()) {
37460        composeCodeableConcept("targetDisease", element.getTargetDisease());
37461      }
37462      if (element.hasContraindicatedVaccineCode()) { 
37463        for (CodeableConcept e : element.getContraindicatedVaccineCode()) 
37464          composeCodeableConcept("contraindicatedVaccineCode", e);
37465      }
37466      if (element.hasForecastStatus()) {
37467        composeCodeableConcept("forecastStatus", element.getForecastStatus());
37468      }
37469      if (element.hasForecastReason()) { 
37470        for (CodeableConcept e : element.getForecastReason()) 
37471          composeCodeableConcept("forecastReason", e);
37472      }
37473      if (element.hasDateCriterion()) { 
37474        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
37475          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
37476      }
37477      if (element.hasDescriptionElement()) {
37478        composeString("description", element.getDescriptionElement());
37479      }
37480      if (element.hasSeriesElement()) {
37481        composeString("series", element.getSeriesElement());
37482      }
37483      if (element.hasDoseNumber()) {
37484        composeType("doseNumber", element.getDoseNumber());
37485      }      if (element.hasSeriesDoses()) {
37486        composeType("seriesDoses", element.getSeriesDoses());
37487      }      if (element.hasSupportingImmunization()) { 
37488        for (Reference e : element.getSupportingImmunization()) 
37489          composeReference("supportingImmunization", e);
37490      }
37491      if (element.hasSupportingPatientInformation()) { 
37492        for (Reference e : element.getSupportingPatientInformation()) 
37493          composeReference("supportingPatientInformation", e);
37494      }
37495  }
37496
37497  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
37498    if (element != null) {
37499      composeElementAttributes(element);
37500      xml.enter(FHIR_NS, name);
37501      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
37502      composeElementClose(element);
37503      xml.exit(FHIR_NS, name);
37504    }
37505  }
37506
37507  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
37508      composeBackboneElementElements(element);
37509      if (element.hasCode()) {
37510        composeCodeableConcept("code", element.getCode());
37511      }
37512      if (element.hasValueElement()) {
37513        composeDateTime("value", element.getValueElement());
37514      }
37515  }
37516
37517  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
37518    if (element != null) {
37519      composeDomainResourceAttributes(element);
37520      xml.enter(FHIR_NS, name);
37521      composeImplementationGuideElements(element);
37522      composeElementClose(element);
37523      xml.exit(FHIR_NS, name);
37524    }
37525  }
37526
37527  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
37528      composeDomainResourceElements(element);
37529      if (element.hasUrlElement()) {
37530        composeUri("url", element.getUrlElement());
37531      }
37532      if (element.hasVersionElement()) {
37533        composeString("version", element.getVersionElement());
37534      }
37535      if (element.hasNameElement()) {
37536        composeString("name", element.getNameElement());
37537      }
37538      if (element.hasTitleElement()) {
37539        composeString("title", element.getTitleElement());
37540      }
37541      if (element.hasStatusElement())
37542        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37543      if (element.hasExperimentalElement()) {
37544        composeBoolean("experimental", element.getExperimentalElement());
37545      }
37546      if (element.hasDateElement()) {
37547        composeDateTime("date", element.getDateElement());
37548      }
37549      if (element.hasPublisherElement()) {
37550        composeString("publisher", element.getPublisherElement());
37551      }
37552      if (element.hasContact()) { 
37553        for (ContactDetail e : element.getContact()) 
37554          composeContactDetail("contact", e);
37555      }
37556      if (element.hasDescriptionElement()) {
37557        composeMarkdown("description", element.getDescriptionElement());
37558      }
37559      if (element.hasUseContext()) { 
37560        for (UsageContext e : element.getUseContext()) 
37561          composeUsageContext("useContext", e);
37562      }
37563      if (element.hasJurisdiction()) { 
37564        for (CodeableConcept e : element.getJurisdiction()) 
37565          composeCodeableConcept("jurisdiction", e);
37566      }
37567      if (element.hasCopyrightElement()) {
37568        composeMarkdown("copyright", element.getCopyrightElement());
37569      }
37570      if (element.hasPackageIdElement()) {
37571        composeId("packageId", element.getPackageIdElement());
37572      }
37573      if (element.hasLicenseElement())
37574        composeEnumeration("license", element.getLicenseElement(), new ImplementationGuide.SPDXLicenseEnumFactory());
37575        if (element.hasFhirVersion()) 
37576          for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
37577            composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
37578      if (element.hasDependsOn()) { 
37579        for (ImplementationGuide.ImplementationGuideDependsOnComponent e : element.getDependsOn()) 
37580          composeImplementationGuideImplementationGuideDependsOnComponent("dependsOn", e);
37581      }
37582      if (element.hasGlobal()) { 
37583        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
37584          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
37585      }
37586      if (element.hasDefinition()) {
37587        composeImplementationGuideImplementationGuideDefinitionComponent("definition", element.getDefinition());
37588      }
37589      if (element.hasManifest()) {
37590        composeImplementationGuideImplementationGuideManifestComponent("manifest", element.getManifest());
37591      }
37592  }
37593
37594  protected void composeImplementationGuideImplementationGuideDependsOnComponent(String name, ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
37595    if (element != null) {
37596      composeElementAttributes(element);
37597      xml.enter(FHIR_NS, name);
37598      composeImplementationGuideImplementationGuideDependsOnComponentElements(element);
37599      composeElementClose(element);
37600      xml.exit(FHIR_NS, name);
37601    }
37602  }
37603
37604  protected void composeImplementationGuideImplementationGuideDependsOnComponentElements(ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
37605      composeBackboneElementElements(element);
37606      if (element.hasUriElement()) {
37607        composeCanonical("uri", element.getUriElement());
37608      }
37609      if (element.hasPackageIdElement()) {
37610        composeId("packageId", element.getPackageIdElement());
37611      }
37612      if (element.hasVersionElement()) {
37613        composeString("version", element.getVersionElement());
37614      }
37615  }
37616
37617  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
37618    if (element != null) {
37619      composeElementAttributes(element);
37620      xml.enter(FHIR_NS, name);
37621      composeImplementationGuideImplementationGuideGlobalComponentElements(element);
37622      composeElementClose(element);
37623      xml.exit(FHIR_NS, name);
37624    }
37625  }
37626
37627  protected void composeImplementationGuideImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
37628      composeBackboneElementElements(element);
37629      if (element.hasTypeElement()) {
37630        composeCode("type", element.getTypeElement());
37631      }
37632      if (element.hasProfileElement()) {
37633        composeCanonical("profile", element.getProfileElement());
37634      }
37635  }
37636
37637  protected void composeImplementationGuideImplementationGuideDefinitionComponent(String name, ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
37638    if (element != null) {
37639      composeElementAttributes(element);
37640      xml.enter(FHIR_NS, name);
37641      composeImplementationGuideImplementationGuideDefinitionComponentElements(element);
37642      composeElementClose(element);
37643      xml.exit(FHIR_NS, name);
37644    }
37645  }
37646
37647  protected void composeImplementationGuideImplementationGuideDefinitionComponentElements(ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
37648      composeBackboneElementElements(element);
37649      if (element.hasGrouping()) { 
37650        for (ImplementationGuide.ImplementationGuideDefinitionGroupingComponent e : element.getGrouping()) 
37651          composeImplementationGuideImplementationGuideDefinitionGroupingComponent("grouping", e);
37652      }
37653      if (element.hasResource()) { 
37654        for (ImplementationGuide.ImplementationGuideDefinitionResourceComponent e : element.getResource()) 
37655          composeImplementationGuideImplementationGuideDefinitionResourceComponent("resource", e);
37656      }
37657      if (element.hasPage()) {
37658        composeImplementationGuideImplementationGuideDefinitionPageComponent("page", element.getPage());
37659      }
37660      if (element.hasParameter()) { 
37661        for (ImplementationGuide.ImplementationGuideDefinitionParameterComponent e : element.getParameter()) 
37662          composeImplementationGuideImplementationGuideDefinitionParameterComponent("parameter", e);
37663      }
37664      if (element.hasTemplate()) { 
37665        for (ImplementationGuide.ImplementationGuideDefinitionTemplateComponent e : element.getTemplate()) 
37666          composeImplementationGuideImplementationGuideDefinitionTemplateComponent("template", e);
37667      }
37668  }
37669
37670  protected void composeImplementationGuideImplementationGuideDefinitionGroupingComponent(String name, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
37671    if (element != null) {
37672      composeElementAttributes(element);
37673      xml.enter(FHIR_NS, name);
37674      composeImplementationGuideImplementationGuideDefinitionGroupingComponentElements(element);
37675      composeElementClose(element);
37676      xml.exit(FHIR_NS, name);
37677    }
37678  }
37679
37680  protected void composeImplementationGuideImplementationGuideDefinitionGroupingComponentElements(ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
37681      composeBackboneElementElements(element);
37682      if (element.hasNameElement()) {
37683        composeString("name", element.getNameElement());
37684      }
37685      if (element.hasDescriptionElement()) {
37686        composeString("description", element.getDescriptionElement());
37687      }
37688  }
37689
37690  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponent(String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
37691    if (element != null) {
37692      composeElementAttributes(element);
37693      xml.enter(FHIR_NS, name);
37694      composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(element);
37695      composeElementClose(element);
37696      xml.exit(FHIR_NS, name);
37697    }
37698  }
37699
37700  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
37701      composeBackboneElementElements(element);
37702      if (element.hasReference()) {
37703        composeReference("reference", element.getReference());
37704      }
37705        if (element.hasFhirVersion()) 
37706          for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
37707            composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
37708      if (element.hasNameElement()) {
37709        composeString("name", element.getNameElement());
37710      }
37711      if (element.hasDescriptionElement()) {
37712        composeString("description", element.getDescriptionElement());
37713      }
37714      if (element.hasExample()) {
37715        composeType("example", element.getExample());
37716      }      if (element.hasGroupingIdElement()) {
37717        composeId("groupingId", element.getGroupingIdElement());
37718      }
37719  }
37720
37721  protected void composeImplementationGuideImplementationGuideDefinitionPageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
37722    if (element != null) {
37723      composeElementAttributes(element);
37724      xml.enter(FHIR_NS, name);
37725      composeImplementationGuideImplementationGuideDefinitionPageComponentElements(element);
37726      composeElementClose(element);
37727      xml.exit(FHIR_NS, name);
37728    }
37729  }
37730
37731  protected void composeImplementationGuideImplementationGuideDefinitionPageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
37732      composeBackboneElementElements(element);
37733      if (element.hasName()) {
37734        composeType("name", element.getName());
37735      }      if (element.hasTitleElement()) {
37736        composeString("title", element.getTitleElement());
37737      }
37738      if (element.hasGenerationElement())
37739        composeEnumeration("generation", element.getGenerationElement(), new ImplementationGuide.GuidePageGenerationEnumFactory());
37740      if (element.hasPage()) { 
37741        for (ImplementationGuide.ImplementationGuideDefinitionPageComponent e : element.getPage()) 
37742          composeImplementationGuideImplementationGuideDefinitionPageComponent("page", e);
37743      }
37744  }
37745
37746  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponent(String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
37747    if (element != null) {
37748      composeElementAttributes(element);
37749      xml.enter(FHIR_NS, name);
37750      composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(element);
37751      composeElementClose(element);
37752      xml.exit(FHIR_NS, name);
37753    }
37754  }
37755
37756  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
37757      composeBackboneElementElements(element);
37758      if (element.hasCodeElement())
37759        composeString("code", element.getCodeElement());
37760      if (element.hasValueElement()) {
37761        composeString("value", element.getValueElement());
37762      }
37763  }
37764
37765  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponent(String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
37766    if (element != null) {
37767      composeElementAttributes(element);
37768      xml.enter(FHIR_NS, name);
37769      composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(element);
37770      composeElementClose(element);
37771      xml.exit(FHIR_NS, name);
37772    }
37773  }
37774
37775  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
37776      composeBackboneElementElements(element);
37777      if (element.hasCodeElement()) {
37778        composeCode("code", element.getCodeElement());
37779      }
37780      if (element.hasSourceElement()) {
37781        composeString("source", element.getSourceElement());
37782      }
37783      if (element.hasScopeElement()) {
37784        composeString("scope", element.getScopeElement());
37785      }
37786  }
37787
37788  protected void composeImplementationGuideImplementationGuideManifestComponent(String name, ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
37789    if (element != null) {
37790      composeElementAttributes(element);
37791      xml.enter(FHIR_NS, name);
37792      composeImplementationGuideImplementationGuideManifestComponentElements(element);
37793      composeElementClose(element);
37794      xml.exit(FHIR_NS, name);
37795    }
37796  }
37797
37798  protected void composeImplementationGuideImplementationGuideManifestComponentElements(ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
37799      composeBackboneElementElements(element);
37800      if (element.hasRenderingElement()) {
37801        composeUrl("rendering", element.getRenderingElement());
37802      }
37803      if (element.hasResource()) { 
37804        for (ImplementationGuide.ManifestResourceComponent e : element.getResource()) 
37805          composeImplementationGuideManifestResourceComponent("resource", e);
37806      }
37807      if (element.hasPage()) { 
37808        for (ImplementationGuide.ManifestPageComponent e : element.getPage()) 
37809          composeImplementationGuideManifestPageComponent("page", e);
37810      }
37811      if (element.hasImage()) { 
37812        for (StringType e : element.getImage()) 
37813          composeString("image", e);
37814      }
37815      if (element.hasOther()) { 
37816        for (StringType e : element.getOther()) 
37817          composeString("other", e);
37818      }
37819  }
37820
37821  protected void composeImplementationGuideManifestResourceComponent(String name, ImplementationGuide.ManifestResourceComponent element) throws IOException {
37822    if (element != null) {
37823      composeElementAttributes(element);
37824      xml.enter(FHIR_NS, name);
37825      composeImplementationGuideManifestResourceComponentElements(element);
37826      composeElementClose(element);
37827      xml.exit(FHIR_NS, name);
37828    }
37829  }
37830
37831  protected void composeImplementationGuideManifestResourceComponentElements(ImplementationGuide.ManifestResourceComponent element) throws IOException {
37832      composeBackboneElementElements(element);
37833      if (element.hasReference()) {
37834        composeReference("reference", element.getReference());
37835      }
37836      if (element.hasExample()) {
37837        composeType("example", element.getExample());
37838      }      if (element.hasRelativePathElement()) {
37839        composeUrl("relativePath", element.getRelativePathElement());
37840      }
37841  }
37842
37843  protected void composeImplementationGuideManifestPageComponent(String name, ImplementationGuide.ManifestPageComponent element) throws IOException {
37844    if (element != null) {
37845      composeElementAttributes(element);
37846      xml.enter(FHIR_NS, name);
37847      composeImplementationGuideManifestPageComponentElements(element);
37848      composeElementClose(element);
37849      xml.exit(FHIR_NS, name);
37850    }
37851  }
37852
37853  protected void composeImplementationGuideManifestPageComponentElements(ImplementationGuide.ManifestPageComponent element) throws IOException {
37854      composeBackboneElementElements(element);
37855      if (element.hasNameElement()) {
37856        composeString("name", element.getNameElement());
37857      }
37858      if (element.hasTitleElement()) {
37859        composeString("title", element.getTitleElement());
37860      }
37861      if (element.hasAnchor()) { 
37862        for (StringType e : element.getAnchor()) 
37863          composeString("anchor", e);
37864      }
37865  }
37866
37867  protected void composeInsurancePlan(String name, InsurancePlan element) throws IOException {
37868    if (element != null) {
37869      composeDomainResourceAttributes(element);
37870      xml.enter(FHIR_NS, name);
37871      composeInsurancePlanElements(element);
37872      composeElementClose(element);
37873      xml.exit(FHIR_NS, name);
37874    }
37875  }
37876
37877  protected void composeInsurancePlanElements(InsurancePlan element) throws IOException {
37878      composeDomainResourceElements(element);
37879      if (element.hasIdentifier()) { 
37880        for (Identifier e : element.getIdentifier()) 
37881          composeIdentifier("identifier", e);
37882      }
37883      if (element.hasStatusElement())
37884        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37885      if (element.hasType()) { 
37886        for (CodeableConcept e : element.getType()) 
37887          composeCodeableConcept("type", e);
37888      }
37889      if (element.hasNameElement()) {
37890        composeString("name", element.getNameElement());
37891      }
37892      if (element.hasAlias()) { 
37893        for (StringType e : element.getAlias()) 
37894          composeString("alias", e);
37895      }
37896      if (element.hasPeriod()) {
37897        composePeriod("period", element.getPeriod());
37898      }
37899      if (element.hasOwnedBy()) {
37900        composeReference("ownedBy", element.getOwnedBy());
37901      }
37902      if (element.hasAdministeredBy()) {
37903        composeReference("administeredBy", element.getAdministeredBy());
37904      }
37905      if (element.hasCoverageArea()) { 
37906        for (Reference e : element.getCoverageArea()) 
37907          composeReference("coverageArea", e);
37908      }
37909      if (element.hasContact()) { 
37910        for (InsurancePlan.InsurancePlanContactComponent e : element.getContact()) 
37911          composeInsurancePlanInsurancePlanContactComponent("contact", e);
37912      }
37913      if (element.hasEndpoint()) { 
37914        for (Reference e : element.getEndpoint()) 
37915          composeReference("endpoint", e);
37916      }
37917      if (element.hasNetwork()) { 
37918        for (Reference e : element.getNetwork()) 
37919          composeReference("network", e);
37920      }
37921      if (element.hasCoverage()) { 
37922        for (InsurancePlan.InsurancePlanCoverageComponent e : element.getCoverage()) 
37923          composeInsurancePlanInsurancePlanCoverageComponent("coverage", e);
37924      }
37925      if (element.hasPlan()) { 
37926        for (InsurancePlan.InsurancePlanPlanComponent e : element.getPlan()) 
37927          composeInsurancePlanInsurancePlanPlanComponent("plan", e);
37928      }
37929  }
37930
37931  protected void composeInsurancePlanInsurancePlanContactComponent(String name, InsurancePlan.InsurancePlanContactComponent element) throws IOException {
37932    if (element != null) {
37933      composeElementAttributes(element);
37934      xml.enter(FHIR_NS, name);
37935      composeInsurancePlanInsurancePlanContactComponentElements(element);
37936      composeElementClose(element);
37937      xml.exit(FHIR_NS, name);
37938    }
37939  }
37940
37941  protected void composeInsurancePlanInsurancePlanContactComponentElements(InsurancePlan.InsurancePlanContactComponent element) throws IOException {
37942      composeBackboneElementElements(element);
37943      if (element.hasPurpose()) {
37944        composeCodeableConcept("purpose", element.getPurpose());
37945      }
37946      if (element.hasName()) {
37947        composeHumanName("name", element.getName());
37948      }
37949      if (element.hasTelecom()) { 
37950        for (ContactPoint e : element.getTelecom()) 
37951          composeContactPoint("telecom", e);
37952      }
37953      if (element.hasAddress()) {
37954        composeAddress("address", element.getAddress());
37955      }
37956  }
37957
37958  protected void composeInsurancePlanInsurancePlanCoverageComponent(String name, InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
37959    if (element != null) {
37960      composeElementAttributes(element);
37961      xml.enter(FHIR_NS, name);
37962      composeInsurancePlanInsurancePlanCoverageComponentElements(element);
37963      composeElementClose(element);
37964      xml.exit(FHIR_NS, name);
37965    }
37966  }
37967
37968  protected void composeInsurancePlanInsurancePlanCoverageComponentElements(InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
37969      composeBackboneElementElements(element);
37970      if (element.hasType()) {
37971        composeCodeableConcept("type", element.getType());
37972      }
37973      if (element.hasNetwork()) { 
37974        for (Reference e : element.getNetwork()) 
37975          composeReference("network", e);
37976      }
37977      if (element.hasBenefit()) { 
37978        for (InsurancePlan.CoverageBenefitComponent e : element.getBenefit()) 
37979          composeInsurancePlanCoverageBenefitComponent("benefit", e);
37980      }
37981  }
37982
37983  protected void composeInsurancePlanCoverageBenefitComponent(String name, InsurancePlan.CoverageBenefitComponent element) throws IOException {
37984    if (element != null) {
37985      composeElementAttributes(element);
37986      xml.enter(FHIR_NS, name);
37987      composeInsurancePlanCoverageBenefitComponentElements(element);
37988      composeElementClose(element);
37989      xml.exit(FHIR_NS, name);
37990    }
37991  }
37992
37993  protected void composeInsurancePlanCoverageBenefitComponentElements(InsurancePlan.CoverageBenefitComponent element) throws IOException {
37994      composeBackboneElementElements(element);
37995      if (element.hasType()) {
37996        composeCodeableConcept("type", element.getType());
37997      }
37998      if (element.hasRequirementElement()) {
37999        composeString("requirement", element.getRequirementElement());
38000      }
38001      if (element.hasLimit()) { 
38002        for (InsurancePlan.CoverageBenefitLimitComponent e : element.getLimit()) 
38003          composeInsurancePlanCoverageBenefitLimitComponent("limit", e);
38004      }
38005  }
38006
38007  protected void composeInsurancePlanCoverageBenefitLimitComponent(String name, InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
38008    if (element != null) {
38009      composeElementAttributes(element);
38010      xml.enter(FHIR_NS, name);
38011      composeInsurancePlanCoverageBenefitLimitComponentElements(element);
38012      composeElementClose(element);
38013      xml.exit(FHIR_NS, name);
38014    }
38015  }
38016
38017  protected void composeInsurancePlanCoverageBenefitLimitComponentElements(InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
38018      composeBackboneElementElements(element);
38019      if (element.hasValue()) {
38020        composeQuantity("value", element.getValue());
38021      }
38022      if (element.hasCode()) {
38023        composeCodeableConcept("code", element.getCode());
38024      }
38025  }
38026
38027  protected void composeInsurancePlanInsurancePlanPlanComponent(String name, InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
38028    if (element != null) {
38029      composeElementAttributes(element);
38030      xml.enter(FHIR_NS, name);
38031      composeInsurancePlanInsurancePlanPlanComponentElements(element);
38032      composeElementClose(element);
38033      xml.exit(FHIR_NS, name);
38034    }
38035  }
38036
38037  protected void composeInsurancePlanInsurancePlanPlanComponentElements(InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
38038      composeBackboneElementElements(element);
38039      if (element.hasIdentifier()) { 
38040        for (Identifier e : element.getIdentifier()) 
38041          composeIdentifier("identifier", e);
38042      }
38043      if (element.hasType()) {
38044        composeCodeableConcept("type", element.getType());
38045      }
38046      if (element.hasCoverageArea()) { 
38047        for (Reference e : element.getCoverageArea()) 
38048          composeReference("coverageArea", e);
38049      }
38050      if (element.hasNetwork()) { 
38051        for (Reference e : element.getNetwork()) 
38052          composeReference("network", e);
38053      }
38054      if (element.hasGeneralCost()) { 
38055        for (InsurancePlan.InsurancePlanPlanGeneralCostComponent e : element.getGeneralCost()) 
38056          composeInsurancePlanInsurancePlanPlanGeneralCostComponent("generalCost", e);
38057      }
38058      if (element.hasSpecificCost()) { 
38059        for (InsurancePlan.InsurancePlanPlanSpecificCostComponent e : element.getSpecificCost()) 
38060          composeInsurancePlanInsurancePlanPlanSpecificCostComponent("specificCost", e);
38061      }
38062  }
38063
38064  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponent(String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
38065    if (element != null) {
38066      composeElementAttributes(element);
38067      xml.enter(FHIR_NS, name);
38068      composeInsurancePlanInsurancePlanPlanGeneralCostComponentElements(element);
38069      composeElementClose(element);
38070      xml.exit(FHIR_NS, name);
38071    }
38072  }
38073
38074  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponentElements(InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
38075      composeBackboneElementElements(element);
38076      if (element.hasType()) {
38077        composeCodeableConcept("type", element.getType());
38078      }
38079      if (element.hasGroupSizeElement()) {
38080        composePositiveInt("groupSize", element.getGroupSizeElement());
38081      }
38082      if (element.hasCost()) {
38083        composeMoney("cost", element.getCost());
38084      }
38085      if (element.hasCommentElement()) {
38086        composeString("comment", element.getCommentElement());
38087      }
38088  }
38089
38090  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponent(String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
38091    if (element != null) {
38092      composeElementAttributes(element);
38093      xml.enter(FHIR_NS, name);
38094      composeInsurancePlanInsurancePlanPlanSpecificCostComponentElements(element);
38095      composeElementClose(element);
38096      xml.exit(FHIR_NS, name);
38097    }
38098  }
38099
38100  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponentElements(InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
38101      composeBackboneElementElements(element);
38102      if (element.hasCategory()) {
38103        composeCodeableConcept("category", element.getCategory());
38104      }
38105      if (element.hasBenefit()) { 
38106        for (InsurancePlan.PlanBenefitComponent e : element.getBenefit()) 
38107          composeInsurancePlanPlanBenefitComponent("benefit", e);
38108      }
38109  }
38110
38111  protected void composeInsurancePlanPlanBenefitComponent(String name, InsurancePlan.PlanBenefitComponent element) throws IOException {
38112    if (element != null) {
38113      composeElementAttributes(element);
38114      xml.enter(FHIR_NS, name);
38115      composeInsurancePlanPlanBenefitComponentElements(element);
38116      composeElementClose(element);
38117      xml.exit(FHIR_NS, name);
38118    }
38119  }
38120
38121  protected void composeInsurancePlanPlanBenefitComponentElements(InsurancePlan.PlanBenefitComponent element) throws IOException {
38122      composeBackboneElementElements(element);
38123      if (element.hasType()) {
38124        composeCodeableConcept("type", element.getType());
38125      }
38126      if (element.hasCost()) { 
38127        for (InsurancePlan.PlanBenefitCostComponent e : element.getCost()) 
38128          composeInsurancePlanPlanBenefitCostComponent("cost", e);
38129      }
38130  }
38131
38132  protected void composeInsurancePlanPlanBenefitCostComponent(String name, InsurancePlan.PlanBenefitCostComponent element) throws IOException {
38133    if (element != null) {
38134      composeElementAttributes(element);
38135      xml.enter(FHIR_NS, name);
38136      composeInsurancePlanPlanBenefitCostComponentElements(element);
38137      composeElementClose(element);
38138      xml.exit(FHIR_NS, name);
38139    }
38140  }
38141
38142  protected void composeInsurancePlanPlanBenefitCostComponentElements(InsurancePlan.PlanBenefitCostComponent element) throws IOException {
38143      composeBackboneElementElements(element);
38144      if (element.hasType()) {
38145        composeCodeableConcept("type", element.getType());
38146      }
38147      if (element.hasApplicability()) {
38148        composeCodeableConcept("applicability", element.getApplicability());
38149      }
38150      if (element.hasQualifiers()) { 
38151        for (CodeableConcept e : element.getQualifiers()) 
38152          composeCodeableConcept("qualifiers", e);
38153      }
38154      if (element.hasValue()) {
38155        composeQuantity("value", element.getValue());
38156      }
38157  }
38158
38159  protected void composeInvoice(String name, Invoice element) throws IOException {
38160    if (element != null) {
38161      composeDomainResourceAttributes(element);
38162      xml.enter(FHIR_NS, name);
38163      composeInvoiceElements(element);
38164      composeElementClose(element);
38165      xml.exit(FHIR_NS, name);
38166    }
38167  }
38168
38169  protected void composeInvoiceElements(Invoice element) throws IOException {
38170      composeDomainResourceElements(element);
38171      if (element.hasIdentifier()) { 
38172        for (Identifier e : element.getIdentifier()) 
38173          composeIdentifier("identifier", e);
38174      }
38175      if (element.hasStatusElement())
38176        composeEnumeration("status", element.getStatusElement(), new Invoice.InvoiceStatusEnumFactory());
38177      if (element.hasCancelledReasonElement()) {
38178        composeString("cancelledReason", element.getCancelledReasonElement());
38179      }
38180      if (element.hasType()) {
38181        composeCodeableConcept("type", element.getType());
38182      }
38183      if (element.hasSubject()) {
38184        composeReference("subject", element.getSubject());
38185      }
38186      if (element.hasRecipient()) {
38187        composeReference("recipient", element.getRecipient());
38188      }
38189      if (element.hasDateElement()) {
38190        composeDateTime("date", element.getDateElement());
38191      }
38192      if (element.hasParticipant()) { 
38193        for (Invoice.InvoiceParticipantComponent e : element.getParticipant()) 
38194          composeInvoiceInvoiceParticipantComponent("participant", e);
38195      }
38196      if (element.hasIssuer()) {
38197        composeReference("issuer", element.getIssuer());
38198      }
38199      if (element.hasAccount()) {
38200        composeReference("account", element.getAccount());
38201      }
38202      if (element.hasLineItem()) { 
38203        for (Invoice.InvoiceLineItemComponent e : element.getLineItem()) 
38204          composeInvoiceInvoiceLineItemComponent("lineItem", e);
38205      }
38206      if (element.hasTotalPriceComponent()) { 
38207        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getTotalPriceComponent()) 
38208          composeInvoiceInvoiceLineItemPriceComponentComponent("totalPriceComponent", e);
38209      }
38210      if (element.hasTotalNet()) {
38211        composeMoney("totalNet", element.getTotalNet());
38212      }
38213      if (element.hasTotalGross()) {
38214        composeMoney("totalGross", element.getTotalGross());
38215      }
38216      if (element.hasPaymentTermsElement()) {
38217        composeMarkdown("paymentTerms", element.getPaymentTermsElement());
38218      }
38219      if (element.hasNote()) { 
38220        for (Annotation e : element.getNote()) 
38221          composeAnnotation("note", e);
38222      }
38223  }
38224
38225  protected void composeInvoiceInvoiceParticipantComponent(String name, Invoice.InvoiceParticipantComponent element) throws IOException {
38226    if (element != null) {
38227      composeElementAttributes(element);
38228      xml.enter(FHIR_NS, name);
38229      composeInvoiceInvoiceParticipantComponentElements(element);
38230      composeElementClose(element);
38231      xml.exit(FHIR_NS, name);
38232    }
38233  }
38234
38235  protected void composeInvoiceInvoiceParticipantComponentElements(Invoice.InvoiceParticipantComponent element) throws IOException {
38236      composeBackboneElementElements(element);
38237      if (element.hasRole()) {
38238        composeCodeableConcept("role", element.getRole());
38239      }
38240      if (element.hasActor()) {
38241        composeReference("actor", element.getActor());
38242      }
38243  }
38244
38245  protected void composeInvoiceInvoiceLineItemComponent(String name, Invoice.InvoiceLineItemComponent element) throws IOException {
38246    if (element != null) {
38247      composeElementAttributes(element);
38248      xml.enter(FHIR_NS, name);
38249      composeInvoiceInvoiceLineItemComponentElements(element);
38250      composeElementClose(element);
38251      xml.exit(FHIR_NS, name);
38252    }
38253  }
38254
38255  protected void composeInvoiceInvoiceLineItemComponentElements(Invoice.InvoiceLineItemComponent element) throws IOException {
38256      composeBackboneElementElements(element);
38257      if (element.hasSequenceElement()) {
38258        composePositiveInt("sequence", element.getSequenceElement());
38259      }
38260      if (element.hasChargeItem()) {
38261        composeType("chargeItem", element.getChargeItem());
38262      }      if (element.hasPriceComponent()) { 
38263        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getPriceComponent()) 
38264          composeInvoiceInvoiceLineItemPriceComponentComponent("priceComponent", e);
38265      }
38266  }
38267
38268  protected void composeInvoiceInvoiceLineItemPriceComponentComponent(String name, Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
38269    if (element != null) {
38270      composeElementAttributes(element);
38271      xml.enter(FHIR_NS, name);
38272      composeInvoiceInvoiceLineItemPriceComponentComponentElements(element);
38273      composeElementClose(element);
38274      xml.exit(FHIR_NS, name);
38275    }
38276  }
38277
38278  protected void composeInvoiceInvoiceLineItemPriceComponentComponentElements(Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
38279      composeBackboneElementElements(element);
38280      if (element.hasTypeElement())
38281        composeEnumeration("type", element.getTypeElement(), new Invoice.InvoicePriceComponentTypeEnumFactory());
38282      if (element.hasCode()) {
38283        composeCodeableConcept("code", element.getCode());
38284      }
38285      if (element.hasFactorElement()) {
38286        composeDecimal("factor", element.getFactorElement());
38287      }
38288      if (element.hasAmount()) {
38289        composeMoney("amount", element.getAmount());
38290      }
38291  }
38292
38293  protected void composeLibrary(String name, Library element) throws IOException {
38294    if (element != null) {
38295      composeDomainResourceAttributes(element);
38296      xml.enter(FHIR_NS, name);
38297      composeLibraryElements(element);
38298      composeElementClose(element);
38299      xml.exit(FHIR_NS, name);
38300    }
38301  }
38302
38303  protected void composeLibraryElements(Library element) throws IOException {
38304      composeDomainResourceElements(element);
38305      if (element.hasUrlElement()) {
38306        composeUri("url", element.getUrlElement());
38307      }
38308      if (element.hasIdentifier()) { 
38309        for (Identifier e : element.getIdentifier()) 
38310          composeIdentifier("identifier", e);
38311      }
38312      if (element.hasVersionElement()) {
38313        composeString("version", element.getVersionElement());
38314      }
38315      if (element.hasNameElement()) {
38316        composeString("name", element.getNameElement());
38317      }
38318      if (element.hasTitleElement()) {
38319        composeString("title", element.getTitleElement());
38320      }
38321      if (element.hasSubtitleElement()) {
38322        composeString("subtitle", element.getSubtitleElement());
38323      }
38324      if (element.hasStatusElement())
38325        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38326      if (element.hasExperimentalElement()) {
38327        composeBoolean("experimental", element.getExperimentalElement());
38328      }
38329      if (element.hasType()) {
38330        composeCodeableConcept("type", element.getType());
38331      }
38332      if (element.hasSubject()) {
38333        composeType("subject", element.getSubject());
38334      }      if (element.hasDateElement()) {
38335        composeDateTime("date", element.getDateElement());
38336      }
38337      if (element.hasPublisherElement()) {
38338        composeString("publisher", element.getPublisherElement());
38339      }
38340      if (element.hasContact()) { 
38341        for (ContactDetail e : element.getContact()) 
38342          composeContactDetail("contact", e);
38343      }
38344      if (element.hasDescriptionElement()) {
38345        composeMarkdown("description", element.getDescriptionElement());
38346      }
38347      if (element.hasUseContext()) { 
38348        for (UsageContext e : element.getUseContext()) 
38349          composeUsageContext("useContext", e);
38350      }
38351      if (element.hasJurisdiction()) { 
38352        for (CodeableConcept e : element.getJurisdiction()) 
38353          composeCodeableConcept("jurisdiction", e);
38354      }
38355      if (element.hasPurposeElement()) {
38356        composeMarkdown("purpose", element.getPurposeElement());
38357      }
38358      if (element.hasUsageElement()) {
38359        composeString("usage", element.getUsageElement());
38360      }
38361      if (element.hasCopyrightElement()) {
38362        composeMarkdown("copyright", element.getCopyrightElement());
38363      }
38364      if (element.hasApprovalDateElement()) {
38365        composeDate("approvalDate", element.getApprovalDateElement());
38366      }
38367      if (element.hasLastReviewDateElement()) {
38368        composeDate("lastReviewDate", element.getLastReviewDateElement());
38369      }
38370      if (element.hasEffectivePeriod()) {
38371        composePeriod("effectivePeriod", element.getEffectivePeriod());
38372      }
38373      if (element.hasTopic()) { 
38374        for (CodeableConcept e : element.getTopic()) 
38375          composeCodeableConcept("topic", e);
38376      }
38377      if (element.hasAuthor()) { 
38378        for (ContactDetail e : element.getAuthor()) 
38379          composeContactDetail("author", e);
38380      }
38381      if (element.hasEditor()) { 
38382        for (ContactDetail e : element.getEditor()) 
38383          composeContactDetail("editor", e);
38384      }
38385      if (element.hasReviewer()) { 
38386        for (ContactDetail e : element.getReviewer()) 
38387          composeContactDetail("reviewer", e);
38388      }
38389      if (element.hasEndorser()) { 
38390        for (ContactDetail e : element.getEndorser()) 
38391          composeContactDetail("endorser", e);
38392      }
38393      if (element.hasRelatedArtifact()) { 
38394        for (RelatedArtifact e : element.getRelatedArtifact()) 
38395          composeRelatedArtifact("relatedArtifact", e);
38396      }
38397      if (element.hasParameter()) { 
38398        for (ParameterDefinition e : element.getParameter()) 
38399          composeParameterDefinition("parameter", e);
38400      }
38401      if (element.hasDataRequirement()) { 
38402        for (DataRequirement e : element.getDataRequirement()) 
38403          composeDataRequirement("dataRequirement", e);
38404      }
38405      if (element.hasContent()) { 
38406        for (Attachment e : element.getContent()) 
38407          composeAttachment("content", e);
38408      }
38409  }
38410
38411  protected void composeLinkage(String name, Linkage element) throws IOException {
38412    if (element != null) {
38413      composeDomainResourceAttributes(element);
38414      xml.enter(FHIR_NS, name);
38415      composeLinkageElements(element);
38416      composeElementClose(element);
38417      xml.exit(FHIR_NS, name);
38418    }
38419  }
38420
38421  protected void composeLinkageElements(Linkage element) throws IOException {
38422      composeDomainResourceElements(element);
38423      if (element.hasActiveElement()) {
38424        composeBoolean("active", element.getActiveElement());
38425      }
38426      if (element.hasAuthor()) {
38427        composeReference("author", element.getAuthor());
38428      }
38429      if (element.hasItem()) { 
38430        for (Linkage.LinkageItemComponent e : element.getItem()) 
38431          composeLinkageLinkageItemComponent("item", e);
38432      }
38433  }
38434
38435  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
38436    if (element != null) {
38437      composeElementAttributes(element);
38438      xml.enter(FHIR_NS, name);
38439      composeLinkageLinkageItemComponentElements(element);
38440      composeElementClose(element);
38441      xml.exit(FHIR_NS, name);
38442    }
38443  }
38444
38445  protected void composeLinkageLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
38446      composeBackboneElementElements(element);
38447      if (element.hasTypeElement())
38448        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
38449      if (element.hasResource()) {
38450        composeReference("resource", element.getResource());
38451      }
38452  }
38453
38454  protected void composeListResource(String name, ListResource element) throws IOException {
38455    if (element != null) {
38456      composeDomainResourceAttributes(element);
38457      xml.enter(FHIR_NS, name);
38458      composeListResourceElements(element);
38459      composeElementClose(element);
38460      xml.exit(FHIR_NS, name);
38461    }
38462  }
38463
38464  protected void composeListResourceElements(ListResource element) throws IOException {
38465      composeDomainResourceElements(element);
38466      if (element.hasIdentifier()) { 
38467        for (Identifier e : element.getIdentifier()) 
38468          composeIdentifier("identifier", e);
38469      }
38470      if (element.hasStatusElement())
38471        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
38472      if (element.hasModeElement())
38473        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
38474      if (element.hasTitleElement()) {
38475        composeString("title", element.getTitleElement());
38476      }
38477      if (element.hasCode()) {
38478        composeCodeableConcept("code", element.getCode());
38479      }
38480      if (element.hasSubject()) {
38481        composeReference("subject", element.getSubject());
38482      }
38483      if (element.hasEncounter()) {
38484        composeReference("encounter", element.getEncounter());
38485      }
38486      if (element.hasDateElement()) {
38487        composeDateTime("date", element.getDateElement());
38488      }
38489      if (element.hasSource()) {
38490        composeReference("source", element.getSource());
38491      }
38492      if (element.hasOrderedBy()) {
38493        composeCodeableConcept("orderedBy", element.getOrderedBy());
38494      }
38495      if (element.hasNote()) { 
38496        for (Annotation e : element.getNote()) 
38497          composeAnnotation("note", e);
38498      }
38499      if (element.hasEntry()) { 
38500        for (ListResource.ListEntryComponent e : element.getEntry()) 
38501          composeListResourceListEntryComponent("entry", e);
38502      }
38503      if (element.hasEmptyReason()) {
38504        composeCodeableConcept("emptyReason", element.getEmptyReason());
38505      }
38506  }
38507
38508  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
38509    if (element != null) {
38510      composeElementAttributes(element);
38511      xml.enter(FHIR_NS, name);
38512      composeListResourceListEntryComponentElements(element);
38513      composeElementClose(element);
38514      xml.exit(FHIR_NS, name);
38515    }
38516  }
38517
38518  protected void composeListResourceListEntryComponentElements(ListResource.ListEntryComponent element) throws IOException {
38519      composeBackboneElementElements(element);
38520      if (element.hasFlag()) {
38521        composeCodeableConcept("flag", element.getFlag());
38522      }
38523      if (element.hasDeletedElement()) {
38524        composeBoolean("deleted", element.getDeletedElement());
38525      }
38526      if (element.hasDateElement()) {
38527        composeDateTime("date", element.getDateElement());
38528      }
38529      if (element.hasItem()) {
38530        composeReference("item", element.getItem());
38531      }
38532  }
38533
38534  protected void composeLocation(String name, Location element) throws IOException {
38535    if (element != null) {
38536      composeDomainResourceAttributes(element);
38537      xml.enter(FHIR_NS, name);
38538      composeLocationElements(element);
38539      composeElementClose(element);
38540      xml.exit(FHIR_NS, name);
38541    }
38542  }
38543
38544  protected void composeLocationElements(Location element) throws IOException {
38545      composeDomainResourceElements(element);
38546      if (element.hasIdentifier()) { 
38547        for (Identifier e : element.getIdentifier()) 
38548          composeIdentifier("identifier", e);
38549      }
38550      if (element.hasStatusElement())
38551        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
38552      if (element.hasOperationalStatus()) {
38553        composeCoding("operationalStatus", element.getOperationalStatus());
38554      }
38555      if (element.hasNameElement()) {
38556        composeString("name", element.getNameElement());
38557      }
38558      if (element.hasAlias()) { 
38559        for (StringType e : element.getAlias()) 
38560          composeString("alias", e);
38561      }
38562      if (element.hasDescriptionElement()) {
38563        composeString("description", element.getDescriptionElement());
38564      }
38565      if (element.hasModeElement())
38566        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
38567      if (element.hasType()) { 
38568        for (CodeableConcept e : element.getType()) 
38569          composeCodeableConcept("type", e);
38570      }
38571      if (element.hasTelecom()) { 
38572        for (ContactPoint e : element.getTelecom()) 
38573          composeContactPoint("telecom", e);
38574      }
38575      if (element.hasAddress()) {
38576        composeAddress("address", element.getAddress());
38577      }
38578      if (element.hasPhysicalType()) {
38579        composeCodeableConcept("physicalType", element.getPhysicalType());
38580      }
38581      if (element.hasPosition()) {
38582        composeLocationLocationPositionComponent("position", element.getPosition());
38583      }
38584      if (element.hasManagingOrganization()) {
38585        composeReference("managingOrganization", element.getManagingOrganization());
38586      }
38587      if (element.hasPartOf()) {
38588        composeReference("partOf", element.getPartOf());
38589      }
38590      if (element.hasHoursOfOperation()) { 
38591        for (Location.LocationHoursOfOperationComponent e : element.getHoursOfOperation()) 
38592          composeLocationLocationHoursOfOperationComponent("hoursOfOperation", e);
38593      }
38594      if (element.hasAvailabilityExceptionsElement()) {
38595        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
38596      }
38597      if (element.hasEndpoint()) { 
38598        for (Reference e : element.getEndpoint()) 
38599          composeReference("endpoint", e);
38600      }
38601  }
38602
38603  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
38604    if (element != null) {
38605      composeElementAttributes(element);
38606      xml.enter(FHIR_NS, name);
38607      composeLocationLocationPositionComponentElements(element);
38608      composeElementClose(element);
38609      xml.exit(FHIR_NS, name);
38610    }
38611  }
38612
38613  protected void composeLocationLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
38614      composeBackboneElementElements(element);
38615      if (element.hasLongitudeElement()) {
38616        composeDecimal("longitude", element.getLongitudeElement());
38617      }
38618      if (element.hasLatitudeElement()) {
38619        composeDecimal("latitude", element.getLatitudeElement());
38620      }
38621      if (element.hasAltitudeElement()) {
38622        composeDecimal("altitude", element.getAltitudeElement());
38623      }
38624  }
38625
38626  protected void composeLocationLocationHoursOfOperationComponent(String name, Location.LocationHoursOfOperationComponent element) throws IOException {
38627    if (element != null) {
38628      composeElementAttributes(element);
38629      xml.enter(FHIR_NS, name);
38630      composeLocationLocationHoursOfOperationComponentElements(element);
38631      composeElementClose(element);
38632      xml.exit(FHIR_NS, name);
38633    }
38634  }
38635
38636  protected void composeLocationLocationHoursOfOperationComponentElements(Location.LocationHoursOfOperationComponent element) throws IOException {
38637      composeBackboneElementElements(element);
38638        if (element.hasDaysOfWeek()) 
38639          for (Enumeration<Location.DaysOfWeek> e : element.getDaysOfWeek()) 
38640            composeEnumeration("daysOfWeek", e, new Location.DaysOfWeekEnumFactory());
38641      if (element.hasAllDayElement()) {
38642        composeBoolean("allDay", element.getAllDayElement());
38643      }
38644      if (element.hasOpeningTimeElement()) {
38645        composeTime("openingTime", element.getOpeningTimeElement());
38646      }
38647      if (element.hasClosingTimeElement()) {
38648        composeTime("closingTime", element.getClosingTimeElement());
38649      }
38650  }
38651
38652  protected void composeMeasure(String name, Measure element) throws IOException {
38653    if (element != null) {
38654      composeDomainResourceAttributes(element);
38655      xml.enter(FHIR_NS, name);
38656      composeMeasureElements(element);
38657      composeElementClose(element);
38658      xml.exit(FHIR_NS, name);
38659    }
38660  }
38661
38662  protected void composeMeasureElements(Measure element) throws IOException {
38663      composeDomainResourceElements(element);
38664      if (element.hasUrlElement()) {
38665        composeUri("url", element.getUrlElement());
38666      }
38667      if (element.hasIdentifier()) { 
38668        for (Identifier e : element.getIdentifier()) 
38669          composeIdentifier("identifier", e);
38670      }
38671      if (element.hasVersionElement()) {
38672        composeString("version", element.getVersionElement());
38673      }
38674      if (element.hasNameElement()) {
38675        composeString("name", element.getNameElement());
38676      }
38677      if (element.hasTitleElement()) {
38678        composeString("title", element.getTitleElement());
38679      }
38680      if (element.hasSubtitleElement()) {
38681        composeString("subtitle", element.getSubtitleElement());
38682      }
38683      if (element.hasStatusElement())
38684        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38685      if (element.hasExperimentalElement()) {
38686        composeBoolean("experimental", element.getExperimentalElement());
38687      }
38688      if (element.hasSubject()) {
38689        composeType("subject", element.getSubject());
38690      }      if (element.hasDateElement()) {
38691        composeDateTime("date", element.getDateElement());
38692      }
38693      if (element.hasPublisherElement()) {
38694        composeString("publisher", element.getPublisherElement());
38695      }
38696      if (element.hasContact()) { 
38697        for (ContactDetail e : element.getContact()) 
38698          composeContactDetail("contact", e);
38699      }
38700      if (element.hasDescriptionElement()) {
38701        composeMarkdown("description", element.getDescriptionElement());
38702      }
38703      if (element.hasUseContext()) { 
38704        for (UsageContext e : element.getUseContext()) 
38705          composeUsageContext("useContext", e);
38706      }
38707      if (element.hasJurisdiction()) { 
38708        for (CodeableConcept e : element.getJurisdiction()) 
38709          composeCodeableConcept("jurisdiction", e);
38710      }
38711      if (element.hasPurposeElement()) {
38712        composeMarkdown("purpose", element.getPurposeElement());
38713      }
38714      if (element.hasUsageElement()) {
38715        composeString("usage", element.getUsageElement());
38716      }
38717      if (element.hasCopyrightElement()) {
38718        composeMarkdown("copyright", element.getCopyrightElement());
38719      }
38720      if (element.hasApprovalDateElement()) {
38721        composeDate("approvalDate", element.getApprovalDateElement());
38722      }
38723      if (element.hasLastReviewDateElement()) {
38724        composeDate("lastReviewDate", element.getLastReviewDateElement());
38725      }
38726      if (element.hasEffectivePeriod()) {
38727        composePeriod("effectivePeriod", element.getEffectivePeriod());
38728      }
38729      if (element.hasTopic()) { 
38730        for (CodeableConcept e : element.getTopic()) 
38731          composeCodeableConcept("topic", e);
38732      }
38733      if (element.hasAuthor()) { 
38734        for (ContactDetail e : element.getAuthor()) 
38735          composeContactDetail("author", e);
38736      }
38737      if (element.hasEditor()) { 
38738        for (ContactDetail e : element.getEditor()) 
38739          composeContactDetail("editor", e);
38740      }
38741      if (element.hasReviewer()) { 
38742        for (ContactDetail e : element.getReviewer()) 
38743          composeContactDetail("reviewer", e);
38744      }
38745      if (element.hasEndorser()) { 
38746        for (ContactDetail e : element.getEndorser()) 
38747          composeContactDetail("endorser", e);
38748      }
38749      if (element.hasRelatedArtifact()) { 
38750        for (RelatedArtifact e : element.getRelatedArtifact()) 
38751          composeRelatedArtifact("relatedArtifact", e);
38752      }
38753      if (element.hasLibrary()) { 
38754        for (CanonicalType e : element.getLibrary()) 
38755          composeCanonical("library", e);
38756      }
38757      if (element.hasDisclaimerElement()) {
38758        composeMarkdown("disclaimer", element.getDisclaimerElement());
38759      }
38760      if (element.hasScoring()) {
38761        composeCodeableConcept("scoring", element.getScoring());
38762      }
38763      if (element.hasCompositeScoring()) {
38764        composeCodeableConcept("compositeScoring", element.getCompositeScoring());
38765      }
38766      if (element.hasType()) { 
38767        for (CodeableConcept e : element.getType()) 
38768          composeCodeableConcept("type", e);
38769      }
38770      if (element.hasRiskAdjustmentElement()) {
38771        composeString("riskAdjustment", element.getRiskAdjustmentElement());
38772      }
38773      if (element.hasRateAggregationElement()) {
38774        composeString("rateAggregation", element.getRateAggregationElement());
38775      }
38776      if (element.hasRationaleElement()) {
38777        composeMarkdown("rationale", element.getRationaleElement());
38778      }
38779      if (element.hasClinicalRecommendationStatementElement()) {
38780        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
38781      }
38782      if (element.hasImprovementNotation()) {
38783        composeCodeableConcept("improvementNotation", element.getImprovementNotation());
38784      }
38785      if (element.hasDefinition()) { 
38786        for (MarkdownType e : element.getDefinition()) 
38787          composeMarkdown("definition", e);
38788      }
38789      if (element.hasGuidanceElement()) {
38790        composeMarkdown("guidance", element.getGuidanceElement());
38791      }
38792      if (element.hasGroup()) { 
38793        for (Measure.MeasureGroupComponent e : element.getGroup()) 
38794          composeMeasureMeasureGroupComponent("group", e);
38795      }
38796      if (element.hasSupplementalData()) { 
38797        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
38798          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
38799      }
38800  }
38801
38802  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
38803    if (element != null) {
38804      composeElementAttributes(element);
38805      xml.enter(FHIR_NS, name);
38806      composeMeasureMeasureGroupComponentElements(element);
38807      composeElementClose(element);
38808      xml.exit(FHIR_NS, name);
38809    }
38810  }
38811
38812  protected void composeMeasureMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
38813      composeBackboneElementElements(element);
38814      if (element.hasCode()) {
38815        composeCodeableConcept("code", element.getCode());
38816      }
38817      if (element.hasDescriptionElement()) {
38818        composeString("description", element.getDescriptionElement());
38819      }
38820      if (element.hasPopulation()) { 
38821        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
38822          composeMeasureMeasureGroupPopulationComponent("population", e);
38823      }
38824      if (element.hasStratifier()) { 
38825        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
38826          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
38827      }
38828  }
38829
38830  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
38831    if (element != null) {
38832      composeElementAttributes(element);
38833      xml.enter(FHIR_NS, name);
38834      composeMeasureMeasureGroupPopulationComponentElements(element);
38835      composeElementClose(element);
38836      xml.exit(FHIR_NS, name);
38837    }
38838  }
38839
38840  protected void composeMeasureMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
38841      composeBackboneElementElements(element);
38842      if (element.hasCode()) {
38843        composeCodeableConcept("code", element.getCode());
38844      }
38845      if (element.hasDescriptionElement()) {
38846        composeString("description", element.getDescriptionElement());
38847      }
38848      if (element.hasCriteria()) {
38849        composeExpression("criteria", element.getCriteria());
38850      }
38851  }
38852
38853  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
38854    if (element != null) {
38855      composeElementAttributes(element);
38856      xml.enter(FHIR_NS, name);
38857      composeMeasureMeasureGroupStratifierComponentElements(element);
38858      composeElementClose(element);
38859      xml.exit(FHIR_NS, name);
38860    }
38861  }
38862
38863  protected void composeMeasureMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
38864      composeBackboneElementElements(element);
38865      if (element.hasCode()) {
38866        composeCodeableConcept("code", element.getCode());
38867      }
38868      if (element.hasDescriptionElement()) {
38869        composeString("description", element.getDescriptionElement());
38870      }
38871      if (element.hasCriteria()) {
38872        composeExpression("criteria", element.getCriteria());
38873      }
38874      if (element.hasComponent()) { 
38875        for (Measure.MeasureGroupStratifierComponentComponent e : element.getComponent()) 
38876          composeMeasureMeasureGroupStratifierComponentComponent("component", e);
38877      }
38878  }
38879
38880  protected void composeMeasureMeasureGroupStratifierComponentComponent(String name, Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
38881    if (element != null) {
38882      composeElementAttributes(element);
38883      xml.enter(FHIR_NS, name);
38884      composeMeasureMeasureGroupStratifierComponentComponentElements(element);
38885      composeElementClose(element);
38886      xml.exit(FHIR_NS, name);
38887    }
38888  }
38889
38890  protected void composeMeasureMeasureGroupStratifierComponentComponentElements(Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
38891      composeBackboneElementElements(element);
38892      if (element.hasCode()) {
38893        composeCodeableConcept("code", element.getCode());
38894      }
38895      if (element.hasDescriptionElement()) {
38896        composeString("description", element.getDescriptionElement());
38897      }
38898      if (element.hasCriteria()) {
38899        composeExpression("criteria", element.getCriteria());
38900      }
38901  }
38902
38903  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
38904    if (element != null) {
38905      composeElementAttributes(element);
38906      xml.enter(FHIR_NS, name);
38907      composeMeasureMeasureSupplementalDataComponentElements(element);
38908      composeElementClose(element);
38909      xml.exit(FHIR_NS, name);
38910    }
38911  }
38912
38913  protected void composeMeasureMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
38914      composeBackboneElementElements(element);
38915      if (element.hasCode()) {
38916        composeCodeableConcept("code", element.getCode());
38917      }
38918      if (element.hasUsage()) { 
38919        for (CodeableConcept e : element.getUsage()) 
38920          composeCodeableConcept("usage", e);
38921      }
38922      if (element.hasDescriptionElement()) {
38923        composeString("description", element.getDescriptionElement());
38924      }
38925      if (element.hasCriteria()) {
38926        composeExpression("criteria", element.getCriteria());
38927      }
38928  }
38929
38930  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
38931    if (element != null) {
38932      composeDomainResourceAttributes(element);
38933      xml.enter(FHIR_NS, name);
38934      composeMeasureReportElements(element);
38935      composeElementClose(element);
38936      xml.exit(FHIR_NS, name);
38937    }
38938  }
38939
38940  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
38941      composeDomainResourceElements(element);
38942      if (element.hasIdentifier()) { 
38943        for (Identifier e : element.getIdentifier()) 
38944          composeIdentifier("identifier", e);
38945      }
38946      if (element.hasStatusElement())
38947        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
38948      if (element.hasTypeElement())
38949        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
38950      if (element.hasMeasureElement()) {
38951        composeCanonical("measure", element.getMeasureElement());
38952      }
38953      if (element.hasSubject()) {
38954        composeReference("subject", element.getSubject());
38955      }
38956      if (element.hasDateElement()) {
38957        composeDateTime("date", element.getDateElement());
38958      }
38959      if (element.hasReporter()) {
38960        composeReference("reporter", element.getReporter());
38961      }
38962      if (element.hasPeriod()) {
38963        composePeriod("period", element.getPeriod());
38964      }
38965      if (element.hasImprovementNotation()) {
38966        composeCodeableConcept("improvementNotation", element.getImprovementNotation());
38967      }
38968      if (element.hasGroup()) { 
38969        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
38970          composeMeasureReportMeasureReportGroupComponent("group", e);
38971      }
38972      if (element.hasEvaluatedResource()) { 
38973        for (Reference e : element.getEvaluatedResource()) 
38974          composeReference("evaluatedResource", e);
38975      }
38976  }
38977
38978  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
38979    if (element != null) {
38980      composeElementAttributes(element);
38981      xml.enter(FHIR_NS, name);
38982      composeMeasureReportMeasureReportGroupComponentElements(element);
38983      composeElementClose(element);
38984      xml.exit(FHIR_NS, name);
38985    }
38986  }
38987
38988  protected void composeMeasureReportMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
38989      composeBackboneElementElements(element);
38990      if (element.hasCode()) {
38991        composeCodeableConcept("code", element.getCode());
38992      }
38993      if (element.hasPopulation()) { 
38994        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
38995          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
38996      }
38997      if (element.hasMeasureScore()) {
38998        composeQuantity("measureScore", element.getMeasureScore());
38999      }
39000      if (element.hasStratifier()) { 
39001        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
39002          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
39003      }
39004  }
39005
39006  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
39007    if (element != null) {
39008      composeElementAttributes(element);
39009      xml.enter(FHIR_NS, name);
39010      composeMeasureReportMeasureReportGroupPopulationComponentElements(element);
39011      composeElementClose(element);
39012      xml.exit(FHIR_NS, name);
39013    }
39014  }
39015
39016  protected void composeMeasureReportMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
39017      composeBackboneElementElements(element);
39018      if (element.hasCode()) {
39019        composeCodeableConcept("code", element.getCode());
39020      }
39021      if (element.hasCountElement()) {
39022        composeInteger("count", element.getCountElement());
39023      }
39024      if (element.hasSubjectResults()) {
39025        composeReference("subjectResults", element.getSubjectResults());
39026      }
39027  }
39028
39029  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
39030    if (element != null) {
39031      composeElementAttributes(element);
39032      xml.enter(FHIR_NS, name);
39033      composeMeasureReportMeasureReportGroupStratifierComponentElements(element);
39034      composeElementClose(element);
39035      xml.exit(FHIR_NS, name);
39036    }
39037  }
39038
39039  protected void composeMeasureReportMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
39040      composeBackboneElementElements(element);
39041      if (element.hasCode()) { 
39042        for (CodeableConcept e : element.getCode()) 
39043          composeCodeableConcept("code", e);
39044      }
39045      if (element.hasStratum()) { 
39046        for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
39047          composeMeasureReportStratifierGroupComponent("stratum", e);
39048      }
39049  }
39050
39051  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
39052    if (element != null) {
39053      composeElementAttributes(element);
39054      xml.enter(FHIR_NS, name);
39055      composeMeasureReportStratifierGroupComponentElements(element);
39056      composeElementClose(element);
39057      xml.exit(FHIR_NS, name);
39058    }
39059  }
39060
39061  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
39062      composeBackboneElementElements(element);
39063      if (element.hasValue()) {
39064        composeCodeableConcept("value", element.getValue());
39065      }
39066      if (element.hasComponent()) { 
39067        for (MeasureReport.StratifierGroupComponentComponent e : element.getComponent()) 
39068          composeMeasureReportStratifierGroupComponentComponent("component", e);
39069      }
39070      if (element.hasPopulation()) { 
39071        for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
39072          composeMeasureReportStratifierGroupPopulationComponent("population", e);
39073      }
39074      if (element.hasMeasureScore()) {
39075        composeQuantity("measureScore", element.getMeasureScore());
39076      }
39077  }
39078
39079  protected void composeMeasureReportStratifierGroupComponentComponent(String name, MeasureReport.StratifierGroupComponentComponent element) throws IOException {
39080    if (element != null) {
39081      composeElementAttributes(element);
39082      xml.enter(FHIR_NS, name);
39083      composeMeasureReportStratifierGroupComponentComponentElements(element);
39084      composeElementClose(element);
39085      xml.exit(FHIR_NS, name);
39086    }
39087  }
39088
39089  protected void composeMeasureReportStratifierGroupComponentComponentElements(MeasureReport.StratifierGroupComponentComponent element) throws IOException {
39090      composeBackboneElementElements(element);
39091      if (element.hasCode()) {
39092        composeCodeableConcept("code", element.getCode());
39093      }
39094      if (element.hasValue()) {
39095        composeCodeableConcept("value", element.getValue());
39096      }
39097  }
39098
39099  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
39100    if (element != null) {
39101      composeElementAttributes(element);
39102      xml.enter(FHIR_NS, name);
39103      composeMeasureReportStratifierGroupPopulationComponentElements(element);
39104      composeElementClose(element);
39105      xml.exit(FHIR_NS, name);
39106    }
39107  }
39108
39109  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
39110      composeBackboneElementElements(element);
39111      if (element.hasCode()) {
39112        composeCodeableConcept("code", element.getCode());
39113      }
39114      if (element.hasCountElement()) {
39115        composeInteger("count", element.getCountElement());
39116      }
39117      if (element.hasSubjectResults()) {
39118        composeReference("subjectResults", element.getSubjectResults());
39119      }
39120  }
39121
39122  protected void composeMedia(String name, Media element) throws IOException {
39123    if (element != null) {
39124      composeDomainResourceAttributes(element);
39125      xml.enter(FHIR_NS, name);
39126      composeMediaElements(element);
39127      composeElementClose(element);
39128      xml.exit(FHIR_NS, name);
39129    }
39130  }
39131
39132  protected void composeMediaElements(Media element) throws IOException {
39133      composeDomainResourceElements(element);
39134      if (element.hasIdentifier()) { 
39135        for (Identifier e : element.getIdentifier()) 
39136          composeIdentifier("identifier", e);
39137      }
39138      if (element.hasBasedOn()) { 
39139        for (Reference e : element.getBasedOn()) 
39140          composeReference("basedOn", e);
39141      }
39142      if (element.hasPartOf()) { 
39143        for (Reference e : element.getPartOf()) 
39144          composeReference("partOf", e);
39145      }
39146      if (element.hasStatusElement())
39147        composeEnumeration("status", element.getStatusElement(), new Media.MediaStatusEnumFactory());
39148      if (element.hasType()) {
39149        composeCodeableConcept("type", element.getType());
39150      }
39151      if (element.hasModality()) {
39152        composeCodeableConcept("modality", element.getModality());
39153      }
39154      if (element.hasView()) {
39155        composeCodeableConcept("view", element.getView());
39156      }
39157      if (element.hasSubject()) {
39158        composeReference("subject", element.getSubject());
39159      }
39160      if (element.hasEncounter()) {
39161        composeReference("encounter", element.getEncounter());
39162      }
39163      if (element.hasCreated()) {
39164        composeType("created", element.getCreated());
39165      }      if (element.hasIssuedElement()) {
39166        composeInstant("issued", element.getIssuedElement());
39167      }
39168      if (element.hasOperator()) {
39169        composeReference("operator", element.getOperator());
39170      }
39171      if (element.hasReasonCode()) { 
39172        for (CodeableConcept e : element.getReasonCode()) 
39173          composeCodeableConcept("reasonCode", e);
39174      }
39175      if (element.hasBodySite()) {
39176        composeCodeableConcept("bodySite", element.getBodySite());
39177      }
39178      if (element.hasDeviceNameElement()) {
39179        composeString("deviceName", element.getDeviceNameElement());
39180      }
39181      if (element.hasDevice()) {
39182        composeReference("device", element.getDevice());
39183      }
39184      if (element.hasHeightElement()) {
39185        composePositiveInt("height", element.getHeightElement());
39186      }
39187      if (element.hasWidthElement()) {
39188        composePositiveInt("width", element.getWidthElement());
39189      }
39190      if (element.hasFramesElement()) {
39191        composePositiveInt("frames", element.getFramesElement());
39192      }
39193      if (element.hasDurationElement()) {
39194        composeDecimal("duration", element.getDurationElement());
39195      }
39196      if (element.hasContent()) {
39197        composeAttachment("content", element.getContent());
39198      }
39199      if (element.hasNote()) { 
39200        for (Annotation e : element.getNote()) 
39201          composeAnnotation("note", e);
39202      }
39203  }
39204
39205  protected void composeMedication(String name, Medication element) throws IOException {
39206    if (element != null) {
39207      composeDomainResourceAttributes(element);
39208      xml.enter(FHIR_NS, name);
39209      composeMedicationElements(element);
39210      composeElementClose(element);
39211      xml.exit(FHIR_NS, name);
39212    }
39213  }
39214
39215  protected void composeMedicationElements(Medication element) throws IOException {
39216      composeDomainResourceElements(element);
39217      if (element.hasIdentifier()) { 
39218        for (Identifier e : element.getIdentifier()) 
39219          composeIdentifier("identifier", e);
39220      }
39221      if (element.hasCode()) {
39222        composeCodeableConcept("code", element.getCode());
39223      }
39224      if (element.hasStatusElement())
39225        composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusEnumFactory());
39226      if (element.hasManufacturer()) {
39227        composeReference("manufacturer", element.getManufacturer());
39228      }
39229      if (element.hasForm()) {
39230        composeCodeableConcept("form", element.getForm());
39231      }
39232      if (element.hasAmount()) {
39233        composeRatio("amount", element.getAmount());
39234      }
39235      if (element.hasIngredient()) { 
39236        for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
39237          composeMedicationMedicationIngredientComponent("ingredient", e);
39238      }
39239      if (element.hasBatch()) {
39240        composeMedicationMedicationBatchComponent("batch", element.getBatch());
39241      }
39242  }
39243
39244  protected void composeMedicationMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
39245    if (element != null) {
39246      composeElementAttributes(element);
39247      xml.enter(FHIR_NS, name);
39248      composeMedicationMedicationIngredientComponentElements(element);
39249      composeElementClose(element);
39250      xml.exit(FHIR_NS, name);
39251    }
39252  }
39253
39254  protected void composeMedicationMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
39255      composeBackboneElementElements(element);
39256      if (element.hasItem()) {
39257        composeType("item", element.getItem());
39258      }      if (element.hasIsActiveElement()) {
39259        composeBoolean("isActive", element.getIsActiveElement());
39260      }
39261      if (element.hasStrength()) {
39262        composeRatio("strength", element.getStrength());
39263      }
39264  }
39265
39266  protected void composeMedicationMedicationBatchComponent(String name, Medication.MedicationBatchComponent element) throws IOException {
39267    if (element != null) {
39268      composeElementAttributes(element);
39269      xml.enter(FHIR_NS, name);
39270      composeMedicationMedicationBatchComponentElements(element);
39271      composeElementClose(element);
39272      xml.exit(FHIR_NS, name);
39273    }
39274  }
39275
39276  protected void composeMedicationMedicationBatchComponentElements(Medication.MedicationBatchComponent element) throws IOException {
39277      composeBackboneElementElements(element);
39278      if (element.hasLotNumberElement()) {
39279        composeString("lotNumber", element.getLotNumberElement());
39280      }
39281      if (element.hasExpirationDateElement()) {
39282        composeDateTime("expirationDate", element.getExpirationDateElement());
39283      }
39284  }
39285
39286  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
39287    if (element != null) {
39288      composeDomainResourceAttributes(element);
39289      xml.enter(FHIR_NS, name);
39290      composeMedicationAdministrationElements(element);
39291      composeElementClose(element);
39292      xml.exit(FHIR_NS, name);
39293    }
39294  }
39295
39296  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
39297      composeDomainResourceElements(element);
39298      if (element.hasIdentifier()) { 
39299        for (Identifier e : element.getIdentifier()) 
39300          composeIdentifier("identifier", e);
39301      }
39302      if (element.hasInstantiates()) { 
39303        for (UriType e : element.getInstantiates()) 
39304          composeUri("instantiates", e);
39305      }
39306      if (element.hasPartOf()) { 
39307        for (Reference e : element.getPartOf()) 
39308          composeReference("partOf", e);
39309      }
39310      if (element.hasStatusElement()) {
39311        composeCode("status", element.getStatusElement());
39312      }
39313      if (element.hasStatusReason()) { 
39314        for (CodeableConcept e : element.getStatusReason()) 
39315          composeCodeableConcept("statusReason", e);
39316      }
39317      if (element.hasCategory()) {
39318        composeCodeableConcept("category", element.getCategory());
39319      }
39320      if (element.hasMedication()) {
39321        composeType("medication", element.getMedication());
39322      }      if (element.hasSubject()) {
39323        composeReference("subject", element.getSubject());
39324      }
39325      if (element.hasContext()) {
39326        composeReference("context", element.getContext());
39327      }
39328      if (element.hasSupportingInformation()) { 
39329        for (Reference e : element.getSupportingInformation()) 
39330          composeReference("supportingInformation", e);
39331      }
39332      if (element.hasEffective()) {
39333        composeType("effective", element.getEffective());
39334      }      if (element.hasPerformer()) { 
39335        for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
39336          composeMedicationAdministrationMedicationAdministrationPerformerComponent("performer", e);
39337      }
39338      if (element.hasReasonCode()) { 
39339        for (CodeableConcept e : element.getReasonCode()) 
39340          composeCodeableConcept("reasonCode", e);
39341      }
39342      if (element.hasReasonReference()) { 
39343        for (Reference e : element.getReasonReference()) 
39344          composeReference("reasonReference", e);
39345      }
39346      if (element.hasRequest()) {
39347        composeReference("request", element.getRequest());
39348      }
39349      if (element.hasDevice()) { 
39350        for (Reference e : element.getDevice()) 
39351          composeReference("device", e);
39352      }
39353      if (element.hasNote()) { 
39354        for (Annotation e : element.getNote()) 
39355          composeAnnotation("note", e);
39356      }
39357      if (element.hasDosage()) {
39358        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
39359      }
39360      if (element.hasEventHistory()) { 
39361        for (Reference e : element.getEventHistory()) 
39362          composeReference("eventHistory", e);
39363      }
39364  }
39365
39366  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
39367    if (element != null) {
39368      composeElementAttributes(element);
39369      xml.enter(FHIR_NS, name);
39370      composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(element);
39371      composeElementClose(element);
39372      xml.exit(FHIR_NS, name);
39373    }
39374  }
39375
39376  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
39377      composeBackboneElementElements(element);
39378      if (element.hasFunction()) {
39379        composeCodeableConcept("function", element.getFunction());
39380      }
39381      if (element.hasActor()) {
39382        composeReference("actor", element.getActor());
39383      }
39384  }
39385
39386  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
39387    if (element != null) {
39388      composeElementAttributes(element);
39389      xml.enter(FHIR_NS, name);
39390      composeMedicationAdministrationMedicationAdministrationDosageComponentElements(element);
39391      composeElementClose(element);
39392      xml.exit(FHIR_NS, name);
39393    }
39394  }
39395
39396  protected void composeMedicationAdministrationMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
39397      composeBackboneElementElements(element);
39398      if (element.hasTextElement()) {
39399        composeString("text", element.getTextElement());
39400      }
39401      if (element.hasSite()) {
39402        composeCodeableConcept("site", element.getSite());
39403      }
39404      if (element.hasRoute()) {
39405        composeCodeableConcept("route", element.getRoute());
39406      }
39407      if (element.hasMethod()) {
39408        composeCodeableConcept("method", element.getMethod());
39409      }
39410      if (element.hasDose()) {
39411        composeQuantity("dose", element.getDose());
39412      }
39413      if (element.hasRate()) {
39414        composeType("rate", element.getRate());
39415      }  }
39416
39417  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
39418    if (element != null) {
39419      composeDomainResourceAttributes(element);
39420      xml.enter(FHIR_NS, name);
39421      composeMedicationDispenseElements(element);
39422      composeElementClose(element);
39423      xml.exit(FHIR_NS, name);
39424    }
39425  }
39426
39427  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
39428      composeDomainResourceElements(element);
39429      if (element.hasIdentifier()) { 
39430        for (Identifier e : element.getIdentifier()) 
39431          composeIdentifier("identifier", e);
39432      }
39433      if (element.hasPartOf()) { 
39434        for (Reference e : element.getPartOf()) 
39435          composeReference("partOf", e);
39436      }
39437      if (element.hasStatusElement()) {
39438        composeCode("status", element.getStatusElement());
39439      }
39440      if (element.hasStatusReason()) {
39441        composeType("statusReason", element.getStatusReason());
39442      }      if (element.hasCategory()) {
39443        composeCodeableConcept("category", element.getCategory());
39444      }
39445      if (element.hasMedication()) {
39446        composeType("medication", element.getMedication());
39447      }      if (element.hasSubject()) {
39448        composeReference("subject", element.getSubject());
39449      }
39450      if (element.hasContext()) {
39451        composeReference("context", element.getContext());
39452      }
39453      if (element.hasSupportingInformation()) { 
39454        for (Reference e : element.getSupportingInformation()) 
39455          composeReference("supportingInformation", e);
39456      }
39457      if (element.hasPerformer()) { 
39458        for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
39459          composeMedicationDispenseMedicationDispensePerformerComponent("performer", e);
39460      }
39461      if (element.hasLocation()) {
39462        composeReference("location", element.getLocation());
39463      }
39464      if (element.hasAuthorizingPrescription()) { 
39465        for (Reference e : element.getAuthorizingPrescription()) 
39466          composeReference("authorizingPrescription", e);
39467      }
39468      if (element.hasType()) {
39469        composeCodeableConcept("type", element.getType());
39470      }
39471      if (element.hasQuantity()) {
39472        composeQuantity("quantity", element.getQuantity());
39473      }
39474      if (element.hasDaysSupply()) {
39475        composeQuantity("daysSupply", element.getDaysSupply());
39476      }
39477      if (element.hasWhenPreparedElement()) {
39478        composeDateTime("whenPrepared", element.getWhenPreparedElement());
39479      }
39480      if (element.hasWhenHandedOverElement()) {
39481        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
39482      }
39483      if (element.hasDestination()) {
39484        composeReference("destination", element.getDestination());
39485      }
39486      if (element.hasReceiver()) { 
39487        for (Reference e : element.getReceiver()) 
39488          composeReference("receiver", e);
39489      }
39490      if (element.hasNote()) { 
39491        for (Annotation e : element.getNote()) 
39492          composeAnnotation("note", e);
39493      }
39494      if (element.hasDosageInstruction()) { 
39495        for (Dosage e : element.getDosageInstruction()) 
39496          composeDosage("dosageInstruction", e);
39497      }
39498      if (element.hasSubstitution()) {
39499        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
39500      }
39501      if (element.hasDetectedIssue()) { 
39502        for (Reference e : element.getDetectedIssue()) 
39503          composeReference("detectedIssue", e);
39504      }
39505      if (element.hasEventHistory()) { 
39506        for (Reference e : element.getEventHistory()) 
39507          composeReference("eventHistory", e);
39508      }
39509  }
39510
39511  protected void composeMedicationDispenseMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
39512    if (element != null) {
39513      composeElementAttributes(element);
39514      xml.enter(FHIR_NS, name);
39515      composeMedicationDispenseMedicationDispensePerformerComponentElements(element);
39516      composeElementClose(element);
39517      xml.exit(FHIR_NS, name);
39518    }
39519  }
39520
39521  protected void composeMedicationDispenseMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
39522      composeBackboneElementElements(element);
39523      if (element.hasFunction()) {
39524        composeCodeableConcept("function", element.getFunction());
39525      }
39526      if (element.hasActor()) {
39527        composeReference("actor", element.getActor());
39528      }
39529  }
39530
39531  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
39532    if (element != null) {
39533      composeElementAttributes(element);
39534      xml.enter(FHIR_NS, name);
39535      composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(element);
39536      composeElementClose(element);
39537      xml.exit(FHIR_NS, name);
39538    }
39539  }
39540
39541  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
39542      composeBackboneElementElements(element);
39543      if (element.hasWasSubstitutedElement()) {
39544        composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
39545      }
39546      if (element.hasType()) {
39547        composeCodeableConcept("type", element.getType());
39548      }
39549      if (element.hasReason()) { 
39550        for (CodeableConcept e : element.getReason()) 
39551          composeCodeableConcept("reason", e);
39552      }
39553      if (element.hasResponsibleParty()) { 
39554        for (Reference e : element.getResponsibleParty()) 
39555          composeReference("responsibleParty", e);
39556      }
39557  }
39558
39559  protected void composeMedicationKnowledge(String name, MedicationKnowledge element) throws IOException {
39560    if (element != null) {
39561      composeDomainResourceAttributes(element);
39562      xml.enter(FHIR_NS, name);
39563      composeMedicationKnowledgeElements(element);
39564      composeElementClose(element);
39565      xml.exit(FHIR_NS, name);
39566    }
39567  }
39568
39569  protected void composeMedicationKnowledgeElements(MedicationKnowledge element) throws IOException {
39570      composeDomainResourceElements(element);
39571      if (element.hasCode()) {
39572        composeCodeableConcept("code", element.getCode());
39573      }
39574      if (element.hasStatusElement()) {
39575        composeCode("status", element.getStatusElement());
39576      }
39577      if (element.hasManufacturer()) {
39578        composeReference("manufacturer", element.getManufacturer());
39579      }
39580      if (element.hasDoseForm()) {
39581        composeCodeableConcept("doseForm", element.getDoseForm());
39582      }
39583      if (element.hasAmount()) {
39584        composeQuantity("amount", element.getAmount());
39585      }
39586      if (element.hasSynonym()) { 
39587        for (StringType e : element.getSynonym()) 
39588          composeString("synonym", e);
39589      }
39590      if (element.hasRelatedMedicationKnowledge()) { 
39591        for (MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent e : element.getRelatedMedicationKnowledge()) 
39592          composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent("relatedMedicationKnowledge", e);
39593      }
39594      if (element.hasAssociatedMedication()) { 
39595        for (Reference e : element.getAssociatedMedication()) 
39596          composeReference("associatedMedication", e);
39597      }
39598      if (element.hasProductType()) { 
39599        for (CodeableConcept e : element.getProductType()) 
39600          composeCodeableConcept("productType", e);
39601      }
39602      if (element.hasMonograph()) { 
39603        for (MedicationKnowledge.MedicationKnowledgeMonographComponent e : element.getMonograph()) 
39604          composeMedicationKnowledgeMedicationKnowledgeMonographComponent("monograph", e);
39605      }
39606      if (element.hasIngredient()) { 
39607        for (MedicationKnowledge.MedicationKnowledgeIngredientComponent e : element.getIngredient()) 
39608          composeMedicationKnowledgeMedicationKnowledgeIngredientComponent("ingredient", e);
39609      }
39610      if (element.hasPreparationInstructionElement()) {
39611        composeMarkdown("preparationInstruction", element.getPreparationInstructionElement());
39612      }
39613      if (element.hasIntendedRoute()) { 
39614        for (CodeableConcept e : element.getIntendedRoute()) 
39615          composeCodeableConcept("intendedRoute", e);
39616      }
39617      if (element.hasCost()) { 
39618        for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
39619          composeMedicationKnowledgeMedicationKnowledgeCostComponent("cost", e);
39620      }
39621      if (element.hasMonitoringProgram()) { 
39622        for (MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent e : element.getMonitoringProgram()) 
39623          composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent("monitoringProgram", e);
39624      }
39625      if (element.hasAdministrationGuidelines()) { 
39626        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent e : element.getAdministrationGuidelines()) 
39627          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent("administrationGuidelines", e);
39628      }
39629      if (element.hasMedicineClassification()) { 
39630        for (MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent e : element.getMedicineClassification()) 
39631          composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent("medicineClassification", e);
39632      }
39633      if (element.hasPackaging()) {
39634        composeMedicationKnowledgeMedicationKnowledgePackagingComponent("packaging", element.getPackaging());
39635      }
39636      if (element.hasDrugCharacteristic()) { 
39637        for (MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent e : element.getDrugCharacteristic()) 
39638          composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent("drugCharacteristic", e);
39639      }
39640      if (element.hasContraindication()) { 
39641        for (Reference e : element.getContraindication()) 
39642          composeReference("contraindication", e);
39643      }
39644      if (element.hasRegulatory()) { 
39645        for (MedicationKnowledge.MedicationKnowledgeRegulatoryComponent e : element.getRegulatory()) 
39646          composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent("regulatory", e);
39647      }
39648      if (element.hasKinetics()) { 
39649        for (MedicationKnowledge.MedicationKnowledgeKineticsComponent e : element.getKinetics()) 
39650          composeMedicationKnowledgeMedicationKnowledgeKineticsComponent("kinetics", e);
39651      }
39652  }
39653
39654  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
39655    if (element != null) {
39656      composeElementAttributes(element);
39657      xml.enter(FHIR_NS, name);
39658      composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(element);
39659      composeElementClose(element);
39660      xml.exit(FHIR_NS, name);
39661    }
39662  }
39663
39664  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
39665      composeBackboneElementElements(element);
39666      if (element.hasType()) {
39667        composeCodeableConcept("type", element.getType());
39668      }
39669      if (element.hasReference()) { 
39670        for (Reference e : element.getReference()) 
39671          composeReference("reference", e);
39672      }
39673  }
39674
39675  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponent(String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
39676    if (element != null) {
39677      composeElementAttributes(element);
39678      xml.enter(FHIR_NS, name);
39679      composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(element);
39680      composeElementClose(element);
39681      xml.exit(FHIR_NS, name);
39682    }
39683  }
39684
39685  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
39686      composeBackboneElementElements(element);
39687      if (element.hasType()) {
39688        composeCodeableConcept("type", element.getType());
39689      }
39690      if (element.hasSource()) {
39691        composeReference("source", element.getSource());
39692      }
39693  }
39694
39695  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(String name, MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
39696    if (element != null) {
39697      composeElementAttributes(element);
39698      xml.enter(FHIR_NS, name);
39699      composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(element);
39700      composeElementClose(element);
39701      xml.exit(FHIR_NS, name);
39702    }
39703  }
39704
39705  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
39706      composeBackboneElementElements(element);
39707      if (element.hasItem()) {
39708        composeType("item", element.getItem());
39709      }      if (element.hasIsActiveElement()) {
39710        composeBoolean("isActive", element.getIsActiveElement());
39711      }
39712      if (element.hasStrength()) {
39713        composeRatio("strength", element.getStrength());
39714      }
39715  }
39716
39717  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponent(String name, MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
39718    if (element != null) {
39719      composeElementAttributes(element);
39720      xml.enter(FHIR_NS, name);
39721      composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(element);
39722      composeElementClose(element);
39723      xml.exit(FHIR_NS, name);
39724    }
39725  }
39726
39727  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
39728      composeBackboneElementElements(element);
39729      if (element.hasType()) {
39730        composeCodeableConcept("type", element.getType());
39731      }
39732      if (element.hasSourceElement()) {
39733        composeString("source", element.getSourceElement());
39734      }
39735      if (element.hasCost()) {
39736        composeMoney("cost", element.getCost());
39737      }
39738  }
39739
39740  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
39741    if (element != null) {
39742      composeElementAttributes(element);
39743      xml.enter(FHIR_NS, name);
39744      composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(element);
39745      composeElementClose(element);
39746      xml.exit(FHIR_NS, name);
39747    }
39748  }
39749
39750  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
39751      composeBackboneElementElements(element);
39752      if (element.hasType()) {
39753        composeCodeableConcept("type", element.getType());
39754      }
39755      if (element.hasNameElement()) {
39756        composeString("name", element.getNameElement());
39757      }
39758  }
39759
39760  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
39761    if (element != null) {
39762      composeElementAttributes(element);
39763      xml.enter(FHIR_NS, name);
39764      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(element);
39765      composeElementClose(element);
39766      xml.exit(FHIR_NS, name);
39767    }
39768  }
39769
39770  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
39771      composeBackboneElementElements(element);
39772      if (element.hasDosage()) { 
39773        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent e : element.getDosage()) 
39774          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent("dosage", e);
39775      }
39776      if (element.hasIndication()) {
39777        composeType("indication", element.getIndication());
39778      }      if (element.hasPatientCharacteristics()) { 
39779        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent e : element.getPatientCharacteristics()) 
39780          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent("patientCharacteristics", e);
39781      }
39782  }
39783
39784  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
39785    if (element != null) {
39786      composeElementAttributes(element);
39787      xml.enter(FHIR_NS, name);
39788      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(element);
39789      composeElementClose(element);
39790      xml.exit(FHIR_NS, name);
39791    }
39792  }
39793
39794  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
39795      composeBackboneElementElements(element);
39796      if (element.hasType()) {
39797        composeCodeableConcept("type", element.getType());
39798      }
39799      if (element.hasDosage()) { 
39800        for (Dosage e : element.getDosage()) 
39801          composeDosage("dosage", e);
39802      }
39803  }
39804
39805  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
39806    if (element != null) {
39807      composeElementAttributes(element);
39808      xml.enter(FHIR_NS, name);
39809      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(element);
39810      composeElementClose(element);
39811      xml.exit(FHIR_NS, name);
39812    }
39813  }
39814
39815  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
39816      composeBackboneElementElements(element);
39817      if (element.hasCharacteristic()) {
39818        composeType("characteristic", element.getCharacteristic());
39819      }      if (element.hasValue()) { 
39820        for (StringType e : element.getValue()) 
39821          composeString("value", e);
39822      }
39823  }
39824
39825  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
39826    if (element != null) {
39827      composeElementAttributes(element);
39828      xml.enter(FHIR_NS, name);
39829      composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(element);
39830      composeElementClose(element);
39831      xml.exit(FHIR_NS, name);
39832    }
39833  }
39834
39835  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
39836      composeBackboneElementElements(element);
39837      if (element.hasType()) {
39838        composeCodeableConcept("type", element.getType());
39839      }
39840      if (element.hasClassification()) { 
39841        for (CodeableConcept e : element.getClassification()) 
39842          composeCodeableConcept("classification", e);
39843      }
39844  }
39845
39846  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponent(String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
39847    if (element != null) {
39848      composeElementAttributes(element);
39849      xml.enter(FHIR_NS, name);
39850      composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(element);
39851      composeElementClose(element);
39852      xml.exit(FHIR_NS, name);
39853    }
39854  }
39855
39856  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
39857      composeBackboneElementElements(element);
39858      if (element.hasType()) {
39859        composeCodeableConcept("type", element.getType());
39860      }
39861      if (element.hasQuantity()) {
39862        composeQuantity("quantity", element.getQuantity());
39863      }
39864  }
39865
39866  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
39867    if (element != null) {
39868      composeElementAttributes(element);
39869      xml.enter(FHIR_NS, name);
39870      composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(element);
39871      composeElementClose(element);
39872      xml.exit(FHIR_NS, name);
39873    }
39874  }
39875
39876  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
39877      composeBackboneElementElements(element);
39878      if (element.hasType()) {
39879        composeCodeableConcept("type", element.getType());
39880      }
39881      if (element.hasValue()) {
39882        composeType("value", element.getValue());
39883      }  }
39884
39885  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
39886    if (element != null) {
39887      composeElementAttributes(element);
39888      xml.enter(FHIR_NS, name);
39889      composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponentElements(element);
39890      composeElementClose(element);
39891      xml.exit(FHIR_NS, name);
39892    }
39893  }
39894
39895  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
39896      composeBackboneElementElements(element);
39897      if (element.hasRegulatoryAuthority()) {
39898        composeReference("regulatoryAuthority", element.getRegulatoryAuthority());
39899      }
39900      if (element.hasSubstitution()) { 
39901        for (MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent e : element.getSubstitution()) 
39902          composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent("substitution", e);
39903      }
39904      if (element.hasSchedule()) { 
39905        for (MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent e : element.getSchedule()) 
39906          composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent("schedule", e);
39907      }
39908      if (element.hasMaxDispense()) {
39909        composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent("maxDispense", element.getMaxDispense());
39910      }
39911  }
39912
39913  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
39914    if (element != null) {
39915      composeElementAttributes(element);
39916      xml.enter(FHIR_NS, name);
39917      composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentElements(element);
39918      composeElementClose(element);
39919      xml.exit(FHIR_NS, name);
39920    }
39921  }
39922
39923  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
39924      composeBackboneElementElements(element);
39925      if (element.hasType()) {
39926        composeCodeableConcept("type", element.getType());
39927      }
39928      if (element.hasAllowedElement()) {
39929        composeBoolean("allowed", element.getAllowedElement());
39930      }
39931  }
39932
39933  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
39934    if (element != null) {
39935      composeElementAttributes(element);
39936      xml.enter(FHIR_NS, name);
39937      composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentElements(element);
39938      composeElementClose(element);
39939      xml.exit(FHIR_NS, name);
39940    }
39941  }
39942
39943  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
39944      composeBackboneElementElements(element);
39945      if (element.hasSchedule()) {
39946        composeCodeableConcept("schedule", element.getSchedule());
39947      }
39948  }
39949
39950  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
39951    if (element != null) {
39952      composeElementAttributes(element);
39953      xml.enter(FHIR_NS, name);
39954      composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(element);
39955      composeElementClose(element);
39956      xml.exit(FHIR_NS, name);
39957    }
39958  }
39959
39960  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
39961      composeBackboneElementElements(element);
39962      if (element.hasQuantity()) {
39963        composeQuantity("quantity", element.getQuantity());
39964      }
39965      if (element.hasPeriod()) {
39966        composeDuration("period", element.getPeriod());
39967      }
39968  }
39969
39970  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponent(String name, MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
39971    if (element != null) {
39972      composeElementAttributes(element);
39973      xml.enter(FHIR_NS, name);
39974      composeMedicationKnowledgeMedicationKnowledgeKineticsComponentElements(element);
39975      composeElementClose(element);
39976      xml.exit(FHIR_NS, name);
39977    }
39978  }
39979
39980  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponentElements(MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
39981      composeBackboneElementElements(element);
39982      if (element.hasAreaUnderCurve()) { 
39983        for (Quantity e : element.getAreaUnderCurve()) 
39984          composeQuantity("areaUnderCurve", e);
39985      }
39986      if (element.hasLethalDose50()) { 
39987        for (Quantity e : element.getLethalDose50()) 
39988          composeQuantity("lethalDose50", e);
39989      }
39990      if (element.hasHalfLifePeriod()) {
39991        composeDuration("halfLifePeriod", element.getHalfLifePeriod());
39992      }
39993  }
39994
39995  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
39996    if (element != null) {
39997      composeDomainResourceAttributes(element);
39998      xml.enter(FHIR_NS, name);
39999      composeMedicationRequestElements(element);
40000      composeElementClose(element);
40001      xml.exit(FHIR_NS, name);
40002    }
40003  }
40004
40005  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
40006      composeDomainResourceElements(element);
40007      if (element.hasIdentifier()) { 
40008        for (Identifier e : element.getIdentifier()) 
40009          composeIdentifier("identifier", e);
40010      }
40011      if (element.hasStatusElement())
40012        composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationRequestStatusEnumFactory());
40013      if (element.hasStatusReason()) {
40014        composeCodeableConcept("statusReason", element.getStatusReason());
40015      }
40016      if (element.hasIntentElement())
40017        composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
40018      if (element.hasCategory()) { 
40019        for (CodeableConcept e : element.getCategory()) 
40020          composeCodeableConcept("category", e);
40021      }
40022      if (element.hasPriorityElement())
40023        composeEnumeration("priority", element.getPriorityElement(), new MedicationRequest.MedicationRequestPriorityEnumFactory());
40024      if (element.hasDoNotPerformElement()) {
40025        composeBoolean("doNotPerform", element.getDoNotPerformElement());
40026      }
40027      if (element.hasReported()) {
40028        composeType("reported", element.getReported());
40029      }      if (element.hasMedication()) {
40030        composeType("medication", element.getMedication());
40031      }      if (element.hasSubject()) {
40032        composeReference("subject", element.getSubject());
40033      }
40034      if (element.hasEncounter()) {
40035        composeReference("encounter", element.getEncounter());
40036      }
40037      if (element.hasSupportingInformation()) { 
40038        for (Reference e : element.getSupportingInformation()) 
40039          composeReference("supportingInformation", e);
40040      }
40041      if (element.hasAuthoredOnElement()) {
40042        composeDateTime("authoredOn", element.getAuthoredOnElement());
40043      }
40044      if (element.hasRequester()) {
40045        composeReference("requester", element.getRequester());
40046      }
40047      if (element.hasPerformer()) {
40048        composeReference("performer", element.getPerformer());
40049      }
40050      if (element.hasPerformerType()) {
40051        composeCodeableConcept("performerType", element.getPerformerType());
40052      }
40053      if (element.hasRecorder()) {
40054        composeReference("recorder", element.getRecorder());
40055      }
40056      if (element.hasReasonCode()) { 
40057        for (CodeableConcept e : element.getReasonCode()) 
40058          composeCodeableConcept("reasonCode", e);
40059      }
40060      if (element.hasReasonReference()) { 
40061        for (Reference e : element.getReasonReference()) 
40062          composeReference("reasonReference", e);
40063      }
40064      if (element.hasInstantiatesCanonical()) { 
40065        for (CanonicalType e : element.getInstantiatesCanonical()) 
40066          composeCanonical("instantiatesCanonical", e);
40067      }
40068      if (element.hasInstantiatesUri()) { 
40069        for (UriType e : element.getInstantiatesUri()) 
40070          composeUri("instantiatesUri", e);
40071      }
40072      if (element.hasBasedOn()) { 
40073        for (Reference e : element.getBasedOn()) 
40074          composeReference("basedOn", e);
40075      }
40076      if (element.hasGroupIdentifier()) {
40077        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
40078      }
40079      if (element.hasCourseOfTherapyType()) {
40080        composeCodeableConcept("courseOfTherapyType", element.getCourseOfTherapyType());
40081      }
40082      if (element.hasInsurance()) { 
40083        for (Reference e : element.getInsurance()) 
40084          composeReference("insurance", e);
40085      }
40086      if (element.hasNote()) { 
40087        for (Annotation e : element.getNote()) 
40088          composeAnnotation("note", e);
40089      }
40090      if (element.hasDosageInstruction()) { 
40091        for (Dosage e : element.getDosageInstruction()) 
40092          composeDosage("dosageInstruction", e);
40093      }
40094      if (element.hasDispenseRequest()) {
40095        composeMedicationRequestMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
40096      }
40097      if (element.hasSubstitution()) {
40098        composeMedicationRequestMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
40099      }
40100      if (element.hasPriorPrescription()) {
40101        composeReference("priorPrescription", element.getPriorPrescription());
40102      }
40103      if (element.hasDetectedIssue()) { 
40104        for (Reference e : element.getDetectedIssue()) 
40105          composeReference("detectedIssue", e);
40106      }
40107      if (element.hasEventHistory()) { 
40108        for (Reference e : element.getEventHistory()) 
40109          composeReference("eventHistory", e);
40110      }
40111  }
40112
40113  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
40114    if (element != null) {
40115      composeElementAttributes(element);
40116      xml.enter(FHIR_NS, name);
40117      composeMedicationRequestMedicationRequestDispenseRequestComponentElements(element);
40118      composeElementClose(element);
40119      xml.exit(FHIR_NS, name);
40120    }
40121  }
40122
40123  protected void composeMedicationRequestMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
40124      composeBackboneElementElements(element);
40125      if (element.hasInitialFill()) {
40126        composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent("initialFill", element.getInitialFill());
40127      }
40128      if (element.hasDispenseInterval()) {
40129        composeDuration("dispenseInterval", element.getDispenseInterval());
40130      }
40131      if (element.hasValidityPeriod()) {
40132        composePeriod("validityPeriod", element.getValidityPeriod());
40133      }
40134      if (element.hasNumberOfRepeatsAllowedElement()) {
40135        composeUnsignedInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
40136      }
40137      if (element.hasQuantity()) {
40138        composeQuantity("quantity", element.getQuantity());
40139      }
40140      if (element.hasExpectedSupplyDuration()) {
40141        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
40142      }
40143      if (element.hasPerformer()) {
40144        composeReference("performer", element.getPerformer());
40145      }
40146  }
40147
40148  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
40149    if (element != null) {
40150      composeElementAttributes(element);
40151      xml.enter(FHIR_NS, name);
40152      composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponentElements(element);
40153      composeElementClose(element);
40154      xml.exit(FHIR_NS, name);
40155    }
40156  }
40157
40158  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponentElements(MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
40159      composeBackboneElementElements(element);
40160      if (element.hasQuantity()) {
40161        composeQuantity("quantity", element.getQuantity());
40162      }
40163      if (element.hasDuration()) {
40164        composeDuration("duration", element.getDuration());
40165      }
40166  }
40167
40168  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
40169    if (element != null) {
40170      composeElementAttributes(element);
40171      xml.enter(FHIR_NS, name);
40172      composeMedicationRequestMedicationRequestSubstitutionComponentElements(element);
40173      composeElementClose(element);
40174      xml.exit(FHIR_NS, name);
40175    }
40176  }
40177
40178  protected void composeMedicationRequestMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
40179      composeBackboneElementElements(element);
40180      if (element.hasAllowed()) {
40181        composeType("allowed", element.getAllowed());
40182      }      if (element.hasReason()) {
40183        composeCodeableConcept("reason", element.getReason());
40184      }
40185  }
40186
40187  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
40188    if (element != null) {
40189      composeDomainResourceAttributes(element);
40190      xml.enter(FHIR_NS, name);
40191      composeMedicationStatementElements(element);
40192      composeElementClose(element);
40193      xml.exit(FHIR_NS, name);
40194    }
40195  }
40196
40197  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
40198      composeDomainResourceElements(element);
40199      if (element.hasIdentifier()) { 
40200        for (Identifier e : element.getIdentifier()) 
40201          composeIdentifier("identifier", e);
40202      }
40203      if (element.hasBasedOn()) { 
40204        for (Reference e : element.getBasedOn()) 
40205          composeReference("basedOn", e);
40206      }
40207      if (element.hasPartOf()) { 
40208        for (Reference e : element.getPartOf()) 
40209          composeReference("partOf", e);
40210      }
40211      if (element.hasStatusElement())
40212        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
40213      if (element.hasStatusReason()) { 
40214        for (CodeableConcept e : element.getStatusReason()) 
40215          composeCodeableConcept("statusReason", e);
40216      }
40217      if (element.hasCategory()) {
40218        composeCodeableConcept("category", element.getCategory());
40219      }
40220      if (element.hasMedication()) {
40221        composeType("medication", element.getMedication());
40222      }      if (element.hasSubject()) {
40223        composeReference("subject", element.getSubject());
40224      }
40225      if (element.hasContext()) {
40226        composeReference("context", element.getContext());
40227      }
40228      if (element.hasEffective()) {
40229        composeType("effective", element.getEffective());
40230      }      if (element.hasDateAssertedElement()) {
40231        composeDateTime("dateAsserted", element.getDateAssertedElement());
40232      }
40233      if (element.hasInformationSource()) {
40234        composeReference("informationSource", element.getInformationSource());
40235      }
40236      if (element.hasDerivedFrom()) { 
40237        for (Reference e : element.getDerivedFrom()) 
40238          composeReference("derivedFrom", e);
40239      }
40240      if (element.hasReasonCode()) { 
40241        for (CodeableConcept e : element.getReasonCode()) 
40242          composeCodeableConcept("reasonCode", e);
40243      }
40244      if (element.hasReasonReference()) { 
40245        for (Reference e : element.getReasonReference()) 
40246          composeReference("reasonReference", e);
40247      }
40248      if (element.hasNote()) { 
40249        for (Annotation e : element.getNote()) 
40250          composeAnnotation("note", e);
40251      }
40252      if (element.hasDosage()) { 
40253        for (Dosage e : element.getDosage()) 
40254          composeDosage("dosage", e);
40255      }
40256  }
40257
40258  protected void composeMedicinalProduct(String name, MedicinalProduct element) throws IOException {
40259    if (element != null) {
40260      composeDomainResourceAttributes(element);
40261      xml.enter(FHIR_NS, name);
40262      composeMedicinalProductElements(element);
40263      composeElementClose(element);
40264      xml.exit(FHIR_NS, name);
40265    }
40266  }
40267
40268  protected void composeMedicinalProductElements(MedicinalProduct element) throws IOException {
40269      composeDomainResourceElements(element);
40270      if (element.hasIdentifier()) { 
40271        for (Identifier e : element.getIdentifier()) 
40272          composeIdentifier("identifier", e);
40273      }
40274      if (element.hasType()) {
40275        composeCodeableConcept("type", element.getType());
40276      }
40277      if (element.hasDomain()) {
40278        composeCoding("domain", element.getDomain());
40279      }
40280      if (element.hasCombinedPharmaceuticalDoseForm()) {
40281        composeCodeableConcept("combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm());
40282      }
40283      if (element.hasLegalStatusOfSupply()) {
40284        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40285      }
40286      if (element.hasAdditionalMonitoringIndicator()) {
40287        composeCodeableConcept("additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator());
40288      }
40289      if (element.hasSpecialMeasures()) { 
40290        for (StringType e : element.getSpecialMeasures()) 
40291          composeString("specialMeasures", e);
40292      }
40293      if (element.hasPaediatricUseIndicator()) {
40294        composeCodeableConcept("paediatricUseIndicator", element.getPaediatricUseIndicator());
40295      }
40296      if (element.hasProductClassification()) { 
40297        for (CodeableConcept e : element.getProductClassification()) 
40298          composeCodeableConcept("productClassification", e);
40299      }
40300      if (element.hasMarketingStatus()) { 
40301        for (MarketingStatus e : element.getMarketingStatus()) 
40302          composeMarketingStatus("marketingStatus", e);
40303      }
40304      if (element.hasPharmaceuticalProduct()) { 
40305        for (Reference e : element.getPharmaceuticalProduct()) 
40306          composeReference("pharmaceuticalProduct", e);
40307      }
40308      if (element.hasPackagedMedicinalProduct()) { 
40309        for (Reference e : element.getPackagedMedicinalProduct()) 
40310          composeReference("packagedMedicinalProduct", e);
40311      }
40312      if (element.hasAttachedDocument()) { 
40313        for (Reference e : element.getAttachedDocument()) 
40314          composeReference("attachedDocument", e);
40315      }
40316      if (element.hasMasterFile()) { 
40317        for (Reference e : element.getMasterFile()) 
40318          composeReference("masterFile", e);
40319      }
40320      if (element.hasContact()) { 
40321        for (Reference e : element.getContact()) 
40322          composeReference("contact", e);
40323      }
40324      if (element.hasClinicalTrial()) { 
40325        for (Reference e : element.getClinicalTrial()) 
40326          composeReference("clinicalTrial", e);
40327      }
40328      if (element.hasName()) { 
40329        for (MedicinalProduct.MedicinalProductNameComponent e : element.getName()) 
40330          composeMedicinalProductMedicinalProductNameComponent("name", e);
40331      }
40332      if (element.hasCrossReference()) { 
40333        for (Identifier e : element.getCrossReference()) 
40334          composeIdentifier("crossReference", e);
40335      }
40336      if (element.hasManufacturingBusinessOperation()) { 
40337        for (MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent e : element.getManufacturingBusinessOperation()) 
40338          composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent("manufacturingBusinessOperation", e);
40339      }
40340      if (element.hasSpecialDesignation()) { 
40341        for (MedicinalProduct.MedicinalProductSpecialDesignationComponent e : element.getSpecialDesignation()) 
40342          composeMedicinalProductMedicinalProductSpecialDesignationComponent("specialDesignation", e);
40343      }
40344  }
40345
40346  protected void composeMedicinalProductMedicinalProductNameComponent(String name, MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
40347    if (element != null) {
40348      composeElementAttributes(element);
40349      xml.enter(FHIR_NS, name);
40350      composeMedicinalProductMedicinalProductNameComponentElements(element);
40351      composeElementClose(element);
40352      xml.exit(FHIR_NS, name);
40353    }
40354  }
40355
40356  protected void composeMedicinalProductMedicinalProductNameComponentElements(MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
40357      composeBackboneElementElements(element);
40358      if (element.hasProductNameElement()) {
40359        composeString("productName", element.getProductNameElement());
40360      }
40361      if (element.hasNamePart()) { 
40362        for (MedicinalProduct.MedicinalProductNameNamePartComponent e : element.getNamePart()) 
40363          composeMedicinalProductMedicinalProductNameNamePartComponent("namePart", e);
40364      }
40365      if (element.hasCountryLanguage()) { 
40366        for (MedicinalProduct.MedicinalProductNameCountryLanguageComponent e : element.getCountryLanguage()) 
40367          composeMedicinalProductMedicinalProductNameCountryLanguageComponent("countryLanguage", e);
40368      }
40369  }
40370
40371  protected void composeMedicinalProductMedicinalProductNameNamePartComponent(String name, MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
40372    if (element != null) {
40373      composeElementAttributes(element);
40374      xml.enter(FHIR_NS, name);
40375      composeMedicinalProductMedicinalProductNameNamePartComponentElements(element);
40376      composeElementClose(element);
40377      xml.exit(FHIR_NS, name);
40378    }
40379  }
40380
40381  protected void composeMedicinalProductMedicinalProductNameNamePartComponentElements(MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
40382      composeBackboneElementElements(element);
40383      if (element.hasPartElement()) {
40384        composeString("part", element.getPartElement());
40385      }
40386      if (element.hasType()) {
40387        composeCoding("type", element.getType());
40388      }
40389  }
40390
40391  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponent(String name, MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
40392    if (element != null) {
40393      composeElementAttributes(element);
40394      xml.enter(FHIR_NS, name);
40395      composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(element);
40396      composeElementClose(element);
40397      xml.exit(FHIR_NS, name);
40398    }
40399  }
40400
40401  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
40402      composeBackboneElementElements(element);
40403      if (element.hasCountry()) {
40404        composeCodeableConcept("country", element.getCountry());
40405      }
40406      if (element.hasJurisdiction()) {
40407        composeCodeableConcept("jurisdiction", element.getJurisdiction());
40408      }
40409      if (element.hasLanguage()) {
40410        composeCodeableConcept("language", element.getLanguage());
40411      }
40412  }
40413
40414  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(String name, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
40415    if (element != null) {
40416      composeElementAttributes(element);
40417      xml.enter(FHIR_NS, name);
40418      composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(element);
40419      composeElementClose(element);
40420      xml.exit(FHIR_NS, name);
40421    }
40422  }
40423
40424  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
40425      composeBackboneElementElements(element);
40426      if (element.hasOperationType()) {
40427        composeCodeableConcept("operationType", element.getOperationType());
40428      }
40429      if (element.hasAuthorisationReferenceNumber()) {
40430        composeIdentifier("authorisationReferenceNumber", element.getAuthorisationReferenceNumber());
40431      }
40432      if (element.hasEffectiveDateElement()) {
40433        composeDateTime("effectiveDate", element.getEffectiveDateElement());
40434      }
40435      if (element.hasConfidentialityIndicator()) {
40436        composeCodeableConcept("confidentialityIndicator", element.getConfidentialityIndicator());
40437      }
40438      if (element.hasManufacturer()) { 
40439        for (Reference e : element.getManufacturer()) 
40440          composeReference("manufacturer", e);
40441      }
40442      if (element.hasRegulator()) {
40443        composeReference("regulator", element.getRegulator());
40444      }
40445  }
40446
40447  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponent(String name, MedicinalProduct.MedicinalProductSpecialDesignationComponent element) throws IOException {
40448    if (element != null) {
40449      composeElementAttributes(element);
40450      xml.enter(FHIR_NS, name);
40451      composeMedicinalProductMedicinalProductSpecialDesignationComponentElements(element);
40452      composeElementClose(element);
40453      xml.exit(FHIR_NS, name);
40454    }
40455  }
40456
40457  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponentElements(MedicinalProduct.MedicinalProductSpecialDesignationComponent element) throws IOException {
40458      composeBackboneElementElements(element);
40459      if (element.hasIdentifier()) { 
40460        for (Identifier e : element.getIdentifier()) 
40461          composeIdentifier("identifier", e);
40462      }
40463      if (element.hasType()) {
40464        composeCodeableConcept("type", element.getType());
40465      }
40466      if (element.hasIntendedUse()) {
40467        composeCodeableConcept("intendedUse", element.getIntendedUse());
40468      }
40469      if (element.hasIndication()) {
40470        composeType("indication", element.getIndication());
40471      }      if (element.hasStatus()) {
40472        composeCodeableConcept("status", element.getStatus());
40473      }
40474      if (element.hasDateElement()) {
40475        composeDateTime("date", element.getDateElement());
40476      }
40477      if (element.hasSpecies()) {
40478        composeCodeableConcept("species", element.getSpecies());
40479      }
40480  }
40481
40482  protected void composeMedicinalProductAuthorization(String name, MedicinalProductAuthorization element) throws IOException {
40483    if (element != null) {
40484      composeDomainResourceAttributes(element);
40485      xml.enter(FHIR_NS, name);
40486      composeMedicinalProductAuthorizationElements(element);
40487      composeElementClose(element);
40488      xml.exit(FHIR_NS, name);
40489    }
40490  }
40491
40492  protected void composeMedicinalProductAuthorizationElements(MedicinalProductAuthorization element) throws IOException {
40493      composeDomainResourceElements(element);
40494      if (element.hasIdentifier()) { 
40495        for (Identifier e : element.getIdentifier()) 
40496          composeIdentifier("identifier", e);
40497      }
40498      if (element.hasSubject()) {
40499        composeReference("subject", element.getSubject());
40500      }
40501      if (element.hasCountry()) { 
40502        for (CodeableConcept e : element.getCountry()) 
40503          composeCodeableConcept("country", e);
40504      }
40505      if (element.hasJurisdiction()) { 
40506        for (CodeableConcept e : element.getJurisdiction()) 
40507          composeCodeableConcept("jurisdiction", e);
40508      }
40509      if (element.hasStatus()) {
40510        composeCodeableConcept("status", element.getStatus());
40511      }
40512      if (element.hasStatusDateElement()) {
40513        composeDateTime("statusDate", element.getStatusDateElement());
40514      }
40515      if (element.hasRestoreDateElement()) {
40516        composeDateTime("restoreDate", element.getRestoreDateElement());
40517      }
40518      if (element.hasValidityPeriod()) {
40519        composePeriod("validityPeriod", element.getValidityPeriod());
40520      }
40521      if (element.hasDataExclusivityPeriod()) {
40522        composePeriod("dataExclusivityPeriod", element.getDataExclusivityPeriod());
40523      }
40524      if (element.hasDateOfFirstAuthorizationElement()) {
40525        composeDateTime("dateOfFirstAuthorization", element.getDateOfFirstAuthorizationElement());
40526      }
40527      if (element.hasInternationalBirthDateElement()) {
40528        composeDateTime("internationalBirthDate", element.getInternationalBirthDateElement());
40529      }
40530      if (element.hasLegalBasis()) {
40531        composeCodeableConcept("legalBasis", element.getLegalBasis());
40532      }
40533      if (element.hasJurisdictionalAuthorization()) { 
40534        for (MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent e : element.getJurisdictionalAuthorization()) 
40535          composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent("jurisdictionalAuthorization", e);
40536      }
40537      if (element.hasHolder()) {
40538        composeReference("holder", element.getHolder());
40539      }
40540      if (element.hasRegulator()) {
40541        composeReference("regulator", element.getRegulator());
40542      }
40543      if (element.hasProcedure()) {
40544        composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("procedure", element.getProcedure());
40545      }
40546  }
40547
40548  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
40549    if (element != null) {
40550      composeElementAttributes(element);
40551      xml.enter(FHIR_NS, name);
40552      composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(element);
40553      composeElementClose(element);
40554      xml.exit(FHIR_NS, name);
40555    }
40556  }
40557
40558  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
40559      composeBackboneElementElements(element);
40560      if (element.hasIdentifier()) { 
40561        for (Identifier e : element.getIdentifier()) 
40562          composeIdentifier("identifier", e);
40563      }
40564      if (element.hasCountry()) {
40565        composeCodeableConcept("country", element.getCountry());
40566      }
40567      if (element.hasJurisdiction()) { 
40568        for (CodeableConcept e : element.getJurisdiction()) 
40569          composeCodeableConcept("jurisdiction", e);
40570      }
40571      if (element.hasLegalStatusOfSupply()) {
40572        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40573      }
40574      if (element.hasValidityPeriod()) {
40575        composePeriod("validityPeriod", element.getValidityPeriod());
40576      }
40577  }
40578
40579  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
40580    if (element != null) {
40581      composeElementAttributes(element);
40582      xml.enter(FHIR_NS, name);
40583      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(element);
40584      composeElementClose(element);
40585      xml.exit(FHIR_NS, name);
40586    }
40587  }
40588
40589  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
40590      composeBackboneElementElements(element);
40591      if (element.hasIdentifier()) {
40592        composeIdentifier("identifier", element.getIdentifier());
40593      }
40594      if (element.hasType()) {
40595        composeCodeableConcept("type", element.getType());
40596      }
40597      if (element.hasDate()) {
40598        composeType("date", element.getDate());
40599      }      if (element.hasApplication()) { 
40600        for (MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent e : element.getApplication()) 
40601          composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("application", e);
40602      }
40603  }
40604
40605  protected void composeMedicinalProductContraindication(String name, MedicinalProductContraindication element) throws IOException {
40606    if (element != null) {
40607      composeDomainResourceAttributes(element);
40608      xml.enter(FHIR_NS, name);
40609      composeMedicinalProductContraindicationElements(element);
40610      composeElementClose(element);
40611      xml.exit(FHIR_NS, name);
40612    }
40613  }
40614
40615  protected void composeMedicinalProductContraindicationElements(MedicinalProductContraindication element) throws IOException {
40616      composeDomainResourceElements(element);
40617      if (element.hasSubject()) { 
40618        for (Reference e : element.getSubject()) 
40619          composeReference("subject", e);
40620      }
40621      if (element.hasDisease()) {
40622        composeCodeableConcept("disease", element.getDisease());
40623      }
40624      if (element.hasDiseaseStatus()) {
40625        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
40626      }
40627      if (element.hasComorbidity()) { 
40628        for (CodeableConcept e : element.getComorbidity()) 
40629          composeCodeableConcept("comorbidity", e);
40630      }
40631      if (element.hasTherapeuticIndication()) { 
40632        for (Reference e : element.getTherapeuticIndication()) 
40633          composeReference("therapeuticIndication", e);
40634      }
40635      if (element.hasOtherTherapy()) { 
40636        for (MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
40637          composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent("otherTherapy", e);
40638      }
40639      if (element.hasPopulation()) { 
40640        for (Population e : element.getPopulation()) 
40641          composePopulation("population", e);
40642      }
40643  }
40644
40645  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(String name, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element) throws IOException {
40646    if (element != null) {
40647      composeElementAttributes(element);
40648      xml.enter(FHIR_NS, name);
40649      composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentElements(element);
40650      composeElementClose(element);
40651      xml.exit(FHIR_NS, name);
40652    }
40653  }
40654
40655  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentElements(MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element) throws IOException {
40656      composeBackboneElementElements(element);
40657      if (element.hasTherapyRelationshipType()) {
40658        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
40659      }
40660      if (element.hasMedication()) {
40661        composeType("medication", element.getMedication());
40662      }  }
40663
40664  protected void composeMedicinalProductIndication(String name, MedicinalProductIndication element) throws IOException {
40665    if (element != null) {
40666      composeDomainResourceAttributes(element);
40667      xml.enter(FHIR_NS, name);
40668      composeMedicinalProductIndicationElements(element);
40669      composeElementClose(element);
40670      xml.exit(FHIR_NS, name);
40671    }
40672  }
40673
40674  protected void composeMedicinalProductIndicationElements(MedicinalProductIndication element) throws IOException {
40675      composeDomainResourceElements(element);
40676      if (element.hasSubject()) { 
40677        for (Reference e : element.getSubject()) 
40678          composeReference("subject", e);
40679      }
40680      if (element.hasDiseaseSymptomProcedure()) {
40681        composeCodeableConcept("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
40682      }
40683      if (element.hasDiseaseStatus()) {
40684        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
40685      }
40686      if (element.hasComorbidity()) { 
40687        for (CodeableConcept e : element.getComorbidity()) 
40688          composeCodeableConcept("comorbidity", e);
40689      }
40690      if (element.hasIntendedEffect()) {
40691        composeCodeableConcept("intendedEffect", element.getIntendedEffect());
40692      }
40693      if (element.hasDuration()) {
40694        composeQuantity("duration", element.getDuration());
40695      }
40696      if (element.hasOtherTherapy()) { 
40697        for (MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent e : element.getOtherTherapy()) 
40698          composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent("otherTherapy", e);
40699      }
40700      if (element.hasUndesirableEffect()) { 
40701        for (Reference e : element.getUndesirableEffect()) 
40702          composeReference("undesirableEffect", e);
40703      }
40704      if (element.hasPopulation()) { 
40705        for (Population e : element.getPopulation()) 
40706          composePopulation("population", e);
40707      }
40708  }
40709
40710  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(String name, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element) throws IOException {
40711    if (element != null) {
40712      composeElementAttributes(element);
40713      xml.enter(FHIR_NS, name);
40714      composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentElements(element);
40715      composeElementClose(element);
40716      xml.exit(FHIR_NS, name);
40717    }
40718  }
40719
40720  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentElements(MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element) throws IOException {
40721      composeBackboneElementElements(element);
40722      if (element.hasTherapyRelationshipType()) {
40723        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
40724      }
40725      if (element.hasMedication()) {
40726        composeType("medication", element.getMedication());
40727      }  }
40728
40729  protected void composeMedicinalProductIngredient(String name, MedicinalProductIngredient element) throws IOException {
40730    if (element != null) {
40731      composeDomainResourceAttributes(element);
40732      xml.enter(FHIR_NS, name);
40733      composeMedicinalProductIngredientElements(element);
40734      composeElementClose(element);
40735      xml.exit(FHIR_NS, name);
40736    }
40737  }
40738
40739  protected void composeMedicinalProductIngredientElements(MedicinalProductIngredient element) throws IOException {
40740      composeDomainResourceElements(element);
40741      if (element.hasIdentifier()) {
40742        composeIdentifier("identifier", element.getIdentifier());
40743      }
40744      if (element.hasRole()) {
40745        composeCodeableConcept("role", element.getRole());
40746      }
40747      if (element.hasAllergenicIndicatorElement()) {
40748        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
40749      }
40750      if (element.hasManufacturer()) { 
40751        for (Reference e : element.getManufacturer()) 
40752          composeReference("manufacturer", e);
40753      }
40754      if (element.hasSpecifiedSubstance()) { 
40755        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent e : element.getSpecifiedSubstance()) 
40756          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent("specifiedSubstance", e);
40757      }
40758      if (element.hasSubstance()) {
40759        composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent("substance", element.getSubstance());
40760      }
40761  }
40762
40763  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
40764    if (element != null) {
40765      composeElementAttributes(element);
40766      xml.enter(FHIR_NS, name);
40767      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(element);
40768      composeElementClose(element);
40769      xml.exit(FHIR_NS, name);
40770    }
40771  }
40772
40773  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
40774      composeBackboneElementElements(element);
40775      if (element.hasCode()) {
40776        composeCodeableConcept("code", element.getCode());
40777      }
40778      if (element.hasGroup()) {
40779        composeCodeableConcept("group", element.getGroup());
40780      }
40781      if (element.hasConfidentiality()) {
40782        composeCodeableConcept("confidentiality", element.getConfidentiality());
40783      }
40784      if (element.hasStrength()) { 
40785        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
40786          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
40787      }
40788  }
40789
40790  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
40791    if (element != null) {
40792      composeElementAttributes(element);
40793      xml.enter(FHIR_NS, name);
40794      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(element);
40795      composeElementClose(element);
40796      xml.exit(FHIR_NS, name);
40797    }
40798  }
40799
40800  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
40801      composeBackboneElementElements(element);
40802      if (element.hasPresentation()) {
40803        composeRatio("presentation", element.getPresentation());
40804      }
40805      if (element.hasPresentationLowLimit()) {
40806        composeRatio("presentationLowLimit", element.getPresentationLowLimit());
40807      }
40808      if (element.hasConcentration()) {
40809        composeRatio("concentration", element.getConcentration());
40810      }
40811      if (element.hasConcentrationLowLimit()) {
40812        composeRatio("concentrationLowLimit", element.getConcentrationLowLimit());
40813      }
40814      if (element.hasMeasurementPointElement()) {
40815        composeString("measurementPoint", element.getMeasurementPointElement());
40816      }
40817      if (element.hasCountry()) { 
40818        for (CodeableConcept e : element.getCountry()) 
40819          composeCodeableConcept("country", e);
40820      }
40821      if (element.hasReferenceStrength()) { 
40822        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent e : element.getReferenceStrength()) 
40823          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent("referenceStrength", e);
40824      }
40825  }
40826
40827  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
40828    if (element != null) {
40829      composeElementAttributes(element);
40830      xml.enter(FHIR_NS, name);
40831      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(element);
40832      composeElementClose(element);
40833      xml.exit(FHIR_NS, name);
40834    }
40835  }
40836
40837  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
40838      composeBackboneElementElements(element);
40839      if (element.hasSubstance()) {
40840        composeCodeableConcept("substance", element.getSubstance());
40841      }
40842      if (element.hasStrength()) {
40843        composeRatio("strength", element.getStrength());
40844      }
40845      if (element.hasStrengthLowLimit()) {
40846        composeRatio("strengthLowLimit", element.getStrengthLowLimit());
40847      }
40848      if (element.hasMeasurementPointElement()) {
40849        composeString("measurementPoint", element.getMeasurementPointElement());
40850      }
40851      if (element.hasCountry()) { 
40852        for (CodeableConcept e : element.getCountry()) 
40853          composeCodeableConcept("country", e);
40854      }
40855  }
40856
40857  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
40858    if (element != null) {
40859      composeElementAttributes(element);
40860      xml.enter(FHIR_NS, name);
40861      composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(element);
40862      composeElementClose(element);
40863      xml.exit(FHIR_NS, name);
40864    }
40865  }
40866
40867  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
40868      composeBackboneElementElements(element);
40869      if (element.hasCode()) {
40870        composeCodeableConcept("code", element.getCode());
40871      }
40872      if (element.hasStrength()) { 
40873        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
40874          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
40875      }
40876  }
40877
40878  protected void composeMedicinalProductInteraction(String name, MedicinalProductInteraction element) throws IOException {
40879    if (element != null) {
40880      composeDomainResourceAttributes(element);
40881      xml.enter(FHIR_NS, name);
40882      composeMedicinalProductInteractionElements(element);
40883      composeElementClose(element);
40884      xml.exit(FHIR_NS, name);
40885    }
40886  }
40887
40888  protected void composeMedicinalProductInteractionElements(MedicinalProductInteraction element) throws IOException {
40889      composeDomainResourceElements(element);
40890      if (element.hasSubject()) { 
40891        for (Reference e : element.getSubject()) 
40892          composeReference("subject", e);
40893      }
40894      if (element.hasDescriptionElement()) {
40895        composeString("description", element.getDescriptionElement());
40896      }
40897      if (element.hasInteractant()) { 
40898        for (MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent e : element.getInteractant()) 
40899          composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponent("interactant", e);
40900      }
40901      if (element.hasType()) {
40902        composeCodeableConcept("type", element.getType());
40903      }
40904      if (element.hasEffect()) {
40905        composeCodeableConcept("effect", element.getEffect());
40906      }
40907      if (element.hasIncidence()) {
40908        composeCodeableConcept("incidence", element.getIncidence());
40909      }
40910      if (element.hasManagement()) {
40911        composeCodeableConcept("management", element.getManagement());
40912      }
40913  }
40914
40915  protected void composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(String name, MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent element) throws IOException {
40916    if (element != null) {
40917      composeElementAttributes(element);
40918      xml.enter(FHIR_NS, name);
40919      composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponentElements(element);
40920      composeElementClose(element);
40921      xml.exit(FHIR_NS, name);
40922    }
40923  }
40924
40925  protected void composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponentElements(MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent element) throws IOException {
40926      composeBackboneElementElements(element);
40927      if (element.hasItem()) {
40928        composeType("item", element.getItem());
40929      }  }
40930
40931  protected void composeMedicinalProductManufactured(String name, MedicinalProductManufactured element) throws IOException {
40932    if (element != null) {
40933      composeDomainResourceAttributes(element);
40934      xml.enter(FHIR_NS, name);
40935      composeMedicinalProductManufacturedElements(element);
40936      composeElementClose(element);
40937      xml.exit(FHIR_NS, name);
40938    }
40939  }
40940
40941  protected void composeMedicinalProductManufacturedElements(MedicinalProductManufactured element) throws IOException {
40942      composeDomainResourceElements(element);
40943      if (element.hasManufacturedDoseForm()) {
40944        composeCodeableConcept("manufacturedDoseForm", element.getManufacturedDoseForm());
40945      }
40946      if (element.hasUnitOfPresentation()) {
40947        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
40948      }
40949      if (element.hasQuantity()) {
40950        composeQuantity("quantity", element.getQuantity());
40951      }
40952      if (element.hasManufacturer()) { 
40953        for (Reference e : element.getManufacturer()) 
40954          composeReference("manufacturer", e);
40955      }
40956      if (element.hasIngredient()) { 
40957        for (Reference e : element.getIngredient()) 
40958          composeReference("ingredient", e);
40959      }
40960      if (element.hasPhysicalCharacteristics()) {
40961        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
40962      }
40963      if (element.hasOtherCharacteristics()) { 
40964        for (CodeableConcept e : element.getOtherCharacteristics()) 
40965          composeCodeableConcept("otherCharacteristics", e);
40966      }
40967  }
40968
40969  protected void composeMedicinalProductPackaged(String name, MedicinalProductPackaged element) throws IOException {
40970    if (element != null) {
40971      composeDomainResourceAttributes(element);
40972      xml.enter(FHIR_NS, name);
40973      composeMedicinalProductPackagedElements(element);
40974      composeElementClose(element);
40975      xml.exit(FHIR_NS, name);
40976    }
40977  }
40978
40979  protected void composeMedicinalProductPackagedElements(MedicinalProductPackaged element) throws IOException {
40980      composeDomainResourceElements(element);
40981      if (element.hasIdentifier()) { 
40982        for (Identifier e : element.getIdentifier()) 
40983          composeIdentifier("identifier", e);
40984      }
40985      if (element.hasSubject()) { 
40986        for (Reference e : element.getSubject()) 
40987          composeReference("subject", e);
40988      }
40989      if (element.hasDescriptionElement()) {
40990        composeString("description", element.getDescriptionElement());
40991      }
40992      if (element.hasLegalStatusOfSupply()) {
40993        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40994      }
40995      if (element.hasMarketingStatus()) { 
40996        for (MarketingStatus e : element.getMarketingStatus()) 
40997          composeMarketingStatus("marketingStatus", e);
40998      }
40999      if (element.hasMarketingAuthorization()) {
41000        composeReference("marketingAuthorization", element.getMarketingAuthorization());
41001      }
41002      if (element.hasManufacturer()) { 
41003        for (Reference e : element.getManufacturer()) 
41004          composeReference("manufacturer", e);
41005      }
41006      if (element.hasBatchIdentifier()) { 
41007        for (MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent e : element.getBatchIdentifier()) 
41008          composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent("batchIdentifier", e);
41009      }
41010      if (element.hasPackageItem()) { 
41011        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
41012          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
41013      }
41014  }
41015
41016  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
41017    if (element != null) {
41018      composeElementAttributes(element);
41019      xml.enter(FHIR_NS, name);
41020      composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(element);
41021      composeElementClose(element);
41022      xml.exit(FHIR_NS, name);
41023    }
41024  }
41025
41026  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
41027      composeBackboneElementElements(element);
41028      if (element.hasOuterPackaging()) {
41029        composeIdentifier("outerPackaging", element.getOuterPackaging());
41030      }
41031      if (element.hasImmediatePackaging()) {
41032        composeIdentifier("immediatePackaging", element.getImmediatePackaging());
41033      }
41034  }
41035
41036  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
41037    if (element != null) {
41038      composeElementAttributes(element);
41039      xml.enter(FHIR_NS, name);
41040      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(element);
41041      composeElementClose(element);
41042      xml.exit(FHIR_NS, name);
41043    }
41044  }
41045
41046  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
41047      composeBackboneElementElements(element);
41048      if (element.hasIdentifier()) { 
41049        for (Identifier e : element.getIdentifier()) 
41050          composeIdentifier("identifier", e);
41051      }
41052      if (element.hasType()) {
41053        composeCodeableConcept("type", element.getType());
41054      }
41055      if (element.hasQuantity()) {
41056        composeQuantity("quantity", element.getQuantity());
41057      }
41058      if (element.hasMaterial()) { 
41059        for (CodeableConcept e : element.getMaterial()) 
41060          composeCodeableConcept("material", e);
41061      }
41062      if (element.hasAlternateMaterial()) { 
41063        for (CodeableConcept e : element.getAlternateMaterial()) 
41064          composeCodeableConcept("alternateMaterial", e);
41065      }
41066      if (element.hasDevice()) { 
41067        for (Reference e : element.getDevice()) 
41068          composeReference("device", e);
41069      }
41070      if (element.hasManufacturedItem()) { 
41071        for (Reference e : element.getManufacturedItem()) 
41072          composeReference("manufacturedItem", e);
41073      }
41074      if (element.hasPackageItem()) { 
41075        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
41076          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
41077      }
41078      if (element.hasPhysicalCharacteristics()) {
41079        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
41080      }
41081      if (element.hasOtherCharacteristics()) { 
41082        for (CodeableConcept e : element.getOtherCharacteristics()) 
41083          composeCodeableConcept("otherCharacteristics", e);
41084      }
41085      if (element.hasShelfLifeStorage()) { 
41086        for (ProductShelfLife e : element.getShelfLifeStorage()) 
41087          composeProductShelfLife("shelfLifeStorage", e);
41088      }
41089      if (element.hasManufacturer()) { 
41090        for (Reference e : element.getManufacturer()) 
41091          composeReference("manufacturer", e);
41092      }
41093  }
41094
41095  protected void composeMedicinalProductPharmaceutical(String name, MedicinalProductPharmaceutical element) throws IOException {
41096    if (element != null) {
41097      composeDomainResourceAttributes(element);
41098      xml.enter(FHIR_NS, name);
41099      composeMedicinalProductPharmaceuticalElements(element);
41100      composeElementClose(element);
41101      xml.exit(FHIR_NS, name);
41102    }
41103  }
41104
41105  protected void composeMedicinalProductPharmaceuticalElements(MedicinalProductPharmaceutical element) throws IOException {
41106      composeDomainResourceElements(element);
41107      if (element.hasIdentifier()) { 
41108        for (Identifier e : element.getIdentifier()) 
41109          composeIdentifier("identifier", e);
41110      }
41111      if (element.hasAdministrableDoseForm()) {
41112        composeCodeableConcept("administrableDoseForm", element.getAdministrableDoseForm());
41113      }
41114      if (element.hasUnitOfPresentation()) {
41115        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
41116      }
41117      if (element.hasIngredient()) { 
41118        for (Reference e : element.getIngredient()) 
41119          composeReference("ingredient", e);
41120      }
41121      if (element.hasDevice()) { 
41122        for (Reference e : element.getDevice()) 
41123          composeReference("device", e);
41124      }
41125      if (element.hasCharacteristics()) { 
41126        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent e : element.getCharacteristics()) 
41127          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent("characteristics", e);
41128      }
41129      if (element.hasRouteOfAdministration()) { 
41130        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent e : element.getRouteOfAdministration()) 
41131          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent("routeOfAdministration", e);
41132      }
41133  }
41134
41135  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
41136    if (element != null) {
41137      composeElementAttributes(element);
41138      xml.enter(FHIR_NS, name);
41139      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(element);
41140      composeElementClose(element);
41141      xml.exit(FHIR_NS, name);
41142    }
41143  }
41144
41145  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
41146      composeBackboneElementElements(element);
41147      if (element.hasCode()) {
41148        composeCodeableConcept("code", element.getCode());
41149      }
41150      if (element.hasStatus()) {
41151        composeCodeableConcept("status", element.getStatus());
41152      }
41153  }
41154
41155  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element) throws IOException {
41156    if (element != null) {
41157      composeElementAttributes(element);
41158      xml.enter(FHIR_NS, name);
41159      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentElements(element);
41160      composeElementClose(element);
41161      xml.exit(FHIR_NS, name);
41162    }
41163  }
41164
41165  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element) throws IOException {
41166      composeBackboneElementElements(element);
41167      if (element.hasCode()) {
41168        composeCodeableConcept("code", element.getCode());
41169      }
41170      if (element.hasFirstDose()) {
41171        composeQuantity("firstDose", element.getFirstDose());
41172      }
41173      if (element.hasMaxSingleDose()) {
41174        composeQuantity("maxSingleDose", element.getMaxSingleDose());
41175      }
41176      if (element.hasMaxDosePerDay()) {
41177        composeQuantity("maxDosePerDay", element.getMaxDosePerDay());
41178      }
41179      if (element.hasMaxDosePerTreatmentPeriod()) {
41180        composeRatio("maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod());
41181      }
41182      if (element.hasMaxTreatmentPeriod()) {
41183        composeDuration("maxTreatmentPeriod", element.getMaxTreatmentPeriod());
41184      }
41185      if (element.hasTargetSpecies()) { 
41186        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent e : element.getTargetSpecies()) 
41187          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent("targetSpecies", e);
41188      }
41189  }
41190
41191  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
41192    if (element != null) {
41193      composeElementAttributes(element);
41194      xml.enter(FHIR_NS, name);
41195      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentElements(element);
41196      composeElementClose(element);
41197      xml.exit(FHIR_NS, name);
41198    }
41199  }
41200
41201  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
41202      composeBackboneElementElements(element);
41203      if (element.hasCode()) {
41204        composeCodeableConcept("code", element.getCode());
41205      }
41206      if (element.hasWithdrawalPeriod()) { 
41207        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent e : element.getWithdrawalPeriod()) 
41208          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent("withdrawalPeriod", e);
41209      }
41210  }
41211
41212  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
41213    if (element != null) {
41214      composeElementAttributes(element);
41215      xml.enter(FHIR_NS, name);
41216      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(element);
41217      composeElementClose(element);
41218      xml.exit(FHIR_NS, name);
41219    }
41220  }
41221
41222  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
41223      composeBackboneElementElements(element);
41224      if (element.hasTissue()) {
41225        composeCodeableConcept("tissue", element.getTissue());
41226      }
41227      if (element.hasValue()) {
41228        composeQuantity("value", element.getValue());
41229      }
41230      if (element.hasSupportingInformationElement()) {
41231        composeString("supportingInformation", element.getSupportingInformationElement());
41232      }
41233  }
41234
41235  protected void composeMedicinalProductUndesirableEffect(String name, MedicinalProductUndesirableEffect element) throws IOException {
41236    if (element != null) {
41237      composeDomainResourceAttributes(element);
41238      xml.enter(FHIR_NS, name);
41239      composeMedicinalProductUndesirableEffectElements(element);
41240      composeElementClose(element);
41241      xml.exit(FHIR_NS, name);
41242    }
41243  }
41244
41245  protected void composeMedicinalProductUndesirableEffectElements(MedicinalProductUndesirableEffect element) throws IOException {
41246      composeDomainResourceElements(element);
41247      if (element.hasSubject()) { 
41248        for (Reference e : element.getSubject()) 
41249          composeReference("subject", e);
41250      }
41251      if (element.hasSymptomConditionEffect()) {
41252        composeCodeableConcept("symptomConditionEffect", element.getSymptomConditionEffect());
41253      }
41254      if (element.hasClassification()) {
41255        composeCodeableConcept("classification", element.getClassification());
41256      }
41257      if (element.hasFrequencyOfOccurrence()) {
41258        composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
41259      }
41260      if (element.hasPopulation()) { 
41261        for (Population e : element.getPopulation()) 
41262          composePopulation("population", e);
41263      }
41264  }
41265
41266  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
41267    if (element != null) {
41268      composeDomainResourceAttributes(element);
41269      xml.enter(FHIR_NS, name);
41270      composeMessageDefinitionElements(element);
41271      composeElementClose(element);
41272      xml.exit(FHIR_NS, name);
41273    }
41274  }
41275
41276  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
41277      composeDomainResourceElements(element);
41278      if (element.hasUrlElement()) {
41279        composeUri("url", element.getUrlElement());
41280      }
41281      if (element.hasIdentifier()) { 
41282        for (Identifier e : element.getIdentifier()) 
41283          composeIdentifier("identifier", e);
41284      }
41285      if (element.hasVersionElement()) {
41286        composeString("version", element.getVersionElement());
41287      }
41288      if (element.hasNameElement()) {
41289        composeString("name", element.getNameElement());
41290      }
41291      if (element.hasTitleElement()) {
41292        composeString("title", element.getTitleElement());
41293      }
41294      if (element.hasReplaces()) { 
41295        for (CanonicalType e : element.getReplaces()) 
41296          composeCanonical("replaces", e);
41297      }
41298      if (element.hasStatusElement())
41299        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41300      if (element.hasExperimentalElement()) {
41301        composeBoolean("experimental", element.getExperimentalElement());
41302      }
41303      if (element.hasDateElement()) {
41304        composeDateTime("date", element.getDateElement());
41305      }
41306      if (element.hasPublisherElement()) {
41307        composeString("publisher", element.getPublisherElement());
41308      }
41309      if (element.hasContact()) { 
41310        for (ContactDetail e : element.getContact()) 
41311          composeContactDetail("contact", e);
41312      }
41313      if (element.hasDescriptionElement()) {
41314        composeMarkdown("description", element.getDescriptionElement());
41315      }
41316      if (element.hasUseContext()) { 
41317        for (UsageContext e : element.getUseContext()) 
41318          composeUsageContext("useContext", e);
41319      }
41320      if (element.hasJurisdiction()) { 
41321        for (CodeableConcept e : element.getJurisdiction()) 
41322          composeCodeableConcept("jurisdiction", e);
41323      }
41324      if (element.hasPurposeElement()) {
41325        composeMarkdown("purpose", element.getPurposeElement());
41326      }
41327      if (element.hasCopyrightElement()) {
41328        composeMarkdown("copyright", element.getCopyrightElement());
41329      }
41330      if (element.hasBaseElement()) {
41331        composeCanonical("base", element.getBaseElement());
41332      }
41333      if (element.hasParent()) { 
41334        for (CanonicalType e : element.getParent()) 
41335          composeCanonical("parent", e);
41336      }
41337      if (element.hasEvent()) {
41338        composeType("event", element.getEvent());
41339      }      if (element.hasCategoryElement())
41340        composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
41341      if (element.hasFocus()) { 
41342        for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
41343          composeMessageDefinitionMessageDefinitionFocusComponent("focus", e);
41344      }
41345      if (element.hasResponseRequiredElement())
41346        composeEnumeration("responseRequired", element.getResponseRequiredElement(), new MessageDefinition.MessageheaderResponseRequestEnumFactory());
41347      if (element.hasAllowedResponse()) { 
41348        for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
41349          composeMessageDefinitionMessageDefinitionAllowedResponseComponent("allowedResponse", e);
41350      }
41351      if (element.hasGraph()) { 
41352        for (CanonicalType e : element.getGraph()) 
41353          composeCanonical("graph", e);
41354      }
41355  }
41356
41357  protected void composeMessageDefinitionMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
41358    if (element != null) {
41359      composeElementAttributes(element);
41360      xml.enter(FHIR_NS, name);
41361      composeMessageDefinitionMessageDefinitionFocusComponentElements(element);
41362      composeElementClose(element);
41363      xml.exit(FHIR_NS, name);
41364    }
41365  }
41366
41367  protected void composeMessageDefinitionMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
41368      composeBackboneElementElements(element);
41369      if (element.hasCodeElement()) {
41370        composeCode("code", element.getCodeElement());
41371      }
41372      if (element.hasProfileElement()) {
41373        composeCanonical("profile", element.getProfileElement());
41374      }
41375      if (element.hasMinElement()) {
41376        composeUnsignedInt("min", element.getMinElement());
41377      }
41378      if (element.hasMaxElement()) {
41379        composeString("max", element.getMaxElement());
41380      }
41381  }
41382
41383  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
41384    if (element != null) {
41385      composeElementAttributes(element);
41386      xml.enter(FHIR_NS, name);
41387      composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(element);
41388      composeElementClose(element);
41389      xml.exit(FHIR_NS, name);
41390    }
41391  }
41392
41393  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
41394      composeBackboneElementElements(element);
41395      if (element.hasMessageElement()) {
41396        composeCanonical("message", element.getMessageElement());
41397      }
41398      if (element.hasSituationElement()) {
41399        composeMarkdown("situation", element.getSituationElement());
41400      }
41401  }
41402
41403  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
41404    if (element != null) {
41405      composeDomainResourceAttributes(element);
41406      xml.enter(FHIR_NS, name);
41407      composeMessageHeaderElements(element);
41408      composeElementClose(element);
41409      xml.exit(FHIR_NS, name);
41410    }
41411  }
41412
41413  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
41414      composeDomainResourceElements(element);
41415      if (element.hasEvent()) {
41416        composeType("event", element.getEvent());
41417      }      if (element.hasDestination()) { 
41418        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
41419          composeMessageHeaderMessageDestinationComponent("destination", e);
41420      }
41421      if (element.hasSender()) {
41422        composeReference("sender", element.getSender());
41423      }
41424      if (element.hasEnterer()) {
41425        composeReference("enterer", element.getEnterer());
41426      }
41427      if (element.hasAuthor()) {
41428        composeReference("author", element.getAuthor());
41429      }
41430      if (element.hasSource()) {
41431        composeMessageHeaderMessageSourceComponent("source", element.getSource());
41432      }
41433      if (element.hasResponsible()) {
41434        composeReference("responsible", element.getResponsible());
41435      }
41436      if (element.hasReason()) {
41437        composeCodeableConcept("reason", element.getReason());
41438      }
41439      if (element.hasResponse()) {
41440        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
41441      }
41442      if (element.hasFocus()) { 
41443        for (Reference e : element.getFocus()) 
41444          composeReference("focus", e);
41445      }
41446      if (element.hasDefinitionElement()) {
41447        composeCanonical("definition", element.getDefinitionElement());
41448      }
41449  }
41450
41451  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
41452    if (element != null) {
41453      composeElementAttributes(element);
41454      xml.enter(FHIR_NS, name);
41455      composeMessageHeaderMessageDestinationComponentElements(element);
41456      composeElementClose(element);
41457      xml.exit(FHIR_NS, name);
41458    }
41459  }
41460
41461  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
41462      composeBackboneElementElements(element);
41463      if (element.hasNameElement()) {
41464        composeString("name", element.getNameElement());
41465      }
41466      if (element.hasTarget()) {
41467        composeReference("target", element.getTarget());
41468      }
41469      if (element.hasEndpointElement()) {
41470        composeUrl("endpoint", element.getEndpointElement());
41471      }
41472      if (element.hasReceiver()) {
41473        composeReference("receiver", element.getReceiver());
41474      }
41475  }
41476
41477  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
41478    if (element != null) {
41479      composeElementAttributes(element);
41480      xml.enter(FHIR_NS, name);
41481      composeMessageHeaderMessageSourceComponentElements(element);
41482      composeElementClose(element);
41483      xml.exit(FHIR_NS, name);
41484    }
41485  }
41486
41487  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
41488      composeBackboneElementElements(element);
41489      if (element.hasNameElement()) {
41490        composeString("name", element.getNameElement());
41491      }
41492      if (element.hasSoftwareElement()) {
41493        composeString("software", element.getSoftwareElement());
41494      }
41495      if (element.hasVersionElement()) {
41496        composeString("version", element.getVersionElement());
41497      }
41498      if (element.hasContact()) {
41499        composeContactPoint("contact", element.getContact());
41500      }
41501      if (element.hasEndpointElement()) {
41502        composeUrl("endpoint", element.getEndpointElement());
41503      }
41504  }
41505
41506  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
41507    if (element != null) {
41508      composeElementAttributes(element);
41509      xml.enter(FHIR_NS, name);
41510      composeMessageHeaderMessageHeaderResponseComponentElements(element);
41511      composeElementClose(element);
41512      xml.exit(FHIR_NS, name);
41513    }
41514  }
41515
41516  protected void composeMessageHeaderMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
41517      composeBackboneElementElements(element);
41518      if (element.hasIdentifierElement()) {
41519        composeId("identifier", element.getIdentifierElement());
41520      }
41521      if (element.hasCodeElement())
41522        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
41523      if (element.hasDetails()) {
41524        composeReference("details", element.getDetails());
41525      }
41526  }
41527
41528  protected void composeMolecularSequence(String name, MolecularSequence element) throws IOException {
41529    if (element != null) {
41530      composeDomainResourceAttributes(element);
41531      xml.enter(FHIR_NS, name);
41532      composeMolecularSequenceElements(element);
41533      composeElementClose(element);
41534      xml.exit(FHIR_NS, name);
41535    }
41536  }
41537
41538  protected void composeMolecularSequenceElements(MolecularSequence element) throws IOException {
41539      composeDomainResourceElements(element);
41540      if (element.hasIdentifier()) { 
41541        for (Identifier e : element.getIdentifier()) 
41542          composeIdentifier("identifier", e);
41543      }
41544      if (element.hasTypeElement())
41545        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.SequenceTypeEnumFactory());
41546      if (element.hasCoordinateSystemElement()) {
41547        composeInteger("coordinateSystem", element.getCoordinateSystemElement());
41548      }
41549      if (element.hasPatient()) {
41550        composeReference("patient", element.getPatient());
41551      }
41552      if (element.hasSpecimen()) {
41553        composeReference("specimen", element.getSpecimen());
41554      }
41555      if (element.hasDevice()) {
41556        composeReference("device", element.getDevice());
41557      }
41558      if (element.hasPerformer()) {
41559        composeReference("performer", element.getPerformer());
41560      }
41561      if (element.hasQuantity()) {
41562        composeQuantity("quantity", element.getQuantity());
41563      }
41564      if (element.hasReferenceSeq()) {
41565        composeMolecularSequenceMolecularSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
41566      }
41567      if (element.hasVariant()) { 
41568        for (MolecularSequence.MolecularSequenceVariantComponent e : element.getVariant()) 
41569          composeMolecularSequenceMolecularSequenceVariantComponent("variant", e);
41570      }
41571      if (element.hasObservedSeqElement()) {
41572        composeString("observedSeq", element.getObservedSeqElement());
41573      }
41574      if (element.hasQuality()) { 
41575        for (MolecularSequence.MolecularSequenceQualityComponent e : element.getQuality()) 
41576          composeMolecularSequenceMolecularSequenceQualityComponent("quality", e);
41577      }
41578      if (element.hasReadCoverageElement()) {
41579        composeInteger("readCoverage", element.getReadCoverageElement());
41580      }
41581      if (element.hasRepository()) { 
41582        for (MolecularSequence.MolecularSequenceRepositoryComponent e : element.getRepository()) 
41583          composeMolecularSequenceMolecularSequenceRepositoryComponent("repository", e);
41584      }
41585      if (element.hasPointer()) { 
41586        for (Reference e : element.getPointer()) 
41587          composeReference("pointer", e);
41588      }
41589      if (element.hasStructureVariant()) { 
41590        for (MolecularSequence.MolecularSequenceStructureVariantComponent e : element.getStructureVariant()) 
41591          composeMolecularSequenceMolecularSequenceStructureVariantComponent("structureVariant", e);
41592      }
41593  }
41594
41595  protected void composeMolecularSequenceMolecularSequenceReferenceSeqComponent(String name, MolecularSequence.MolecularSequenceReferenceSeqComponent element) throws IOException {
41596    if (element != null) {
41597      composeElementAttributes(element);
41598      xml.enter(FHIR_NS, name);
41599      composeMolecularSequenceMolecularSequenceReferenceSeqComponentElements(element);
41600      composeElementClose(element);
41601      xml.exit(FHIR_NS, name);
41602    }
41603  }
41604
41605  protected void composeMolecularSequenceMolecularSequenceReferenceSeqComponentElements(MolecularSequence.MolecularSequenceReferenceSeqComponent element) throws IOException {
41606      composeBackboneElementElements(element);
41607      if (element.hasChromosome()) {
41608        composeCodeableConcept("chromosome", element.getChromosome());
41609      }
41610      if (element.hasGenomeBuildElement()) {
41611        composeString("genomeBuild", element.getGenomeBuildElement());
41612      }
41613      if (element.hasOrientationElement())
41614        composeEnumeration("orientation", element.getOrientationElement(), new MolecularSequence.OrientationTypeEnumFactory());
41615      if (element.hasReferenceSeqId()) {
41616        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
41617      }
41618      if (element.hasReferenceSeqPointer()) {
41619        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
41620      }
41621      if (element.hasReferenceSeqStringElement()) {
41622        composeString("referenceSeqString", element.getReferenceSeqStringElement());
41623      }
41624      if (element.hasStrandElement())
41625        composeEnumeration("strand", element.getStrandElement(), new MolecularSequence.StrandTypeEnumFactory());
41626      if (element.hasWindowStartElement()) {
41627        composeInteger("windowStart", element.getWindowStartElement());
41628      }
41629      if (element.hasWindowEndElement()) {
41630        composeInteger("windowEnd", element.getWindowEndElement());
41631      }
41632  }
41633
41634  protected void composeMolecularSequenceMolecularSequenceVariantComponent(String name, MolecularSequence.MolecularSequenceVariantComponent element) throws IOException {
41635    if (element != null) {
41636      composeElementAttributes(element);
41637      xml.enter(FHIR_NS, name);
41638      composeMolecularSequenceMolecularSequenceVariantComponentElements(element);
41639      composeElementClose(element);
41640      xml.exit(FHIR_NS, name);
41641    }
41642  }
41643
41644  protected void composeMolecularSequenceMolecularSequenceVariantComponentElements(MolecularSequence.MolecularSequenceVariantComponent element) throws IOException {
41645      composeBackboneElementElements(element);
41646      if (element.hasStartElement()) {
41647        composeInteger("start", element.getStartElement());
41648      }
41649      if (element.hasEndElement()) {
41650        composeInteger("end", element.getEndElement());
41651      }
41652      if (element.hasObservedAlleleElement()) {
41653        composeString("observedAllele", element.getObservedAlleleElement());
41654      }
41655      if (element.hasReferenceAlleleElement()) {
41656        composeString("referenceAllele", element.getReferenceAlleleElement());
41657      }
41658      if (element.hasCigarElement()) {
41659        composeString("cigar", element.getCigarElement());
41660      }
41661      if (element.hasVariantPointer()) {
41662        composeReference("variantPointer", element.getVariantPointer());
41663      }
41664  }
41665
41666  protected void composeMolecularSequenceMolecularSequenceQualityComponent(String name, MolecularSequence.MolecularSequenceQualityComponent element) throws IOException {
41667    if (element != null) {
41668      composeElementAttributes(element);
41669      xml.enter(FHIR_NS, name);
41670      composeMolecularSequenceMolecularSequenceQualityComponentElements(element);
41671      composeElementClose(element);
41672      xml.exit(FHIR_NS, name);
41673    }
41674  }
41675
41676  protected void composeMolecularSequenceMolecularSequenceQualityComponentElements(MolecularSequence.MolecularSequenceQualityComponent element) throws IOException {
41677      composeBackboneElementElements(element);
41678      if (element.hasTypeElement())
41679        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.QualityTypeEnumFactory());
41680      if (element.hasStandardSequence()) {
41681        composeCodeableConcept("standardSequence", element.getStandardSequence());
41682      }
41683      if (element.hasStartElement()) {
41684        composeInteger("start", element.getStartElement());
41685      }
41686      if (element.hasEndElement()) {
41687        composeInteger("end", element.getEndElement());
41688      }
41689      if (element.hasScore()) {
41690        composeQuantity("score", element.getScore());
41691      }
41692      if (element.hasMethod()) {
41693        composeCodeableConcept("method", element.getMethod());
41694      }
41695      if (element.hasTruthTPElement()) {
41696        composeDecimal("truthTP", element.getTruthTPElement());
41697      }
41698      if (element.hasQueryTPElement()) {
41699        composeDecimal("queryTP", element.getQueryTPElement());
41700      }
41701      if (element.hasTruthFNElement()) {
41702        composeDecimal("truthFN", element.getTruthFNElement());
41703      }
41704      if (element.hasQueryFPElement()) {
41705        composeDecimal("queryFP", element.getQueryFPElement());
41706      }
41707      if (element.hasGtFPElement()) {
41708        composeDecimal("gtFP", element.getGtFPElement());
41709      }
41710      if (element.hasPrecisionElement()) {
41711        composeDecimal("precision", element.getPrecisionElement());
41712      }
41713      if (element.hasRecallElement()) {
41714        composeDecimal("recall", element.getRecallElement());
41715      }
41716      if (element.hasFScoreElement()) {
41717        composeDecimal("fScore", element.getFScoreElement());
41718      }
41719      if (element.hasRoc()) {
41720        composeMolecularSequenceMolecularSequenceQualityRocComponent("roc", element.getRoc());
41721      }
41722  }
41723
41724  protected void composeMolecularSequenceMolecularSequenceQualityRocComponent(String name, MolecularSequence.MolecularSequenceQualityRocComponent element) throws IOException {
41725    if (element != null) {
41726      composeElementAttributes(element);
41727      xml.enter(FHIR_NS, name);
41728      composeMolecularSequenceMolecularSequenceQualityRocComponentElements(element);
41729      composeElementClose(element);
41730      xml.exit(FHIR_NS, name);
41731    }
41732  }
41733
41734  protected void composeMolecularSequenceMolecularSequenceQualityRocComponentElements(MolecularSequence.MolecularSequenceQualityRocComponent element) throws IOException {
41735      composeBackboneElementElements(element);
41736      if (element.hasScore()) { 
41737        for (IntegerType e : element.getScore()) 
41738          composeInteger("score", e);
41739      }
41740      if (element.hasNumTP()) { 
41741        for (IntegerType e : element.getNumTP()) 
41742          composeInteger("numTP", e);
41743      }
41744      if (element.hasNumFP()) { 
41745        for (IntegerType e : element.getNumFP()) 
41746          composeInteger("numFP", e);
41747      }
41748      if (element.hasNumFN()) { 
41749        for (IntegerType e : element.getNumFN()) 
41750          composeInteger("numFN", e);
41751      }
41752      if (element.hasPrecision()) { 
41753        for (DecimalType e : element.getPrecision()) 
41754          composeDecimal("precision", e);
41755      }
41756      if (element.hasSensitivity()) { 
41757        for (DecimalType e : element.getSensitivity()) 
41758          composeDecimal("sensitivity", e);
41759      }
41760      if (element.hasFMeasure()) { 
41761        for (DecimalType e : element.getFMeasure()) 
41762          composeDecimal("fMeasure", e);
41763      }
41764  }
41765
41766  protected void composeMolecularSequenceMolecularSequenceRepositoryComponent(String name, MolecularSequence.MolecularSequenceRepositoryComponent element) throws IOException {
41767    if (element != null) {
41768      composeElementAttributes(element);
41769      xml.enter(FHIR_NS, name);
41770      composeMolecularSequenceMolecularSequenceRepositoryComponentElements(element);
41771      composeElementClose(element);
41772      xml.exit(FHIR_NS, name);
41773    }
41774  }
41775
41776  protected void composeMolecularSequenceMolecularSequenceRepositoryComponentElements(MolecularSequence.MolecularSequenceRepositoryComponent element) throws IOException {
41777      composeBackboneElementElements(element);
41778      if (element.hasTypeElement())
41779        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.RepositoryTypeEnumFactory());
41780      if (element.hasUrlElement()) {
41781        composeUri("url", element.getUrlElement());
41782      }
41783      if (element.hasNameElement()) {
41784        composeString("name", element.getNameElement());
41785      }
41786      if (element.hasDatasetIdElement()) {
41787        composeString("datasetId", element.getDatasetIdElement());
41788      }
41789      if (element.hasVariantsetIdElement()) {
41790        composeString("variantsetId", element.getVariantsetIdElement());
41791      }
41792      if (element.hasReadsetIdElement()) {
41793        composeString("readsetId", element.getReadsetIdElement());
41794      }
41795  }
41796
41797  protected void composeMolecularSequenceMolecularSequenceStructureVariantComponent(String name, MolecularSequence.MolecularSequenceStructureVariantComponent element) throws IOException {
41798    if (element != null) {
41799      composeElementAttributes(element);
41800      xml.enter(FHIR_NS, name);
41801      composeMolecularSequenceMolecularSequenceStructureVariantComponentElements(element);
41802      composeElementClose(element);
41803      xml.exit(FHIR_NS, name);
41804    }
41805  }
41806
41807  protected void composeMolecularSequenceMolecularSequenceStructureVariantComponentElements(MolecularSequence.MolecularSequenceStructureVariantComponent element) throws IOException {
41808      composeBackboneElementElements(element);
41809      if (element.hasVariantType()) {
41810        composeCodeableConcept("variantType", element.getVariantType());
41811      }
41812      if (element.hasExactElement()) {
41813        composeBoolean("exact", element.getExactElement());
41814      }
41815      if (element.hasLengthElement()) {
41816        composeInteger("length", element.getLengthElement());
41817      }
41818      if (element.hasOuter()) {
41819        composeMolecularSequenceMolecularSequenceStructureVariantOuterComponent("outer", element.getOuter());
41820      }
41821      if (element.hasInner()) {
41822        composeMolecularSequenceMolecularSequenceStructureVariantInnerComponent("inner", element.getInner());
41823      }
41824  }
41825
41826  protected void composeMolecularSequenceMolecularSequenceStructureVariantOuterComponent(String name, MolecularSequence.MolecularSequenceStructureVariantOuterComponent element) throws IOException {
41827    if (element != null) {
41828      composeElementAttributes(element);
41829      xml.enter(FHIR_NS, name);
41830      composeMolecularSequenceMolecularSequenceStructureVariantOuterComponentElements(element);
41831      composeElementClose(element);
41832      xml.exit(FHIR_NS, name);
41833    }
41834  }
41835
41836  protected void composeMolecularSequenceMolecularSequenceStructureVariantOuterComponentElements(MolecularSequence.MolecularSequenceStructureVariantOuterComponent element) throws IOException {
41837      composeBackboneElementElements(element);
41838      if (element.hasStartElement()) {
41839        composeInteger("start", element.getStartElement());
41840      }
41841      if (element.hasEndElement()) {
41842        composeInteger("end", element.getEndElement());
41843      }
41844  }
41845
41846  protected void composeMolecularSequenceMolecularSequenceStructureVariantInnerComponent(String name, MolecularSequence.MolecularSequenceStructureVariantInnerComponent element) throws IOException {
41847    if (element != null) {
41848      composeElementAttributes(element);
41849      xml.enter(FHIR_NS, name);
41850      composeMolecularSequenceMolecularSequenceStructureVariantInnerComponentElements(element);
41851      composeElementClose(element);
41852      xml.exit(FHIR_NS, name);
41853    }
41854  }
41855
41856  protected void composeMolecularSequenceMolecularSequenceStructureVariantInnerComponentElements(MolecularSequence.MolecularSequenceStructureVariantInnerComponent element) throws IOException {
41857      composeBackboneElementElements(element);
41858      if (element.hasStartElement()) {
41859        composeInteger("start", element.getStartElement());
41860      }
41861      if (element.hasEndElement()) {
41862        composeInteger("end", element.getEndElement());
41863      }
41864  }
41865
41866  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
41867    if (element != null) {
41868      composeDomainResourceAttributes(element);
41869      xml.enter(FHIR_NS, name);
41870      composeNamingSystemElements(element);
41871      composeElementClose(element);
41872      xml.exit(FHIR_NS, name);
41873    }
41874  }
41875
41876  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
41877      composeDomainResourceElements(element);
41878      if (element.hasNameElement()) {
41879        composeString("name", element.getNameElement());
41880      }
41881      if (element.hasStatusElement())
41882        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41883      if (element.hasKindElement())
41884        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
41885      if (element.hasDateElement()) {
41886        composeDateTime("date", element.getDateElement());
41887      }
41888      if (element.hasPublisherElement()) {
41889        composeString("publisher", element.getPublisherElement());
41890      }
41891      if (element.hasContact()) { 
41892        for (ContactDetail e : element.getContact()) 
41893          composeContactDetail("contact", e);
41894      }
41895      if (element.hasResponsibleElement()) {
41896        composeString("responsible", element.getResponsibleElement());
41897      }
41898      if (element.hasType()) {
41899        composeCodeableConcept("type", element.getType());
41900      }
41901      if (element.hasDescriptionElement()) {
41902        composeMarkdown("description", element.getDescriptionElement());
41903      }
41904      if (element.hasUseContext()) { 
41905        for (UsageContext e : element.getUseContext()) 
41906          composeUsageContext("useContext", e);
41907      }
41908      if (element.hasJurisdiction()) { 
41909        for (CodeableConcept e : element.getJurisdiction()) 
41910          composeCodeableConcept("jurisdiction", e);
41911      }
41912      if (element.hasUsageElement()) {
41913        composeString("usage", element.getUsageElement());
41914      }
41915      if (element.hasUniqueId()) { 
41916        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
41917          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
41918      }
41919  }
41920
41921  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
41922    if (element != null) {
41923      composeElementAttributes(element);
41924      xml.enter(FHIR_NS, name);
41925      composeNamingSystemNamingSystemUniqueIdComponentElements(element);
41926      composeElementClose(element);
41927      xml.exit(FHIR_NS, name);
41928    }
41929  }
41930
41931  protected void composeNamingSystemNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
41932      composeBackboneElementElements(element);
41933      if (element.hasTypeElement())
41934        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
41935      if (element.hasValueElement()) {
41936        composeString("value", element.getValueElement());
41937      }
41938      if (element.hasPreferredElement()) {
41939        composeBoolean("preferred", element.getPreferredElement());
41940      }
41941      if (element.hasCommentElement()) {
41942        composeString("comment", element.getCommentElement());
41943      }
41944      if (element.hasPeriod()) {
41945        composePeriod("period", element.getPeriod());
41946      }
41947  }
41948
41949  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
41950    if (element != null) {
41951      composeDomainResourceAttributes(element);
41952      xml.enter(FHIR_NS, name);
41953      composeNutritionOrderElements(element);
41954      composeElementClose(element);
41955      xml.exit(FHIR_NS, name);
41956    }
41957  }
41958
41959  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
41960      composeDomainResourceElements(element);
41961      if (element.hasIdentifier()) { 
41962        for (Identifier e : element.getIdentifier()) 
41963          composeIdentifier("identifier", e);
41964      }
41965      if (element.hasInstantiatesCanonical()) { 
41966        for (CanonicalType e : element.getInstantiatesCanonical()) 
41967          composeCanonical("instantiatesCanonical", e);
41968      }
41969      if (element.hasInstantiatesUri()) { 
41970        for (UriType e : element.getInstantiatesUri()) 
41971          composeUri("instantiatesUri", e);
41972      }
41973      if (element.hasInstantiates()) { 
41974        for (UriType e : element.getInstantiates()) 
41975          composeUri("instantiates", e);
41976      }
41977      if (element.hasStatusElement())
41978        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
41979      if (element.hasIntentElement())
41980        composeEnumeration("intent", element.getIntentElement(), new NutritionOrder.NutritiionOrderIntentEnumFactory());
41981      if (element.hasPatient()) {
41982        composeReference("patient", element.getPatient());
41983      }
41984      if (element.hasEncounter()) {
41985        composeReference("encounter", element.getEncounter());
41986      }
41987      if (element.hasDateTimeElement()) {
41988        composeDateTime("dateTime", element.getDateTimeElement());
41989      }
41990      if (element.hasOrderer()) {
41991        composeReference("orderer", element.getOrderer());
41992      }
41993      if (element.hasAllergyIntolerance()) { 
41994        for (Reference e : element.getAllergyIntolerance()) 
41995          composeReference("allergyIntolerance", e);
41996      }
41997      if (element.hasFoodPreferenceModifier()) { 
41998        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
41999          composeCodeableConcept("foodPreferenceModifier", e);
42000      }
42001      if (element.hasExcludeFoodModifier()) { 
42002        for (CodeableConcept e : element.getExcludeFoodModifier()) 
42003          composeCodeableConcept("excludeFoodModifier", e);
42004      }
42005      if (element.hasOralDiet()) {
42006        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
42007      }
42008      if (element.hasSupplement()) { 
42009        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
42010          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
42011      }
42012      if (element.hasEnteralFormula()) {
42013        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
42014      }
42015      if (element.hasNote()) { 
42016        for (Annotation e : element.getNote()) 
42017          composeAnnotation("note", e);
42018      }
42019  }
42020
42021  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
42022    if (element != null) {
42023      composeElementAttributes(element);
42024      xml.enter(FHIR_NS, name);
42025      composeNutritionOrderNutritionOrderOralDietComponentElements(element);
42026      composeElementClose(element);
42027      xml.exit(FHIR_NS, name);
42028    }
42029  }
42030
42031  protected void composeNutritionOrderNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
42032      composeBackboneElementElements(element);
42033      if (element.hasType()) { 
42034        for (CodeableConcept e : element.getType()) 
42035          composeCodeableConcept("type", e);
42036      }
42037      if (element.hasSchedule()) { 
42038        for (Timing e : element.getSchedule()) 
42039          composeTiming("schedule", e);
42040      }
42041      if (element.hasNutrient()) { 
42042        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
42043          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
42044      }
42045      if (element.hasTexture()) { 
42046        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
42047          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
42048      }
42049      if (element.hasFluidConsistencyType()) { 
42050        for (CodeableConcept e : element.getFluidConsistencyType()) 
42051          composeCodeableConcept("fluidConsistencyType", e);
42052      }
42053      if (element.hasInstructionElement()) {
42054        composeString("instruction", element.getInstructionElement());
42055      }
42056  }
42057
42058  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
42059    if (element != null) {
42060      composeElementAttributes(element);
42061      xml.enter(FHIR_NS, name);
42062      composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(element);
42063      composeElementClose(element);
42064      xml.exit(FHIR_NS, name);
42065    }
42066  }
42067
42068  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
42069      composeBackboneElementElements(element);
42070      if (element.hasModifier()) {
42071        composeCodeableConcept("modifier", element.getModifier());
42072      }
42073      if (element.hasAmount()) {
42074        composeQuantity("amount", element.getAmount());
42075      }
42076  }
42077
42078  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
42079    if (element != null) {
42080      composeElementAttributes(element);
42081      xml.enter(FHIR_NS, name);
42082      composeNutritionOrderNutritionOrderOralDietTextureComponentElements(element);
42083      composeElementClose(element);
42084      xml.exit(FHIR_NS, name);
42085    }
42086  }
42087
42088  protected void composeNutritionOrderNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
42089      composeBackboneElementElements(element);
42090      if (element.hasModifier()) {
42091        composeCodeableConcept("modifier", element.getModifier());
42092      }
42093      if (element.hasFoodType()) {
42094        composeCodeableConcept("foodType", element.getFoodType());
42095      }
42096  }
42097
42098  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
42099    if (element != null) {
42100      composeElementAttributes(element);
42101      xml.enter(FHIR_NS, name);
42102      composeNutritionOrderNutritionOrderSupplementComponentElements(element);
42103      composeElementClose(element);
42104      xml.exit(FHIR_NS, name);
42105    }
42106  }
42107
42108  protected void composeNutritionOrderNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
42109      composeBackboneElementElements(element);
42110      if (element.hasType()) {
42111        composeCodeableConcept("type", element.getType());
42112      }
42113      if (element.hasProductNameElement()) {
42114        composeString("productName", element.getProductNameElement());
42115      }
42116      if (element.hasSchedule()) { 
42117        for (Timing e : element.getSchedule()) 
42118          composeTiming("schedule", e);
42119      }
42120      if (element.hasQuantity()) {
42121        composeQuantity("quantity", element.getQuantity());
42122      }
42123      if (element.hasInstructionElement()) {
42124        composeString("instruction", element.getInstructionElement());
42125      }
42126  }
42127
42128  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
42129    if (element != null) {
42130      composeElementAttributes(element);
42131      xml.enter(FHIR_NS, name);
42132      composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(element);
42133      composeElementClose(element);
42134      xml.exit(FHIR_NS, name);
42135    }
42136  }
42137
42138  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
42139      composeBackboneElementElements(element);
42140      if (element.hasBaseFormulaType()) {
42141        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
42142      }
42143      if (element.hasBaseFormulaProductNameElement()) {
42144        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
42145      }
42146      if (element.hasAdditiveType()) {
42147        composeCodeableConcept("additiveType", element.getAdditiveType());
42148      }
42149      if (element.hasAdditiveProductNameElement()) {
42150        composeString("additiveProductName", element.getAdditiveProductNameElement());
42151      }
42152      if (element.hasCaloricDensity()) {
42153        composeQuantity("caloricDensity", element.getCaloricDensity());
42154      }
42155      if (element.hasRouteofAdministration()) {
42156        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
42157      }
42158      if (element.hasAdministration()) { 
42159        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
42160          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
42161      }
42162      if (element.hasMaxVolumeToDeliver()) {
42163        composeQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
42164      }
42165      if (element.hasAdministrationInstructionElement()) {
42166        composeString("administrationInstruction", element.getAdministrationInstructionElement());
42167      }
42168  }
42169
42170  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
42171    if (element != null) {
42172      composeElementAttributes(element);
42173      xml.enter(FHIR_NS, name);
42174      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(element);
42175      composeElementClose(element);
42176      xml.exit(FHIR_NS, name);
42177    }
42178  }
42179
42180  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
42181      composeBackboneElementElements(element);
42182      if (element.hasSchedule()) {
42183        composeTiming("schedule", element.getSchedule());
42184      }
42185      if (element.hasQuantity()) {
42186        composeQuantity("quantity", element.getQuantity());
42187      }
42188      if (element.hasRate()) {
42189        composeType("rate", element.getRate());
42190      }  }
42191
42192  protected void composeObservation(String name, Observation element) throws IOException {
42193    if (element != null) {
42194      composeDomainResourceAttributes(element);
42195      xml.enter(FHIR_NS, name);
42196      composeObservationElements(element);
42197      composeElementClose(element);
42198      xml.exit(FHIR_NS, name);
42199    }
42200  }
42201
42202  protected void composeObservationElements(Observation element) throws IOException {
42203      composeDomainResourceElements(element);
42204      if (element.hasIdentifier()) { 
42205        for (Identifier e : element.getIdentifier()) 
42206          composeIdentifier("identifier", e);
42207      }
42208      if (element.hasBasedOn()) { 
42209        for (Reference e : element.getBasedOn()) 
42210          composeReference("basedOn", e);
42211      }
42212      if (element.hasPartOf()) { 
42213        for (Reference e : element.getPartOf()) 
42214          composeReference("partOf", e);
42215      }
42216      if (element.hasStatusElement())
42217        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
42218      if (element.hasCategory()) { 
42219        for (CodeableConcept e : element.getCategory()) 
42220          composeCodeableConcept("category", e);
42221      }
42222      if (element.hasCode()) {
42223        composeCodeableConcept("code", element.getCode());
42224      }
42225      if (element.hasSubject()) {
42226        composeReference("subject", element.getSubject());
42227      }
42228      if (element.hasFocus()) { 
42229        for (Reference e : element.getFocus()) 
42230          composeReference("focus", e);
42231      }
42232      if (element.hasEncounter()) {
42233        composeReference("encounter", element.getEncounter());
42234      }
42235      if (element.hasEffective()) {
42236        composeType("effective", element.getEffective());
42237      }      if (element.hasIssuedElement()) {
42238        composeInstant("issued", element.getIssuedElement());
42239      }
42240      if (element.hasPerformer()) { 
42241        for (Reference e : element.getPerformer()) 
42242          composeReference("performer", e);
42243      }
42244      if (element.hasValue()) {
42245        composeType("value", element.getValue());
42246      }      if (element.hasDataAbsentReason()) {
42247        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
42248      }
42249      if (element.hasInterpretation()) { 
42250        for (CodeableConcept e : element.getInterpretation()) 
42251          composeCodeableConcept("interpretation", e);
42252      }
42253      if (element.hasNote()) { 
42254        for (Annotation e : element.getNote()) 
42255          composeAnnotation("note", e);
42256      }
42257      if (element.hasBodySite()) {
42258        composeCodeableConcept("bodySite", element.getBodySite());
42259      }
42260      if (element.hasMethod()) {
42261        composeCodeableConcept("method", element.getMethod());
42262      }
42263      if (element.hasSpecimen()) {
42264        composeReference("specimen", element.getSpecimen());
42265      }
42266      if (element.hasDevice()) {
42267        composeReference("device", element.getDevice());
42268      }
42269      if (element.hasReferenceRange()) { 
42270        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
42271          composeObservationObservationReferenceRangeComponent("referenceRange", e);
42272      }
42273      if (element.hasHasMember()) { 
42274        for (Reference e : element.getHasMember()) 
42275          composeReference("hasMember", e);
42276      }
42277      if (element.hasDerivedFrom()) { 
42278        for (Reference e : element.getDerivedFrom()) 
42279          composeReference("derivedFrom", e);
42280      }
42281      if (element.hasComponent()) { 
42282        for (Observation.ObservationComponentComponent e : element.getComponent()) 
42283          composeObservationObservationComponentComponent("component", e);
42284      }
42285  }
42286
42287  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
42288    if (element != null) {
42289      composeElementAttributes(element);
42290      xml.enter(FHIR_NS, name);
42291      composeObservationObservationReferenceRangeComponentElements(element);
42292      composeElementClose(element);
42293      xml.exit(FHIR_NS, name);
42294    }
42295  }
42296
42297  protected void composeObservationObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
42298      composeBackboneElementElements(element);
42299      if (element.hasLow()) {
42300        composeQuantity("low", element.getLow());
42301      }
42302      if (element.hasHigh()) {
42303        composeQuantity("high", element.getHigh());
42304      }
42305      if (element.hasType()) {
42306        composeCodeableConcept("type", element.getType());
42307      }
42308      if (element.hasAppliesTo()) { 
42309        for (CodeableConcept e : element.getAppliesTo()) 
42310          composeCodeableConcept("appliesTo", e);
42311      }
42312      if (element.hasAge()) {
42313        composeRange("age", element.getAge());
42314      }
42315      if (element.hasTextElement()) {
42316        composeString("text", element.getTextElement());
42317      }
42318  }
42319
42320  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
42321    if (element != null) {
42322      composeElementAttributes(element);
42323      xml.enter(FHIR_NS, name);
42324      composeObservationObservationComponentComponentElements(element);
42325      composeElementClose(element);
42326      xml.exit(FHIR_NS, name);
42327    }
42328  }
42329
42330  protected void composeObservationObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
42331      composeBackboneElementElements(element);
42332      if (element.hasCode()) {
42333        composeCodeableConcept("code", element.getCode());
42334      }
42335      if (element.hasValue()) {
42336        composeType("value", element.getValue());
42337      }      if (element.hasDataAbsentReason()) {
42338        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
42339      }
42340      if (element.hasInterpretation()) { 
42341        for (CodeableConcept e : element.getInterpretation()) 
42342          composeCodeableConcept("interpretation", e);
42343      }
42344      if (element.hasReferenceRange()) { 
42345        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
42346          composeObservationObservationReferenceRangeComponent("referenceRange", e);
42347      }
42348  }
42349
42350  protected void composeObservationDefinition(String name, ObservationDefinition element) throws IOException {
42351    if (element != null) {
42352      composeDomainResourceAttributes(element);
42353      xml.enter(FHIR_NS, name);
42354      composeObservationDefinitionElements(element);
42355      composeElementClose(element);
42356      xml.exit(FHIR_NS, name);
42357    }
42358  }
42359
42360  protected void composeObservationDefinitionElements(ObservationDefinition element) throws IOException {
42361      composeDomainResourceElements(element);
42362      if (element.hasCategory()) { 
42363        for (CodeableConcept e : element.getCategory()) 
42364          composeCodeableConcept("category", e);
42365      }
42366      if (element.hasCode()) {
42367        composeCodeableConcept("code", element.getCode());
42368      }
42369      if (element.hasIdentifier()) { 
42370        for (Identifier e : element.getIdentifier()) 
42371          composeIdentifier("identifier", e);
42372      }
42373        if (element.hasPermittedDataType()) 
42374          for (Enumeration<ObservationDefinition.ObservationDataType> e : element.getPermittedDataType()) 
42375            composeEnumeration("permittedDataType", e, new ObservationDefinition.ObservationDataTypeEnumFactory());
42376      if (element.hasMultipleResultsAllowedElement()) {
42377        composeBoolean("multipleResultsAllowed", element.getMultipleResultsAllowedElement());
42378      }
42379      if (element.hasMethod()) {
42380        composeCodeableConcept("method", element.getMethod());
42381      }
42382      if (element.hasPreferredReportNameElement()) {
42383        composeString("preferredReportName", element.getPreferredReportNameElement());
42384      }
42385      if (element.hasQuantitativeDetails()) {
42386        composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent("quantitativeDetails", element.getQuantitativeDetails());
42387      }
42388      if (element.hasQualifiedInterval()) { 
42389        for (ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent e : element.getQualifiedInterval()) 
42390          composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent("qualifiedInterval", e);
42391      }
42392      if (element.hasValidCodedValueSet()) {
42393        composeReference("validCodedValueSet", element.getValidCodedValueSet());
42394      }
42395      if (element.hasNormalCodedValueSet()) {
42396        composeReference("normalCodedValueSet", element.getNormalCodedValueSet());
42397      }
42398      if (element.hasAbnormalCodedValueSet()) {
42399        composeReference("abnormalCodedValueSet", element.getAbnormalCodedValueSet());
42400      }
42401      if (element.hasCriticalCodedValueSet()) {
42402        composeReference("criticalCodedValueSet", element.getCriticalCodedValueSet());
42403      }
42404  }
42405
42406  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
42407    if (element != null) {
42408      composeElementAttributes(element);
42409      xml.enter(FHIR_NS, name);
42410      composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(element);
42411      composeElementClose(element);
42412      xml.exit(FHIR_NS, name);
42413    }
42414  }
42415
42416  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
42417      composeBackboneElementElements(element);
42418      if (element.hasCustomaryUnit()) {
42419        composeCodeableConcept("customaryUnit", element.getCustomaryUnit());
42420      }
42421      if (element.hasUnit()) {
42422        composeCodeableConcept("unit", element.getUnit());
42423      }
42424      if (element.hasConversionFactorElement()) {
42425        composeDecimal("conversionFactor", element.getConversionFactorElement());
42426      }
42427      if (element.hasDecimalPrecisionElement()) {
42428        composeInteger("decimalPrecision", element.getDecimalPrecisionElement());
42429      }
42430  }
42431
42432  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
42433    if (element != null) {
42434      composeElementAttributes(element);
42435      xml.enter(FHIR_NS, name);
42436      composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(element);
42437      composeElementClose(element);
42438      xml.exit(FHIR_NS, name);
42439    }
42440  }
42441
42442  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
42443      composeBackboneElementElements(element);
42444      if (element.hasCategoryElement())
42445        composeEnumeration("category", element.getCategoryElement(), new ObservationDefinition.ObservationRangeCategoryEnumFactory());
42446      if (element.hasRange()) {
42447        composeRange("range", element.getRange());
42448      }
42449      if (element.hasContext()) {
42450        composeCodeableConcept("context", element.getContext());
42451      }
42452      if (element.hasAppliesTo()) { 
42453        for (CodeableConcept e : element.getAppliesTo()) 
42454          composeCodeableConcept("appliesTo", e);
42455      }
42456      if (element.hasGenderElement())
42457        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42458      if (element.hasAge()) {
42459        composeRange("age", element.getAge());
42460      }
42461      if (element.hasGestationalAge()) {
42462        composeRange("gestationalAge", element.getGestationalAge());
42463      }
42464      if (element.hasConditionElement()) {
42465        composeString("condition", element.getConditionElement());
42466      }
42467  }
42468
42469  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
42470    if (element != null) {
42471      composeDomainResourceAttributes(element);
42472      xml.enter(FHIR_NS, name);
42473      composeOperationDefinitionElements(element);
42474      composeElementClose(element);
42475      xml.exit(FHIR_NS, name);
42476    }
42477  }
42478
42479  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
42480      composeDomainResourceElements(element);
42481      if (element.hasUrlElement()) {
42482        composeUri("url", element.getUrlElement());
42483      }
42484      if (element.hasVersionElement()) {
42485        composeString("version", element.getVersionElement());
42486      }
42487      if (element.hasNameElement()) {
42488        composeString("name", element.getNameElement());
42489      }
42490      if (element.hasTitleElement()) {
42491        composeString("title", element.getTitleElement());
42492      }
42493      if (element.hasStatusElement())
42494        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
42495      if (element.hasKindElement())
42496        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
42497      if (element.hasExperimentalElement()) {
42498        composeBoolean("experimental", element.getExperimentalElement());
42499      }
42500      if (element.hasDateElement()) {
42501        composeDateTime("date", element.getDateElement());
42502      }
42503      if (element.hasPublisherElement()) {
42504        composeString("publisher", element.getPublisherElement());
42505      }
42506      if (element.hasContact()) { 
42507        for (ContactDetail e : element.getContact()) 
42508          composeContactDetail("contact", e);
42509      }
42510      if (element.hasDescriptionElement()) {
42511        composeMarkdown("description", element.getDescriptionElement());
42512      }
42513      if (element.hasUseContext()) { 
42514        for (UsageContext e : element.getUseContext()) 
42515          composeUsageContext("useContext", e);
42516      }
42517      if (element.hasJurisdiction()) { 
42518        for (CodeableConcept e : element.getJurisdiction()) 
42519          composeCodeableConcept("jurisdiction", e);
42520      }
42521      if (element.hasPurposeElement()) {
42522        composeMarkdown("purpose", element.getPurposeElement());
42523      }
42524      if (element.hasAffectsStateElement()) {
42525        composeBoolean("affectsState", element.getAffectsStateElement());
42526      }
42527      if (element.hasCodeElement()) {
42528        composeCode("code", element.getCodeElement());
42529      }
42530      if (element.hasCommentElement()) {
42531        composeMarkdown("comment", element.getCommentElement());
42532      }
42533      if (element.hasBaseElement()) {
42534        composeCanonical("base", element.getBaseElement());
42535      }
42536      if (element.hasResource()) { 
42537        for (CodeType e : element.getResource()) 
42538          composeCode("resource", e);
42539      }
42540      if (element.hasSystemElement()) {
42541        composeBoolean("system", element.getSystemElement());
42542      }
42543      if (element.hasTypeElement()) {
42544        composeBoolean("type", element.getTypeElement());
42545      }
42546      if (element.hasInstanceElement()) {
42547        composeBoolean("instance", element.getInstanceElement());
42548      }
42549      if (element.hasInputProfileElement()) {
42550        composeCanonical("inputProfile", element.getInputProfileElement());
42551      }
42552      if (element.hasOutputProfileElement()) {
42553        composeCanonical("outputProfile", element.getOutputProfileElement());
42554      }
42555      if (element.hasParameter()) { 
42556        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
42557          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
42558      }
42559      if (element.hasOverload()) { 
42560        for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
42561          composeOperationDefinitionOperationDefinitionOverloadComponent("overload", e);
42562      }
42563  }
42564
42565  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
42566    if (element != null) {
42567      composeElementAttributes(element);
42568      xml.enter(FHIR_NS, name);
42569      composeOperationDefinitionOperationDefinitionParameterComponentElements(element);
42570      composeElementClose(element);
42571      xml.exit(FHIR_NS, name);
42572    }
42573  }
42574
42575  protected void composeOperationDefinitionOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
42576      composeBackboneElementElements(element);
42577      if (element.hasNameElement()) {
42578        composeCode("name", element.getNameElement());
42579      }
42580      if (element.hasUseElement())
42581        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
42582      if (element.hasMinElement()) {
42583        composeInteger("min", element.getMinElement());
42584      }
42585      if (element.hasMaxElement()) {
42586        composeString("max", element.getMaxElement());
42587      }
42588      if (element.hasDocumentationElement()) {
42589        composeString("documentation", element.getDocumentationElement());
42590      }
42591      if (element.hasTypeElement()) {
42592        composeCode("type", element.getTypeElement());
42593      }
42594      if (element.hasTargetProfile()) { 
42595        for (CanonicalType e : element.getTargetProfile()) 
42596          composeCanonical("targetProfile", e);
42597      }
42598      if (element.hasSearchTypeElement())
42599        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
42600      if (element.hasBinding()) {
42601        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
42602      }
42603      if (element.hasReferencedFrom()) { 
42604        for (OperationDefinition.OperationDefinitionParameterReferencedFromComponent e : element.getReferencedFrom()) 
42605          composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent("referencedFrom", e);
42606      }
42607      if (element.hasPart()) { 
42608        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
42609          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
42610      }
42611  }
42612
42613  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
42614    if (element != null) {
42615      composeElementAttributes(element);
42616      xml.enter(FHIR_NS, name);
42617      composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(element);
42618      composeElementClose(element);
42619      xml.exit(FHIR_NS, name);
42620    }
42621  }
42622
42623  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
42624      composeBackboneElementElements(element);
42625      if (element.hasStrengthElement())
42626        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
42627      if (element.hasValueSetElement()) {
42628        composeCanonical("valueSet", element.getValueSetElement());
42629      }
42630  }
42631
42632  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent(String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
42633    if (element != null) {
42634      composeElementAttributes(element);
42635      xml.enter(FHIR_NS, name);
42636      composeOperationDefinitionOperationDefinitionParameterReferencedFromComponentElements(element);
42637      composeElementClose(element);
42638      xml.exit(FHIR_NS, name);
42639    }
42640  }
42641
42642  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponentElements(OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
42643      composeBackboneElementElements(element);
42644      if (element.hasSourceElement()) {
42645        composeString("source", element.getSourceElement());
42646      }
42647      if (element.hasSourceIdElement()) {
42648        composeString("sourceId", element.getSourceIdElement());
42649      }
42650  }
42651
42652  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
42653    if (element != null) {
42654      composeElementAttributes(element);
42655      xml.enter(FHIR_NS, name);
42656      composeOperationDefinitionOperationDefinitionOverloadComponentElements(element);
42657      composeElementClose(element);
42658      xml.exit(FHIR_NS, name);
42659    }
42660  }
42661
42662  protected void composeOperationDefinitionOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
42663      composeBackboneElementElements(element);
42664      if (element.hasParameterName()) { 
42665        for (StringType e : element.getParameterName()) 
42666          composeString("parameterName", e);
42667      }
42668      if (element.hasCommentElement()) {
42669        composeString("comment", element.getCommentElement());
42670      }
42671  }
42672
42673  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
42674    if (element != null) {
42675      composeDomainResourceAttributes(element);
42676      xml.enter(FHIR_NS, name);
42677      composeOperationOutcomeElements(element);
42678      composeElementClose(element);
42679      xml.exit(FHIR_NS, name);
42680    }
42681  }
42682
42683  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
42684      composeDomainResourceElements(element);
42685      if (element.hasIssue()) { 
42686        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
42687          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
42688      }
42689  }
42690
42691  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
42692    if (element != null) {
42693      composeElementAttributes(element);
42694      xml.enter(FHIR_NS, name);
42695      composeOperationOutcomeOperationOutcomeIssueComponentElements(element);
42696      composeElementClose(element);
42697      xml.exit(FHIR_NS, name);
42698    }
42699  }
42700
42701  protected void composeOperationOutcomeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
42702      composeBackboneElementElements(element);
42703      if (element.hasSeverityElement())
42704        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
42705      if (element.hasCodeElement())
42706        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
42707      if (element.hasDetails()) {
42708        composeCodeableConcept("details", element.getDetails());
42709      }
42710      if (element.hasDiagnosticsElement()) {
42711        composeString("diagnostics", element.getDiagnosticsElement());
42712      }
42713      if (element.hasLocation()) { 
42714        for (StringType e : element.getLocation()) 
42715          composeString("location", e);
42716      }
42717      if (element.hasExpression()) { 
42718        for (StringType e : element.getExpression()) 
42719          composeString("expression", e);
42720      }
42721  }
42722
42723  protected void composeOrganization(String name, Organization element) throws IOException {
42724    if (element != null) {
42725      composeDomainResourceAttributes(element);
42726      xml.enter(FHIR_NS, name);
42727      composeOrganizationElements(element);
42728      composeElementClose(element);
42729      xml.exit(FHIR_NS, name);
42730    }
42731  }
42732
42733  protected void composeOrganizationElements(Organization element) throws IOException {
42734      composeDomainResourceElements(element);
42735      if (element.hasIdentifier()) { 
42736        for (Identifier e : element.getIdentifier()) 
42737          composeIdentifier("identifier", e);
42738      }
42739      if (element.hasActiveElement()) {
42740        composeBoolean("active", element.getActiveElement());
42741      }
42742      if (element.hasType()) { 
42743        for (CodeableConcept e : element.getType()) 
42744          composeCodeableConcept("type", e);
42745      }
42746      if (element.hasNameElement()) {
42747        composeString("name", element.getNameElement());
42748      }
42749      if (element.hasAlias()) { 
42750        for (StringType e : element.getAlias()) 
42751          composeString("alias", e);
42752      }
42753      if (element.hasTelecom()) { 
42754        for (ContactPoint e : element.getTelecom()) 
42755          composeContactPoint("telecom", e);
42756      }
42757      if (element.hasAddress()) { 
42758        for (Address e : element.getAddress()) 
42759          composeAddress("address", e);
42760      }
42761      if (element.hasPartOf()) {
42762        composeReference("partOf", element.getPartOf());
42763      }
42764      if (element.hasContact()) { 
42765        for (Organization.OrganizationContactComponent e : element.getContact()) 
42766          composeOrganizationOrganizationContactComponent("contact", e);
42767      }
42768      if (element.hasEndpoint()) { 
42769        for (Reference e : element.getEndpoint()) 
42770          composeReference("endpoint", e);
42771      }
42772  }
42773
42774  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
42775    if (element != null) {
42776      composeElementAttributes(element);
42777      xml.enter(FHIR_NS, name);
42778      composeOrganizationOrganizationContactComponentElements(element);
42779      composeElementClose(element);
42780      xml.exit(FHIR_NS, name);
42781    }
42782  }
42783
42784  protected void composeOrganizationOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
42785      composeBackboneElementElements(element);
42786      if (element.hasPurpose()) {
42787        composeCodeableConcept("purpose", element.getPurpose());
42788      }
42789      if (element.hasName()) {
42790        composeHumanName("name", element.getName());
42791      }
42792      if (element.hasTelecom()) { 
42793        for (ContactPoint e : element.getTelecom()) 
42794          composeContactPoint("telecom", e);
42795      }
42796      if (element.hasAddress()) {
42797        composeAddress("address", element.getAddress());
42798      }
42799  }
42800
42801  protected void composeOrganizationAffiliation(String name, OrganizationAffiliation element) throws IOException {
42802    if (element != null) {
42803      composeDomainResourceAttributes(element);
42804      xml.enter(FHIR_NS, name);
42805      composeOrganizationAffiliationElements(element);
42806      composeElementClose(element);
42807      xml.exit(FHIR_NS, name);
42808    }
42809  }
42810
42811  protected void composeOrganizationAffiliationElements(OrganizationAffiliation element) throws IOException {
42812      composeDomainResourceElements(element);
42813      if (element.hasIdentifier()) { 
42814        for (Identifier e : element.getIdentifier()) 
42815          composeIdentifier("identifier", e);
42816      }
42817      if (element.hasActiveElement()) {
42818        composeBoolean("active", element.getActiveElement());
42819      }
42820      if (element.hasPeriod()) {
42821        composePeriod("period", element.getPeriod());
42822      }
42823      if (element.hasOrganization()) {
42824        composeReference("organization", element.getOrganization());
42825      }
42826      if (element.hasParticipatingOrganization()) {
42827        composeReference("participatingOrganization", element.getParticipatingOrganization());
42828      }
42829      if (element.hasNetwork()) { 
42830        for (Reference e : element.getNetwork()) 
42831          composeReference("network", e);
42832      }
42833      if (element.hasCode()) { 
42834        for (CodeableConcept e : element.getCode()) 
42835          composeCodeableConcept("code", e);
42836      }
42837      if (element.hasSpecialty()) { 
42838        for (CodeableConcept e : element.getSpecialty()) 
42839          composeCodeableConcept("specialty", e);
42840      }
42841      if (element.hasLocation()) { 
42842        for (Reference e : element.getLocation()) 
42843          composeReference("location", e);
42844      }
42845      if (element.hasHealthcareService()) { 
42846        for (Reference e : element.getHealthcareService()) 
42847          composeReference("healthcareService", e);
42848      }
42849      if (element.hasTelecom()) { 
42850        for (ContactPoint e : element.getTelecom()) 
42851          composeContactPoint("telecom", e);
42852      }
42853      if (element.hasEndpoint()) { 
42854        for (Reference e : element.getEndpoint()) 
42855          composeReference("endpoint", e);
42856      }
42857  }
42858
42859  protected void composePatient(String name, Patient element) throws IOException {
42860    if (element != null) {
42861      composeDomainResourceAttributes(element);
42862      xml.enter(FHIR_NS, name);
42863      composePatientElements(element);
42864      composeElementClose(element);
42865      xml.exit(FHIR_NS, name);
42866    }
42867  }
42868
42869  protected void composePatientElements(Patient element) throws IOException {
42870      composeDomainResourceElements(element);
42871      if (element.hasIdentifier()) { 
42872        for (Identifier e : element.getIdentifier()) 
42873          composeIdentifier("identifier", e);
42874      }
42875      if (element.hasActiveElement()) {
42876        composeBoolean("active", element.getActiveElement());
42877      }
42878      if (element.hasName()) { 
42879        for (HumanName e : element.getName()) 
42880          composeHumanName("name", e);
42881      }
42882      if (element.hasTelecom()) { 
42883        for (ContactPoint e : element.getTelecom()) 
42884          composeContactPoint("telecom", e);
42885      }
42886      if (element.hasGenderElement())
42887        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42888      if (element.hasBirthDateElement()) {
42889        composeDate("birthDate", element.getBirthDateElement());
42890      }
42891      if (element.hasDeceased()) {
42892        composeType("deceased", element.getDeceased());
42893      }      if (element.hasAddress()) { 
42894        for (Address e : element.getAddress()) 
42895          composeAddress("address", e);
42896      }
42897      if (element.hasMaritalStatus()) {
42898        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
42899      }
42900      if (element.hasMultipleBirth()) {
42901        composeType("multipleBirth", element.getMultipleBirth());
42902      }      if (element.hasPhoto()) { 
42903        for (Attachment e : element.getPhoto()) 
42904          composeAttachment("photo", e);
42905      }
42906      if (element.hasContact()) { 
42907        for (Patient.ContactComponent e : element.getContact()) 
42908          composePatientContactComponent("contact", e);
42909      }
42910      if (element.hasCommunication()) { 
42911        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
42912          composePatientPatientCommunicationComponent("communication", e);
42913      }
42914      if (element.hasGeneralPractitioner()) { 
42915        for (Reference e : element.getGeneralPractitioner()) 
42916          composeReference("generalPractitioner", e);
42917      }
42918      if (element.hasManagingOrganization()) {
42919        composeReference("managingOrganization", element.getManagingOrganization());
42920      }
42921      if (element.hasLink()) { 
42922        for (Patient.PatientLinkComponent e : element.getLink()) 
42923          composePatientPatientLinkComponent("link", e);
42924      }
42925  }
42926
42927  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
42928    if (element != null) {
42929      composeElementAttributes(element);
42930      xml.enter(FHIR_NS, name);
42931      composePatientContactComponentElements(element);
42932      composeElementClose(element);
42933      xml.exit(FHIR_NS, name);
42934    }
42935  }
42936
42937  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
42938      composeBackboneElementElements(element);
42939      if (element.hasRelationship()) { 
42940        for (CodeableConcept e : element.getRelationship()) 
42941          composeCodeableConcept("relationship", e);
42942      }
42943      if (element.hasName()) {
42944        composeHumanName("name", element.getName());
42945      }
42946      if (element.hasTelecom()) { 
42947        for (ContactPoint e : element.getTelecom()) 
42948          composeContactPoint("telecom", e);
42949      }
42950      if (element.hasAddress()) {
42951        composeAddress("address", element.getAddress());
42952      }
42953      if (element.hasGenderElement())
42954        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42955      if (element.hasOrganization()) {
42956        composeReference("organization", element.getOrganization());
42957      }
42958      if (element.hasPeriod()) {
42959        composePeriod("period", element.getPeriod());
42960      }
42961  }
42962
42963  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
42964    if (element != null) {
42965      composeElementAttributes(element);
42966      xml.enter(FHIR_NS, name);
42967      composePatientPatientCommunicationComponentElements(element);
42968      composeElementClose(element);
42969      xml.exit(FHIR_NS, name);
42970    }
42971  }
42972
42973  protected void composePatientPatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
42974      composeBackboneElementElements(element);
42975      if (element.hasLanguage()) {
42976        composeCodeableConcept("language", element.getLanguage());
42977      }
42978      if (element.hasPreferredElement()) {
42979        composeBoolean("preferred", element.getPreferredElement());
42980      }
42981  }
42982
42983  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
42984    if (element != null) {
42985      composeElementAttributes(element);
42986      xml.enter(FHIR_NS, name);
42987      composePatientPatientLinkComponentElements(element);
42988      composeElementClose(element);
42989      xml.exit(FHIR_NS, name);
42990    }
42991  }
42992
42993  protected void composePatientPatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
42994      composeBackboneElementElements(element);
42995      if (element.hasOther()) {
42996        composeReference("other", element.getOther());
42997      }
42998      if (element.hasTypeElement())
42999        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
43000  }
43001
43002  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
43003    if (element != null) {
43004      composeDomainResourceAttributes(element);
43005      xml.enter(FHIR_NS, name);
43006      composePaymentNoticeElements(element);
43007      composeElementClose(element);
43008      xml.exit(FHIR_NS, name);
43009    }
43010  }
43011
43012  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
43013      composeDomainResourceElements(element);
43014      if (element.hasIdentifier()) { 
43015        for (Identifier e : element.getIdentifier()) 
43016          composeIdentifier("identifier", e);
43017      }
43018      if (element.hasStatusElement())
43019        composeEnumeration("status", element.getStatusElement(), new PaymentNotice.PaymentNoticeStatusEnumFactory());
43020      if (element.hasRequest()) {
43021        composeReference("request", element.getRequest());
43022      }
43023      if (element.hasResponse()) {
43024        composeReference("response", element.getResponse());
43025      }
43026      if (element.hasCreatedElement()) {
43027        composeDateTime("created", element.getCreatedElement());
43028      }
43029      if (element.hasProvider()) {
43030        composeReference("provider", element.getProvider());
43031      }
43032      if (element.hasPayment()) {
43033        composeReference("payment", element.getPayment());
43034      }
43035      if (element.hasPaymentDateElement()) {
43036        composeDate("paymentDate", element.getPaymentDateElement());
43037      }
43038      if (element.hasPayee()) {
43039        composeReference("payee", element.getPayee());
43040      }
43041      if (element.hasRecipient()) {
43042        composeReference("recipient", element.getRecipient());
43043      }
43044      if (element.hasAmount()) {
43045        composeMoney("amount", element.getAmount());
43046      }
43047      if (element.hasPaymentStatus()) {
43048        composeCodeableConcept("paymentStatus", element.getPaymentStatus());
43049      }
43050  }
43051
43052  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
43053    if (element != null) {
43054      composeDomainResourceAttributes(element);
43055      xml.enter(FHIR_NS, name);
43056      composePaymentReconciliationElements(element);
43057      composeElementClose(element);
43058      xml.exit(FHIR_NS, name);
43059    }
43060  }
43061
43062  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
43063      composeDomainResourceElements(element);
43064      if (element.hasIdentifier()) { 
43065        for (Identifier e : element.getIdentifier()) 
43066          composeIdentifier("identifier", e);
43067      }
43068      if (element.hasStatusElement())
43069        composeEnumeration("status", element.getStatusElement(), new PaymentReconciliation.PaymentReconciliationStatusEnumFactory());
43070      if (element.hasPeriod()) {
43071        composePeriod("period", element.getPeriod());
43072      }
43073      if (element.hasCreatedElement()) {
43074        composeDateTime("created", element.getCreatedElement());
43075      }
43076      if (element.hasPaymentIssuer()) {
43077        composeReference("paymentIssuer", element.getPaymentIssuer());
43078      }
43079      if (element.hasRequest()) {
43080        composeReference("request", element.getRequest());
43081      }
43082      if (element.hasRequestor()) {
43083        composeReference("requestor", element.getRequestor());
43084      }
43085      if (element.hasOutcomeElement())
43086        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
43087      if (element.hasDispositionElement()) {
43088        composeString("disposition", element.getDispositionElement());
43089      }
43090      if (element.hasPaymentDateElement()) {
43091        composeDate("paymentDate", element.getPaymentDateElement());
43092      }
43093      if (element.hasPaymentAmount()) {
43094        composeMoney("paymentAmount", element.getPaymentAmount());
43095      }
43096      if (element.hasPaymentIdentifier()) {
43097        composeIdentifier("paymentIdentifier", element.getPaymentIdentifier());
43098      }
43099      if (element.hasDetail()) { 
43100        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
43101          composePaymentReconciliationDetailsComponent("detail", e);
43102      }
43103      if (element.hasFormCode()) {
43104        composeCodeableConcept("formCode", element.getFormCode());
43105      }
43106      if (element.hasProcessNote()) { 
43107        for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
43108          composePaymentReconciliationNotesComponent("processNote", e);
43109      }
43110  }
43111
43112  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
43113    if (element != null) {
43114      composeElementAttributes(element);
43115      xml.enter(FHIR_NS, name);
43116      composePaymentReconciliationDetailsComponentElements(element);
43117      composeElementClose(element);
43118      xml.exit(FHIR_NS, name);
43119    }
43120  }
43121
43122  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
43123      composeBackboneElementElements(element);
43124      if (element.hasIdentifier()) {
43125        composeIdentifier("identifier", element.getIdentifier());
43126      }
43127      if (element.hasPredecessor()) {
43128        composeIdentifier("predecessor", element.getPredecessor());
43129      }
43130      if (element.hasType()) {
43131        composeCodeableConcept("type", element.getType());
43132      }
43133      if (element.hasRequest()) {
43134        composeReference("request", element.getRequest());
43135      }
43136      if (element.hasSubmitter()) {
43137        composeReference("submitter", element.getSubmitter());
43138      }
43139      if (element.hasResponse()) {
43140        composeReference("response", element.getResponse());
43141      }
43142      if (element.hasDateElement()) {
43143        composeDate("date", element.getDateElement());
43144      }
43145      if (element.hasResponsible()) {
43146        composeReference("responsible", element.getResponsible());
43147      }
43148      if (element.hasPayee()) {
43149        composeReference("payee", element.getPayee());
43150      }
43151      if (element.hasAmount()) {
43152        composeMoney("amount", element.getAmount());
43153      }
43154  }
43155
43156  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
43157    if (element != null) {
43158      composeElementAttributes(element);
43159      xml.enter(FHIR_NS, name);
43160      composePaymentReconciliationNotesComponentElements(element);
43161      composeElementClose(element);
43162      xml.exit(FHIR_NS, name);
43163    }
43164  }
43165
43166  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
43167      composeBackboneElementElements(element);
43168      if (element.hasTypeElement())
43169        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
43170      if (element.hasTextElement()) {
43171        composeString("text", element.getTextElement());
43172      }
43173  }
43174
43175  protected void composePerson(String name, Person element) throws IOException {
43176    if (element != null) {
43177      composeDomainResourceAttributes(element);
43178      xml.enter(FHIR_NS, name);
43179      composePersonElements(element);
43180      composeElementClose(element);
43181      xml.exit(FHIR_NS, name);
43182    }
43183  }
43184
43185  protected void composePersonElements(Person element) throws IOException {
43186      composeDomainResourceElements(element);
43187      if (element.hasIdentifier()) { 
43188        for (Identifier e : element.getIdentifier()) 
43189          composeIdentifier("identifier", e);
43190      }
43191      if (element.hasName()) { 
43192        for (HumanName e : element.getName()) 
43193          composeHumanName("name", e);
43194      }
43195      if (element.hasTelecom()) { 
43196        for (ContactPoint e : element.getTelecom()) 
43197          composeContactPoint("telecom", e);
43198      }
43199      if (element.hasGenderElement())
43200        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
43201      if (element.hasBirthDateElement()) {
43202        composeDate("birthDate", element.getBirthDateElement());
43203      }
43204      if (element.hasAddress()) { 
43205        for (Address e : element.getAddress()) 
43206          composeAddress("address", e);
43207      }
43208      if (element.hasPhoto()) {
43209        composeAttachment("photo", element.getPhoto());
43210      }
43211      if (element.hasManagingOrganization()) {
43212        composeReference("managingOrganization", element.getManagingOrganization());
43213      }
43214      if (element.hasActiveElement()) {
43215        composeBoolean("active", element.getActiveElement());
43216      }
43217      if (element.hasLink()) { 
43218        for (Person.PersonLinkComponent e : element.getLink()) 
43219          composePersonPersonLinkComponent("link", e);
43220      }
43221  }
43222
43223  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
43224    if (element != null) {
43225      composeElementAttributes(element);
43226      xml.enter(FHIR_NS, name);
43227      composePersonPersonLinkComponentElements(element);
43228      composeElementClose(element);
43229      xml.exit(FHIR_NS, name);
43230    }
43231  }
43232
43233  protected void composePersonPersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
43234      composeBackboneElementElements(element);
43235      if (element.hasTarget()) {
43236        composeReference("target", element.getTarget());
43237      }
43238      if (element.hasAssuranceElement())
43239        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
43240  }
43241
43242  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
43243    if (element != null) {
43244      composeDomainResourceAttributes(element);
43245      xml.enter(FHIR_NS, name);
43246      composePlanDefinitionElements(element);
43247      composeElementClose(element);
43248      xml.exit(FHIR_NS, name);
43249    }
43250  }
43251
43252  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
43253      composeDomainResourceElements(element);
43254      if (element.hasUrlElement()) {
43255        composeUri("url", element.getUrlElement());
43256      }
43257      if (element.hasIdentifier()) { 
43258        for (Identifier e : element.getIdentifier()) 
43259          composeIdentifier("identifier", e);
43260      }
43261      if (element.hasVersionElement()) {
43262        composeString("version", element.getVersionElement());
43263      }
43264      if (element.hasNameElement()) {
43265        composeString("name", element.getNameElement());
43266      }
43267      if (element.hasTitleElement()) {
43268        composeString("title", element.getTitleElement());
43269      }
43270      if (element.hasSubtitleElement()) {
43271        composeString("subtitle", element.getSubtitleElement());
43272      }
43273      if (element.hasType()) {
43274        composeCodeableConcept("type", element.getType());
43275      }
43276      if (element.hasStatusElement())
43277        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
43278      if (element.hasExperimentalElement()) {
43279        composeBoolean("experimental", element.getExperimentalElement());
43280      }
43281      if (element.hasSubject()) {
43282        composeType("subject", element.getSubject());
43283      }      if (element.hasDateElement()) {
43284        composeDateTime("date", element.getDateElement());
43285      }
43286      if (element.hasPublisherElement()) {
43287        composeString("publisher", element.getPublisherElement());
43288      }
43289      if (element.hasContact()) { 
43290        for (ContactDetail e : element.getContact()) 
43291          composeContactDetail("contact", e);
43292      }
43293      if (element.hasDescriptionElement()) {
43294        composeMarkdown("description", element.getDescriptionElement());
43295      }
43296      if (element.hasUseContext()) { 
43297        for (UsageContext e : element.getUseContext()) 
43298          composeUsageContext("useContext", e);
43299      }
43300      if (element.hasJurisdiction()) { 
43301        for (CodeableConcept e : element.getJurisdiction()) 
43302          composeCodeableConcept("jurisdiction", e);
43303      }
43304      if (element.hasPurposeElement()) {
43305        composeMarkdown("purpose", element.getPurposeElement());
43306      }
43307      if (element.hasUsageElement()) {
43308        composeString("usage", element.getUsageElement());
43309      }
43310      if (element.hasCopyrightElement()) {
43311        composeMarkdown("copyright", element.getCopyrightElement());
43312      }
43313      if (element.hasApprovalDateElement()) {
43314        composeDate("approvalDate", element.getApprovalDateElement());
43315      }
43316      if (element.hasLastReviewDateElement()) {
43317        composeDate("lastReviewDate", element.getLastReviewDateElement());
43318      }
43319      if (element.hasEffectivePeriod()) {
43320        composePeriod("effectivePeriod", element.getEffectivePeriod());
43321      }
43322      if (element.hasTopic()) { 
43323        for (CodeableConcept e : element.getTopic()) 
43324          composeCodeableConcept("topic", e);
43325      }
43326      if (element.hasAuthor()) { 
43327        for (ContactDetail e : element.getAuthor()) 
43328          composeContactDetail("author", e);
43329      }
43330      if (element.hasEditor()) { 
43331        for (ContactDetail e : element.getEditor()) 
43332          composeContactDetail("editor", e);
43333      }
43334      if (element.hasReviewer()) { 
43335        for (ContactDetail e : element.getReviewer()) 
43336          composeContactDetail("reviewer", e);
43337      }
43338      if (element.hasEndorser()) { 
43339        for (ContactDetail e : element.getEndorser()) 
43340          composeContactDetail("endorser", e);
43341      }
43342      if (element.hasRelatedArtifact()) { 
43343        for (RelatedArtifact e : element.getRelatedArtifact()) 
43344          composeRelatedArtifact("relatedArtifact", e);
43345      }
43346      if (element.hasLibrary()) { 
43347        for (CanonicalType e : element.getLibrary()) 
43348          composeCanonical("library", e);
43349      }
43350      if (element.hasGoal()) { 
43351        for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
43352          composePlanDefinitionPlanDefinitionGoalComponent("goal", e);
43353      }
43354      if (element.hasAction()) { 
43355        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
43356          composePlanDefinitionPlanDefinitionActionComponent("action", e);
43357      }
43358  }
43359
43360  protected void composePlanDefinitionPlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
43361    if (element != null) {
43362      composeElementAttributes(element);
43363      xml.enter(FHIR_NS, name);
43364      composePlanDefinitionPlanDefinitionGoalComponentElements(element);
43365      composeElementClose(element);
43366      xml.exit(FHIR_NS, name);
43367    }
43368  }
43369
43370  protected void composePlanDefinitionPlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
43371      composeBackboneElementElements(element);
43372      if (element.hasCategory()) {
43373        composeCodeableConcept("category", element.getCategory());
43374      }
43375      if (element.hasDescription()) {
43376        composeCodeableConcept("description", element.getDescription());
43377      }
43378      if (element.hasPriority()) {
43379        composeCodeableConcept("priority", element.getPriority());
43380      }
43381      if (element.hasStart()) {
43382        composeCodeableConcept("start", element.getStart());
43383      }
43384      if (element.hasAddresses()) { 
43385        for (CodeableConcept e : element.getAddresses()) 
43386          composeCodeableConcept("addresses", e);
43387      }
43388      if (element.hasDocumentation()) { 
43389        for (RelatedArtifact e : element.getDocumentation()) 
43390          composeRelatedArtifact("documentation", e);
43391      }
43392      if (element.hasTarget()) { 
43393        for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
43394          composePlanDefinitionPlanDefinitionGoalTargetComponent("target", e);
43395      }
43396  }
43397
43398  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
43399    if (element != null) {
43400      composeElementAttributes(element);
43401      xml.enter(FHIR_NS, name);
43402      composePlanDefinitionPlanDefinitionGoalTargetComponentElements(element);
43403      composeElementClose(element);
43404      xml.exit(FHIR_NS, name);
43405    }
43406  }
43407
43408  protected void composePlanDefinitionPlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
43409      composeBackboneElementElements(element);
43410      if (element.hasMeasure()) {
43411        composeCodeableConcept("measure", element.getMeasure());
43412      }
43413      if (element.hasDetail()) {
43414        composeType("detail", element.getDetail());
43415      }      if (element.hasDue()) {
43416        composeDuration("due", element.getDue());
43417      }
43418  }
43419
43420  protected void composePlanDefinitionPlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
43421    if (element != null) {
43422      composeElementAttributes(element);
43423      xml.enter(FHIR_NS, name);
43424      composePlanDefinitionPlanDefinitionActionComponentElements(element);
43425      composeElementClose(element);
43426      xml.exit(FHIR_NS, name);
43427    }
43428  }
43429
43430  protected void composePlanDefinitionPlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
43431      composeBackboneElementElements(element);
43432      if (element.hasPrefixElement()) {
43433        composeString("prefix", element.getPrefixElement());
43434      }
43435      if (element.hasTitleElement()) {
43436        composeString("title", element.getTitleElement());
43437      }
43438      if (element.hasDescriptionElement()) {
43439        composeString("description", element.getDescriptionElement());
43440      }
43441      if (element.hasTextEquivalentElement()) {
43442        composeString("textEquivalent", element.getTextEquivalentElement());
43443      }
43444      if (element.hasPriorityElement())
43445        composeEnumeration("priority", element.getPriorityElement(), new PlanDefinition.RequestPriorityEnumFactory());
43446      if (element.hasCode()) { 
43447        for (CodeableConcept e : element.getCode()) 
43448          composeCodeableConcept("code", e);
43449      }
43450      if (element.hasReason()) { 
43451        for (CodeableConcept e : element.getReason()) 
43452          composeCodeableConcept("reason", e);
43453      }
43454      if (element.hasDocumentation()) { 
43455        for (RelatedArtifact e : element.getDocumentation()) 
43456          composeRelatedArtifact("documentation", e);
43457      }
43458      if (element.hasGoalId()) { 
43459        for (IdType e : element.getGoalId()) 
43460          composeId("goalId", e);
43461      }
43462      if (element.hasSubject()) {
43463        composeType("subject", element.getSubject());
43464      }      if (element.hasTrigger()) { 
43465        for (TriggerDefinition e : element.getTrigger()) 
43466          composeTriggerDefinition("trigger", e);
43467      }
43468      if (element.hasCondition()) { 
43469        for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
43470          composePlanDefinitionPlanDefinitionActionConditionComponent("condition", e);
43471      }
43472      if (element.hasInput()) { 
43473        for (DataRequirement e : element.getInput()) 
43474          composeDataRequirement("input", e);
43475      }
43476      if (element.hasOutput()) { 
43477        for (DataRequirement e : element.getOutput()) 
43478          composeDataRequirement("output", e);
43479      }
43480      if (element.hasRelatedAction()) { 
43481        for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
43482          composePlanDefinitionPlanDefinitionActionRelatedActionComponent("relatedAction", e);
43483      }
43484      if (element.hasTiming()) {
43485        composeType("timing", element.getTiming());
43486      }      if (element.hasParticipant()) { 
43487        for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
43488          composePlanDefinitionPlanDefinitionActionParticipantComponent("participant", e);
43489      }
43490      if (element.hasType()) {
43491        composeCodeableConcept("type", element.getType());
43492      }
43493      if (element.hasGroupingBehaviorElement())
43494        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new PlanDefinition.ActionGroupingBehaviorEnumFactory());
43495      if (element.hasSelectionBehaviorElement())
43496        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new PlanDefinition.ActionSelectionBehaviorEnumFactory());
43497      if (element.hasRequiredBehaviorElement())
43498        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new PlanDefinition.ActionRequiredBehaviorEnumFactory());
43499      if (element.hasPrecheckBehaviorElement())
43500        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new PlanDefinition.ActionPrecheckBehaviorEnumFactory());
43501      if (element.hasCardinalityBehaviorElement())
43502        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new PlanDefinition.ActionCardinalityBehaviorEnumFactory());
43503      if (element.hasDefinition()) {
43504        composeType("definition", element.getDefinition());
43505      }      if (element.hasTransformElement()) {
43506        composeCanonical("transform", element.getTransformElement());
43507      }
43508      if (element.hasDynamicValue()) { 
43509        for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
43510          composePlanDefinitionPlanDefinitionActionDynamicValueComponent("dynamicValue", e);
43511      }
43512      if (element.hasAction()) { 
43513        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
43514          composePlanDefinitionPlanDefinitionActionComponent("action", e);
43515      }
43516  }
43517
43518  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
43519    if (element != null) {
43520      composeElementAttributes(element);
43521      xml.enter(FHIR_NS, name);
43522      composePlanDefinitionPlanDefinitionActionConditionComponentElements(element);
43523      composeElementClose(element);
43524      xml.exit(FHIR_NS, name);
43525    }
43526  }
43527
43528  protected void composePlanDefinitionPlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
43529      composeBackboneElementElements(element);
43530      if (element.hasKindElement())
43531        composeEnumeration("kind", element.getKindElement(), new PlanDefinition.ActionConditionKindEnumFactory());
43532      if (element.hasExpression()) {
43533        composeExpression("expression", element.getExpression());
43534      }
43535  }
43536
43537  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
43538    if (element != null) {
43539      composeElementAttributes(element);
43540      xml.enter(FHIR_NS, name);
43541      composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(element);
43542      composeElementClose(element);
43543      xml.exit(FHIR_NS, name);
43544    }
43545  }
43546
43547  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
43548      composeBackboneElementElements(element);
43549      if (element.hasActionIdElement()) {
43550        composeId("actionId", element.getActionIdElement());
43551      }
43552      if (element.hasRelationshipElement())
43553        composeEnumeration("relationship", element.getRelationshipElement(), new PlanDefinition.ActionRelationshipTypeEnumFactory());
43554      if (element.hasOffset()) {
43555        composeType("offset", element.getOffset());
43556      }  }
43557
43558  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
43559    if (element != null) {
43560      composeElementAttributes(element);
43561      xml.enter(FHIR_NS, name);
43562      composePlanDefinitionPlanDefinitionActionParticipantComponentElements(element);
43563      composeElementClose(element);
43564      xml.exit(FHIR_NS, name);
43565    }
43566  }
43567
43568  protected void composePlanDefinitionPlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
43569      composeBackboneElementElements(element);
43570      if (element.hasTypeElement())
43571        composeEnumeration("type", element.getTypeElement(), new PlanDefinition.ActionParticipantTypeEnumFactory());
43572      if (element.hasRole()) {
43573        composeCodeableConcept("role", element.getRole());
43574      }
43575  }
43576
43577  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
43578    if (element != null) {
43579      composeElementAttributes(element);
43580      xml.enter(FHIR_NS, name);
43581      composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(element);
43582      composeElementClose(element);
43583      xml.exit(FHIR_NS, name);
43584    }
43585  }
43586
43587  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
43588      composeBackboneElementElements(element);
43589      if (element.hasPathElement()) {
43590        composeString("path", element.getPathElement());
43591      }
43592      if (element.hasExpression()) {
43593        composeExpression("expression", element.getExpression());
43594      }
43595  }
43596
43597  protected void composePractitioner(String name, Practitioner element) throws IOException {
43598    if (element != null) {
43599      composeDomainResourceAttributes(element);
43600      xml.enter(FHIR_NS, name);
43601      composePractitionerElements(element);
43602      composeElementClose(element);
43603      xml.exit(FHIR_NS, name);
43604    }
43605  }
43606
43607  protected void composePractitionerElements(Practitioner element) throws IOException {
43608      composeDomainResourceElements(element);
43609      if (element.hasIdentifier()) { 
43610        for (Identifier e : element.getIdentifier()) 
43611          composeIdentifier("identifier", e);
43612      }
43613      if (element.hasActiveElement()) {
43614        composeBoolean("active", element.getActiveElement());
43615      }
43616      if (element.hasName()) { 
43617        for (HumanName e : element.getName()) 
43618          composeHumanName("name", e);
43619      }
43620      if (element.hasTelecom()) { 
43621        for (ContactPoint e : element.getTelecom()) 
43622          composeContactPoint("telecom", e);
43623      }
43624      if (element.hasAddress()) { 
43625        for (Address e : element.getAddress()) 
43626          composeAddress("address", e);
43627      }
43628      if (element.hasGenderElement())
43629        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
43630      if (element.hasBirthDateElement()) {
43631        composeDate("birthDate", element.getBirthDateElement());
43632      }
43633      if (element.hasPhoto()) { 
43634        for (Attachment e : element.getPhoto()) 
43635          composeAttachment("photo", e);
43636      }
43637      if (element.hasQualification()) { 
43638        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
43639          composePractitionerPractitionerQualificationComponent("qualification", e);
43640      }
43641      if (element.hasCommunication()) { 
43642        for (CodeableConcept e : element.getCommunication()) 
43643          composeCodeableConcept("communication", e);
43644      }
43645  }
43646
43647  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
43648    if (element != null) {
43649      composeElementAttributes(element);
43650      xml.enter(FHIR_NS, name);
43651      composePractitionerPractitionerQualificationComponentElements(element);
43652      composeElementClose(element);
43653      xml.exit(FHIR_NS, name);
43654    }
43655  }
43656
43657  protected void composePractitionerPractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
43658      composeBackboneElementElements(element);
43659      if (element.hasIdentifier()) { 
43660        for (Identifier e : element.getIdentifier()) 
43661          composeIdentifier("identifier", e);
43662      }
43663      if (element.hasCode()) {
43664        composeCodeableConcept("code", element.getCode());
43665      }
43666      if (element.hasPeriod()) {
43667        composePeriod("period", element.getPeriod());
43668      }
43669      if (element.hasIssuer()) {
43670        composeReference("issuer", element.getIssuer());
43671      }
43672  }
43673
43674  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
43675    if (element != null) {
43676      composeDomainResourceAttributes(element);
43677      xml.enter(FHIR_NS, name);
43678      composePractitionerRoleElements(element);
43679      composeElementClose(element);
43680      xml.exit(FHIR_NS, name);
43681    }
43682  }
43683
43684  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
43685      composeDomainResourceElements(element);
43686      if (element.hasIdentifier()) { 
43687        for (Identifier e : element.getIdentifier()) 
43688          composeIdentifier("identifier", e);
43689      }
43690      if (element.hasActiveElement()) {
43691        composeBoolean("active", element.getActiveElement());
43692      }
43693      if (element.hasPeriod()) {
43694        composePeriod("period", element.getPeriod());
43695      }
43696      if (element.hasPractitioner()) {
43697        composeReference("practitioner", element.getPractitioner());
43698      }
43699      if (element.hasOrganization()) {
43700        composeReference("organization", element.getOrganization());
43701      }
43702      if (element.hasCode()) { 
43703        for (CodeableConcept e : element.getCode()) 
43704          composeCodeableConcept("code", e);
43705      }
43706      if (element.hasSpecialty()) { 
43707        for (CodeableConcept e : element.getSpecialty()) 
43708          composeCodeableConcept("specialty", e);
43709      }
43710      if (element.hasLocation()) { 
43711        for (Reference e : element.getLocation()) 
43712          composeReference("location", e);
43713      }
43714      if (element.hasHealthcareService()) { 
43715        for (Reference e : element.getHealthcareService()) 
43716          composeReference("healthcareService", e);
43717      }
43718      if (element.hasTelecom()) { 
43719        for (ContactPoint e : element.getTelecom()) 
43720          composeContactPoint("telecom", e);
43721      }
43722      if (element.hasAvailableTime()) { 
43723        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
43724          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
43725      }
43726      if (element.hasNotAvailable()) { 
43727        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
43728          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
43729      }
43730      if (element.hasAvailabilityExceptionsElement()) {
43731        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
43732      }
43733      if (element.hasEndpoint()) { 
43734        for (Reference e : element.getEndpoint()) 
43735          composeReference("endpoint", e);
43736      }
43737  }
43738
43739  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
43740    if (element != null) {
43741      composeElementAttributes(element);
43742      xml.enter(FHIR_NS, name);
43743      composePractitionerRolePractitionerRoleAvailableTimeComponentElements(element);
43744      composeElementClose(element);
43745      xml.exit(FHIR_NS, name);
43746    }
43747  }
43748
43749  protected void composePractitionerRolePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
43750      composeBackboneElementElements(element);
43751        if (element.hasDaysOfWeek()) 
43752          for (Enumeration<PractitionerRole.DaysOfWeek> e : element.getDaysOfWeek()) 
43753            composeEnumeration("daysOfWeek", e, new PractitionerRole.DaysOfWeekEnumFactory());
43754      if (element.hasAllDayElement()) {
43755        composeBoolean("allDay", element.getAllDayElement());
43756      }
43757      if (element.hasAvailableStartTimeElement()) {
43758        composeTime("availableStartTime", element.getAvailableStartTimeElement());
43759      }
43760      if (element.hasAvailableEndTimeElement()) {
43761        composeTime("availableEndTime", element.getAvailableEndTimeElement());
43762      }
43763  }
43764
43765  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
43766    if (element != null) {
43767      composeElementAttributes(element);
43768      xml.enter(FHIR_NS, name);
43769      composePractitionerRolePractitionerRoleNotAvailableComponentElements(element);
43770      composeElementClose(element);
43771      xml.exit(FHIR_NS, name);
43772    }
43773  }
43774
43775  protected void composePractitionerRolePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
43776      composeBackboneElementElements(element);
43777      if (element.hasDescriptionElement()) {
43778        composeString("description", element.getDescriptionElement());
43779      }
43780      if (element.hasDuring()) {
43781        composePeriod("during", element.getDuring());
43782      }
43783  }
43784
43785  protected void composeProcedure(String name, Procedure element) throws IOException {
43786    if (element != null) {
43787      composeDomainResourceAttributes(element);
43788      xml.enter(FHIR_NS, name);
43789      composeProcedureElements(element);
43790      composeElementClose(element);
43791      xml.exit(FHIR_NS, name);
43792    }
43793  }
43794
43795  protected void composeProcedureElements(Procedure element) throws IOException {
43796      composeDomainResourceElements(element);
43797      if (element.hasIdentifier()) { 
43798        for (Identifier e : element.getIdentifier()) 
43799          composeIdentifier("identifier", e);
43800      }
43801      if (element.hasInstantiatesCanonical()) { 
43802        for (CanonicalType e : element.getInstantiatesCanonical()) 
43803          composeCanonical("instantiatesCanonical", e);
43804      }
43805      if (element.hasInstantiatesUri()) { 
43806        for (UriType e : element.getInstantiatesUri()) 
43807          composeUri("instantiatesUri", e);
43808      }
43809      if (element.hasBasedOn()) { 
43810        for (Reference e : element.getBasedOn()) 
43811          composeReference("basedOn", e);
43812      }
43813      if (element.hasPartOf()) { 
43814        for (Reference e : element.getPartOf()) 
43815          composeReference("partOf", e);
43816      }
43817      if (element.hasStatusElement())
43818        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
43819      if (element.hasStatusReason()) {
43820        composeCodeableConcept("statusReason", element.getStatusReason());
43821      }
43822      if (element.hasCategory()) {
43823        composeCodeableConcept("category", element.getCategory());
43824      }
43825      if (element.hasCode()) {
43826        composeCodeableConcept("code", element.getCode());
43827      }
43828      if (element.hasSubject()) {
43829        composeReference("subject", element.getSubject());
43830      }
43831      if (element.hasEncounter()) {
43832        composeReference("encounter", element.getEncounter());
43833      }
43834      if (element.hasPerformed()) {
43835        composeType("performed", element.getPerformed());
43836      }      if (element.hasRecorder()) {
43837        composeReference("recorder", element.getRecorder());
43838      }
43839      if (element.hasAsserter()) {
43840        composeReference("asserter", element.getAsserter());
43841      }
43842      if (element.hasPerformer()) { 
43843        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
43844          composeProcedureProcedurePerformerComponent("performer", e);
43845      }
43846      if (element.hasLocation()) {
43847        composeReference("location", element.getLocation());
43848      }
43849      if (element.hasReasonCode()) { 
43850        for (CodeableConcept e : element.getReasonCode()) 
43851          composeCodeableConcept("reasonCode", e);
43852      }
43853      if (element.hasReasonReference()) { 
43854        for (Reference e : element.getReasonReference()) 
43855          composeReference("reasonReference", e);
43856      }
43857      if (element.hasBodySite()) { 
43858        for (CodeableConcept e : element.getBodySite()) 
43859          composeCodeableConcept("bodySite", e);
43860      }
43861      if (element.hasOutcome()) {
43862        composeCodeableConcept("outcome", element.getOutcome());
43863      }
43864      if (element.hasReport()) { 
43865        for (Reference e : element.getReport()) 
43866          composeReference("report", e);
43867      }
43868      if (element.hasComplication()) { 
43869        for (CodeableConcept e : element.getComplication()) 
43870          composeCodeableConcept("complication", e);
43871      }
43872      if (element.hasComplicationDetail()) { 
43873        for (Reference e : element.getComplicationDetail()) 
43874          composeReference("complicationDetail", e);
43875      }
43876      if (element.hasFollowUp()) { 
43877        for (CodeableConcept e : element.getFollowUp()) 
43878          composeCodeableConcept("followUp", e);
43879      }
43880      if (element.hasNote()) { 
43881        for (Annotation e : element.getNote()) 
43882          composeAnnotation("note", e);
43883      }
43884      if (element.hasFocalDevice()) { 
43885        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
43886          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
43887      }
43888      if (element.hasUsedReference()) { 
43889        for (Reference e : element.getUsedReference()) 
43890          composeReference("usedReference", e);
43891      }
43892      if (element.hasUsedCode()) { 
43893        for (CodeableConcept e : element.getUsedCode()) 
43894          composeCodeableConcept("usedCode", e);
43895      }
43896  }
43897
43898  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
43899    if (element != null) {
43900      composeElementAttributes(element);
43901      xml.enter(FHIR_NS, name);
43902      composeProcedureProcedurePerformerComponentElements(element);
43903      composeElementClose(element);
43904      xml.exit(FHIR_NS, name);
43905    }
43906  }
43907
43908  protected void composeProcedureProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
43909      composeBackboneElementElements(element);
43910      if (element.hasFunction()) {
43911        composeCodeableConcept("function", element.getFunction());
43912      }
43913      if (element.hasActor()) {
43914        composeReference("actor", element.getActor());
43915      }
43916      if (element.hasOnBehalfOf()) {
43917        composeReference("onBehalfOf", element.getOnBehalfOf());
43918      }
43919  }
43920
43921  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
43922    if (element != null) {
43923      composeElementAttributes(element);
43924      xml.enter(FHIR_NS, name);
43925      composeProcedureProcedureFocalDeviceComponentElements(element);
43926      composeElementClose(element);
43927      xml.exit(FHIR_NS, name);
43928    }
43929  }
43930
43931  protected void composeProcedureProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
43932      composeBackboneElementElements(element);
43933      if (element.hasAction()) {
43934        composeCodeableConcept("action", element.getAction());
43935      }
43936      if (element.hasManipulated()) {
43937        composeReference("manipulated", element.getManipulated());
43938      }
43939  }
43940
43941  protected void composeProvenance(String name, Provenance element) throws IOException {
43942    if (element != null) {
43943      composeDomainResourceAttributes(element);
43944      xml.enter(FHIR_NS, name);
43945      composeProvenanceElements(element);
43946      composeElementClose(element);
43947      xml.exit(FHIR_NS, name);
43948    }
43949  }
43950
43951  protected void composeProvenanceElements(Provenance element) throws IOException {
43952      composeDomainResourceElements(element);
43953      if (element.hasTarget()) { 
43954        for (Reference e : element.getTarget()) 
43955          composeReference("target", e);
43956      }
43957      if (element.hasOccurred()) {
43958        composeType("occurred", element.getOccurred());
43959      }      if (element.hasRecordedElement()) {
43960        composeInstant("recorded", element.getRecordedElement());
43961      }
43962      if (element.hasPolicy()) { 
43963        for (UriType e : element.getPolicy()) 
43964          composeUri("policy", e);
43965      }
43966      if (element.hasLocation()) {
43967        composeReference("location", element.getLocation());
43968      }
43969      if (element.hasReason()) { 
43970        for (CodeableConcept e : element.getReason()) 
43971          composeCodeableConcept("reason", e);
43972      }
43973      if (element.hasActivity()) {
43974        composeCodeableConcept("activity", element.getActivity());
43975      }
43976      if (element.hasAgent()) { 
43977        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
43978          composeProvenanceProvenanceAgentComponent("agent", e);
43979      }
43980      if (element.hasEntity()) { 
43981        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
43982          composeProvenanceProvenanceEntityComponent("entity", e);
43983      }
43984      if (element.hasSignature()) { 
43985        for (Signature e : element.getSignature()) 
43986          composeSignature("signature", e);
43987      }
43988  }
43989
43990  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
43991    if (element != null) {
43992      composeElementAttributes(element);
43993      xml.enter(FHIR_NS, name);
43994      composeProvenanceProvenanceAgentComponentElements(element);
43995      composeElementClose(element);
43996      xml.exit(FHIR_NS, name);
43997    }
43998  }
43999
44000  protected void composeProvenanceProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
44001      composeBackboneElementElements(element);
44002      if (element.hasType()) {
44003        composeCodeableConcept("type", element.getType());
44004      }
44005      if (element.hasRole()) { 
44006        for (CodeableConcept e : element.getRole()) 
44007          composeCodeableConcept("role", e);
44008      }
44009      if (element.hasWho()) {
44010        composeReference("who", element.getWho());
44011      }
44012      if (element.hasOnBehalfOf()) {
44013        composeReference("onBehalfOf", element.getOnBehalfOf());
44014      }
44015  }
44016
44017  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
44018    if (element != null) {
44019      composeElementAttributes(element);
44020      xml.enter(FHIR_NS, name);
44021      composeProvenanceProvenanceEntityComponentElements(element);
44022      composeElementClose(element);
44023      xml.exit(FHIR_NS, name);
44024    }
44025  }
44026
44027  protected void composeProvenanceProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
44028      composeBackboneElementElements(element);
44029      if (element.hasRoleElement())
44030        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
44031      if (element.hasWhat()) {
44032        composeReference("what", element.getWhat());
44033      }
44034      if (element.hasAgent()) { 
44035        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
44036          composeProvenanceProvenanceAgentComponent("agent", e);
44037      }
44038  }
44039
44040  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
44041    if (element != null) {
44042      composeDomainResourceAttributes(element);
44043      xml.enter(FHIR_NS, name);
44044      composeQuestionnaireElements(element);
44045      composeElementClose(element);
44046      xml.exit(FHIR_NS, name);
44047    }
44048  }
44049
44050  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
44051      composeDomainResourceElements(element);
44052      if (element.hasUrlElement()) {
44053        composeUri("url", element.getUrlElement());
44054      }
44055      if (element.hasIdentifier()) { 
44056        for (Identifier e : element.getIdentifier()) 
44057          composeIdentifier("identifier", e);
44058      }
44059      if (element.hasVersionElement()) {
44060        composeString("version", element.getVersionElement());
44061      }
44062      if (element.hasNameElement()) {
44063        composeString("name", element.getNameElement());
44064      }
44065      if (element.hasTitleElement()) {
44066        composeString("title", element.getTitleElement());
44067      }
44068      if (element.hasDerivedFrom()) { 
44069        for (CanonicalType e : element.getDerivedFrom()) 
44070          composeCanonical("derivedFrom", e);
44071      }
44072      if (element.hasStatusElement())
44073        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44074      if (element.hasExperimentalElement()) {
44075        composeBoolean("experimental", element.getExperimentalElement());
44076      }
44077      if (element.hasSubjectType()) { 
44078        for (CodeType e : element.getSubjectType()) 
44079          composeCode("subjectType", e);
44080      }
44081      if (element.hasDateElement()) {
44082        composeDateTime("date", element.getDateElement());
44083      }
44084      if (element.hasPublisherElement()) {
44085        composeString("publisher", element.getPublisherElement());
44086      }
44087      if (element.hasContact()) { 
44088        for (ContactDetail e : element.getContact()) 
44089          composeContactDetail("contact", e);
44090      }
44091      if (element.hasDescriptionElement()) {
44092        composeMarkdown("description", element.getDescriptionElement());
44093      }
44094      if (element.hasUseContext()) { 
44095        for (UsageContext e : element.getUseContext()) 
44096          composeUsageContext("useContext", e);
44097      }
44098      if (element.hasJurisdiction()) { 
44099        for (CodeableConcept e : element.getJurisdiction()) 
44100          composeCodeableConcept("jurisdiction", e);
44101      }
44102      if (element.hasPurposeElement()) {
44103        composeMarkdown("purpose", element.getPurposeElement());
44104      }
44105      if (element.hasCopyrightElement()) {
44106        composeMarkdown("copyright", element.getCopyrightElement());
44107      }
44108      if (element.hasApprovalDateElement()) {
44109        composeDate("approvalDate", element.getApprovalDateElement());
44110      }
44111      if (element.hasLastReviewDateElement()) {
44112        composeDate("lastReviewDate", element.getLastReviewDateElement());
44113      }
44114      if (element.hasEffectivePeriod()) {
44115        composePeriod("effectivePeriod", element.getEffectivePeriod());
44116      }
44117      if (element.hasCode()) { 
44118        for (Coding e : element.getCode()) 
44119          composeCoding("code", e);
44120      }
44121      if (element.hasItem()) { 
44122        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
44123          composeQuestionnaireQuestionnaireItemComponent("item", e);
44124      }
44125  }
44126
44127  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
44128    if (element != null) {
44129      composeElementAttributes(element);
44130      xml.enter(FHIR_NS, name);
44131      composeQuestionnaireQuestionnaireItemComponentElements(element);
44132      composeElementClose(element);
44133      xml.exit(FHIR_NS, name);
44134    }
44135  }
44136
44137  protected void composeQuestionnaireQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
44138      composeBackboneElementElements(element);
44139      if (element.hasLinkIdElement()) {
44140        composeString("linkId", element.getLinkIdElement());
44141      }
44142      if (element.hasDefinitionElement()) {
44143        composeUri("definition", element.getDefinitionElement());
44144      }
44145      if (element.hasCode()) { 
44146        for (Coding e : element.getCode()) 
44147          composeCoding("code", e);
44148      }
44149      if (element.hasPrefixElement()) {
44150        composeString("prefix", element.getPrefixElement());
44151      }
44152      if (element.hasTextElement()) {
44153        composeString("text", element.getTextElement());
44154      }
44155      if (element.hasTypeElement())
44156        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
44157      if (element.hasEnableWhen()) { 
44158        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
44159          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
44160      }
44161      if (element.hasEnableBehaviorElement())
44162        composeEnumeration("enableBehavior", element.getEnableBehaviorElement(), new Questionnaire.EnableWhenBehaviorEnumFactory());
44163      if (element.hasRequiredElement()) {
44164        composeBoolean("required", element.getRequiredElement());
44165      }
44166      if (element.hasRepeatsElement()) {
44167        composeBoolean("repeats", element.getRepeatsElement());
44168      }
44169      if (element.hasReadOnlyElement()) {
44170        composeBoolean("readOnly", element.getReadOnlyElement());
44171      }
44172      if (element.hasMaxLengthElement()) {
44173        composeInteger("maxLength", element.getMaxLengthElement());
44174      }
44175      if (element.hasAnswerValueSetElement()) {
44176        composeCanonical("answerValueSet", element.getAnswerValueSetElement());
44177      }
44178      if (element.hasAnswerOption()) { 
44179        for (Questionnaire.QuestionnaireItemAnswerOptionComponent e : element.getAnswerOption()) 
44180          composeQuestionnaireQuestionnaireItemAnswerOptionComponent("answerOption", e);
44181      }
44182      if (element.hasInitial()) { 
44183        for (Questionnaire.QuestionnaireItemInitialComponent e : element.getInitial()) 
44184          composeQuestionnaireQuestionnaireItemInitialComponent("initial", e);
44185      }
44186      if (element.hasItem()) { 
44187        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
44188          composeQuestionnaireQuestionnaireItemComponent("item", e);
44189      }
44190  }
44191
44192  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
44193    if (element != null) {
44194      composeElementAttributes(element);
44195      xml.enter(FHIR_NS, name);
44196      composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(element);
44197      composeElementClose(element);
44198      xml.exit(FHIR_NS, name);
44199    }
44200  }
44201
44202  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
44203      composeBackboneElementElements(element);
44204      if (element.hasQuestionElement()) {
44205        composeString("question", element.getQuestionElement());
44206      }
44207      if (element.hasOperatorElement())
44208        composeEnumeration("operator", element.getOperatorElement(), new Questionnaire.QuestionnaireItemOperatorEnumFactory());
44209      if (element.hasAnswer()) {
44210        composeType("answer", element.getAnswer());
44211      }  }
44212
44213  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponent(String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
44214    if (element != null) {
44215      composeElementAttributes(element);
44216      xml.enter(FHIR_NS, name);
44217      composeQuestionnaireQuestionnaireItemAnswerOptionComponentElements(element);
44218      composeElementClose(element);
44219      xml.exit(FHIR_NS, name);
44220    }
44221  }
44222
44223  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponentElements(Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
44224      composeBackboneElementElements(element);
44225      if (element.hasValue()) {
44226        composeType("value", element.getValue());
44227      }      if (element.hasInitialSelectedElement()) {
44228        composeBoolean("initialSelected", element.getInitialSelectedElement());
44229      }
44230  }
44231
44232  protected void composeQuestionnaireQuestionnaireItemInitialComponent(String name, Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
44233    if (element != null) {
44234      composeElementAttributes(element);
44235      xml.enter(FHIR_NS, name);
44236      composeQuestionnaireQuestionnaireItemInitialComponentElements(element);
44237      composeElementClose(element);
44238      xml.exit(FHIR_NS, name);
44239    }
44240  }
44241
44242  protected void composeQuestionnaireQuestionnaireItemInitialComponentElements(Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
44243      composeBackboneElementElements(element);
44244      if (element.hasValue()) {
44245        composeType("value", element.getValue());
44246      }  }
44247
44248  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
44249    if (element != null) {
44250      composeDomainResourceAttributes(element);
44251      xml.enter(FHIR_NS, name);
44252      composeQuestionnaireResponseElements(element);
44253      composeElementClose(element);
44254      xml.exit(FHIR_NS, name);
44255    }
44256  }
44257
44258  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
44259      composeDomainResourceElements(element);
44260      if (element.hasIdentifier()) {
44261        composeIdentifier("identifier", element.getIdentifier());
44262      }
44263      if (element.hasBasedOn()) { 
44264        for (Reference e : element.getBasedOn()) 
44265          composeReference("basedOn", e);
44266      }
44267      if (element.hasPartOf()) { 
44268        for (Reference e : element.getPartOf()) 
44269          composeReference("partOf", e);
44270      }
44271      if (element.hasQuestionnaireElement()) {
44272        composeCanonical("questionnaire", element.getQuestionnaireElement());
44273      }
44274      if (element.hasStatusElement())
44275        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
44276      if (element.hasSubject()) {
44277        composeReference("subject", element.getSubject());
44278      }
44279      if (element.hasEncounter()) {
44280        composeReference("encounter", element.getEncounter());
44281      }
44282      if (element.hasAuthoredElement()) {
44283        composeDateTime("authored", element.getAuthoredElement());
44284      }
44285      if (element.hasAuthor()) {
44286        composeReference("author", element.getAuthor());
44287      }
44288      if (element.hasSource()) {
44289        composeReference("source", element.getSource());
44290      }
44291      if (element.hasItem()) { 
44292        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44293          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44294      }
44295  }
44296
44297  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
44298    if (element != null) {
44299      composeElementAttributes(element);
44300      xml.enter(FHIR_NS, name);
44301      composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(element);
44302      composeElementClose(element);
44303      xml.exit(FHIR_NS, name);
44304    }
44305  }
44306
44307  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
44308      composeBackboneElementElements(element);
44309      if (element.hasLinkIdElement()) {
44310        composeString("linkId", element.getLinkIdElement());
44311      }
44312      if (element.hasDefinitionElement()) {
44313        composeUri("definition", element.getDefinitionElement());
44314      }
44315      if (element.hasTextElement()) {
44316        composeString("text", element.getTextElement());
44317      }
44318      if (element.hasAnswer()) { 
44319        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
44320          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
44321      }
44322      if (element.hasItem()) { 
44323        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44324          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44325      }
44326  }
44327
44328  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
44329    if (element != null) {
44330      composeElementAttributes(element);
44331      xml.enter(FHIR_NS, name);
44332      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(element);
44333      composeElementClose(element);
44334      xml.exit(FHIR_NS, name);
44335    }
44336  }
44337
44338  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
44339      composeBackboneElementElements(element);
44340      if (element.hasValue()) {
44341        composeType("value", element.getValue());
44342      }      if (element.hasItem()) { 
44343        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44344          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44345      }
44346  }
44347
44348  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
44349    if (element != null) {
44350      composeDomainResourceAttributes(element);
44351      xml.enter(FHIR_NS, name);
44352      composeRelatedPersonElements(element);
44353      composeElementClose(element);
44354      xml.exit(FHIR_NS, name);
44355    }
44356  }
44357
44358  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
44359      composeDomainResourceElements(element);
44360      if (element.hasIdentifier()) { 
44361        for (Identifier e : element.getIdentifier()) 
44362          composeIdentifier("identifier", e);
44363      }
44364      if (element.hasActiveElement()) {
44365        composeBoolean("active", element.getActiveElement());
44366      }
44367      if (element.hasPatient()) {
44368        composeReference("patient", element.getPatient());
44369      }
44370      if (element.hasRelationship()) { 
44371        for (CodeableConcept e : element.getRelationship()) 
44372          composeCodeableConcept("relationship", e);
44373      }
44374      if (element.hasName()) { 
44375        for (HumanName e : element.getName()) 
44376          composeHumanName("name", e);
44377      }
44378      if (element.hasTelecom()) { 
44379        for (ContactPoint e : element.getTelecom()) 
44380          composeContactPoint("telecom", e);
44381      }
44382      if (element.hasGenderElement())
44383        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
44384      if (element.hasBirthDateElement()) {
44385        composeDate("birthDate", element.getBirthDateElement());
44386      }
44387      if (element.hasAddress()) { 
44388        for (Address e : element.getAddress()) 
44389          composeAddress("address", e);
44390      }
44391      if (element.hasPhoto()) { 
44392        for (Attachment e : element.getPhoto()) 
44393          composeAttachment("photo", e);
44394      }
44395      if (element.hasPeriod()) {
44396        composePeriod("period", element.getPeriod());
44397      }
44398      if (element.hasCommunication()) { 
44399        for (RelatedPerson.RelatedPersonCommunicationComponent e : element.getCommunication()) 
44400          composeRelatedPersonRelatedPersonCommunicationComponent("communication", e);
44401      }
44402  }
44403
44404  protected void composeRelatedPersonRelatedPersonCommunicationComponent(String name, RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
44405    if (element != null) {
44406      composeElementAttributes(element);
44407      xml.enter(FHIR_NS, name);
44408      composeRelatedPersonRelatedPersonCommunicationComponentElements(element);
44409      composeElementClose(element);
44410      xml.exit(FHIR_NS, name);
44411    }
44412  }
44413
44414  protected void composeRelatedPersonRelatedPersonCommunicationComponentElements(RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
44415      composeBackboneElementElements(element);
44416      if (element.hasLanguage()) {
44417        composeCodeableConcept("language", element.getLanguage());
44418      }
44419      if (element.hasPreferredElement()) {
44420        composeBoolean("preferred", element.getPreferredElement());
44421      }
44422  }
44423
44424  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
44425    if (element != null) {
44426      composeDomainResourceAttributes(element);
44427      xml.enter(FHIR_NS, name);
44428      composeRequestGroupElements(element);
44429      composeElementClose(element);
44430      xml.exit(FHIR_NS, name);
44431    }
44432  }
44433
44434  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
44435      composeDomainResourceElements(element);
44436      if (element.hasIdentifier()) { 
44437        for (Identifier e : element.getIdentifier()) 
44438          composeIdentifier("identifier", e);
44439      }
44440      if (element.hasInstantiatesCanonical()) { 
44441        for (CanonicalType e : element.getInstantiatesCanonical()) 
44442          composeCanonical("instantiatesCanonical", e);
44443      }
44444      if (element.hasInstantiatesUri()) { 
44445        for (UriType e : element.getInstantiatesUri()) 
44446          composeUri("instantiatesUri", e);
44447      }
44448      if (element.hasBasedOn()) { 
44449        for (Reference e : element.getBasedOn()) 
44450          composeReference("basedOn", e);
44451      }
44452      if (element.hasReplaces()) { 
44453        for (Reference e : element.getReplaces()) 
44454          composeReference("replaces", e);
44455      }
44456      if (element.hasGroupIdentifier()) {
44457        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
44458      }
44459      if (element.hasStatusElement())
44460        composeEnumeration("status", element.getStatusElement(), new RequestGroup.RequestStatusEnumFactory());
44461      if (element.hasIntentElement())
44462        composeEnumeration("intent", element.getIntentElement(), new RequestGroup.RequestIntentEnumFactory());
44463      if (element.hasPriorityElement())
44464        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
44465      if (element.hasCode()) {
44466        composeCodeableConcept("code", element.getCode());
44467      }
44468      if (element.hasSubject()) {
44469        composeReference("subject", element.getSubject());
44470      }
44471      if (element.hasEncounter()) {
44472        composeReference("encounter", element.getEncounter());
44473      }
44474      if (element.hasAuthoredOnElement()) {
44475        composeDateTime("authoredOn", element.getAuthoredOnElement());
44476      }
44477      if (element.hasAuthor()) {
44478        composeReference("author", element.getAuthor());
44479      }
44480      if (element.hasReasonCode()) { 
44481        for (CodeableConcept e : element.getReasonCode()) 
44482          composeCodeableConcept("reasonCode", e);
44483      }
44484      if (element.hasReasonReference()) { 
44485        for (Reference e : element.getReasonReference()) 
44486          composeReference("reasonReference", e);
44487      }
44488      if (element.hasNote()) { 
44489        for (Annotation e : element.getNote()) 
44490          composeAnnotation("note", e);
44491      }
44492      if (element.hasAction()) { 
44493        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
44494          composeRequestGroupRequestGroupActionComponent("action", e);
44495      }
44496  }
44497
44498  protected void composeRequestGroupRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
44499    if (element != null) {
44500      composeElementAttributes(element);
44501      xml.enter(FHIR_NS, name);
44502      composeRequestGroupRequestGroupActionComponentElements(element);
44503      composeElementClose(element);
44504      xml.exit(FHIR_NS, name);
44505    }
44506  }
44507
44508  protected void composeRequestGroupRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
44509      composeBackboneElementElements(element);
44510      if (element.hasPrefixElement()) {
44511        composeString("prefix", element.getPrefixElement());
44512      }
44513      if (element.hasTitleElement()) {
44514        composeString("title", element.getTitleElement());
44515      }
44516      if (element.hasDescriptionElement()) {
44517        composeString("description", element.getDescriptionElement());
44518      }
44519      if (element.hasTextEquivalentElement()) {
44520        composeString("textEquivalent", element.getTextEquivalentElement());
44521      }
44522      if (element.hasPriorityElement())
44523        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
44524      if (element.hasCode()) { 
44525        for (CodeableConcept e : element.getCode()) 
44526          composeCodeableConcept("code", e);
44527      }
44528      if (element.hasDocumentation()) { 
44529        for (RelatedArtifact e : element.getDocumentation()) 
44530          composeRelatedArtifact("documentation", e);
44531      }
44532      if (element.hasCondition()) { 
44533        for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
44534          composeRequestGroupRequestGroupActionConditionComponent("condition", e);
44535      }
44536      if (element.hasRelatedAction()) { 
44537        for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
44538          composeRequestGroupRequestGroupActionRelatedActionComponent("relatedAction", e);
44539      }
44540      if (element.hasTiming()) {
44541        composeType("timing", element.getTiming());
44542      }      if (element.hasParticipant()) { 
44543        for (Reference e : element.getParticipant()) 
44544          composeReference("participant", e);
44545      }
44546      if (element.hasType()) {
44547        composeCodeableConcept("type", element.getType());
44548      }
44549      if (element.hasGroupingBehaviorElement())
44550        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new RequestGroup.ActionGroupingBehaviorEnumFactory());
44551      if (element.hasSelectionBehaviorElement())
44552        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new RequestGroup.ActionSelectionBehaviorEnumFactory());
44553      if (element.hasRequiredBehaviorElement())
44554        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new RequestGroup.ActionRequiredBehaviorEnumFactory());
44555      if (element.hasPrecheckBehaviorElement())
44556        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new RequestGroup.ActionPrecheckBehaviorEnumFactory());
44557      if (element.hasCardinalityBehaviorElement())
44558        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new RequestGroup.ActionCardinalityBehaviorEnumFactory());
44559      if (element.hasResource()) {
44560        composeReference("resource", element.getResource());
44561      }
44562      if (element.hasAction()) { 
44563        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
44564          composeRequestGroupRequestGroupActionComponent("action", e);
44565      }
44566  }
44567
44568  protected void composeRequestGroupRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
44569    if (element != null) {
44570      composeElementAttributes(element);
44571      xml.enter(FHIR_NS, name);
44572      composeRequestGroupRequestGroupActionConditionComponentElements(element);
44573      composeElementClose(element);
44574      xml.exit(FHIR_NS, name);
44575    }
44576  }
44577
44578  protected void composeRequestGroupRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
44579      composeBackboneElementElements(element);
44580      if (element.hasKindElement())
44581        composeEnumeration("kind", element.getKindElement(), new RequestGroup.ActionConditionKindEnumFactory());
44582      if (element.hasExpression()) {
44583        composeExpression("expression", element.getExpression());
44584      }
44585  }
44586
44587  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
44588    if (element != null) {
44589      composeElementAttributes(element);
44590      xml.enter(FHIR_NS, name);
44591      composeRequestGroupRequestGroupActionRelatedActionComponentElements(element);
44592      composeElementClose(element);
44593      xml.exit(FHIR_NS, name);
44594    }
44595  }
44596
44597  protected void composeRequestGroupRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
44598      composeBackboneElementElements(element);
44599      if (element.hasActionIdElement()) {
44600        composeId("actionId", element.getActionIdElement());
44601      }
44602      if (element.hasRelationshipElement())
44603        composeEnumeration("relationship", element.getRelationshipElement(), new RequestGroup.ActionRelationshipTypeEnumFactory());
44604      if (element.hasOffset()) {
44605        composeType("offset", element.getOffset());
44606      }  }
44607
44608  protected void composeResearchDefinition(String name, ResearchDefinition element) throws IOException {
44609    if (element != null) {
44610      composeDomainResourceAttributes(element);
44611      xml.enter(FHIR_NS, name);
44612      composeResearchDefinitionElements(element);
44613      composeElementClose(element);
44614      xml.exit(FHIR_NS, name);
44615    }
44616  }
44617
44618  protected void composeResearchDefinitionElements(ResearchDefinition element) throws IOException {
44619      composeDomainResourceElements(element);
44620      if (element.hasUrlElement()) {
44621        composeUri("url", element.getUrlElement());
44622      }
44623      if (element.hasIdentifier()) { 
44624        for (Identifier e : element.getIdentifier()) 
44625          composeIdentifier("identifier", e);
44626      }
44627      if (element.hasVersionElement()) {
44628        composeString("version", element.getVersionElement());
44629      }
44630      if (element.hasNameElement()) {
44631        composeString("name", element.getNameElement());
44632      }
44633      if (element.hasTitleElement()) {
44634        composeString("title", element.getTitleElement());
44635      }
44636      if (element.hasShortTitleElement()) {
44637        composeString("shortTitle", element.getShortTitleElement());
44638      }
44639      if (element.hasSubtitleElement()) {
44640        composeString("subtitle", element.getSubtitleElement());
44641      }
44642      if (element.hasStatusElement())
44643        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44644      if (element.hasExperimentalElement()) {
44645        composeBoolean("experimental", element.getExperimentalElement());
44646      }
44647      if (element.hasSubject()) {
44648        composeType("subject", element.getSubject());
44649      }      if (element.hasDateElement()) {
44650        composeDateTime("date", element.getDateElement());
44651      }
44652      if (element.hasPublisherElement()) {
44653        composeString("publisher", element.getPublisherElement());
44654      }
44655      if (element.hasContact()) { 
44656        for (ContactDetail e : element.getContact()) 
44657          composeContactDetail("contact", e);
44658      }
44659      if (element.hasDescriptionElement()) {
44660        composeMarkdown("description", element.getDescriptionElement());
44661      }
44662      if (element.hasComment()) { 
44663        for (StringType e : element.getComment()) 
44664          composeString("comment", e);
44665      }
44666      if (element.hasUseContext()) { 
44667        for (UsageContext e : element.getUseContext()) 
44668          composeUsageContext("useContext", e);
44669      }
44670      if (element.hasJurisdiction()) { 
44671        for (CodeableConcept e : element.getJurisdiction()) 
44672          composeCodeableConcept("jurisdiction", e);
44673      }
44674      if (element.hasPurposeElement()) {
44675        composeMarkdown("purpose", element.getPurposeElement());
44676      }
44677      if (element.hasUsageElement()) {
44678        composeString("usage", element.getUsageElement());
44679      }
44680      if (element.hasCopyrightElement()) {
44681        composeMarkdown("copyright", element.getCopyrightElement());
44682      }
44683      if (element.hasApprovalDateElement()) {
44684        composeDate("approvalDate", element.getApprovalDateElement());
44685      }
44686      if (element.hasLastReviewDateElement()) {
44687        composeDate("lastReviewDate", element.getLastReviewDateElement());
44688      }
44689      if (element.hasEffectivePeriod()) {
44690        composePeriod("effectivePeriod", element.getEffectivePeriod());
44691      }
44692      if (element.hasTopic()) { 
44693        for (CodeableConcept e : element.getTopic()) 
44694          composeCodeableConcept("topic", e);
44695      }
44696      if (element.hasAuthor()) { 
44697        for (ContactDetail e : element.getAuthor()) 
44698          composeContactDetail("author", e);
44699      }
44700      if (element.hasEditor()) { 
44701        for (ContactDetail e : element.getEditor()) 
44702          composeContactDetail("editor", e);
44703      }
44704      if (element.hasReviewer()) { 
44705        for (ContactDetail e : element.getReviewer()) 
44706          composeContactDetail("reviewer", e);
44707      }
44708      if (element.hasEndorser()) { 
44709        for (ContactDetail e : element.getEndorser()) 
44710          composeContactDetail("endorser", e);
44711      }
44712      if (element.hasRelatedArtifact()) { 
44713        for (RelatedArtifact e : element.getRelatedArtifact()) 
44714          composeRelatedArtifact("relatedArtifact", e);
44715      }
44716      if (element.hasLibrary()) { 
44717        for (CanonicalType e : element.getLibrary()) 
44718          composeCanonical("library", e);
44719      }
44720      if (element.hasPopulation()) {
44721        composeReference("population", element.getPopulation());
44722      }
44723      if (element.hasExposure()) {
44724        composeReference("exposure", element.getExposure());
44725      }
44726      if (element.hasExposureAlternative()) {
44727        composeReference("exposureAlternative", element.getExposureAlternative());
44728      }
44729      if (element.hasOutcome()) {
44730        composeReference("outcome", element.getOutcome());
44731      }
44732  }
44733
44734  protected void composeResearchElementDefinition(String name, ResearchElementDefinition element) throws IOException {
44735    if (element != null) {
44736      composeDomainResourceAttributes(element);
44737      xml.enter(FHIR_NS, name);
44738      composeResearchElementDefinitionElements(element);
44739      composeElementClose(element);
44740      xml.exit(FHIR_NS, name);
44741    }
44742  }
44743
44744  protected void composeResearchElementDefinitionElements(ResearchElementDefinition element) throws IOException {
44745      composeDomainResourceElements(element);
44746      if (element.hasUrlElement()) {
44747        composeUri("url", element.getUrlElement());
44748      }
44749      if (element.hasIdentifier()) { 
44750        for (Identifier e : element.getIdentifier()) 
44751          composeIdentifier("identifier", e);
44752      }
44753      if (element.hasVersionElement()) {
44754        composeString("version", element.getVersionElement());
44755      }
44756      if (element.hasNameElement()) {
44757        composeString("name", element.getNameElement());
44758      }
44759      if (element.hasTitleElement()) {
44760        composeString("title", element.getTitleElement());
44761      }
44762      if (element.hasShortTitleElement()) {
44763        composeString("shortTitle", element.getShortTitleElement());
44764      }
44765      if (element.hasSubtitleElement()) {
44766        composeString("subtitle", element.getSubtitleElement());
44767      }
44768      if (element.hasStatusElement())
44769        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44770      if (element.hasExperimentalElement()) {
44771        composeBoolean("experimental", element.getExperimentalElement());
44772      }
44773      if (element.hasSubject()) {
44774        composeType("subject", element.getSubject());
44775      }      if (element.hasDateElement()) {
44776        composeDateTime("date", element.getDateElement());
44777      }
44778      if (element.hasPublisherElement()) {
44779        composeString("publisher", element.getPublisherElement());
44780      }
44781      if (element.hasContact()) { 
44782        for (ContactDetail e : element.getContact()) 
44783          composeContactDetail("contact", e);
44784      }
44785      if (element.hasDescriptionElement()) {
44786        composeMarkdown("description", element.getDescriptionElement());
44787      }
44788      if (element.hasComment()) { 
44789        for (StringType e : element.getComment()) 
44790          composeString("comment", e);
44791      }
44792      if (element.hasUseContext()) { 
44793        for (UsageContext e : element.getUseContext()) 
44794          composeUsageContext("useContext", e);
44795      }
44796      if (element.hasJurisdiction()) { 
44797        for (CodeableConcept e : element.getJurisdiction()) 
44798          composeCodeableConcept("jurisdiction", e);
44799      }
44800      if (element.hasPurposeElement()) {
44801        composeMarkdown("purpose", element.getPurposeElement());
44802      }
44803      if (element.hasUsageElement()) {
44804        composeString("usage", element.getUsageElement());
44805      }
44806      if (element.hasCopyrightElement()) {
44807        composeMarkdown("copyright", element.getCopyrightElement());
44808      }
44809      if (element.hasApprovalDateElement()) {
44810        composeDate("approvalDate", element.getApprovalDateElement());
44811      }
44812      if (element.hasLastReviewDateElement()) {
44813        composeDate("lastReviewDate", element.getLastReviewDateElement());
44814      }
44815      if (element.hasEffectivePeriod()) {
44816        composePeriod("effectivePeriod", element.getEffectivePeriod());
44817      }
44818      if (element.hasTopic()) { 
44819        for (CodeableConcept e : element.getTopic()) 
44820          composeCodeableConcept("topic", e);
44821      }
44822      if (element.hasAuthor()) { 
44823        for (ContactDetail e : element.getAuthor()) 
44824          composeContactDetail("author", e);
44825      }
44826      if (element.hasEditor()) { 
44827        for (ContactDetail e : element.getEditor()) 
44828          composeContactDetail("editor", e);
44829      }
44830      if (element.hasReviewer()) { 
44831        for (ContactDetail e : element.getReviewer()) 
44832          composeContactDetail("reviewer", e);
44833      }
44834      if (element.hasEndorser()) { 
44835        for (ContactDetail e : element.getEndorser()) 
44836          composeContactDetail("endorser", e);
44837      }
44838      if (element.hasRelatedArtifact()) { 
44839        for (RelatedArtifact e : element.getRelatedArtifact()) 
44840          composeRelatedArtifact("relatedArtifact", e);
44841      }
44842      if (element.hasLibrary()) { 
44843        for (CanonicalType e : element.getLibrary()) 
44844          composeCanonical("library", e);
44845      }
44846      if (element.hasTypeElement())
44847        composeEnumeration("type", element.getTypeElement(), new ResearchElementDefinition.ResearchElementTypeEnumFactory());
44848      if (element.hasVariableTypeElement())
44849        composeEnumeration("variableType", element.getVariableTypeElement(), new ResearchElementDefinition.VariableTypeEnumFactory());
44850      if (element.hasCharacteristic()) { 
44851        for (ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent e : element.getCharacteristic()) 
44852          composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponent("characteristic", e);
44853      }
44854  }
44855
44856  protected void composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(String name, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element) throws IOException {
44857    if (element != null) {
44858      composeElementAttributes(element);
44859      xml.enter(FHIR_NS, name);
44860      composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponentElements(element);
44861      composeElementClose(element);
44862      xml.exit(FHIR_NS, name);
44863    }
44864  }
44865
44866  protected void composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponentElements(ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element) throws IOException {
44867      composeBackboneElementElements(element);
44868      if (element.hasDefinition()) {
44869        composeType("definition", element.getDefinition());
44870      }      if (element.hasUsageContext()) { 
44871        for (UsageContext e : element.getUsageContext()) 
44872          composeUsageContext("usageContext", e);
44873      }
44874      if (element.hasExcludeElement()) {
44875        composeBoolean("exclude", element.getExcludeElement());
44876      }
44877      if (element.hasUnitOfMeasure()) {
44878        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
44879      }
44880      if (element.hasStudyEffectiveDescriptionElement()) {
44881        composeString("studyEffectiveDescription", element.getStudyEffectiveDescriptionElement());
44882      }
44883      if (element.hasStudyEffective()) {
44884        composeType("studyEffective", element.getStudyEffective());
44885      }      if (element.hasStudyEffectiveTimeFromStart()) {
44886        composeDuration("studyEffectiveTimeFromStart", element.getStudyEffectiveTimeFromStart());
44887      }
44888      if (element.hasStudyEffectiveGroupMeasureElement())
44889        composeEnumeration("studyEffectiveGroupMeasure", element.getStudyEffectiveGroupMeasureElement(), new ResearchElementDefinition.GroupMeasureEnumFactory());
44890      if (element.hasParticipantEffectiveDescriptionElement()) {
44891        composeString("participantEffectiveDescription", element.getParticipantEffectiveDescriptionElement());
44892      }
44893      if (element.hasParticipantEffective()) {
44894        composeType("participantEffective", element.getParticipantEffective());
44895      }      if (element.hasParticipantEffectiveTimeFromStart()) {
44896        composeDuration("participantEffectiveTimeFromStart", element.getParticipantEffectiveTimeFromStart());
44897      }
44898      if (element.hasParticipantEffectiveGroupMeasureElement())
44899        composeEnumeration("participantEffectiveGroupMeasure", element.getParticipantEffectiveGroupMeasureElement(), new ResearchElementDefinition.GroupMeasureEnumFactory());
44900  }
44901
44902  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
44903    if (element != null) {
44904      composeDomainResourceAttributes(element);
44905      xml.enter(FHIR_NS, name);
44906      composeResearchStudyElements(element);
44907      composeElementClose(element);
44908      xml.exit(FHIR_NS, name);
44909    }
44910  }
44911
44912  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
44913      composeDomainResourceElements(element);
44914      if (element.hasIdentifier()) { 
44915        for (Identifier e : element.getIdentifier()) 
44916          composeIdentifier("identifier", e);
44917      }
44918      if (element.hasTitleElement()) {
44919        composeString("title", element.getTitleElement());
44920      }
44921      if (element.hasProtocol()) { 
44922        for (Reference e : element.getProtocol()) 
44923          composeReference("protocol", e);
44924      }
44925      if (element.hasPartOf()) { 
44926        for (Reference e : element.getPartOf()) 
44927          composeReference("partOf", e);
44928      }
44929      if (element.hasStatusElement())
44930        composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
44931      if (element.hasPrimaryPurposeType()) {
44932        composeCodeableConcept("primaryPurposeType", element.getPrimaryPurposeType());
44933      }
44934      if (element.hasPhase()) {
44935        composeCodeableConcept("phase", element.getPhase());
44936      }
44937      if (element.hasCategory()) { 
44938        for (CodeableConcept e : element.getCategory()) 
44939          composeCodeableConcept("category", e);
44940      }
44941      if (element.hasFocus()) { 
44942        for (CodeableConcept e : element.getFocus()) 
44943          composeCodeableConcept("focus", e);
44944      }
44945      if (element.hasCondition()) { 
44946        for (CodeableConcept e : element.getCondition()) 
44947          composeCodeableConcept("condition", e);
44948      }
44949      if (element.hasContact()) { 
44950        for (ContactDetail e : element.getContact()) 
44951          composeContactDetail("contact", e);
44952      }
44953      if (element.hasRelatedArtifact()) { 
44954        for (RelatedArtifact e : element.getRelatedArtifact()) 
44955          composeRelatedArtifact("relatedArtifact", e);
44956      }
44957      if (element.hasKeyword()) { 
44958        for (CodeableConcept e : element.getKeyword()) 
44959          composeCodeableConcept("keyword", e);
44960      }
44961      if (element.hasLocation()) { 
44962        for (CodeableConcept e : element.getLocation()) 
44963          composeCodeableConcept("location", e);
44964      }
44965      if (element.hasDescriptionElement()) {
44966        composeMarkdown("description", element.getDescriptionElement());
44967      }
44968      if (element.hasEnrollment()) { 
44969        for (Reference e : element.getEnrollment()) 
44970          composeReference("enrollment", e);
44971      }
44972      if (element.hasPeriod()) {
44973        composePeriod("period", element.getPeriod());
44974      }
44975      if (element.hasSponsor()) {
44976        composeReference("sponsor", element.getSponsor());
44977      }
44978      if (element.hasPrincipalInvestigator()) {
44979        composeReference("principalInvestigator", element.getPrincipalInvestigator());
44980      }
44981      if (element.hasSite()) { 
44982        for (Reference e : element.getSite()) 
44983          composeReference("site", e);
44984      }
44985      if (element.hasReasonStopped()) {
44986        composeCodeableConcept("reasonStopped", element.getReasonStopped());
44987      }
44988      if (element.hasNote()) { 
44989        for (Annotation e : element.getNote()) 
44990          composeAnnotation("note", e);
44991      }
44992      if (element.hasArm()) { 
44993        for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
44994          composeResearchStudyResearchStudyArmComponent("arm", e);
44995      }
44996      if (element.hasObjective()) { 
44997        for (ResearchStudy.ResearchStudyObjectiveComponent e : element.getObjective()) 
44998          composeResearchStudyResearchStudyObjectiveComponent("objective", e);
44999      }
45000  }
45001
45002  protected void composeResearchStudyResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
45003    if (element != null) {
45004      composeElementAttributes(element);
45005      xml.enter(FHIR_NS, name);
45006      composeResearchStudyResearchStudyArmComponentElements(element);
45007      composeElementClose(element);
45008      xml.exit(FHIR_NS, name);
45009    }
45010  }
45011
45012  protected void composeResearchStudyResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
45013      composeBackboneElementElements(element);
45014      if (element.hasNameElement()) {
45015        composeString("name", element.getNameElement());
45016      }
45017      if (element.hasType()) {
45018        composeCodeableConcept("type", element.getType());
45019      }
45020      if (element.hasDescriptionElement()) {
45021        composeString("description", element.getDescriptionElement());
45022      }
45023  }
45024
45025  protected void composeResearchStudyResearchStudyObjectiveComponent(String name, ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
45026    if (element != null) {
45027      composeElementAttributes(element);
45028      xml.enter(FHIR_NS, name);
45029      composeResearchStudyResearchStudyObjectiveComponentElements(element);
45030      composeElementClose(element);
45031      xml.exit(FHIR_NS, name);
45032    }
45033  }
45034
45035  protected void composeResearchStudyResearchStudyObjectiveComponentElements(ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
45036      composeBackboneElementElements(element);
45037      if (element.hasNameElement()) {
45038        composeString("name", element.getNameElement());
45039      }
45040      if (element.hasType()) {
45041        composeCodeableConcept("type", element.getType());
45042      }
45043  }
45044
45045  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
45046    if (element != null) {
45047      composeDomainResourceAttributes(element);
45048      xml.enter(FHIR_NS, name);
45049      composeResearchSubjectElements(element);
45050      composeElementClose(element);
45051      xml.exit(FHIR_NS, name);
45052    }
45053  }
45054
45055  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
45056      composeDomainResourceElements(element);
45057      if (element.hasIdentifier()) { 
45058        for (Identifier e : element.getIdentifier()) 
45059          composeIdentifier("identifier", e);
45060      }
45061      if (element.hasStatusElement())
45062        composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
45063      if (element.hasPeriod()) {
45064        composePeriod("period", element.getPeriod());
45065      }
45066      if (element.hasStudy()) {
45067        composeReference("study", element.getStudy());
45068      }
45069      if (element.hasIndividual()) {
45070        composeReference("individual", element.getIndividual());
45071      }
45072      if (element.hasAssignedArmElement()) {
45073        composeString("assignedArm", element.getAssignedArmElement());
45074      }
45075      if (element.hasActualArmElement()) {
45076        composeString("actualArm", element.getActualArmElement());
45077      }
45078      if (element.hasConsent()) {
45079        composeReference("consent", element.getConsent());
45080      }
45081  }
45082
45083  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
45084    if (element != null) {
45085      composeDomainResourceAttributes(element);
45086      xml.enter(FHIR_NS, name);
45087      composeRiskAssessmentElements(element);
45088      composeElementClose(element);
45089      xml.exit(FHIR_NS, name);
45090    }
45091  }
45092
45093  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
45094      composeDomainResourceElements(element);
45095      if (element.hasIdentifier()) { 
45096        for (Identifier e : element.getIdentifier()) 
45097          composeIdentifier("identifier", e);
45098      }
45099      if (element.hasBasedOn()) {
45100        composeReference("basedOn", element.getBasedOn());
45101      }
45102      if (element.hasParent()) {
45103        composeReference("parent", element.getParent());
45104      }
45105      if (element.hasStatusElement())
45106        composeEnumeration("status", element.getStatusElement(), new RiskAssessment.RiskAssessmentStatusEnumFactory());
45107      if (element.hasMethod()) {
45108        composeCodeableConcept("method", element.getMethod());
45109      }
45110      if (element.hasCode()) {
45111        composeCodeableConcept("code", element.getCode());
45112      }
45113      if (element.hasSubject()) {
45114        composeReference("subject", element.getSubject());
45115      }
45116      if (element.hasEncounter()) {
45117        composeReference("encounter", element.getEncounter());
45118      }
45119      if (element.hasOccurrence()) {
45120        composeType("occurrence", element.getOccurrence());
45121      }      if (element.hasCondition()) {
45122        composeReference("condition", element.getCondition());
45123      }
45124      if (element.hasPerformer()) {
45125        composeReference("performer", element.getPerformer());
45126      }
45127      if (element.hasReasonCode()) { 
45128        for (CodeableConcept e : element.getReasonCode()) 
45129          composeCodeableConcept("reasonCode", e);
45130      }
45131      if (element.hasReasonReference()) { 
45132        for (Reference e : element.getReasonReference()) 
45133          composeReference("reasonReference", e);
45134      }
45135      if (element.hasBasis()) { 
45136        for (Reference e : element.getBasis()) 
45137          composeReference("basis", e);
45138      }
45139      if (element.hasPrediction()) { 
45140        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
45141          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
45142      }
45143      if (element.hasMitigationElement()) {
45144        composeString("mitigation", element.getMitigationElement());
45145      }
45146      if (element.hasNote()) { 
45147        for (Annotation e : element.getNote()) 
45148          composeAnnotation("note", e);
45149      }
45150  }
45151
45152  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
45153    if (element != null) {
45154      composeElementAttributes(element);
45155      xml.enter(FHIR_NS, name);
45156      composeRiskAssessmentRiskAssessmentPredictionComponentElements(element);
45157      composeElementClose(element);
45158      xml.exit(FHIR_NS, name);
45159    }
45160  }
45161
45162  protected void composeRiskAssessmentRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
45163      composeBackboneElementElements(element);
45164      if (element.hasOutcome()) {
45165        composeCodeableConcept("outcome", element.getOutcome());
45166      }
45167      if (element.hasProbability()) {
45168        composeType("probability", element.getProbability());
45169      }      if (element.hasQualitativeRisk()) {
45170        composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
45171      }
45172      if (element.hasRelativeRiskElement()) {
45173        composeDecimal("relativeRisk", element.getRelativeRiskElement());
45174      }
45175      if (element.hasWhen()) {
45176        composeType("when", element.getWhen());
45177      }      if (element.hasRationaleElement()) {
45178        composeString("rationale", element.getRationaleElement());
45179      }
45180  }
45181
45182  protected void composeRiskEvidenceSynthesis(String name, RiskEvidenceSynthesis element) throws IOException {
45183    if (element != null) {
45184      composeDomainResourceAttributes(element);
45185      xml.enter(FHIR_NS, name);
45186      composeRiskEvidenceSynthesisElements(element);
45187      composeElementClose(element);
45188      xml.exit(FHIR_NS, name);
45189    }
45190  }
45191
45192  protected void composeRiskEvidenceSynthesisElements(RiskEvidenceSynthesis element) throws IOException {
45193      composeDomainResourceElements(element);
45194      if (element.hasUrlElement()) {
45195        composeUri("url", element.getUrlElement());
45196      }
45197      if (element.hasIdentifier()) { 
45198        for (Identifier e : element.getIdentifier()) 
45199          composeIdentifier("identifier", e);
45200      }
45201      if (element.hasVersionElement()) {
45202        composeString("version", element.getVersionElement());
45203      }
45204      if (element.hasNameElement()) {
45205        composeString("name", element.getNameElement());
45206      }
45207      if (element.hasTitleElement()) {
45208        composeString("title", element.getTitleElement());
45209      }
45210      if (element.hasStatusElement())
45211        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45212      if (element.hasDateElement()) {
45213        composeDateTime("date", element.getDateElement());
45214      }
45215      if (element.hasPublisherElement()) {
45216        composeString("publisher", element.getPublisherElement());
45217      }
45218      if (element.hasContact()) { 
45219        for (ContactDetail e : element.getContact()) 
45220          composeContactDetail("contact", e);
45221      }
45222      if (element.hasDescriptionElement()) {
45223        composeMarkdown("description", element.getDescriptionElement());
45224      }
45225      if (element.hasNote()) { 
45226        for (Annotation e : element.getNote()) 
45227          composeAnnotation("note", e);
45228      }
45229      if (element.hasUseContext()) { 
45230        for (UsageContext e : element.getUseContext()) 
45231          composeUsageContext("useContext", e);
45232      }
45233      if (element.hasJurisdiction()) { 
45234        for (CodeableConcept e : element.getJurisdiction()) 
45235          composeCodeableConcept("jurisdiction", e);
45236      }
45237      if (element.hasCopyrightElement()) {
45238        composeMarkdown("copyright", element.getCopyrightElement());
45239      }
45240      if (element.hasApprovalDateElement()) {
45241        composeDate("approvalDate", element.getApprovalDateElement());
45242      }
45243      if (element.hasLastReviewDateElement()) {
45244        composeDate("lastReviewDate", element.getLastReviewDateElement());
45245      }
45246      if (element.hasEffectivePeriod()) {
45247        composePeriod("effectivePeriod", element.getEffectivePeriod());
45248      }
45249      if (element.hasTopic()) { 
45250        for (CodeableConcept e : element.getTopic()) 
45251          composeCodeableConcept("topic", e);
45252      }
45253      if (element.hasAuthor()) { 
45254        for (ContactDetail e : element.getAuthor()) 
45255          composeContactDetail("author", e);
45256      }
45257      if (element.hasEditor()) { 
45258        for (ContactDetail e : element.getEditor()) 
45259          composeContactDetail("editor", e);
45260      }
45261      if (element.hasReviewer()) { 
45262        for (ContactDetail e : element.getReviewer()) 
45263          composeContactDetail("reviewer", e);
45264      }
45265      if (element.hasEndorser()) { 
45266        for (ContactDetail e : element.getEndorser()) 
45267          composeContactDetail("endorser", e);
45268      }
45269      if (element.hasRelatedArtifact()) { 
45270        for (RelatedArtifact e : element.getRelatedArtifact()) 
45271          composeRelatedArtifact("relatedArtifact", e);
45272      }
45273      if (element.hasSynthesisType()) {
45274        composeCodeableConcept("synthesisType", element.getSynthesisType());
45275      }
45276      if (element.hasStudyType()) {
45277        composeCodeableConcept("studyType", element.getStudyType());
45278      }
45279      if (element.hasPopulation()) {
45280        composeReference("population", element.getPopulation());
45281      }
45282      if (element.hasExposure()) {
45283        composeReference("exposure", element.getExposure());
45284      }
45285      if (element.hasOutcome()) {
45286        composeReference("outcome", element.getOutcome());
45287      }
45288      if (element.hasSampleSize()) {
45289        composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent("sampleSize", element.getSampleSize());
45290      }
45291      if (element.hasRiskEstimate()) {
45292        composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent("riskEstimate", element.getRiskEstimate());
45293      }
45294      if (element.hasCertainty()) { 
45295        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent e : element.getCertainty()) 
45296          composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent("certainty", e);
45297      }
45298  }
45299
45300  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent element) throws IOException {
45301    if (element != null) {
45302      composeElementAttributes(element);
45303      xml.enter(FHIR_NS, name);
45304      composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentElements(element);
45305      composeElementClose(element);
45306      xml.exit(FHIR_NS, name);
45307    }
45308  }
45309
45310  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent element) throws IOException {
45311      composeBackboneElementElements(element);
45312      if (element.hasDescriptionElement()) {
45313        composeString("description", element.getDescriptionElement());
45314      }
45315      if (element.hasNumberOfStudiesElement()) {
45316        composeInteger("numberOfStudies", element.getNumberOfStudiesElement());
45317      }
45318      if (element.hasNumberOfParticipantsElement()) {
45319        composeInteger("numberOfParticipants", element.getNumberOfParticipantsElement());
45320      }
45321  }
45322
45323  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent element) throws IOException {
45324    if (element != null) {
45325      composeElementAttributes(element);
45326      xml.enter(FHIR_NS, name);
45327      composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentElements(element);
45328      composeElementClose(element);
45329      xml.exit(FHIR_NS, name);
45330    }
45331  }
45332
45333  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent element) throws IOException {
45334      composeBackboneElementElements(element);
45335      if (element.hasDescriptionElement()) {
45336        composeString("description", element.getDescriptionElement());
45337      }
45338      if (element.hasType()) {
45339        composeCodeableConcept("type", element.getType());
45340      }
45341      if (element.hasValueElement()) {
45342        composeDecimal("value", element.getValueElement());
45343      }
45344      if (element.hasUnitOfMeasure()) {
45345        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
45346      }
45347      if (element.hasDenominatorCountElement()) {
45348        composeInteger("denominatorCount", element.getDenominatorCountElement());
45349      }
45350      if (element.hasNumeratorCountElement()) {
45351        composeInteger("numeratorCount", element.getNumeratorCountElement());
45352      }
45353      if (element.hasPrecisionEstimate()) { 
45354        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent e : element.getPrecisionEstimate()) 
45355          composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent("precisionEstimate", e);
45356      }
45357  }
45358
45359  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent element) throws IOException {
45360    if (element != null) {
45361      composeElementAttributes(element);
45362      xml.enter(FHIR_NS, name);
45363      composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentElements(element);
45364      composeElementClose(element);
45365      xml.exit(FHIR_NS, name);
45366    }
45367  }
45368
45369  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent element) throws IOException {
45370      composeBackboneElementElements(element);
45371      if (element.hasType()) {
45372        composeCodeableConcept("type", element.getType());
45373      }
45374      if (element.hasLevelElement()) {
45375        composeDecimal("level", element.getLevelElement());
45376      }
45377      if (element.hasFromElement()) {
45378        composeDecimal("from", element.getFromElement());
45379      }
45380      if (element.hasToElement()) {
45381        composeDecimal("to", element.getToElement());
45382      }
45383  }
45384
45385  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent element) throws IOException {
45386    if (element != null) {
45387      composeElementAttributes(element);
45388      xml.enter(FHIR_NS, name);
45389      composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentElements(element);
45390      composeElementClose(element);
45391      xml.exit(FHIR_NS, name);
45392    }
45393  }
45394
45395  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent element) throws IOException {
45396      composeBackboneElementElements(element);
45397      if (element.hasRating()) { 
45398        for (CodeableConcept e : element.getRating()) 
45399          composeCodeableConcept("rating", e);
45400      }
45401      if (element.hasNote()) { 
45402        for (Annotation e : element.getNote()) 
45403          composeAnnotation("note", e);
45404      }
45405      if (element.hasCertaintySubcomponent()) { 
45406        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent e : element.getCertaintySubcomponent()) 
45407          composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent("certaintySubcomponent", e);
45408      }
45409  }
45410
45411  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
45412    if (element != null) {
45413      composeElementAttributes(element);
45414      xml.enter(FHIR_NS, name);
45415      composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(element);
45416      composeElementClose(element);
45417      xml.exit(FHIR_NS, name);
45418    }
45419  }
45420
45421  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
45422      composeBackboneElementElements(element);
45423      if (element.hasType()) {
45424        composeCodeableConcept("type", element.getType());
45425      }
45426      if (element.hasRating()) { 
45427        for (CodeableConcept e : element.getRating()) 
45428          composeCodeableConcept("rating", e);
45429      }
45430      if (element.hasNote()) { 
45431        for (Annotation e : element.getNote()) 
45432          composeAnnotation("note", e);
45433      }
45434  }
45435
45436  protected void composeSchedule(String name, Schedule element) throws IOException {
45437    if (element != null) {
45438      composeDomainResourceAttributes(element);
45439      xml.enter(FHIR_NS, name);
45440      composeScheduleElements(element);
45441      composeElementClose(element);
45442      xml.exit(FHIR_NS, name);
45443    }
45444  }
45445
45446  protected void composeScheduleElements(Schedule element) throws IOException {
45447      composeDomainResourceElements(element);
45448      if (element.hasIdentifier()) { 
45449        for (Identifier e : element.getIdentifier()) 
45450          composeIdentifier("identifier", e);
45451      }
45452      if (element.hasActiveElement()) {
45453        composeBoolean("active", element.getActiveElement());
45454      }
45455      if (element.hasServiceCategory()) { 
45456        for (CodeableConcept e : element.getServiceCategory()) 
45457          composeCodeableConcept("serviceCategory", e);
45458      }
45459      if (element.hasServiceType()) { 
45460        for (CodeableConcept e : element.getServiceType()) 
45461          composeCodeableConcept("serviceType", e);
45462      }
45463      if (element.hasSpecialty()) { 
45464        for (CodeableConcept e : element.getSpecialty()) 
45465          composeCodeableConcept("specialty", e);
45466      }
45467      if (element.hasActor()) { 
45468        for (Reference e : element.getActor()) 
45469          composeReference("actor", e);
45470      }
45471      if (element.hasPlanningHorizon()) {
45472        composePeriod("planningHorizon", element.getPlanningHorizon());
45473      }
45474      if (element.hasCommentElement()) {
45475        composeString("comment", element.getCommentElement());
45476      }
45477  }
45478
45479  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
45480    if (element != null) {
45481      composeDomainResourceAttributes(element);
45482      xml.enter(FHIR_NS, name);
45483      composeSearchParameterElements(element);
45484      composeElementClose(element);
45485      xml.exit(FHIR_NS, name);
45486    }
45487  }
45488
45489  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
45490      composeDomainResourceElements(element);
45491      if (element.hasUrlElement()) {
45492        composeUri("url", element.getUrlElement());
45493      }
45494      if (element.hasVersionElement()) {
45495        composeString("version", element.getVersionElement());
45496      }
45497      if (element.hasNameElement()) {
45498        composeString("name", element.getNameElement());
45499      }
45500      if (element.hasDerivedFromElement()) {
45501        composeCanonical("derivedFrom", element.getDerivedFromElement());
45502      }
45503      if (element.hasStatusElement())
45504        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45505      if (element.hasExperimentalElement()) {
45506        composeBoolean("experimental", element.getExperimentalElement());
45507      }
45508      if (element.hasDateElement()) {
45509        composeDateTime("date", element.getDateElement());
45510      }
45511      if (element.hasPublisherElement()) {
45512        composeString("publisher", element.getPublisherElement());
45513      }
45514      if (element.hasContact()) { 
45515        for (ContactDetail e : element.getContact()) 
45516          composeContactDetail("contact", e);
45517      }
45518      if (element.hasDescriptionElement()) {
45519        composeMarkdown("description", element.getDescriptionElement());
45520      }
45521      if (element.hasUseContext()) { 
45522        for (UsageContext e : element.getUseContext()) 
45523          composeUsageContext("useContext", e);
45524      }
45525      if (element.hasJurisdiction()) { 
45526        for (CodeableConcept e : element.getJurisdiction()) 
45527          composeCodeableConcept("jurisdiction", e);
45528      }
45529      if (element.hasPurposeElement()) {
45530        composeMarkdown("purpose", element.getPurposeElement());
45531      }
45532      if (element.hasCodeElement()) {
45533        composeCode("code", element.getCodeElement());
45534      }
45535      if (element.hasBase()) { 
45536        for (CodeType e : element.getBase()) 
45537          composeCode("base", e);
45538      }
45539      if (element.hasTypeElement())
45540        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
45541      if (element.hasExpressionElement()) {
45542        composeString("expression", element.getExpressionElement());
45543      }
45544      if (element.hasXpathElement()) {
45545        composeString("xpath", element.getXpathElement());
45546      }
45547      if (element.hasXpathUsageElement())
45548        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
45549      if (element.hasTarget()) { 
45550        for (CodeType e : element.getTarget()) 
45551          composeCode("target", e);
45552      }
45553      if (element.hasMultipleOrElement()) {
45554        composeBoolean("multipleOr", element.getMultipleOrElement());
45555      }
45556      if (element.hasMultipleAndElement()) {
45557        composeBoolean("multipleAnd", element.getMultipleAndElement());
45558      }
45559        if (element.hasComparator()) 
45560          for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
45561            composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
45562        if (element.hasModifier()) 
45563          for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
45564            composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
45565      if (element.hasChain()) { 
45566        for (StringType e : element.getChain()) 
45567          composeString("chain", e);
45568      }
45569      if (element.hasComponent()) { 
45570        for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
45571          composeSearchParameterSearchParameterComponentComponent("component", e);
45572      }
45573  }
45574
45575  protected void composeSearchParameterSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
45576    if (element != null) {
45577      composeElementAttributes(element);
45578      xml.enter(FHIR_NS, name);
45579      composeSearchParameterSearchParameterComponentComponentElements(element);
45580      composeElementClose(element);
45581      xml.exit(FHIR_NS, name);
45582    }
45583  }
45584
45585  protected void composeSearchParameterSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
45586      composeBackboneElementElements(element);
45587      if (element.hasDefinitionElement()) {
45588        composeCanonical("definition", element.getDefinitionElement());
45589      }
45590      if (element.hasExpressionElement()) {
45591        composeString("expression", element.getExpressionElement());
45592      }
45593  }
45594
45595  protected void composeServiceRequest(String name, ServiceRequest element) throws IOException {
45596    if (element != null) {
45597      composeDomainResourceAttributes(element);
45598      xml.enter(FHIR_NS, name);
45599      composeServiceRequestElements(element);
45600      composeElementClose(element);
45601      xml.exit(FHIR_NS, name);
45602    }
45603  }
45604
45605  protected void composeServiceRequestElements(ServiceRequest element) throws IOException {
45606      composeDomainResourceElements(element);
45607      if (element.hasIdentifier()) { 
45608        for (Identifier e : element.getIdentifier()) 
45609          composeIdentifier("identifier", e);
45610      }
45611      if (element.hasInstantiatesCanonical()) { 
45612        for (CanonicalType e : element.getInstantiatesCanonical()) 
45613          composeCanonical("instantiatesCanonical", e);
45614      }
45615      if (element.hasInstantiatesUri()) { 
45616        for (UriType e : element.getInstantiatesUri()) 
45617          composeUri("instantiatesUri", e);
45618      }
45619      if (element.hasBasedOn()) { 
45620        for (Reference e : element.getBasedOn()) 
45621          composeReference("basedOn", e);
45622      }
45623      if (element.hasReplaces()) { 
45624        for (Reference e : element.getReplaces()) 
45625          composeReference("replaces", e);
45626      }
45627      if (element.hasRequisition()) {
45628        composeIdentifier("requisition", element.getRequisition());
45629      }
45630      if (element.hasStatusElement())
45631        composeEnumeration("status", element.getStatusElement(), new ServiceRequest.ServiceRequestStatusEnumFactory());
45632      if (element.hasIntentElement())
45633        composeEnumeration("intent", element.getIntentElement(), new ServiceRequest.ServiceRequestIntentEnumFactory());
45634      if (element.hasCategory()) { 
45635        for (CodeableConcept e : element.getCategory()) 
45636          composeCodeableConcept("category", e);
45637      }
45638      if (element.hasPriorityElement())
45639        composeEnumeration("priority", element.getPriorityElement(), new ServiceRequest.ServiceRequestPriorityEnumFactory());
45640      if (element.hasDoNotPerformElement()) {
45641        composeBoolean("doNotPerform", element.getDoNotPerformElement());
45642      }
45643      if (element.hasCode()) {
45644        composeCodeableConcept("code", element.getCode());
45645      }
45646      if (element.hasOrderDetail()) { 
45647        for (CodeableConcept e : element.getOrderDetail()) 
45648          composeCodeableConcept("orderDetail", e);
45649      }
45650      if (element.hasQuantity()) {
45651        composeType("quantity", element.getQuantity());
45652      }      if (element.hasSubject()) {
45653        composeReference("subject", element.getSubject());
45654      }
45655      if (element.hasEncounter()) {
45656        composeReference("encounter", element.getEncounter());
45657      }
45658      if (element.hasOccurrence()) {
45659        composeType("occurrence", element.getOccurrence());
45660      }      if (element.hasAsNeeded()) {
45661        composeType("asNeeded", element.getAsNeeded());
45662      }      if (element.hasAuthoredOnElement()) {
45663        composeDateTime("authoredOn", element.getAuthoredOnElement());
45664      }
45665      if (element.hasRequester()) {
45666        composeReference("requester", element.getRequester());
45667      }
45668      if (element.hasPerformerType()) {
45669        composeCodeableConcept("performerType", element.getPerformerType());
45670      }
45671      if (element.hasPerformer()) { 
45672        for (Reference e : element.getPerformer()) 
45673          composeReference("performer", e);
45674      }
45675      if (element.hasLocationCode()) { 
45676        for (CodeableConcept e : element.getLocationCode()) 
45677          composeCodeableConcept("locationCode", e);
45678      }
45679      if (element.hasLocationReference()) { 
45680        for (Reference e : element.getLocationReference()) 
45681          composeReference("locationReference", e);
45682      }
45683      if (element.hasReasonCode()) { 
45684        for (CodeableConcept e : element.getReasonCode()) 
45685          composeCodeableConcept("reasonCode", e);
45686      }
45687      if (element.hasReasonReference()) { 
45688        for (Reference e : element.getReasonReference()) 
45689          composeReference("reasonReference", e);
45690      }
45691      if (element.hasInsurance()) { 
45692        for (Reference e : element.getInsurance()) 
45693          composeReference("insurance", e);
45694      }
45695      if (element.hasSupportingInfo()) { 
45696        for (Reference e : element.getSupportingInfo()) 
45697          composeReference("supportingInfo", e);
45698      }
45699      if (element.hasSpecimen()) { 
45700        for (Reference e : element.getSpecimen()) 
45701          composeReference("specimen", e);
45702      }
45703      if (element.hasBodySite()) { 
45704        for (CodeableConcept e : element.getBodySite()) 
45705          composeCodeableConcept("bodySite", e);
45706      }
45707      if (element.hasNote()) { 
45708        for (Annotation e : element.getNote()) 
45709          composeAnnotation("note", e);
45710      }
45711      if (element.hasPatientInstructionElement()) {
45712        composeString("patientInstruction", element.getPatientInstructionElement());
45713      }
45714      if (element.hasRelevantHistory()) { 
45715        for (Reference e : element.getRelevantHistory()) 
45716          composeReference("relevantHistory", e);
45717      }
45718  }
45719
45720  protected void composeSlot(String name, Slot element) throws IOException {
45721    if (element != null) {
45722      composeDomainResourceAttributes(element);
45723      xml.enter(FHIR_NS, name);
45724      composeSlotElements(element);
45725      composeElementClose(element);
45726      xml.exit(FHIR_NS, name);
45727    }
45728  }
45729
45730  protected void composeSlotElements(Slot element) throws IOException {
45731      composeDomainResourceElements(element);
45732      if (element.hasIdentifier()) { 
45733        for (Identifier e : element.getIdentifier()) 
45734          composeIdentifier("identifier", e);
45735      }
45736      if (element.hasServiceCategory()) { 
45737        for (CodeableConcept e : element.getServiceCategory()) 
45738          composeCodeableConcept("serviceCategory", e);
45739      }
45740      if (element.hasServiceType()) { 
45741        for (CodeableConcept e : element.getServiceType()) 
45742          composeCodeableConcept("serviceType", e);
45743      }
45744      if (element.hasSpecialty()) { 
45745        for (CodeableConcept e : element.getSpecialty()) 
45746          composeCodeableConcept("specialty", e);
45747      }
45748      if (element.hasAppointmentType()) {
45749        composeCodeableConcept("appointmentType", element.getAppointmentType());
45750      }
45751      if (element.hasSchedule()) {
45752        composeReference("schedule", element.getSchedule());
45753      }
45754      if (element.hasStatusElement())
45755        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
45756      if (element.hasStartElement()) {
45757        composeInstant("start", element.getStartElement());
45758      }
45759      if (element.hasEndElement()) {
45760        composeInstant("end", element.getEndElement());
45761      }
45762      if (element.hasOverbookedElement()) {
45763        composeBoolean("overbooked", element.getOverbookedElement());
45764      }
45765      if (element.hasCommentElement()) {
45766        composeString("comment", element.getCommentElement());
45767      }
45768  }
45769
45770  protected void composeSpecimen(String name, Specimen element) throws IOException {
45771    if (element != null) {
45772      composeDomainResourceAttributes(element);
45773      xml.enter(FHIR_NS, name);
45774      composeSpecimenElements(element);
45775      composeElementClose(element);
45776      xml.exit(FHIR_NS, name);
45777    }
45778  }
45779
45780  protected void composeSpecimenElements(Specimen element) throws IOException {
45781      composeDomainResourceElements(element);
45782      if (element.hasIdentifier()) { 
45783        for (Identifier e : element.getIdentifier()) 
45784          composeIdentifier("identifier", e);
45785      }
45786      if (element.hasAccessionIdentifier()) {
45787        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
45788      }
45789      if (element.hasStatusElement())
45790        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
45791      if (element.hasType()) {
45792        composeCodeableConcept("type", element.getType());
45793      }
45794      if (element.hasSubject()) {
45795        composeReference("subject", element.getSubject());
45796      }
45797      if (element.hasReceivedTimeElement()) {
45798        composeDateTime("receivedTime", element.getReceivedTimeElement());
45799      }
45800      if (element.hasParent()) { 
45801        for (Reference e : element.getParent()) 
45802          composeReference("parent", e);
45803      }
45804      if (element.hasRequest()) { 
45805        for (Reference e : element.getRequest()) 
45806          composeReference("request", e);
45807      }
45808      if (element.hasCollection()) {
45809        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
45810      }
45811      if (element.hasProcessing()) { 
45812        for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
45813          composeSpecimenSpecimenProcessingComponent("processing", e);
45814      }
45815      if (element.hasContainer()) { 
45816        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
45817          composeSpecimenSpecimenContainerComponent("container", e);
45818      }
45819      if (element.hasCondition()) { 
45820        for (CodeableConcept e : element.getCondition()) 
45821          composeCodeableConcept("condition", e);
45822      }
45823      if (element.hasNote()) { 
45824        for (Annotation e : element.getNote()) 
45825          composeAnnotation("note", e);
45826      }
45827  }
45828
45829  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
45830    if (element != null) {
45831      composeElementAttributes(element);
45832      xml.enter(FHIR_NS, name);
45833      composeSpecimenSpecimenCollectionComponentElements(element);
45834      composeElementClose(element);
45835      xml.exit(FHIR_NS, name);
45836    }
45837  }
45838
45839  protected void composeSpecimenSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
45840      composeBackboneElementElements(element);
45841      if (element.hasCollector()) {
45842        composeReference("collector", element.getCollector());
45843      }
45844      if (element.hasCollected()) {
45845        composeType("collected", element.getCollected());
45846      }      if (element.hasDuration()) {
45847        composeDuration("duration", element.getDuration());
45848      }
45849      if (element.hasQuantity()) {
45850        composeQuantity("quantity", element.getQuantity());
45851      }
45852      if (element.hasMethod()) {
45853        composeCodeableConcept("method", element.getMethod());
45854      }
45855      if (element.hasBodySite()) {
45856        composeCodeableConcept("bodySite", element.getBodySite());
45857      }
45858      if (element.hasFastingStatus()) {
45859        composeType("fastingStatus", element.getFastingStatus());
45860      }  }
45861
45862  protected void composeSpecimenSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
45863    if (element != null) {
45864      composeElementAttributes(element);
45865      xml.enter(FHIR_NS, name);
45866      composeSpecimenSpecimenProcessingComponentElements(element);
45867      composeElementClose(element);
45868      xml.exit(FHIR_NS, name);
45869    }
45870  }
45871
45872  protected void composeSpecimenSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
45873      composeBackboneElementElements(element);
45874      if (element.hasDescriptionElement()) {
45875        composeString("description", element.getDescriptionElement());
45876      }
45877      if (element.hasProcedure()) {
45878        composeCodeableConcept("procedure", element.getProcedure());
45879      }
45880      if (element.hasAdditive()) { 
45881        for (Reference e : element.getAdditive()) 
45882          composeReference("additive", e);
45883      }
45884      if (element.hasTime()) {
45885        composeType("time", element.getTime());
45886      }  }
45887
45888  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
45889    if (element != null) {
45890      composeElementAttributes(element);
45891      xml.enter(FHIR_NS, name);
45892      composeSpecimenSpecimenContainerComponentElements(element);
45893      composeElementClose(element);
45894      xml.exit(FHIR_NS, name);
45895    }
45896  }
45897
45898  protected void composeSpecimenSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
45899      composeBackboneElementElements(element);
45900      if (element.hasIdentifier()) { 
45901        for (Identifier e : element.getIdentifier()) 
45902          composeIdentifier("identifier", e);
45903      }
45904      if (element.hasDescriptionElement()) {
45905        composeString("description", element.getDescriptionElement());
45906      }
45907      if (element.hasType()) {
45908        composeCodeableConcept("type", element.getType());
45909      }
45910      if (element.hasCapacity()) {
45911        composeQuantity("capacity", element.getCapacity());
45912      }
45913      if (element.hasSpecimenQuantity()) {
45914        composeQuantity("specimenQuantity", element.getSpecimenQuantity());
45915      }
45916      if (element.hasAdditive()) {
45917        composeType("additive", element.getAdditive());
45918      }  }
45919
45920  protected void composeSpecimenDefinition(String name, SpecimenDefinition element) throws IOException {
45921    if (element != null) {
45922      composeDomainResourceAttributes(element);
45923      xml.enter(FHIR_NS, name);
45924      composeSpecimenDefinitionElements(element);
45925      composeElementClose(element);
45926      xml.exit(FHIR_NS, name);
45927    }
45928  }
45929
45930  protected void composeSpecimenDefinitionElements(SpecimenDefinition element) throws IOException {
45931      composeDomainResourceElements(element);
45932      if (element.hasIdentifier()) {
45933        composeIdentifier("identifier", element.getIdentifier());
45934      }
45935      if (element.hasTypeCollected()) {
45936        composeCodeableConcept("typeCollected", element.getTypeCollected());
45937      }
45938      if (element.hasPatientPreparation()) { 
45939        for (CodeableConcept e : element.getPatientPreparation()) 
45940          composeCodeableConcept("patientPreparation", e);
45941      }
45942      if (element.hasTimeAspectElement()) {
45943        composeString("timeAspect", element.getTimeAspectElement());
45944      }
45945      if (element.hasCollection()) { 
45946        for (CodeableConcept e : element.getCollection()) 
45947          composeCodeableConcept("collection", e);
45948      }
45949      if (element.hasTypeTested()) { 
45950        for (SpecimenDefinition.SpecimenDefinitionTypeTestedComponent e : element.getTypeTested()) 
45951          composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent("typeTested", e);
45952      }
45953  }
45954
45955  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
45956    if (element != null) {
45957      composeElementAttributes(element);
45958      xml.enter(FHIR_NS, name);
45959      composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponentElements(element);
45960      composeElementClose(element);
45961      xml.exit(FHIR_NS, name);
45962    }
45963  }
45964
45965  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
45966      composeBackboneElementElements(element);
45967      if (element.hasIsDerivedElement()) {
45968        composeBoolean("isDerived", element.getIsDerivedElement());
45969      }
45970      if (element.hasType()) {
45971        composeCodeableConcept("type", element.getType());
45972      }
45973      if (element.hasPreferenceElement())
45974        composeEnumeration("preference", element.getPreferenceElement(), new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
45975      if (element.hasContainer()) {
45976        composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent("container", element.getContainer());
45977      }
45978      if (element.hasRequirementElement()) {
45979        composeString("requirement", element.getRequirementElement());
45980      }
45981      if (element.hasRetentionTime()) {
45982        composeDuration("retentionTime", element.getRetentionTime());
45983      }
45984      if (element.hasRejectionCriterion()) { 
45985        for (CodeableConcept e : element.getRejectionCriterion()) 
45986          composeCodeableConcept("rejectionCriterion", e);
45987      }
45988      if (element.hasHandling()) { 
45989        for (SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent e : element.getHandling()) 
45990          composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent("handling", e);
45991      }
45992  }
45993
45994  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
45995    if (element != null) {
45996      composeElementAttributes(element);
45997      xml.enter(FHIR_NS, name);
45998      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentElements(element);
45999      composeElementClose(element);
46000      xml.exit(FHIR_NS, name);
46001    }
46002  }
46003
46004  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
46005      composeBackboneElementElements(element);
46006      if (element.hasMaterial()) {
46007        composeCodeableConcept("material", element.getMaterial());
46008      }
46009      if (element.hasType()) {
46010        composeCodeableConcept("type", element.getType());
46011      }
46012      if (element.hasCap()) {
46013        composeCodeableConcept("cap", element.getCap());
46014      }
46015      if (element.hasDescriptionElement()) {
46016        composeString("description", element.getDescriptionElement());
46017      }
46018      if (element.hasCapacity()) {
46019        composeQuantity("capacity", element.getCapacity());
46020      }
46021      if (element.hasMinimumVolume()) {
46022        composeType("minimumVolume", element.getMinimumVolume());
46023      }      if (element.hasAdditive()) { 
46024        for (SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent e : element.getAdditive()) 
46025          composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent("additive", e);
46026      }
46027      if (element.hasPreparationElement()) {
46028        composeString("preparation", element.getPreparationElement());
46029      }
46030  }
46031
46032  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
46033    if (element != null) {
46034      composeElementAttributes(element);
46035      xml.enter(FHIR_NS, name);
46036      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(element);
46037      composeElementClose(element);
46038      xml.exit(FHIR_NS, name);
46039    }
46040  }
46041
46042  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
46043      composeBackboneElementElements(element);
46044      if (element.hasAdditive()) {
46045        composeType("additive", element.getAdditive());
46046      }  }
46047
46048  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
46049    if (element != null) {
46050      composeElementAttributes(element);
46051      xml.enter(FHIR_NS, name);
46052      composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentElements(element);
46053      composeElementClose(element);
46054      xml.exit(FHIR_NS, name);
46055    }
46056  }
46057
46058  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
46059      composeBackboneElementElements(element);
46060      if (element.hasTemperatureQualifier()) {
46061        composeCodeableConcept("temperatureQualifier", element.getTemperatureQualifier());
46062      }
46063      if (element.hasTemperatureRange()) {
46064        composeRange("temperatureRange", element.getTemperatureRange());
46065      }
46066      if (element.hasMaxDuration()) {
46067        composeDuration("maxDuration", element.getMaxDuration());
46068      }
46069      if (element.hasInstructionElement()) {
46070        composeString("instruction", element.getInstructionElement());
46071      }
46072  }
46073
46074  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
46075    if (element != null) {
46076      composeDomainResourceAttributes(element);
46077      xml.enter(FHIR_NS, name);
46078      composeStructureDefinitionElements(element);
46079      composeElementClose(element);
46080      xml.exit(FHIR_NS, name);
46081    }
46082  }
46083
46084  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
46085      composeDomainResourceElements(element);
46086      if (element.hasUrlElement()) {
46087        composeUri("url", element.getUrlElement());
46088      }
46089      if (element.hasIdentifier()) { 
46090        for (Identifier e : element.getIdentifier()) 
46091          composeIdentifier("identifier", e);
46092      }
46093      if (element.hasVersionElement()) {
46094        composeString("version", element.getVersionElement());
46095      }
46096      if (element.hasNameElement()) {
46097        composeString("name", element.getNameElement());
46098      }
46099      if (element.hasTitleElement()) {
46100        composeString("title", element.getTitleElement());
46101      }
46102      if (element.hasStatusElement())
46103        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46104      if (element.hasExperimentalElement()) {
46105        composeBoolean("experimental", element.getExperimentalElement());
46106      }
46107      if (element.hasDateElement()) {
46108        composeDateTime("date", element.getDateElement());
46109      }
46110      if (element.hasPublisherElement()) {
46111        composeString("publisher", element.getPublisherElement());
46112      }
46113      if (element.hasContact()) { 
46114        for (ContactDetail e : element.getContact()) 
46115          composeContactDetail("contact", e);
46116      }
46117      if (element.hasDescriptionElement()) {
46118        composeMarkdown("description", element.getDescriptionElement());
46119      }
46120      if (element.hasUseContext()) { 
46121        for (UsageContext e : element.getUseContext()) 
46122          composeUsageContext("useContext", e);
46123      }
46124      if (element.hasJurisdiction()) { 
46125        for (CodeableConcept e : element.getJurisdiction()) 
46126          composeCodeableConcept("jurisdiction", e);
46127      }
46128      if (element.hasPurposeElement()) {
46129        composeMarkdown("purpose", element.getPurposeElement());
46130      }
46131      if (element.hasCopyrightElement()) {
46132        composeMarkdown("copyright", element.getCopyrightElement());
46133      }
46134      if (element.hasKeyword()) { 
46135        for (Coding e : element.getKeyword()) 
46136          composeCoding("keyword", e);
46137      }
46138      if (element.hasFhirVersionElement())
46139        composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
46140      if (element.hasMapping()) { 
46141        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
46142          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
46143      }
46144      if (element.hasKindElement())
46145        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
46146      if (element.hasAbstractElement()) {
46147        composeBoolean("abstract", element.getAbstractElement());
46148      }
46149      if (element.hasContext()) { 
46150        for (StructureDefinition.StructureDefinitionContextComponent e : element.getContext()) 
46151          composeStructureDefinitionStructureDefinitionContextComponent("context", e);
46152      }
46153      if (element.hasContextInvariant()) { 
46154        for (StringType e : element.getContextInvariant()) 
46155          composeString("contextInvariant", e);
46156      }
46157      if (element.hasTypeElement()) {
46158        composeUri("type", element.getTypeElement());
46159      }
46160      if (element.hasBaseDefinitionElement()) {
46161        composeCanonical("baseDefinition", element.getBaseDefinitionElement());
46162      }
46163      if (element.hasDerivationElement())
46164        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
46165      if (element.hasSnapshot()) {
46166        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
46167      }
46168      if (element.hasDifferential()) {
46169        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
46170      }
46171  }
46172
46173  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
46174    if (element != null) {
46175      composeElementAttributes(element);
46176      xml.enter(FHIR_NS, name);
46177      composeStructureDefinitionStructureDefinitionMappingComponentElements(element);
46178      composeElementClose(element);
46179      xml.exit(FHIR_NS, name);
46180    }
46181  }
46182
46183  protected void composeStructureDefinitionStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
46184      composeBackboneElementElements(element);
46185      if (element.hasIdentityElement()) {
46186        composeId("identity", element.getIdentityElement());
46187      }
46188      if (element.hasUriElement()) {
46189        composeUri("uri", element.getUriElement());
46190      }
46191      if (element.hasNameElement()) {
46192        composeString("name", element.getNameElement());
46193      }
46194      if (element.hasCommentElement()) {
46195        composeString("comment", element.getCommentElement());
46196      }
46197  }
46198
46199  protected void composeStructureDefinitionStructureDefinitionContextComponent(String name, StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
46200    if (element != null) {
46201      composeElementAttributes(element);
46202      xml.enter(FHIR_NS, name);
46203      composeStructureDefinitionStructureDefinitionContextComponentElements(element);
46204      composeElementClose(element);
46205      xml.exit(FHIR_NS, name);
46206    }
46207  }
46208
46209  protected void composeStructureDefinitionStructureDefinitionContextComponentElements(StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
46210      composeBackboneElementElements(element);
46211      if (element.hasTypeElement())
46212        composeEnumeration("type", element.getTypeElement(), new StructureDefinition.ExtensionContextTypeEnumFactory());
46213      if (element.hasExpressionElement()) {
46214        composeString("expression", element.getExpressionElement());
46215      }
46216  }
46217
46218  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
46219    if (element != null) {
46220      composeElementAttributes(element);
46221      xml.enter(FHIR_NS, name);
46222      composeStructureDefinitionStructureDefinitionSnapshotComponentElements(element);
46223      composeElementClose(element);
46224      xml.exit(FHIR_NS, name);
46225    }
46226  }
46227
46228  protected void composeStructureDefinitionStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
46229      composeBackboneElementElements(element);
46230      if (element.hasElement()) { 
46231        for (ElementDefinition e : element.getElement()) 
46232          composeElementDefinition("element", e);
46233      }
46234  }
46235
46236  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
46237    if (element != null) {
46238      composeElementAttributes(element);
46239      xml.enter(FHIR_NS, name);
46240      composeStructureDefinitionStructureDefinitionDifferentialComponentElements(element);
46241      composeElementClose(element);
46242      xml.exit(FHIR_NS, name);
46243    }
46244  }
46245
46246  protected void composeStructureDefinitionStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
46247      composeBackboneElementElements(element);
46248      if (element.hasElement()) { 
46249        for (ElementDefinition e : element.getElement()) 
46250          composeElementDefinition("element", e);
46251      }
46252  }
46253
46254  protected void composeStructureMap(String name, StructureMap element) throws IOException {
46255    if (element != null) {
46256      composeDomainResourceAttributes(element);
46257      xml.enter(FHIR_NS, name);
46258      composeStructureMapElements(element);
46259      composeElementClose(element);
46260      xml.exit(FHIR_NS, name);
46261    }
46262  }
46263
46264  protected void composeStructureMapElements(StructureMap element) throws IOException {
46265      composeDomainResourceElements(element);
46266      if (element.hasUrlElement()) {
46267        composeUri("url", element.getUrlElement());
46268      }
46269      if (element.hasIdentifier()) { 
46270        for (Identifier e : element.getIdentifier()) 
46271          composeIdentifier("identifier", e);
46272      }
46273      if (element.hasVersionElement()) {
46274        composeString("version", element.getVersionElement());
46275      }
46276      if (element.hasNameElement()) {
46277        composeString("name", element.getNameElement());
46278      }
46279      if (element.hasTitleElement()) {
46280        composeString("title", element.getTitleElement());
46281      }
46282      if (element.hasStatusElement())
46283        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46284      if (element.hasExperimentalElement()) {
46285        composeBoolean("experimental", element.getExperimentalElement());
46286      }
46287      if (element.hasDateElement()) {
46288        composeDateTime("date", element.getDateElement());
46289      }
46290      if (element.hasPublisherElement()) {
46291        composeString("publisher", element.getPublisherElement());
46292      }
46293      if (element.hasContact()) { 
46294        for (ContactDetail e : element.getContact()) 
46295          composeContactDetail("contact", e);
46296      }
46297      if (element.hasDescriptionElement()) {
46298        composeMarkdown("description", element.getDescriptionElement());
46299      }
46300      if (element.hasUseContext()) { 
46301        for (UsageContext e : element.getUseContext()) 
46302          composeUsageContext("useContext", e);
46303      }
46304      if (element.hasJurisdiction()) { 
46305        for (CodeableConcept e : element.getJurisdiction()) 
46306          composeCodeableConcept("jurisdiction", e);
46307      }
46308      if (element.hasPurposeElement()) {
46309        composeMarkdown("purpose", element.getPurposeElement());
46310      }
46311      if (element.hasCopyrightElement()) {
46312        composeMarkdown("copyright", element.getCopyrightElement());
46313      }
46314      if (element.hasStructure()) { 
46315        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
46316          composeStructureMapStructureMapStructureComponent("structure", e);
46317      }
46318      if (element.hasImport()) { 
46319        for (CanonicalType e : element.getImport()) 
46320          composeCanonical("import", e);
46321      }
46322      if (element.hasGroup()) { 
46323        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
46324          composeStructureMapStructureMapGroupComponent("group", e);
46325      }
46326  }
46327
46328  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
46329    if (element != null) {
46330      composeElementAttributes(element);
46331      xml.enter(FHIR_NS, name);
46332      composeStructureMapStructureMapStructureComponentElements(element);
46333      composeElementClose(element);
46334      xml.exit(FHIR_NS, name);
46335    }
46336  }
46337
46338  protected void composeStructureMapStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
46339      composeBackboneElementElements(element);
46340      if (element.hasUrlElement()) {
46341        composeCanonical("url", element.getUrlElement());
46342      }
46343      if (element.hasModeElement())
46344        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
46345      if (element.hasAliasElement()) {
46346        composeString("alias", element.getAliasElement());
46347      }
46348      if (element.hasDocumentationElement()) {
46349        composeString("documentation", element.getDocumentationElement());
46350      }
46351  }
46352
46353  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
46354    if (element != null) {
46355      composeElementAttributes(element);
46356      xml.enter(FHIR_NS, name);
46357      composeStructureMapStructureMapGroupComponentElements(element);
46358      composeElementClose(element);
46359      xml.exit(FHIR_NS, name);
46360    }
46361  }
46362
46363  protected void composeStructureMapStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
46364      composeBackboneElementElements(element);
46365      if (element.hasNameElement()) {
46366        composeId("name", element.getNameElement());
46367      }
46368      if (element.hasExtendsElement()) {
46369        composeId("extends", element.getExtendsElement());
46370      }
46371      if (element.hasTypeModeElement())
46372        composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
46373      if (element.hasDocumentationElement()) {
46374        composeString("documentation", element.getDocumentationElement());
46375      }
46376      if (element.hasInput()) { 
46377        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
46378          composeStructureMapStructureMapGroupInputComponent("input", e);
46379      }
46380      if (element.hasRule()) { 
46381        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
46382          composeStructureMapStructureMapGroupRuleComponent("rule", e);
46383      }
46384  }
46385
46386  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
46387    if (element != null) {
46388      composeElementAttributes(element);
46389      xml.enter(FHIR_NS, name);
46390      composeStructureMapStructureMapGroupInputComponentElements(element);
46391      composeElementClose(element);
46392      xml.exit(FHIR_NS, name);
46393    }
46394  }
46395
46396  protected void composeStructureMapStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
46397      composeBackboneElementElements(element);
46398      if (element.hasNameElement()) {
46399        composeId("name", element.getNameElement());
46400      }
46401      if (element.hasTypeElement()) {
46402        composeString("type", element.getTypeElement());
46403      }
46404      if (element.hasModeElement())
46405        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
46406      if (element.hasDocumentationElement()) {
46407        composeString("documentation", element.getDocumentationElement());
46408      }
46409  }
46410
46411  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
46412    if (element != null) {
46413      composeElementAttributes(element);
46414      xml.enter(FHIR_NS, name);
46415      composeStructureMapStructureMapGroupRuleComponentElements(element);
46416      composeElementClose(element);
46417      xml.exit(FHIR_NS, name);
46418    }
46419  }
46420
46421  protected void composeStructureMapStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
46422      composeBackboneElementElements(element);
46423      if (element.hasNameElement()) {
46424        composeId("name", element.getNameElement());
46425      }
46426      if (element.hasSource()) { 
46427        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
46428          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
46429      }
46430      if (element.hasTarget()) { 
46431        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
46432          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
46433      }
46434      if (element.hasRule()) { 
46435        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
46436          composeStructureMapStructureMapGroupRuleComponent("rule", e);
46437      }
46438      if (element.hasDependent()) { 
46439        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
46440          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
46441      }
46442      if (element.hasDocumentationElement()) {
46443        composeString("documentation", element.getDocumentationElement());
46444      }
46445  }
46446
46447  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
46448    if (element != null) {
46449      composeElementAttributes(element);
46450      xml.enter(FHIR_NS, name);
46451      composeStructureMapStructureMapGroupRuleSourceComponentElements(element);
46452      composeElementClose(element);
46453      xml.exit(FHIR_NS, name);
46454    }
46455  }
46456
46457  protected void composeStructureMapStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
46458      composeBackboneElementElements(element);
46459      if (element.hasContextElement()) {
46460        composeId("context", element.getContextElement());
46461      }
46462      if (element.hasMinElement()) {
46463        composeInteger("min", element.getMinElement());
46464      }
46465      if (element.hasMaxElement()) {
46466        composeString("max", element.getMaxElement());
46467      }
46468      if (element.hasTypeElement()) {
46469        composeString("type", element.getTypeElement());
46470      }
46471      if (element.hasDefaultValue()) {
46472        composeType("defaultValue", element.getDefaultValue());
46473      }      if (element.hasElementElement()) {
46474        composeString("element", element.getElementElement());
46475      }
46476      if (element.hasListModeElement())
46477        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
46478      if (element.hasVariableElement()) {
46479        composeId("variable", element.getVariableElement());
46480      }
46481      if (element.hasConditionElement()) {
46482        composeString("condition", element.getConditionElement());
46483      }
46484      if (element.hasCheckElement()) {
46485        composeString("check", element.getCheckElement());
46486      }
46487      if (element.hasLogMessageElement()) {
46488        composeString("logMessage", element.getLogMessageElement());
46489      }
46490  }
46491
46492  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
46493    if (element != null) {
46494      composeElementAttributes(element);
46495      xml.enter(FHIR_NS, name);
46496      composeStructureMapStructureMapGroupRuleTargetComponentElements(element);
46497      composeElementClose(element);
46498      xml.exit(FHIR_NS, name);
46499    }
46500  }
46501
46502  protected void composeStructureMapStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
46503      composeBackboneElementElements(element);
46504      if (element.hasContextElement()) {
46505        composeId("context", element.getContextElement());
46506      }
46507      if (element.hasContextTypeElement())
46508        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
46509      if (element.hasElementElement()) {
46510        composeString("element", element.getElementElement());
46511      }
46512      if (element.hasVariableElement()) {
46513        composeId("variable", element.getVariableElement());
46514      }
46515        if (element.hasListMode()) 
46516          for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
46517            composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
46518      if (element.hasListRuleIdElement()) {
46519        composeId("listRuleId", element.getListRuleIdElement());
46520      }
46521      if (element.hasTransformElement())
46522        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
46523      if (element.hasParameter()) { 
46524        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
46525          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
46526      }
46527  }
46528
46529  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
46530    if (element != null) {
46531      composeElementAttributes(element);
46532      xml.enter(FHIR_NS, name);
46533      composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(element);
46534      composeElementClose(element);
46535      xml.exit(FHIR_NS, name);
46536    }
46537  }
46538
46539  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
46540      composeBackboneElementElements(element);
46541      if (element.hasValue()) {
46542        composeType("value", element.getValue());
46543      }  }
46544
46545  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
46546    if (element != null) {
46547      composeElementAttributes(element);
46548      xml.enter(FHIR_NS, name);
46549      composeStructureMapStructureMapGroupRuleDependentComponentElements(element);
46550      composeElementClose(element);
46551      xml.exit(FHIR_NS, name);
46552    }
46553  }
46554
46555  protected void composeStructureMapStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
46556      composeBackboneElementElements(element);
46557      if (element.hasNameElement()) {
46558        composeId("name", element.getNameElement());
46559      }
46560      if (element.hasVariable()) { 
46561        for (StringType e : element.getVariable()) 
46562          composeString("variable", e);
46563      }
46564  }
46565
46566  protected void composeSubscription(String name, Subscription element) throws IOException {
46567    if (element != null) {
46568      composeDomainResourceAttributes(element);
46569      xml.enter(FHIR_NS, name);
46570      composeSubscriptionElements(element);
46571      composeElementClose(element);
46572      xml.exit(FHIR_NS, name);
46573    }
46574  }
46575
46576  protected void composeSubscriptionElements(Subscription element) throws IOException {
46577      composeDomainResourceElements(element);
46578      if (element.hasStatusElement())
46579        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
46580      if (element.hasContact()) { 
46581        for (ContactPoint e : element.getContact()) 
46582          composeContactPoint("contact", e);
46583      }
46584      if (element.hasEndElement()) {
46585        composeInstant("end", element.getEndElement());
46586      }
46587      if (element.hasReasonElement()) {
46588        composeString("reason", element.getReasonElement());
46589      }
46590      if (element.hasCriteriaElement()) {
46591        composeString("criteria", element.getCriteriaElement());
46592      }
46593      if (element.hasErrorElement()) {
46594        composeString("error", element.getErrorElement());
46595      }
46596      if (element.hasChannel()) {
46597        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
46598      }
46599  }
46600
46601  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
46602    if (element != null) {
46603      composeElementAttributes(element);
46604      xml.enter(FHIR_NS, name);
46605      composeSubscriptionSubscriptionChannelComponentElements(element);
46606      composeElementClose(element);
46607      xml.exit(FHIR_NS, name);
46608    }
46609  }
46610
46611  protected void composeSubscriptionSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
46612      composeBackboneElementElements(element);
46613      if (element.hasTypeElement())
46614        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
46615      if (element.hasEndpointElement()) {
46616        composeUrl("endpoint", element.getEndpointElement());
46617      }
46618      if (element.hasPayloadElement()) {
46619        composeCode("payload", element.getPayloadElement());
46620      }
46621      if (element.hasHeader()) { 
46622        for (StringType e : element.getHeader()) 
46623          composeString("header", e);
46624      }
46625  }
46626
46627  protected void composeSubstance(String name, Substance element) throws IOException {
46628    if (element != null) {
46629      composeDomainResourceAttributes(element);
46630      xml.enter(FHIR_NS, name);
46631      composeSubstanceElements(element);
46632      composeElementClose(element);
46633      xml.exit(FHIR_NS, name);
46634    }
46635  }
46636
46637  protected void composeSubstanceElements(Substance element) throws IOException {
46638      composeDomainResourceElements(element);
46639      if (element.hasIdentifier()) { 
46640        for (Identifier e : element.getIdentifier()) 
46641          composeIdentifier("identifier", e);
46642      }
46643      if (element.hasStatusElement())
46644        composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
46645      if (element.hasCategory()) { 
46646        for (CodeableConcept e : element.getCategory()) 
46647          composeCodeableConcept("category", e);
46648      }
46649      if (element.hasCode()) {
46650        composeCodeableConcept("code", element.getCode());
46651      }
46652      if (element.hasDescriptionElement()) {
46653        composeString("description", element.getDescriptionElement());
46654      }
46655      if (element.hasInstance()) { 
46656        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
46657          composeSubstanceSubstanceInstanceComponent("instance", e);
46658      }
46659      if (element.hasIngredient()) { 
46660        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
46661          composeSubstanceSubstanceIngredientComponent("ingredient", e);
46662      }
46663  }
46664
46665  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
46666    if (element != null) {
46667      composeElementAttributes(element);
46668      xml.enter(FHIR_NS, name);
46669      composeSubstanceSubstanceInstanceComponentElements(element);
46670      composeElementClose(element);
46671      xml.exit(FHIR_NS, name);
46672    }
46673  }
46674
46675  protected void composeSubstanceSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
46676      composeBackboneElementElements(element);
46677      if (element.hasIdentifier()) {
46678        composeIdentifier("identifier", element.getIdentifier());
46679      }
46680      if (element.hasExpiryElement()) {
46681        composeDateTime("expiry", element.getExpiryElement());
46682      }
46683      if (element.hasQuantity()) {
46684        composeQuantity("quantity", element.getQuantity());
46685      }
46686  }
46687
46688  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
46689    if (element != null) {
46690      composeElementAttributes(element);
46691      xml.enter(FHIR_NS, name);
46692      composeSubstanceSubstanceIngredientComponentElements(element);
46693      composeElementClose(element);
46694      xml.exit(FHIR_NS, name);
46695    }
46696  }
46697
46698  protected void composeSubstanceSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
46699      composeBackboneElementElements(element);
46700      if (element.hasQuantity()) {
46701        composeRatio("quantity", element.getQuantity());
46702      }
46703      if (element.hasSubstance()) {
46704        composeType("substance", element.getSubstance());
46705      }  }
46706
46707  protected void composeSubstanceNucleicAcid(String name, SubstanceNucleicAcid element) throws IOException {
46708    if (element != null) {
46709      composeDomainResourceAttributes(element);
46710      xml.enter(FHIR_NS, name);
46711      composeSubstanceNucleicAcidElements(element);
46712      composeElementClose(element);
46713      xml.exit(FHIR_NS, name);
46714    }
46715  }
46716
46717  protected void composeSubstanceNucleicAcidElements(SubstanceNucleicAcid element) throws IOException {
46718      composeDomainResourceElements(element);
46719      if (element.hasSequenceType()) {
46720        composeCodeableConcept("sequenceType", element.getSequenceType());
46721      }
46722      if (element.hasNumberOfSubunitsElement()) {
46723        composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
46724      }
46725      if (element.hasAreaOfHybridisationElement()) {
46726        composeString("areaOfHybridisation", element.getAreaOfHybridisationElement());
46727      }
46728      if (element.hasOligoNucleotideType()) {
46729        composeCodeableConcept("oligoNucleotideType", element.getOligoNucleotideType());
46730      }
46731      if (element.hasSubunit()) { 
46732        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent e : element.getSubunit()) 
46733          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent("subunit", e);
46734      }
46735  }
46736
46737  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
46738    if (element != null) {
46739      composeElementAttributes(element);
46740      xml.enter(FHIR_NS, name);
46741      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentElements(element);
46742      composeElementClose(element);
46743      xml.exit(FHIR_NS, name);
46744    }
46745  }
46746
46747  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
46748      composeBackboneElementElements(element);
46749      if (element.hasSubunitElement()) {
46750        composeInteger("subunit", element.getSubunitElement());
46751      }
46752      if (element.hasSequenceElement()) {
46753        composeString("sequence", element.getSequenceElement());
46754      }
46755      if (element.hasLengthElement()) {
46756        composeInteger("length", element.getLengthElement());
46757      }
46758      if (element.hasSequenceAttachment()) {
46759        composeAttachment("sequenceAttachment", element.getSequenceAttachment());
46760      }
46761      if (element.hasFivePrime()) {
46762        composeCodeableConcept("fivePrime", element.getFivePrime());
46763      }
46764      if (element.hasThreePrime()) {
46765        composeCodeableConcept("threePrime", element.getThreePrime());
46766      }
46767      if (element.hasLinkage()) { 
46768        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent e : element.getLinkage()) 
46769          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent("linkage", e);
46770      }
46771      if (element.hasSugar()) { 
46772        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent e : element.getSugar()) 
46773          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent("sugar", e);
46774      }
46775  }
46776
46777  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
46778    if (element != null) {
46779      composeElementAttributes(element);
46780      xml.enter(FHIR_NS, name);
46781      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentElements(element);
46782      composeElementClose(element);
46783      xml.exit(FHIR_NS, name);
46784    }
46785  }
46786
46787  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
46788      composeBackboneElementElements(element);
46789      if (element.hasConnectivityElement()) {
46790        composeString("connectivity", element.getConnectivityElement());
46791      }
46792      if (element.hasIdentifier()) {
46793        composeIdentifier("identifier", element.getIdentifier());
46794      }
46795      if (element.hasNameElement()) {
46796        composeString("name", element.getNameElement());
46797      }
46798      if (element.hasResidueSiteElement()) {
46799        composeString("residueSite", element.getResidueSiteElement());
46800      }
46801  }
46802
46803  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
46804    if (element != null) {
46805      composeElementAttributes(element);
46806      xml.enter(FHIR_NS, name);
46807      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentElements(element);
46808      composeElementClose(element);
46809      xml.exit(FHIR_NS, name);
46810    }
46811  }
46812
46813  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
46814      composeBackboneElementElements(element);
46815      if (element.hasIdentifier()) {
46816        composeIdentifier("identifier", element.getIdentifier());
46817      }
46818      if (element.hasNameElement()) {
46819        composeString("name", element.getNameElement());
46820      }
46821      if (element.hasResidueSiteElement()) {
46822        composeString("residueSite", element.getResidueSiteElement());
46823      }
46824  }
46825
46826  protected void composeSubstancePolymer(String name, SubstancePolymer element) throws IOException {
46827    if (element != null) {
46828      composeDomainResourceAttributes(element);
46829      xml.enter(FHIR_NS, name);
46830      composeSubstancePolymerElements(element);
46831      composeElementClose(element);
46832      xml.exit(FHIR_NS, name);
46833    }
46834  }
46835
46836  protected void composeSubstancePolymerElements(SubstancePolymer element) throws IOException {
46837      composeDomainResourceElements(element);
46838      if (element.hasClass_()) {
46839        composeCodeableConcept("class", element.getClass_());
46840      }
46841      if (element.hasGeometry()) {
46842        composeCodeableConcept("geometry", element.getGeometry());
46843      }
46844      if (element.hasCopolymerConnectivity()) { 
46845        for (CodeableConcept e : element.getCopolymerConnectivity()) 
46846          composeCodeableConcept("copolymerConnectivity", e);
46847      }
46848      if (element.hasModification()) { 
46849        for (StringType e : element.getModification()) 
46850          composeString("modification", e);
46851      }
46852      if (element.hasMonomerSet()) { 
46853        for (SubstancePolymer.SubstancePolymerMonomerSetComponent e : element.getMonomerSet()) 
46854          composeSubstancePolymerSubstancePolymerMonomerSetComponent("monomerSet", e);
46855      }
46856      if (element.hasRepeat()) { 
46857        for (SubstancePolymer.SubstancePolymerRepeatComponent e : element.getRepeat()) 
46858          composeSubstancePolymerSubstancePolymerRepeatComponent("repeat", e);
46859      }
46860  }
46861
46862  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
46863    if (element != null) {
46864      composeElementAttributes(element);
46865      xml.enter(FHIR_NS, name);
46866      composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(element);
46867      composeElementClose(element);
46868      xml.exit(FHIR_NS, name);
46869    }
46870  }
46871
46872  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
46873      composeBackboneElementElements(element);
46874      if (element.hasRatioType()) {
46875        composeCodeableConcept("ratioType", element.getRatioType());
46876      }
46877      if (element.hasStartingMaterial()) { 
46878        for (SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent e : element.getStartingMaterial()) 
46879          composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent("startingMaterial", e);
46880      }
46881  }
46882
46883  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
46884    if (element != null) {
46885      composeElementAttributes(element);
46886      xml.enter(FHIR_NS, name);
46887      composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(element);
46888      composeElementClose(element);
46889      xml.exit(FHIR_NS, name);
46890    }
46891  }
46892
46893  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
46894      composeBackboneElementElements(element);
46895      if (element.hasMaterial()) {
46896        composeCodeableConcept("material", element.getMaterial());
46897      }
46898      if (element.hasType()) {
46899        composeCodeableConcept("type", element.getType());
46900      }
46901      if (element.hasIsDefiningElement()) {
46902        composeBoolean("isDefining", element.getIsDefiningElement());
46903      }
46904      if (element.hasAmount()) {
46905        composeSubstanceAmount("amount", element.getAmount());
46906      }
46907  }
46908
46909  protected void composeSubstancePolymerSubstancePolymerRepeatComponent(String name, SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
46910    if (element != null) {
46911      composeElementAttributes(element);
46912      xml.enter(FHIR_NS, name);
46913      composeSubstancePolymerSubstancePolymerRepeatComponentElements(element);
46914      composeElementClose(element);
46915      xml.exit(FHIR_NS, name);
46916    }
46917  }
46918
46919  protected void composeSubstancePolymerSubstancePolymerRepeatComponentElements(SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
46920      composeBackboneElementElements(element);
46921      if (element.hasNumberOfUnitsElement()) {
46922        composeInteger("numberOfUnits", element.getNumberOfUnitsElement());
46923      }
46924      if (element.hasAverageMolecularFormulaElement()) {
46925        composeString("averageMolecularFormula", element.getAverageMolecularFormulaElement());
46926      }
46927      if (element.hasRepeatUnitAmountType()) {
46928        composeCodeableConcept("repeatUnitAmountType", element.getRepeatUnitAmountType());
46929      }
46930      if (element.hasRepeatUnit()) { 
46931        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent e : element.getRepeatUnit()) 
46932          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent("repeatUnit", e);
46933      }
46934  }
46935
46936  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
46937    if (element != null) {
46938      composeElementAttributes(element);
46939      xml.enter(FHIR_NS, name);
46940      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(element);
46941      composeElementClose(element);
46942      xml.exit(FHIR_NS, name);
46943    }
46944  }
46945
46946  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
46947      composeBackboneElementElements(element);
46948      if (element.hasOrientationOfPolymerisation()) {
46949        composeCodeableConcept("orientationOfPolymerisation", element.getOrientationOfPolymerisation());
46950      }
46951      if (element.hasRepeatUnitElement()) {
46952        composeString("repeatUnit", element.getRepeatUnitElement());
46953      }
46954      if (element.hasAmount()) {
46955        composeSubstanceAmount("amount", element.getAmount());
46956      }
46957      if (element.hasDegreeOfPolymerisation()) { 
46958        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent e : element.getDegreeOfPolymerisation()) 
46959          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent("degreeOfPolymerisation", e);
46960      }
46961      if (element.hasStructuralRepresentation()) { 
46962        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
46963          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent("structuralRepresentation", e);
46964      }
46965  }
46966
46967  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
46968    if (element != null) {
46969      composeElementAttributes(element);
46970      xml.enter(FHIR_NS, name);
46971      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(element);
46972      composeElementClose(element);
46973      xml.exit(FHIR_NS, name);
46974    }
46975  }
46976
46977  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
46978      composeBackboneElementElements(element);
46979      if (element.hasDegree()) {
46980        composeCodeableConcept("degree", element.getDegree());
46981      }
46982      if (element.hasAmount()) {
46983        composeSubstanceAmount("amount", element.getAmount());
46984      }
46985  }
46986
46987  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
46988    if (element != null) {
46989      composeElementAttributes(element);
46990      xml.enter(FHIR_NS, name);
46991      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(element);
46992      composeElementClose(element);
46993      xml.exit(FHIR_NS, name);
46994    }
46995  }
46996
46997  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
46998      composeBackboneElementElements(element);
46999      if (element.hasType()) {
47000        composeCodeableConcept("type", element.getType());
47001      }
47002      if (element.hasRepresentationElement()) {
47003        composeString("representation", element.getRepresentationElement());
47004      }
47005      if (element.hasAttachment()) {
47006        composeAttachment("attachment", element.getAttachment());
47007      }
47008  }
47009
47010  protected void composeSubstanceProtein(String name, SubstanceProtein element) throws IOException {
47011    if (element != null) {
47012      composeDomainResourceAttributes(element);
47013      xml.enter(FHIR_NS, name);
47014      composeSubstanceProteinElements(element);
47015      composeElementClose(element);
47016      xml.exit(FHIR_NS, name);
47017    }
47018  }
47019
47020  protected void composeSubstanceProteinElements(SubstanceProtein element) throws IOException {
47021      composeDomainResourceElements(element);
47022      if (element.hasSequenceType()) {
47023        composeCodeableConcept("sequenceType", element.getSequenceType());
47024      }
47025      if (element.hasNumberOfSubunitsElement()) {
47026        composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
47027      }
47028      if (element.hasDisulfideLinkage()) { 
47029        for (StringType e : element.getDisulfideLinkage()) 
47030          composeString("disulfideLinkage", e);
47031      }
47032      if (element.hasSubunit()) { 
47033        for (SubstanceProtein.SubstanceProteinSubunitComponent e : element.getSubunit()) 
47034          composeSubstanceProteinSubstanceProteinSubunitComponent("subunit", e);
47035      }
47036  }
47037
47038  protected void composeSubstanceProteinSubstanceProteinSubunitComponent(String name, SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
47039    if (element != null) {
47040      composeElementAttributes(element);
47041      xml.enter(FHIR_NS, name);
47042      composeSubstanceProteinSubstanceProteinSubunitComponentElements(element);
47043      composeElementClose(element);
47044      xml.exit(FHIR_NS, name);
47045    }
47046  }
47047
47048  protected void composeSubstanceProteinSubstanceProteinSubunitComponentElements(SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
47049      composeBackboneElementElements(element);
47050      if (element.hasSubunitElement()) {
47051        composeInteger("subunit", element.getSubunitElement());
47052      }
47053      if (element.hasSequenceElement()) {
47054        composeString("sequence", element.getSequenceElement());
47055      }
47056      if (element.hasLengthElement()) {
47057        composeInteger("length", element.getLengthElement());
47058      }
47059      if (element.hasSequenceAttachment()) {
47060        composeAttachment("sequenceAttachment", element.getSequenceAttachment());
47061      }
47062      if (element.hasNTerminalModificationId()) {
47063        composeIdentifier("nTerminalModificationId", element.getNTerminalModificationId());
47064      }
47065      if (element.hasNTerminalModificationElement()) {
47066        composeString("nTerminalModification", element.getNTerminalModificationElement());
47067      }
47068      if (element.hasCTerminalModificationId()) {
47069        composeIdentifier("cTerminalModificationId", element.getCTerminalModificationId());
47070      }
47071      if (element.hasCTerminalModificationElement()) {
47072        composeString("cTerminalModification", element.getCTerminalModificationElement());
47073      }
47074  }
47075
47076  protected void composeSubstanceReferenceInformation(String name, SubstanceReferenceInformation element) throws IOException {
47077    if (element != null) {
47078      composeDomainResourceAttributes(element);
47079      xml.enter(FHIR_NS, name);
47080      composeSubstanceReferenceInformationElements(element);
47081      composeElementClose(element);
47082      xml.exit(FHIR_NS, name);
47083    }
47084  }
47085
47086  protected void composeSubstanceReferenceInformationElements(SubstanceReferenceInformation element) throws IOException {
47087      composeDomainResourceElements(element);
47088      if (element.hasCommentElement()) {
47089        composeString("comment", element.getCommentElement());
47090      }
47091      if (element.hasGene()) { 
47092        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent e : element.getGene()) 
47093          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent("gene", e);
47094      }
47095      if (element.hasGeneElement()) { 
47096        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent e : element.getGeneElement()) 
47097          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent("geneElement", e);
47098      }
47099      if (element.hasClassification()) { 
47100        for (SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent e : element.getClassification()) 
47101          composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent("classification", e);
47102      }
47103      if (element.hasTarget()) { 
47104        for (SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent e : element.getTarget()) 
47105          composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent("target", e);
47106      }
47107  }
47108
47109  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
47110    if (element != null) {
47111      composeElementAttributes(element);
47112      xml.enter(FHIR_NS, name);
47113      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(element);
47114      composeElementClose(element);
47115      xml.exit(FHIR_NS, name);
47116    }
47117  }
47118
47119  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
47120      composeBackboneElementElements(element);
47121      if (element.hasGeneSequenceOrigin()) {
47122        composeCodeableConcept("geneSequenceOrigin", element.getGeneSequenceOrigin());
47123      }
47124      if (element.hasGene()) {
47125        composeCodeableConcept("gene", element.getGene());
47126      }
47127      if (element.hasSource()) { 
47128        for (Reference e : element.getSource()) 
47129          composeReference("source", e);
47130      }
47131  }
47132
47133  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
47134    if (element != null) {
47135      composeElementAttributes(element);
47136      xml.enter(FHIR_NS, name);
47137      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(element);
47138      composeElementClose(element);
47139      xml.exit(FHIR_NS, name);
47140    }
47141  }
47142
47143  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
47144      composeBackboneElementElements(element);
47145      if (element.hasType()) {
47146        composeCodeableConcept("type", element.getType());
47147      }
47148      if (element.hasElement()) {
47149        composeIdentifier("element", element.getElement());
47150      }
47151      if (element.hasSource()) { 
47152        for (Reference e : element.getSource()) 
47153          composeReference("source", e);
47154      }
47155  }
47156
47157  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
47158    if (element != null) {
47159      composeElementAttributes(element);
47160      xml.enter(FHIR_NS, name);
47161      composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(element);
47162      composeElementClose(element);
47163      xml.exit(FHIR_NS, name);
47164    }
47165  }
47166
47167  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
47168      composeBackboneElementElements(element);
47169      if (element.hasDomain()) {
47170        composeCodeableConcept("domain", element.getDomain());
47171      }
47172      if (element.hasClassification()) {
47173        composeCodeableConcept("classification", element.getClassification());
47174      }
47175      if (element.hasSubtype()) { 
47176        for (CodeableConcept e : element.getSubtype()) 
47177          composeCodeableConcept("subtype", e);
47178      }
47179      if (element.hasSource()) { 
47180        for (Reference e : element.getSource()) 
47181          composeReference("source", e);
47182      }
47183  }
47184
47185  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
47186    if (element != null) {
47187      composeElementAttributes(element);
47188      xml.enter(FHIR_NS, name);
47189      composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(element);
47190      composeElementClose(element);
47191      xml.exit(FHIR_NS, name);
47192    }
47193  }
47194
47195  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
47196      composeBackboneElementElements(element);
47197      if (element.hasTarget()) {
47198        composeIdentifier("target", element.getTarget());
47199      }
47200      if (element.hasType()) {
47201        composeCodeableConcept("type", element.getType());
47202      }
47203      if (element.hasInteraction()) {
47204        composeCodeableConcept("interaction", element.getInteraction());
47205      }
47206      if (element.hasOrganism()) {
47207        composeCodeableConcept("organism", element.getOrganism());
47208      }
47209      if (element.hasOrganismType()) {
47210        composeCodeableConcept("organismType", element.getOrganismType());
47211      }
47212      if (element.hasAmount()) {
47213        composeType("amount", element.getAmount());
47214      }      if (element.hasAmountType()) {
47215        composeCodeableConcept("amountType", element.getAmountType());
47216      }
47217      if (element.hasSource()) { 
47218        for (Reference e : element.getSource()) 
47219          composeReference("source", e);
47220      }
47221  }
47222
47223  protected void composeSubstanceSourceMaterial(String name, SubstanceSourceMaterial element) throws IOException {
47224    if (element != null) {
47225      composeDomainResourceAttributes(element);
47226      xml.enter(FHIR_NS, name);
47227      composeSubstanceSourceMaterialElements(element);
47228      composeElementClose(element);
47229      xml.exit(FHIR_NS, name);
47230    }
47231  }
47232
47233  protected void composeSubstanceSourceMaterialElements(SubstanceSourceMaterial element) throws IOException {
47234      composeDomainResourceElements(element);
47235      if (element.hasSourceMaterialClass()) {
47236        composeCodeableConcept("sourceMaterialClass", element.getSourceMaterialClass());
47237      }
47238      if (element.hasSourceMaterialType()) {
47239        composeCodeableConcept("sourceMaterialType", element.getSourceMaterialType());
47240      }
47241      if (element.hasSourceMaterialState()) {
47242        composeCodeableConcept("sourceMaterialState", element.getSourceMaterialState());
47243      }
47244      if (element.hasOrganismId()) {
47245        composeIdentifier("organismId", element.getOrganismId());
47246      }
47247      if (element.hasOrganismNameElement()) {
47248        composeString("organismName", element.getOrganismNameElement());
47249      }
47250      if (element.hasParentSubstanceId()) { 
47251        for (Identifier e : element.getParentSubstanceId()) 
47252          composeIdentifier("parentSubstanceId", e);
47253      }
47254      if (element.hasParentSubstanceName()) { 
47255        for (StringType e : element.getParentSubstanceName()) 
47256          composeString("parentSubstanceName", e);
47257      }
47258      if (element.hasCountryOfOrigin()) { 
47259        for (CodeableConcept e : element.getCountryOfOrigin()) 
47260          composeCodeableConcept("countryOfOrigin", e);
47261      }
47262      if (element.hasGeographicalLocation()) { 
47263        for (StringType e : element.getGeographicalLocation()) 
47264          composeString("geographicalLocation", e);
47265      }
47266      if (element.hasDevelopmentStage()) {
47267        composeCodeableConcept("developmentStage", element.getDevelopmentStage());
47268      }
47269      if (element.hasFractionDescription()) { 
47270        for (SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent e : element.getFractionDescription()) 
47271          composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent("fractionDescription", e);
47272      }
47273      if (element.hasOrganism()) {
47274        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent("organism", element.getOrganism());
47275      }
47276      if (element.hasPartDescription()) { 
47277        for (SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent e : element.getPartDescription()) 
47278          composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent("partDescription", e);
47279      }
47280  }
47281
47282  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
47283    if (element != null) {
47284      composeElementAttributes(element);
47285      xml.enter(FHIR_NS, name);
47286      composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentElements(element);
47287      composeElementClose(element);
47288      xml.exit(FHIR_NS, name);
47289    }
47290  }
47291
47292  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
47293      composeBackboneElementElements(element);
47294      if (element.hasFractionElement()) {
47295        composeString("fraction", element.getFractionElement());
47296      }
47297      if (element.hasMaterialType()) {
47298        composeCodeableConcept("materialType", element.getMaterialType());
47299      }
47300  }
47301
47302  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
47303    if (element != null) {
47304      composeElementAttributes(element);
47305      xml.enter(FHIR_NS, name);
47306      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentElements(element);
47307      composeElementClose(element);
47308      xml.exit(FHIR_NS, name);
47309    }
47310  }
47311
47312  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
47313      composeBackboneElementElements(element);
47314      if (element.hasFamily()) {
47315        composeCodeableConcept("family", element.getFamily());
47316      }
47317      if (element.hasGenus()) {
47318        composeCodeableConcept("genus", element.getGenus());
47319      }
47320      if (element.hasSpecies()) {
47321        composeCodeableConcept("species", element.getSpecies());
47322      }
47323      if (element.hasIntraspecificType()) {
47324        composeCodeableConcept("intraspecificType", element.getIntraspecificType());
47325      }
47326      if (element.hasIntraspecificDescriptionElement()) {
47327        composeString("intraspecificDescription", element.getIntraspecificDescriptionElement());
47328      }
47329      if (element.hasAuthor()) { 
47330        for (SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent e : element.getAuthor()) 
47331          composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent("author", e);
47332      }
47333      if (element.hasHybrid()) {
47334        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent("hybrid", element.getHybrid());
47335      }
47336      if (element.hasOrganismGeneral()) {
47337        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent("organismGeneral", element.getOrganismGeneral());
47338      }
47339  }
47340
47341  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
47342    if (element != null) {
47343      composeElementAttributes(element);
47344      xml.enter(FHIR_NS, name);
47345      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentElements(element);
47346      composeElementClose(element);
47347      xml.exit(FHIR_NS, name);
47348    }
47349  }
47350
47351  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
47352      composeBackboneElementElements(element);
47353      if (element.hasAuthorType()) {
47354        composeCodeableConcept("authorType", element.getAuthorType());
47355      }
47356      if (element.hasAuthorDescriptionElement()) {
47357        composeString("authorDescription", element.getAuthorDescriptionElement());
47358      }
47359  }
47360
47361  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
47362    if (element != null) {
47363      composeElementAttributes(element);
47364      xml.enter(FHIR_NS, name);
47365      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentElements(element);
47366      composeElementClose(element);
47367      xml.exit(FHIR_NS, name);
47368    }
47369  }
47370
47371  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
47372      composeBackboneElementElements(element);
47373      if (element.hasMaternalOrganismIdElement()) {
47374        composeString("maternalOrganismId", element.getMaternalOrganismIdElement());
47375      }
47376      if (element.hasMaternalOrganismNameElement()) {
47377        composeString("maternalOrganismName", element.getMaternalOrganismNameElement());
47378      }
47379      if (element.hasPaternalOrganismIdElement()) {
47380        composeString("paternalOrganismId", element.getPaternalOrganismIdElement());
47381      }
47382      if (element.hasPaternalOrganismNameElement()) {
47383        composeString("paternalOrganismName", element.getPaternalOrganismNameElement());
47384      }
47385      if (element.hasHybridType()) {
47386        composeCodeableConcept("hybridType", element.getHybridType());
47387      }
47388  }
47389
47390  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
47391    if (element != null) {
47392      composeElementAttributes(element);
47393      xml.enter(FHIR_NS, name);
47394      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(element);
47395      composeElementClose(element);
47396      xml.exit(FHIR_NS, name);
47397    }
47398  }
47399
47400  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
47401      composeBackboneElementElements(element);
47402      if (element.hasKingdom()) {
47403        composeCodeableConcept("kingdom", element.getKingdom());
47404      }
47405      if (element.hasPhylum()) {
47406        composeCodeableConcept("phylum", element.getPhylum());
47407      }
47408      if (element.hasClass_()) {
47409        composeCodeableConcept("class", element.getClass_());
47410      }
47411      if (element.hasOrder()) {
47412        composeCodeableConcept("order", element.getOrder());
47413      }
47414  }
47415
47416  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
47417    if (element != null) {
47418      composeElementAttributes(element);
47419      xml.enter(FHIR_NS, name);
47420      composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentElements(element);
47421      composeElementClose(element);
47422      xml.exit(FHIR_NS, name);
47423    }
47424  }
47425
47426  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
47427      composeBackboneElementElements(element);
47428      if (element.hasPart()) {
47429        composeCodeableConcept("part", element.getPart());
47430      }
47431      if (element.hasPartLocation()) {
47432        composeCodeableConcept("partLocation", element.getPartLocation());
47433      }
47434  }
47435
47436  protected void composeSubstanceSpecification(String name, SubstanceSpecification element) throws IOException {
47437    if (element != null) {
47438      composeDomainResourceAttributes(element);
47439      xml.enter(FHIR_NS, name);
47440      composeSubstanceSpecificationElements(element);
47441      composeElementClose(element);
47442      xml.exit(FHIR_NS, name);
47443    }
47444  }
47445
47446  protected void composeSubstanceSpecificationElements(SubstanceSpecification element) throws IOException {
47447      composeDomainResourceElements(element);
47448      if (element.hasIdentifier()) {
47449        composeIdentifier("identifier", element.getIdentifier());
47450      }
47451      if (element.hasType()) {
47452        composeCodeableConcept("type", element.getType());
47453      }
47454      if (element.hasStatus()) {
47455        composeCodeableConcept("status", element.getStatus());
47456      }
47457      if (element.hasDomain()) {
47458        composeCodeableConcept("domain", element.getDomain());
47459      }
47460      if (element.hasDescriptionElement()) {
47461        composeString("description", element.getDescriptionElement());
47462      }
47463      if (element.hasSource()) { 
47464        for (Reference e : element.getSource()) 
47465          composeReference("source", e);
47466      }
47467      if (element.hasCommentElement()) {
47468        composeString("comment", element.getCommentElement());
47469      }
47470      if (element.hasMoiety()) { 
47471        for (SubstanceSpecification.SubstanceSpecificationMoietyComponent e : element.getMoiety()) 
47472          composeSubstanceSpecificationSubstanceSpecificationMoietyComponent("moiety", e);
47473      }
47474      if (element.hasProperty()) { 
47475        for (SubstanceSpecification.SubstanceSpecificationPropertyComponent e : element.getProperty()) 
47476          composeSubstanceSpecificationSubstanceSpecificationPropertyComponent("property", e);
47477      }
47478      if (element.hasReferenceInformation()) {
47479        composeReference("referenceInformation", element.getReferenceInformation());
47480      }
47481      if (element.hasStructure()) {
47482        composeSubstanceSpecificationSubstanceSpecificationStructureComponent("structure", element.getStructure());
47483      }
47484      if (element.hasCode()) { 
47485        for (SubstanceSpecification.SubstanceSpecificationCodeComponent e : element.getCode()) 
47486          composeSubstanceSpecificationSubstanceSpecificationCodeComponent("code", e);
47487      }
47488      if (element.hasName()) { 
47489        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getName()) 
47490          composeSubstanceSpecificationSubstanceSpecificationNameComponent("name", e);
47491      }
47492      if (element.hasMolecularWeight()) { 
47493        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent e : element.getMolecularWeight()) 
47494          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", e);
47495      }
47496      if (element.hasRelationship()) { 
47497        for (SubstanceSpecification.SubstanceSpecificationRelationshipComponent e : element.getRelationship()) 
47498          composeSubstanceSpecificationSubstanceSpecificationRelationshipComponent("relationship", e);
47499      }
47500      if (element.hasNucleicAcid()) {
47501        composeReference("nucleicAcid", element.getNucleicAcid());
47502      }
47503      if (element.hasPolymer()) {
47504        composeReference("polymer", element.getPolymer());
47505      }
47506      if (element.hasProtein()) {
47507        composeReference("protein", element.getProtein());
47508      }
47509      if (element.hasSourceMaterial()) {
47510        composeReference("sourceMaterial", element.getSourceMaterial());
47511      }
47512  }
47513
47514  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(String name, SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
47515    if (element != null) {
47516      composeElementAttributes(element);
47517      xml.enter(FHIR_NS, name);
47518      composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(element);
47519      composeElementClose(element);
47520      xml.exit(FHIR_NS, name);
47521    }
47522  }
47523
47524  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
47525      composeBackboneElementElements(element);
47526      if (element.hasRole()) {
47527        composeCodeableConcept("role", element.getRole());
47528      }
47529      if (element.hasIdentifier()) {
47530        composeIdentifier("identifier", element.getIdentifier());
47531      }
47532      if (element.hasNameElement()) {
47533        composeString("name", element.getNameElement());
47534      }
47535      if (element.hasStereochemistry()) {
47536        composeCodeableConcept("stereochemistry", element.getStereochemistry());
47537      }
47538      if (element.hasOpticalActivity()) {
47539        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
47540      }
47541      if (element.hasMolecularFormulaElement()) {
47542        composeString("molecularFormula", element.getMolecularFormulaElement());
47543      }
47544      if (element.hasAmount()) {
47545        composeType("amount", element.getAmount());
47546      }  }
47547
47548  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(String name, SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
47549    if (element != null) {
47550      composeElementAttributes(element);
47551      xml.enter(FHIR_NS, name);
47552      composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(element);
47553      composeElementClose(element);
47554      xml.exit(FHIR_NS, name);
47555    }
47556  }
47557
47558  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
47559      composeBackboneElementElements(element);
47560      if (element.hasCategory()) {
47561        composeCodeableConcept("category", element.getCategory());
47562      }
47563      if (element.hasCode()) {
47564        composeCodeableConcept("code", element.getCode());
47565      }
47566      if (element.hasParametersElement()) {
47567        composeString("parameters", element.getParametersElement());
47568      }
47569      if (element.hasDefiningSubstance()) {
47570        composeType("definingSubstance", element.getDefiningSubstance());
47571      }      if (element.hasAmount()) {
47572        composeType("amount", element.getAmount());
47573      }  }
47574
47575  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
47576    if (element != null) {
47577      composeElementAttributes(element);
47578      xml.enter(FHIR_NS, name);
47579      composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(element);
47580      composeElementClose(element);
47581      xml.exit(FHIR_NS, name);
47582    }
47583  }
47584
47585  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
47586      composeBackboneElementElements(element);
47587      if (element.hasStereochemistry()) {
47588        composeCodeableConcept("stereochemistry", element.getStereochemistry());
47589      }
47590      if (element.hasOpticalActivity()) {
47591        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
47592      }
47593      if (element.hasMolecularFormulaElement()) {
47594        composeString("molecularFormula", element.getMolecularFormulaElement());
47595      }
47596      if (element.hasMolecularFormulaByMoietyElement()) {
47597        composeString("molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement());
47598      }
47599      if (element.hasIsotope()) { 
47600        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent e : element.getIsotope()) 
47601          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent("isotope", e);
47602      }
47603      if (element.hasMolecularWeight()) {
47604        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
47605      }
47606      if (element.hasSource()) { 
47607        for (Reference e : element.getSource()) 
47608          composeReference("source", e);
47609      }
47610      if (element.hasRepresentation()) { 
47611        for (SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent e : element.getRepresentation()) 
47612          composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent("representation", e);
47613      }
47614  }
47615
47616  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
47617    if (element != null) {
47618      composeElementAttributes(element);
47619      xml.enter(FHIR_NS, name);
47620      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(element);
47621      composeElementClose(element);
47622      xml.exit(FHIR_NS, name);
47623    }
47624  }
47625
47626  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
47627      composeBackboneElementElements(element);
47628      if (element.hasIdentifier()) {
47629        composeIdentifier("identifier", element.getIdentifier());
47630      }
47631      if (element.hasName()) {
47632        composeCodeableConcept("name", element.getName());
47633      }
47634      if (element.hasSubstitution()) {
47635        composeCodeableConcept("substitution", element.getSubstitution());
47636      }
47637      if (element.hasHalfLife()) {
47638        composeQuantity("halfLife", element.getHalfLife());
47639      }
47640      if (element.hasMolecularWeight()) {
47641        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
47642      }
47643  }
47644
47645  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
47646    if (element != null) {
47647      composeElementAttributes(element);
47648      xml.enter(FHIR_NS, name);
47649      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(element);
47650      composeElementClose(element);
47651      xml.exit(FHIR_NS, name);
47652    }
47653  }
47654
47655  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
47656      composeBackboneElementElements(element);
47657      if (element.hasMethod()) {
47658        composeCodeableConcept("method", element.getMethod());
47659      }
47660      if (element.hasType()) {
47661        composeCodeableConcept("type", element.getType());
47662      }
47663      if (element.hasAmount()) {
47664        composeQuantity("amount", element.getAmount());
47665      }
47666  }
47667
47668  protected void composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent element) throws IOException {
47669    if (element != null) {
47670      composeElementAttributes(element);
47671      xml.enter(FHIR_NS, name);
47672      composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentElements(element);
47673      composeElementClose(element);
47674      xml.exit(FHIR_NS, name);
47675    }
47676  }
47677
47678  protected void composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentElements(SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent element) throws IOException {
47679      composeBackboneElementElements(element);
47680      if (element.hasType()) {
47681        composeCodeableConcept("type", element.getType());
47682      }
47683      if (element.hasRepresentationElement()) {
47684        composeString("representation", element.getRepresentationElement());
47685      }
47686      if (element.hasAttachment()) {
47687        composeAttachment("attachment", element.getAttachment());
47688      }
47689  }
47690
47691  protected void composeSubstanceSpecificationSubstanceSpecificationCodeComponent(String name, SubstanceSpecification.SubstanceSpecificationCodeComponent element) throws IOException {
47692    if (element != null) {
47693      composeElementAttributes(element);
47694      xml.enter(FHIR_NS, name);
47695      composeSubstanceSpecificationSubstanceSpecificationCodeComponentElements(element);
47696      composeElementClose(element);
47697      xml.exit(FHIR_NS, name);
47698    }
47699  }
47700
47701  protected void composeSubstanceSpecificationSubstanceSpecificationCodeComponentElements(SubstanceSpecification.SubstanceSpecificationCodeComponent element) throws IOException {
47702      composeBackboneElementElements(element);
47703      if (element.hasCode()) {
47704        composeCodeableConcept("code", element.getCode());
47705      }
47706      if (element.hasStatus()) {
47707        composeCodeableConcept("status", element.getStatus());
47708      }
47709      if (element.hasStatusDateElement()) {
47710        composeDateTime("statusDate", element.getStatusDateElement());
47711      }
47712      if (element.hasCommentElement()) {
47713        composeString("comment", element.getCommentElement());
47714      }
47715      if (element.hasSource()) { 
47716        for (Reference e : element.getSource()) 
47717          composeReference("source", e);
47718      }
47719  }
47720
47721  protected void composeSubstanceSpecificationSubstanceSpecificationNameComponent(String name, SubstanceSpecification.SubstanceSpecificationNameComponent element) throws IOException {
47722    if (element != null) {
47723      composeElementAttributes(element);
47724      xml.enter(FHIR_NS, name);
47725      composeSubstanceSpecificationSubstanceSpecificationNameComponentElements(element);
47726      composeElementClose(element);
47727      xml.exit(FHIR_NS, name);
47728    }
47729  }
47730
47731  protected void composeSubstanceSpecificationSubstanceSpecificationNameComponentElements(SubstanceSpecification.SubstanceSpecificationNameComponent element) throws IOException {
47732      composeBackboneElementElements(element);
47733      if (element.hasNameElement()) {
47734        composeString("name", element.getNameElement());
47735      }
47736      if (element.hasType()) {
47737        composeCodeableConcept("type", element.getType());
47738      }
47739      if (element.hasStatus()) {
47740        composeCodeableConcept("status", element.getStatus());
47741      }
47742      if (element.hasPreferredElement()) {
47743        composeBoolean("preferred", element.getPreferredElement());
47744      }
47745      if (element.hasLanguage()) { 
47746        for (CodeableConcept e : element.getLanguage()) 
47747          composeCodeableConcept("language", e);
47748      }
47749      if (element.hasDomain()) { 
47750        for (CodeableConcept e : element.getDomain()) 
47751          composeCodeableConcept("domain", e);
47752      }
47753      if (element.hasJurisdiction()) { 
47754        for (CodeableConcept e : element.getJurisdiction()) 
47755          composeCodeableConcept("jurisdiction", e);
47756      }
47757      if (element.hasSynonym()) { 
47758        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getSynonym()) 
47759          composeSubstanceSpecificationSubstanceSpecificationNameComponent("synonym", e);
47760      }
47761      if (element.hasTranslation()) { 
47762        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getTranslation()) 
47763          composeSubstanceSpecificationSubstanceSpecificationNameComponent("translation", e);
47764      }
47765      if (element.hasOfficial()) { 
47766        for (SubstanceSpecification.SubstanceSpecificationNameOfficialComponent e : element.getOfficial()) 
47767          composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponent("official", e);
47768      }
47769      if (element.hasSource()) { 
47770        for (Reference e : element.getSource()) 
47771          composeReference("source", e);
47772      }
47773  }
47774
47775  protected void composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(String name, SubstanceSpecification.SubstanceSpecificationNameOfficialComponent element) throws IOException {
47776    if (element != null) {
47777      composeElementAttributes(element);
47778      xml.enter(FHIR_NS, name);
47779      composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponentElements(element);
47780      composeElementClose(element);
47781      xml.exit(FHIR_NS, name);
47782    }
47783  }
47784
47785  protected void composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponentElements(SubstanceSpecification.SubstanceSpecificationNameOfficialComponent element) throws IOException {
47786      composeBackboneElementElements(element);
47787      if (element.hasAuthority()) {
47788        composeCodeableConcept("authority", element.getAuthority());
47789      }
47790      if (element.hasStatus()) {
47791        composeCodeableConcept("status", element.getStatus());
47792      }
47793      if (element.hasDateElement()) {
47794        composeDateTime("date", element.getDateElement());
47795      }
47796  }
47797
47798  protected void composeSubstanceSpecificationSubstanceSpecificationRelationshipComponent(String name, SubstanceSpecification.SubstanceSpecificationRelationshipComponent element) throws IOException {
47799    if (element != null) {
47800      composeElementAttributes(element);
47801      xml.enter(FHIR_NS, name);
47802      composeSubstanceSpecificationSubstanceSpecificationRelationshipComponentElements(element);
47803      composeElementClose(element);
47804      xml.exit(FHIR_NS, name);
47805    }
47806  }
47807
47808  protected void composeSubstanceSpecificationSubstanceSpecificationRelationshipComponentElements(SubstanceSpecification.SubstanceSpecificationRelationshipComponent element) throws IOException {
47809      composeBackboneElementElements(element);
47810      if (element.hasSubstance()) {
47811        composeType("substance", element.getSubstance());
47812      }      if (element.hasRelationship()) {
47813        composeCodeableConcept("relationship", element.getRelationship());
47814      }
47815      if (element.hasIsDefiningElement()) {
47816        composeBoolean("isDefining", element.getIsDefiningElement());
47817      }
47818      if (element.hasAmount()) {
47819        composeType("amount", element.getAmount());
47820      }      if (element.hasAmountRatioLowLimit()) {
47821        composeRatio("amountRatioLowLimit", element.getAmountRatioLowLimit());
47822      }
47823      if (element.hasAmountType()) {
47824        composeCodeableConcept("amountType", element.getAmountType());
47825      }
47826      if (element.hasSource()) { 
47827        for (Reference e : element.getSource()) 
47828          composeReference("source", e);
47829      }
47830  }
47831
47832  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
47833    if (element != null) {
47834      composeDomainResourceAttributes(element);
47835      xml.enter(FHIR_NS, name);
47836      composeSupplyDeliveryElements(element);
47837      composeElementClose(element);
47838      xml.exit(FHIR_NS, name);
47839    }
47840  }
47841
47842  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
47843      composeDomainResourceElements(element);
47844      if (element.hasIdentifier()) { 
47845        for (Identifier e : element.getIdentifier()) 
47846          composeIdentifier("identifier", e);
47847      }
47848      if (element.hasBasedOn()) { 
47849        for (Reference e : element.getBasedOn()) 
47850          composeReference("basedOn", e);
47851      }
47852      if (element.hasPartOf()) { 
47853        for (Reference e : element.getPartOf()) 
47854          composeReference("partOf", e);
47855      }
47856      if (element.hasStatusElement())
47857        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
47858      if (element.hasPatient()) {
47859        composeReference("patient", element.getPatient());
47860      }
47861      if (element.hasType()) {
47862        composeCodeableConcept("type", element.getType());
47863      }
47864      if (element.hasSuppliedItem()) {
47865        composeSupplyDeliverySupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
47866      }
47867      if (element.hasOccurrence()) {
47868        composeType("occurrence", element.getOccurrence());
47869      }      if (element.hasSupplier()) {
47870        composeReference("supplier", element.getSupplier());
47871      }
47872      if (element.hasDestination()) {
47873        composeReference("destination", element.getDestination());
47874      }
47875      if (element.hasReceiver()) { 
47876        for (Reference e : element.getReceiver()) 
47877          composeReference("receiver", e);
47878      }
47879  }
47880
47881  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
47882    if (element != null) {
47883      composeElementAttributes(element);
47884      xml.enter(FHIR_NS, name);
47885      composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(element);
47886      composeElementClose(element);
47887      xml.exit(FHIR_NS, name);
47888    }
47889  }
47890
47891  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
47892      composeBackboneElementElements(element);
47893      if (element.hasQuantity()) {
47894        composeQuantity("quantity", element.getQuantity());
47895      }
47896      if (element.hasItem()) {
47897        composeType("item", element.getItem());
47898      }  }
47899
47900  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
47901    if (element != null) {
47902      composeDomainResourceAttributes(element);
47903      xml.enter(FHIR_NS, name);
47904      composeSupplyRequestElements(element);
47905      composeElementClose(element);
47906      xml.exit(FHIR_NS, name);
47907    }
47908  }
47909
47910  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
47911      composeDomainResourceElements(element);
47912      if (element.hasIdentifier()) { 
47913        for (Identifier e : element.getIdentifier()) 
47914          composeIdentifier("identifier", e);
47915      }
47916      if (element.hasStatusElement())
47917        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
47918      if (element.hasCategory()) {
47919        composeCodeableConcept("category", element.getCategory());
47920      }
47921      if (element.hasPriorityElement())
47922        composeEnumeration("priority", element.getPriorityElement(), new SupplyRequest.RequestPriorityEnumFactory());
47923      if (element.hasItem()) {
47924        composeType("item", element.getItem());
47925      }      if (element.hasQuantity()) {
47926        composeQuantity("quantity", element.getQuantity());
47927      }
47928      if (element.hasParameter()) { 
47929        for (SupplyRequest.SupplyRequestParameterComponent e : element.getParameter()) 
47930          composeSupplyRequestSupplyRequestParameterComponent("parameter", e);
47931      }
47932      if (element.hasOccurrence()) {
47933        composeType("occurrence", element.getOccurrence());
47934      }      if (element.hasAuthoredOnElement()) {
47935        composeDateTime("authoredOn", element.getAuthoredOnElement());
47936      }
47937      if (element.hasRequester()) {
47938        composeReference("requester", element.getRequester());
47939      }
47940      if (element.hasSupplier()) { 
47941        for (Reference e : element.getSupplier()) 
47942          composeReference("supplier", e);
47943      }
47944      if (element.hasReasonCode()) { 
47945        for (CodeableConcept e : element.getReasonCode()) 
47946          composeCodeableConcept("reasonCode", e);
47947      }
47948      if (element.hasReasonReference()) { 
47949        for (Reference e : element.getReasonReference()) 
47950          composeReference("reasonReference", e);
47951      }
47952      if (element.hasDeliverFrom()) {
47953        composeReference("deliverFrom", element.getDeliverFrom());
47954      }
47955      if (element.hasDeliverTo()) {
47956        composeReference("deliverTo", element.getDeliverTo());
47957      }
47958  }
47959
47960  protected void composeSupplyRequestSupplyRequestParameterComponent(String name, SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
47961    if (element != null) {
47962      composeElementAttributes(element);
47963      xml.enter(FHIR_NS, name);
47964      composeSupplyRequestSupplyRequestParameterComponentElements(element);
47965      composeElementClose(element);
47966      xml.exit(FHIR_NS, name);
47967    }
47968  }
47969
47970  protected void composeSupplyRequestSupplyRequestParameterComponentElements(SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
47971      composeBackboneElementElements(element);
47972      if (element.hasCode()) {
47973        composeCodeableConcept("code", element.getCode());
47974      }
47975      if (element.hasValue()) {
47976        composeType("value", element.getValue());
47977      }  }
47978
47979  protected void composeTask(String name, Task element) throws IOException {
47980    if (element != null) {
47981      composeDomainResourceAttributes(element);
47982      xml.enter(FHIR_NS, name);
47983      composeTaskElements(element);
47984      composeElementClose(element);
47985      xml.exit(FHIR_NS, name);
47986    }
47987  }
47988
47989  protected void composeTaskElements(Task element) throws IOException {
47990      composeDomainResourceElements(element);
47991      if (element.hasIdentifier()) { 
47992        for (Identifier e : element.getIdentifier()) 
47993          composeIdentifier("identifier", e);
47994      }
47995      if (element.hasInstantiatesCanonicalElement()) {
47996        composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
47997      }
47998      if (element.hasInstantiatesUriElement()) {
47999        composeUri("instantiatesUri", element.getInstantiatesUriElement());
48000      }
48001      if (element.hasBasedOn()) { 
48002        for (Reference e : element.getBasedOn()) 
48003          composeReference("basedOn", e);
48004      }
48005      if (element.hasGroupIdentifier()) {
48006        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
48007      }
48008      if (element.hasPartOf()) { 
48009        for (Reference e : element.getPartOf()) 
48010          composeReference("partOf", e);
48011      }
48012      if (element.hasStatusElement())
48013        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
48014      if (element.hasStatusReason()) {
48015        composeCodeableConcept("statusReason", element.getStatusReason());
48016      }
48017      if (element.hasBusinessStatus()) {
48018        composeCodeableConcept("businessStatus", element.getBusinessStatus());
48019      }
48020      if (element.hasIntentElement())
48021        composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
48022      if (element.hasPriorityElement())
48023        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
48024      if (element.hasCode()) {
48025        composeCodeableConcept("code", element.getCode());
48026      }
48027      if (element.hasDescriptionElement()) {
48028        composeString("description", element.getDescriptionElement());
48029      }
48030      if (element.hasFocus()) {
48031        composeReference("focus", element.getFocus());
48032      }
48033      if (element.hasFor()) {
48034        composeReference("for", element.getFor());
48035      }
48036      if (element.hasEncounter()) {
48037        composeReference("encounter", element.getEncounter());
48038      }
48039      if (element.hasExecutionPeriod()) {
48040        composePeriod("executionPeriod", element.getExecutionPeriod());
48041      }
48042      if (element.hasAuthoredOnElement()) {
48043        composeDateTime("authoredOn", element.getAuthoredOnElement());
48044      }
48045      if (element.hasLastModifiedElement()) {
48046        composeDateTime("lastModified", element.getLastModifiedElement());
48047      }
48048      if (element.hasRequester()) {
48049        composeReference("requester", element.getRequester());
48050      }
48051      if (element.hasPerformerType()) { 
48052        for (CodeableConcept e : element.getPerformerType()) 
48053          composeCodeableConcept("performerType", e);
48054      }
48055      if (element.hasOwner()) {
48056        composeReference("owner", element.getOwner());
48057      }
48058      if (element.hasLocation()) {
48059        composeReference("location", element.getLocation());
48060      }
48061      if (element.hasReasonCode()) {
48062        composeCodeableConcept("reasonCode", element.getReasonCode());
48063      }
48064      if (element.hasReasonReference()) {
48065        composeReference("reasonReference", element.getReasonReference());
48066      }
48067      if (element.hasInsurance()) { 
48068        for (Reference e : element.getInsurance()) 
48069          composeReference("insurance", e);
48070      }
48071      if (element.hasNote()) { 
48072        for (Annotation e : element.getNote()) 
48073          composeAnnotation("note", e);
48074      }
48075      if (element.hasRelevantHistory()) { 
48076        for (Reference e : element.getRelevantHistory()) 
48077          composeReference("relevantHistory", e);
48078      }
48079      if (element.hasRestriction()) {
48080        composeTaskTaskRestrictionComponent("restriction", element.getRestriction());
48081      }
48082      if (element.hasInput()) { 
48083        for (Task.ParameterComponent e : element.getInput()) 
48084          composeTaskParameterComponent("input", e);
48085      }
48086      if (element.hasOutput()) { 
48087        for (Task.TaskOutputComponent e : element.getOutput()) 
48088          composeTaskTaskOutputComponent("output", e);
48089      }
48090  }
48091
48092  protected void composeTaskTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
48093    if (element != null) {
48094      composeElementAttributes(element);
48095      xml.enter(FHIR_NS, name);
48096      composeTaskTaskRestrictionComponentElements(element);
48097      composeElementClose(element);
48098      xml.exit(FHIR_NS, name);
48099    }
48100  }
48101
48102  protected void composeTaskTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
48103      composeBackboneElementElements(element);
48104      if (element.hasRepetitionsElement()) {
48105        composePositiveInt("repetitions", element.getRepetitionsElement());
48106      }
48107      if (element.hasPeriod()) {
48108        composePeriod("period", element.getPeriod());
48109      }
48110      if (element.hasRecipient()) { 
48111        for (Reference e : element.getRecipient()) 
48112          composeReference("recipient", e);
48113      }
48114  }
48115
48116  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
48117    if (element != null) {
48118      composeElementAttributes(element);
48119      xml.enter(FHIR_NS, name);
48120      composeTaskParameterComponentElements(element);
48121      composeElementClose(element);
48122      xml.exit(FHIR_NS, name);
48123    }
48124  }
48125
48126  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
48127      composeBackboneElementElements(element);
48128      if (element.hasType()) {
48129        composeCodeableConcept("type", element.getType());
48130      }
48131      if (element.hasValue()) {
48132        composeType("value", element.getValue());
48133      }  }
48134
48135  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
48136    if (element != null) {
48137      composeElementAttributes(element);
48138      xml.enter(FHIR_NS, name);
48139      composeTaskTaskOutputComponentElements(element);
48140      composeElementClose(element);
48141      xml.exit(FHIR_NS, name);
48142    }
48143  }
48144
48145  protected void composeTaskTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
48146      composeBackboneElementElements(element);
48147      if (element.hasType()) {
48148        composeCodeableConcept("type", element.getType());
48149      }
48150      if (element.hasValue()) {
48151        composeType("value", element.getValue());
48152      }  }
48153
48154  protected void composeTerminologyCapabilities(String name, TerminologyCapabilities element) throws IOException {
48155    if (element != null) {
48156      composeDomainResourceAttributes(element);
48157      xml.enter(FHIR_NS, name);
48158      composeTerminologyCapabilitiesElements(element);
48159      composeElementClose(element);
48160      xml.exit(FHIR_NS, name);
48161    }
48162  }
48163
48164  protected void composeTerminologyCapabilitiesElements(TerminologyCapabilities element) throws IOException {
48165      composeDomainResourceElements(element);
48166      if (element.hasUrlElement()) {
48167        composeUri("url", element.getUrlElement());
48168      }
48169      if (element.hasVersionElement()) {
48170        composeString("version", element.getVersionElement());
48171      }
48172      if (element.hasNameElement()) {
48173        composeString("name", element.getNameElement());
48174      }
48175      if (element.hasTitleElement()) {
48176        composeString("title", element.getTitleElement());
48177      }
48178      if (element.hasStatusElement())
48179        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48180      if (element.hasExperimentalElement()) {
48181        composeBoolean("experimental", element.getExperimentalElement());
48182      }
48183      if (element.hasDateElement()) {
48184        composeDateTime("date", element.getDateElement());
48185      }
48186      if (element.hasPublisherElement()) {
48187        composeString("publisher", element.getPublisherElement());
48188      }
48189      if (element.hasContact()) { 
48190        for (ContactDetail e : element.getContact()) 
48191          composeContactDetail("contact", e);
48192      }
48193      if (element.hasDescriptionElement()) {
48194        composeMarkdown("description", element.getDescriptionElement());
48195      }
48196      if (element.hasUseContext()) { 
48197        for (UsageContext e : element.getUseContext()) 
48198          composeUsageContext("useContext", e);
48199      }
48200      if (element.hasJurisdiction()) { 
48201        for (CodeableConcept e : element.getJurisdiction()) 
48202          composeCodeableConcept("jurisdiction", e);
48203      }
48204      if (element.hasPurposeElement()) {
48205        composeMarkdown("purpose", element.getPurposeElement());
48206      }
48207      if (element.hasCopyrightElement()) {
48208        composeMarkdown("copyright", element.getCopyrightElement());
48209      }
48210      if (element.hasKindElement())
48211        composeEnumeration("kind", element.getKindElement(), new TerminologyCapabilities.CapabilityStatementKindEnumFactory());
48212      if (element.hasSoftware()) {
48213        composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent("software", element.getSoftware());
48214      }
48215      if (element.hasImplementation()) {
48216        composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent("implementation", element.getImplementation());
48217      }
48218      if (element.hasLockedDateElement()) {
48219        composeBoolean("lockedDate", element.getLockedDateElement());
48220      }
48221      if (element.hasCodeSystem()) { 
48222        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent e : element.getCodeSystem()) 
48223          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent("codeSystem", e);
48224      }
48225      if (element.hasExpansion()) {
48226        composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent("expansion", element.getExpansion());
48227      }
48228      if (element.hasCodeSearchElement())
48229        composeEnumeration("codeSearch", element.getCodeSearchElement(), new TerminologyCapabilities.CodeSearchSupportEnumFactory());
48230      if (element.hasValidateCode()) {
48231        composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent("validateCode", element.getValidateCode());
48232      }
48233      if (element.hasTranslation()) {
48234        composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent("translation", element.getTranslation());
48235      }
48236      if (element.hasClosure()) {
48237        composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent("closure", element.getClosure());
48238      }
48239  }
48240
48241  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
48242    if (element != null) {
48243      composeElementAttributes(element);
48244      xml.enter(FHIR_NS, name);
48245      composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentElements(element);
48246      composeElementClose(element);
48247      xml.exit(FHIR_NS, name);
48248    }
48249  }
48250
48251  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentElements(TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
48252      composeBackboneElementElements(element);
48253      if (element.hasNameElement()) {
48254        composeString("name", element.getNameElement());
48255      }
48256      if (element.hasVersionElement()) {
48257        composeString("version", element.getVersionElement());
48258      }
48259  }
48260
48261  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
48262    if (element != null) {
48263      composeElementAttributes(element);
48264      xml.enter(FHIR_NS, name);
48265      composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentElements(element);
48266      composeElementClose(element);
48267      xml.exit(FHIR_NS, name);
48268    }
48269  }
48270
48271  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
48272      composeBackboneElementElements(element);
48273      if (element.hasDescriptionElement()) {
48274        composeString("description", element.getDescriptionElement());
48275      }
48276      if (element.hasUrlElement()) {
48277        composeUrl("url", element.getUrlElement());
48278      }
48279  }
48280
48281  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
48282    if (element != null) {
48283      composeElementAttributes(element);
48284      xml.enter(FHIR_NS, name);
48285      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(element);
48286      composeElementClose(element);
48287      xml.exit(FHIR_NS, name);
48288    }
48289  }
48290
48291  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
48292      composeBackboneElementElements(element);
48293      if (element.hasUriElement()) {
48294        composeCanonical("uri", element.getUriElement());
48295      }
48296      if (element.hasVersion()) { 
48297        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent e : element.getVersion()) 
48298          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent("version", e);
48299      }
48300      if (element.hasSubsumptionElement()) {
48301        composeBoolean("subsumption", element.getSubsumptionElement());
48302      }
48303  }
48304
48305  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
48306    if (element != null) {
48307      composeElementAttributes(element);
48308      xml.enter(FHIR_NS, name);
48309      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(element);
48310      composeElementClose(element);
48311      xml.exit(FHIR_NS, name);
48312    }
48313  }
48314
48315  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
48316      composeBackboneElementElements(element);
48317      if (element.hasCodeElement()) {
48318        composeString("code", element.getCodeElement());
48319      }
48320      if (element.hasIsDefaultElement()) {
48321        composeBoolean("isDefault", element.getIsDefaultElement());
48322      }
48323      if (element.hasCompositionalElement()) {
48324        composeBoolean("compositional", element.getCompositionalElement());
48325      }
48326      if (element.hasLanguage()) { 
48327        for (CodeType e : element.getLanguage()) 
48328          composeCode("language", e);
48329      }
48330      if (element.hasFilter()) { 
48331        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent e : element.getFilter()) 
48332          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent("filter", e);
48333      }
48334      if (element.hasProperty()) { 
48335        for (CodeType e : element.getProperty()) 
48336          composeCode("property", e);
48337      }
48338  }
48339
48340  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
48341    if (element != null) {
48342      composeElementAttributes(element);
48343      xml.enter(FHIR_NS, name);
48344      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(element);
48345      composeElementClose(element);
48346      xml.exit(FHIR_NS, name);
48347    }
48348  }
48349
48350  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
48351      composeBackboneElementElements(element);
48352      if (element.hasCodeElement()) {
48353        composeCode("code", element.getCodeElement());
48354      }
48355      if (element.hasOp()) { 
48356        for (CodeType e : element.getOp()) 
48357          composeCode("op", e);
48358      }
48359  }
48360
48361  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
48362    if (element != null) {
48363      composeElementAttributes(element);
48364      xml.enter(FHIR_NS, name);
48365      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(element);
48366      composeElementClose(element);
48367      xml.exit(FHIR_NS, name);
48368    }
48369  }
48370
48371  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
48372      composeBackboneElementElements(element);
48373      if (element.hasHierarchicalElement()) {
48374        composeBoolean("hierarchical", element.getHierarchicalElement());
48375      }
48376      if (element.hasPagingElement()) {
48377        composeBoolean("paging", element.getPagingElement());
48378      }
48379      if (element.hasIncompleteElement()) {
48380        composeBoolean("incomplete", element.getIncompleteElement());
48381      }
48382      if (element.hasParameter()) { 
48383        for (TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent e : element.getParameter()) 
48384          composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent("parameter", e);
48385      }
48386      if (element.hasTextFilterElement()) {
48387        composeMarkdown("textFilter", element.getTextFilterElement());
48388      }
48389  }
48390
48391  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
48392    if (element != null) {
48393      composeElementAttributes(element);
48394      xml.enter(FHIR_NS, name);
48395      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentElements(element);
48396      composeElementClose(element);
48397      xml.exit(FHIR_NS, name);
48398    }
48399  }
48400
48401  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
48402      composeBackboneElementElements(element);
48403      if (element.hasNameElement()) {
48404        composeCode("name", element.getNameElement());
48405      }
48406      if (element.hasDocumentationElement()) {
48407        composeString("documentation", element.getDocumentationElement());
48408      }
48409  }
48410
48411  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
48412    if (element != null) {
48413      composeElementAttributes(element);
48414      xml.enter(FHIR_NS, name);
48415      composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(element);
48416      composeElementClose(element);
48417      xml.exit(FHIR_NS, name);
48418    }
48419  }
48420
48421  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
48422      composeBackboneElementElements(element);
48423      if (element.hasTranslationsElement()) {
48424        composeBoolean("translations", element.getTranslationsElement());
48425      }
48426  }
48427
48428  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
48429    if (element != null) {
48430      composeElementAttributes(element);
48431      xml.enter(FHIR_NS, name);
48432      composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(element);
48433      composeElementClose(element);
48434      xml.exit(FHIR_NS, name);
48435    }
48436  }
48437
48438  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
48439      composeBackboneElementElements(element);
48440      if (element.hasNeedsMapElement()) {
48441        composeBoolean("needsMap", element.getNeedsMapElement());
48442      }
48443  }
48444
48445  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
48446    if (element != null) {
48447      composeElementAttributes(element);
48448      xml.enter(FHIR_NS, name);
48449      composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(element);
48450      composeElementClose(element);
48451      xml.exit(FHIR_NS, name);
48452    }
48453  }
48454
48455  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
48456      composeBackboneElementElements(element);
48457      if (element.hasTranslationElement()) {
48458        composeBoolean("translation", element.getTranslationElement());
48459      }
48460  }
48461
48462  protected void composeTestReport(String name, TestReport element) throws IOException {
48463    if (element != null) {
48464      composeDomainResourceAttributes(element);
48465      xml.enter(FHIR_NS, name);
48466      composeTestReportElements(element);
48467      composeElementClose(element);
48468      xml.exit(FHIR_NS, name);
48469    }
48470  }
48471
48472  protected void composeTestReportElements(TestReport element) throws IOException {
48473      composeDomainResourceElements(element);
48474      if (element.hasIdentifier()) {
48475        composeIdentifier("identifier", element.getIdentifier());
48476      }
48477      if (element.hasNameElement()) {
48478        composeString("name", element.getNameElement());
48479      }
48480      if (element.hasStatusElement())
48481        composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
48482      if (element.hasTestScript()) {
48483        composeReference("testScript", element.getTestScript());
48484      }
48485      if (element.hasResultElement())
48486        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
48487      if (element.hasScoreElement()) {
48488        composeDecimal("score", element.getScoreElement());
48489      }
48490      if (element.hasTesterElement()) {
48491        composeString("tester", element.getTesterElement());
48492      }
48493      if (element.hasIssuedElement()) {
48494        composeDateTime("issued", element.getIssuedElement());
48495      }
48496      if (element.hasParticipant()) { 
48497        for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
48498          composeTestReportTestReportParticipantComponent("participant", e);
48499      }
48500      if (element.hasSetup()) {
48501        composeTestReportTestReportSetupComponent("setup", element.getSetup());
48502      }
48503      if (element.hasTest()) { 
48504        for (TestReport.TestReportTestComponent e : element.getTest()) 
48505          composeTestReportTestReportTestComponent("test", e);
48506      }
48507      if (element.hasTeardown()) {
48508        composeTestReportTestReportTeardownComponent("teardown", element.getTeardown());
48509      }
48510  }
48511
48512  protected void composeTestReportTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
48513    if (element != null) {
48514      composeElementAttributes(element);
48515      xml.enter(FHIR_NS, name);
48516      composeTestReportTestReportParticipantComponentElements(element);
48517      composeElementClose(element);
48518      xml.exit(FHIR_NS, name);
48519    }
48520  }
48521
48522  protected void composeTestReportTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
48523      composeBackboneElementElements(element);
48524      if (element.hasTypeElement())
48525        composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
48526      if (element.hasUriElement()) {
48527        composeUri("uri", element.getUriElement());
48528      }
48529      if (element.hasDisplayElement()) {
48530        composeString("display", element.getDisplayElement());
48531      }
48532  }
48533
48534  protected void composeTestReportTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
48535    if (element != null) {
48536      composeElementAttributes(element);
48537      xml.enter(FHIR_NS, name);
48538      composeTestReportTestReportSetupComponentElements(element);
48539      composeElementClose(element);
48540      xml.exit(FHIR_NS, name);
48541    }
48542  }
48543
48544  protected void composeTestReportTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
48545      composeBackboneElementElements(element);
48546      if (element.hasAction()) { 
48547        for (TestReport.SetupActionComponent e : element.getAction()) 
48548          composeTestReportSetupActionComponent("action", e);
48549      }
48550  }
48551
48552  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
48553    if (element != null) {
48554      composeElementAttributes(element);
48555      xml.enter(FHIR_NS, name);
48556      composeTestReportSetupActionComponentElements(element);
48557      composeElementClose(element);
48558      xml.exit(FHIR_NS, name);
48559    }
48560  }
48561
48562  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
48563      composeBackboneElementElements(element);
48564      if (element.hasOperation()) {
48565        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48566      }
48567      if (element.hasAssert()) {
48568        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
48569      }
48570  }
48571
48572  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
48573    if (element != null) {
48574      composeElementAttributes(element);
48575      xml.enter(FHIR_NS, name);
48576      composeTestReportSetupActionOperationComponentElements(element);
48577      composeElementClose(element);
48578      xml.exit(FHIR_NS, name);
48579    }
48580  }
48581
48582  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
48583      composeBackboneElementElements(element);
48584      if (element.hasResultElement())
48585        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
48586      if (element.hasMessageElement()) {
48587        composeMarkdown("message", element.getMessageElement());
48588      }
48589      if (element.hasDetailElement()) {
48590        composeUri("detail", element.getDetailElement());
48591      }
48592  }
48593
48594  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
48595    if (element != null) {
48596      composeElementAttributes(element);
48597      xml.enter(FHIR_NS, name);
48598      composeTestReportSetupActionAssertComponentElements(element);
48599      composeElementClose(element);
48600      xml.exit(FHIR_NS, name);
48601    }
48602  }
48603
48604  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
48605      composeBackboneElementElements(element);
48606      if (element.hasResultElement())
48607        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
48608      if (element.hasMessageElement()) {
48609        composeMarkdown("message", element.getMessageElement());
48610      }
48611      if (element.hasDetailElement()) {
48612        composeString("detail", element.getDetailElement());
48613      }
48614  }
48615
48616  protected void composeTestReportTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
48617    if (element != null) {
48618      composeElementAttributes(element);
48619      xml.enter(FHIR_NS, name);
48620      composeTestReportTestReportTestComponentElements(element);
48621      composeElementClose(element);
48622      xml.exit(FHIR_NS, name);
48623    }
48624  }
48625
48626  protected void composeTestReportTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
48627      composeBackboneElementElements(element);
48628      if (element.hasNameElement()) {
48629        composeString("name", element.getNameElement());
48630      }
48631      if (element.hasDescriptionElement()) {
48632        composeString("description", element.getDescriptionElement());
48633      }
48634      if (element.hasAction()) { 
48635        for (TestReport.TestActionComponent e : element.getAction()) 
48636          composeTestReportTestActionComponent("action", e);
48637      }
48638  }
48639
48640  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
48641    if (element != null) {
48642      composeElementAttributes(element);
48643      xml.enter(FHIR_NS, name);
48644      composeTestReportTestActionComponentElements(element);
48645      composeElementClose(element);
48646      xml.exit(FHIR_NS, name);
48647    }
48648  }
48649
48650  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
48651      composeBackboneElementElements(element);
48652      if (element.hasOperation()) {
48653        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48654      }
48655      if (element.hasAssert()) {
48656        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
48657      }
48658  }
48659
48660  protected void composeTestReportTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
48661    if (element != null) {
48662      composeElementAttributes(element);
48663      xml.enter(FHIR_NS, name);
48664      composeTestReportTestReportTeardownComponentElements(element);
48665      composeElementClose(element);
48666      xml.exit(FHIR_NS, name);
48667    }
48668  }
48669
48670  protected void composeTestReportTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
48671      composeBackboneElementElements(element);
48672      if (element.hasAction()) { 
48673        for (TestReport.TeardownActionComponent e : element.getAction()) 
48674          composeTestReportTeardownActionComponent("action", e);
48675      }
48676  }
48677
48678  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
48679    if (element != null) {
48680      composeElementAttributes(element);
48681      xml.enter(FHIR_NS, name);
48682      composeTestReportTeardownActionComponentElements(element);
48683      composeElementClose(element);
48684      xml.exit(FHIR_NS, name);
48685    }
48686  }
48687
48688  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
48689      composeBackboneElementElements(element);
48690      if (element.hasOperation()) {
48691        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48692      }
48693  }
48694
48695  protected void composeTestScript(String name, TestScript element) throws IOException {
48696    if (element != null) {
48697      composeDomainResourceAttributes(element);
48698      xml.enter(FHIR_NS, name);
48699      composeTestScriptElements(element);
48700      composeElementClose(element);
48701      xml.exit(FHIR_NS, name);
48702    }
48703  }
48704
48705  protected void composeTestScriptElements(TestScript element) throws IOException {
48706      composeDomainResourceElements(element);
48707      if (element.hasUrlElement()) {
48708        composeUri("url", element.getUrlElement());
48709      }
48710      if (element.hasIdentifier()) {
48711        composeIdentifier("identifier", element.getIdentifier());
48712      }
48713      if (element.hasVersionElement()) {
48714        composeString("version", element.getVersionElement());
48715      }
48716      if (element.hasNameElement()) {
48717        composeString("name", element.getNameElement());
48718      }
48719      if (element.hasTitleElement()) {
48720        composeString("title", element.getTitleElement());
48721      }
48722      if (element.hasStatusElement())
48723        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48724      if (element.hasExperimentalElement()) {
48725        composeBoolean("experimental", element.getExperimentalElement());
48726      }
48727      if (element.hasDateElement()) {
48728        composeDateTime("date", element.getDateElement());
48729      }
48730      if (element.hasPublisherElement()) {
48731        composeString("publisher", element.getPublisherElement());
48732      }
48733      if (element.hasContact()) { 
48734        for (ContactDetail e : element.getContact()) 
48735          composeContactDetail("contact", e);
48736      }
48737      if (element.hasDescriptionElement()) {
48738        composeMarkdown("description", element.getDescriptionElement());
48739      }
48740      if (element.hasUseContext()) { 
48741        for (UsageContext e : element.getUseContext()) 
48742          composeUsageContext("useContext", e);
48743      }
48744      if (element.hasJurisdiction()) { 
48745        for (CodeableConcept e : element.getJurisdiction()) 
48746          composeCodeableConcept("jurisdiction", e);
48747      }
48748      if (element.hasPurposeElement()) {
48749        composeMarkdown("purpose", element.getPurposeElement());
48750      }
48751      if (element.hasCopyrightElement()) {
48752        composeMarkdown("copyright", element.getCopyrightElement());
48753      }
48754      if (element.hasOrigin()) { 
48755        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
48756          composeTestScriptTestScriptOriginComponent("origin", e);
48757      }
48758      if (element.hasDestination()) { 
48759        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
48760          composeTestScriptTestScriptDestinationComponent("destination", e);
48761      }
48762      if (element.hasMetadata()) {
48763        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
48764      }
48765      if (element.hasFixture()) { 
48766        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
48767          composeTestScriptTestScriptFixtureComponent("fixture", e);
48768      }
48769      if (element.hasProfile()) { 
48770        for (Reference e : element.getProfile()) 
48771          composeReference("profile", e);
48772      }
48773      if (element.hasVariable()) { 
48774        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
48775          composeTestScriptTestScriptVariableComponent("variable", e);
48776      }
48777      if (element.hasSetup()) {
48778        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
48779      }
48780      if (element.hasTest()) { 
48781        for (TestScript.TestScriptTestComponent e : element.getTest()) 
48782          composeTestScriptTestScriptTestComponent("test", e);
48783      }
48784      if (element.hasTeardown()) {
48785        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
48786      }
48787  }
48788
48789  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
48790    if (element != null) {
48791      composeElementAttributes(element);
48792      xml.enter(FHIR_NS, name);
48793      composeTestScriptTestScriptOriginComponentElements(element);
48794      composeElementClose(element);
48795      xml.exit(FHIR_NS, name);
48796    }
48797  }
48798
48799  protected void composeTestScriptTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
48800      composeBackboneElementElements(element);
48801      if (element.hasIndexElement()) {
48802        composeInteger("index", element.getIndexElement());
48803      }
48804      if (element.hasProfile()) {
48805        composeCoding("profile", element.getProfile());
48806      }
48807  }
48808
48809  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
48810    if (element != null) {
48811      composeElementAttributes(element);
48812      xml.enter(FHIR_NS, name);
48813      composeTestScriptTestScriptDestinationComponentElements(element);
48814      composeElementClose(element);
48815      xml.exit(FHIR_NS, name);
48816    }
48817  }
48818
48819  protected void composeTestScriptTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
48820      composeBackboneElementElements(element);
48821      if (element.hasIndexElement()) {
48822        composeInteger("index", element.getIndexElement());
48823      }
48824      if (element.hasProfile()) {
48825        composeCoding("profile", element.getProfile());
48826      }
48827  }
48828
48829  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
48830    if (element != null) {
48831      composeElementAttributes(element);
48832      xml.enter(FHIR_NS, name);
48833      composeTestScriptTestScriptMetadataComponentElements(element);
48834      composeElementClose(element);
48835      xml.exit(FHIR_NS, name);
48836    }
48837  }
48838
48839  protected void composeTestScriptTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
48840      composeBackboneElementElements(element);
48841      if (element.hasLink()) { 
48842        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
48843          composeTestScriptTestScriptMetadataLinkComponent("link", e);
48844      }
48845      if (element.hasCapability()) { 
48846        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
48847          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
48848      }
48849  }
48850
48851  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
48852    if (element != null) {
48853      composeElementAttributes(element);
48854      xml.enter(FHIR_NS, name);
48855      composeTestScriptTestScriptMetadataLinkComponentElements(element);
48856      composeElementClose(element);
48857      xml.exit(FHIR_NS, name);
48858    }
48859  }
48860
48861  protected void composeTestScriptTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
48862      composeBackboneElementElements(element);
48863      if (element.hasUrlElement()) {
48864        composeUri("url", element.getUrlElement());
48865      }
48866      if (element.hasDescriptionElement()) {
48867        composeString("description", element.getDescriptionElement());
48868      }
48869  }
48870
48871  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
48872    if (element != null) {
48873      composeElementAttributes(element);
48874      xml.enter(FHIR_NS, name);
48875      composeTestScriptTestScriptMetadataCapabilityComponentElements(element);
48876      composeElementClose(element);
48877      xml.exit(FHIR_NS, name);
48878    }
48879  }
48880
48881  protected void composeTestScriptTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
48882      composeBackboneElementElements(element);
48883      if (element.hasRequiredElement()) {
48884        composeBoolean("required", element.getRequiredElement());
48885      }
48886      if (element.hasValidatedElement()) {
48887        composeBoolean("validated", element.getValidatedElement());
48888      }
48889      if (element.hasDescriptionElement()) {
48890        composeString("description", element.getDescriptionElement());
48891      }
48892      if (element.hasOrigin()) { 
48893        for (IntegerType e : element.getOrigin()) 
48894          composeInteger("origin", e);
48895      }
48896      if (element.hasDestinationElement()) {
48897        composeInteger("destination", element.getDestinationElement());
48898      }
48899      if (element.hasLink()) { 
48900        for (UriType e : element.getLink()) 
48901          composeUri("link", e);
48902      }
48903      if (element.hasCapabilitiesElement()) {
48904        composeCanonical("capabilities", element.getCapabilitiesElement());
48905      }
48906  }
48907
48908  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
48909    if (element != null) {
48910      composeElementAttributes(element);
48911      xml.enter(FHIR_NS, name);
48912      composeTestScriptTestScriptFixtureComponentElements(element);
48913      composeElementClose(element);
48914      xml.exit(FHIR_NS, name);
48915    }
48916  }
48917
48918  protected void composeTestScriptTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
48919      composeBackboneElementElements(element);
48920      if (element.hasAutocreateElement()) {
48921        composeBoolean("autocreate", element.getAutocreateElement());
48922      }
48923      if (element.hasAutodeleteElement()) {
48924        composeBoolean("autodelete", element.getAutodeleteElement());
48925      }
48926      if (element.hasResource()) {
48927        composeReference("resource", element.getResource());
48928      }
48929  }
48930
48931  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
48932    if (element != null) {
48933      composeElementAttributes(element);
48934      xml.enter(FHIR_NS, name);
48935      composeTestScriptTestScriptVariableComponentElements(element);
48936      composeElementClose(element);
48937      xml.exit(FHIR_NS, name);
48938    }
48939  }
48940
48941  protected void composeTestScriptTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
48942      composeBackboneElementElements(element);
48943      if (element.hasNameElement()) {
48944        composeString("name", element.getNameElement());
48945      }
48946      if (element.hasDefaultValueElement()) {
48947        composeString("defaultValue", element.getDefaultValueElement());
48948      }
48949      if (element.hasDescriptionElement()) {
48950        composeString("description", element.getDescriptionElement());
48951      }
48952      if (element.hasExpressionElement()) {
48953        composeString("expression", element.getExpressionElement());
48954      }
48955      if (element.hasHeaderFieldElement()) {
48956        composeString("headerField", element.getHeaderFieldElement());
48957      }
48958      if (element.hasHintElement()) {
48959        composeString("hint", element.getHintElement());
48960      }
48961      if (element.hasPathElement()) {
48962        composeString("path", element.getPathElement());
48963      }
48964      if (element.hasSourceIdElement()) {
48965        composeId("sourceId", element.getSourceIdElement());
48966      }
48967  }
48968
48969  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
48970    if (element != null) {
48971      composeElementAttributes(element);
48972      xml.enter(FHIR_NS, name);
48973      composeTestScriptTestScriptSetupComponentElements(element);
48974      composeElementClose(element);
48975      xml.exit(FHIR_NS, name);
48976    }
48977  }
48978
48979  protected void composeTestScriptTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
48980      composeBackboneElementElements(element);
48981      if (element.hasAction()) { 
48982        for (TestScript.SetupActionComponent e : element.getAction()) 
48983          composeTestScriptSetupActionComponent("action", e);
48984      }
48985  }
48986
48987  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
48988    if (element != null) {
48989      composeElementAttributes(element);
48990      xml.enter(FHIR_NS, name);
48991      composeTestScriptSetupActionComponentElements(element);
48992      composeElementClose(element);
48993      xml.exit(FHIR_NS, name);
48994    }
48995  }
48996
48997  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
48998      composeBackboneElementElements(element);
48999      if (element.hasOperation()) {
49000        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
49001      }
49002      if (element.hasAssert()) {
49003        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
49004      }
49005  }
49006
49007  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
49008    if (element != null) {
49009      composeElementAttributes(element);
49010      xml.enter(FHIR_NS, name);
49011      composeTestScriptSetupActionOperationComponentElements(element);
49012      composeElementClose(element);
49013      xml.exit(FHIR_NS, name);
49014    }
49015  }
49016
49017  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
49018      composeBackboneElementElements(element);
49019      if (element.hasType()) {
49020        composeCoding("type", element.getType());
49021      }
49022      if (element.hasResourceElement()) {
49023        composeCode("resource", element.getResourceElement());
49024      }
49025      if (element.hasLabelElement()) {
49026        composeString("label", element.getLabelElement());
49027      }
49028      if (element.hasDescriptionElement()) {
49029        composeString("description", element.getDescriptionElement());
49030      }
49031      if (element.hasAcceptElement()) {
49032        composeCode("accept", element.getAcceptElement());
49033      }
49034      if (element.hasContentTypeElement()) {
49035        composeCode("contentType", element.getContentTypeElement());
49036      }
49037      if (element.hasDestinationElement()) {
49038        composeInteger("destination", element.getDestinationElement());
49039      }
49040      if (element.hasEncodeRequestUrlElement()) {
49041        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
49042      }
49043      if (element.hasMethodElement())
49044        composeEnumeration("method", element.getMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
49045      if (element.hasOriginElement()) {
49046        composeInteger("origin", element.getOriginElement());
49047      }
49048      if (element.hasParamsElement()) {
49049        composeString("params", element.getParamsElement());
49050      }
49051      if (element.hasRequestHeader()) { 
49052        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
49053          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
49054      }
49055      if (element.hasRequestIdElement()) {
49056        composeId("requestId", element.getRequestIdElement());
49057      }
49058      if (element.hasResponseIdElement()) {
49059        composeId("responseId", element.getResponseIdElement());
49060      }
49061      if (element.hasSourceIdElement()) {
49062        composeId("sourceId", element.getSourceIdElement());
49063      }
49064      if (element.hasTargetIdElement()) {
49065        composeId("targetId", element.getTargetIdElement());
49066      }
49067      if (element.hasUrlElement()) {
49068        composeString("url", element.getUrlElement());
49069      }
49070  }
49071
49072  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
49073    if (element != null) {
49074      composeElementAttributes(element);
49075      xml.enter(FHIR_NS, name);
49076      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
49077      composeElementClose(element);
49078      xml.exit(FHIR_NS, name);
49079    }
49080  }
49081
49082  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
49083      composeBackboneElementElements(element);
49084      if (element.hasFieldElement()) {
49085        composeString("field", element.getFieldElement());
49086      }
49087      if (element.hasValueElement()) {
49088        composeString("value", element.getValueElement());
49089      }
49090  }
49091
49092  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
49093    if (element != null) {
49094      composeElementAttributes(element);
49095      xml.enter(FHIR_NS, name);
49096      composeTestScriptSetupActionAssertComponentElements(element);
49097      composeElementClose(element);
49098      xml.exit(FHIR_NS, name);
49099    }
49100  }
49101
49102  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
49103      composeBackboneElementElements(element);
49104      if (element.hasLabelElement()) {
49105        composeString("label", element.getLabelElement());
49106      }
49107      if (element.hasDescriptionElement()) {
49108        composeString("description", element.getDescriptionElement());
49109      }
49110      if (element.hasDirectionElement())
49111        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
49112      if (element.hasCompareToSourceIdElement()) {
49113        composeString("compareToSourceId", element.getCompareToSourceIdElement());
49114      }
49115      if (element.hasCompareToSourceExpressionElement()) {
49116        composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
49117      }
49118      if (element.hasCompareToSourcePathElement()) {
49119        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
49120      }
49121      if (element.hasContentTypeElement()) {
49122        composeCode("contentType", element.getContentTypeElement());
49123      }
49124      if (element.hasExpressionElement()) {
49125        composeString("expression", element.getExpressionElement());
49126      }
49127      if (element.hasHeaderFieldElement()) {
49128        composeString("headerField", element.getHeaderFieldElement());
49129      }
49130      if (element.hasMinimumIdElement()) {
49131        composeString("minimumId", element.getMinimumIdElement());
49132      }
49133      if (element.hasNavigationLinksElement()) {
49134        composeBoolean("navigationLinks", element.getNavigationLinksElement());
49135      }
49136      if (element.hasOperatorElement())
49137        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
49138      if (element.hasPathElement()) {
49139        composeString("path", element.getPathElement());
49140      }
49141      if (element.hasRequestMethodElement())
49142        composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
49143      if (element.hasRequestURLElement()) {
49144        composeString("requestURL", element.getRequestURLElement());
49145      }
49146      if (element.hasResourceElement()) {
49147        composeCode("resource", element.getResourceElement());
49148      }
49149      if (element.hasResponseElement())
49150        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
49151      if (element.hasResponseCodeElement()) {
49152        composeString("responseCode", element.getResponseCodeElement());
49153      }
49154      if (element.hasSourceIdElement()) {
49155        composeId("sourceId", element.getSourceIdElement());
49156      }
49157      if (element.hasValidateProfileIdElement()) {
49158        composeId("validateProfileId", element.getValidateProfileIdElement());
49159      }
49160      if (element.hasValueElement()) {
49161        composeString("value", element.getValueElement());
49162      }
49163      if (element.hasWarningOnlyElement()) {
49164        composeBoolean("warningOnly", element.getWarningOnlyElement());
49165      }
49166  }
49167
49168  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
49169    if (element != null) {
49170      composeElementAttributes(element);
49171      xml.enter(FHIR_NS, name);
49172      composeTestScriptTestScriptTestComponentElements(element);
49173      composeElementClose(element);
49174      xml.exit(FHIR_NS, name);
49175    }
49176  }
49177
49178  protected void composeTestScriptTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
49179      composeBackboneElementElements(element);
49180      if (element.hasNameElement()) {
49181        composeString("name", element.getNameElement());
49182      }
49183      if (element.hasDescriptionElement()) {
49184        composeString("description", element.getDescriptionElement());
49185      }
49186      if (element.hasAction()) { 
49187        for (TestScript.TestActionComponent e : element.getAction()) 
49188          composeTestScriptTestActionComponent("action", e);
49189      }
49190  }
49191
49192  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
49193    if (element != null) {
49194      composeElementAttributes(element);
49195      xml.enter(FHIR_NS, name);
49196      composeTestScriptTestActionComponentElements(element);
49197      composeElementClose(element);
49198      xml.exit(FHIR_NS, name);
49199    }
49200  }
49201
49202  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
49203      composeBackboneElementElements(element);
49204      if (element.hasOperation()) {
49205        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
49206      }
49207      if (element.hasAssert()) {
49208        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
49209      }
49210  }
49211
49212  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
49213    if (element != null) {
49214      composeElementAttributes(element);
49215      xml.enter(FHIR_NS, name);
49216      composeTestScriptTestScriptTeardownComponentElements(element);
49217      composeElementClose(element);
49218      xml.exit(FHIR_NS, name);
49219    }
49220  }
49221
49222  protected void composeTestScriptTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
49223      composeBackboneElementElements(element);
49224      if (element.hasAction()) { 
49225        for (TestScript.TeardownActionComponent e : element.getAction()) 
49226          composeTestScriptTeardownActionComponent("action", e);
49227      }
49228  }
49229
49230  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
49231    if (element != null) {
49232      composeElementAttributes(element);
49233      xml.enter(FHIR_NS, name);
49234      composeTestScriptTeardownActionComponentElements(element);
49235      composeElementClose(element);
49236      xml.exit(FHIR_NS, name);
49237    }
49238  }
49239
49240  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
49241      composeBackboneElementElements(element);
49242      if (element.hasOperation()) {
49243        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
49244      }
49245  }
49246
49247  protected void composeValueSet(String name, ValueSet element) throws IOException {
49248    if (element != null) {
49249      composeDomainResourceAttributes(element);
49250      xml.enter(FHIR_NS, name);
49251      composeValueSetElements(element);
49252      composeElementClose(element);
49253      xml.exit(FHIR_NS, name);
49254    }
49255  }
49256
49257  protected void composeValueSetElements(ValueSet element) throws IOException {
49258      composeDomainResourceElements(element);
49259      if (element.hasUrlElement()) {
49260        composeUri("url", element.getUrlElement());
49261      }
49262      if (element.hasIdentifier()) { 
49263        for (Identifier e : element.getIdentifier()) 
49264          composeIdentifier("identifier", e);
49265      }
49266      if (element.hasVersionElement()) {
49267        composeString("version", element.getVersionElement());
49268      }
49269      if (element.hasNameElement()) {
49270        composeString("name", element.getNameElement());
49271      }
49272      if (element.hasTitleElement()) {
49273        composeString("title", element.getTitleElement());
49274      }
49275      if (element.hasStatusElement())
49276        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49277      if (element.hasExperimentalElement()) {
49278        composeBoolean("experimental", element.getExperimentalElement());
49279      }
49280      if (element.hasDateElement()) {
49281        composeDateTime("date", element.getDateElement());
49282      }
49283      if (element.hasPublisherElement()) {
49284        composeString("publisher", element.getPublisherElement());
49285      }
49286      if (element.hasContact()) { 
49287        for (ContactDetail e : element.getContact()) 
49288          composeContactDetail("contact", e);
49289      }
49290      if (element.hasDescriptionElement()) {
49291        composeMarkdown("description", element.getDescriptionElement());
49292      }
49293      if (element.hasUseContext()) { 
49294        for (UsageContext e : element.getUseContext()) 
49295          composeUsageContext("useContext", e);
49296      }
49297      if (element.hasJurisdiction()) { 
49298        for (CodeableConcept e : element.getJurisdiction()) 
49299          composeCodeableConcept("jurisdiction", e);
49300      }
49301      if (element.hasImmutableElement()) {
49302        composeBoolean("immutable", element.getImmutableElement());
49303      }
49304      if (element.hasPurposeElement()) {
49305        composeMarkdown("purpose", element.getPurposeElement());
49306      }
49307      if (element.hasCopyrightElement()) {
49308        composeMarkdown("copyright", element.getCopyrightElement());
49309      }
49310      if (element.hasCompose()) {
49311        composeValueSetValueSetComposeComponent("compose", element.getCompose());
49312      }
49313      if (element.hasExpansion()) {
49314        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
49315      }
49316  }
49317
49318  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
49319    if (element != null) {
49320      composeElementAttributes(element);
49321      xml.enter(FHIR_NS, name);
49322      composeValueSetValueSetComposeComponentElements(element);
49323      composeElementClose(element);
49324      xml.exit(FHIR_NS, name);
49325    }
49326  }
49327
49328  protected void composeValueSetValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
49329      composeBackboneElementElements(element);
49330      if (element.hasLockedDateElement()) {
49331        composeDate("lockedDate", element.getLockedDateElement());
49332      }
49333      if (element.hasInactiveElement()) {
49334        composeBoolean("inactive", element.getInactiveElement());
49335      }
49336      if (element.hasInclude()) { 
49337        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
49338          composeValueSetConceptSetComponent("include", e);
49339      }
49340      if (element.hasExclude()) { 
49341        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
49342          composeValueSetConceptSetComponent("exclude", e);
49343      }
49344  }
49345
49346  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
49347    if (element != null) {
49348      composeElementAttributes(element);
49349      xml.enter(FHIR_NS, name);
49350      composeValueSetConceptSetComponentElements(element);
49351      composeElementClose(element);
49352      xml.exit(FHIR_NS, name);
49353    }
49354  }
49355
49356  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
49357      composeBackboneElementElements(element);
49358      if (element.hasSystemElement()) {
49359        composeUri("system", element.getSystemElement());
49360      }
49361      if (element.hasVersionElement()) {
49362        composeString("version", element.getVersionElement());
49363      }
49364      if (element.hasConcept()) { 
49365        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
49366          composeValueSetConceptReferenceComponent("concept", e);
49367      }
49368      if (element.hasFilter()) { 
49369        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
49370          composeValueSetConceptSetFilterComponent("filter", e);
49371      }
49372      if (element.hasValueSet()) { 
49373        for (CanonicalType e : element.getValueSet()) 
49374          composeCanonical("valueSet", e);
49375      }
49376  }
49377
49378  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
49379    if (element != null) {
49380      composeElementAttributes(element);
49381      xml.enter(FHIR_NS, name);
49382      composeValueSetConceptReferenceComponentElements(element);
49383      composeElementClose(element);
49384      xml.exit(FHIR_NS, name);
49385    }
49386  }
49387
49388  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
49389      composeBackboneElementElements(element);
49390      if (element.hasCodeElement()) {
49391        composeCode("code", element.getCodeElement());
49392      }
49393      if (element.hasDisplayElement()) {
49394        composeString("display", element.getDisplayElement());
49395      }
49396      if (element.hasDesignation()) { 
49397        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
49398          composeValueSetConceptReferenceDesignationComponent("designation", e);
49399      }
49400  }
49401
49402  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
49403    if (element != null) {
49404      composeElementAttributes(element);
49405      xml.enter(FHIR_NS, name);
49406      composeValueSetConceptReferenceDesignationComponentElements(element);
49407      composeElementClose(element);
49408      xml.exit(FHIR_NS, name);
49409    }
49410  }
49411
49412  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
49413      composeBackboneElementElements(element);
49414      if (element.hasLanguageElement()) {
49415        composeCode("language", element.getLanguageElement());
49416      }
49417      if (element.hasUse()) {
49418        composeCoding("use", element.getUse());
49419      }
49420      if (element.hasValueElement()) {
49421        composeString("value", element.getValueElement());
49422      }
49423  }
49424
49425  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
49426    if (element != null) {
49427      composeElementAttributes(element);
49428      xml.enter(FHIR_NS, name);
49429      composeValueSetConceptSetFilterComponentElements(element);
49430      composeElementClose(element);
49431      xml.exit(FHIR_NS, name);
49432    }
49433  }
49434
49435  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
49436      composeBackboneElementElements(element);
49437      if (element.hasPropertyElement()) {
49438        composeCode("property", element.getPropertyElement());
49439      }
49440      if (element.hasOpElement())
49441        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
49442      if (element.hasValueElement()) {
49443        composeString("value", element.getValueElement());
49444      }
49445  }
49446
49447  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
49448    if (element != null) {
49449      composeElementAttributes(element);
49450      xml.enter(FHIR_NS, name);
49451      composeValueSetValueSetExpansionComponentElements(element);
49452      composeElementClose(element);
49453      xml.exit(FHIR_NS, name);
49454    }
49455  }
49456
49457  protected void composeValueSetValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
49458      composeBackboneElementElements(element);
49459      if (element.hasIdentifierElement()) {
49460        composeUri("identifier", element.getIdentifierElement());
49461      }
49462      if (element.hasTimestampElement()) {
49463        composeDateTime("timestamp", element.getTimestampElement());
49464      }
49465      if (element.hasTotalElement()) {
49466        composeInteger("total", element.getTotalElement());
49467      }
49468      if (element.hasOffsetElement()) {
49469        composeInteger("offset", element.getOffsetElement());
49470      }
49471      if (element.hasParameter()) { 
49472        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
49473          composeValueSetValueSetExpansionParameterComponent("parameter", e);
49474      }
49475      if (element.hasContains()) { 
49476        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
49477          composeValueSetValueSetExpansionContainsComponent("contains", e);
49478      }
49479  }
49480
49481  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
49482    if (element != null) {
49483      composeElementAttributes(element);
49484      xml.enter(FHIR_NS, name);
49485      composeValueSetValueSetExpansionParameterComponentElements(element);
49486      composeElementClose(element);
49487      xml.exit(FHIR_NS, name);
49488    }
49489  }
49490
49491  protected void composeValueSetValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
49492      composeBackboneElementElements(element);
49493      if (element.hasNameElement()) {
49494        composeString("name", element.getNameElement());
49495      }
49496      if (element.hasValue()) {
49497        composeType("value", element.getValue());
49498      }  }
49499
49500  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
49501    if (element != null) {
49502      composeElementAttributes(element);
49503      xml.enter(FHIR_NS, name);
49504      composeValueSetValueSetExpansionContainsComponentElements(element);
49505      composeElementClose(element);
49506      xml.exit(FHIR_NS, name);
49507    }
49508  }
49509
49510  protected void composeValueSetValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
49511      composeBackboneElementElements(element);
49512      if (element.hasSystemElement()) {
49513        composeUri("system", element.getSystemElement());
49514      }
49515      if (element.hasAbstractElement()) {
49516        composeBoolean("abstract", element.getAbstractElement());
49517      }
49518      if (element.hasInactiveElement()) {
49519        composeBoolean("inactive", element.getInactiveElement());
49520      }
49521      if (element.hasVersionElement()) {
49522        composeString("version", element.getVersionElement());
49523      }
49524      if (element.hasCodeElement()) {
49525        composeCode("code", element.getCodeElement());
49526      }
49527      if (element.hasDisplayElement()) {
49528        composeString("display", element.getDisplayElement());
49529      }
49530      if (element.hasDesignation()) { 
49531        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
49532          composeValueSetConceptReferenceDesignationComponent("designation", e);
49533      }
49534      if (element.hasContains()) { 
49535        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
49536          composeValueSetValueSetExpansionContainsComponent("contains", e);
49537      }
49538  }
49539
49540  protected void composeVerificationResult(String name, VerificationResult element) throws IOException {
49541    if (element != null) {
49542      composeDomainResourceAttributes(element);
49543      xml.enter(FHIR_NS, name);
49544      composeVerificationResultElements(element);
49545      composeElementClose(element);
49546      xml.exit(FHIR_NS, name);
49547    }
49548  }
49549
49550  protected void composeVerificationResultElements(VerificationResult element) throws IOException {
49551      composeDomainResourceElements(element);
49552      if (element.hasTarget()) { 
49553        for (Reference e : element.getTarget()) 
49554          composeReference("target", e);
49555      }
49556      if (element.hasTargetLocation()) { 
49557        for (StringType e : element.getTargetLocation()) 
49558          composeString("targetLocation", e);
49559      }
49560      if (element.hasNeed()) {
49561        composeCodeableConcept("need", element.getNeed());
49562      }
49563      if (element.hasStatusElement())
49564        composeEnumeration("status", element.getStatusElement(), new VerificationResult.StatusEnumFactory());
49565      if (element.hasStatusDateElement()) {
49566        composeDateTime("statusDate", element.getStatusDateElement());
49567      }
49568      if (element.hasValidationType()) {
49569        composeCodeableConcept("validationType", element.getValidationType());
49570      }
49571      if (element.hasValidationProcess()) { 
49572        for (CodeableConcept e : element.getValidationProcess()) 
49573          composeCodeableConcept("validationProcess", e);
49574      }
49575      if (element.hasFrequency()) {
49576        composeTiming("frequency", element.getFrequency());
49577      }
49578      if (element.hasLastPerformedElement()) {
49579        composeDateTime("lastPerformed", element.getLastPerformedElement());
49580      }
49581      if (element.hasNextScheduledElement()) {
49582        composeDate("nextScheduled", element.getNextScheduledElement());
49583      }
49584      if (element.hasFailureAction()) {
49585        composeCodeableConcept("failureAction", element.getFailureAction());
49586      }
49587      if (element.hasPrimarySource()) { 
49588        for (VerificationResult.VerificationResultPrimarySourceComponent e : element.getPrimarySource()) 
49589          composeVerificationResultVerificationResultPrimarySourceComponent("primarySource", e);
49590      }
49591      if (element.hasAttestation()) {
49592        composeVerificationResultVerificationResultAttestationComponent("attestation", element.getAttestation());
49593      }
49594      if (element.hasValidator()) { 
49595        for (VerificationResult.VerificationResultValidatorComponent e : element.getValidator()) 
49596          composeVerificationResultVerificationResultValidatorComponent("validator", e);
49597      }
49598  }
49599
49600  protected void composeVerificationResultVerificationResultPrimarySourceComponent(String name, VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
49601    if (element != null) {
49602      composeElementAttributes(element);
49603      xml.enter(FHIR_NS, name);
49604      composeVerificationResultVerificationResultPrimarySourceComponentElements(element);
49605      composeElementClose(element);
49606      xml.exit(FHIR_NS, name);
49607    }
49608  }
49609
49610  protected void composeVerificationResultVerificationResultPrimarySourceComponentElements(VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
49611      composeBackboneElementElements(element);
49612      if (element.hasWho()) {
49613        composeReference("who", element.getWho());
49614      }
49615      if (element.hasType()) { 
49616        for (CodeableConcept e : element.getType()) 
49617          composeCodeableConcept("type", e);
49618      }
49619      if (element.hasCommunicationMethod()) { 
49620        for (CodeableConcept e : element.getCommunicationMethod()) 
49621          composeCodeableConcept("communicationMethod", e);
49622      }
49623      if (element.hasValidationStatus()) {
49624        composeCodeableConcept("validationStatus", element.getValidationStatus());
49625      }
49626      if (element.hasValidationDateElement()) {
49627        composeDateTime("validationDate", element.getValidationDateElement());
49628      }
49629      if (element.hasCanPushUpdates()) {
49630        composeCodeableConcept("canPushUpdates", element.getCanPushUpdates());
49631      }
49632      if (element.hasPushTypeAvailable()) { 
49633        for (CodeableConcept e : element.getPushTypeAvailable()) 
49634          composeCodeableConcept("pushTypeAvailable", e);
49635      }
49636  }
49637
49638  protected void composeVerificationResultVerificationResultAttestationComponent(String name, VerificationResult.VerificationResultAttestationComponent element) throws IOException {
49639    if (element != null) {
49640      composeElementAttributes(element);
49641      xml.enter(FHIR_NS, name);
49642      composeVerificationResultVerificationResultAttestationComponentElements(element);
49643      composeElementClose(element);
49644      xml.exit(FHIR_NS, name);
49645    }
49646  }
49647
49648  protected void composeVerificationResultVerificationResultAttestationComponentElements(VerificationResult.VerificationResultAttestationComponent element) throws IOException {
49649      composeBackboneElementElements(element);
49650      if (element.hasWho()) {
49651        composeReference("who", element.getWho());
49652      }
49653      if (element.hasOnBehalfOf()) {
49654        composeReference("onBehalfOf", element.getOnBehalfOf());
49655      }
49656      if (element.hasCommunicationMethod()) {
49657        composeCodeableConcept("communicationMethod", element.getCommunicationMethod());
49658      }
49659      if (element.hasDateElement()) {
49660        composeDate("date", element.getDateElement());
49661      }
49662      if (element.hasSourceIdentityCertificateElement()) {
49663        composeString("sourceIdentityCertificate", element.getSourceIdentityCertificateElement());
49664      }
49665      if (element.hasProxyIdentityCertificateElement()) {
49666        composeString("proxyIdentityCertificate", element.getProxyIdentityCertificateElement());
49667      }
49668      if (element.hasProxySignature()) {
49669        composeSignature("proxySignature", element.getProxySignature());
49670      }
49671      if (element.hasSourceSignature()) {
49672        composeSignature("sourceSignature", element.getSourceSignature());
49673      }
49674  }
49675
49676  protected void composeVerificationResultVerificationResultValidatorComponent(String name, VerificationResult.VerificationResultValidatorComponent element) throws IOException {
49677    if (element != null) {
49678      composeElementAttributes(element);
49679      xml.enter(FHIR_NS, name);
49680      composeVerificationResultVerificationResultValidatorComponentElements(element);
49681      composeElementClose(element);
49682      xml.exit(FHIR_NS, name);
49683    }
49684  }
49685
49686  protected void composeVerificationResultVerificationResultValidatorComponentElements(VerificationResult.VerificationResultValidatorComponent element) throws IOException {
49687      composeBackboneElementElements(element);
49688      if (element.hasOrganization()) {
49689        composeReference("organization", element.getOrganization());
49690      }
49691      if (element.hasIdentityCertificateElement()) {
49692        composeString("identityCertificate", element.getIdentityCertificateElement());
49693      }
49694      if (element.hasAttestationSignature()) {
49695        composeSignature("attestationSignature", element.getAttestationSignature());
49696      }
49697  }
49698
49699  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
49700    if (element != null) {
49701      composeDomainResourceAttributes(element);
49702      xml.enter(FHIR_NS, name);
49703      composeVisionPrescriptionElements(element);
49704      composeElementClose(element);
49705      xml.exit(FHIR_NS, name);
49706    }
49707  }
49708
49709  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
49710      composeDomainResourceElements(element);
49711      if (element.hasIdentifier()) { 
49712        for (Identifier e : element.getIdentifier()) 
49713          composeIdentifier("identifier", e);
49714      }
49715      if (element.hasStatusElement())
49716        composeEnumeration("status", element.getStatusElement(), new VisionPrescription.VisionStatusEnumFactory());
49717      if (element.hasCreatedElement()) {
49718        composeDateTime("created", element.getCreatedElement());
49719      }
49720      if (element.hasPatient()) {
49721        composeReference("patient", element.getPatient());
49722      }
49723      if (element.hasEncounter()) {
49724        composeReference("encounter", element.getEncounter());
49725      }
49726      if (element.hasDateWrittenElement()) {
49727        composeDateTime("dateWritten", element.getDateWrittenElement());
49728      }
49729      if (element.hasPrescriber()) {
49730        composeReference("prescriber", element.getPrescriber());
49731      }
49732      if (element.hasLensSpecification()) { 
49733        for (VisionPrescription.VisionPrescriptionLensSpecificationComponent e : element.getLensSpecification()) 
49734          composeVisionPrescriptionVisionPrescriptionLensSpecificationComponent("lensSpecification", e);
49735      }
49736  }
49737
49738  protected void composeVisionPrescriptionVisionPrescriptionLensSpecificationComponent(String name, VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
49739    if (element != null) {
49740      composeElementAttributes(element);
49741      xml.enter(FHIR_NS, name);
49742      composeVisionPrescriptionVisionPrescriptionLensSpecificationComponentElements(element);
49743      composeElementClose(element);
49744      xml.exit(FHIR_NS, name);
49745    }
49746  }
49747
49748  protected void composeVisionPrescriptionVisionPrescriptionLensSpecificationComponentElements(VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
49749      composeBackboneElementElements(element);
49750      if (element.hasProduct()) {
49751        composeCodeableConcept("product", element.getProduct());
49752      }
49753      if (element.hasEyeElement())
49754        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
49755      if (element.hasSphereElement()) {
49756        composeDecimal("sphere", element.getSphereElement());
49757      }
49758      if (element.hasCylinderElement()) {
49759        composeDecimal("cylinder", element.getCylinderElement());
49760      }
49761      if (element.hasAxisElement()) {
49762        composeInteger("axis", element.getAxisElement());
49763      }
49764      if (element.hasPrism()) { 
49765        for (VisionPrescription.PrismComponent e : element.getPrism()) 
49766          composeVisionPrescriptionPrismComponent("prism", e);
49767      }
49768      if (element.hasAddElement()) {
49769        composeDecimal("add", element.getAddElement());
49770      }
49771      if (element.hasPowerElement()) {
49772        composeDecimal("power", element.getPowerElement());
49773      }
49774      if (element.hasBackCurveElement()) {
49775        composeDecimal("backCurve", element.getBackCurveElement());
49776      }
49777      if (element.hasDiameterElement()) {
49778        composeDecimal("diameter", element.getDiameterElement());
49779      }
49780      if (element.hasDuration()) {
49781        composeQuantity("duration", element.getDuration());
49782      }
49783      if (element.hasColorElement()) {
49784        composeString("color", element.getColorElement());
49785      }
49786      if (element.hasBrandElement()) {
49787        composeString("brand", element.getBrandElement());
49788      }
49789      if (element.hasNote()) { 
49790        for (Annotation e : element.getNote()) 
49791          composeAnnotation("note", e);
49792      }
49793  }
49794
49795  protected void composeVisionPrescriptionPrismComponent(String name, VisionPrescription.PrismComponent element) throws IOException {
49796    if (element != null) {
49797      composeElementAttributes(element);
49798      xml.enter(FHIR_NS, name);
49799      composeVisionPrescriptionPrismComponentElements(element);
49800      composeElementClose(element);
49801      xml.exit(FHIR_NS, name);
49802    }
49803  }
49804
49805  protected void composeVisionPrescriptionPrismComponentElements(VisionPrescription.PrismComponent element) throws IOException {
49806      composeBackboneElementElements(element);
49807      if (element.hasAmountElement()) {
49808        composeDecimal("amount", element.getAmountElement());
49809      }
49810      if (element.hasBaseElement())
49811        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
49812  }
49813
49814  @Override
49815  protected void composeResource(Resource resource) throws IOException {
49816    if (resource instanceof Parameters)
49817      composeParameters("Parameters", (Parameters)resource);
49818    else if (resource instanceof Account)
49819      composeAccount("Account", (Account)resource);
49820    else if (resource instanceof ActivityDefinition)
49821      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
49822    else if (resource instanceof AdverseEvent)
49823      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
49824    else if (resource instanceof AllergyIntolerance)
49825      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
49826    else if (resource instanceof Appointment)
49827      composeAppointment("Appointment", (Appointment)resource);
49828    else if (resource instanceof AppointmentResponse)
49829      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
49830    else if (resource instanceof AuditEvent)
49831      composeAuditEvent("AuditEvent", (AuditEvent)resource);
49832    else if (resource instanceof Basic)
49833      composeBasic("Basic", (Basic)resource);
49834    else if (resource instanceof Binary)
49835      composeBinary("Binary", (Binary)resource);
49836    else if (resource instanceof BiologicallyDerivedProduct)
49837      composeBiologicallyDerivedProduct("BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource);
49838    else if (resource instanceof BodyStructure)
49839      composeBodyStructure("BodyStructure", (BodyStructure)resource);
49840    else if (resource instanceof Bundle)
49841      composeBundle("Bundle", (Bundle)resource);
49842    else if (resource instanceof CapabilityStatement)
49843      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
49844    else if (resource instanceof CarePlan)
49845      composeCarePlan("CarePlan", (CarePlan)resource);
49846    else if (resource instanceof CareTeam)
49847      composeCareTeam("CareTeam", (CareTeam)resource);
49848    else if (resource instanceof CatalogEntry)
49849      composeCatalogEntry("CatalogEntry", (CatalogEntry)resource);
49850    else if (resource instanceof ChargeItem)
49851      composeChargeItem("ChargeItem", (ChargeItem)resource);
49852    else if (resource instanceof ChargeItemDefinition)
49853      composeChargeItemDefinition("ChargeItemDefinition", (ChargeItemDefinition)resource);
49854    else if (resource instanceof Claim)
49855      composeClaim("Claim", (Claim)resource);
49856    else if (resource instanceof ClaimResponse)
49857      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
49858    else if (resource instanceof ClinicalImpression)
49859      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
49860    else if (resource instanceof CodeSystem)
49861      composeCodeSystem("CodeSystem", (CodeSystem)resource);
49862    else if (resource instanceof Communication)
49863      composeCommunication("Communication", (Communication)resource);
49864    else if (resource instanceof CommunicationRequest)
49865      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
49866    else if (resource instanceof CompartmentDefinition)
49867      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
49868    else if (resource instanceof Composition)
49869      composeComposition("Composition", (Composition)resource);
49870    else if (resource instanceof ConceptMap)
49871      composeConceptMap("ConceptMap", (ConceptMap)resource);
49872    else if (resource instanceof Condition)
49873      composeCondition("Condition", (Condition)resource);
49874    else if (resource instanceof Consent)
49875      composeConsent("Consent", (Consent)resource);
49876    else if (resource instanceof Contract)
49877      composeContract("Contract", (Contract)resource);
49878    else if (resource instanceof Coverage)
49879      composeCoverage("Coverage", (Coverage)resource);
49880    else if (resource instanceof CoverageEligibilityRequest)
49881      composeCoverageEligibilityRequest("CoverageEligibilityRequest", (CoverageEligibilityRequest)resource);
49882    else if (resource instanceof CoverageEligibilityResponse)
49883      composeCoverageEligibilityResponse("CoverageEligibilityResponse", (CoverageEligibilityResponse)resource);
49884    else if (resource instanceof DetectedIssue)
49885      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
49886    else if (resource instanceof Device)
49887      composeDevice("Device", (Device)resource);
49888    else if (resource instanceof DeviceDefinition)
49889      composeDeviceDefinition("DeviceDefinition", (DeviceDefinition)resource);
49890    else if (resource instanceof DeviceMetric)
49891      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
49892    else if (resource instanceof DeviceRequest)
49893      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
49894    else if (resource instanceof DeviceUseStatement)
49895      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
49896    else if (resource instanceof DiagnosticReport)
49897      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
49898    else if (resource instanceof DocumentManifest)
49899      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
49900    else if (resource instanceof DocumentReference)
49901      composeDocumentReference("DocumentReference", (DocumentReference)resource);
49902    else if (resource instanceof EffectEvidenceSynthesis)
49903      composeEffectEvidenceSynthesis("EffectEvidenceSynthesis", (EffectEvidenceSynthesis)resource);
49904    else if (resource instanceof Encounter)
49905      composeEncounter("Encounter", (Encounter)resource);
49906    else if (resource instanceof Endpoint)
49907      composeEndpoint("Endpoint", (Endpoint)resource);
49908    else if (resource instanceof EnrollmentRequest)
49909      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
49910    else if (resource instanceof EnrollmentResponse)
49911      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
49912    else if (resource instanceof EpisodeOfCare)
49913      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
49914    else if (resource instanceof EventDefinition)
49915      composeEventDefinition("EventDefinition", (EventDefinition)resource);
49916    else if (resource instanceof Evidence)
49917      composeEvidence("Evidence", (Evidence)resource);
49918    else if (resource instanceof EvidenceVariable)
49919      composeEvidenceVariable("EvidenceVariable", (EvidenceVariable)resource);
49920    else if (resource instanceof ExampleScenario)
49921      composeExampleScenario("ExampleScenario", (ExampleScenario)resource);
49922    else if (resource instanceof ExplanationOfBenefit)
49923      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
49924    else if (resource instanceof FamilyMemberHistory)
49925      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
49926    else if (resource instanceof Flag)
49927      composeFlag("Flag", (Flag)resource);
49928    else if (resource instanceof Goal)
49929      composeGoal("Goal", (Goal)resource);
49930    else if (resource instanceof GraphDefinition)
49931      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
49932    else if (resource instanceof Group)
49933      composeGroup("Group", (Group)resource);
49934    else if (resource instanceof GuidanceResponse)
49935      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
49936    else if (resource instanceof HealthcareService)
49937      composeHealthcareService("HealthcareService", (HealthcareService)resource);
49938    else if (resource instanceof ImagingStudy)
49939      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
49940    else if (resource instanceof Immunization)
49941      composeImmunization("Immunization", (Immunization)resource);
49942    else if (resource instanceof ImmunizationEvaluation)
49943      composeImmunizationEvaluation("ImmunizationEvaluation", (ImmunizationEvaluation)resource);
49944    else if (resource instanceof ImmunizationRecommendation)
49945      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
49946    else if (resource instanceof ImplementationGuide)
49947      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
49948    else if (resource instanceof InsurancePlan)
49949      composeInsurancePlan("InsurancePlan", (InsurancePlan)resource);
49950    else if (resource instanceof Invoice)
49951      composeInvoice("Invoice", (Invoice)resource);
49952    else if (resource instanceof Library)
49953      composeLibrary("Library", (Library)resource);
49954    else if (resource instanceof Linkage)
49955      composeLinkage("Linkage", (Linkage)resource);
49956    else if (resource instanceof ListResource)
49957      composeListResource("List", (ListResource)resource);
49958    else if (resource instanceof Location)
49959      composeLocation("Location", (Location)resource);
49960    else if (resource instanceof Measure)
49961      composeMeasure("Measure", (Measure)resource);
49962    else if (resource instanceof MeasureReport)
49963      composeMeasureReport("MeasureReport", (MeasureReport)resource);
49964    else if (resource instanceof Media)
49965      composeMedia("Media", (Media)resource);
49966    else if (resource instanceof Medication)
49967      composeMedication("Medication", (Medication)resource);
49968    else if (resource instanceof MedicationAdministration)
49969      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
49970    else if (resource instanceof MedicationDispense)
49971      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
49972    else if (resource instanceof MedicationKnowledge)
49973      composeMedicationKnowledge("MedicationKnowledge", (MedicationKnowledge)resource);
49974    else if (resource instanceof MedicationRequest)
49975      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
49976    else if (resource instanceof MedicationStatement)
49977      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
49978    else if (resource instanceof MedicinalProduct)
49979      composeMedicinalProduct("MedicinalProduct", (MedicinalProduct)resource);
49980    else if (resource instanceof MedicinalProductAuthorization)
49981      composeMedicinalProductAuthorization("MedicinalProductAuthorization", (MedicinalProductAuthorization)resource);
49982    else if (resource instanceof MedicinalProductContraindication)
49983      composeMedicinalProductContraindication("MedicinalProductContraindication", (MedicinalProductContraindication)resource);
49984    else if (resource instanceof MedicinalProductIndication)
49985      composeMedicinalProductIndication("MedicinalProductIndication", (MedicinalProductIndication)resource);
49986    else if (resource instanceof MedicinalProductIngredient)
49987      composeMedicinalProductIngredient("MedicinalProductIngredient", (MedicinalProductIngredient)resource);
49988    else if (resource instanceof MedicinalProductInteraction)
49989      composeMedicinalProductInteraction("MedicinalProductInteraction", (MedicinalProductInteraction)resource);
49990    else if (resource instanceof MedicinalProductManufactured)
49991      composeMedicinalProductManufactured("MedicinalProductManufactured", (MedicinalProductManufactured)resource);
49992    else if (resource instanceof MedicinalProductPackaged)
49993      composeMedicinalProductPackaged("MedicinalProductPackaged", (MedicinalProductPackaged)resource);
49994    else if (resource instanceof MedicinalProductPharmaceutical)
49995      composeMedicinalProductPharmaceutical("MedicinalProductPharmaceutical", (MedicinalProductPharmaceutical)resource);
49996    else if (resource instanceof MedicinalProductUndesirableEffect)
49997      composeMedicinalProductUndesirableEffect("MedicinalProductUndesirableEffect", (MedicinalProductUndesirableEffect)resource);
49998    else if (resource instanceof MessageDefinition)
49999      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
50000    else if (resource instanceof MessageHeader)
50001      composeMessageHeader("MessageHeader", (MessageHeader)resource);
50002    else if (resource instanceof MolecularSequence)
50003      composeMolecularSequence("MolecularSequence", (MolecularSequence)resource);
50004    else if (resource instanceof NamingSystem)
50005      composeNamingSystem("NamingSystem", (NamingSystem)resource);
50006    else if (resource instanceof NutritionOrder)
50007      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
50008    else if (resource instanceof Observation)
50009      composeObservation("Observation", (Observation)resource);
50010    else if (resource instanceof ObservationDefinition)
50011      composeObservationDefinition("ObservationDefinition", (ObservationDefinition)resource);
50012    else if (resource instanceof OperationDefinition)
50013      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
50014    else if (resource instanceof OperationOutcome)
50015      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
50016    else if (resource instanceof Organization)
50017      composeOrganization("Organization", (Organization)resource);
50018    else if (resource instanceof OrganizationAffiliation)
50019      composeOrganizationAffiliation("OrganizationAffiliation", (OrganizationAffiliation)resource);
50020    else if (resource instanceof Patient)
50021      composePatient("Patient", (Patient)resource);
50022    else if (resource instanceof PaymentNotice)
50023      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
50024    else if (resource instanceof PaymentReconciliation)
50025      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
50026    else if (resource instanceof Person)
50027      composePerson("Person", (Person)resource);
50028    else if (resource instanceof PlanDefinition)
50029      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
50030    else if (resource instanceof Practitioner)
50031      composePractitioner("Practitioner", (Practitioner)resource);
50032    else if (resource instanceof PractitionerRole)
50033      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
50034    else if (resource instanceof Procedure)
50035      composeProcedure("Procedure", (Procedure)resource);
50036    else if (resource instanceof Provenance)
50037      composeProvenance("Provenance", (Provenance)resource);
50038    else if (resource instanceof Questionnaire)
50039      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
50040    else if (resource instanceof QuestionnaireResponse)
50041      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
50042    else if (resource instanceof RelatedPerson)
50043      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
50044    else if (resource instanceof RequestGroup)
50045      composeRequestGroup("RequestGroup", (RequestGroup)resource);
50046    else if (resource instanceof ResearchDefinition)
50047      composeResearchDefinition("ResearchDefinition", (ResearchDefinition)resource);
50048    else if (resource instanceof ResearchElementDefinition)
50049      composeResearchElementDefinition("ResearchElementDefinition", (ResearchElementDefinition)resource);
50050    else if (resource instanceof ResearchStudy)
50051      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
50052    else if (resource instanceof ResearchSubject)
50053      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
50054    else if (resource instanceof RiskAssessment)
50055      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
50056    else if (resource instanceof RiskEvidenceSynthesis)
50057      composeRiskEvidenceSynthesis("RiskEvidenceSynthesis", (RiskEvidenceSynthesis)resource);
50058    else if (resource instanceof Schedule)
50059      composeSchedule("Schedule", (Schedule)resource);
50060    else if (resource instanceof SearchParameter)
50061      composeSearchParameter("SearchParameter", (SearchParameter)resource);
50062    else if (resource instanceof ServiceRequest)
50063      composeServiceRequest("ServiceRequest", (ServiceRequest)resource);
50064    else if (resource instanceof Slot)
50065      composeSlot("Slot", (Slot)resource);
50066    else if (resource instanceof Specimen)
50067      composeSpecimen("Specimen", (Specimen)resource);
50068    else if (resource instanceof SpecimenDefinition)
50069      composeSpecimenDefinition("SpecimenDefinition", (SpecimenDefinition)resource);
50070    else if (resource instanceof StructureDefinition)
50071      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
50072    else if (resource instanceof StructureMap)
50073      composeStructureMap("StructureMap", (StructureMap)resource);
50074    else if (resource instanceof Subscription)
50075      composeSubscription("Subscription", (Subscription)resource);
50076    else if (resource instanceof Substance)
50077      composeSubstance("Substance", (Substance)resource);
50078    else if (resource instanceof SubstanceNucleicAcid)
50079      composeSubstanceNucleicAcid("SubstanceNucleicAcid", (SubstanceNucleicAcid)resource);
50080    else if (resource instanceof SubstancePolymer)
50081      composeSubstancePolymer("SubstancePolymer", (SubstancePolymer)resource);
50082    else if (resource instanceof SubstanceProtein)
50083      composeSubstanceProtein("SubstanceProtein", (SubstanceProtein)resource);
50084    else if (resource instanceof SubstanceReferenceInformation)
50085      composeSubstanceReferenceInformation("SubstanceReferenceInformation", (SubstanceReferenceInformation)resource);
50086    else if (resource instanceof SubstanceSourceMaterial)
50087      composeSubstanceSourceMaterial("SubstanceSourceMaterial", (SubstanceSourceMaterial)resource);
50088    else if (resource instanceof SubstanceSpecification)
50089      composeSubstanceSpecification("SubstanceSpecification", (SubstanceSpecification)resource);
50090    else if (resource instanceof SupplyDelivery)
50091      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
50092    else if (resource instanceof SupplyRequest)
50093      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
50094    else if (resource instanceof Task)
50095      composeTask("Task", (Task)resource);
50096    else if (resource instanceof TerminologyCapabilities)
50097      composeTerminologyCapabilities("TerminologyCapabilities", (TerminologyCapabilities)resource);
50098    else if (resource instanceof TestReport)
50099      composeTestReport("TestReport", (TestReport)resource);
50100    else if (resource instanceof TestScript)
50101      composeTestScript("TestScript", (TestScript)resource);
50102    else if (resource instanceof ValueSet)
50103      composeValueSet("ValueSet", (ValueSet)resource);
50104    else if (resource instanceof VerificationResult)
50105      composeVerificationResult("VerificationResult", (VerificationResult)resource);
50106    else if (resource instanceof VisionPrescription)
50107      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
50108    else if (resource instanceof Binary)
50109      composeBinary("Binary", (Binary)resource);
50110    else
50111      throw new Error("Unhandled resource type "+resource.getClass().getName());
50112  }
50113
50114  protected void composeResource(String name, Resource resource) throws IOException {
50115    if (resource instanceof Parameters)
50116      composeParameters(name, (Parameters)resource);
50117    else if (resource instanceof Account)
50118      composeAccount(name, (Account)resource);
50119    else if (resource instanceof ActivityDefinition)
50120      composeActivityDefinition(name, (ActivityDefinition)resource);
50121    else if (resource instanceof AdverseEvent)
50122      composeAdverseEvent(name, (AdverseEvent)resource);
50123    else if (resource instanceof AllergyIntolerance)
50124      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
50125    else if (resource instanceof Appointment)
50126      composeAppointment(name, (Appointment)resource);
50127    else if (resource instanceof AppointmentResponse)
50128      composeAppointmentResponse(name, (AppointmentResponse)resource);
50129    else if (resource instanceof AuditEvent)
50130      composeAuditEvent(name, (AuditEvent)resource);
50131    else if (resource instanceof Basic)
50132      composeBasic(name, (Basic)resource);
50133    else if (resource instanceof Binary)
50134      composeBinary(name, (Binary)resource);
50135    else if (resource instanceof BiologicallyDerivedProduct)
50136      composeBiologicallyDerivedProduct(name, (BiologicallyDerivedProduct)resource);
50137    else if (resource instanceof BodyStructure)
50138      composeBodyStructure(name, (BodyStructure)resource);
50139    else if (resource instanceof Bundle)
50140      composeBundle(name, (Bundle)resource);
50141    else if (resource instanceof CapabilityStatement)
50142      composeCapabilityStatement(name, (CapabilityStatement)resource);
50143    else if (resource instanceof CarePlan)
50144      composeCarePlan(name, (CarePlan)resource);
50145    else if (resource instanceof CareTeam)
50146      composeCareTeam(name, (CareTeam)resource);
50147    else if (resource instanceof CatalogEntry)
50148      composeCatalogEntry(name, (CatalogEntry)resource);
50149    else if (resource instanceof ChargeItem)
50150      composeChargeItem(name, (ChargeItem)resource);
50151    else if (resource instanceof ChargeItemDefinition)
50152      composeChargeItemDefinition(name, (ChargeItemDefinition)resource);
50153    else if (resource instanceof Claim)
50154      composeClaim(name, (Claim)resource);
50155    else if (resource instanceof ClaimResponse)
50156      composeClaimResponse(name, (ClaimResponse)resource);
50157    else if (resource instanceof ClinicalImpression)
50158      composeClinicalImpression(name, (ClinicalImpression)resource);
50159    else if (resource instanceof CodeSystem)
50160      composeCodeSystem(name, (CodeSystem)resource);
50161    else if (resource instanceof Communication)
50162      composeCommunication(name, (Communication)resource);
50163    else if (resource instanceof CommunicationRequest)
50164      composeCommunicationRequest(name, (CommunicationRequest)resource);
50165    else if (resource instanceof CompartmentDefinition)
50166      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
50167    else if (resource instanceof Composition)
50168      composeComposition(name, (Composition)resource);
50169    else if (resource instanceof ConceptMap)
50170      composeConceptMap(name, (ConceptMap)resource);
50171    else if (resource instanceof Condition)
50172      composeCondition(name, (Condition)resource);
50173    else if (resource instanceof Consent)
50174      composeConsent(name, (Consent)resource);
50175    else if (resource instanceof Contract)
50176      composeContract(name, (Contract)resource);
50177    else if (resource instanceof Coverage)
50178      composeCoverage(name, (Coverage)resource);
50179    else if (resource instanceof CoverageEligibilityRequest)
50180      composeCoverageEligibilityRequest(name, (CoverageEligibilityRequest)resource);
50181    else if (resource instanceof CoverageEligibilityResponse)
50182      composeCoverageEligibilityResponse(name, (CoverageEligibilityResponse)resource);
50183    else if (resource instanceof DetectedIssue)
50184      composeDetectedIssue(name, (DetectedIssue)resource);
50185    else if (resource instanceof Device)
50186      composeDevice(name, (Device)resource);
50187    else if (resource instanceof DeviceDefinition)
50188      composeDeviceDefinition(name, (DeviceDefinition)resource);
50189    else if (resource instanceof DeviceMetric)
50190      composeDeviceMetric(name, (DeviceMetric)resource);
50191    else if (resource instanceof DeviceRequest)
50192      composeDeviceRequest(name, (DeviceRequest)resource);
50193    else if (resource instanceof DeviceUseStatement)
50194      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
50195    else if (resource instanceof DiagnosticReport)
50196      composeDiagnosticReport(name, (DiagnosticReport)resource);
50197    else if (resource instanceof DocumentManifest)
50198      composeDocumentManifest(name, (DocumentManifest)resource);
50199    else if (resource instanceof DocumentReference)
50200      composeDocumentReference(name, (DocumentReference)resource);
50201    else if (resource instanceof EffectEvidenceSynthesis)
50202      composeEffectEvidenceSynthesis(name, (EffectEvidenceSynthesis)resource);
50203    else if (resource instanceof Encounter)
50204      composeEncounter(name, (Encounter)resource);
50205    else if (resource instanceof Endpoint)
50206      composeEndpoint(name, (Endpoint)resource);
50207    else if (resource instanceof EnrollmentRequest)
50208      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
50209    else if (resource instanceof EnrollmentResponse)
50210      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
50211    else if (resource instanceof EpisodeOfCare)
50212      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
50213    else if (resource instanceof EventDefinition)
50214      composeEventDefinition(name, (EventDefinition)resource);
50215    else if (resource instanceof Evidence)
50216      composeEvidence(name, (Evidence)resource);
50217    else if (resource instanceof EvidenceVariable)
50218      composeEvidenceVariable(name, (EvidenceVariable)resource);
50219    else if (resource instanceof ExampleScenario)
50220      composeExampleScenario(name, (ExampleScenario)resource);
50221    else if (resource instanceof ExplanationOfBenefit)
50222      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
50223    else if (resource instanceof FamilyMemberHistory)
50224      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
50225    else if (resource instanceof Flag)
50226      composeFlag(name, (Flag)resource);
50227    else if (resource instanceof Goal)
50228      composeGoal(name, (Goal)resource);
50229    else if (resource instanceof GraphDefinition)
50230      composeGraphDefinition(name, (GraphDefinition)resource);
50231    else if (resource instanceof Group)
50232      composeGroup(name, (Group)resource);
50233    else if (resource instanceof GuidanceResponse)
50234      composeGuidanceResponse(name, (GuidanceResponse)resource);
50235    else if (resource instanceof HealthcareService)
50236      composeHealthcareService(name, (HealthcareService)resource);
50237    else if (resource instanceof ImagingStudy)
50238      composeImagingStudy(name, (ImagingStudy)resource);
50239    else if (resource instanceof Immunization)
50240      composeImmunization(name, (Immunization)resource);
50241    else if (resource instanceof ImmunizationEvaluation)
50242      composeImmunizationEvaluation(name, (ImmunizationEvaluation)resource);
50243    else if (resource instanceof ImmunizationRecommendation)
50244      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
50245    else if (resource instanceof ImplementationGuide)
50246      composeImplementationGuide(name, (ImplementationGuide)resource);
50247    else if (resource instanceof InsurancePlan)
50248      composeInsurancePlan(name, (InsurancePlan)resource);
50249    else if (resource instanceof Invoice)
50250      composeInvoice(name, (Invoice)resource);
50251    else if (resource instanceof Library)
50252      composeLibrary(name, (Library)resource);
50253    else if (resource instanceof Linkage)
50254      composeLinkage(name, (Linkage)resource);
50255    else if (resource instanceof ListResource)
50256      composeListResource(name, (ListResource)resource);
50257    else if (resource instanceof Location)
50258      composeLocation(name, (Location)resource);
50259    else if (resource instanceof Measure)
50260      composeMeasure(name, (Measure)resource);
50261    else if (resource instanceof MeasureReport)
50262      composeMeasureReport(name, (MeasureReport)resource);
50263    else if (resource instanceof Media)
50264      composeMedia(name, (Media)resource);
50265    else if (resource instanceof Medication)
50266      composeMedication(name, (Medication)resource);
50267    else if (resource instanceof MedicationAdministration)
50268      composeMedicationAdministration(name, (MedicationAdministration)resource);
50269    else if (resource instanceof MedicationDispense)
50270      composeMedicationDispense(name, (MedicationDispense)resource);
50271    else if (resource instanceof MedicationKnowledge)
50272      composeMedicationKnowledge(name, (MedicationKnowledge)resource);
50273    else if (resource instanceof MedicationRequest)
50274      composeMedicationRequest(name, (MedicationRequest)resource);
50275    else if (resource instanceof MedicationStatement)
50276      composeMedicationStatement(name, (MedicationStatement)resource);
50277    else if (resource instanceof MedicinalProduct)
50278      composeMedicinalProduct(name, (MedicinalProduct)resource);
50279    else if (resource instanceof MedicinalProductAuthorization)
50280      composeMedicinalProductAuthorization(name, (MedicinalProductAuthorization)resource);
50281    else if (resource instanceof MedicinalProductContraindication)
50282      composeMedicinalProductContraindication(name, (MedicinalProductContraindication)resource);
50283    else if (resource instanceof MedicinalProductIndication)
50284      composeMedicinalProductIndication(name, (MedicinalProductIndication)resource);
50285    else if (resource instanceof MedicinalProductIngredient)
50286      composeMedicinalProductIngredient(name, (MedicinalProductIngredient)resource);
50287    else if (resource instanceof MedicinalProductInteraction)
50288      composeMedicinalProductInteraction(name, (MedicinalProductInteraction)resource);
50289    else if (resource instanceof MedicinalProductManufactured)
50290      composeMedicinalProductManufactured(name, (MedicinalProductManufactured)resource);
50291    else if (resource instanceof MedicinalProductPackaged)
50292      composeMedicinalProductPackaged(name, (MedicinalProductPackaged)resource);
50293    else if (resource instanceof MedicinalProductPharmaceutical)
50294      composeMedicinalProductPharmaceutical(name, (MedicinalProductPharmaceutical)resource);
50295    else if (resource instanceof MedicinalProductUndesirableEffect)
50296      composeMedicinalProductUndesirableEffect(name, (MedicinalProductUndesirableEffect)resource);
50297    else if (resource instanceof MessageDefinition)
50298      composeMessageDefinition(name, (MessageDefinition)resource);
50299    else if (resource instanceof MessageHeader)
50300      composeMessageHeader(name, (MessageHeader)resource);
50301    else if (resource instanceof MolecularSequence)
50302      composeMolecularSequence(name, (MolecularSequence)resource);
50303    else if (resource instanceof NamingSystem)
50304      composeNamingSystem(name, (NamingSystem)resource);
50305    else if (resource instanceof NutritionOrder)
50306      composeNutritionOrder(name, (NutritionOrder)resource);
50307    else if (resource instanceof Observation)
50308      composeObservation(name, (Observation)resource);
50309    else if (resource instanceof ObservationDefinition)
50310      composeObservationDefinition(name, (ObservationDefinition)resource);
50311    else if (resource instanceof OperationDefinition)
50312      composeOperationDefinition(name, (OperationDefinition)resource);
50313    else if (resource instanceof OperationOutcome)
50314      composeOperationOutcome(name, (OperationOutcome)resource);
50315    else if (resource instanceof Organization)
50316      composeOrganization(name, (Organization)resource);
50317    else if (resource instanceof OrganizationAffiliation)
50318      composeOrganizationAffiliation(name, (OrganizationAffiliation)resource);
50319    else if (resource instanceof Patient)
50320      composePatient(name, (Patient)resource);
50321    else if (resource instanceof PaymentNotice)
50322      composePaymentNotice(name, (PaymentNotice)resource);
50323    else if (resource instanceof PaymentReconciliation)
50324      composePaymentReconciliation(name, (PaymentReconciliation)resource);
50325    else if (resource instanceof Person)
50326      composePerson(name, (Person)resource);
50327    else if (resource instanceof PlanDefinition)
50328      composePlanDefinition(name, (PlanDefinition)resource);
50329    else if (resource instanceof Practitioner)
50330      composePractitioner(name, (Practitioner)resource);
50331    else if (resource instanceof PractitionerRole)
50332      composePractitionerRole(name, (PractitionerRole)resource);
50333    else if (resource instanceof Procedure)
50334      composeProcedure(name, (Procedure)resource);
50335    else if (resource instanceof Provenance)
50336      composeProvenance(name, (Provenance)resource);
50337    else if (resource instanceof Questionnaire)
50338      composeQuestionnaire(name, (Questionnaire)resource);
50339    else if (resource instanceof QuestionnaireResponse)
50340      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
50341    else if (resource instanceof RelatedPerson)
50342      composeRelatedPerson(name, (RelatedPerson)resource);
50343    else if (resource instanceof RequestGroup)
50344      composeRequestGroup(name, (RequestGroup)resource);
50345    else if (resource instanceof ResearchDefinition)
50346      composeResearchDefinition(name, (ResearchDefinition)resource);
50347    else if (resource instanceof ResearchElementDefinition)
50348      composeResearchElementDefinition(name, (ResearchElementDefinition)resource);
50349    else if (resource instanceof ResearchStudy)
50350      composeResearchStudy(name, (ResearchStudy)resource);
50351    else if (resource instanceof ResearchSubject)
50352      composeResearchSubject(name, (ResearchSubject)resource);
50353    else if (resource instanceof RiskAssessment)
50354      composeRiskAssessment(name, (RiskAssessment)resource);
50355    else if (resource instanceof RiskEvidenceSynthesis)
50356      composeRiskEvidenceSynthesis(name, (RiskEvidenceSynthesis)resource);
50357    else if (resource instanceof Schedule)
50358      composeSchedule(name, (Schedule)resource);
50359    else if (resource instanceof SearchParameter)
50360      composeSearchParameter(name, (SearchParameter)resource);
50361    else if (resource instanceof ServiceRequest)
50362      composeServiceRequest(name, (ServiceRequest)resource);
50363    else if (resource instanceof Slot)
50364      composeSlot(name, (Slot)resource);
50365    else if (resource instanceof Specimen)
50366      composeSpecimen(name, (Specimen)resource);
50367    else if (resource instanceof SpecimenDefinition)
50368      composeSpecimenDefinition(name, (SpecimenDefinition)resource);
50369    else if (resource instanceof StructureDefinition)
50370      composeStructureDefinition(name, (StructureDefinition)resource);
50371    else if (resource instanceof StructureMap)
50372      composeStructureMap(name, (StructureMap)resource);
50373    else if (resource instanceof Subscription)
50374      composeSubscription(name, (Subscription)resource);
50375    else if (resource instanceof Substance)
50376      composeSubstance(name, (Substance)resource);
50377    else if (resource instanceof SubstanceNucleicAcid)
50378      composeSubstanceNucleicAcid(name, (SubstanceNucleicAcid)resource);
50379    else if (resource instanceof SubstancePolymer)
50380      composeSubstancePolymer(name, (SubstancePolymer)resource);
50381    else if (resource instanceof SubstanceProtein)
50382      composeSubstanceProtein(name, (SubstanceProtein)resource);
50383    else if (resource instanceof SubstanceReferenceInformation)
50384      composeSubstanceReferenceInformation(name, (SubstanceReferenceInformation)resource);
50385    else if (resource instanceof SubstanceSourceMaterial)
50386      composeSubstanceSourceMaterial(name, (SubstanceSourceMaterial)resource);
50387    else if (resource instanceof SubstanceSpecification)
50388      composeSubstanceSpecification(name, (SubstanceSpecification)resource);
50389    else if (resource instanceof SupplyDelivery)
50390      composeSupplyDelivery(name, (SupplyDelivery)resource);
50391    else if (resource instanceof SupplyRequest)
50392      composeSupplyRequest(name, (SupplyRequest)resource);
50393    else if (resource instanceof Task)
50394      composeTask(name, (Task)resource);
50395    else if (resource instanceof TerminologyCapabilities)
50396      composeTerminologyCapabilities(name, (TerminologyCapabilities)resource);
50397    else if (resource instanceof TestReport)
50398      composeTestReport(name, (TestReport)resource);
50399    else if (resource instanceof TestScript)
50400      composeTestScript(name, (TestScript)resource);
50401    else if (resource instanceof ValueSet)
50402      composeValueSet(name, (ValueSet)resource);
50403    else if (resource instanceof VerificationResult)
50404      composeVerificationResult(name, (VerificationResult)resource);
50405    else if (resource instanceof VisionPrescription)
50406      composeVisionPrescription(name, (VisionPrescription)resource);
50407    else if (resource instanceof Binary)
50408      composeBinary(name, (Binary)resource);
50409    else
50410      throw new Error("Unhandled resource type "+resource.getClass().getName());
50411  }
50412
50413  protected void composeType(String prefix, Type type) throws IOException {
50414    if (type == null)
50415      ;
50416    else if (type instanceof Extension)
50417       composeExtension(prefix+"Extension", (Extension) type);
50418    else if (type instanceof Narrative)
50419       composeNarrative(prefix+"Narrative", (Narrative) type);
50420    else if (type instanceof Count)
50421       composeCount(prefix+"Count", (Count) type);
50422    else if (type instanceof Dosage)
50423       composeDosage(prefix+"Dosage", (Dosage) type);
50424    else if (type instanceof MarketingStatus)
50425       composeMarketingStatus(prefix+"MarketingStatus", (MarketingStatus) type);
50426    else if (type instanceof SubstanceAmount)
50427       composeSubstanceAmount(prefix+"SubstanceAmount", (SubstanceAmount) type);
50428    else if (type instanceof Population)
50429       composePopulation(prefix+"Population", (Population) type);
50430    else if (type instanceof Distance)
50431       composeDistance(prefix+"Distance", (Distance) type);
50432    else if (type instanceof Age)
50433       composeAge(prefix+"Age", (Age) type);
50434    else if (type instanceof Duration)
50435       composeDuration(prefix+"Duration", (Duration) type);
50436    else if (type instanceof ProductShelfLife)
50437       composeProductShelfLife(prefix+"ProductShelfLife", (ProductShelfLife) type);
50438    else if (type instanceof Timing)
50439       composeTiming(prefix+"Timing", (Timing) type);
50440    else if (type instanceof ProdCharacteristic)
50441       composeProdCharacteristic(prefix+"ProdCharacteristic", (ProdCharacteristic) type);
50442    else if (type instanceof Meta)
50443       composeMeta(prefix+"Meta", (Meta) type);
50444    else if (type instanceof Address)
50445       composeAddress(prefix+"Address", (Address) type);
50446    else if (type instanceof Contributor)
50447       composeContributor(prefix+"Contributor", (Contributor) type);
50448    else if (type instanceof Attachment)
50449       composeAttachment(prefix+"Attachment", (Attachment) type);
50450    else if (type instanceof DataRequirement)
50451       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
50452    else if (type instanceof Money)
50453       composeMoney(prefix+"Money", (Money) type);
50454    else if (type instanceof HumanName)
50455       composeHumanName(prefix+"HumanName", (HumanName) type);
50456    else if (type instanceof ContactPoint)
50457       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
50458    else if (type instanceof Identifier)
50459       composeIdentifier(prefix+"Identifier", (Identifier) type);
50460    else if (type instanceof Coding)
50461       composeCoding(prefix+"Coding", (Coding) type);
50462    else if (type instanceof SampledData)
50463       composeSampledData(prefix+"SampledData", (SampledData) type);
50464    else if (type instanceof Ratio)
50465       composeRatio(prefix+"Ratio", (Ratio) type);
50466    else if (type instanceof Reference)
50467       composeReference(prefix+"Reference", (Reference) type);
50468    else if (type instanceof TriggerDefinition)
50469       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
50470    else if (type instanceof Quantity)
50471       composeQuantity(prefix+"Quantity", (Quantity) type);
50472    else if (type instanceof Period)
50473       composePeriod(prefix+"Period", (Period) type);
50474    else if (type instanceof Range)
50475       composeRange(prefix+"Range", (Range) type);
50476    else if (type instanceof RelatedArtifact)
50477       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
50478    else if (type instanceof Annotation)
50479       composeAnnotation(prefix+"Annotation", (Annotation) type);
50480    else if (type instanceof ContactDetail)
50481       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
50482    else if (type instanceof UsageContext)
50483       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
50484    else if (type instanceof Expression)
50485       composeExpression(prefix+"Expression", (Expression) type);
50486    else if (type instanceof Signature)
50487       composeSignature(prefix+"Signature", (Signature) type);
50488    else if (type instanceof CodeableConcept)
50489       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
50490    else if (type instanceof ParameterDefinition)
50491       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
50492    else if (type instanceof CodeType)
50493       composeCode(prefix+"Code", (CodeType) type);
50494    else if (type instanceof OidType)
50495       composeOid(prefix+"Oid", (OidType) type);
50496    else if (type instanceof CanonicalType)
50497       composeCanonical(prefix+"Canonical", (CanonicalType) type);
50498    else if (type instanceof UuidType)
50499       composeUuid(prefix+"Uuid", (UuidType) type);
50500    else if (type instanceof UrlType)
50501       composeUrl(prefix+"Url", (UrlType) type);
50502    else if (type instanceof UnsignedIntType)
50503       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
50504    else if (type instanceof MarkdownType)
50505       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
50506    else if (type instanceof IdType)
50507       composeId(prefix+"Id", (IdType) type);
50508    else if (type instanceof PositiveIntType)
50509       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
50510    else if (type instanceof DateType)
50511       composeDate(prefix+"Date", (DateType) type);
50512    else if (type instanceof DateTimeType)
50513       composeDateTime(prefix+"DateTime", (DateTimeType) type);
50514    else if (type instanceof StringType)
50515       composeString(prefix+"String", (StringType) type);
50516    else if (type instanceof IntegerType)
50517       composeInteger(prefix+"Integer", (IntegerType) type);
50518    else if (type instanceof UriType)
50519       composeUri(prefix+"Uri", (UriType) type);
50520    else if (type instanceof InstantType)
50521       composeInstant(prefix+"Instant", (InstantType) type);
50522    else if (type instanceof BooleanType)
50523       composeBoolean(prefix+"Boolean", (BooleanType) type);
50524    else if (type instanceof Base64BinaryType)
50525       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
50526    else if (type instanceof TimeType)
50527       composeTime(prefix+"Time", (TimeType) type);
50528    else if (type instanceof DecimalType)
50529       composeDecimal(prefix+"Decimal", (DecimalType) type);
50530    else
50531      throw new Error("Unhandled type");
50532  }
50533
50534}
50535