001package org.hl7.fhir.dstu2.formats;
002
003/*-
004 * #%L
005 * org.hl7.fhir.dstu2
006 * %%
007 * Copyright (C) 2014 - 2019 Health Level 7
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023
024import java.io.IOException;
025
026/*
027  Copyright (c) 2011+, HL7, Inc.
028  All rights reserved.
029  
030  Redistribution and use in source and binary forms, with or without modification, 
031  are permitted provided that the following conditions are met:
032  
033   * Redistributions of source code must retain the above copyright notice, this 
034     list of conditions and the following disclaimer.
035   * Redistributions in binary form must reproduce the above copyright notice, 
036     this list of conditions and the following disclaimer in the documentation 
037     and/or other materials provided with the distribution.
038   * Neither the name of HL7 nor the names of its contributors may be used to 
039     endorse or promote products derived from this software without specific 
040     prior written permission.
041  
042  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
043  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
044  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
045  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
046  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
047  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
048  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
049  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
050  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
051  POSSIBILITY OF SUCH DAMAGE.
052  
053*/
054
055// Generated on Wed, Jul 13, 2016 05:32+1000 for FHIR v1.0.2
056import org.hl7.fhir.dstu2.model.*;
057import org.hl7.fhir.exceptions.FHIRFormatError;
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 parseBackboneContent(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  @SuppressWarnings("unchecked")
093  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
094    Enumeration<E> res = new Enumeration<E>(e);
095    parseElementAttributes(xpp, res);
096    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
097    next(xpp);
098    int eventType = nextNoWhitespace(xpp);
099    while (eventType != XmlPullParser.END_TAG) {
100      if (!parseElementContent(eventType, xpp, res))
101        unknownContent(xpp);
102      eventType = nextNoWhitespace(xpp);
103    }
104    next(xpp);
105    parseElementClose(res);
106    return res;
107  }
108
109  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
110    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
111    parseElementAttributes(xpp, res);
112    next(xpp);
113    int eventType = nextNoWhitespace(xpp);
114    while (eventType != XmlPullParser.END_TAG) {
115      if (!parseElementContent(eventType, xpp, res))
116        unknownContent(xpp);
117      eventType = nextNoWhitespace(xpp);
118    }
119    next(xpp);
120    parseElementClose(res);
121    return res;
122  }
123
124  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
125    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
126    parseElementAttributes(xpp, res);
127    next(xpp);
128    int eventType = nextNoWhitespace(xpp);
129    while (eventType != XmlPullParser.END_TAG) {
130      if (!parseElementContent(eventType, xpp, res))
131        unknownContent(xpp);
132      eventType = nextNoWhitespace(xpp);
133    }
134    next(xpp);
135    parseElementClose(res);
136    return res;
137  }
138
139  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
140    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
141    parseElementAttributes(xpp, res);
142    next(xpp);
143    int eventType = nextNoWhitespace(xpp);
144    while (eventType != XmlPullParser.END_TAG) {
145      if (!parseElementContent(eventType, xpp, res))
146        unknownContent(xpp);
147      eventType = nextNoWhitespace(xpp);
148    }
149    next(xpp);
150    parseElementClose(res);
151    return res;
152  }
153
154  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
155    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
156    parseElementAttributes(xpp, res);
157    next(xpp);
158    int eventType = nextNoWhitespace(xpp);
159    while (eventType != XmlPullParser.END_TAG) {
160      if (!parseElementContent(eventType, xpp, res))
161        unknownContent(xpp);
162      eventType = nextNoWhitespace(xpp);
163    }
164    next(xpp);
165    parseElementClose(res);
166    return res;
167  }
168
169  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
170    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
171    parseElementAttributes(xpp, res);
172    next(xpp);
173    int eventType = nextNoWhitespace(xpp);
174    while (eventType != XmlPullParser.END_TAG) {
175      if (!parseElementContent(eventType, xpp, res))
176        unknownContent(xpp);
177      eventType = nextNoWhitespace(xpp);
178    }
179    next(xpp);
180    parseElementClose(res);
181    return res;
182  }
183
184  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
185    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
186    parseElementAttributes(xpp, res);
187    next(xpp);
188    int eventType = nextNoWhitespace(xpp);
189    while (eventType != XmlPullParser.END_TAG) {
190      if (!parseElementContent(eventType, xpp, res))
191        unknownContent(xpp);
192      eventType = nextNoWhitespace(xpp);
193    }
194    next(xpp);
195    parseElementClose(res);
196    return res;
197  }
198
199  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
200    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
201    parseElementAttributes(xpp, res);
202    next(xpp);
203    int eventType = nextNoWhitespace(xpp);
204    while (eventType != XmlPullParser.END_TAG) {
205      if (!parseElementContent(eventType, xpp, res))
206        unknownContent(xpp);
207      eventType = nextNoWhitespace(xpp);
208    }
209    next(xpp);
210    parseElementClose(res);
211    return res;
212  }
213
214  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
215    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
216    parseElementAttributes(xpp, res);
217    next(xpp);
218    int eventType = nextNoWhitespace(xpp);
219    while (eventType != XmlPullParser.END_TAG) {
220      if (!parseElementContent(eventType, xpp, res))
221        unknownContent(xpp);
222      eventType = nextNoWhitespace(xpp);
223    }
224    next(xpp);
225    parseElementClose(res);
226    return res;
227  }
228
229  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
230    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
231    parseElementAttributes(xpp, res);
232    next(xpp);
233    int eventType = nextNoWhitespace(xpp);
234    while (eventType != XmlPullParser.END_TAG) {
235      if (!parseElementContent(eventType, xpp, res))
236        unknownContent(xpp);
237      eventType = nextNoWhitespace(xpp);
238    }
239    next(xpp);
240    parseElementClose(res);
241    return res;
242  }
243
244  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
245    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
246    parseElementAttributes(xpp, res);
247    next(xpp);
248    int eventType = nextNoWhitespace(xpp);
249    while (eventType != XmlPullParser.END_TAG) {
250      if (!parseElementContent(eventType, xpp, res))
251        unknownContent(xpp);
252      eventType = nextNoWhitespace(xpp);
253    }
254    next(xpp);
255    parseElementClose(res);
256    return res;
257  }
258
259  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
260    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
261    parseElementAttributes(xpp, res);
262    next(xpp);
263    int eventType = nextNoWhitespace(xpp);
264    while (eventType != XmlPullParser.END_TAG) {
265      if (!parseElementContent(eventType, xpp, res))
266        unknownContent(xpp);
267      eventType = nextNoWhitespace(xpp);
268    }
269    next(xpp);
270    parseElementClose(res);
271    return res;
272  }
273
274  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
275    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
276    parseElementAttributes(xpp, res);
277    next(xpp);
278    int eventType = nextNoWhitespace(xpp);
279    while (eventType != XmlPullParser.END_TAG) {
280      if (!parseElementContent(eventType, xpp, res))
281        unknownContent(xpp);
282      eventType = nextNoWhitespace(xpp);
283    }
284    next(xpp);
285    parseElementClose(res);
286    return res;
287  }
288
289  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
290    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
291    parseElementAttributes(xpp, res);
292    next(xpp);
293    int eventType = nextNoWhitespace(xpp);
294    while (eventType != XmlPullParser.END_TAG) {
295      if (!parseElementContent(eventType, xpp, res))
296        unknownContent(xpp);
297      eventType = nextNoWhitespace(xpp);
298    }
299    next(xpp);
300    parseElementClose(res);
301    return res;
302  }
303
304  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
305    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
306    parseElementAttributes(xpp, res);
307    next(xpp);
308    int eventType = nextNoWhitespace(xpp);
309    while (eventType != XmlPullParser.END_TAG) {
310      if (!parseElementContent(eventType, xpp, res))
311        unknownContent(xpp);
312      eventType = nextNoWhitespace(xpp);
313    }
314    next(xpp);
315    parseElementClose(res);
316    return res;
317  }
318
319  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
320    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
321    parseElementAttributes(xpp, res);
322    next(xpp);
323    int eventType = nextNoWhitespace(xpp);
324    while (eventType != XmlPullParser.END_TAG) {
325      if (!parseElementContent(eventType, xpp, res))
326        unknownContent(xpp);
327      eventType = nextNoWhitespace(xpp);
328    }
329    next(xpp);
330    parseElementClose(res);
331    return res;
332  }
333
334  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
335    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
336    parseElementAttributes(xpp, res);
337    next(xpp);
338    int eventType = nextNoWhitespace(xpp);
339    while (eventType != XmlPullParser.END_TAG) {
340      if (!parseElementContent(eventType, xpp, res))
341        unknownContent(xpp);
342      eventType = nextNoWhitespace(xpp);
343    }
344    next(xpp);
345    parseElementClose(res);
346    return res;
347  }
348
349  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
350    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
351    parseElementAttributes(xpp, res);
352    next(xpp);
353    int eventType = nextNoWhitespace(xpp);
354    while (eventType != XmlPullParser.END_TAG) {
355      if (!parseElementContent(eventType, xpp, res))
356        unknownContent(xpp);
357      eventType = nextNoWhitespace(xpp);
358    }
359    next(xpp);
360    parseElementClose(res);
361    return res;
362  }
363
364  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
365    Extension res = new Extension();
366    parseElementAttributes(xpp, res);
367    if (xpp.getAttributeValue(null, "url") != null)
368        res.setUrl(xpp.getAttributeValue(null, "url"));
369    next(xpp);
370    int eventType = nextNoWhitespace(xpp);
371    while (eventType != XmlPullParser.END_TAG) {
372      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
373        res.setValue(parseType("value", xpp));
374      } else if (!parseElementContent(eventType, xpp, res))
375        unknownContent(xpp);
376      eventType = nextNoWhitespace(xpp);
377    }
378    next(xpp);
379    parseElementClose(res);
380    return res;
381  }
382
383  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
384    Narrative res = new Narrative();
385    parseElementAttributes(xpp, res);
386    next(xpp);
387    int eventType = nextNoWhitespace(xpp);
388    while (eventType != XmlPullParser.END_TAG) {
389      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
390        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
392        res.setDiv(parseXhtml(xpp));
393      } else if (!parseElementContent(eventType, xpp, res))
394        unknownContent(xpp);
395      eventType = nextNoWhitespace(xpp);
396    }
397    next(xpp);
398    parseElementClose(res);
399    return res;
400  }
401
402  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
403    Identifier res = new Identifier();
404    parseTypeAttributes(xpp, res);
405    next(xpp);
406    int eventType = nextNoWhitespace(xpp);
407    while (eventType != XmlPullParser.END_TAG) {
408      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
409        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
411        res.setType(parseCodeableConcept(xpp));
412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
413        res.setSystemElement(parseUri(xpp));
414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
415        res.setValueElement(parseString(xpp));
416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
417        res.setPeriod(parsePeriod(xpp));
418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
419        res.setAssigner(parseReference(xpp));
420      } else if (!parseElementContent(eventType, xpp, res))
421        unknownContent(xpp);
422      eventType = nextNoWhitespace(xpp);
423    }
424    next(xpp);
425    parseElementClose(res);
426    return res;
427  }
428
429  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
430    Coding res = new Coding();
431    parseTypeAttributes(xpp, res);
432    next(xpp);
433    int eventType = nextNoWhitespace(xpp);
434    while (eventType != XmlPullParser.END_TAG) {
435      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
436        res.setSystemElement(parseUri(xpp));
437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
438        res.setVersionElement(parseString(xpp));
439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
440        res.setCodeElement(parseCode(xpp));
441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
442        res.setDisplayElement(parseString(xpp));
443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
444        res.setUserSelectedElement(parseBoolean(xpp));
445      } else if (!parseElementContent(eventType, xpp, res))
446        unknownContent(xpp);
447      eventType = nextNoWhitespace(xpp);
448    }
449    next(xpp);
450    parseElementClose(res);
451    return res;
452  }
453
454  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
455    Reference res = new Reference();
456    parseTypeAttributes(xpp, res);
457    next(xpp);
458    int eventType = nextNoWhitespace(xpp);
459    while (eventType != XmlPullParser.END_TAG) {
460      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
461        res.setReferenceElement(parseString(xpp));
462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
463        res.setDisplayElement(parseString(xpp));
464      } else if (!parseElementContent(eventType, xpp, res))
465        unknownContent(xpp);
466      eventType = nextNoWhitespace(xpp);
467    }
468    next(xpp);
469    parseElementClose(res);
470    return res;
471  }
472
473  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
474    Signature res = new Signature();
475    parseTypeAttributes(xpp, res);
476    next(xpp);
477    int eventType = nextNoWhitespace(xpp);
478    while (eventType != XmlPullParser.END_TAG) {
479      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
480        res.getType().add(parseCoding(xpp));
481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
482        res.setWhenElement(parseInstant(xpp));
483      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
484        res.setWho(parseType("who", xpp));
485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
486        res.setContentTypeElement(parseCode(xpp));
487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
488        res.setBlobElement(parseBase64Binary(xpp));
489      } else if (!parseElementContent(eventType, xpp, res))
490        unknownContent(xpp);
491      eventType = nextNoWhitespace(xpp);
492    }
493    next(xpp);
494    parseElementClose(res);
495    return res;
496  }
497
498  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
499    SampledData res = new SampledData();
500    parseTypeAttributes(xpp, res);
501    next(xpp);
502    int eventType = nextNoWhitespace(xpp);
503    while (eventType != XmlPullParser.END_TAG) {
504      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
505        res.setOrigin(parseSimpleQuantity(xpp));
506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
507        res.setPeriodElement(parseDecimal(xpp));
508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
509        res.setFactorElement(parseDecimal(xpp));
510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
511        res.setLowerLimitElement(parseDecimal(xpp));
512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
513        res.setUpperLimitElement(parseDecimal(xpp));
514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
515        res.setDimensionsElement(parsePositiveInt(xpp));
516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
517        res.setDataElement(parseString(xpp));
518      } else if (!parseElementContent(eventType, xpp, res))
519        unknownContent(xpp);
520      eventType = nextNoWhitespace(xpp);
521    }
522    next(xpp);
523    parseElementClose(res);
524    return res;
525  }
526
527  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
528    Quantity res = new Quantity();
529    parseTypeAttributes(xpp, res);
530    next(xpp);
531    int eventType = nextNoWhitespace(xpp);
532    while (eventType != XmlPullParser.END_TAG) {
533      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
534        res.setValueElement(parseDecimal(xpp));
535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
536        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
538        res.setUnitElement(parseString(xpp));
539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
540        res.setSystemElement(parseUri(xpp));
541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
542        res.setCodeElement(parseCode(xpp));
543      } else if (!parseElementContent(eventType, xpp, res))
544        unknownContent(xpp);
545      eventType = nextNoWhitespace(xpp);
546    }
547    next(xpp);
548    parseElementClose(res);
549    return res;
550  }
551
552  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
553    Period res = new Period();
554    parseTypeAttributes(xpp, res);
555    next(xpp);
556    int eventType = nextNoWhitespace(xpp);
557    while (eventType != XmlPullParser.END_TAG) {
558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
559        res.setStartElement(parseDateTime(xpp));
560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
561        res.setEndElement(parseDateTime(xpp));
562      } else if (!parseElementContent(eventType, xpp, res))
563        unknownContent(xpp);
564      eventType = nextNoWhitespace(xpp);
565    }
566    next(xpp);
567    parseElementClose(res);
568    return res;
569  }
570
571  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
572    Attachment res = new Attachment();
573    parseTypeAttributes(xpp, res);
574    next(xpp);
575    int eventType = nextNoWhitespace(xpp);
576    while (eventType != XmlPullParser.END_TAG) {
577      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
578        res.setContentTypeElement(parseCode(xpp));
579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
580        res.setLanguageElement(parseCode(xpp));
581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
582        res.setDataElement(parseBase64Binary(xpp));
583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
584        res.setUrlElement(parseUri(xpp));
585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
586        res.setSizeElement(parseUnsignedInt(xpp));
587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
588        res.setHashElement(parseBase64Binary(xpp));
589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
590        res.setTitleElement(parseString(xpp));
591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
592        res.setCreationElement(parseDateTime(xpp));
593      } else if (!parseElementContent(eventType, xpp, res))
594        unknownContent(xpp);
595      eventType = nextNoWhitespace(xpp);
596    }
597    next(xpp);
598    parseElementClose(res);
599    return res;
600  }
601
602  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
603    Ratio res = new Ratio();
604    parseTypeAttributes(xpp, res);
605    next(xpp);
606    int eventType = nextNoWhitespace(xpp);
607    while (eventType != XmlPullParser.END_TAG) {
608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
609        res.setNumerator(parseQuantity(xpp));
610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
611        res.setDenominator(parseQuantity(xpp));
612      } else if (!parseElementContent(eventType, xpp, res))
613        unknownContent(xpp);
614      eventType = nextNoWhitespace(xpp);
615    }
616    next(xpp);
617    parseElementClose(res);
618    return res;
619  }
620
621  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
622    Range res = new Range();
623    parseTypeAttributes(xpp, res);
624    next(xpp);
625    int eventType = nextNoWhitespace(xpp);
626    while (eventType != XmlPullParser.END_TAG) {
627      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
628        res.setLow(parseSimpleQuantity(xpp));
629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
630        res.setHigh(parseSimpleQuantity(xpp));
631      } else if (!parseElementContent(eventType, xpp, res))
632        unknownContent(xpp);
633      eventType = nextNoWhitespace(xpp);
634    }
635    next(xpp);
636    parseElementClose(res);
637    return res;
638  }
639
640  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
641    Annotation res = new Annotation();
642    parseTypeAttributes(xpp, res);
643    next(xpp);
644    int eventType = nextNoWhitespace(xpp);
645    while (eventType != XmlPullParser.END_TAG) {
646      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
647        res.setAuthor(parseType("author", xpp));
648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
649        res.setTimeElement(parseDateTime(xpp));
650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
651        res.setTextElement(parseString(xpp));
652      } else if (!parseElementContent(eventType, xpp, res))
653        unknownContent(xpp);
654      eventType = nextNoWhitespace(xpp);
655    }
656    next(xpp);
657    parseElementClose(res);
658    return res;
659  }
660
661  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
662    CodeableConcept res = new CodeableConcept();
663    parseTypeAttributes(xpp, res);
664    next(xpp);
665    int eventType = nextNoWhitespace(xpp);
666    while (eventType != XmlPullParser.END_TAG) {
667      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
668        res.getCoding().add(parseCoding(xpp));
669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
670        res.setTextElement(parseString(xpp));
671      } else if (!parseElementContent(eventType, xpp, res))
672        unknownContent(xpp);
673      eventType = nextNoWhitespace(xpp);
674    }
675    next(xpp);
676    parseElementClose(res);
677    return res;
678  }
679
680  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
681    Money res = new Money();
682    parseElementAttributes(xpp, res);
683    next(xpp);
684    int eventType = nextNoWhitespace(xpp);
685    while (eventType != XmlPullParser.END_TAG) {
686      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
687        res.setValueElement(parseDecimal(xpp));
688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
689        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
691        res.setUnitElement(parseString(xpp));
692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
693        res.setSystemElement(parseUri(xpp));
694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
695        res.setCodeElement(parseCode(xpp));
696      } else if (!parseElementContent(eventType, xpp, res))
697        unknownContent(xpp);
698      eventType = nextNoWhitespace(xpp);
699    }
700    next(xpp);
701    parseElementClose(res);
702    return res;
703  }
704
705  protected SimpleQuantity parseSimpleQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
706    SimpleQuantity res = new SimpleQuantity();
707    parseElementAttributes(xpp, res);
708    next(xpp);
709    int eventType = nextNoWhitespace(xpp);
710    while (eventType != XmlPullParser.END_TAG) {
711      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
712        res.setValueElement(parseDecimal(xpp));
713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
714        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
716        res.setUnitElement(parseString(xpp));
717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
718        res.setSystemElement(parseUri(xpp));
719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
720        res.setCodeElement(parseCode(xpp));
721      } else if (!parseElementContent(eventType, xpp, res))
722        unknownContent(xpp);
723      eventType = nextNoWhitespace(xpp);
724    }
725    next(xpp);
726    parseElementClose(res);
727    return res;
728  }
729
730  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
731    Duration res = new Duration();
732    parseElementAttributes(xpp, res);
733    next(xpp);
734    int eventType = nextNoWhitespace(xpp);
735    while (eventType != XmlPullParser.END_TAG) {
736      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
737        res.setValueElement(parseDecimal(xpp));
738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
739        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
741        res.setUnitElement(parseString(xpp));
742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
743        res.setSystemElement(parseUri(xpp));
744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
745        res.setCodeElement(parseCode(xpp));
746      } else if (!parseElementContent(eventType, xpp, res))
747        unknownContent(xpp);
748      eventType = nextNoWhitespace(xpp);
749    }
750    next(xpp);
751    parseElementClose(res);
752    return res;
753  }
754
755  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
756    Count res = new Count();
757    parseElementAttributes(xpp, res);
758    next(xpp);
759    int eventType = nextNoWhitespace(xpp);
760    while (eventType != XmlPullParser.END_TAG) {
761      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
762        res.setValueElement(parseDecimal(xpp));
763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
764        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
766        res.setUnitElement(parseString(xpp));
767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
768        res.setSystemElement(parseUri(xpp));
769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
770        res.setCodeElement(parseCode(xpp));
771      } else if (!parseElementContent(eventType, xpp, res))
772        unknownContent(xpp);
773      eventType = nextNoWhitespace(xpp);
774    }
775    next(xpp);
776    parseElementClose(res);
777    return res;
778  }
779
780  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
781    Distance res = new Distance();
782    parseElementAttributes(xpp, res);
783    next(xpp);
784    int eventType = nextNoWhitespace(xpp);
785    while (eventType != XmlPullParser.END_TAG) {
786      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
787        res.setValueElement(parseDecimal(xpp));
788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
789        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
791        res.setUnitElement(parseString(xpp));
792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
793        res.setSystemElement(parseUri(xpp));
794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
795        res.setCodeElement(parseCode(xpp));
796      } else if (!parseElementContent(eventType, xpp, res))
797        unknownContent(xpp);
798      eventType = nextNoWhitespace(xpp);
799    }
800    next(xpp);
801    parseElementClose(res);
802    return res;
803  }
804
805  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
806    Age res = new Age();
807    parseElementAttributes(xpp, res);
808    next(xpp);
809    int eventType = nextNoWhitespace(xpp);
810    while (eventType != XmlPullParser.END_TAG) {
811      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
812        res.setValueElement(parseDecimal(xpp));
813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
814        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
816        res.setUnitElement(parseString(xpp));
817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
818        res.setSystemElement(parseUri(xpp));
819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
820        res.setCodeElement(parseCode(xpp));
821      } else if (!parseElementContent(eventType, xpp, res))
822        unknownContent(xpp);
823      eventType = nextNoWhitespace(xpp);
824    }
825    next(xpp);
826    parseElementClose(res);
827    return res;
828  }
829
830  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
831    HumanName res = new HumanName();
832    parseElementAttributes(xpp, res);
833    next(xpp);
834    int eventType = nextNoWhitespace(xpp);
835    while (eventType != XmlPullParser.END_TAG) {
836      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
837        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
839        res.setTextElement(parseString(xpp));
840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
841        res.getFamily().add(parseString(xpp));
842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
843        res.getGiven().add(parseString(xpp));
844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
845        res.getPrefix().add(parseString(xpp));
846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
847        res.getSuffix().add(parseString(xpp));
848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
849        res.setPeriod(parsePeriod(xpp));
850      } else if (!parseElementContent(eventType, xpp, res))
851        unknownContent(xpp);
852      eventType = nextNoWhitespace(xpp);
853    }
854    next(xpp);
855    parseElementClose(res);
856    return res;
857  }
858
859  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
860    ContactPoint res = new ContactPoint();
861    parseElementAttributes(xpp, res);
862    next(xpp);
863    int eventType = nextNoWhitespace(xpp);
864    while (eventType != XmlPullParser.END_TAG) {
865      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
866        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
868        res.setValueElement(parseString(xpp));
869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
870        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
872        res.setRankElement(parsePositiveInt(xpp));
873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
874        res.setPeriod(parsePeriod(xpp));
875      } else if (!parseElementContent(eventType, xpp, res))
876        unknownContent(xpp);
877      eventType = nextNoWhitespace(xpp);
878    }
879    next(xpp);
880    parseElementClose(res);
881    return res;
882  }
883
884  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
885    Meta res = new Meta();
886    parseElementAttributes(xpp, res);
887    next(xpp);
888    int eventType = nextNoWhitespace(xpp);
889    while (eventType != XmlPullParser.END_TAG) {
890      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
891        res.setVersionIdElement(parseId(xpp));
892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
893        res.setLastUpdatedElement(parseInstant(xpp));
894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
895        res.getProfile().add(parseUri(xpp));
896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
897        res.getSecurity().add(parseCoding(xpp));
898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
899        res.getTag().add(parseCoding(xpp));
900      } else if (!parseElementContent(eventType, xpp, res))
901        unknownContent(xpp);
902      eventType = nextNoWhitespace(xpp);
903    }
904    next(xpp);
905    parseElementClose(res);
906    return res;
907  }
908
909  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
910    Address res = new Address();
911    parseElementAttributes(xpp, res);
912    next(xpp);
913    int eventType = nextNoWhitespace(xpp);
914    while (eventType != XmlPullParser.END_TAG) {
915      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
916        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
918        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
920        res.setTextElement(parseString(xpp));
921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
922        res.getLine().add(parseString(xpp));
923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
924        res.setCityElement(parseString(xpp));
925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
926        res.setDistrictElement(parseString(xpp));
927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
928        res.setStateElement(parseString(xpp));
929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
930        res.setPostalCodeElement(parseString(xpp));
931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
932        res.setCountryElement(parseString(xpp));
933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
934        res.setPeriod(parsePeriod(xpp));
935      } else if (!parseElementContent(eventType, xpp, res))
936        unknownContent(xpp);
937      eventType = nextNoWhitespace(xpp);
938    }
939    next(xpp);
940    parseElementClose(res);
941    return res;
942  }
943
944  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
945    Timing res = new Timing();
946    parseElementAttributes(xpp, res);
947    next(xpp);
948    int eventType = nextNoWhitespace(xpp);
949    while (eventType != XmlPullParser.END_TAG) {
950      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
951        res.getEvent().add(parseDateTime(xpp));
952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
953        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
955        res.setCode(parseCodeableConcept(xpp));
956      } else if (!parseElementContent(eventType, xpp, res))
957        unknownContent(xpp);
958      eventType = nextNoWhitespace(xpp);
959    }
960    next(xpp);
961    parseElementClose(res);
962    return res;
963  }
964
965  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
966    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
967    parseElementAttributes(xpp, res);
968    next(xpp);
969    int eventType = nextNoWhitespace(xpp);
970    while (eventType != XmlPullParser.END_TAG) {
971      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
972        res.setBounds(parseType("bounds", xpp));
973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
974        res.setCountElement(parseInteger(xpp));
975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
976        res.setDurationElement(parseDecimal(xpp));
977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
978        res.setDurationMaxElement(parseDecimal(xpp));
979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnits")) {
980        res.setDurationUnitsElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
982        res.setFrequencyElement(parseInteger(xpp));
983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
984        res.setFrequencyMaxElement(parseInteger(xpp));
985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
986        res.setPeriodElement(parseDecimal(xpp));
987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
988        res.setPeriodMaxElement(parseDecimal(xpp));
989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnits")) {
990        res.setPeriodUnitsElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
992        res.setWhenElement(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
993      } else if (!parseElementContent(eventType, xpp, res))
994        unknownContent(xpp);
995      eventType = nextNoWhitespace(xpp);
996    }
997    next(xpp);
998    parseElementClose(res);
999    return res;
1000  }
1001
1002  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1003    ElementDefinition res = new ElementDefinition();
1004    parseElementAttributes(xpp, res);
1005    next(xpp);
1006    int eventType = nextNoWhitespace(xpp);
1007    while (eventType != XmlPullParser.END_TAG) {
1008      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1009        res.setPathElement(parseString(xpp));
1010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1011        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1013        res.setNameElement(parseString(xpp));
1014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1015        res.setLabelElement(parseString(xpp));
1016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1017        res.getCode().add(parseCoding(xpp));
1018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1019        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1021        res.setShortElement(parseString(xpp));
1022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1023        res.setDefinitionElement(parseMarkdown(xpp));
1024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
1025        res.setCommentsElement(parseMarkdown(xpp));
1026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1027        res.setRequirementsElement(parseMarkdown(xpp));
1028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1029        res.getAlias().add(parseString(xpp));
1030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1031        res.setMinElement(parseInteger(xpp));
1032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1033        res.setMaxElement(parseString(xpp));
1034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1035        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1037        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nameReference")) {
1039        res.setNameReferenceElement(parseString(xpp));
1040      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1041        res.setDefaultValue(parseType("defaultValue", xpp));
1042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1043        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1044      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1045        res.setFixed(parseType("fixed", xpp));
1046      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1047        res.setPattern(parseType("pattern", xpp));
1048      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
1049        res.setExample(parseType("example", xpp));
1050      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1051        res.setMinValue(parseType("minValue", xpp));
1052      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1053        res.setMaxValue(parseType("maxValue", xpp));
1054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1055        res.setMaxLengthElement(parseInteger(xpp));
1056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1057        res.getCondition().add(parseId(xpp));
1058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1059        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1061        res.setMustSupportElement(parseBoolean(xpp));
1062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1063        res.setIsModifierElement(parseBoolean(xpp));
1064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1065        res.setIsSummaryElement(parseBoolean(xpp));
1066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1067        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1069        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1070      } else if (!parseElementContent(eventType, xpp, res))
1071        unknownContent(xpp);
1072      eventType = nextNoWhitespace(xpp);
1073    }
1074    next(xpp);
1075    parseElementClose(res);
1076    return res;
1077  }
1078
1079  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1080    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1081    parseElementAttributes(xpp, res);
1082    next(xpp);
1083    int eventType = nextNoWhitespace(xpp);
1084    while (eventType != XmlPullParser.END_TAG) {
1085      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1086        res.getDiscriminator().add(parseString(xpp));
1087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1088        res.setDescriptionElement(parseString(xpp));
1089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1090        res.setOrderedElement(parseBoolean(xpp));
1091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1092        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1093      } else if (!parseElementContent(eventType, xpp, res))
1094        unknownContent(xpp);
1095      eventType = nextNoWhitespace(xpp);
1096    }
1097    next(xpp);
1098    parseElementClose(res);
1099    return res;
1100  }
1101
1102  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1103    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1104    parseElementAttributes(xpp, res);
1105    next(xpp);
1106    int eventType = nextNoWhitespace(xpp);
1107    while (eventType != XmlPullParser.END_TAG) {
1108      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1109        res.setPathElement(parseString(xpp));
1110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1111        res.setMinElement(parseInteger(xpp));
1112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1113        res.setMaxElement(parseString(xpp));
1114      } else if (!parseElementContent(eventType, xpp, res))
1115        unknownContent(xpp);
1116      eventType = nextNoWhitespace(xpp);
1117    }
1118    next(xpp);
1119    parseElementClose(res);
1120    return res;
1121  }
1122
1123  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1124    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1125    parseElementAttributes(xpp, res);
1126    next(xpp);
1127    int eventType = nextNoWhitespace(xpp);
1128    while (eventType != XmlPullParser.END_TAG) {
1129      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1130        res.setCodeElement(parseCode(xpp));
1131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1132        res.getProfile().add(parseUri(xpp));
1133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1134        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1135      } else if (!parseElementContent(eventType, xpp, res))
1136        unknownContent(xpp);
1137      eventType = nextNoWhitespace(xpp);
1138    }
1139    next(xpp);
1140    parseElementClose(res);
1141    return res;
1142  }
1143
1144  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1145    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1146    parseElementAttributes(xpp, res);
1147    next(xpp);
1148    int eventType = nextNoWhitespace(xpp);
1149    while (eventType != XmlPullParser.END_TAG) {
1150      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1151        res.setKeyElement(parseId(xpp));
1152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1153        res.setRequirementsElement(parseString(xpp));
1154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1155        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1157        res.setHumanElement(parseString(xpp));
1158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1159        res.setXpathElement(parseString(xpp));
1160      } else if (!parseElementContent(eventType, xpp, res))
1161        unknownContent(xpp);
1162      eventType = nextNoWhitespace(xpp);
1163    }
1164    next(xpp);
1165    parseElementClose(res);
1166    return res;
1167  }
1168
1169  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1170    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1171    parseElementAttributes(xpp, res);
1172    next(xpp);
1173    int eventType = nextNoWhitespace(xpp);
1174    while (eventType != XmlPullParser.END_TAG) {
1175      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1176        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1178        res.setDescriptionElement(parseString(xpp));
1179      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1180        res.setValueSet(parseType("valueSet", xpp));
1181      } else if (!parseElementContent(eventType, xpp, res))
1182        unknownContent(xpp);
1183      eventType = nextNoWhitespace(xpp);
1184    }
1185    next(xpp);
1186    parseElementClose(res);
1187    return res;
1188  }
1189
1190  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1191    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1192    parseElementAttributes(xpp, res);
1193    next(xpp);
1194    int eventType = nextNoWhitespace(xpp);
1195    while (eventType != XmlPullParser.END_TAG) {
1196      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1197        res.setIdentityElement(parseId(xpp));
1198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1199        res.setLanguageElement(parseCode(xpp));
1200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1201        res.setMapElement(parseString(xpp));
1202      } else if (!parseElementContent(eventType, xpp, res))
1203        unknownContent(xpp);
1204      eventType = nextNoWhitespace(xpp);
1205    }
1206    next(xpp);
1207    parseElementClose(res);
1208    return res;
1209  }
1210
1211  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1212    parseResourceAttributes(xpp, res);
1213  }
1214
1215  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1217        res.setText(parseNarrative(xpp));
1218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
1219        res.getContained().add(parseResourceContained(xpp));
1220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
1221        res.getExtension().add(parseExtension(xpp));
1222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
1223        res.getModifierExtension().add(parseExtension(xpp));
1224    } else
1225    return parseResourceContent(eventType, xpp, res);
1226    return true;
1227  }
1228
1229  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1230    Parameters res = new Parameters();
1231    parseResourceAttributes(xpp, res);
1232    next(xpp);
1233    int eventType = nextNoWhitespace(xpp);
1234    while (eventType != XmlPullParser.END_TAG) {
1235      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
1236        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
1237      } else if (!parseResourceContent(eventType, xpp, res))
1238        unknownContent(xpp);
1239      eventType = nextNoWhitespace(xpp);
1240    }
1241    next(xpp);
1242    parseElementClose(res);
1243    return res;
1244  }
1245
1246  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
1247    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
1248    parseBackboneAttributes(xpp, res);
1249    next(xpp);
1250    int eventType = nextNoWhitespace(xpp);
1251    while (eventType != XmlPullParser.END_TAG) {
1252      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1253        res.setNameElement(parseString(xpp));
1254      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1255        res.setValue(parseType("value", xpp));
1256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1257        res.setResource(parseResourceContained(xpp));
1258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
1259        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
1260      } else if (!parseBackboneContent(eventType, xpp, res))
1261        unknownContent(xpp);
1262      eventType = nextNoWhitespace(xpp);
1263    }
1264    next(xpp);
1265    parseElementClose(res);
1266    return res;
1267  }
1268
1269  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1270    if (!comments.isEmpty()) {
1271      res.getFormatCommentsPre().addAll(comments);
1272      comments.clear();
1273     }
1274  }
1275
1276  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1277      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
1278        res.setIdElement(parseId(xpp));
1279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
1280        res.setMeta(parseMeta(xpp));
1281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
1282        res.setImplicitRulesElement(parseUri(xpp));
1283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1284        res.setLanguageElement(parseCode(xpp));
1285    } else
1286        return false;
1287    return true;
1288  }
1289
1290  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1291    Account res = new Account();
1292    parseDomainResourceAttributes(xpp, res);
1293    next(xpp);
1294    int eventType = nextNoWhitespace(xpp);
1295    while (eventType != XmlPullParser.END_TAG) {
1296      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1297        res.getIdentifier().add(parseIdentifier(xpp));
1298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1299        res.setNameElement(parseString(xpp));
1300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1301        res.setType(parseCodeableConcept(xpp));
1302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1303        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
1304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activePeriod")) {
1305        res.setActivePeriod(parsePeriod(xpp));
1306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
1307        res.setCurrency(parseCoding(xpp));
1308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("balance")) {
1309        res.setBalance(parseMoney(xpp));
1310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coveragePeriod")) {
1311        res.setCoveragePeriod(parsePeriod(xpp));
1312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1313        res.setSubject(parseReference(xpp));
1314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
1315        res.setOwner(parseReference(xpp));
1316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1317        res.setDescriptionElement(parseString(xpp));
1318      } else if (!parseDomainResourceContent(eventType, xpp, res))
1319        unknownContent(xpp);
1320      eventType = nextNoWhitespace(xpp);
1321    }
1322    next(xpp);
1323    parseElementClose(res);
1324    return res;
1325  }
1326
1327  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1328    AllergyIntolerance res = new AllergyIntolerance();
1329    parseDomainResourceAttributes(xpp, res);
1330    next(xpp);
1331    int eventType = nextNoWhitespace(xpp);
1332    while (eventType != XmlPullParser.END_TAG) {
1333      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1334        res.getIdentifier().add(parseIdentifier(xpp));
1335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
1336        res.setOnsetElement(parseDateTime(xpp));
1337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
1338        res.setRecordedDateElement(parseDateTime(xpp));
1339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
1340        res.setRecorder(parseReference(xpp));
1341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
1342        res.setPatient(parseReference(xpp));
1343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
1344        res.setReporter(parseReference(xpp));
1345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
1346        res.setSubstance(parseCodeableConcept(xpp));
1347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1348        res.setStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceStatus.NULL, new AllergyIntolerance.AllergyIntoleranceStatusEnumFactory()));
1349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
1350        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
1351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1352        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
1353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
1354        res.setCategoryElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
1355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurence")) {
1356        res.setLastOccurenceElement(parseDateTime(xpp));
1357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
1358        res.setNote(parseAnnotation(xpp));
1359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
1360        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
1361      } else if (!parseDomainResourceContent(eventType, xpp, res))
1362        unknownContent(xpp);
1363      eventType = nextNoWhitespace(xpp);
1364    }
1365    next(xpp);
1366    parseElementClose(res);
1367    return res;
1368  }
1369
1370  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
1371    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
1372    parseBackboneAttributes(xpp, res);
1373    next(xpp);
1374    int eventType = nextNoWhitespace(xpp);
1375    while (eventType != XmlPullParser.END_TAG) {
1376      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
1377        res.setSubstance(parseCodeableConcept(xpp));
1378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
1379        res.setCertaintyElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCertainty.NULL, new AllergyIntolerance.AllergyIntoleranceCertaintyEnumFactory()));
1380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
1381        res.getManifestation().add(parseCodeableConcept(xpp));
1382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1383        res.setDescriptionElement(parseString(xpp));
1384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
1385        res.setOnsetElement(parseDateTime(xpp));
1386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1387        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
1388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
1389        res.setExposureRoute(parseCodeableConcept(xpp));
1390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
1391        res.setNote(parseAnnotation(xpp));
1392      } else if (!parseBackboneContent(eventType, xpp, res))
1393        unknownContent(xpp);
1394      eventType = nextNoWhitespace(xpp);
1395    }
1396    next(xpp);
1397    parseElementClose(res);
1398    return res;
1399  }
1400
1401  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1402    Appointment res = new Appointment();
1403    parseDomainResourceAttributes(xpp, res);
1404    next(xpp);
1405    int eventType = nextNoWhitespace(xpp);
1406    while (eventType != XmlPullParser.END_TAG) {
1407      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1408        res.getIdentifier().add(parseIdentifier(xpp));
1409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1410        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
1411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1412        res.setType(parseCodeableConcept(xpp));
1413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
1414        res.setReason(parseCodeableConcept(xpp));
1415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
1416        res.setPriorityElement(parseUnsignedInt(xpp));
1417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1418        res.setDescriptionElement(parseString(xpp));
1419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1420        res.setStartElement(parseInstant(xpp));
1421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1422        res.setEndElement(parseInstant(xpp));
1423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
1424        res.setMinutesDurationElement(parsePositiveInt(xpp));
1425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
1426        res.getSlot().add(parseReference(xpp));
1427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1428        res.setCommentElement(parseString(xpp));
1429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1430        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
1431      } else if (!parseDomainResourceContent(eventType, xpp, res))
1432        unknownContent(xpp);
1433      eventType = nextNoWhitespace(xpp);
1434    }
1435    next(xpp);
1436    parseElementClose(res);
1437    return res;
1438  }
1439
1440  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
1441    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
1442    parseBackboneAttributes(xpp, res);
1443    next(xpp);
1444    int eventType = nextNoWhitespace(xpp);
1445    while (eventType != XmlPullParser.END_TAG) {
1446      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1447        res.getType().add(parseCodeableConcept(xpp));
1448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
1449        res.setActor(parseReference(xpp));
1450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
1451        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
1452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1453        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
1454      } else if (!parseBackboneContent(eventType, xpp, res))
1455        unknownContent(xpp);
1456      eventType = nextNoWhitespace(xpp);
1457    }
1458    next(xpp);
1459    parseElementClose(res);
1460    return res;
1461  }
1462
1463  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1464    AppointmentResponse res = new AppointmentResponse();
1465    parseDomainResourceAttributes(xpp, res);
1466    next(xpp);
1467    int eventType = nextNoWhitespace(xpp);
1468    while (eventType != XmlPullParser.END_TAG) {
1469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1470        res.getIdentifier().add(parseIdentifier(xpp));
1471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
1472        res.setAppointment(parseReference(xpp));
1473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1474        res.setStartElement(parseInstant(xpp));
1475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1476        res.setEndElement(parseInstant(xpp));
1477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
1478        res.getParticipantType().add(parseCodeableConcept(xpp));
1479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
1480        res.setActor(parseReference(xpp));
1481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
1482        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
1483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1484        res.setCommentElement(parseString(xpp));
1485      } else if (!parseDomainResourceContent(eventType, xpp, res))
1486        unknownContent(xpp);
1487      eventType = nextNoWhitespace(xpp);
1488    }
1489    next(xpp);
1490    parseElementClose(res);
1491    return res;
1492  }
1493
1494  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1495    AuditEvent res = new AuditEvent();
1496    parseDomainResourceAttributes(xpp, res);
1497    next(xpp);
1498    int eventType = nextNoWhitespace(xpp);
1499    while (eventType != XmlPullParser.END_TAG) {
1500      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1501        res.setEvent(parseAuditEventAuditEventEventComponent(xpp, res));
1502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1503        res.getParticipant().add(parseAuditEventAuditEventParticipantComponent(xpp, res));
1504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1505        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
1506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("object")) {
1507        res.getObject().add(parseAuditEventAuditEventObjectComponent(xpp, res));
1508      } else if (!parseDomainResourceContent(eventType, xpp, res))
1509        unknownContent(xpp);
1510      eventType = nextNoWhitespace(xpp);
1511    }
1512    next(xpp);
1513    parseElementClose(res);
1514    return res;
1515  }
1516
1517  protected AuditEvent.AuditEventEventComponent parseAuditEventAuditEventEventComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1518    AuditEvent.AuditEventEventComponent res = new AuditEvent.AuditEventEventComponent();
1519    parseBackboneAttributes(xpp, res);
1520    next(xpp);
1521    int eventType = nextNoWhitespace(xpp);
1522    while (eventType != XmlPullParser.END_TAG) {
1523      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1524        res.setType(parseCoding(xpp));
1525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
1526        res.getSubtype().add(parseCoding(xpp));
1527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
1528        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
1529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
1530        res.setDateTimeElement(parseInstant(xpp));
1531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
1532        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
1533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
1534        res.setOutcomeDescElement(parseString(xpp));
1535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
1536        res.getPurposeOfEvent().add(parseCoding(xpp));
1537      } else if (!parseBackboneContent(eventType, xpp, res))
1538        unknownContent(xpp);
1539      eventType = nextNoWhitespace(xpp);
1540    }
1541    next(xpp);
1542    parseElementClose(res);
1543    return res;
1544  }
1545
1546  protected AuditEvent.AuditEventParticipantComponent parseAuditEventAuditEventParticipantComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1547    AuditEvent.AuditEventParticipantComponent res = new AuditEvent.AuditEventParticipantComponent();
1548    parseBackboneAttributes(xpp, res);
1549    next(xpp);
1550    int eventType = nextNoWhitespace(xpp);
1551    while (eventType != XmlPullParser.END_TAG) {
1552      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
1553        res.getRole().add(parseCodeableConcept(xpp));
1554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1555        res.setReference(parseReference(xpp));
1556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
1557        res.setUserId(parseIdentifier(xpp));
1558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
1559        res.setAltIdElement(parseString(xpp));
1560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1561        res.setNameElement(parseString(xpp));
1562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
1563        res.setRequestorElement(parseBoolean(xpp));
1564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
1565        res.setLocation(parseReference(xpp));
1566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
1567        res.getPolicy().add(parseUri(xpp));
1568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
1569        res.setMedia(parseCoding(xpp));
1570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
1571        res.setNetwork(parseAuditEventAuditEventParticipantNetworkComponent(xpp, owner));
1572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
1573        res.getPurposeOfUse().add(parseCoding(xpp));
1574      } else if (!parseBackboneContent(eventType, xpp, res))
1575        unknownContent(xpp);
1576      eventType = nextNoWhitespace(xpp);
1577    }
1578    next(xpp);
1579    parseElementClose(res);
1580    return res;
1581  }
1582
1583  protected AuditEvent.AuditEventParticipantNetworkComponent parseAuditEventAuditEventParticipantNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1584    AuditEvent.AuditEventParticipantNetworkComponent res = new AuditEvent.AuditEventParticipantNetworkComponent();
1585    parseBackboneAttributes(xpp, res);
1586    next(xpp);
1587    int eventType = nextNoWhitespace(xpp);
1588    while (eventType != XmlPullParser.END_TAG) {
1589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
1590        res.setAddressElement(parseString(xpp));
1591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1592        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventParticipantNetworkType.NULL, new AuditEvent.AuditEventParticipantNetworkTypeEnumFactory()));
1593      } else if (!parseBackboneContent(eventType, xpp, res))
1594        unknownContent(xpp);
1595      eventType = nextNoWhitespace(xpp);
1596    }
1597    next(xpp);
1598    parseElementClose(res);
1599    return res;
1600  }
1601
1602  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1603    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
1604    parseBackboneAttributes(xpp, res);
1605    next(xpp);
1606    int eventType = nextNoWhitespace(xpp);
1607    while (eventType != XmlPullParser.END_TAG) {
1608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
1609        res.setSiteElement(parseString(xpp));
1610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1611        res.setIdentifier(parseIdentifier(xpp));
1612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1613        res.getType().add(parseCoding(xpp));
1614      } else if (!parseBackboneContent(eventType, xpp, res))
1615        unknownContent(xpp);
1616      eventType = nextNoWhitespace(xpp);
1617    }
1618    next(xpp);
1619    parseElementClose(res);
1620    return res;
1621  }
1622
1623  protected AuditEvent.AuditEventObjectComponent parseAuditEventAuditEventObjectComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1624    AuditEvent.AuditEventObjectComponent res = new AuditEvent.AuditEventObjectComponent();
1625    parseBackboneAttributes(xpp, res);
1626    next(xpp);
1627    int eventType = nextNoWhitespace(xpp);
1628    while (eventType != XmlPullParser.END_TAG) {
1629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1630        res.setIdentifier(parseIdentifier(xpp));
1631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1632        res.setReference(parseReference(xpp));
1633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1634        res.setType(parseCoding(xpp));
1635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
1636        res.setRole(parseCoding(xpp));
1637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
1638        res.setLifecycle(parseCoding(xpp));
1639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
1640        res.getSecurityLabel().add(parseCoding(xpp));
1641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1642        res.setNameElement(parseString(xpp));
1643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1644        res.setDescriptionElement(parseString(xpp));
1645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
1646        res.setQueryElement(parseBase64Binary(xpp));
1647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
1648        res.getDetail().add(parseAuditEventAuditEventObjectDetailComponent(xpp, owner));
1649      } else if (!parseBackboneContent(eventType, xpp, res))
1650        unknownContent(xpp);
1651      eventType = nextNoWhitespace(xpp);
1652    }
1653    next(xpp);
1654    parseElementClose(res);
1655    return res;
1656  }
1657
1658  protected AuditEvent.AuditEventObjectDetailComponent parseAuditEventAuditEventObjectDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1659    AuditEvent.AuditEventObjectDetailComponent res = new AuditEvent.AuditEventObjectDetailComponent();
1660    parseBackboneAttributes(xpp, res);
1661    next(xpp);
1662    int eventType = nextNoWhitespace(xpp);
1663    while (eventType != XmlPullParser.END_TAG) {
1664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1665        res.setTypeElement(parseString(xpp));
1666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1667        res.setValueElement(parseBase64Binary(xpp));
1668      } else if (!parseBackboneContent(eventType, xpp, res))
1669        unknownContent(xpp);
1670      eventType = nextNoWhitespace(xpp);
1671    }
1672    next(xpp);
1673    parseElementClose(res);
1674    return res;
1675  }
1676
1677  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1678    Basic res = new Basic();
1679    parseDomainResourceAttributes(xpp, res);
1680    next(xpp);
1681    int eventType = nextNoWhitespace(xpp);
1682    while (eventType != XmlPullParser.END_TAG) {
1683      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1684        res.getIdentifier().add(parseIdentifier(xpp));
1685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1686        res.setCode(parseCodeableConcept(xpp));
1687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1688        res.setSubject(parseReference(xpp));
1689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
1690        res.setAuthor(parseReference(xpp));
1691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
1692        res.setCreatedElement(parseDate(xpp));
1693      } else if (!parseDomainResourceContent(eventType, xpp, res))
1694        unknownContent(xpp);
1695      eventType = nextNoWhitespace(xpp);
1696    }
1697    next(xpp);
1698    parseElementClose(res);
1699    return res;
1700  }
1701
1702  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1703    Binary res = new Binary();
1704    parseResourceAttributes(xpp, res);
1705    next(xpp);
1706    int eventType = nextNoWhitespace(xpp);
1707    while (eventType != XmlPullParser.END_TAG) {
1708      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
1709        res.setContentTypeElement(parseCode(xpp));
1710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
1711        res.setContentElement(parseBase64Binary(xpp));
1712      } else if (!parseResourceContent(eventType, xpp, res))
1713        unknownContent(xpp);
1714      eventType = nextNoWhitespace(xpp);
1715    }
1716    next(xpp);
1717    parseElementClose(res);
1718    return res;
1719  }
1720
1721  protected BodySite parseBodySite(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1722    BodySite res = new BodySite();
1723    parseDomainResourceAttributes(xpp, res);
1724    next(xpp);
1725    int eventType = nextNoWhitespace(xpp);
1726    while (eventType != XmlPullParser.END_TAG) {
1727      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
1728        res.setPatient(parseReference(xpp));
1729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1730        res.getIdentifier().add(parseIdentifier(xpp));
1731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1732        res.setCode(parseCodeableConcept(xpp));
1733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
1734        res.getModifier().add(parseCodeableConcept(xpp));
1735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1736        res.setDescriptionElement(parseString(xpp));
1737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
1738        res.getImage().add(parseAttachment(xpp));
1739      } else if (!parseDomainResourceContent(eventType, xpp, res))
1740        unknownContent(xpp);
1741      eventType = nextNoWhitespace(xpp);
1742    }
1743    next(xpp);
1744    parseElementClose(res);
1745    return res;
1746  }
1747
1748  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1749    Bundle res = new Bundle();
1750    parseResourceAttributes(xpp, res);
1751    next(xpp);
1752    int eventType = nextNoWhitespace(xpp);
1753    while (eventType != XmlPullParser.END_TAG) {
1754      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1755        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
1756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
1757        res.setTotalElement(parseUnsignedInt(xpp));
1758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
1759        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
1760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
1761        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
1762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
1763        res.setSignature(parseSignature(xpp));
1764      } else if (!parseResourceContent(eventType, xpp, res))
1765        unknownContent(xpp);
1766      eventType = nextNoWhitespace(xpp);
1767    }
1768    next(xpp);
1769    parseElementClose(res);
1770    return res;
1771  }
1772
1773  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
1774    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
1775    parseBackboneAttributes(xpp, res);
1776    next(xpp);
1777    int eventType = nextNoWhitespace(xpp);
1778    while (eventType != XmlPullParser.END_TAG) {
1779      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
1780        res.setRelationElement(parseString(xpp));
1781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1782        res.setUrlElement(parseUri(xpp));
1783      } else if (!parseBackboneContent(eventType, xpp, res))
1784        unknownContent(xpp);
1785      eventType = nextNoWhitespace(xpp);
1786    }
1787    next(xpp);
1788    parseElementClose(res);
1789    return res;
1790  }
1791
1792  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
1793    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
1794    parseBackboneAttributes(xpp, res);
1795    next(xpp);
1796    int eventType = nextNoWhitespace(xpp);
1797    while (eventType != XmlPullParser.END_TAG) {
1798      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
1799        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
1800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
1801        res.setFullUrlElement(parseUri(xpp));
1802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1803        res.setResource(parseResourceContained(xpp));
1804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
1805        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
1806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
1807        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
1808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
1809        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
1810      } else if (!parseBackboneContent(eventType, xpp, res))
1811        unknownContent(xpp);
1812      eventType = nextNoWhitespace(xpp);
1813    }
1814    next(xpp);
1815    parseElementClose(res);
1816    return res;
1817  }
1818
1819  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
1820    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
1821    parseBackboneAttributes(xpp, res);
1822    next(xpp);
1823    int eventType = nextNoWhitespace(xpp);
1824    while (eventType != XmlPullParser.END_TAG) {
1825      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
1826        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
1827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
1828        res.setScoreElement(parseDecimal(xpp));
1829      } else if (!parseBackboneContent(eventType, xpp, res))
1830        unknownContent(xpp);
1831      eventType = nextNoWhitespace(xpp);
1832    }
1833    next(xpp);
1834    parseElementClose(res);
1835    return res;
1836  }
1837
1838  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
1839    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
1840    parseBackboneAttributes(xpp, res);
1841    next(xpp);
1842    int eventType = nextNoWhitespace(xpp);
1843    while (eventType != XmlPullParser.END_TAG) {
1844      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
1845        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
1846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1847        res.setUrlElement(parseUri(xpp));
1848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
1849        res.setIfNoneMatchElement(parseString(xpp));
1850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
1851        res.setIfModifiedSinceElement(parseInstant(xpp));
1852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
1853        res.setIfMatchElement(parseString(xpp));
1854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
1855        res.setIfNoneExistElement(parseString(xpp));
1856      } else if (!parseBackboneContent(eventType, xpp, res))
1857        unknownContent(xpp);
1858      eventType = nextNoWhitespace(xpp);
1859    }
1860    next(xpp);
1861    parseElementClose(res);
1862    return res;
1863  }
1864
1865  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
1866    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
1867    parseBackboneAttributes(xpp, res);
1868    next(xpp);
1869    int eventType = nextNoWhitespace(xpp);
1870    while (eventType != XmlPullParser.END_TAG) {
1871      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1872        res.setStatusElement(parseString(xpp));
1873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
1874        res.setLocationElement(parseUri(xpp));
1875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
1876        res.setEtagElement(parseString(xpp));
1877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
1878        res.setLastModifiedElement(parseInstant(xpp));
1879      } else if (!parseBackboneContent(eventType, xpp, res))
1880        unknownContent(xpp);
1881      eventType = nextNoWhitespace(xpp);
1882    }
1883    next(xpp);
1884    parseElementClose(res);
1885    return res;
1886  }
1887
1888  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1889    CarePlan res = new CarePlan();
1890    parseDomainResourceAttributes(xpp, res);
1891    next(xpp);
1892    int eventType = nextNoWhitespace(xpp);
1893    while (eventType != XmlPullParser.END_TAG) {
1894      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1895        res.getIdentifier().add(parseIdentifier(xpp));
1896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1897        res.setSubject(parseReference(xpp));
1898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1899        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
1900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
1901        res.setContext(parseReference(xpp));
1902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1903        res.setPeriod(parsePeriod(xpp));
1904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
1905        res.getAuthor().add(parseReference(xpp));
1906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modified")) {
1907        res.setModifiedElement(parseDateTime(xpp));
1908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
1909        res.getCategory().add(parseCodeableConcept(xpp));
1910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1911        res.setDescriptionElement(parseString(xpp));
1912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
1913        res.getAddresses().add(parseReference(xpp));
1914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("support")) {
1915        res.getSupport().add(parseReference(xpp));
1916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedPlan")) {
1917        res.getRelatedPlan().add(parseCarePlanCarePlanRelatedPlanComponent(xpp, res));
1918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1919        res.getParticipant().add(parseCarePlanCarePlanParticipantComponent(xpp, res));
1920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
1921        res.getGoal().add(parseReference(xpp));
1922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
1923        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
1924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
1925        res.setNote(parseAnnotation(xpp));
1926      } else if (!parseDomainResourceContent(eventType, xpp, res))
1927        unknownContent(xpp);
1928      eventType = nextNoWhitespace(xpp);
1929    }
1930    next(xpp);
1931    parseElementClose(res);
1932    return res;
1933  }
1934
1935  protected CarePlan.CarePlanRelatedPlanComponent parseCarePlanCarePlanRelatedPlanComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
1936    CarePlan.CarePlanRelatedPlanComponent res = new CarePlan.CarePlanRelatedPlanComponent();
1937    parseBackboneAttributes(xpp, res);
1938    next(xpp);
1939    int eventType = nextNoWhitespace(xpp);
1940    while (eventType != XmlPullParser.END_TAG) {
1941      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1942        res.setCodeElement(parseEnumeration(xpp, CarePlan.CarePlanRelationship.NULL, new CarePlan.CarePlanRelationshipEnumFactory()));
1943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
1944        res.setPlan(parseReference(xpp));
1945      } else if (!parseBackboneContent(eventType, xpp, res))
1946        unknownContent(xpp);
1947      eventType = nextNoWhitespace(xpp);
1948    }
1949    next(xpp);
1950    parseElementClose(res);
1951    return res;
1952  }
1953
1954  protected CarePlan.CarePlanParticipantComponent parseCarePlanCarePlanParticipantComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
1955    CarePlan.CarePlanParticipantComponent res = new CarePlan.CarePlanParticipantComponent();
1956    parseBackboneAttributes(xpp, res);
1957    next(xpp);
1958    int eventType = nextNoWhitespace(xpp);
1959    while (eventType != XmlPullParser.END_TAG) {
1960      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
1961        res.setRole(parseCodeableConcept(xpp));
1962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
1963        res.setMember(parseReference(xpp));
1964      } else if (!parseBackboneContent(eventType, xpp, res))
1965        unknownContent(xpp);
1966      eventType = nextNoWhitespace(xpp);
1967    }
1968    next(xpp);
1969    parseElementClose(res);
1970    return res;
1971  }
1972
1973  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
1974    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
1975    parseBackboneAttributes(xpp, res);
1976    next(xpp);
1977    int eventType = nextNoWhitespace(xpp);
1978    while (eventType != XmlPullParser.END_TAG) {
1979      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionResulting")) {
1980        res.getActionResulting().add(parseReference(xpp));
1981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
1982        res.getProgress().add(parseAnnotation(xpp));
1983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1984        res.setReference(parseReference(xpp));
1985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
1986        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
1987      } else if (!parseBackboneContent(eventType, xpp, res))
1988        unknownContent(xpp);
1989      eventType = nextNoWhitespace(xpp);
1990    }
1991    next(xpp);
1992    parseElementClose(res);
1993    return res;
1994  }
1995
1996  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
1997    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
1998    parseBackboneAttributes(xpp, res);
1999    next(xpp);
2000    int eventType = nextNoWhitespace(xpp);
2001    while (eventType != XmlPullParser.END_TAG) {
2002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2003        res.setCategory(parseCodeableConcept(xpp));
2004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2005        res.setCode(parseCodeableConcept(xpp));
2006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
2007        res.getReasonCode().add(parseCodeableConcept(xpp));
2008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
2009        res.getReasonReference().add(parseReference(xpp));
2010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
2011        res.getGoal().add(parseReference(xpp));
2012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2013        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
2014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
2015        res.setStatusReason(parseCodeableConcept(xpp));
2016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prohibited")) {
2017        res.setProhibitedElement(parseBoolean(xpp));
2018      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
2019        res.setScheduled(parseType("scheduled", xpp));
2020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2021        res.setLocation(parseReference(xpp));
2022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
2023        res.getPerformer().add(parseReference(xpp));
2024      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2025        res.setProduct(parseType("product", xpp));
2026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
2027        res.setDailyAmount(parseSimpleQuantity(xpp));
2028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2029        res.setQuantity(parseSimpleQuantity(xpp));
2030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2031        res.setDescriptionElement(parseString(xpp));
2032      } else if (!parseBackboneContent(eventType, xpp, res))
2033        unknownContent(xpp);
2034      eventType = nextNoWhitespace(xpp);
2035    }
2036    next(xpp);
2037    parseElementClose(res);
2038    return res;
2039  }
2040
2041  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2042    Claim res = new Claim();
2043    parseDomainResourceAttributes(xpp, res);
2044    next(xpp);
2045    int eventType = nextNoWhitespace(xpp);
2046    while (eventType != XmlPullParser.END_TAG) {
2047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2048        res.setTypeElement(parseEnumeration(xpp, Claim.ClaimType.NULL, new Claim.ClaimTypeEnumFactory()));
2049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2050        res.getIdentifier().add(parseIdentifier(xpp));
2051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
2052        res.setRuleset(parseCoding(xpp));
2053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2054        res.setOriginalRuleset(parseCoding(xpp));
2055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2056        res.setCreatedElement(parseDateTime(xpp));
2057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
2058        res.setTarget(parseReference(xpp));
2059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
2060        res.setProvider(parseReference(xpp));
2061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
2062        res.setOrganization(parseReference(xpp));
2063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
2064        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
2065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2066        res.setPriority(parseCoding(xpp));
2067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
2068        res.setFundsReserve(parseCoding(xpp));
2069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
2070        res.setEnterer(parseReference(xpp));
2071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
2072        res.setFacility(parseReference(xpp));
2073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
2074        res.setPrescription(parseReference(xpp));
2075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
2076        res.setOriginalPrescription(parseReference(xpp));
2077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
2078        res.setPayee(parseClaimPayeeComponent(xpp, res));
2079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
2080        res.setReferral(parseReference(xpp));
2081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
2082        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
2083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
2084        res.getCondition().add(parseCoding(xpp));
2085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2086        res.setPatient(parseReference(xpp));
2087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2088        res.getCoverage().add(parseClaimCoverageComponent(xpp, res));
2089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exception")) {
2090        res.getException().add(parseCoding(xpp));
2091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("school")) {
2092        res.setSchoolElement(parseString(xpp));
2093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
2094        res.setAccidentElement(parseDate(xpp));
2095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accidentType")) {
2096        res.setAccidentType(parseCoding(xpp));
2097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interventionException")) {
2098        res.getInterventionException().add(parseCoding(xpp));
2099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2100        res.getItem().add(parseClaimItemsComponent(xpp, res));
2101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMaterials")) {
2102        res.getAdditionalMaterials().add(parseCoding(xpp));
2103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("missingTeeth")) {
2104        res.getMissingTeeth().add(parseClaimMissingTeethComponent(xpp, res));
2105      } else if (!parseDomainResourceContent(eventType, xpp, res))
2106        unknownContent(xpp);
2107      eventType = nextNoWhitespace(xpp);
2108    }
2109    next(xpp);
2110    parseElementClose(res);
2111    return res;
2112  }
2113
2114  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2115    Claim.PayeeComponent res = new Claim.PayeeComponent();
2116    parseBackboneAttributes(xpp, res);
2117    next(xpp);
2118    int eventType = nextNoWhitespace(xpp);
2119    while (eventType != XmlPullParser.END_TAG) {
2120      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2121        res.setType(parseCoding(xpp));
2122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
2123        res.setProvider(parseReference(xpp));
2124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
2125        res.setOrganization(parseReference(xpp));
2126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("person")) {
2127        res.setPerson(parseReference(xpp));
2128      } else if (!parseBackboneContent(eventType, xpp, res))
2129        unknownContent(xpp);
2130      eventType = nextNoWhitespace(xpp);
2131    }
2132    next(xpp);
2133    parseElementClose(res);
2134    return res;
2135  }
2136
2137  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2138    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
2139    parseBackboneAttributes(xpp, res);
2140    next(xpp);
2141    int eventType = nextNoWhitespace(xpp);
2142    while (eventType != XmlPullParser.END_TAG) {
2143      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2144        res.setSequenceElement(parsePositiveInt(xpp));
2145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
2146        res.setDiagnosis(parseCoding(xpp));
2147      } else if (!parseBackboneContent(eventType, xpp, res))
2148        unknownContent(xpp);
2149      eventType = nextNoWhitespace(xpp);
2150    }
2151    next(xpp);
2152    parseElementClose(res);
2153    return res;
2154  }
2155
2156  protected Claim.CoverageComponent parseClaimCoverageComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2157    Claim.CoverageComponent res = new Claim.CoverageComponent();
2158    parseBackboneAttributes(xpp, res);
2159    next(xpp);
2160    int eventType = nextNoWhitespace(xpp);
2161    while (eventType != XmlPullParser.END_TAG) {
2162      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2163        res.setSequenceElement(parsePositiveInt(xpp));
2164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
2165        res.setFocalElement(parseBoolean(xpp));
2166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2167        res.setCoverage(parseReference(xpp));
2168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
2169        res.setBusinessArrangementElement(parseString(xpp));
2170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
2171        res.setRelationship(parseCoding(xpp));
2172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
2173        res.getPreAuthRef().add(parseString(xpp));
2174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
2175        res.setClaimResponse(parseReference(xpp));
2176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2177        res.setOriginalRuleset(parseCoding(xpp));
2178      } else if (!parseBackboneContent(eventType, xpp, res))
2179        unknownContent(xpp);
2180      eventType = nextNoWhitespace(xpp);
2181    }
2182    next(xpp);
2183    parseElementClose(res);
2184    return res;
2185  }
2186
2187  protected Claim.ItemsComponent parseClaimItemsComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2188    Claim.ItemsComponent res = new Claim.ItemsComponent();
2189    parseBackboneAttributes(xpp, res);
2190    next(xpp);
2191    int eventType = nextNoWhitespace(xpp);
2192    while (eventType != XmlPullParser.END_TAG) {
2193      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2194        res.setSequenceElement(parsePositiveInt(xpp));
2195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2196        res.setType(parseCoding(xpp));
2197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
2198        res.setProvider(parseReference(xpp));
2199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
2200        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
2201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2202        res.setService(parseCoding(xpp));
2203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceDate")) {
2204        res.setServiceDateElement(parseDate(xpp));
2205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2206        res.setQuantity(parseSimpleQuantity(xpp));
2207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2208        res.setUnitPrice(parseMoney(xpp));
2209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2210        res.setFactorElement(parseDecimal(xpp));
2211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2212        res.setPointsElement(parseDecimal(xpp));
2213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2214        res.setNet(parseMoney(xpp));
2215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2216        res.setUdi(parseCoding(xpp));
2217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2218        res.setBodySite(parseCoding(xpp));
2219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
2220        res.getSubSite().add(parseCoding(xpp));
2221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
2222        res.getModifier().add(parseCoding(xpp));
2223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2224        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
2225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prosthesis")) {
2226        res.setProsthesis(parseClaimProsthesisComponent(xpp, owner));
2227      } else if (!parseBackboneContent(eventType, xpp, res))
2228        unknownContent(xpp);
2229      eventType = nextNoWhitespace(xpp);
2230    }
2231    next(xpp);
2232    parseElementClose(res);
2233    return res;
2234  }
2235
2236  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2237    Claim.DetailComponent res = new Claim.DetailComponent();
2238    parseBackboneAttributes(xpp, res);
2239    next(xpp);
2240    int eventType = nextNoWhitespace(xpp);
2241    while (eventType != XmlPullParser.END_TAG) {
2242      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2243        res.setSequenceElement(parsePositiveInt(xpp));
2244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2245        res.setType(parseCoding(xpp));
2246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2247        res.setService(parseCoding(xpp));
2248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2249        res.setQuantity(parseSimpleQuantity(xpp));
2250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2251        res.setUnitPrice(parseMoney(xpp));
2252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2253        res.setFactorElement(parseDecimal(xpp));
2254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2255        res.setPointsElement(parseDecimal(xpp));
2256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2257        res.setNet(parseMoney(xpp));
2258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2259        res.setUdi(parseCoding(xpp));
2260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
2261        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
2262      } else if (!parseBackboneContent(eventType, xpp, res))
2263        unknownContent(xpp);
2264      eventType = nextNoWhitespace(xpp);
2265    }
2266    next(xpp);
2267    parseElementClose(res);
2268    return res;
2269  }
2270
2271  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2272    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
2273    parseBackboneAttributes(xpp, res);
2274    next(xpp);
2275    int eventType = nextNoWhitespace(xpp);
2276    while (eventType != XmlPullParser.END_TAG) {
2277      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2278        res.setSequenceElement(parsePositiveInt(xpp));
2279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2280        res.setType(parseCoding(xpp));
2281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2282        res.setService(parseCoding(xpp));
2283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2284        res.setQuantity(parseSimpleQuantity(xpp));
2285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2286        res.setUnitPrice(parseMoney(xpp));
2287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2288        res.setFactorElement(parseDecimal(xpp));
2289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2290        res.setPointsElement(parseDecimal(xpp));
2291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2292        res.setNet(parseMoney(xpp));
2293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2294        res.setUdi(parseCoding(xpp));
2295      } else if (!parseBackboneContent(eventType, xpp, res))
2296        unknownContent(xpp);
2297      eventType = nextNoWhitespace(xpp);
2298    }
2299    next(xpp);
2300    parseElementClose(res);
2301    return res;
2302  }
2303
2304  protected Claim.ProsthesisComponent parseClaimProsthesisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2305    Claim.ProsthesisComponent res = new Claim.ProsthesisComponent();
2306    parseBackboneAttributes(xpp, res);
2307    next(xpp);
2308    int eventType = nextNoWhitespace(xpp);
2309    while (eventType != XmlPullParser.END_TAG) {
2310      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
2311        res.setInitialElement(parseBoolean(xpp));
2312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorDate")) {
2313        res.setPriorDateElement(parseDate(xpp));
2314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorMaterial")) {
2315        res.setPriorMaterial(parseCoding(xpp));
2316      } else if (!parseBackboneContent(eventType, xpp, res))
2317        unknownContent(xpp);
2318      eventType = nextNoWhitespace(xpp);
2319    }
2320    next(xpp);
2321    parseElementClose(res);
2322    return res;
2323  }
2324
2325  protected Claim.MissingTeethComponent parseClaimMissingTeethComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2326    Claim.MissingTeethComponent res = new Claim.MissingTeethComponent();
2327    parseBackboneAttributes(xpp, res);
2328    next(xpp);
2329    int eventType = nextNoWhitespace(xpp);
2330    while (eventType != XmlPullParser.END_TAG) {
2331      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tooth")) {
2332        res.setTooth(parseCoding(xpp));
2333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2334        res.setReason(parseCoding(xpp));
2335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extractionDate")) {
2336        res.setExtractionDateElement(parseDate(xpp));
2337      } else if (!parseBackboneContent(eventType, xpp, res))
2338        unknownContent(xpp);
2339      eventType = nextNoWhitespace(xpp);
2340    }
2341    next(xpp);
2342    parseElementClose(res);
2343    return res;
2344  }
2345
2346  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2347    ClaimResponse res = new ClaimResponse();
2348    parseDomainResourceAttributes(xpp, res);
2349    next(xpp);
2350    int eventType = nextNoWhitespace(xpp);
2351    while (eventType != XmlPullParser.END_TAG) {
2352      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2353        res.getIdentifier().add(parseIdentifier(xpp));
2354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
2355        res.setRequest(parseReference(xpp));
2356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
2357        res.setRuleset(parseCoding(xpp));
2358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2359        res.setOriginalRuleset(parseCoding(xpp));
2360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2361        res.setCreatedElement(parseDateTime(xpp));
2362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
2363        res.setOrganization(parseReference(xpp));
2364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
2365        res.setRequestProvider(parseReference(xpp));
2366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
2367        res.setRequestOrganization(parseReference(xpp));
2368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2369        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
2370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
2371        res.setDispositionElement(parseString(xpp));
2372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
2373        res.setPayeeType(parseCoding(xpp));
2374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2375        res.getItem().add(parseClaimResponseItemsComponent(xpp, res));
2376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
2377        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
2378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
2379        res.getError().add(parseClaimResponseErrorsComponent(xpp, res));
2380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
2381        res.setTotalCost(parseMoney(xpp));
2382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
2383        res.setUnallocDeductable(parseMoney(xpp));
2384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
2385        res.setTotalBenefit(parseMoney(xpp));
2386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAdjustment")) {
2387        res.setPaymentAdjustment(parseMoney(xpp));
2388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAdjustmentReason")) {
2389        res.setPaymentAdjustmentReason(parseCoding(xpp));
2390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
2391        res.setPaymentDateElement(parseDate(xpp));
2392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAmount")) {
2393        res.setPaymentAmount(parseMoney(xpp));
2394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentRef")) {
2395        res.setPaymentRef(parseIdentifier(xpp));
2396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
2397        res.setReserved(parseCoding(xpp));
2398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
2399        res.setForm(parseCoding(xpp));
2400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2401        res.getNote().add(parseClaimResponseNotesComponent(xpp, res));
2402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2403        res.getCoverage().add(parseClaimResponseCoverageComponent(xpp, res));
2404      } else if (!parseDomainResourceContent(eventType, xpp, res))
2405        unknownContent(xpp);
2406      eventType = nextNoWhitespace(xpp);
2407    }
2408    next(xpp);
2409    parseElementClose(res);
2410    return res;
2411  }
2412
2413  protected ClaimResponse.ItemsComponent parseClaimResponseItemsComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2414    ClaimResponse.ItemsComponent res = new ClaimResponse.ItemsComponent();
2415    parseBackboneAttributes(xpp, res);
2416    next(xpp);
2417    int eventType = nextNoWhitespace(xpp);
2418    while (eventType != XmlPullParser.END_TAG) {
2419      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2420        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
2422        res.getNoteNumber().add(parsePositiveInt(xpp));
2423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2424        res.getAdjudication().add(parseClaimResponseItemAdjudicationComponent(xpp, owner));
2425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2426        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
2427      } else if (!parseBackboneContent(eventType, xpp, res))
2428        unknownContent(xpp);
2429      eventType = nextNoWhitespace(xpp);
2430    }
2431    next(xpp);
2432    parseElementClose(res);
2433    return res;
2434  }
2435
2436  protected ClaimResponse.ItemAdjudicationComponent parseClaimResponseItemAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2437    ClaimResponse.ItemAdjudicationComponent res = new ClaimResponse.ItemAdjudicationComponent();
2438    parseBackboneAttributes(xpp, res);
2439    next(xpp);
2440    int eventType = nextNoWhitespace(xpp);
2441    while (eventType != XmlPullParser.END_TAG) {
2442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2443        res.setCode(parseCoding(xpp));
2444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2445        res.setAmount(parseMoney(xpp));
2446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2447        res.setValueElement(parseDecimal(xpp));
2448      } else if (!parseBackboneContent(eventType, xpp, res))
2449        unknownContent(xpp);
2450      eventType = nextNoWhitespace(xpp);
2451    }
2452    next(xpp);
2453    parseElementClose(res);
2454    return res;
2455  }
2456
2457  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2458    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
2459    parseBackboneAttributes(xpp, res);
2460    next(xpp);
2461    int eventType = nextNoWhitespace(xpp);
2462    while (eventType != XmlPullParser.END_TAG) {
2463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2464        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2466        res.getAdjudication().add(parseClaimResponseDetailAdjudicationComponent(xpp, owner));
2467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
2468        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
2469      } else if (!parseBackboneContent(eventType, xpp, res))
2470        unknownContent(xpp);
2471      eventType = nextNoWhitespace(xpp);
2472    }
2473    next(xpp);
2474    parseElementClose(res);
2475    return res;
2476  }
2477
2478  protected ClaimResponse.DetailAdjudicationComponent parseClaimResponseDetailAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2479    ClaimResponse.DetailAdjudicationComponent res = new ClaimResponse.DetailAdjudicationComponent();
2480    parseBackboneAttributes(xpp, res);
2481    next(xpp);
2482    int eventType = nextNoWhitespace(xpp);
2483    while (eventType != XmlPullParser.END_TAG) {
2484      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2485        res.setCode(parseCoding(xpp));
2486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2487        res.setAmount(parseMoney(xpp));
2488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2489        res.setValueElement(parseDecimal(xpp));
2490      } else if (!parseBackboneContent(eventType, xpp, res))
2491        unknownContent(xpp);
2492      eventType = nextNoWhitespace(xpp);
2493    }
2494    next(xpp);
2495    parseElementClose(res);
2496    return res;
2497  }
2498
2499  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2500    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
2501    parseBackboneAttributes(xpp, res);
2502    next(xpp);
2503    int eventType = nextNoWhitespace(xpp);
2504    while (eventType != XmlPullParser.END_TAG) {
2505      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2506        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2508        res.getAdjudication().add(parseClaimResponseSubdetailAdjudicationComponent(xpp, owner));
2509      } else if (!parseBackboneContent(eventType, xpp, res))
2510        unknownContent(xpp);
2511      eventType = nextNoWhitespace(xpp);
2512    }
2513    next(xpp);
2514    parseElementClose(res);
2515    return res;
2516  }
2517
2518  protected ClaimResponse.SubdetailAdjudicationComponent parseClaimResponseSubdetailAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2519    ClaimResponse.SubdetailAdjudicationComponent res = new ClaimResponse.SubdetailAdjudicationComponent();
2520    parseBackboneAttributes(xpp, res);
2521    next(xpp);
2522    int eventType = nextNoWhitespace(xpp);
2523    while (eventType != XmlPullParser.END_TAG) {
2524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2525        res.setCode(parseCoding(xpp));
2526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2527        res.setAmount(parseMoney(xpp));
2528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2529        res.setValueElement(parseDecimal(xpp));
2530      } else if (!parseBackboneContent(eventType, xpp, res))
2531        unknownContent(xpp);
2532      eventType = nextNoWhitespace(xpp);
2533    }
2534    next(xpp);
2535    parseElementClose(res);
2536    return res;
2537  }
2538
2539  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2540    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
2541    parseBackboneAttributes(xpp, res);
2542    next(xpp);
2543    int eventType = nextNoWhitespace(xpp);
2544    while (eventType != XmlPullParser.END_TAG) {
2545      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2546        res.getSequenceLinkId().add(parsePositiveInt(xpp));
2547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2548        res.setService(parseCoding(xpp));
2549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
2550        res.setFee(parseMoney(xpp));
2551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumberLinkId")) {
2552        res.getNoteNumberLinkId().add(parsePositiveInt(xpp));
2553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2554        res.getAdjudication().add(parseClaimResponseAddedItemAdjudicationComponent(xpp, owner));
2555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2556        res.getDetail().add(parseClaimResponseAddedItemsDetailComponent(xpp, owner));
2557      } else if (!parseBackboneContent(eventType, xpp, res))
2558        unknownContent(xpp);
2559      eventType = nextNoWhitespace(xpp);
2560    }
2561    next(xpp);
2562    parseElementClose(res);
2563    return res;
2564  }
2565
2566  protected ClaimResponse.AddedItemAdjudicationComponent parseClaimResponseAddedItemAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2567    ClaimResponse.AddedItemAdjudicationComponent res = new ClaimResponse.AddedItemAdjudicationComponent();
2568    parseBackboneAttributes(xpp, res);
2569    next(xpp);
2570    int eventType = nextNoWhitespace(xpp);
2571    while (eventType != XmlPullParser.END_TAG) {
2572      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2573        res.setCode(parseCoding(xpp));
2574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2575        res.setAmount(parseMoney(xpp));
2576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2577        res.setValueElement(parseDecimal(xpp));
2578      } else if (!parseBackboneContent(eventType, xpp, res))
2579        unknownContent(xpp);
2580      eventType = nextNoWhitespace(xpp);
2581    }
2582    next(xpp);
2583    parseElementClose(res);
2584    return res;
2585  }
2586
2587  protected ClaimResponse.AddedItemsDetailComponent parseClaimResponseAddedItemsDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2588    ClaimResponse.AddedItemsDetailComponent res = new ClaimResponse.AddedItemsDetailComponent();
2589    parseBackboneAttributes(xpp, res);
2590    next(xpp);
2591    int eventType = nextNoWhitespace(xpp);
2592    while (eventType != XmlPullParser.END_TAG) {
2593      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2594        res.setService(parseCoding(xpp));
2595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
2596        res.setFee(parseMoney(xpp));
2597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2598        res.getAdjudication().add(parseClaimResponseAddedItemDetailAdjudicationComponent(xpp, owner));
2599      } else if (!parseBackboneContent(eventType, xpp, res))
2600        unknownContent(xpp);
2601      eventType = nextNoWhitespace(xpp);
2602    }
2603    next(xpp);
2604    parseElementClose(res);
2605    return res;
2606  }
2607
2608  protected ClaimResponse.AddedItemDetailAdjudicationComponent parseClaimResponseAddedItemDetailAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2609    ClaimResponse.AddedItemDetailAdjudicationComponent res = new ClaimResponse.AddedItemDetailAdjudicationComponent();
2610    parseBackboneAttributes(xpp, res);
2611    next(xpp);
2612    int eventType = nextNoWhitespace(xpp);
2613    while (eventType != XmlPullParser.END_TAG) {
2614      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2615        res.setCode(parseCoding(xpp));
2616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2617        res.setAmount(parseMoney(xpp));
2618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2619        res.setValueElement(parseDecimal(xpp));
2620      } else if (!parseBackboneContent(eventType, xpp, res))
2621        unknownContent(xpp);
2622      eventType = nextNoWhitespace(xpp);
2623    }
2624    next(xpp);
2625    parseElementClose(res);
2626    return res;
2627  }
2628
2629  protected ClaimResponse.ErrorsComponent parseClaimResponseErrorsComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2630    ClaimResponse.ErrorsComponent res = new ClaimResponse.ErrorsComponent();
2631    parseBackboneAttributes(xpp, res);
2632    next(xpp);
2633    int eventType = nextNoWhitespace(xpp);
2634    while (eventType != XmlPullParser.END_TAG) {
2635      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2636        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequenceLinkId")) {
2638        res.setDetailSequenceLinkIdElement(parsePositiveInt(xpp));
2639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequenceLinkId")) {
2640        res.setSubdetailSequenceLinkIdElement(parsePositiveInt(xpp));
2641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2642        res.setCode(parseCoding(xpp));
2643      } else if (!parseBackboneContent(eventType, xpp, res))
2644        unknownContent(xpp);
2645      eventType = nextNoWhitespace(xpp);
2646    }
2647    next(xpp);
2648    parseElementClose(res);
2649    return res;
2650  }
2651
2652  protected ClaimResponse.NotesComponent parseClaimResponseNotesComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2653    ClaimResponse.NotesComponent res = new ClaimResponse.NotesComponent();
2654    parseBackboneAttributes(xpp, res);
2655    next(xpp);
2656    int eventType = nextNoWhitespace(xpp);
2657    while (eventType != XmlPullParser.END_TAG) {
2658      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
2659        res.setNumberElement(parsePositiveInt(xpp));
2660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2661        res.setType(parseCoding(xpp));
2662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2663        res.setTextElement(parseString(xpp));
2664      } else if (!parseBackboneContent(eventType, xpp, res))
2665        unknownContent(xpp);
2666      eventType = nextNoWhitespace(xpp);
2667    }
2668    next(xpp);
2669    parseElementClose(res);
2670    return res;
2671  }
2672
2673  protected ClaimResponse.CoverageComponent parseClaimResponseCoverageComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2674    ClaimResponse.CoverageComponent res = new ClaimResponse.CoverageComponent();
2675    parseBackboneAttributes(xpp, res);
2676    next(xpp);
2677    int eventType = nextNoWhitespace(xpp);
2678    while (eventType != XmlPullParser.END_TAG) {
2679      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2680        res.setSequenceElement(parsePositiveInt(xpp));
2681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
2682        res.setFocalElement(parseBoolean(xpp));
2683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2684        res.setCoverage(parseReference(xpp));
2685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
2686        res.setBusinessArrangementElement(parseString(xpp));
2687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
2688        res.setRelationship(parseCoding(xpp));
2689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
2690        res.getPreAuthRef().add(parseString(xpp));
2691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
2692        res.setClaimResponse(parseReference(xpp));
2693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2694        res.setOriginalRuleset(parseCoding(xpp));
2695      } else if (!parseBackboneContent(eventType, xpp, res))
2696        unknownContent(xpp);
2697      eventType = nextNoWhitespace(xpp);
2698    }
2699    next(xpp);
2700    parseElementClose(res);
2701    return res;
2702  }
2703
2704  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2705    ClinicalImpression res = new ClinicalImpression();
2706    parseDomainResourceAttributes(xpp, res);
2707    next(xpp);
2708    int eventType = nextNoWhitespace(xpp);
2709    while (eventType != XmlPullParser.END_TAG) {
2710      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2711        res.setPatient(parseReference(xpp));
2712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
2713        res.setAssessor(parseReference(xpp));
2714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2715        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
2716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2717        res.setDateElement(parseDateTime(xpp));
2718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2719        res.setDescriptionElement(parseString(xpp));
2720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
2721        res.setPrevious(parseReference(xpp));
2722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
2723        res.getProblem().add(parseReference(xpp));
2724      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "trigger")) {
2725        res.setTrigger(parseType("trigger", xpp));
2726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigations")) {
2727        res.getInvestigations().add(parseClinicalImpressionClinicalImpressionInvestigationsComponent(xpp, res));
2728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
2729        res.setProtocolElement(parseUri(xpp));
2730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
2731        res.setSummaryElement(parseString(xpp));
2732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
2733        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
2734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resolved")) {
2735        res.getResolved().add(parseCodeableConcept(xpp));
2736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruledOut")) {
2737        res.getRuledOut().add(parseClinicalImpressionClinicalImpressionRuledOutComponent(xpp, res));
2738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosis")) {
2739        res.setPrognosisElement(parseString(xpp));
2740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
2741        res.getPlan().add(parseReference(xpp));
2742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2743        res.getAction().add(parseReference(xpp));
2744      } else if (!parseDomainResourceContent(eventType, xpp, res))
2745        unknownContent(xpp);
2746      eventType = nextNoWhitespace(xpp);
2747    }
2748    next(xpp);
2749    parseElementClose(res);
2750    return res;
2751  }
2752
2753  protected ClinicalImpression.ClinicalImpressionInvestigationsComponent parseClinicalImpressionClinicalImpressionInvestigationsComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
2754    ClinicalImpression.ClinicalImpressionInvestigationsComponent res = new ClinicalImpression.ClinicalImpressionInvestigationsComponent();
2755    parseBackboneAttributes(xpp, res);
2756    next(xpp);
2757    int eventType = nextNoWhitespace(xpp);
2758    while (eventType != XmlPullParser.END_TAG) {
2759      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2760        res.setCode(parseCodeableConcept(xpp));
2761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2762        res.getItem().add(parseReference(xpp));
2763      } else if (!parseBackboneContent(eventType, xpp, res))
2764        unknownContent(xpp);
2765      eventType = nextNoWhitespace(xpp);
2766    }
2767    next(xpp);
2768    parseElementClose(res);
2769    return res;
2770  }
2771
2772  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
2773    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
2774    parseBackboneAttributes(xpp, res);
2775    next(xpp);
2776    int eventType = nextNoWhitespace(xpp);
2777    while (eventType != XmlPullParser.END_TAG) {
2778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2779        res.setItem(parseCodeableConcept(xpp));
2780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cause")) {
2781        res.setCauseElement(parseString(xpp));
2782      } else if (!parseBackboneContent(eventType, xpp, res))
2783        unknownContent(xpp);
2784      eventType = nextNoWhitespace(xpp);
2785    }
2786    next(xpp);
2787    parseElementClose(res);
2788    return res;
2789  }
2790
2791  protected ClinicalImpression.ClinicalImpressionRuledOutComponent parseClinicalImpressionClinicalImpressionRuledOutComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
2792    ClinicalImpression.ClinicalImpressionRuledOutComponent res = new ClinicalImpression.ClinicalImpressionRuledOutComponent();
2793    parseBackboneAttributes(xpp, res);
2794    next(xpp);
2795    int eventType = nextNoWhitespace(xpp);
2796    while (eventType != XmlPullParser.END_TAG) {
2797      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2798        res.setItem(parseCodeableConcept(xpp));
2799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2800        res.setReasonElement(parseString(xpp));
2801      } else if (!parseBackboneContent(eventType, xpp, res))
2802        unknownContent(xpp);
2803      eventType = nextNoWhitespace(xpp);
2804    }
2805    next(xpp);
2806    parseElementClose(res);
2807    return res;
2808  }
2809
2810  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2811    Communication res = new Communication();
2812    parseDomainResourceAttributes(xpp, res);
2813    next(xpp);
2814    int eventType = nextNoWhitespace(xpp);
2815    while (eventType != XmlPullParser.END_TAG) {
2816      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2817        res.getIdentifier().add(parseIdentifier(xpp));
2818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2819        res.setCategory(parseCodeableConcept(xpp));
2820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
2821        res.setSender(parseReference(xpp));
2822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
2823        res.getRecipient().add(parseReference(xpp));
2824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
2825        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
2826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
2827        res.getMedium().add(parseCodeableConcept(xpp));
2828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2829        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
2830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2831        res.setEncounter(parseReference(xpp));
2832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
2833        res.setSentElement(parseDateTime(xpp));
2834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
2835        res.setReceivedElement(parseDateTime(xpp));
2836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2837        res.getReason().add(parseCodeableConcept(xpp));
2838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2839        res.setSubject(parseReference(xpp));
2840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestDetail")) {
2841        res.setRequestDetail(parseReference(xpp));
2842      } else if (!parseDomainResourceContent(eventType, xpp, res))
2843        unknownContent(xpp);
2844      eventType = nextNoWhitespace(xpp);
2845    }
2846    next(xpp);
2847    parseElementClose(res);
2848    return res;
2849  }
2850
2851  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
2852    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
2853    parseBackboneAttributes(xpp, res);
2854    next(xpp);
2855    int eventType = nextNoWhitespace(xpp);
2856    while (eventType != XmlPullParser.END_TAG) {
2857      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
2858        res.setContent(parseType("content", xpp));
2859      } else if (!parseBackboneContent(eventType, xpp, res))
2860        unknownContent(xpp);
2861      eventType = nextNoWhitespace(xpp);
2862    }
2863    next(xpp);
2864    parseElementClose(res);
2865    return res;
2866  }
2867
2868  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2869    CommunicationRequest res = new CommunicationRequest();
2870    parseDomainResourceAttributes(xpp, res);
2871    next(xpp);
2872    int eventType = nextNoWhitespace(xpp);
2873    while (eventType != XmlPullParser.END_TAG) {
2874      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2875        res.getIdentifier().add(parseIdentifier(xpp));
2876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2877        res.setCategory(parseCodeableConcept(xpp));
2878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
2879        res.setSender(parseReference(xpp));
2880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
2881        res.getRecipient().add(parseReference(xpp));
2882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
2883        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
2884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
2885        res.getMedium().add(parseCodeableConcept(xpp));
2886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
2887        res.setRequester(parseReference(xpp));
2888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2889        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
2890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2891        res.setEncounter(parseReference(xpp));
2892      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
2893        res.setScheduled(parseType("scheduled", xpp));
2894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2895        res.getReason().add(parseCodeableConcept(xpp));
2896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedOn")) {
2897        res.setRequestedOnElement(parseDateTime(xpp));
2898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2899        res.setSubject(parseReference(xpp));
2900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2901        res.setPriority(parseCodeableConcept(xpp));
2902      } else if (!parseDomainResourceContent(eventType, xpp, res))
2903        unknownContent(xpp);
2904      eventType = nextNoWhitespace(xpp);
2905    }
2906    next(xpp);
2907    parseElementClose(res);
2908    return res;
2909  }
2910
2911  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
2912    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
2913    parseBackboneAttributes(xpp, res);
2914    next(xpp);
2915    int eventType = nextNoWhitespace(xpp);
2916    while (eventType != XmlPullParser.END_TAG) {
2917      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
2918        res.setContent(parseType("content", xpp));
2919      } else if (!parseBackboneContent(eventType, xpp, res))
2920        unknownContent(xpp);
2921      eventType = nextNoWhitespace(xpp);
2922    }
2923    next(xpp);
2924    parseElementClose(res);
2925    return res;
2926  }
2927
2928  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2929    Composition res = new Composition();
2930    parseDomainResourceAttributes(xpp, res);
2931    next(xpp);
2932    int eventType = nextNoWhitespace(xpp);
2933    while (eventType != XmlPullParser.END_TAG) {
2934      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2935        res.setIdentifier(parseIdentifier(xpp));
2936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2937        res.setDateElement(parseDateTime(xpp));
2938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2939        res.setType(parseCodeableConcept(xpp));
2940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
2941        res.setClass_(parseCodeableConcept(xpp));
2942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2943        res.setTitleElement(parseString(xpp));
2944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2945        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
2946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
2947        res.setConfidentialityElement(parseCode(xpp));
2948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2949        res.setSubject(parseReference(xpp));
2950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2951        res.getAuthor().add(parseReference(xpp));
2952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
2953        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
2954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
2955        res.setCustodian(parseReference(xpp));
2956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
2957        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
2958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2959        res.setEncounter(parseReference(xpp));
2960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
2961        res.getSection().add(parseCompositionSectionComponent(xpp, res));
2962      } else if (!parseDomainResourceContent(eventType, xpp, res))
2963        unknownContent(xpp);
2964      eventType = nextNoWhitespace(xpp);
2965    }
2966    next(xpp);
2967    parseElementClose(res);
2968    return res;
2969  }
2970
2971  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2972    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
2973    parseBackboneAttributes(xpp, res);
2974    next(xpp);
2975    int eventType = nextNoWhitespace(xpp);
2976    while (eventType != XmlPullParser.END_TAG) {
2977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
2978        res.getMode().add(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
2979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
2980        res.setTimeElement(parseDateTime(xpp));
2981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
2982        res.setParty(parseReference(xpp));
2983      } else if (!parseBackboneContent(eventType, xpp, res))
2984        unknownContent(xpp);
2985      eventType = nextNoWhitespace(xpp);
2986    }
2987    next(xpp);
2988    parseElementClose(res);
2989    return res;
2990  }
2991
2992  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2993    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
2994    parseBackboneAttributes(xpp, res);
2995    next(xpp);
2996    int eventType = nextNoWhitespace(xpp);
2997    while (eventType != XmlPullParser.END_TAG) {
2998      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2999        res.getCode().add(parseCodeableConcept(xpp));
3000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3001        res.setPeriod(parsePeriod(xpp));
3002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3003        res.getDetail().add(parseReference(xpp));
3004      } else if (!parseBackboneContent(eventType, xpp, res))
3005        unknownContent(xpp);
3006      eventType = nextNoWhitespace(xpp);
3007    }
3008    next(xpp);
3009    parseElementClose(res);
3010    return res;
3011  }
3012
3013  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3014    Composition.SectionComponent res = new Composition.SectionComponent();
3015    parseBackboneAttributes(xpp, res);
3016    next(xpp);
3017    int eventType = nextNoWhitespace(xpp);
3018    while (eventType != XmlPullParser.END_TAG) {
3019      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3020        res.setTitleElement(parseString(xpp));
3021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3022        res.setCode(parseCodeableConcept(xpp));
3023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
3024        res.setText(parseNarrative(xpp));
3025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3026        res.setModeElement(parseCode(xpp));
3027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
3028        res.setOrderedBy(parseCodeableConcept(xpp));
3029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3030        res.getEntry().add(parseReference(xpp));
3031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
3032        res.setEmptyReason(parseCodeableConcept(xpp));
3033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
3034        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
3035      } else if (!parseBackboneContent(eventType, xpp, res))
3036        unknownContent(xpp);
3037      eventType = nextNoWhitespace(xpp);
3038    }
3039    next(xpp);
3040    parseElementClose(res);
3041    return res;
3042  }
3043
3044  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3045    ConceptMap res = new ConceptMap();
3046    parseDomainResourceAttributes(xpp, res);
3047    next(xpp);
3048    int eventType = nextNoWhitespace(xpp);
3049    while (eventType != XmlPullParser.END_TAG) {
3050      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3051        res.setUrlElement(parseUri(xpp));
3052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3053        res.setIdentifier(parseIdentifier(xpp));
3054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3055        res.setVersionElement(parseString(xpp));
3056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3057        res.setNameElement(parseString(xpp));
3058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3059        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
3060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3061        res.setExperimentalElement(parseBoolean(xpp));
3062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3063        res.setPublisherElement(parseString(xpp));
3064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3065        res.getContact().add(parseConceptMapConceptMapContactComponent(xpp, res));
3066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3067        res.setDateElement(parseDateTime(xpp));
3068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3069        res.setDescriptionElement(parseString(xpp));
3070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3071        res.getUseContext().add(parseCodeableConcept(xpp));
3072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
3073        res.setRequirementsElement(parseString(xpp));
3074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3075        res.setCopyrightElement(parseString(xpp));
3076      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
3077        res.setSource(parseType("source", xpp));
3078      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
3079        res.setTarget(parseType("target", xpp));
3080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
3081        res.getElement().add(parseConceptMapSourceElementComponent(xpp, res));
3082      } else if (!parseDomainResourceContent(eventType, xpp, res))
3083        unknownContent(xpp);
3084      eventType = nextNoWhitespace(xpp);
3085    }
3086    next(xpp);
3087    parseElementClose(res);
3088    return res;
3089  }
3090
3091  protected ConceptMap.ConceptMapContactComponent parseConceptMapConceptMapContactComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3092    ConceptMap.ConceptMapContactComponent res = new ConceptMap.ConceptMapContactComponent();
3093    parseBackboneAttributes(xpp, res);
3094    next(xpp);
3095    int eventType = nextNoWhitespace(xpp);
3096    while (eventType != XmlPullParser.END_TAG) {
3097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3098        res.setNameElement(parseString(xpp));
3099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
3100        res.getTelecom().add(parseContactPoint(xpp));
3101      } else if (!parseBackboneContent(eventType, xpp, res))
3102        unknownContent(xpp);
3103      eventType = nextNoWhitespace(xpp);
3104    }
3105    next(xpp);
3106    parseElementClose(res);
3107    return res;
3108  }
3109
3110  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3111    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
3112    parseBackboneAttributes(xpp, res);
3113    next(xpp);
3114    int eventType = nextNoWhitespace(xpp);
3115    while (eventType != XmlPullParser.END_TAG) {
3116      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
3117        res.setCodeSystemElement(parseUri(xpp));
3118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3119        res.setCodeElement(parseCode(xpp));
3120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
3121        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
3122      } else if (!parseBackboneContent(eventType, xpp, res))
3123        unknownContent(xpp);
3124      eventType = nextNoWhitespace(xpp);
3125    }
3126    next(xpp);
3127    parseElementClose(res);
3128    return res;
3129  }
3130
3131  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3132    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
3133    parseBackboneAttributes(xpp, res);
3134    next(xpp);
3135    int eventType = nextNoWhitespace(xpp);
3136    while (eventType != XmlPullParser.END_TAG) {
3137      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
3138        res.setCodeSystemElement(parseUri(xpp));
3139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3140        res.setCodeElement(parseCode(xpp));
3141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
3142        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
3143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
3144        res.setCommentsElement(parseString(xpp));
3145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
3146        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
3147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
3148        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
3149      } else if (!parseBackboneContent(eventType, xpp, res))
3150        unknownContent(xpp);
3151      eventType = nextNoWhitespace(xpp);
3152    }
3153    next(xpp);
3154    parseElementClose(res);
3155    return res;
3156  }
3157
3158  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3159    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
3160    parseBackboneAttributes(xpp, res);
3161    next(xpp);
3162    int eventType = nextNoWhitespace(xpp);
3163    while (eventType != XmlPullParser.END_TAG) {
3164      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
3165        res.setElementElement(parseUri(xpp));
3166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
3167        res.setCodeSystemElement(parseUri(xpp));
3168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3169        res.setCodeElement(parseString(xpp));
3170      } else if (!parseBackboneContent(eventType, xpp, res))
3171        unknownContent(xpp);
3172      eventType = nextNoWhitespace(xpp);
3173    }
3174    next(xpp);
3175    parseElementClose(res);
3176    return res;
3177  }
3178
3179  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3180    Condition res = new Condition();
3181    parseDomainResourceAttributes(xpp, res);
3182    next(xpp);
3183    int eventType = nextNoWhitespace(xpp);
3184    while (eventType != XmlPullParser.END_TAG) {
3185      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3186        res.getIdentifier().add(parseIdentifier(xpp));
3187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3188        res.setPatient(parseReference(xpp));
3189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3190        res.setEncounter(parseReference(xpp));
3191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
3192        res.setAsserter(parseReference(xpp));
3193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRecorded")) {
3194        res.setDateRecordedElement(parseDate(xpp));
3195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3196        res.setCode(parseCodeableConcept(xpp));
3197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3198        res.setCategory(parseCodeableConcept(xpp));
3199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
3200        res.setClinicalStatusElement(parseCode(xpp));
3201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
3202        res.setVerificationStatusElement(parseEnumeration(xpp, Condition.ConditionVerificationStatus.NULL, new Condition.ConditionVerificationStatusEnumFactory()));
3203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
3204        res.setSeverity(parseCodeableConcept(xpp));
3205      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
3206        res.setOnset(parseType("onset", xpp));
3207      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
3208        res.setAbatement(parseType("abatement", xpp));
3209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
3210        res.setStage(parseConditionConditionStageComponent(xpp, res));
3211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
3212        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
3213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
3214        res.getBodySite().add(parseCodeableConcept(xpp));
3215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
3216        res.setNotesElement(parseString(xpp));
3217      } else if (!parseDomainResourceContent(eventType, xpp, res))
3218        unknownContent(xpp);
3219      eventType = nextNoWhitespace(xpp);
3220    }
3221    next(xpp);
3222    parseElementClose(res);
3223    return res;
3224  }
3225
3226  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3227    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
3228    parseBackboneAttributes(xpp, res);
3229    next(xpp);
3230    int eventType = nextNoWhitespace(xpp);
3231    while (eventType != XmlPullParser.END_TAG) {
3232      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
3233        res.setSummary(parseCodeableConcept(xpp));
3234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
3235        res.getAssessment().add(parseReference(xpp));
3236      } else if (!parseBackboneContent(eventType, xpp, res))
3237        unknownContent(xpp);
3238      eventType = nextNoWhitespace(xpp);
3239    }
3240    next(xpp);
3241    parseElementClose(res);
3242    return res;
3243  }
3244
3245  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3246    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
3247    parseBackboneAttributes(xpp, res);
3248    next(xpp);
3249    int eventType = nextNoWhitespace(xpp);
3250    while (eventType != XmlPullParser.END_TAG) {
3251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3252        res.setCode(parseCodeableConcept(xpp));
3253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3254        res.getDetail().add(parseReference(xpp));
3255      } else if (!parseBackboneContent(eventType, xpp, res))
3256        unknownContent(xpp);
3257      eventType = nextNoWhitespace(xpp);
3258    }
3259    next(xpp);
3260    parseElementClose(res);
3261    return res;
3262  }
3263
3264  protected Conformance parseConformance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3265    Conformance res = new Conformance();
3266    parseDomainResourceAttributes(xpp, res);
3267    next(xpp);
3268    int eventType = nextNoWhitespace(xpp);
3269    while (eventType != XmlPullParser.END_TAG) {
3270      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3271        res.setUrlElement(parseUri(xpp));
3272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3273        res.setVersionElement(parseString(xpp));
3274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3275        res.setNameElement(parseString(xpp));
3276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3277        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
3278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3279        res.setExperimentalElement(parseBoolean(xpp));
3280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3281        res.setPublisherElement(parseString(xpp));
3282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3283        res.getContact().add(parseConformanceConformanceContactComponent(xpp, res));
3284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3285        res.setDateElement(parseDateTime(xpp));
3286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3287        res.setDescriptionElement(parseString(xpp));
3288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
3289        res.setRequirementsElement(parseString(xpp));
3290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3291        res.setCopyrightElement(parseString(xpp));
3292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3293        res.setKindElement(parseEnumeration(xpp, Conformance.ConformanceStatementKind.NULL, new Conformance.ConformanceStatementKindEnumFactory()));
3294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
3295        res.setSoftware(parseConformanceConformanceSoftwareComponent(xpp, res));
3296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
3297        res.setImplementation(parseConformanceConformanceImplementationComponent(xpp, res));
3298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
3299        res.setFhirVersionElement(parseId(xpp));
3300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acceptUnknown")) {
3301        res.setAcceptUnknownElement(parseEnumeration(xpp, Conformance.UnknownContentCode.NULL, new Conformance.UnknownContentCodeEnumFactory()));
3302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
3303        res.getFormat().add(parseCode(xpp));
3304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3305        res.getProfile().add(parseReference(xpp));
3306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
3307        res.getRest().add(parseConformanceConformanceRestComponent(xpp, res));
3308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
3309        res.getMessaging().add(parseConformanceConformanceMessagingComponent(xpp, res));
3310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
3311        res.getDocument().add(parseConformanceConformanceDocumentComponent(xpp, res));
3312      } else if (!parseDomainResourceContent(eventType, xpp, res))
3313        unknownContent(xpp);
3314      eventType = nextNoWhitespace(xpp);
3315    }
3316    next(xpp);
3317    parseElementClose(res);
3318    return res;
3319  }
3320
3321  protected Conformance.ConformanceContactComponent parseConformanceConformanceContactComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3322    Conformance.ConformanceContactComponent res = new Conformance.ConformanceContactComponent();
3323    parseBackboneAttributes(xpp, res);
3324    next(xpp);
3325    int eventType = nextNoWhitespace(xpp);
3326    while (eventType != XmlPullParser.END_TAG) {
3327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3328        res.setNameElement(parseString(xpp));
3329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
3330        res.getTelecom().add(parseContactPoint(xpp));
3331      } else if (!parseBackboneContent(eventType, xpp, res))
3332        unknownContent(xpp);
3333      eventType = nextNoWhitespace(xpp);
3334    }
3335    next(xpp);
3336    parseElementClose(res);
3337    return res;
3338  }
3339
3340  protected Conformance.ConformanceSoftwareComponent parseConformanceConformanceSoftwareComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3341    Conformance.ConformanceSoftwareComponent res = new Conformance.ConformanceSoftwareComponent();
3342    parseBackboneAttributes(xpp, res);
3343    next(xpp);
3344    int eventType = nextNoWhitespace(xpp);
3345    while (eventType != XmlPullParser.END_TAG) {
3346      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3347        res.setNameElement(parseString(xpp));
3348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3349        res.setVersionElement(parseString(xpp));
3350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
3351        res.setReleaseDateElement(parseDateTime(xpp));
3352      } else if (!parseBackboneContent(eventType, xpp, res))
3353        unknownContent(xpp);
3354      eventType = nextNoWhitespace(xpp);
3355    }
3356    next(xpp);
3357    parseElementClose(res);
3358    return res;
3359  }
3360
3361  protected Conformance.ConformanceImplementationComponent parseConformanceConformanceImplementationComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3362    Conformance.ConformanceImplementationComponent res = new Conformance.ConformanceImplementationComponent();
3363    parseBackboneAttributes(xpp, res);
3364    next(xpp);
3365    int eventType = nextNoWhitespace(xpp);
3366    while (eventType != XmlPullParser.END_TAG) {
3367      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3368        res.setDescriptionElement(parseString(xpp));
3369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3370        res.setUrlElement(parseUri(xpp));
3371      } else if (!parseBackboneContent(eventType, xpp, res))
3372        unknownContent(xpp);
3373      eventType = nextNoWhitespace(xpp);
3374    }
3375    next(xpp);
3376    parseElementClose(res);
3377    return res;
3378  }
3379
3380  protected Conformance.ConformanceRestComponent parseConformanceConformanceRestComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3381    Conformance.ConformanceRestComponent res = new Conformance.ConformanceRestComponent();
3382    parseBackboneAttributes(xpp, res);
3383    next(xpp);
3384    int eventType = nextNoWhitespace(xpp);
3385    while (eventType != XmlPullParser.END_TAG) {
3386      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3387        res.setModeElement(parseEnumeration(xpp, Conformance.RestfulConformanceMode.NULL, new Conformance.RestfulConformanceModeEnumFactory()));
3388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3389        res.setDocumentationElement(parseString(xpp));
3390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
3391        res.setSecurity(parseConformanceConformanceRestSecurityComponent(xpp, owner));
3392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3393        res.getResource().add(parseConformanceConformanceRestResourceComponent(xpp, owner));
3394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3395        res.getInteraction().add(parseConformanceSystemInteractionComponent(xpp, owner));
3396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transactionMode")) {
3397        res.setTransactionModeElement(parseEnumeration(xpp, Conformance.TransactionMode.NULL, new Conformance.TransactionModeEnumFactory()));
3398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3399        res.getSearchParam().add(parseConformanceConformanceRestResourceSearchParamComponent(xpp, owner));
3400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3401        res.getOperation().add(parseConformanceConformanceRestOperationComponent(xpp, owner));
3402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3403        res.getCompartment().add(parseUri(xpp));
3404      } else if (!parseBackboneContent(eventType, xpp, res))
3405        unknownContent(xpp);
3406      eventType = nextNoWhitespace(xpp);
3407    }
3408    next(xpp);
3409    parseElementClose(res);
3410    return res;
3411  }
3412
3413  protected Conformance.ConformanceRestSecurityComponent parseConformanceConformanceRestSecurityComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3414    Conformance.ConformanceRestSecurityComponent res = new Conformance.ConformanceRestSecurityComponent();
3415    parseBackboneAttributes(xpp, res);
3416    next(xpp);
3417    int eventType = nextNoWhitespace(xpp);
3418    while (eventType != XmlPullParser.END_TAG) {
3419      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3420        res.setCorsElement(parseBoolean(xpp));
3421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3422        res.getService().add(parseCodeableConcept(xpp));
3423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3424        res.setDescriptionElement(parseString(xpp));
3425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certificate")) {
3426        res.getCertificate().add(parseConformanceConformanceRestSecurityCertificateComponent(xpp, owner));
3427      } else if (!parseBackboneContent(eventType, xpp, res))
3428        unknownContent(xpp);
3429      eventType = nextNoWhitespace(xpp);
3430    }
3431    next(xpp);
3432    parseElementClose(res);
3433    return res;
3434  }
3435
3436  protected Conformance.ConformanceRestSecurityCertificateComponent parseConformanceConformanceRestSecurityCertificateComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3437    Conformance.ConformanceRestSecurityCertificateComponent res = new Conformance.ConformanceRestSecurityCertificateComponent();
3438    parseBackboneAttributes(xpp, res);
3439    next(xpp);
3440    int eventType = nextNoWhitespace(xpp);
3441    while (eventType != XmlPullParser.END_TAG) {
3442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3443        res.setTypeElement(parseCode(xpp));
3444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
3445        res.setBlobElement(parseBase64Binary(xpp));
3446      } else if (!parseBackboneContent(eventType, xpp, res))
3447        unknownContent(xpp);
3448      eventType = nextNoWhitespace(xpp);
3449    }
3450    next(xpp);
3451    parseElementClose(res);
3452    return res;
3453  }
3454
3455  protected Conformance.ConformanceRestResourceComponent parseConformanceConformanceRestResourceComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3456    Conformance.ConformanceRestResourceComponent res = new Conformance.ConformanceRestResourceComponent();
3457    parseBackboneAttributes(xpp, res);
3458    next(xpp);
3459    int eventType = nextNoWhitespace(xpp);
3460    while (eventType != XmlPullParser.END_TAG) {
3461      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3462        res.setTypeElement(parseCode(xpp));
3463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3464        res.setProfile(parseReference(xpp));
3465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3466        res.getInteraction().add(parseConformanceResourceInteractionComponent(xpp, owner));
3467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3468        res.setVersioningElement(parseEnumeration(xpp, Conformance.ResourceVersionPolicy.NULL, new Conformance.ResourceVersionPolicyEnumFactory()));
3469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3470        res.setReadHistoryElement(parseBoolean(xpp));
3471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3472        res.setUpdateCreateElement(parseBoolean(xpp));
3473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3474        res.setConditionalCreateElement(parseBoolean(xpp));
3475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3476        res.setConditionalUpdateElement(parseBoolean(xpp));
3477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3478        res.setConditionalDeleteElement(parseEnumeration(xpp, Conformance.ConditionalDeleteStatus.NULL, new Conformance.ConditionalDeleteStatusEnumFactory()));
3479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3480        res.getSearchInclude().add(parseString(xpp));
3481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3482        res.getSearchRevInclude().add(parseString(xpp));
3483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3484        res.getSearchParam().add(parseConformanceConformanceRestResourceSearchParamComponent(xpp, owner));
3485      } else if (!parseBackboneContent(eventType, xpp, res))
3486        unknownContent(xpp);
3487      eventType = nextNoWhitespace(xpp);
3488    }
3489    next(xpp);
3490    parseElementClose(res);
3491    return res;
3492  }
3493
3494  protected Conformance.ResourceInteractionComponent parseConformanceResourceInteractionComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3495    Conformance.ResourceInteractionComponent res = new Conformance.ResourceInteractionComponent();
3496    parseBackboneAttributes(xpp, res);
3497    next(xpp);
3498    int eventType = nextNoWhitespace(xpp);
3499    while (eventType != XmlPullParser.END_TAG) {
3500      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3501        res.setCodeElement(parseEnumeration(xpp, Conformance.TypeRestfulInteraction.NULL, new Conformance.TypeRestfulInteractionEnumFactory()));
3502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3503        res.setDocumentationElement(parseString(xpp));
3504      } else if (!parseBackboneContent(eventType, xpp, res))
3505        unknownContent(xpp);
3506      eventType = nextNoWhitespace(xpp);
3507    }
3508    next(xpp);
3509    parseElementClose(res);
3510    return res;
3511  }
3512
3513  protected Conformance.ConformanceRestResourceSearchParamComponent parseConformanceConformanceRestResourceSearchParamComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3514    Conformance.ConformanceRestResourceSearchParamComponent res = new Conformance.ConformanceRestResourceSearchParamComponent();
3515    parseBackboneAttributes(xpp, res);
3516    next(xpp);
3517    int eventType = nextNoWhitespace(xpp);
3518    while (eventType != XmlPullParser.END_TAG) {
3519      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3520        res.setNameElement(parseString(xpp));
3521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3522        res.setDefinitionElement(parseUri(xpp));
3523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3524        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3526        res.setDocumentationElement(parseString(xpp));
3527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
3528        res.getTarget().add(parseCode(xpp));
3529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
3530        res.getModifier().add(parseEnumeration(xpp, Conformance.SearchModifierCode.NULL, new Conformance.SearchModifierCodeEnumFactory()));
3531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
3532        res.getChain().add(parseString(xpp));
3533      } else if (!parseBackboneContent(eventType, xpp, res))
3534        unknownContent(xpp);
3535      eventType = nextNoWhitespace(xpp);
3536    }
3537    next(xpp);
3538    parseElementClose(res);
3539    return res;
3540  }
3541
3542  protected Conformance.SystemInteractionComponent parseConformanceSystemInteractionComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3543    Conformance.SystemInteractionComponent res = new Conformance.SystemInteractionComponent();
3544    parseBackboneAttributes(xpp, res);
3545    next(xpp);
3546    int eventType = nextNoWhitespace(xpp);
3547    while (eventType != XmlPullParser.END_TAG) {
3548      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3549        res.setCodeElement(parseEnumeration(xpp, Conformance.SystemRestfulInteraction.NULL, new Conformance.SystemRestfulInteractionEnumFactory()));
3550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3551        res.setDocumentationElement(parseString(xpp));
3552      } else if (!parseBackboneContent(eventType, xpp, res))
3553        unknownContent(xpp);
3554      eventType = nextNoWhitespace(xpp);
3555    }
3556    next(xpp);
3557    parseElementClose(res);
3558    return res;
3559  }
3560
3561  protected Conformance.ConformanceRestOperationComponent parseConformanceConformanceRestOperationComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3562    Conformance.ConformanceRestOperationComponent res = new Conformance.ConformanceRestOperationComponent();
3563    parseBackboneAttributes(xpp, res);
3564    next(xpp);
3565    int eventType = nextNoWhitespace(xpp);
3566    while (eventType != XmlPullParser.END_TAG) {
3567      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3568        res.setNameElement(parseString(xpp));
3569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3570        res.setDefinition(parseReference(xpp));
3571      } else if (!parseBackboneContent(eventType, xpp, res))
3572        unknownContent(xpp);
3573      eventType = nextNoWhitespace(xpp);
3574    }
3575    next(xpp);
3576    parseElementClose(res);
3577    return res;
3578  }
3579
3580  protected Conformance.ConformanceMessagingComponent parseConformanceConformanceMessagingComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3581    Conformance.ConformanceMessagingComponent res = new Conformance.ConformanceMessagingComponent();
3582    parseBackboneAttributes(xpp, res);
3583    next(xpp);
3584    int eventType = nextNoWhitespace(xpp);
3585    while (eventType != XmlPullParser.END_TAG) {
3586      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3587        res.getEndpoint().add(parseConformanceConformanceMessagingEndpointComponent(xpp, owner));
3588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3589        res.setReliableCacheElement(parseUnsignedInt(xpp));
3590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3591        res.setDocumentationElement(parseString(xpp));
3592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
3593        res.getEvent().add(parseConformanceConformanceMessagingEventComponent(xpp, owner));
3594      } else if (!parseBackboneContent(eventType, xpp, res))
3595        unknownContent(xpp);
3596      eventType = nextNoWhitespace(xpp);
3597    }
3598    next(xpp);
3599    parseElementClose(res);
3600    return res;
3601  }
3602
3603  protected Conformance.ConformanceMessagingEndpointComponent parseConformanceConformanceMessagingEndpointComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3604    Conformance.ConformanceMessagingEndpointComponent res = new Conformance.ConformanceMessagingEndpointComponent();
3605    parseBackboneAttributes(xpp, res);
3606    next(xpp);
3607    int eventType = nextNoWhitespace(xpp);
3608    while (eventType != XmlPullParser.END_TAG) {
3609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3610        res.setProtocol(parseCoding(xpp));
3611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3612        res.setAddressElement(parseUri(xpp));
3613      } else if (!parseBackboneContent(eventType, xpp, res))
3614        unknownContent(xpp);
3615      eventType = nextNoWhitespace(xpp);
3616    }
3617    next(xpp);
3618    parseElementClose(res);
3619    return res;
3620  }
3621
3622  protected Conformance.ConformanceMessagingEventComponent parseConformanceConformanceMessagingEventComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3623    Conformance.ConformanceMessagingEventComponent res = new Conformance.ConformanceMessagingEventComponent();
3624    parseBackboneAttributes(xpp, res);
3625    next(xpp);
3626    int eventType = nextNoWhitespace(xpp);
3627    while (eventType != XmlPullParser.END_TAG) {
3628      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3629        res.setCode(parseCoding(xpp));
3630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3631        res.setCategoryElement(parseEnumeration(xpp, Conformance.MessageSignificanceCategory.NULL, new Conformance.MessageSignificanceCategoryEnumFactory()));
3632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3633        res.setModeElement(parseEnumeration(xpp, Conformance.ConformanceEventMode.NULL, new Conformance.ConformanceEventModeEnumFactory()));
3634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
3635        res.setFocusElement(parseCode(xpp));
3636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3637        res.setRequest(parseReference(xpp));
3638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3639        res.setResponse(parseReference(xpp));
3640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3641        res.setDocumentationElement(parseString(xpp));
3642      } else if (!parseBackboneContent(eventType, xpp, res))
3643        unknownContent(xpp);
3644      eventType = nextNoWhitespace(xpp);
3645    }
3646    next(xpp);
3647    parseElementClose(res);
3648    return res;
3649  }
3650
3651  protected Conformance.ConformanceDocumentComponent parseConformanceConformanceDocumentComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3652    Conformance.ConformanceDocumentComponent res = new Conformance.ConformanceDocumentComponent();
3653    parseBackboneAttributes(xpp, res);
3654    next(xpp);
3655    int eventType = nextNoWhitespace(xpp);
3656    while (eventType != XmlPullParser.END_TAG) {
3657      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3658        res.setModeElement(parseEnumeration(xpp, Conformance.DocumentMode.NULL, new Conformance.DocumentModeEnumFactory()));
3659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3660        res.setDocumentationElement(parseString(xpp));
3661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3662        res.setProfile(parseReference(xpp));
3663      } else if (!parseBackboneContent(eventType, xpp, res))
3664        unknownContent(xpp);
3665      eventType = nextNoWhitespace(xpp);
3666    }
3667    next(xpp);
3668    parseElementClose(res);
3669    return res;
3670  }
3671
3672  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3673    Contract res = new Contract();
3674    parseDomainResourceAttributes(xpp, res);
3675    next(xpp);
3676    int eventType = nextNoWhitespace(xpp);
3677    while (eventType != XmlPullParser.END_TAG) {
3678      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3679        res.setIdentifier(parseIdentifier(xpp));
3680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
3681        res.setIssuedElement(parseDateTime(xpp));
3682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
3683        res.setApplies(parsePeriod(xpp));
3684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3685        res.getSubject().add(parseReference(xpp));
3686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
3687        res.getAuthority().add(parseReference(xpp));
3688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
3689        res.getDomain().add(parseReference(xpp));
3690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3691        res.setType(parseCodeableConcept(xpp));
3692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
3693        res.getSubType().add(parseCodeableConcept(xpp));
3694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
3695        res.getAction().add(parseCodeableConcept(xpp));
3696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
3697        res.getActionReason().add(parseCodeableConcept(xpp));
3698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3699        res.getActor().add(parseContractActorComponent(xpp, res));
3700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
3701        res.getValuedItem().add(parseContractValuedItemComponent(xpp, res));
3702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
3703        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
3704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
3705        res.getTerm().add(parseContractTermComponent(xpp, res));
3706      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "binding")) {
3707        res.setBinding(parseType("binding", xpp));
3708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
3709        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
3710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
3711        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
3712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
3713        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
3714      } else if (!parseDomainResourceContent(eventType, xpp, res))
3715        unknownContent(xpp);
3716      eventType = nextNoWhitespace(xpp);
3717    }
3718    next(xpp);
3719    parseElementClose(res);
3720    return res;
3721  }
3722
3723  protected Contract.ActorComponent parseContractActorComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3724    Contract.ActorComponent res = new Contract.ActorComponent();
3725    parseBackboneAttributes(xpp, res);
3726    next(xpp);
3727    int eventType = nextNoWhitespace(xpp);
3728    while (eventType != XmlPullParser.END_TAG) {
3729      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
3730        res.setEntity(parseReference(xpp));
3731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3732        res.getRole().add(parseCodeableConcept(xpp));
3733      } else if (!parseBackboneContent(eventType, xpp, res))
3734        unknownContent(xpp);
3735      eventType = nextNoWhitespace(xpp);
3736    }
3737    next(xpp);
3738    parseElementClose(res);
3739    return res;
3740  }
3741
3742  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3743    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
3744    parseBackboneAttributes(xpp, res);
3745    next(xpp);
3746    int eventType = nextNoWhitespace(xpp);
3747    while (eventType != XmlPullParser.END_TAG) {
3748      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
3749        res.setEntity(parseType("entity", xpp));
3750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3751        res.setIdentifier(parseIdentifier(xpp));
3752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
3753        res.setEffectiveTimeElement(parseDateTime(xpp));
3754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3755        res.setQuantity(parseSimpleQuantity(xpp));
3756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
3757        res.setUnitPrice(parseMoney(xpp));
3758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
3759        res.setFactorElement(parseDecimal(xpp));
3760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
3761        res.setPointsElement(parseDecimal(xpp));
3762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
3763        res.setNet(parseMoney(xpp));
3764      } else if (!parseBackboneContent(eventType, xpp, res))
3765        unknownContent(xpp);
3766      eventType = nextNoWhitespace(xpp);
3767    }
3768    next(xpp);
3769    parseElementClose(res);
3770    return res;
3771  }
3772
3773  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3774    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
3775    parseBackboneAttributes(xpp, res);
3776    next(xpp);
3777    int eventType = nextNoWhitespace(xpp);
3778    while (eventType != XmlPullParser.END_TAG) {
3779      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3780        res.setType(parseCoding(xpp));
3781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
3782        res.setParty(parseReference(xpp));
3783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
3784        res.setSignatureElement(parseString(xpp));
3785      } else if (!parseBackboneContent(eventType, xpp, res))
3786        unknownContent(xpp);
3787      eventType = nextNoWhitespace(xpp);
3788    }
3789    next(xpp);
3790    parseElementClose(res);
3791    return res;
3792  }
3793
3794  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3795    Contract.TermComponent res = new Contract.TermComponent();
3796    parseBackboneAttributes(xpp, res);
3797    next(xpp);
3798    int eventType = nextNoWhitespace(xpp);
3799    while (eventType != XmlPullParser.END_TAG) {
3800      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3801        res.setIdentifier(parseIdentifier(xpp));
3802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
3803        res.setIssuedElement(parseDateTime(xpp));
3804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
3805        res.setApplies(parsePeriod(xpp));
3806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3807        res.setType(parseCodeableConcept(xpp));
3808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
3809        res.setSubType(parseCodeableConcept(xpp));
3810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3811        res.setSubject(parseReference(xpp));
3812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
3813        res.getAction().add(parseCodeableConcept(xpp));
3814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
3815        res.getActionReason().add(parseCodeableConcept(xpp));
3816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3817        res.getActor().add(parseContractTermActorComponent(xpp, owner));
3818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
3819        res.setTextElement(parseString(xpp));
3820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
3821        res.getValuedItem().add(parseContractTermValuedItemComponent(xpp, owner));
3822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
3823        res.getGroup().add(parseContractTermComponent(xpp, owner));
3824      } else if (!parseBackboneContent(eventType, xpp, res))
3825        unknownContent(xpp);
3826      eventType = nextNoWhitespace(xpp);
3827    }
3828    next(xpp);
3829    parseElementClose(res);
3830    return res;
3831  }
3832
3833  protected Contract.TermActorComponent parseContractTermActorComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3834    Contract.TermActorComponent res = new Contract.TermActorComponent();
3835    parseBackboneAttributes(xpp, res);
3836    next(xpp);
3837    int eventType = nextNoWhitespace(xpp);
3838    while (eventType != XmlPullParser.END_TAG) {
3839      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
3840        res.setEntity(parseReference(xpp));
3841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3842        res.getRole().add(parseCodeableConcept(xpp));
3843      } else if (!parseBackboneContent(eventType, xpp, res))
3844        unknownContent(xpp);
3845      eventType = nextNoWhitespace(xpp);
3846    }
3847    next(xpp);
3848    parseElementClose(res);
3849    return res;
3850  }
3851
3852  protected Contract.TermValuedItemComponent parseContractTermValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3853    Contract.TermValuedItemComponent res = new Contract.TermValuedItemComponent();
3854    parseBackboneAttributes(xpp, res);
3855    next(xpp);
3856    int eventType = nextNoWhitespace(xpp);
3857    while (eventType != XmlPullParser.END_TAG) {
3858      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
3859        res.setEntity(parseType("entity", xpp));
3860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3861        res.setIdentifier(parseIdentifier(xpp));
3862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
3863        res.setEffectiveTimeElement(parseDateTime(xpp));
3864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3865        res.setQuantity(parseSimpleQuantity(xpp));
3866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
3867        res.setUnitPrice(parseMoney(xpp));
3868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
3869        res.setFactorElement(parseDecimal(xpp));
3870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
3871        res.setPointsElement(parseDecimal(xpp));
3872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
3873        res.setNet(parseMoney(xpp));
3874      } else if (!parseBackboneContent(eventType, xpp, res))
3875        unknownContent(xpp);
3876      eventType = nextNoWhitespace(xpp);
3877    }
3878    next(xpp);
3879    parseElementClose(res);
3880    return res;
3881  }
3882
3883  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3884    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
3885    parseBackboneAttributes(xpp, res);
3886    next(xpp);
3887    int eventType = nextNoWhitespace(xpp);
3888    while (eventType != XmlPullParser.END_TAG) {
3889      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
3890        res.setContent(parseType("content", xpp));
3891      } else if (!parseBackboneContent(eventType, xpp, res))
3892        unknownContent(xpp);
3893      eventType = nextNoWhitespace(xpp);
3894    }
3895    next(xpp);
3896    parseElementClose(res);
3897    return res;
3898  }
3899
3900  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3901    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
3902    parseBackboneAttributes(xpp, res);
3903    next(xpp);
3904    int eventType = nextNoWhitespace(xpp);
3905    while (eventType != XmlPullParser.END_TAG) {
3906      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
3907        res.setContent(parseType("content", xpp));
3908      } else if (!parseBackboneContent(eventType, xpp, res))
3909        unknownContent(xpp);
3910      eventType = nextNoWhitespace(xpp);
3911    }
3912    next(xpp);
3913    parseElementClose(res);
3914    return res;
3915  }
3916
3917  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
3918    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
3919    parseBackboneAttributes(xpp, res);
3920    next(xpp);
3921    int eventType = nextNoWhitespace(xpp);
3922    while (eventType != XmlPullParser.END_TAG) {
3923      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
3924        res.setContent(parseType("content", xpp));
3925      } else if (!parseBackboneContent(eventType, xpp, res))
3926        unknownContent(xpp);
3927      eventType = nextNoWhitespace(xpp);
3928    }
3929    next(xpp);
3930    parseElementClose(res);
3931    return res;
3932  }
3933
3934  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3935    Coverage res = new Coverage();
3936    parseDomainResourceAttributes(xpp, res);
3937    next(xpp);
3938    int eventType = nextNoWhitespace(xpp);
3939    while (eventType != XmlPullParser.END_TAG) {
3940      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
3941        res.setIssuer(parseReference(xpp));
3942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bin")) {
3943        res.setBin(parseIdentifier(xpp));
3944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3945        res.setPeriod(parsePeriod(xpp));
3946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3947        res.setType(parseCoding(xpp));
3948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
3949        res.setSubscriberId(parseIdentifier(xpp));
3950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3951        res.getIdentifier().add(parseIdentifier(xpp));
3952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
3953        res.setGroupElement(parseString(xpp));
3954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
3955        res.setPlanElement(parseString(xpp));
3956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlan")) {
3957        res.setSubPlanElement(parseString(xpp));
3958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
3959        res.setDependentElement(parsePositiveInt(xpp));
3960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3961        res.setSequenceElement(parsePositiveInt(xpp));
3962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
3963        res.setSubscriber(parseReference(xpp));
3964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
3965        res.setNetwork(parseIdentifier(xpp));
3966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
3967        res.getContract().add(parseReference(xpp));
3968      } else if (!parseDomainResourceContent(eventType, xpp, res))
3969        unknownContent(xpp);
3970      eventType = nextNoWhitespace(xpp);
3971    }
3972    next(xpp);
3973    parseElementClose(res);
3974    return res;
3975  }
3976
3977  protected DataElement parseDataElement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3978    DataElement res = new DataElement();
3979    parseDomainResourceAttributes(xpp, res);
3980    next(xpp);
3981    int eventType = nextNoWhitespace(xpp);
3982    while (eventType != XmlPullParser.END_TAG) {
3983      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3984        res.setUrlElement(parseUri(xpp));
3985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3986        res.getIdentifier().add(parseIdentifier(xpp));
3987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3988        res.setVersionElement(parseString(xpp));
3989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3990        res.setNameElement(parseString(xpp));
3991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3992        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
3993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3994        res.setExperimentalElement(parseBoolean(xpp));
3995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3996        res.setPublisherElement(parseString(xpp));
3997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3998        res.getContact().add(parseDataElementDataElementContactComponent(xpp, res));
3999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4000        res.setDateElement(parseDateTime(xpp));
4001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4002        res.getUseContext().add(parseCodeableConcept(xpp));
4003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4004        res.setCopyrightElement(parseString(xpp));
4005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stringency")) {
4006        res.setStringencyElement(parseEnumeration(xpp, DataElement.DataElementStringency.NULL, new DataElement.DataElementStringencyEnumFactory()));
4007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
4008        res.getMapping().add(parseDataElementDataElementMappingComponent(xpp, res));
4009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
4010        res.getElement().add(parseElementDefinition(xpp));
4011      } else if (!parseDomainResourceContent(eventType, xpp, res))
4012        unknownContent(xpp);
4013      eventType = nextNoWhitespace(xpp);
4014    }
4015    next(xpp);
4016    parseElementClose(res);
4017    return res;
4018  }
4019
4020  protected DataElement.DataElementContactComponent parseDataElementDataElementContactComponent(XmlPullParser xpp, DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
4021    DataElement.DataElementContactComponent res = new DataElement.DataElementContactComponent();
4022    parseBackboneAttributes(xpp, res);
4023    next(xpp);
4024    int eventType = nextNoWhitespace(xpp);
4025    while (eventType != XmlPullParser.END_TAG) {
4026      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4027        res.setNameElement(parseString(xpp));
4028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4029        res.getTelecom().add(parseContactPoint(xpp));
4030      } else if (!parseBackboneContent(eventType, xpp, res))
4031        unknownContent(xpp);
4032      eventType = nextNoWhitespace(xpp);
4033    }
4034    next(xpp);
4035    parseElementClose(res);
4036    return res;
4037  }
4038
4039  protected DataElement.DataElementMappingComponent parseDataElementDataElementMappingComponent(XmlPullParser xpp, DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
4040    DataElement.DataElementMappingComponent res = new DataElement.DataElementMappingComponent();
4041    parseBackboneAttributes(xpp, res);
4042    next(xpp);
4043    int eventType = nextNoWhitespace(xpp);
4044    while (eventType != XmlPullParser.END_TAG) {
4045      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
4046        res.setIdentityElement(parseId(xpp));
4047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
4048        res.setUriElement(parseUri(xpp));
4049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4050        res.setNameElement(parseString(xpp));
4051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
4052        res.setCommentsElement(parseString(xpp));
4053      } else if (!parseBackboneContent(eventType, xpp, res))
4054        unknownContent(xpp);
4055      eventType = nextNoWhitespace(xpp);
4056    }
4057    next(xpp);
4058    parseElementClose(res);
4059    return res;
4060  }
4061
4062  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4063    DetectedIssue res = new DetectedIssue();
4064    parseDomainResourceAttributes(xpp, res);
4065    next(xpp);
4066    int eventType = nextNoWhitespace(xpp);
4067    while (eventType != XmlPullParser.END_TAG) {
4068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4069        res.setPatient(parseReference(xpp));
4070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4071        res.setCategory(parseCodeableConcept(xpp));
4072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
4073        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
4074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
4075        res.getImplicated().add(parseReference(xpp));
4076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4077        res.setDetailElement(parseString(xpp));
4078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4079        res.setDateElement(parseDateTime(xpp));
4080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4081        res.setAuthor(parseReference(xpp));
4082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4083        res.setIdentifier(parseIdentifier(xpp));
4084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4085        res.setReferenceElement(parseUri(xpp));
4086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
4087        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
4088      } else if (!parseDomainResourceContent(eventType, xpp, res))
4089        unknownContent(xpp);
4090      eventType = nextNoWhitespace(xpp);
4091    }
4092    next(xpp);
4093    parseElementClose(res);
4094    return res;
4095  }
4096
4097  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
4098    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
4099    parseBackboneAttributes(xpp, res);
4100    next(xpp);
4101    int eventType = nextNoWhitespace(xpp);
4102    while (eventType != XmlPullParser.END_TAG) {
4103      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4104        res.setAction(parseCodeableConcept(xpp));
4105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4106        res.setDateElement(parseDateTime(xpp));
4107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4108        res.setAuthor(parseReference(xpp));
4109      } else if (!parseBackboneContent(eventType, xpp, res))
4110        unknownContent(xpp);
4111      eventType = nextNoWhitespace(xpp);
4112    }
4113    next(xpp);
4114    parseElementClose(res);
4115    return res;
4116  }
4117
4118  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4119    Device res = new Device();
4120    parseDomainResourceAttributes(xpp, res);
4121    next(xpp);
4122    int eventType = nextNoWhitespace(xpp);
4123    while (eventType != XmlPullParser.END_TAG) {
4124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4125        res.getIdentifier().add(parseIdentifier(xpp));
4126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4127        res.setType(parseCodeableConcept(xpp));
4128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4129        res.getNote().add(parseAnnotation(xpp));
4130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4131        res.setStatusElement(parseEnumeration(xpp, Device.DeviceStatus.NULL, new Device.DeviceStatusEnumFactory()));
4132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
4133        res.setManufacturerElement(parseString(xpp));
4134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
4135        res.setModelElement(parseString(xpp));
4136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4137        res.setVersionElement(parseString(xpp));
4138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
4139        res.setManufactureDateElement(parseDateTime(xpp));
4140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
4141        res.setExpiryElement(parseDateTime(xpp));
4142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4143        res.setUdiElement(parseString(xpp));
4144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
4145        res.setLotNumberElement(parseString(xpp));
4146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
4147        res.setOwner(parseReference(xpp));
4148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
4149        res.setLocation(parseReference(xpp));
4150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4151        res.setPatient(parseReference(xpp));
4152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4153        res.getContact().add(parseContactPoint(xpp));
4154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4155        res.setUrlElement(parseUri(xpp));
4156      } else if (!parseDomainResourceContent(eventType, xpp, res))
4157        unknownContent(xpp);
4158      eventType = nextNoWhitespace(xpp);
4159    }
4160    next(xpp);
4161    parseElementClose(res);
4162    return res;
4163  }
4164
4165  protected DeviceComponent parseDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4166    DeviceComponent res = new DeviceComponent();
4167    parseDomainResourceAttributes(xpp, res);
4168    next(xpp);
4169    int eventType = nextNoWhitespace(xpp);
4170    while (eventType != XmlPullParser.END_TAG) {
4171      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4172        res.setType(parseCodeableConcept(xpp));
4173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4174        res.setIdentifier(parseIdentifier(xpp));
4175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastSystemChange")) {
4176        res.setLastSystemChangeElement(parseInstant(xpp));
4177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
4178        res.setSource(parseReference(xpp));
4179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
4180        res.setParent(parseReference(xpp));
4181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
4182        res.getOperationalStatus().add(parseCodeableConcept(xpp));
4183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterGroup")) {
4184        res.setParameterGroup(parseCodeableConcept(xpp));
4185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPrinciple")) {
4186        res.setMeasurementPrincipleElement(parseEnumeration(xpp, DeviceComponent.MeasmntPrinciple.NULL, new DeviceComponent.MeasmntPrincipleEnumFactory()));
4187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpecification")) {
4188        res.getProductionSpecification().add(parseDeviceComponentDeviceComponentProductionSpecificationComponent(xpp, res));
4189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
4190        res.setLanguageCode(parseCodeableConcept(xpp));
4191      } else if (!parseDomainResourceContent(eventType, xpp, res))
4192        unknownContent(xpp);
4193      eventType = nextNoWhitespace(xpp);
4194    }
4195    next(xpp);
4196    parseElementClose(res);
4197    return res;
4198  }
4199
4200  protected DeviceComponent.DeviceComponentProductionSpecificationComponent parseDeviceComponentDeviceComponentProductionSpecificationComponent(XmlPullParser xpp, DeviceComponent owner) throws XmlPullParserException, IOException, FHIRFormatError {
4201    DeviceComponent.DeviceComponentProductionSpecificationComponent res = new DeviceComponent.DeviceComponentProductionSpecificationComponent();
4202    parseBackboneAttributes(xpp, res);
4203    next(xpp);
4204    int eventType = nextNoWhitespace(xpp);
4205    while (eventType != XmlPullParser.END_TAG) {
4206      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specType")) {
4207        res.setSpecType(parseCodeableConcept(xpp));
4208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("componentId")) {
4209        res.setComponentId(parseIdentifier(xpp));
4210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpec")) {
4211        res.setProductionSpecElement(parseString(xpp));
4212      } else if (!parseBackboneContent(eventType, xpp, res))
4213        unknownContent(xpp);
4214      eventType = nextNoWhitespace(xpp);
4215    }
4216    next(xpp);
4217    parseElementClose(res);
4218    return res;
4219  }
4220
4221  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4222    DeviceMetric res = new DeviceMetric();
4223    parseDomainResourceAttributes(xpp, res);
4224    next(xpp);
4225    int eventType = nextNoWhitespace(xpp);
4226    while (eventType != XmlPullParser.END_TAG) {
4227      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4228        res.setType(parseCodeableConcept(xpp));
4229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4230        res.setIdentifier(parseIdentifier(xpp));
4231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
4232        res.setUnit(parseCodeableConcept(xpp));
4233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
4234        res.setSource(parseReference(xpp));
4235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
4236        res.setParent(parseReference(xpp));
4237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
4238        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
4239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
4240        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
4241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4242        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
4243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
4244        res.setMeasurementPeriod(parseTiming(xpp));
4245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
4246        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
4247      } else if (!parseDomainResourceContent(eventType, xpp, res))
4248        unknownContent(xpp);
4249      eventType = nextNoWhitespace(xpp);
4250    }
4251    next(xpp);
4252    parseElementClose(res);
4253    return res;
4254  }
4255
4256  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
4257    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
4258    parseBackboneAttributes(xpp, res);
4259    next(xpp);
4260    int eventType = nextNoWhitespace(xpp);
4261    while (eventType != XmlPullParser.END_TAG) {
4262      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4263        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
4264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
4265        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
4266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
4267        res.setTimeElement(parseInstant(xpp));
4268      } else if (!parseBackboneContent(eventType, xpp, res))
4269        unknownContent(xpp);
4270      eventType = nextNoWhitespace(xpp);
4271    }
4272    next(xpp);
4273    parseElementClose(res);
4274    return res;
4275  }
4276
4277  protected DeviceUseRequest parseDeviceUseRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4278    DeviceUseRequest res = new DeviceUseRequest();
4279    parseDomainResourceAttributes(xpp, res);
4280    next(xpp);
4281    int eventType = nextNoWhitespace(xpp);
4282    while (eventType != XmlPullParser.END_TAG) {
4283      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bodySite")) {
4284        res.setBodySite(parseType("bodySite", xpp));
4285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4286        res.setStatusElement(parseEnumeration(xpp, DeviceUseRequest.DeviceUseRequestStatus.NULL, new DeviceUseRequest.DeviceUseRequestStatusEnumFactory()));
4287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
4288        res.setDevice(parseReference(xpp));
4289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4290        res.setEncounter(parseReference(xpp));
4291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4292        res.getIdentifier().add(parseIdentifier(xpp));
4293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
4294        res.getIndication().add(parseCodeableConcept(xpp));
4295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
4296        res.getNotes().add(parseString(xpp));
4297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prnReason")) {
4298        res.getPrnReason().add(parseCodeableConcept(xpp));
4299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedOn")) {
4300        res.setOrderedOnElement(parseDateTime(xpp));
4301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
4302        res.setRecordedOnElement(parseDateTime(xpp));
4303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4304        res.setSubject(parseReference(xpp));
4305      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4306        res.setTiming(parseType("timing", xpp));
4307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4308        res.setPriorityElement(parseEnumeration(xpp, DeviceUseRequest.DeviceUseRequestPriority.NULL, new DeviceUseRequest.DeviceUseRequestPriorityEnumFactory()));
4309      } else if (!parseDomainResourceContent(eventType, xpp, res))
4310        unknownContent(xpp);
4311      eventType = nextNoWhitespace(xpp);
4312    }
4313    next(xpp);
4314    parseElementClose(res);
4315    return res;
4316  }
4317
4318  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4319    DeviceUseStatement res = new DeviceUseStatement();
4320    parseDomainResourceAttributes(xpp, res);
4321    next(xpp);
4322    int eventType = nextNoWhitespace(xpp);
4323    while (eventType != XmlPullParser.END_TAG) {
4324      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bodySite")) {
4325        res.setBodySite(parseType("bodySite", xpp));
4326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenUsed")) {
4327        res.setWhenUsed(parsePeriod(xpp));
4328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
4329        res.setDevice(parseReference(xpp));
4330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4331        res.getIdentifier().add(parseIdentifier(xpp));
4332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
4333        res.getIndication().add(parseCodeableConcept(xpp));
4334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
4335        res.getNotes().add(parseString(xpp));
4336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
4337        res.setRecordedOnElement(parseDateTime(xpp));
4338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4339        res.setSubject(parseReference(xpp));
4340      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4341        res.setTiming(parseType("timing", xpp));
4342      } else if (!parseDomainResourceContent(eventType, xpp, res))
4343        unknownContent(xpp);
4344      eventType = nextNoWhitespace(xpp);
4345    }
4346    next(xpp);
4347    parseElementClose(res);
4348    return res;
4349  }
4350
4351  protected DiagnosticOrder parseDiagnosticOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4352    DiagnosticOrder res = new DiagnosticOrder();
4353    parseDomainResourceAttributes(xpp, res);
4354    next(xpp);
4355    int eventType = nextNoWhitespace(xpp);
4356    while (eventType != XmlPullParser.END_TAG) {
4357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4358        res.setSubject(parseReference(xpp));
4359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
4360        res.setOrderer(parseReference(xpp));
4361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4362        res.getIdentifier().add(parseIdentifier(xpp));
4363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4364        res.setEncounter(parseReference(xpp));
4365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4366        res.getReason().add(parseCodeableConcept(xpp));
4367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
4368        res.getSupportingInformation().add(parseReference(xpp));
4369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
4370        res.getSpecimen().add(parseReference(xpp));
4371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4372        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL, new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
4373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4374        res.setPriorityElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderPriority.NULL, new DiagnosticOrder.DiagnosticOrderPriorityEnumFactory()));
4375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
4376        res.getEvent().add(parseDiagnosticOrderDiagnosticOrderEventComponent(xpp, res));
4377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4378        res.getItem().add(parseDiagnosticOrderDiagnosticOrderItemComponent(xpp, res));
4379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4380        res.getNote().add(parseAnnotation(xpp));
4381      } else if (!parseDomainResourceContent(eventType, xpp, res))
4382        unknownContent(xpp);
4383      eventType = nextNoWhitespace(xpp);
4384    }
4385    next(xpp);
4386    parseElementClose(res);
4387    return res;
4388  }
4389
4390  protected DiagnosticOrder.DiagnosticOrderEventComponent parseDiagnosticOrderDiagnosticOrderEventComponent(XmlPullParser xpp, DiagnosticOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
4391    DiagnosticOrder.DiagnosticOrderEventComponent res = new DiagnosticOrder.DiagnosticOrderEventComponent();
4392    parseBackboneAttributes(xpp, res);
4393    next(xpp);
4394    int eventType = nextNoWhitespace(xpp);
4395    while (eventType != XmlPullParser.END_TAG) {
4396      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4397        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL, new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
4398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4399        res.setDescription(parseCodeableConcept(xpp));
4400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
4401        res.setDateTimeElement(parseDateTime(xpp));
4402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4403        res.setActor(parseReference(xpp));
4404      } else if (!parseBackboneContent(eventType, xpp, res))
4405        unknownContent(xpp);
4406      eventType = nextNoWhitespace(xpp);
4407    }
4408    next(xpp);
4409    parseElementClose(res);
4410    return res;
4411  }
4412
4413  protected DiagnosticOrder.DiagnosticOrderItemComponent parseDiagnosticOrderDiagnosticOrderItemComponent(XmlPullParser xpp, DiagnosticOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
4414    DiagnosticOrder.DiagnosticOrderItemComponent res = new DiagnosticOrder.DiagnosticOrderItemComponent();
4415    parseBackboneAttributes(xpp, res);
4416    next(xpp);
4417    int eventType = nextNoWhitespace(xpp);
4418    while (eventType != XmlPullParser.END_TAG) {
4419      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4420        res.setCode(parseCodeableConcept(xpp));
4421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
4422        res.getSpecimen().add(parseReference(xpp));
4423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4424        res.setBodySite(parseCodeableConcept(xpp));
4425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4426        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL, new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
4427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
4428        res.getEvent().add(parseDiagnosticOrderDiagnosticOrderEventComponent(xpp, owner));
4429      } else if (!parseBackboneContent(eventType, xpp, res))
4430        unknownContent(xpp);
4431      eventType = nextNoWhitespace(xpp);
4432    }
4433    next(xpp);
4434    parseElementClose(res);
4435    return res;
4436  }
4437
4438  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4439    DiagnosticReport res = new DiagnosticReport();
4440    parseDomainResourceAttributes(xpp, res);
4441    next(xpp);
4442    int eventType = nextNoWhitespace(xpp);
4443    while (eventType != XmlPullParser.END_TAG) {
4444      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4445        res.getIdentifier().add(parseIdentifier(xpp));
4446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4447        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
4448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4449        res.setCategory(parseCodeableConcept(xpp));
4450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4451        res.setCode(parseCodeableConcept(xpp));
4452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4453        res.setSubject(parseReference(xpp));
4454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4455        res.setEncounter(parseReference(xpp));
4456      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
4457        res.setEffective(parseType("effective", xpp));
4458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
4459        res.setIssuedElement(parseInstant(xpp));
4460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4461        res.setPerformer(parseReference(xpp));
4462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4463        res.getRequest().add(parseReference(xpp));
4464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
4465        res.getSpecimen().add(parseReference(xpp));
4466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
4467        res.getResult().add(parseReference(xpp));
4468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
4469        res.getImagingStudy().add(parseReference(xpp));
4470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
4471        res.getImage().add(parseDiagnosticReportDiagnosticReportImageComponent(xpp, res));
4472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
4473        res.setConclusionElement(parseString(xpp));
4474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codedDiagnosis")) {
4475        res.getCodedDiagnosis().add(parseCodeableConcept(xpp));
4476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
4477        res.getPresentedForm().add(parseAttachment(xpp));
4478      } else if (!parseDomainResourceContent(eventType, xpp, res))
4479        unknownContent(xpp);
4480      eventType = nextNoWhitespace(xpp);
4481    }
4482    next(xpp);
4483    parseElementClose(res);
4484    return res;
4485  }
4486
4487  protected DiagnosticReport.DiagnosticReportImageComponent parseDiagnosticReportDiagnosticReportImageComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
4488    DiagnosticReport.DiagnosticReportImageComponent res = new DiagnosticReport.DiagnosticReportImageComponent();
4489    parseBackboneAttributes(xpp, res);
4490    next(xpp);
4491    int eventType = nextNoWhitespace(xpp);
4492    while (eventType != XmlPullParser.END_TAG) {
4493      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
4494        res.setCommentElement(parseString(xpp));
4495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
4496        res.setLink(parseReference(xpp));
4497      } else if (!parseBackboneContent(eventType, xpp, res))
4498        unknownContent(xpp);
4499      eventType = nextNoWhitespace(xpp);
4500    }
4501    next(xpp);
4502    parseElementClose(res);
4503    return res;
4504  }
4505
4506  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4507    DocumentManifest res = new DocumentManifest();
4508    parseDomainResourceAttributes(xpp, res);
4509    next(xpp);
4510    int eventType = nextNoWhitespace(xpp);
4511    while (eventType != XmlPullParser.END_TAG) {
4512      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
4513        res.setMasterIdentifier(parseIdentifier(xpp));
4514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4515        res.getIdentifier().add(parseIdentifier(xpp));
4516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4517        res.setSubject(parseReference(xpp));
4518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
4519        res.getRecipient().add(parseReference(xpp));
4520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4521        res.setType(parseCodeableConcept(xpp));
4522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4523        res.getAuthor().add(parseReference(xpp));
4524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4525        res.setCreatedElement(parseDateTime(xpp));
4526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
4527        res.setSourceElement(parseUri(xpp));
4528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4529        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
4530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4531        res.setDescriptionElement(parseString(xpp));
4532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
4533        res.getContent().add(parseDocumentManifestDocumentManifestContentComponent(xpp, res));
4534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4535        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
4536      } else if (!parseDomainResourceContent(eventType, xpp, res))
4537        unknownContent(xpp);
4538      eventType = nextNoWhitespace(xpp);
4539    }
4540    next(xpp);
4541    parseElementClose(res);
4542    return res;
4543  }
4544
4545  protected DocumentManifest.DocumentManifestContentComponent parseDocumentManifestDocumentManifestContentComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
4546    DocumentManifest.DocumentManifestContentComponent res = new DocumentManifest.DocumentManifestContentComponent();
4547    parseBackboneAttributes(xpp, res);
4548    next(xpp);
4549    int eventType = nextNoWhitespace(xpp);
4550    while (eventType != XmlPullParser.END_TAG) {
4551      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "p")) {
4552        res.setP(parseType("p", xpp));
4553      } else if (!parseBackboneContent(eventType, xpp, res))
4554        unknownContent(xpp);
4555      eventType = nextNoWhitespace(xpp);
4556    }
4557    next(xpp);
4558    parseElementClose(res);
4559    return res;
4560  }
4561
4562  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
4563    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
4564    parseBackboneAttributes(xpp, res);
4565    next(xpp);
4566    int eventType = nextNoWhitespace(xpp);
4567    while (eventType != XmlPullParser.END_TAG) {
4568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4569        res.setIdentifier(parseIdentifier(xpp));
4570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
4571        res.setRef(parseReference(xpp));
4572      } else if (!parseBackboneContent(eventType, xpp, res))
4573        unknownContent(xpp);
4574      eventType = nextNoWhitespace(xpp);
4575    }
4576    next(xpp);
4577    parseElementClose(res);
4578    return res;
4579  }
4580
4581  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4582    DocumentReference res = new DocumentReference();
4583    parseDomainResourceAttributes(xpp, res);
4584    next(xpp);
4585    int eventType = nextNoWhitespace(xpp);
4586    while (eventType != XmlPullParser.END_TAG) {
4587      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
4588        res.setMasterIdentifier(parseIdentifier(xpp));
4589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4590        res.getIdentifier().add(parseIdentifier(xpp));
4591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4592        res.setSubject(parseReference(xpp));
4593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4594        res.setType(parseCodeableConcept(xpp));
4595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
4596        res.setClass_(parseCodeableConcept(xpp));
4597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4598        res.getAuthor().add(parseReference(xpp));
4599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
4600        res.setCustodian(parseReference(xpp));
4601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
4602        res.setAuthenticator(parseReference(xpp));
4603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4604        res.setCreatedElement(parseDateTime(xpp));
4605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indexed")) {
4606        res.setIndexedElement(parseInstant(xpp));
4607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4608        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
4609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
4610        res.setDocStatus(parseCodeableConcept(xpp));
4611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
4612        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
4613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4614        res.setDescriptionElement(parseString(xpp));
4615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
4616        res.getSecurityLabel().add(parseCodeableConcept(xpp));
4617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
4618        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
4619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4620        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
4621      } else if (!parseDomainResourceContent(eventType, xpp, res))
4622        unknownContent(xpp);
4623      eventType = nextNoWhitespace(xpp);
4624    }
4625    next(xpp);
4626    parseElementClose(res);
4627    return res;
4628  }
4629
4630  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
4631    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
4632    parseBackboneAttributes(xpp, res);
4633    next(xpp);
4634    int eventType = nextNoWhitespace(xpp);
4635    while (eventType != XmlPullParser.END_TAG) {
4636      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4637        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
4638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
4639        res.setTarget(parseReference(xpp));
4640      } else if (!parseBackboneContent(eventType, xpp, res))
4641        unknownContent(xpp);
4642      eventType = nextNoWhitespace(xpp);
4643    }
4644    next(xpp);
4645    parseElementClose(res);
4646    return res;
4647  }
4648
4649  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
4650    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
4651    parseBackboneAttributes(xpp, res);
4652    next(xpp);
4653    int eventType = nextNoWhitespace(xpp);
4654    while (eventType != XmlPullParser.END_TAG) {
4655      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
4656        res.setAttachment(parseAttachment(xpp));
4657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
4658        res.getFormat().add(parseCoding(xpp));
4659      } else if (!parseBackboneContent(eventType, xpp, res))
4660        unknownContent(xpp);
4661      eventType = nextNoWhitespace(xpp);
4662    }
4663    next(xpp);
4664    parseElementClose(res);
4665    return res;
4666  }
4667
4668  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
4669    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
4670    parseBackboneAttributes(xpp, res);
4671    next(xpp);
4672    int eventType = nextNoWhitespace(xpp);
4673    while (eventType != XmlPullParser.END_TAG) {
4674      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4675        res.setEncounter(parseReference(xpp));
4676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
4677        res.getEvent().add(parseCodeableConcept(xpp));
4678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4679        res.setPeriod(parsePeriod(xpp));
4680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
4681        res.setFacilityType(parseCodeableConcept(xpp));
4682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
4683        res.setPracticeSetting(parseCodeableConcept(xpp));
4684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
4685        res.setSourcePatientInfo(parseReference(xpp));
4686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4687        res.getRelated().add(parseDocumentReferenceDocumentReferenceContextRelatedComponent(xpp, owner));
4688      } else if (!parseBackboneContent(eventType, xpp, res))
4689        unknownContent(xpp);
4690      eventType = nextNoWhitespace(xpp);
4691    }
4692    next(xpp);
4693    parseElementClose(res);
4694    return res;
4695  }
4696
4697  protected DocumentReference.DocumentReferenceContextRelatedComponent parseDocumentReferenceDocumentReferenceContextRelatedComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
4698    DocumentReference.DocumentReferenceContextRelatedComponent res = new DocumentReference.DocumentReferenceContextRelatedComponent();
4699    parseBackboneAttributes(xpp, res);
4700    next(xpp);
4701    int eventType = nextNoWhitespace(xpp);
4702    while (eventType != XmlPullParser.END_TAG) {
4703      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4704        res.setIdentifier(parseIdentifier(xpp));
4705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
4706        res.setRef(parseReference(xpp));
4707      } else if (!parseBackboneContent(eventType, xpp, res))
4708        unknownContent(xpp);
4709      eventType = nextNoWhitespace(xpp);
4710    }
4711    next(xpp);
4712    parseElementClose(res);
4713    return res;
4714  }
4715
4716  protected EligibilityRequest parseEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4717    EligibilityRequest res = new EligibilityRequest();
4718    parseDomainResourceAttributes(xpp, res);
4719    next(xpp);
4720    int eventType = nextNoWhitespace(xpp);
4721    while (eventType != XmlPullParser.END_TAG) {
4722      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4723        res.getIdentifier().add(parseIdentifier(xpp));
4724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
4725        res.setRuleset(parseCoding(xpp));
4726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
4727        res.setOriginalRuleset(parseCoding(xpp));
4728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4729        res.setCreatedElement(parseDateTime(xpp));
4730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
4731        res.setTarget(parseReference(xpp));
4732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4733        res.setProvider(parseReference(xpp));
4734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
4735        res.setOrganization(parseReference(xpp));
4736      } else if (!parseDomainResourceContent(eventType, xpp, res))
4737        unknownContent(xpp);
4738      eventType = nextNoWhitespace(xpp);
4739    }
4740    next(xpp);
4741    parseElementClose(res);
4742    return res;
4743  }
4744
4745  protected EligibilityResponse parseEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4746    EligibilityResponse res = new EligibilityResponse();
4747    parseDomainResourceAttributes(xpp, res);
4748    next(xpp);
4749    int eventType = nextNoWhitespace(xpp);
4750    while (eventType != XmlPullParser.END_TAG) {
4751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4752        res.getIdentifier().add(parseIdentifier(xpp));
4753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4754        res.setRequest(parseReference(xpp));
4755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4756        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
4757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4758        res.setDispositionElement(parseString(xpp));
4759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
4760        res.setRuleset(parseCoding(xpp));
4761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
4762        res.setOriginalRuleset(parseCoding(xpp));
4763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4764        res.setCreatedElement(parseDateTime(xpp));
4765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
4766        res.setOrganization(parseReference(xpp));
4767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
4768        res.setRequestProvider(parseReference(xpp));
4769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
4770        res.setRequestOrganization(parseReference(xpp));
4771      } else if (!parseDomainResourceContent(eventType, xpp, res))
4772        unknownContent(xpp);
4773      eventType = nextNoWhitespace(xpp);
4774    }
4775    next(xpp);
4776    parseElementClose(res);
4777    return res;
4778  }
4779
4780  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4781    Encounter res = new Encounter();
4782    parseDomainResourceAttributes(xpp, res);
4783    next(xpp);
4784    int eventType = nextNoWhitespace(xpp);
4785    while (eventType != XmlPullParser.END_TAG) {
4786      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4787        res.getIdentifier().add(parseIdentifier(xpp));
4788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4789        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterState.NULL, new Encounter.EncounterStateEnumFactory()));
4790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
4791        res.getStatusHistory().add(parseEncounterEncounterStatusHistoryComponent(xpp, res));
4792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
4793        res.setClass_Element(parseEnumeration(xpp, Encounter.EncounterClass.NULL, new Encounter.EncounterClassEnumFactory()));
4794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4795        res.getType().add(parseCodeableConcept(xpp));
4796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4797        res.setPriority(parseCodeableConcept(xpp));
4798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4799        res.setPatient(parseReference(xpp));
4800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
4801        res.getEpisodeOfCare().add(parseReference(xpp));
4802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
4803        res.getIncomingReferral().add(parseReference(xpp));
4804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
4805        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
4806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
4807        res.setAppointment(parseReference(xpp));
4808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4809        res.setPeriod(parsePeriod(xpp));
4810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
4811        res.setLength(parseDuration(xpp));
4812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4813        res.getReason().add(parseCodeableConcept(xpp));
4814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
4815        res.getIndication().add(parseReference(xpp));
4816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
4817        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
4818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
4819        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
4820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
4821        res.setServiceProvider(parseReference(xpp));
4822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4823        res.setPartOf(parseReference(xpp));
4824      } else if (!parseDomainResourceContent(eventType, xpp, res))
4825        unknownContent(xpp);
4826      eventType = nextNoWhitespace(xpp);
4827    }
4828    next(xpp);
4829    parseElementClose(res);
4830    return res;
4831  }
4832
4833  protected Encounter.EncounterStatusHistoryComponent parseEncounterEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
4834    Encounter.EncounterStatusHistoryComponent res = new Encounter.EncounterStatusHistoryComponent();
4835    parseBackboneAttributes(xpp, res);
4836    next(xpp);
4837    int eventType = nextNoWhitespace(xpp);
4838    while (eventType != XmlPullParser.END_TAG) {
4839      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4840        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterState.NULL, new Encounter.EncounterStateEnumFactory()));
4841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4842        res.setPeriod(parsePeriod(xpp));
4843      } else if (!parseBackboneContent(eventType, xpp, res))
4844        unknownContent(xpp);
4845      eventType = nextNoWhitespace(xpp);
4846    }
4847    next(xpp);
4848    parseElementClose(res);
4849    return res;
4850  }
4851
4852  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
4853    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
4854    parseBackboneAttributes(xpp, res);
4855    next(xpp);
4856    int eventType = nextNoWhitespace(xpp);
4857    while (eventType != XmlPullParser.END_TAG) {
4858      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4859        res.getType().add(parseCodeableConcept(xpp));
4860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4861        res.setPeriod(parsePeriod(xpp));
4862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
4863        res.setIndividual(parseReference(xpp));
4864      } else if (!parseBackboneContent(eventType, xpp, res))
4865        unknownContent(xpp);
4866      eventType = nextNoWhitespace(xpp);
4867    }
4868    next(xpp);
4869    parseElementClose(res);
4870    return res;
4871  }
4872
4873  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
4874    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
4875    parseBackboneAttributes(xpp, res);
4876    next(xpp);
4877    int eventType = nextNoWhitespace(xpp);
4878    while (eventType != XmlPullParser.END_TAG) {
4879      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
4880        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
4881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
4882        res.setOrigin(parseReference(xpp));
4883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
4884        res.setAdmitSource(parseCodeableConcept(xpp));
4885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admittingDiagnosis")) {
4886        res.getAdmittingDiagnosis().add(parseReference(xpp));
4887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
4888        res.setReAdmission(parseCodeableConcept(xpp));
4889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
4890        res.getDietPreference().add(parseCodeableConcept(xpp));
4891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
4892        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
4893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
4894        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
4895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
4896        res.setDestination(parseReference(xpp));
4897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
4898        res.setDischargeDisposition(parseCodeableConcept(xpp));
4899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDiagnosis")) {
4900        res.getDischargeDiagnosis().add(parseReference(xpp));
4901      } else if (!parseBackboneContent(eventType, xpp, res))
4902        unknownContent(xpp);
4903      eventType = nextNoWhitespace(xpp);
4904    }
4905    next(xpp);
4906    parseElementClose(res);
4907    return res;
4908  }
4909
4910  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
4911    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
4912    parseBackboneAttributes(xpp, res);
4913    next(xpp);
4914    int eventType = nextNoWhitespace(xpp);
4915    while (eventType != XmlPullParser.END_TAG) {
4916      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
4917        res.setLocation(parseReference(xpp));
4918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4919        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
4920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4921        res.setPeriod(parsePeriod(xpp));
4922      } else if (!parseBackboneContent(eventType, xpp, res))
4923        unknownContent(xpp);
4924      eventType = nextNoWhitespace(xpp);
4925    }
4926    next(xpp);
4927    parseElementClose(res);
4928    return res;
4929  }
4930
4931  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4932    EnrollmentRequest res = new EnrollmentRequest();
4933    parseDomainResourceAttributes(xpp, res);
4934    next(xpp);
4935    int eventType = nextNoWhitespace(xpp);
4936    while (eventType != XmlPullParser.END_TAG) {
4937      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4938        res.getIdentifier().add(parseIdentifier(xpp));
4939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
4940        res.setRuleset(parseCoding(xpp));
4941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
4942        res.setOriginalRuleset(parseCoding(xpp));
4943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4944        res.setCreatedElement(parseDateTime(xpp));
4945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
4946        res.setTarget(parseReference(xpp));
4947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4948        res.setProvider(parseReference(xpp));
4949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
4950        res.setOrganization(parseReference(xpp));
4951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4952        res.setSubject(parseReference(xpp));
4953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4954        res.setCoverage(parseReference(xpp));
4955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
4956        res.setRelationship(parseCoding(xpp));
4957      } else if (!parseDomainResourceContent(eventType, xpp, res))
4958        unknownContent(xpp);
4959      eventType = nextNoWhitespace(xpp);
4960    }
4961    next(xpp);
4962    parseElementClose(res);
4963    return res;
4964  }
4965
4966  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4967    EnrollmentResponse res = new EnrollmentResponse();
4968    parseDomainResourceAttributes(xpp, res);
4969    next(xpp);
4970    int eventType = nextNoWhitespace(xpp);
4971    while (eventType != XmlPullParser.END_TAG) {
4972      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4973        res.getIdentifier().add(parseIdentifier(xpp));
4974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4975        res.setRequest(parseReference(xpp));
4976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4977        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
4978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4979        res.setDispositionElement(parseString(xpp));
4980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
4981        res.setRuleset(parseCoding(xpp));
4982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
4983        res.setOriginalRuleset(parseCoding(xpp));
4984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4985        res.setCreatedElement(parseDateTime(xpp));
4986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
4987        res.setOrganization(parseReference(xpp));
4988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
4989        res.setRequestProvider(parseReference(xpp));
4990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
4991        res.setRequestOrganization(parseReference(xpp));
4992      } else if (!parseDomainResourceContent(eventType, xpp, res))
4993        unknownContent(xpp);
4994      eventType = nextNoWhitespace(xpp);
4995    }
4996    next(xpp);
4997    parseElementClose(res);
4998    return res;
4999  }
5000
5001  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5002    EpisodeOfCare res = new EpisodeOfCare();
5003    parseDomainResourceAttributes(xpp, res);
5004    next(xpp);
5005    int eventType = nextNoWhitespace(xpp);
5006    while (eventType != XmlPullParser.END_TAG) {
5007      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5008        res.getIdentifier().add(parseIdentifier(xpp));
5009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5010        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
5011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
5012        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
5013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5014        res.getType().add(parseCodeableConcept(xpp));
5015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
5016        res.getCondition().add(parseReference(xpp));
5017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5018        res.setPatient(parseReference(xpp));
5019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
5020        res.setManagingOrganization(parseReference(xpp));
5021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5022        res.setPeriod(parsePeriod(xpp));
5023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
5024        res.getReferralRequest().add(parseReference(xpp));
5025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
5026        res.setCareManager(parseReference(xpp));
5027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
5028        res.getCareTeam().add(parseEpisodeOfCareEpisodeOfCareCareTeamComponent(xpp, res));
5029      } else if (!parseDomainResourceContent(eventType, xpp, res))
5030        unknownContent(xpp);
5031      eventType = nextNoWhitespace(xpp);
5032    }
5033    next(xpp);
5034    parseElementClose(res);
5035    return res;
5036  }
5037
5038  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
5039    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
5040    parseBackboneAttributes(xpp, res);
5041    next(xpp);
5042    int eventType = nextNoWhitespace(xpp);
5043    while (eventType != XmlPullParser.END_TAG) {
5044      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5045        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
5046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5047        res.setPeriod(parsePeriod(xpp));
5048      } else if (!parseBackboneContent(eventType, xpp, res))
5049        unknownContent(xpp);
5050      eventType = nextNoWhitespace(xpp);
5051    }
5052    next(xpp);
5053    parseElementClose(res);
5054    return res;
5055  }
5056
5057  protected EpisodeOfCare.EpisodeOfCareCareTeamComponent parseEpisodeOfCareEpisodeOfCareCareTeamComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
5058    EpisodeOfCare.EpisodeOfCareCareTeamComponent res = new EpisodeOfCare.EpisodeOfCareCareTeamComponent();
5059    parseBackboneAttributes(xpp, res);
5060    next(xpp);
5061    int eventType = nextNoWhitespace(xpp);
5062    while (eventType != XmlPullParser.END_TAG) {
5063      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5064        res.getRole().add(parseCodeableConcept(xpp));
5065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5066        res.setPeriod(parsePeriod(xpp));
5067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
5068        res.setMember(parseReference(xpp));
5069      } else if (!parseBackboneContent(eventType, xpp, res))
5070        unknownContent(xpp);
5071      eventType = nextNoWhitespace(xpp);
5072    }
5073    next(xpp);
5074    parseElementClose(res);
5075    return res;
5076  }
5077
5078  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5079    ExplanationOfBenefit res = new ExplanationOfBenefit();
5080    parseDomainResourceAttributes(xpp, res);
5081    next(xpp);
5082    int eventType = nextNoWhitespace(xpp);
5083    while (eventType != XmlPullParser.END_TAG) {
5084      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5085        res.getIdentifier().add(parseIdentifier(xpp));
5086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
5087        res.setRequest(parseReference(xpp));
5088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5089        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
5090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
5091        res.setDispositionElement(parseString(xpp));
5092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
5093        res.setRuleset(parseCoding(xpp));
5094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
5095        res.setOriginalRuleset(parseCoding(xpp));
5096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5097        res.setCreatedElement(parseDateTime(xpp));
5098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5099        res.setOrganization(parseReference(xpp));
5100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
5101        res.setRequestProvider(parseReference(xpp));
5102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
5103        res.setRequestOrganization(parseReference(xpp));
5104      } else if (!parseDomainResourceContent(eventType, xpp, res))
5105        unknownContent(xpp);
5106      eventType = nextNoWhitespace(xpp);
5107    }
5108    next(xpp);
5109    parseElementClose(res);
5110    return res;
5111  }
5112
5113  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5114    FamilyMemberHistory res = new FamilyMemberHistory();
5115    parseDomainResourceAttributes(xpp, res);
5116    next(xpp);
5117    int eventType = nextNoWhitespace(xpp);
5118    while (eventType != XmlPullParser.END_TAG) {
5119      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5120        res.getIdentifier().add(parseIdentifier(xpp));
5121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5122        res.setPatient(parseReference(xpp));
5123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5124        res.setDateElement(parseDateTime(xpp));
5125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5126        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
5127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5128        res.setNameElement(parseString(xpp));
5129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
5130        res.setRelationship(parseCodeableConcept(xpp));
5131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
5132        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
5133      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
5134        res.setBorn(parseType("born", xpp));
5135      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
5136        res.setAge(parseType("age", xpp));
5137      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
5138        res.setDeceased(parseType("deceased", xpp));
5139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5140        res.setNote(parseAnnotation(xpp));
5141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
5142        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
5143      } else if (!parseDomainResourceContent(eventType, xpp, res))
5144        unknownContent(xpp);
5145      eventType = nextNoWhitespace(xpp);
5146    }
5147    next(xpp);
5148    parseElementClose(res);
5149    return res;
5150  }
5151
5152  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
5153    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
5154    parseBackboneAttributes(xpp, res);
5155    next(xpp);
5156    int eventType = nextNoWhitespace(xpp);
5157    while (eventType != XmlPullParser.END_TAG) {
5158      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5159        res.setCode(parseCodeableConcept(xpp));
5160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5161        res.setOutcome(parseCodeableConcept(xpp));
5162      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
5163        res.setOnset(parseType("onset", xpp));
5164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5165        res.setNote(parseAnnotation(xpp));
5166      } else if (!parseBackboneContent(eventType, xpp, res))
5167        unknownContent(xpp);
5168      eventType = nextNoWhitespace(xpp);
5169    }
5170    next(xpp);
5171    parseElementClose(res);
5172    return res;
5173  }
5174
5175  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5176    Flag res = new Flag();
5177    parseDomainResourceAttributes(xpp, res);
5178    next(xpp);
5179    int eventType = nextNoWhitespace(xpp);
5180    while (eventType != XmlPullParser.END_TAG) {
5181      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5182        res.getIdentifier().add(parseIdentifier(xpp));
5183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5184        res.setCategory(parseCodeableConcept(xpp));
5185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5186        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
5187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5188        res.setPeriod(parsePeriod(xpp));
5189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5190        res.setSubject(parseReference(xpp));
5191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5192        res.setEncounter(parseReference(xpp));
5193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5194        res.setAuthor(parseReference(xpp));
5195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5196        res.setCode(parseCodeableConcept(xpp));
5197      } else if (!parseDomainResourceContent(eventType, xpp, res))
5198        unknownContent(xpp);
5199      eventType = nextNoWhitespace(xpp);
5200    }
5201    next(xpp);
5202    parseElementClose(res);
5203    return res;
5204  }
5205
5206  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5207    Goal res = new Goal();
5208    parseDomainResourceAttributes(xpp, res);
5209    next(xpp);
5210    int eventType = nextNoWhitespace(xpp);
5211    while (eventType != XmlPullParser.END_TAG) {
5212      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5213        res.getIdentifier().add(parseIdentifier(xpp));
5214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5215        res.setSubject(parseReference(xpp));
5216      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
5217        res.setStart(parseType("start", xpp));
5218      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5219        res.setTarget(parseType("target", xpp));
5220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5221        res.getCategory().add(parseCodeableConcept(xpp));
5222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5223        res.setDescriptionElement(parseString(xpp));
5224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5225        res.setStatusElement(parseEnumeration(xpp, Goal.GoalStatus.NULL, new Goal.GoalStatusEnumFactory()));
5226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
5227        res.setStatusDateElement(parseDate(xpp));
5228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5229        res.setStatusReason(parseCodeableConcept(xpp));
5230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5231        res.setAuthor(parseReference(xpp));
5232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5233        res.setPriority(parseCodeableConcept(xpp));
5234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
5235        res.getAddresses().add(parseReference(xpp));
5236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5237        res.getNote().add(parseAnnotation(xpp));
5238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5239        res.getOutcome().add(parseGoalGoalOutcomeComponent(xpp, res));
5240      } else if (!parseDomainResourceContent(eventType, xpp, res))
5241        unknownContent(xpp);
5242      eventType = nextNoWhitespace(xpp);
5243    }
5244    next(xpp);
5245    parseElementClose(res);
5246    return res;
5247  }
5248
5249  protected Goal.GoalOutcomeComponent parseGoalGoalOutcomeComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
5250    Goal.GoalOutcomeComponent res = new Goal.GoalOutcomeComponent();
5251    parseBackboneAttributes(xpp, res);
5252    next(xpp);
5253    int eventType = nextNoWhitespace(xpp);
5254    while (eventType != XmlPullParser.END_TAG) {
5255      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "result")) {
5256        res.setResult(parseType("result", xpp));
5257      } else if (!parseBackboneContent(eventType, xpp, res))
5258        unknownContent(xpp);
5259      eventType = nextNoWhitespace(xpp);
5260    }
5261    next(xpp);
5262    parseElementClose(res);
5263    return res;
5264  }
5265
5266  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5267    Group res = new Group();
5268    parseDomainResourceAttributes(xpp, res);
5269    next(xpp);
5270    int eventType = nextNoWhitespace(xpp);
5271    while (eventType != XmlPullParser.END_TAG) {
5272      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5273        res.getIdentifier().add(parseIdentifier(xpp));
5274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5275        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
5276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
5277        res.setActualElement(parseBoolean(xpp));
5278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5279        res.setCode(parseCodeableConcept(xpp));
5280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5281        res.setNameElement(parseString(xpp));
5282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5283        res.setQuantityElement(parseUnsignedInt(xpp));
5284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
5285        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
5286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
5287        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
5288      } else if (!parseDomainResourceContent(eventType, xpp, res))
5289        unknownContent(xpp);
5290      eventType = nextNoWhitespace(xpp);
5291    }
5292    next(xpp);
5293    parseElementClose(res);
5294    return res;
5295  }
5296
5297  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
5298    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
5299    parseBackboneAttributes(xpp, res);
5300    next(xpp);
5301    int eventType = nextNoWhitespace(xpp);
5302    while (eventType != XmlPullParser.END_TAG) {
5303      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5304        res.setCode(parseCodeableConcept(xpp));
5305      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
5306        res.setValue(parseType("value", xpp));
5307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
5308        res.setExcludeElement(parseBoolean(xpp));
5309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5310        res.setPeriod(parsePeriod(xpp));
5311      } else if (!parseBackboneContent(eventType, xpp, res))
5312        unknownContent(xpp);
5313      eventType = nextNoWhitespace(xpp);
5314    }
5315    next(xpp);
5316    parseElementClose(res);
5317    return res;
5318  }
5319
5320  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
5321    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
5322    parseBackboneAttributes(xpp, res);
5323    next(xpp);
5324    int eventType = nextNoWhitespace(xpp);
5325    while (eventType != XmlPullParser.END_TAG) {
5326      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
5327        res.setEntity(parseReference(xpp));
5328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5329        res.setPeriod(parsePeriod(xpp));
5330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
5331        res.setInactiveElement(parseBoolean(xpp));
5332      } else if (!parseBackboneContent(eventType, xpp, res))
5333        unknownContent(xpp);
5334      eventType = nextNoWhitespace(xpp);
5335    }
5336    next(xpp);
5337    parseElementClose(res);
5338    return res;
5339  }
5340
5341  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5342    HealthcareService res = new HealthcareService();
5343    parseDomainResourceAttributes(xpp, res);
5344    next(xpp);
5345    int eventType = nextNoWhitespace(xpp);
5346    while (eventType != XmlPullParser.END_TAG) {
5347      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5348        res.getIdentifier().add(parseIdentifier(xpp));
5349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
5350        res.setProvidedBy(parseReference(xpp));
5351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
5352        res.setServiceCategory(parseCodeableConcept(xpp));
5353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
5354        res.getServiceType().add(parseHealthcareServiceServiceTypeComponent(xpp, res));
5355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
5356        res.setLocation(parseReference(xpp));
5357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceName")) {
5358        res.setServiceNameElement(parseString(xpp));
5359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
5360        res.setCommentElement(parseString(xpp));
5361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
5362        res.setExtraDetailsElement(parseString(xpp));
5363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
5364        res.setPhoto(parseAttachment(xpp));
5365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
5366        res.getTelecom().add(parseContactPoint(xpp));
5367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
5368        res.getCoverageArea().add(parseReference(xpp));
5369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
5370        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
5371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
5372        res.setEligibility(parseCodeableConcept(xpp));
5373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibilityNote")) {
5374        res.setEligibilityNoteElement(parseString(xpp));
5375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programName")) {
5376        res.getProgramName().add(parseString(xpp));
5377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
5378        res.getCharacteristic().add(parseCodeableConcept(xpp));
5379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
5380        res.getReferralMethod().add(parseCodeableConcept(xpp));
5381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicKey")) {
5382        res.setPublicKeyElement(parseString(xpp));
5383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
5384        res.setAppointmentRequiredElement(parseBoolean(xpp));
5385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
5386        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
5387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
5388        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
5389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
5390        res.setAvailabilityExceptionsElement(parseString(xpp));
5391      } else if (!parseDomainResourceContent(eventType, xpp, res))
5392        unknownContent(xpp);
5393      eventType = nextNoWhitespace(xpp);
5394    }
5395    next(xpp);
5396    parseElementClose(res);
5397    return res;
5398  }
5399
5400  protected HealthcareService.ServiceTypeComponent parseHealthcareServiceServiceTypeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
5401    HealthcareService.ServiceTypeComponent res = new HealthcareService.ServiceTypeComponent();
5402    parseBackboneAttributes(xpp, res);
5403    next(xpp);
5404    int eventType = nextNoWhitespace(xpp);
5405    while (eventType != XmlPullParser.END_TAG) {
5406      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5407        res.setType(parseCodeableConcept(xpp));
5408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
5409        res.getSpecialty().add(parseCodeableConcept(xpp));
5410      } else if (!parseBackboneContent(eventType, xpp, res))
5411        unknownContent(xpp);
5412      eventType = nextNoWhitespace(xpp);
5413    }
5414    next(xpp);
5415    parseElementClose(res);
5416    return res;
5417  }
5418
5419  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
5420    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
5421    parseBackboneAttributes(xpp, res);
5422    next(xpp);
5423    int eventType = nextNoWhitespace(xpp);
5424    while (eventType != XmlPullParser.END_TAG) {
5425      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
5426        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
5427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
5428        res.setAllDayElement(parseBoolean(xpp));
5429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
5430        res.setAvailableStartTimeElement(parseTime(xpp));
5431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
5432        res.setAvailableEndTimeElement(parseTime(xpp));
5433      } else if (!parseBackboneContent(eventType, xpp, res))
5434        unknownContent(xpp);
5435      eventType = nextNoWhitespace(xpp);
5436    }
5437    next(xpp);
5438    parseElementClose(res);
5439    return res;
5440  }
5441
5442  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
5443    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
5444    parseBackboneAttributes(xpp, res);
5445    next(xpp);
5446    int eventType = nextNoWhitespace(xpp);
5447    while (eventType != XmlPullParser.END_TAG) {
5448      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5449        res.setDescriptionElement(parseString(xpp));
5450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
5451        res.setDuring(parsePeriod(xpp));
5452      } else if (!parseBackboneContent(eventType, xpp, res))
5453        unknownContent(xpp);
5454      eventType = nextNoWhitespace(xpp);
5455    }
5456    next(xpp);
5457    parseElementClose(res);
5458    return res;
5459  }
5460
5461  protected ImagingObjectSelection parseImagingObjectSelection(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5462    ImagingObjectSelection res = new ImagingObjectSelection();
5463    parseDomainResourceAttributes(xpp, res);
5464    next(xpp);
5465    int eventType = nextNoWhitespace(xpp);
5466    while (eventType != XmlPullParser.END_TAG) {
5467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5468        res.setUidElement(parseOid(xpp));
5469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5470        res.setPatient(parseReference(xpp));
5471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5472        res.setTitle(parseCodeableConcept(xpp));
5473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5474        res.setDescriptionElement(parseString(xpp));
5475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5476        res.setAuthor(parseReference(xpp));
5477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoringTime")) {
5478        res.setAuthoringTimeElement(parseDateTime(xpp));
5479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
5480        res.getStudy().add(parseImagingObjectSelectionStudyComponent(xpp, res));
5481      } else if (!parseDomainResourceContent(eventType, xpp, res))
5482        unknownContent(xpp);
5483      eventType = nextNoWhitespace(xpp);
5484    }
5485    next(xpp);
5486    parseElementClose(res);
5487    return res;
5488  }
5489
5490  protected ImagingObjectSelection.StudyComponent parseImagingObjectSelectionStudyComponent(XmlPullParser xpp, ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
5491    ImagingObjectSelection.StudyComponent res = new ImagingObjectSelection.StudyComponent();
5492    parseBackboneAttributes(xpp, res);
5493    next(xpp);
5494    int eventType = nextNoWhitespace(xpp);
5495    while (eventType != XmlPullParser.END_TAG) {
5496      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5497        res.setUidElement(parseOid(xpp));
5498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5499        res.setUrlElement(parseUri(xpp));
5500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
5501        res.setImagingStudy(parseReference(xpp));
5502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
5503        res.getSeries().add(parseImagingObjectSelectionSeriesComponent(xpp, owner));
5504      } else if (!parseBackboneContent(eventType, xpp, res))
5505        unknownContent(xpp);
5506      eventType = nextNoWhitespace(xpp);
5507    }
5508    next(xpp);
5509    parseElementClose(res);
5510    return res;
5511  }
5512
5513  protected ImagingObjectSelection.SeriesComponent parseImagingObjectSelectionSeriesComponent(XmlPullParser xpp, ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
5514    ImagingObjectSelection.SeriesComponent res = new ImagingObjectSelection.SeriesComponent();
5515    parseBackboneAttributes(xpp, res);
5516    next(xpp);
5517    int eventType = nextNoWhitespace(xpp);
5518    while (eventType != XmlPullParser.END_TAG) {
5519      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5520        res.setUidElement(parseOid(xpp));
5521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5522        res.setUrlElement(parseUri(xpp));
5523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
5524        res.getInstance().add(parseImagingObjectSelectionInstanceComponent(xpp, owner));
5525      } else if (!parseBackboneContent(eventType, xpp, res))
5526        unknownContent(xpp);
5527      eventType = nextNoWhitespace(xpp);
5528    }
5529    next(xpp);
5530    parseElementClose(res);
5531    return res;
5532  }
5533
5534  protected ImagingObjectSelection.InstanceComponent parseImagingObjectSelectionInstanceComponent(XmlPullParser xpp, ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
5535    ImagingObjectSelection.InstanceComponent res = new ImagingObjectSelection.InstanceComponent();
5536    parseBackboneAttributes(xpp, res);
5537    next(xpp);
5538    int eventType = nextNoWhitespace(xpp);
5539    while (eventType != XmlPullParser.END_TAG) {
5540      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
5541        res.setSopClassElement(parseOid(xpp));
5542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5543        res.setUidElement(parseOid(xpp));
5544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5545        res.setUrlElement(parseUri(xpp));
5546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
5547        res.getFrames().add(parseImagingObjectSelectionFramesComponent(xpp, owner));
5548      } else if (!parseBackboneContent(eventType, xpp, res))
5549        unknownContent(xpp);
5550      eventType = nextNoWhitespace(xpp);
5551    }
5552    next(xpp);
5553    parseElementClose(res);
5554    return res;
5555  }
5556
5557  protected ImagingObjectSelection.FramesComponent parseImagingObjectSelectionFramesComponent(XmlPullParser xpp, ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
5558    ImagingObjectSelection.FramesComponent res = new ImagingObjectSelection.FramesComponent();
5559    parseBackboneAttributes(xpp, res);
5560    next(xpp);
5561    int eventType = nextNoWhitespace(xpp);
5562    while (eventType != XmlPullParser.END_TAG) {
5563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frameNumbers")) {
5564        res.getFrameNumbers().add(parseUnsignedInt(xpp));
5565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5566        res.setUrlElement(parseUri(xpp));
5567      } else if (!parseBackboneContent(eventType, xpp, res))
5568        unknownContent(xpp);
5569      eventType = nextNoWhitespace(xpp);
5570    }
5571    next(xpp);
5572    parseElementClose(res);
5573    return res;
5574  }
5575
5576  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5577    ImagingStudy res = new ImagingStudy();
5578    parseDomainResourceAttributes(xpp, res);
5579    next(xpp);
5580    int eventType = nextNoWhitespace(xpp);
5581    while (eventType != XmlPullParser.END_TAG) {
5582      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
5583        res.setStartedElement(parseDateTime(xpp));
5584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5585        res.setPatient(parseReference(xpp));
5586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5587        res.setUidElement(parseOid(xpp));
5588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accession")) {
5589        res.setAccession(parseIdentifier(xpp));
5590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5591        res.getIdentifier().add(parseIdentifier(xpp));
5592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
5593        res.getOrder().add(parseReference(xpp));
5594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modalityList")) {
5595        res.getModalityList().add(parseCoding(xpp));
5596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
5597        res.setReferrer(parseReference(xpp));
5598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
5599        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
5600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5601        res.setUrlElement(parseUri(xpp));
5602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
5603        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
5604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
5605        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
5606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
5607        res.getProcedure().add(parseReference(xpp));
5608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
5609        res.setInterpreter(parseReference(xpp));
5610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5611        res.setDescriptionElement(parseString(xpp));
5612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
5613        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
5614      } else if (!parseDomainResourceContent(eventType, xpp, res))
5615        unknownContent(xpp);
5616      eventType = nextNoWhitespace(xpp);
5617    }
5618    next(xpp);
5619    parseElementClose(res);
5620    return res;
5621  }
5622
5623  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
5624    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
5625    parseBackboneAttributes(xpp, res);
5626    next(xpp);
5627    int eventType = nextNoWhitespace(xpp);
5628    while (eventType != XmlPullParser.END_TAG) {
5629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
5630        res.setNumberElement(parseUnsignedInt(xpp));
5631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
5632        res.setModality(parseCoding(xpp));
5633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5634        res.setUidElement(parseOid(xpp));
5635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5636        res.setDescriptionElement(parseString(xpp));
5637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
5638        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
5639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
5640        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
5641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5642        res.setUrlElement(parseUri(xpp));
5643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5644        res.setBodySite(parseCoding(xpp));
5645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
5646        res.setLaterality(parseCoding(xpp));
5647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
5648        res.setStartedElement(parseDateTime(xpp));
5649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
5650        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
5651      } else if (!parseBackboneContent(eventType, xpp, res))
5652        unknownContent(xpp);
5653      eventType = nextNoWhitespace(xpp);
5654    }
5655    next(xpp);
5656    parseElementClose(res);
5657    return res;
5658  }
5659
5660  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
5661    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
5662    parseBackboneAttributes(xpp, res);
5663    next(xpp);
5664    int eventType = nextNoWhitespace(xpp);
5665    while (eventType != XmlPullParser.END_TAG) {
5666      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
5667        res.setNumberElement(parseUnsignedInt(xpp));
5668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5669        res.setUidElement(parseOid(xpp));
5670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
5671        res.setSopClassElement(parseOid(xpp));
5672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5673        res.setTypeElement(parseString(xpp));
5674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5675        res.setTitleElement(parseString(xpp));
5676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5677        res.getContent().add(parseAttachment(xpp));
5678      } else if (!parseBackboneContent(eventType, xpp, res))
5679        unknownContent(xpp);
5680      eventType = nextNoWhitespace(xpp);
5681    }
5682    next(xpp);
5683    parseElementClose(res);
5684    return res;
5685  }
5686
5687  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5688    Immunization res = new Immunization();
5689    parseDomainResourceAttributes(xpp, res);
5690    next(xpp);
5691    int eventType = nextNoWhitespace(xpp);
5692    while (eventType != XmlPullParser.END_TAG) {
5693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5694        res.getIdentifier().add(parseIdentifier(xpp));
5695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5696        res.setStatusElement(parseCode(xpp));
5697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5698        res.setDateElement(parseDateTime(xpp));
5699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
5700        res.setVaccineCode(parseCodeableConcept(xpp));
5701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5702        res.setPatient(parseReference(xpp));
5703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotGiven")) {
5704        res.setWasNotGivenElement(parseBoolean(xpp));
5705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
5706        res.setReportedElement(parseBoolean(xpp));
5707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
5708        res.setPerformer(parseReference(xpp));
5709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
5710        res.setRequester(parseReference(xpp));
5711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5712        res.setEncounter(parseReference(xpp));
5713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
5714        res.setManufacturer(parseReference(xpp));
5715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
5716        res.setLocation(parseReference(xpp));
5717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
5718        res.setLotNumberElement(parseString(xpp));
5719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
5720        res.setExpirationDateElement(parseDate(xpp));
5721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
5722        res.setSite(parseCodeableConcept(xpp));
5723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
5724        res.setRoute(parseCodeableConcept(xpp));
5725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
5726        res.setDoseQuantity(parseSimpleQuantity(xpp));
5727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5728        res.getNote().add(parseAnnotation(xpp));
5729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("explanation")) {
5730        res.setExplanation(parseImmunizationImmunizationExplanationComponent(xpp, res));
5731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
5732        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
5733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccinationProtocol")) {
5734        res.getVaccinationProtocol().add(parseImmunizationImmunizationVaccinationProtocolComponent(xpp, res));
5735      } else if (!parseDomainResourceContent(eventType, xpp, res))
5736        unknownContent(xpp);
5737      eventType = nextNoWhitespace(xpp);
5738    }
5739    next(xpp);
5740    parseElementClose(res);
5741    return res;
5742  }
5743
5744  protected Immunization.ImmunizationExplanationComponent parseImmunizationImmunizationExplanationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
5745    Immunization.ImmunizationExplanationComponent res = new Immunization.ImmunizationExplanationComponent();
5746    parseBackboneAttributes(xpp, res);
5747    next(xpp);
5748    int eventType = nextNoWhitespace(xpp);
5749    while (eventType != XmlPullParser.END_TAG) {
5750      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5751        res.getReason().add(parseCodeableConcept(xpp));
5752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
5753        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
5754      } else if (!parseBackboneContent(eventType, xpp, res))
5755        unknownContent(xpp);
5756      eventType = nextNoWhitespace(xpp);
5757    }
5758    next(xpp);
5759    parseElementClose(res);
5760    return res;
5761  }
5762
5763  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
5764    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
5765    parseBackboneAttributes(xpp, res);
5766    next(xpp);
5767    int eventType = nextNoWhitespace(xpp);
5768    while (eventType != XmlPullParser.END_TAG) {
5769      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5770        res.setDateElement(parseDateTime(xpp));
5771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5772        res.setDetail(parseReference(xpp));
5773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
5774        res.setReportedElement(parseBoolean(xpp));
5775      } else if (!parseBackboneContent(eventType, xpp, res))
5776        unknownContent(xpp);
5777      eventType = nextNoWhitespace(xpp);
5778    }
5779    next(xpp);
5780    parseElementClose(res);
5781    return res;
5782  }
5783
5784  protected Immunization.ImmunizationVaccinationProtocolComponent parseImmunizationImmunizationVaccinationProtocolComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
5785    Immunization.ImmunizationVaccinationProtocolComponent res = new Immunization.ImmunizationVaccinationProtocolComponent();
5786    parseBackboneAttributes(xpp, res);
5787    next(xpp);
5788    int eventType = nextNoWhitespace(xpp);
5789    while (eventType != XmlPullParser.END_TAG) {
5790      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
5791        res.setDoseSequenceElement(parsePositiveInt(xpp));
5792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5793        res.setDescriptionElement(parseString(xpp));
5794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
5795        res.setAuthority(parseReference(xpp));
5796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
5797        res.setSeriesElement(parseString(xpp));
5798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
5799        res.setSeriesDosesElement(parsePositiveInt(xpp));
5800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
5801        res.getTargetDisease().add(parseCodeableConcept(xpp));
5802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
5803        res.setDoseStatus(parseCodeableConcept(xpp));
5804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
5805        res.setDoseStatusReason(parseCodeableConcept(xpp));
5806      } else if (!parseBackboneContent(eventType, xpp, res))
5807        unknownContent(xpp);
5808      eventType = nextNoWhitespace(xpp);
5809    }
5810    next(xpp);
5811    parseElementClose(res);
5812    return res;
5813  }
5814
5815  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5816    ImmunizationRecommendation res = new ImmunizationRecommendation();
5817    parseDomainResourceAttributes(xpp, res);
5818    next(xpp);
5819    int eventType = nextNoWhitespace(xpp);
5820    while (eventType != XmlPullParser.END_TAG) {
5821      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5822        res.getIdentifier().add(parseIdentifier(xpp));
5823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5824        res.setPatient(parseReference(xpp));
5825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
5826        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
5827      } else if (!parseDomainResourceContent(eventType, xpp, res))
5828        unknownContent(xpp);
5829      eventType = nextNoWhitespace(xpp);
5830    }
5831    next(xpp);
5832    parseElementClose(res);
5833    return res;
5834  }
5835
5836  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
5837    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
5838    parseBackboneAttributes(xpp, res);
5839    next(xpp);
5840    int eventType = nextNoWhitespace(xpp);
5841    while (eventType != XmlPullParser.END_TAG) {
5842      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5843        res.setDateElement(parseDateTime(xpp));
5844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
5845        res.setVaccineCode(parseCodeableConcept(xpp));
5846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
5847        res.setDoseNumberElement(parsePositiveInt(xpp));
5848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
5849        res.setForecastStatus(parseCodeableConcept(xpp));
5850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
5851        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
5852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
5853        res.setProtocol(parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(xpp, owner));
5854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
5855        res.getSupportingImmunization().add(parseReference(xpp));
5856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
5857        res.getSupportingPatientInformation().add(parseReference(xpp));
5858      } else if (!parseBackboneContent(eventType, xpp, res))
5859        unknownContent(xpp);
5860      eventType = nextNoWhitespace(xpp);
5861    }
5862    next(xpp);
5863    parseElementClose(res);
5864    return res;
5865  }
5866
5867  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
5868    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
5869    parseBackboneAttributes(xpp, res);
5870    next(xpp);
5871    int eventType = nextNoWhitespace(xpp);
5872    while (eventType != XmlPullParser.END_TAG) {
5873      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5874        res.setCode(parseCodeableConcept(xpp));
5875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5876        res.setValueElement(parseDateTime(xpp));
5877      } else if (!parseBackboneContent(eventType, xpp, res))
5878        unknownContent(xpp);
5879      eventType = nextNoWhitespace(xpp);
5880    }
5881    next(xpp);
5882    parseElementClose(res);
5883    return res;
5884  }
5885
5886  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
5887    ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent();
5888    parseBackboneAttributes(xpp, res);
5889    next(xpp);
5890    int eventType = nextNoWhitespace(xpp);
5891    while (eventType != XmlPullParser.END_TAG) {
5892      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
5893        res.setDoseSequenceElement(parseInteger(xpp));
5894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5895        res.setDescriptionElement(parseString(xpp));
5896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
5897        res.setAuthority(parseReference(xpp));
5898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
5899        res.setSeriesElement(parseString(xpp));
5900      } else if (!parseBackboneContent(eventType, xpp, res))
5901        unknownContent(xpp);
5902      eventType = nextNoWhitespace(xpp);
5903    }
5904    next(xpp);
5905    parseElementClose(res);
5906    return res;
5907  }
5908
5909  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5910    ImplementationGuide res = new ImplementationGuide();
5911    parseDomainResourceAttributes(xpp, res);
5912    next(xpp);
5913    int eventType = nextNoWhitespace(xpp);
5914    while (eventType != XmlPullParser.END_TAG) {
5915      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5916        res.setUrlElement(parseUri(xpp));
5917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5918        res.setVersionElement(parseString(xpp));
5919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5920        res.setNameElement(parseString(xpp));
5921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5922        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
5923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5924        res.setExperimentalElement(parseBoolean(xpp));
5925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5926        res.setPublisherElement(parseString(xpp));
5927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5928        res.getContact().add(parseImplementationGuideImplementationGuideContactComponent(xpp, res));
5929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5930        res.setDateElement(parseDateTime(xpp));
5931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5932        res.setDescriptionElement(parseString(xpp));
5933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5934        res.getUseContext().add(parseCodeableConcept(xpp));
5935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5936        res.setCopyrightElement(parseString(xpp));
5937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
5938        res.setFhirVersionElement(parseId(xpp));
5939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependency")) {
5940        res.getDependency().add(parseImplementationGuideImplementationGuideDependencyComponent(xpp, res));
5941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
5942        res.getPackage().add(parseImplementationGuideImplementationGuidePackageComponent(xpp, res));
5943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
5944        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
5945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binary")) {
5946        res.getBinary().add(parseUri(xpp));
5947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
5948        res.setPage(parseImplementationGuideImplementationGuidePageComponent(xpp, res));
5949      } else if (!parseDomainResourceContent(eventType, xpp, res))
5950        unknownContent(xpp);
5951      eventType = nextNoWhitespace(xpp);
5952    }
5953    next(xpp);
5954    parseElementClose(res);
5955    return res;
5956  }
5957
5958  protected ImplementationGuide.ImplementationGuideContactComponent parseImplementationGuideImplementationGuideContactComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
5959    ImplementationGuide.ImplementationGuideContactComponent res = new ImplementationGuide.ImplementationGuideContactComponent();
5960    parseBackboneAttributes(xpp, res);
5961    next(xpp);
5962    int eventType = nextNoWhitespace(xpp);
5963    while (eventType != XmlPullParser.END_TAG) {
5964      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5965        res.setNameElement(parseString(xpp));
5966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
5967        res.getTelecom().add(parseContactPoint(xpp));
5968      } else if (!parseBackboneContent(eventType, xpp, res))
5969        unknownContent(xpp);
5970      eventType = nextNoWhitespace(xpp);
5971    }
5972    next(xpp);
5973    parseElementClose(res);
5974    return res;
5975  }
5976
5977  protected ImplementationGuide.ImplementationGuideDependencyComponent parseImplementationGuideImplementationGuideDependencyComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
5978    ImplementationGuide.ImplementationGuideDependencyComponent res = new ImplementationGuide.ImplementationGuideDependencyComponent();
5979    parseBackboneAttributes(xpp, res);
5980    next(xpp);
5981    int eventType = nextNoWhitespace(xpp);
5982    while (eventType != XmlPullParser.END_TAG) {
5983      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5984        res.setTypeElement(parseEnumeration(xpp, ImplementationGuide.GuideDependencyType.NULL, new ImplementationGuide.GuideDependencyTypeEnumFactory()));
5985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5986        res.setUriElement(parseUri(xpp));
5987      } else if (!parseBackboneContent(eventType, xpp, res))
5988        unknownContent(xpp);
5989      eventType = nextNoWhitespace(xpp);
5990    }
5991    next(xpp);
5992    parseElementClose(res);
5993    return res;
5994  }
5995
5996  protected ImplementationGuide.ImplementationGuidePackageComponent parseImplementationGuideImplementationGuidePackageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
5997    ImplementationGuide.ImplementationGuidePackageComponent res = new ImplementationGuide.ImplementationGuidePackageComponent();
5998    parseBackboneAttributes(xpp, res);
5999    next(xpp);
6000    int eventType = nextNoWhitespace(xpp);
6001    while (eventType != XmlPullParser.END_TAG) {
6002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6003        res.setNameElement(parseString(xpp));
6004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6005        res.setDescriptionElement(parseString(xpp));
6006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
6007        res.getResource().add(parseImplementationGuideImplementationGuidePackageResourceComponent(xpp, owner));
6008      } else if (!parseBackboneContent(eventType, xpp, res))
6009        unknownContent(xpp);
6010      eventType = nextNoWhitespace(xpp);
6011    }
6012    next(xpp);
6013    parseElementClose(res);
6014    return res;
6015  }
6016
6017  protected ImplementationGuide.ImplementationGuidePackageResourceComponent parseImplementationGuideImplementationGuidePackageResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6018    ImplementationGuide.ImplementationGuidePackageResourceComponent res = new ImplementationGuide.ImplementationGuidePackageResourceComponent();
6019    parseBackboneAttributes(xpp, res);
6020    next(xpp);
6021    int eventType = nextNoWhitespace(xpp);
6022    while (eventType != XmlPullParser.END_TAG) {
6023      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6024        res.setPurposeElement(parseEnumeration(xpp, ImplementationGuide.GuideResourcePurpose.NULL, new ImplementationGuide.GuideResourcePurposeEnumFactory()));
6025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6026        res.setNameElement(parseString(xpp));
6027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6028        res.setDescriptionElement(parseString(xpp));
6029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acronym")) {
6030        res.setAcronymElement(parseString(xpp));
6031      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6032        res.setSource(parseType("source", xpp));
6033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exampleFor")) {
6034        res.setExampleFor(parseReference(xpp));
6035      } else if (!parseBackboneContent(eventType, xpp, res))
6036        unknownContent(xpp);
6037      eventType = nextNoWhitespace(xpp);
6038    }
6039    next(xpp);
6040    parseElementClose(res);
6041    return res;
6042  }
6043
6044  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6045    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
6046    parseBackboneAttributes(xpp, res);
6047    next(xpp);
6048    int eventType = nextNoWhitespace(xpp);
6049    while (eventType != XmlPullParser.END_TAG) {
6050      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6051        res.setTypeElement(parseCode(xpp));
6052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
6053        res.setProfile(parseReference(xpp));
6054      } else if (!parseBackboneContent(eventType, xpp, res))
6055        unknownContent(xpp);
6056      eventType = nextNoWhitespace(xpp);
6057    }
6058    next(xpp);
6059    parseElementClose(res);
6060    return res;
6061  }
6062
6063  protected ImplementationGuide.ImplementationGuidePageComponent parseImplementationGuideImplementationGuidePageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6064    ImplementationGuide.ImplementationGuidePageComponent res = new ImplementationGuide.ImplementationGuidePageComponent();
6065    parseBackboneAttributes(xpp, res);
6066    next(xpp);
6067    int eventType = nextNoWhitespace(xpp);
6068    while (eventType != XmlPullParser.END_TAG) {
6069      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6070        res.setSourceElement(parseUri(xpp));
6071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6072        res.setNameElement(parseString(xpp));
6073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
6074        res.setKindElement(parseEnumeration(xpp, ImplementationGuide.GuidePageKind.NULL, new ImplementationGuide.GuidePageKindEnumFactory()));
6075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6076        res.getType().add(parseCode(xpp));
6077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
6078        res.getPackage().add(parseString(xpp));
6079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
6080        res.setFormatElement(parseCode(xpp));
6081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
6082        res.getPage().add(parseImplementationGuideImplementationGuidePageComponent(xpp, owner));
6083      } else if (!parseBackboneContent(eventType, xpp, res))
6084        unknownContent(xpp);
6085      eventType = nextNoWhitespace(xpp);
6086    }
6087    next(xpp);
6088    parseElementClose(res);
6089    return res;
6090  }
6091
6092  protected List_ parseList_(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6093    List_ res = new List_();
6094    parseDomainResourceAttributes(xpp, res);
6095    next(xpp);
6096    int eventType = nextNoWhitespace(xpp);
6097    while (eventType != XmlPullParser.END_TAG) {
6098      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6099        res.getIdentifier().add(parseIdentifier(xpp));
6100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6101        res.setTitleElement(parseString(xpp));
6102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6103        res.setCode(parseCodeableConcept(xpp));
6104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6105        res.setSubject(parseReference(xpp));
6106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6107        res.setSource(parseReference(xpp));
6108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6109        res.setEncounter(parseReference(xpp));
6110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6111        res.setStatusElement(parseEnumeration(xpp, List_.ListStatus.NULL, new List_.ListStatusEnumFactory()));
6112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6113        res.setDateElement(parseDateTime(xpp));
6114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
6115        res.setOrderedBy(parseCodeableConcept(xpp));
6116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6117        res.setModeElement(parseEnumeration(xpp, List_.ListMode.NULL, new List_.ListModeEnumFactory()));
6118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6119        res.setNoteElement(parseString(xpp));
6120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
6121        res.getEntry().add(parseList_ListEntryComponent(xpp, res));
6122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
6123        res.setEmptyReason(parseCodeableConcept(xpp));
6124      } else if (!parseDomainResourceContent(eventType, xpp, res))
6125        unknownContent(xpp);
6126      eventType = nextNoWhitespace(xpp);
6127    }
6128    next(xpp);
6129    parseElementClose(res);
6130    return res;
6131  }
6132
6133  protected List_.ListEntryComponent parseList_ListEntryComponent(XmlPullParser xpp, List_ owner) throws XmlPullParserException, IOException, FHIRFormatError {
6134    List_.ListEntryComponent res = new List_.ListEntryComponent();
6135    parseBackboneAttributes(xpp, res);
6136    next(xpp);
6137    int eventType = nextNoWhitespace(xpp);
6138    while (eventType != XmlPullParser.END_TAG) {
6139      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
6140        res.setFlag(parseCodeableConcept(xpp));
6141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
6142        res.setDeletedElement(parseBoolean(xpp));
6143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6144        res.setDateElement(parseDateTime(xpp));
6145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6146        res.setItem(parseReference(xpp));
6147      } else if (!parseBackboneContent(eventType, xpp, res))
6148        unknownContent(xpp);
6149      eventType = nextNoWhitespace(xpp);
6150    }
6151    next(xpp);
6152    parseElementClose(res);
6153    return res;
6154  }
6155
6156  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6157    Location res = new Location();
6158    parseDomainResourceAttributes(xpp, res);
6159    next(xpp);
6160    int eventType = nextNoWhitespace(xpp);
6161    while (eventType != XmlPullParser.END_TAG) {
6162      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6163        res.getIdentifier().add(parseIdentifier(xpp));
6164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6165        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
6166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6167        res.setNameElement(parseString(xpp));
6168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6169        res.setDescriptionElement(parseString(xpp));
6170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6171        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
6172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6173        res.setType(parseCodeableConcept(xpp));
6174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
6175        res.getTelecom().add(parseContactPoint(xpp));
6176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
6177        res.setAddress(parseAddress(xpp));
6178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
6179        res.setPhysicalType(parseCodeableConcept(xpp));
6180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
6181        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
6182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
6183        res.setManagingOrganization(parseReference(xpp));
6184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
6185        res.setPartOf(parseReference(xpp));
6186      } else if (!parseDomainResourceContent(eventType, xpp, res))
6187        unknownContent(xpp);
6188      eventType = nextNoWhitespace(xpp);
6189    }
6190    next(xpp);
6191    parseElementClose(res);
6192    return res;
6193  }
6194
6195  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
6196    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
6197    parseBackboneAttributes(xpp, res);
6198    next(xpp);
6199    int eventType = nextNoWhitespace(xpp);
6200    while (eventType != XmlPullParser.END_TAG) {
6201      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
6202        res.setLongitudeElement(parseDecimal(xpp));
6203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
6204        res.setLatitudeElement(parseDecimal(xpp));
6205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
6206        res.setAltitudeElement(parseDecimal(xpp));
6207      } else if (!parseBackboneContent(eventType, xpp, res))
6208        unknownContent(xpp);
6209      eventType = nextNoWhitespace(xpp);
6210    }
6211    next(xpp);
6212    parseElementClose(res);
6213    return res;
6214  }
6215
6216  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6217    Media res = new Media();
6218    parseDomainResourceAttributes(xpp, res);
6219    next(xpp);
6220    int eventType = nextNoWhitespace(xpp);
6221    while (eventType != XmlPullParser.END_TAG) {
6222      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6223        res.setTypeElement(parseEnumeration(xpp, Media.DigitalMediaType.NULL, new Media.DigitalMediaTypeEnumFactory()));
6224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
6225        res.setSubtype(parseCodeableConcept(xpp));
6226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6227        res.getIdentifier().add(parseIdentifier(xpp));
6228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6229        res.setSubject(parseReference(xpp));
6230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
6231        res.setOperator(parseReference(xpp));
6232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
6233        res.setView(parseCodeableConcept(xpp));
6234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
6235        res.setDeviceNameElement(parseString(xpp));
6236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
6237        res.setHeightElement(parsePositiveInt(xpp));
6238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
6239        res.setWidthElement(parsePositiveInt(xpp));
6240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
6241        res.setFramesElement(parsePositiveInt(xpp));
6242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
6243        res.setDurationElement(parseUnsignedInt(xpp));
6244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6245        res.setContent(parseAttachment(xpp));
6246      } else if (!parseDomainResourceContent(eventType, xpp, res))
6247        unknownContent(xpp);
6248      eventType = nextNoWhitespace(xpp);
6249    }
6250    next(xpp);
6251    parseElementClose(res);
6252    return res;
6253  }
6254
6255  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6256    Medication res = new Medication();
6257    parseDomainResourceAttributes(xpp, res);
6258    next(xpp);
6259    int eventType = nextNoWhitespace(xpp);
6260    while (eventType != XmlPullParser.END_TAG) {
6261      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6262        res.setCode(parseCodeableConcept(xpp));
6263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isBrand")) {
6264        res.setIsBrandElement(parseBoolean(xpp));
6265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
6266        res.setManufacturer(parseReference(xpp));
6267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
6268        res.setProduct(parseMedicationMedicationProductComponent(xpp, res));
6269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
6270        res.setPackage(parseMedicationMedicationPackageComponent(xpp, res));
6271      } else if (!parseDomainResourceContent(eventType, xpp, res))
6272        unknownContent(xpp);
6273      eventType = nextNoWhitespace(xpp);
6274    }
6275    next(xpp);
6276    parseElementClose(res);
6277    return res;
6278  }
6279
6280  protected Medication.MedicationProductComponent parseMedicationMedicationProductComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6281    Medication.MedicationProductComponent res = new Medication.MedicationProductComponent();
6282    parseBackboneAttributes(xpp, res);
6283    next(xpp);
6284    int eventType = nextNoWhitespace(xpp);
6285    while (eventType != XmlPullParser.END_TAG) {
6286      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
6287        res.setForm(parseCodeableConcept(xpp));
6288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
6289        res.getIngredient().add(parseMedicationMedicationProductIngredientComponent(xpp, owner));
6290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
6291        res.getBatch().add(parseMedicationMedicationProductBatchComponent(xpp, owner));
6292      } else if (!parseBackboneContent(eventType, xpp, res))
6293        unknownContent(xpp);
6294      eventType = nextNoWhitespace(xpp);
6295    }
6296    next(xpp);
6297    parseElementClose(res);
6298    return res;
6299  }
6300
6301  protected Medication.MedicationProductIngredientComponent parseMedicationMedicationProductIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6302    Medication.MedicationProductIngredientComponent res = new Medication.MedicationProductIngredientComponent();
6303    parseBackboneAttributes(xpp, res);
6304    next(xpp);
6305    int eventType = nextNoWhitespace(xpp);
6306    while (eventType != XmlPullParser.END_TAG) {
6307      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6308        res.setItem(parseReference(xpp));
6309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6310        res.setAmount(parseRatio(xpp));
6311      } else if (!parseBackboneContent(eventType, xpp, res))
6312        unknownContent(xpp);
6313      eventType = nextNoWhitespace(xpp);
6314    }
6315    next(xpp);
6316    parseElementClose(res);
6317    return res;
6318  }
6319
6320  protected Medication.MedicationProductBatchComponent parseMedicationMedicationProductBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6321    Medication.MedicationProductBatchComponent res = new Medication.MedicationProductBatchComponent();
6322    parseBackboneAttributes(xpp, res);
6323    next(xpp);
6324    int eventType = nextNoWhitespace(xpp);
6325    while (eventType != XmlPullParser.END_TAG) {
6326      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
6327        res.setLotNumberElement(parseString(xpp));
6328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
6329        res.setExpirationDateElement(parseDateTime(xpp));
6330      } else if (!parseBackboneContent(eventType, xpp, res))
6331        unknownContent(xpp);
6332      eventType = nextNoWhitespace(xpp);
6333    }
6334    next(xpp);
6335    parseElementClose(res);
6336    return res;
6337  }
6338
6339  protected Medication.MedicationPackageComponent parseMedicationMedicationPackageComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6340    Medication.MedicationPackageComponent res = new Medication.MedicationPackageComponent();
6341    parseBackboneAttributes(xpp, res);
6342    next(xpp);
6343    int eventType = nextNoWhitespace(xpp);
6344    while (eventType != XmlPullParser.END_TAG) {
6345      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
6346        res.setContainer(parseCodeableConcept(xpp));
6347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6348        res.getContent().add(parseMedicationMedicationPackageContentComponent(xpp, owner));
6349      } else if (!parseBackboneContent(eventType, xpp, res))
6350        unknownContent(xpp);
6351      eventType = nextNoWhitespace(xpp);
6352    }
6353    next(xpp);
6354    parseElementClose(res);
6355    return res;
6356  }
6357
6358  protected Medication.MedicationPackageContentComponent parseMedicationMedicationPackageContentComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6359    Medication.MedicationPackageContentComponent res = new Medication.MedicationPackageContentComponent();
6360    parseBackboneAttributes(xpp, res);
6361    next(xpp);
6362    int eventType = nextNoWhitespace(xpp);
6363    while (eventType != XmlPullParser.END_TAG) {
6364      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6365        res.setItem(parseReference(xpp));
6366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6367        res.setAmount(parseSimpleQuantity(xpp));
6368      } else if (!parseBackboneContent(eventType, xpp, res))
6369        unknownContent(xpp);
6370      eventType = nextNoWhitespace(xpp);
6371    }
6372    next(xpp);
6373    parseElementClose(res);
6374    return res;
6375  }
6376
6377  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6378    MedicationAdministration res = new MedicationAdministration();
6379    parseDomainResourceAttributes(xpp, res);
6380    next(xpp);
6381    int eventType = nextNoWhitespace(xpp);
6382    while (eventType != XmlPullParser.END_TAG) {
6383      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6384        res.getIdentifier().add(parseIdentifier(xpp));
6385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6386        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL, new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
6387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6388        res.setPatient(parseReference(xpp));
6389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
6390        res.setPractitioner(parseReference(xpp));
6391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6392        res.setEncounter(parseReference(xpp));
6393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
6394        res.setPrescription(parseReference(xpp));
6395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotGiven")) {
6396        res.setWasNotGivenElement(parseBoolean(xpp));
6397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
6398        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
6399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonGiven")) {
6400        res.getReasonGiven().add(parseCodeableConcept(xpp));
6401      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effectiveTime")) {
6402        res.setEffectiveTime(parseType("effectiveTime", xpp));
6403      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6404        res.setMedication(parseType("medication", xpp));
6405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
6406        res.getDevice().add(parseReference(xpp));
6407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6408        res.setNoteElement(parseString(xpp));
6409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
6410        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
6411      } else if (!parseDomainResourceContent(eventType, xpp, res))
6412        unknownContent(xpp);
6413      eventType = nextNoWhitespace(xpp);
6414    }
6415    next(xpp);
6416    parseElementClose(res);
6417    return res;
6418  }
6419
6420  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
6421    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
6422    parseBackboneAttributes(xpp, res);
6423    next(xpp);
6424    int eventType = nextNoWhitespace(xpp);
6425    while (eventType != XmlPullParser.END_TAG) {
6426      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6427        res.setTextElement(parseString(xpp));
6428      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
6429        res.setSite(parseType("site", xpp));
6430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
6431        res.setRoute(parseCodeableConcept(xpp));
6432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
6433        res.setMethod(parseCodeableConcept(xpp));
6434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6435        res.setQuantity(parseSimpleQuantity(xpp));
6436      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
6437        res.setRate(parseType("rate", xpp));
6438      } else if (!parseBackboneContent(eventType, xpp, res))
6439        unknownContent(xpp);
6440      eventType = nextNoWhitespace(xpp);
6441    }
6442    next(xpp);
6443    parseElementClose(res);
6444    return res;
6445  }
6446
6447  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6448    MedicationDispense res = new MedicationDispense();
6449    parseDomainResourceAttributes(xpp, res);
6450    next(xpp);
6451    int eventType = nextNoWhitespace(xpp);
6452    while (eventType != XmlPullParser.END_TAG) {
6453      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6454        res.setIdentifier(parseIdentifier(xpp));
6455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6456        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL, new MedicationDispense.MedicationDispenseStatusEnumFactory()));
6457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6458        res.setPatient(parseReference(xpp));
6459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenser")) {
6460        res.setDispenser(parseReference(xpp));
6461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
6462        res.getAuthorizingPrescription().add(parseReference(xpp));
6463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6464        res.setType(parseCodeableConcept(xpp));
6465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6466        res.setQuantity(parseSimpleQuantity(xpp));
6467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
6468        res.setDaysSupply(parseSimpleQuantity(xpp));
6469      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6470        res.setMedication(parseType("medication", xpp));
6471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
6472        res.setWhenPreparedElement(parseDateTime(xpp));
6473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
6474        res.setWhenHandedOverElement(parseDateTime(xpp));
6475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
6476        res.setDestination(parseReference(xpp));
6477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
6478        res.getReceiver().add(parseReference(xpp));
6479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6480        res.setNoteElement(parseString(xpp));
6481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
6482        res.getDosageInstruction().add(parseMedicationDispenseMedicationDispenseDosageInstructionComponent(xpp, res));
6483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
6484        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
6485      } else if (!parseDomainResourceContent(eventType, xpp, res))
6486        unknownContent(xpp);
6487      eventType = nextNoWhitespace(xpp);
6488    }
6489    next(xpp);
6490    parseElementClose(res);
6491    return res;
6492  }
6493
6494  protected MedicationDispense.MedicationDispenseDosageInstructionComponent parseMedicationDispenseMedicationDispenseDosageInstructionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
6495    MedicationDispense.MedicationDispenseDosageInstructionComponent res = new MedicationDispense.MedicationDispenseDosageInstructionComponent();
6496    parseBackboneAttributes(xpp, res);
6497    next(xpp);
6498    int eventType = nextNoWhitespace(xpp);
6499    while (eventType != XmlPullParser.END_TAG) {
6500      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6501        res.setTextElement(parseString(xpp));
6502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstructions")) {
6503        res.setAdditionalInstructions(parseCodeableConcept(xpp));
6504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
6505        res.setTiming(parseTiming(xpp));
6506      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
6507        res.setAsNeeded(parseType("asNeeded", xpp));
6508      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
6509        res.setSite(parseType("site", xpp));
6510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
6511        res.setRoute(parseCodeableConcept(xpp));
6512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
6513        res.setMethod(parseCodeableConcept(xpp));
6514      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
6515        res.setDose(parseType("dose", xpp));
6516      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
6517        res.setRate(parseType("rate", xpp));
6518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
6519        res.setMaxDosePerPeriod(parseRatio(xpp));
6520      } else if (!parseBackboneContent(eventType, xpp, res))
6521        unknownContent(xpp);
6522      eventType = nextNoWhitespace(xpp);
6523    }
6524    next(xpp);
6525    parseElementClose(res);
6526    return res;
6527  }
6528
6529  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
6530    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
6531    parseBackboneAttributes(xpp, res);
6532    next(xpp);
6533    int eventType = nextNoWhitespace(xpp);
6534    while (eventType != XmlPullParser.END_TAG) {
6535      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6536        res.setType(parseCodeableConcept(xpp));
6537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6538        res.getReason().add(parseCodeableConcept(xpp));
6539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
6540        res.getResponsibleParty().add(parseReference(xpp));
6541      } else if (!parseBackboneContent(eventType, xpp, res))
6542        unknownContent(xpp);
6543      eventType = nextNoWhitespace(xpp);
6544    }
6545    next(xpp);
6546    parseElementClose(res);
6547    return res;
6548  }
6549
6550  protected MedicationOrder parseMedicationOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6551    MedicationOrder res = new MedicationOrder();
6552    parseDomainResourceAttributes(xpp, res);
6553    next(xpp);
6554    int eventType = nextNoWhitespace(xpp);
6555    while (eventType != XmlPullParser.END_TAG) {
6556      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6557        res.getIdentifier().add(parseIdentifier(xpp));
6558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
6559        res.setDateWrittenElement(parseDateTime(xpp));
6560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6561        res.setStatusElement(parseEnumeration(xpp, MedicationOrder.MedicationOrderStatus.NULL, new MedicationOrder.MedicationOrderStatusEnumFactory()));
6562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateEnded")) {
6563        res.setDateEndedElement(parseDateTime(xpp));
6564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonEnded")) {
6565        res.setReasonEnded(parseCodeableConcept(xpp));
6566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6567        res.setPatient(parseReference(xpp));
6568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
6569        res.setPrescriber(parseReference(xpp));
6570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6571        res.setEncounter(parseReference(xpp));
6572      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
6573        res.setReason(parseType("reason", xpp));
6574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6575        res.setNoteElement(parseString(xpp));
6576      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6577        res.setMedication(parseType("medication", xpp));
6578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
6579        res.getDosageInstruction().add(parseMedicationOrderMedicationOrderDosageInstructionComponent(xpp, res));
6580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
6581        res.setDispenseRequest(parseMedicationOrderMedicationOrderDispenseRequestComponent(xpp, res));
6582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
6583        res.setSubstitution(parseMedicationOrderMedicationOrderSubstitutionComponent(xpp, res));
6584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
6585        res.setPriorPrescription(parseReference(xpp));
6586      } else if (!parseDomainResourceContent(eventType, xpp, res))
6587        unknownContent(xpp);
6588      eventType = nextNoWhitespace(xpp);
6589    }
6590    next(xpp);
6591    parseElementClose(res);
6592    return res;
6593  }
6594
6595  protected MedicationOrder.MedicationOrderDosageInstructionComponent parseMedicationOrderMedicationOrderDosageInstructionComponent(XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
6596    MedicationOrder.MedicationOrderDosageInstructionComponent res = new MedicationOrder.MedicationOrderDosageInstructionComponent();
6597    parseBackboneAttributes(xpp, res);
6598    next(xpp);
6599    int eventType = nextNoWhitespace(xpp);
6600    while (eventType != XmlPullParser.END_TAG) {
6601      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6602        res.setTextElement(parseString(xpp));
6603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstructions")) {
6604        res.setAdditionalInstructions(parseCodeableConcept(xpp));
6605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
6606        res.setTiming(parseTiming(xpp));
6607      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
6608        res.setAsNeeded(parseType("asNeeded", xpp));
6609      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
6610        res.setSite(parseType("site", xpp));
6611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
6612        res.setRoute(parseCodeableConcept(xpp));
6613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
6614        res.setMethod(parseCodeableConcept(xpp));
6615      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
6616        res.setDose(parseType("dose", xpp));
6617      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
6618        res.setRate(parseType("rate", xpp));
6619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
6620        res.setMaxDosePerPeriod(parseRatio(xpp));
6621      } else if (!parseBackboneContent(eventType, xpp, res))
6622        unknownContent(xpp);
6623      eventType = nextNoWhitespace(xpp);
6624    }
6625    next(xpp);
6626    parseElementClose(res);
6627    return res;
6628  }
6629
6630  protected MedicationOrder.MedicationOrderDispenseRequestComponent parseMedicationOrderMedicationOrderDispenseRequestComponent(XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
6631    MedicationOrder.MedicationOrderDispenseRequestComponent res = new MedicationOrder.MedicationOrderDispenseRequestComponent();
6632    parseBackboneAttributes(xpp, res);
6633    next(xpp);
6634    int eventType = nextNoWhitespace(xpp);
6635    while (eventType != XmlPullParser.END_TAG) {
6636      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6637        res.setMedication(parseType("medication", xpp));
6638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
6639        res.setValidityPeriod(parsePeriod(xpp));
6640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
6641        res.setNumberOfRepeatsAllowedElement(parsePositiveInt(xpp));
6642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6643        res.setQuantity(parseSimpleQuantity(xpp));
6644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
6645        res.setExpectedSupplyDuration(parseDuration(xpp));
6646      } else if (!parseBackboneContent(eventType, xpp, res))
6647        unknownContent(xpp);
6648      eventType = nextNoWhitespace(xpp);
6649    }
6650    next(xpp);
6651    parseElementClose(res);
6652    return res;
6653  }
6654
6655  protected MedicationOrder.MedicationOrderSubstitutionComponent parseMedicationOrderMedicationOrderSubstitutionComponent(XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
6656    MedicationOrder.MedicationOrderSubstitutionComponent res = new MedicationOrder.MedicationOrderSubstitutionComponent();
6657    parseBackboneAttributes(xpp, res);
6658    next(xpp);
6659    int eventType = nextNoWhitespace(xpp);
6660    while (eventType != XmlPullParser.END_TAG) {
6661      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6662        res.setType(parseCodeableConcept(xpp));
6663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6664        res.setReason(parseCodeableConcept(xpp));
6665      } else if (!parseBackboneContent(eventType, xpp, res))
6666        unknownContent(xpp);
6667      eventType = nextNoWhitespace(xpp);
6668    }
6669    next(xpp);
6670    parseElementClose(res);
6671    return res;
6672  }
6673
6674  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6675    MedicationStatement res = new MedicationStatement();
6676    parseDomainResourceAttributes(xpp, res);
6677    next(xpp);
6678    int eventType = nextNoWhitespace(xpp);
6679    while (eventType != XmlPullParser.END_TAG) {
6680      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6681        res.getIdentifier().add(parseIdentifier(xpp));
6682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6683        res.setPatient(parseReference(xpp));
6684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
6685        res.setInformationSource(parseReference(xpp));
6686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
6687        res.setDateAssertedElement(parseDateTime(xpp));
6688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6689        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
6690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotTaken")) {
6691        res.setWasNotTakenElement(parseBoolean(xpp));
6692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotTaken")) {
6693        res.getReasonNotTaken().add(parseCodeableConcept(xpp));
6694      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reasonForUse")) {
6695        res.setReasonForUse(parseType("reasonForUse", xpp));
6696      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
6697        res.setEffective(parseType("effective", xpp));
6698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6699        res.setNoteElement(parseString(xpp));
6700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
6701        res.getSupportingInformation().add(parseReference(xpp));
6702      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6703        res.setMedication(parseType("medication", xpp));
6704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
6705        res.getDosage().add(parseMedicationStatementMedicationStatementDosageComponent(xpp, res));
6706      } else if (!parseDomainResourceContent(eventType, xpp, res))
6707        unknownContent(xpp);
6708      eventType = nextNoWhitespace(xpp);
6709    }
6710    next(xpp);
6711    parseElementClose(res);
6712    return res;
6713  }
6714
6715  protected MedicationStatement.MedicationStatementDosageComponent parseMedicationStatementMedicationStatementDosageComponent(XmlPullParser xpp, MedicationStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
6716    MedicationStatement.MedicationStatementDosageComponent res = new MedicationStatement.MedicationStatementDosageComponent();
6717    parseBackboneAttributes(xpp, res);
6718    next(xpp);
6719    int eventType = nextNoWhitespace(xpp);
6720    while (eventType != XmlPullParser.END_TAG) {
6721      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6722        res.setTextElement(parseString(xpp));
6723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
6724        res.setTiming(parseTiming(xpp));
6725      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
6726        res.setAsNeeded(parseType("asNeeded", xpp));
6727      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
6728        res.setSite(parseType("site", xpp));
6729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
6730        res.setRoute(parseCodeableConcept(xpp));
6731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
6732        res.setMethod(parseCodeableConcept(xpp));
6733      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
6734        res.setQuantity(parseType("quantity", xpp));
6735      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
6736        res.setRate(parseType("rate", xpp));
6737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
6738        res.setMaxDosePerPeriod(parseRatio(xpp));
6739      } else if (!parseBackboneContent(eventType, xpp, res))
6740        unknownContent(xpp);
6741      eventType = nextNoWhitespace(xpp);
6742    }
6743    next(xpp);
6744    parseElementClose(res);
6745    return res;
6746  }
6747
6748  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6749    MessageHeader res = new MessageHeader();
6750    parseDomainResourceAttributes(xpp, res);
6751    next(xpp);
6752    int eventType = nextNoWhitespace(xpp);
6753    while (eventType != XmlPullParser.END_TAG) {
6754      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
6755        res.setTimestampElement(parseInstant(xpp));
6756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
6757        res.setEvent(parseCoding(xpp));
6758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
6759        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
6760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6761        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
6762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
6763        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
6764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
6765        res.setEnterer(parseReference(xpp));
6766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6767        res.setAuthor(parseReference(xpp));
6768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
6769        res.setReceiver(parseReference(xpp));
6770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
6771        res.setResponsible(parseReference(xpp));
6772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6773        res.setReason(parseCodeableConcept(xpp));
6774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
6775        res.getData().add(parseReference(xpp));
6776      } else if (!parseDomainResourceContent(eventType, xpp, res))
6777        unknownContent(xpp);
6778      eventType = nextNoWhitespace(xpp);
6779    }
6780    next(xpp);
6781    parseElementClose(res);
6782    return res;
6783  }
6784
6785  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
6786    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
6787    parseBackboneAttributes(xpp, res);
6788    next(xpp);
6789    int eventType = nextNoWhitespace(xpp);
6790    while (eventType != XmlPullParser.END_TAG) {
6791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6792        res.setIdentifierElement(parseId(xpp));
6793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6794        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
6795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
6796        res.setDetails(parseReference(xpp));
6797      } else if (!parseBackboneContent(eventType, xpp, res))
6798        unknownContent(xpp);
6799      eventType = nextNoWhitespace(xpp);
6800    }
6801    next(xpp);
6802    parseElementClose(res);
6803    return res;
6804  }
6805
6806  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
6807    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
6808    parseBackboneAttributes(xpp, res);
6809    next(xpp);
6810    int eventType = nextNoWhitespace(xpp);
6811    while (eventType != XmlPullParser.END_TAG) {
6812      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6813        res.setNameElement(parseString(xpp));
6814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
6815        res.setSoftwareElement(parseString(xpp));
6816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6817        res.setVersionElement(parseString(xpp));
6818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6819        res.setContact(parseContactPoint(xpp));
6820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
6821        res.setEndpointElement(parseUri(xpp));
6822      } else if (!parseBackboneContent(eventType, xpp, res))
6823        unknownContent(xpp);
6824      eventType = nextNoWhitespace(xpp);
6825    }
6826    next(xpp);
6827    parseElementClose(res);
6828    return res;
6829  }
6830
6831  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
6832    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
6833    parseBackboneAttributes(xpp, res);
6834    next(xpp);
6835    int eventType = nextNoWhitespace(xpp);
6836    while (eventType != XmlPullParser.END_TAG) {
6837      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6838        res.setNameElement(parseString(xpp));
6839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6840        res.setTarget(parseReference(xpp));
6841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
6842        res.setEndpointElement(parseUri(xpp));
6843      } else if (!parseBackboneContent(eventType, xpp, res))
6844        unknownContent(xpp);
6845      eventType = nextNoWhitespace(xpp);
6846    }
6847    next(xpp);
6848    parseElementClose(res);
6849    return res;
6850  }
6851
6852  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6853    NamingSystem res = new NamingSystem();
6854    parseDomainResourceAttributes(xpp, res);
6855    next(xpp);
6856    int eventType = nextNoWhitespace(xpp);
6857    while (eventType != XmlPullParser.END_TAG) {
6858      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6859        res.setNameElement(parseString(xpp));
6860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6861        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
6862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
6863        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
6864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6865        res.setPublisherElement(parseString(xpp));
6866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6867        res.getContact().add(parseNamingSystemNamingSystemContactComponent(xpp, res));
6868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
6869        res.setResponsibleElement(parseString(xpp));
6870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6871        res.setDateElement(parseDateTime(xpp));
6872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6873        res.setType(parseCodeableConcept(xpp));
6874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6875        res.setDescriptionElement(parseString(xpp));
6876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6877        res.getUseContext().add(parseCodeableConcept(xpp));
6878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
6879        res.setUsageElement(parseString(xpp));
6880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
6881        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
6882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replacedBy")) {
6883        res.setReplacedBy(parseReference(xpp));
6884      } else if (!parseDomainResourceContent(eventType, xpp, res))
6885        unknownContent(xpp);
6886      eventType = nextNoWhitespace(xpp);
6887    }
6888    next(xpp);
6889    parseElementClose(res);
6890    return res;
6891  }
6892
6893  protected NamingSystem.NamingSystemContactComponent parseNamingSystemNamingSystemContactComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
6894    NamingSystem.NamingSystemContactComponent res = new NamingSystem.NamingSystemContactComponent();
6895    parseBackboneAttributes(xpp, res);
6896    next(xpp);
6897    int eventType = nextNoWhitespace(xpp);
6898    while (eventType != XmlPullParser.END_TAG) {
6899      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6900        res.setNameElement(parseString(xpp));
6901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
6902        res.getTelecom().add(parseContactPoint(xpp));
6903      } else if (!parseBackboneContent(eventType, xpp, res))
6904        unknownContent(xpp);
6905      eventType = nextNoWhitespace(xpp);
6906    }
6907    next(xpp);
6908    parseElementClose(res);
6909    return res;
6910  }
6911
6912  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
6913    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
6914    parseBackboneAttributes(xpp, res);
6915    next(xpp);
6916    int eventType = nextNoWhitespace(xpp);
6917    while (eventType != XmlPullParser.END_TAG) {
6918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6919        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
6920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6921        res.setValueElement(parseString(xpp));
6922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
6923        res.setPreferredElement(parseBoolean(xpp));
6924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6925        res.setPeriod(parsePeriod(xpp));
6926      } else if (!parseBackboneContent(eventType, xpp, res))
6927        unknownContent(xpp);
6928      eventType = nextNoWhitespace(xpp);
6929    }
6930    next(xpp);
6931    parseElementClose(res);
6932    return res;
6933  }
6934
6935  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6936    NutritionOrder res = new NutritionOrder();
6937    parseDomainResourceAttributes(xpp, res);
6938    next(xpp);
6939    int eventType = nextNoWhitespace(xpp);
6940    while (eventType != XmlPullParser.END_TAG) {
6941      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6942        res.setPatient(parseReference(xpp));
6943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
6944        res.setOrderer(parseReference(xpp));
6945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6946        res.getIdentifier().add(parseIdentifier(xpp));
6947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6948        res.setEncounter(parseReference(xpp));
6949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
6950        res.setDateTimeElement(parseDateTime(xpp));
6951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6952        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
6953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
6954        res.getAllergyIntolerance().add(parseReference(xpp));
6955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
6956        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
6957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
6958        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
6959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
6960        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
6961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
6962        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
6963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
6964        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
6965      } else if (!parseDomainResourceContent(eventType, xpp, res))
6966        unknownContent(xpp);
6967      eventType = nextNoWhitespace(xpp);
6968    }
6969    next(xpp);
6970    parseElementClose(res);
6971    return res;
6972  }
6973
6974  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
6975    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
6976    parseBackboneAttributes(xpp, res);
6977    next(xpp);
6978    int eventType = nextNoWhitespace(xpp);
6979    while (eventType != XmlPullParser.END_TAG) {
6980      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6981        res.getType().add(parseCodeableConcept(xpp));
6982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
6983        res.getSchedule().add(parseTiming(xpp));
6984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
6985        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
6986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
6987        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
6988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
6989        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
6990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
6991        res.setInstructionElement(parseString(xpp));
6992      } else if (!parseBackboneContent(eventType, xpp, res))
6993        unknownContent(xpp);
6994      eventType = nextNoWhitespace(xpp);
6995    }
6996    next(xpp);
6997    parseElementClose(res);
6998    return res;
6999  }
7000
7001  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7002    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
7003    parseBackboneAttributes(xpp, res);
7004    next(xpp);
7005    int eventType = nextNoWhitespace(xpp);
7006    while (eventType != XmlPullParser.END_TAG) {
7007      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7008        res.setModifier(parseCodeableConcept(xpp));
7009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
7010        res.setAmount(parseSimpleQuantity(xpp));
7011      } else if (!parseBackboneContent(eventType, xpp, res))
7012        unknownContent(xpp);
7013      eventType = nextNoWhitespace(xpp);
7014    }
7015    next(xpp);
7016    parseElementClose(res);
7017    return res;
7018  }
7019
7020  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7021    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
7022    parseBackboneAttributes(xpp, res);
7023    next(xpp);
7024    int eventType = nextNoWhitespace(xpp);
7025    while (eventType != XmlPullParser.END_TAG) {
7026      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7027        res.setModifier(parseCodeableConcept(xpp));
7028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
7029        res.setFoodType(parseCodeableConcept(xpp));
7030      } else if (!parseBackboneContent(eventType, xpp, res))
7031        unknownContent(xpp);
7032      eventType = nextNoWhitespace(xpp);
7033    }
7034    next(xpp);
7035    parseElementClose(res);
7036    return res;
7037  }
7038
7039  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7040    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
7041    parseBackboneAttributes(xpp, res);
7042    next(xpp);
7043    int eventType = nextNoWhitespace(xpp);
7044    while (eventType != XmlPullParser.END_TAG) {
7045      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7046        res.setType(parseCodeableConcept(xpp));
7047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
7048        res.setProductNameElement(parseString(xpp));
7049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
7050        res.getSchedule().add(parseTiming(xpp));
7051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7052        res.setQuantity(parseSimpleQuantity(xpp));
7053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
7054        res.setInstructionElement(parseString(xpp));
7055      } else if (!parseBackboneContent(eventType, xpp, res))
7056        unknownContent(xpp);
7057      eventType = nextNoWhitespace(xpp);
7058    }
7059    next(xpp);
7060    parseElementClose(res);
7061    return res;
7062  }
7063
7064  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7065    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
7066    parseBackboneAttributes(xpp, res);
7067    next(xpp);
7068    int eventType = nextNoWhitespace(xpp);
7069    while (eventType != XmlPullParser.END_TAG) {
7070      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
7071        res.setBaseFormulaType(parseCodeableConcept(xpp));
7072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
7073        res.setBaseFormulaProductNameElement(parseString(xpp));
7074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
7075        res.setAdditiveType(parseCodeableConcept(xpp));
7076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
7077        res.setAdditiveProductNameElement(parseString(xpp));
7078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
7079        res.setCaloricDensity(parseSimpleQuantity(xpp));
7080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
7081        res.setRouteofAdministration(parseCodeableConcept(xpp));
7082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
7083        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
7084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
7085        res.setMaxVolumeToDeliver(parseSimpleQuantity(xpp));
7086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
7087        res.setAdministrationInstructionElement(parseString(xpp));
7088      } else if (!parseBackboneContent(eventType, xpp, res))
7089        unknownContent(xpp);
7090      eventType = nextNoWhitespace(xpp);
7091    }
7092    next(xpp);
7093    parseElementClose(res);
7094    return res;
7095  }
7096
7097  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7098    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
7099    parseBackboneAttributes(xpp, res);
7100    next(xpp);
7101    int eventType = nextNoWhitespace(xpp);
7102    while (eventType != XmlPullParser.END_TAG) {
7103      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
7104        res.setSchedule(parseTiming(xpp));
7105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7106        res.setQuantity(parseSimpleQuantity(xpp));
7107      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
7108        res.setRate(parseType("rate", xpp));
7109      } else if (!parseBackboneContent(eventType, xpp, res))
7110        unknownContent(xpp);
7111      eventType = nextNoWhitespace(xpp);
7112    }
7113    next(xpp);
7114    parseElementClose(res);
7115    return res;
7116  }
7117
7118  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7119    Observation res = new Observation();
7120    parseDomainResourceAttributes(xpp, res);
7121    next(xpp);
7122    int eventType = nextNoWhitespace(xpp);
7123    while (eventType != XmlPullParser.END_TAG) {
7124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7125        res.getIdentifier().add(parseIdentifier(xpp));
7126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7127        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
7128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7129        res.setCategory(parseCodeableConcept(xpp));
7130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7131        res.setCode(parseCodeableConcept(xpp));
7132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7133        res.setSubject(parseReference(xpp));
7134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7135        res.setEncounter(parseReference(xpp));
7136      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
7137        res.setEffective(parseType("effective", xpp));
7138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
7139        res.setIssuedElement(parseInstant(xpp));
7140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7141        res.getPerformer().add(parseReference(xpp));
7142      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7143        res.setValue(parseType("value", xpp));
7144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
7145        res.setDataAbsentReason(parseCodeableConcept(xpp));
7146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
7147        res.setInterpretation(parseCodeableConcept(xpp));
7148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
7149        res.setCommentsElement(parseString(xpp));
7150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
7151        res.setBodySite(parseCodeableConcept(xpp));
7152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
7153        res.setMethod(parseCodeableConcept(xpp));
7154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
7155        res.setSpecimen(parseReference(xpp));
7156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
7157        res.setDevice(parseReference(xpp));
7158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
7159        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
7160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
7161        res.getRelated().add(parseObservationObservationRelatedComponent(xpp, res));
7162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
7163        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
7164      } else if (!parseDomainResourceContent(eventType, xpp, res))
7165        unknownContent(xpp);
7166      eventType = nextNoWhitespace(xpp);
7167    }
7168    next(xpp);
7169    parseElementClose(res);
7170    return res;
7171  }
7172
7173  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7174    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
7175    parseBackboneAttributes(xpp, res);
7176    next(xpp);
7177    int eventType = nextNoWhitespace(xpp);
7178    while (eventType != XmlPullParser.END_TAG) {
7179      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
7180        res.setLow(parseSimpleQuantity(xpp));
7181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
7182        res.setHigh(parseSimpleQuantity(xpp));
7183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
7184        res.setMeaning(parseCodeableConcept(xpp));
7185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
7186        res.setAge(parseRange(xpp));
7187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
7188        res.setTextElement(parseString(xpp));
7189      } else if (!parseBackboneContent(eventType, xpp, res))
7190        unknownContent(xpp);
7191      eventType = nextNoWhitespace(xpp);
7192    }
7193    next(xpp);
7194    parseElementClose(res);
7195    return res;
7196  }
7197
7198  protected Observation.ObservationRelatedComponent parseObservationObservationRelatedComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7199    Observation.ObservationRelatedComponent res = new Observation.ObservationRelatedComponent();
7200    parseBackboneAttributes(xpp, res);
7201    next(xpp);
7202    int eventType = nextNoWhitespace(xpp);
7203    while (eventType != XmlPullParser.END_TAG) {
7204      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7205        res.setTypeElement(parseEnumeration(xpp, Observation.ObservationRelationshipType.NULL, new Observation.ObservationRelationshipTypeEnumFactory()));
7206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7207        res.setTarget(parseReference(xpp));
7208      } else if (!parseBackboneContent(eventType, xpp, res))
7209        unknownContent(xpp);
7210      eventType = nextNoWhitespace(xpp);
7211    }
7212    next(xpp);
7213    parseElementClose(res);
7214    return res;
7215  }
7216
7217  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7218    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
7219    parseBackboneAttributes(xpp, res);
7220    next(xpp);
7221    int eventType = nextNoWhitespace(xpp);
7222    while (eventType != XmlPullParser.END_TAG) {
7223      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7224        res.setCode(parseCodeableConcept(xpp));
7225      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7226        res.setValue(parseType("value", xpp));
7227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
7228        res.setDataAbsentReason(parseCodeableConcept(xpp));
7229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
7230        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
7231      } else if (!parseBackboneContent(eventType, xpp, res))
7232        unknownContent(xpp);
7233      eventType = nextNoWhitespace(xpp);
7234    }
7235    next(xpp);
7236    parseElementClose(res);
7237    return res;
7238  }
7239
7240  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7241    OperationDefinition res = new OperationDefinition();
7242    parseDomainResourceAttributes(xpp, res);
7243    next(xpp);
7244    int eventType = nextNoWhitespace(xpp);
7245    while (eventType != XmlPullParser.END_TAG) {
7246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7247        res.setUrlElement(parseUri(xpp));
7248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7249        res.setVersionElement(parseString(xpp));
7250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7251        res.setNameElement(parseString(xpp));
7252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7253        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
7254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
7255        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
7256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7257        res.setExperimentalElement(parseBoolean(xpp));
7258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7259        res.setPublisherElement(parseString(xpp));
7260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7261        res.getContact().add(parseOperationDefinitionOperationDefinitionContactComponent(xpp, res));
7262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7263        res.setDateElement(parseDateTime(xpp));
7264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7265        res.setDescriptionElement(parseString(xpp));
7266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
7267        res.setRequirementsElement(parseString(xpp));
7268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("idempotent")) {
7269        res.setIdempotentElement(parseBoolean(xpp));
7270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7271        res.setCodeElement(parseCode(xpp));
7272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
7273        res.setNotesElement(parseString(xpp));
7274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
7275        res.setBase(parseReference(xpp));
7276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7277        res.setSystemElement(parseBoolean(xpp));
7278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7279        res.getType().add(parseCode(xpp));
7280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
7281        res.setInstanceElement(parseBoolean(xpp));
7282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
7283        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
7284      } else if (!parseDomainResourceContent(eventType, xpp, res))
7285        unknownContent(xpp);
7286      eventType = nextNoWhitespace(xpp);
7287    }
7288    next(xpp);
7289    parseElementClose(res);
7290    return res;
7291  }
7292
7293  protected OperationDefinition.OperationDefinitionContactComponent parseOperationDefinitionOperationDefinitionContactComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7294    OperationDefinition.OperationDefinitionContactComponent res = new OperationDefinition.OperationDefinitionContactComponent();
7295    parseBackboneAttributes(xpp, res);
7296    next(xpp);
7297    int eventType = nextNoWhitespace(xpp);
7298    while (eventType != XmlPullParser.END_TAG) {
7299      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7300        res.setNameElement(parseString(xpp));
7301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7302        res.getTelecom().add(parseContactPoint(xpp));
7303      } else if (!parseBackboneContent(eventType, xpp, res))
7304        unknownContent(xpp);
7305      eventType = nextNoWhitespace(xpp);
7306    }
7307    next(xpp);
7308    parseElementClose(res);
7309    return res;
7310  }
7311
7312  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7313    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
7314    parseBackboneAttributes(xpp, res);
7315    next(xpp);
7316    int eventType = nextNoWhitespace(xpp);
7317    while (eventType != XmlPullParser.END_TAG) {
7318      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7319        res.setNameElement(parseCode(xpp));
7320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
7321        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
7322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
7323        res.setMinElement(parseInteger(xpp));
7324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
7325        res.setMaxElement(parseString(xpp));
7326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
7327        res.setDocumentationElement(parseString(xpp));
7328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7329        res.setTypeElement(parseCode(xpp));
7330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
7331        res.setProfile(parseReference(xpp));
7332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
7333        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
7334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
7335        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
7336      } else if (!parseBackboneContent(eventType, xpp, res))
7337        unknownContent(xpp);
7338      eventType = nextNoWhitespace(xpp);
7339    }
7340    next(xpp);
7341    parseElementClose(res);
7342    return res;
7343  }
7344
7345  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7346    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
7347    parseBackboneAttributes(xpp, res);
7348    next(xpp);
7349    int eventType = nextNoWhitespace(xpp);
7350    while (eventType != XmlPullParser.END_TAG) {
7351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
7352        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
7353      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
7354        res.setValueSet(parseType("valueSet", xpp));
7355      } else if (!parseBackboneContent(eventType, xpp, res))
7356        unknownContent(xpp);
7357      eventType = nextNoWhitespace(xpp);
7358    }
7359    next(xpp);
7360    parseElementClose(res);
7361    return res;
7362  }
7363
7364  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7365    OperationOutcome res = new OperationOutcome();
7366    parseDomainResourceAttributes(xpp, res);
7367    next(xpp);
7368    int eventType = nextNoWhitespace(xpp);
7369    while (eventType != XmlPullParser.END_TAG) {
7370      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
7371        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
7372      } else if (!parseDomainResourceContent(eventType, xpp, res))
7373        unknownContent(xpp);
7374      eventType = nextNoWhitespace(xpp);
7375    }
7376    next(xpp);
7377    parseElementClose(res);
7378    return res;
7379  }
7380
7381  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
7382    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
7383    parseBackboneAttributes(xpp, res);
7384    next(xpp);
7385    int eventType = nextNoWhitespace(xpp);
7386    while (eventType != XmlPullParser.END_TAG) {
7387      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
7388        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
7389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7390        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
7391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
7392        res.setDetails(parseCodeableConcept(xpp));
7393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
7394        res.setDiagnosticsElement(parseString(xpp));
7395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7396        res.getLocation().add(parseString(xpp));
7397      } else if (!parseBackboneContent(eventType, xpp, res))
7398        unknownContent(xpp);
7399      eventType = nextNoWhitespace(xpp);
7400    }
7401    next(xpp);
7402    parseElementClose(res);
7403    return res;
7404  }
7405
7406  protected Order parseOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7407    Order res = new Order();
7408    parseDomainResourceAttributes(xpp, res);
7409    next(xpp);
7410    int eventType = nextNoWhitespace(xpp);
7411    while (eventType != XmlPullParser.END_TAG) {
7412      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7413        res.getIdentifier().add(parseIdentifier(xpp));
7414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7415        res.setDateElement(parseDateTime(xpp));
7416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7417        res.setSubject(parseReference(xpp));
7418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
7419        res.setSource(parseReference(xpp));
7420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7421        res.setTarget(parseReference(xpp));
7422      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
7423        res.setReason(parseType("reason", xpp));
7424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
7425        res.setWhen(parseOrderOrderWhenComponent(xpp, res));
7426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7427        res.getDetail().add(parseReference(xpp));
7428      } else if (!parseDomainResourceContent(eventType, xpp, res))
7429        unknownContent(xpp);
7430      eventType = nextNoWhitespace(xpp);
7431    }
7432    next(xpp);
7433    parseElementClose(res);
7434    return res;
7435  }
7436
7437  protected Order.OrderWhenComponent parseOrderOrderWhenComponent(XmlPullParser xpp, Order owner) throws XmlPullParserException, IOException, FHIRFormatError {
7438    Order.OrderWhenComponent res = new Order.OrderWhenComponent();
7439    parseBackboneAttributes(xpp, res);
7440    next(xpp);
7441    int eventType = nextNoWhitespace(xpp);
7442    while (eventType != XmlPullParser.END_TAG) {
7443      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7444        res.setCode(parseCodeableConcept(xpp));
7445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
7446        res.setSchedule(parseTiming(xpp));
7447      } else if (!parseBackboneContent(eventType, xpp, res))
7448        unknownContent(xpp);
7449      eventType = nextNoWhitespace(xpp);
7450    }
7451    next(xpp);
7452    parseElementClose(res);
7453    return res;
7454  }
7455
7456  protected OrderResponse parseOrderResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7457    OrderResponse res = new OrderResponse();
7458    parseDomainResourceAttributes(xpp, res);
7459    next(xpp);
7460    int eventType = nextNoWhitespace(xpp);
7461    while (eventType != XmlPullParser.END_TAG) {
7462      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7463        res.getIdentifier().add(parseIdentifier(xpp));
7464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7465        res.setRequest(parseReference(xpp));
7466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7467        res.setDateElement(parseDateTime(xpp));
7468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
7469        res.setWho(parseReference(xpp));
7470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderStatus")) {
7471        res.setOrderStatusElement(parseEnumeration(xpp, OrderResponse.OrderStatus.NULL, new OrderResponse.OrderStatusEnumFactory()));
7472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7473        res.setDescriptionElement(parseString(xpp));
7474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fulfillment")) {
7475        res.getFulfillment().add(parseReference(xpp));
7476      } else if (!parseDomainResourceContent(eventType, xpp, res))
7477        unknownContent(xpp);
7478      eventType = nextNoWhitespace(xpp);
7479    }
7480    next(xpp);
7481    parseElementClose(res);
7482    return res;
7483  }
7484
7485  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7486    Organization res = new Organization();
7487    parseDomainResourceAttributes(xpp, res);
7488    next(xpp);
7489    int eventType = nextNoWhitespace(xpp);
7490    while (eventType != XmlPullParser.END_TAG) {
7491      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7492        res.getIdentifier().add(parseIdentifier(xpp));
7493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
7494        res.setActiveElement(parseBoolean(xpp));
7495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7496        res.setType(parseCodeableConcept(xpp));
7497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7498        res.setNameElement(parseString(xpp));
7499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7500        res.getTelecom().add(parseContactPoint(xpp));
7501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7502        res.getAddress().add(parseAddress(xpp));
7503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
7504        res.setPartOf(parseReference(xpp));
7505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7506        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
7507      } else if (!parseDomainResourceContent(eventType, xpp, res))
7508        unknownContent(xpp);
7509      eventType = nextNoWhitespace(xpp);
7510    }
7511    next(xpp);
7512    parseElementClose(res);
7513    return res;
7514  }
7515
7516  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
7517    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
7518    parseBackboneAttributes(xpp, res);
7519    next(xpp);
7520    int eventType = nextNoWhitespace(xpp);
7521    while (eventType != XmlPullParser.END_TAG) {
7522      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7523        res.setPurpose(parseCodeableConcept(xpp));
7524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7525        res.setName(parseHumanName(xpp));
7526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7527        res.getTelecom().add(parseContactPoint(xpp));
7528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7529        res.setAddress(parseAddress(xpp));
7530      } else if (!parseBackboneContent(eventType, xpp, res))
7531        unknownContent(xpp);
7532      eventType = nextNoWhitespace(xpp);
7533    }
7534    next(xpp);
7535    parseElementClose(res);
7536    return res;
7537  }
7538
7539  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7540    Patient res = new Patient();
7541    parseDomainResourceAttributes(xpp, res);
7542    next(xpp);
7543    int eventType = nextNoWhitespace(xpp);
7544    while (eventType != XmlPullParser.END_TAG) {
7545      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7546        res.getIdentifier().add(parseIdentifier(xpp));
7547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
7548        res.setActiveElement(parseBoolean(xpp));
7549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7550        res.getName().add(parseHumanName(xpp));
7551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7552        res.getTelecom().add(parseContactPoint(xpp));
7553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
7554        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
7555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
7556        res.setBirthDateElement(parseDate(xpp));
7557      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
7558        res.setDeceased(parseType("deceased", xpp));
7559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7560        res.getAddress().add(parseAddress(xpp));
7561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
7562        res.setMaritalStatus(parseCodeableConcept(xpp));
7563      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
7564        res.setMultipleBirth(parseType("multipleBirth", xpp));
7565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
7566        res.getPhoto().add(parseAttachment(xpp));
7567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7568        res.getContact().add(parsePatientContactComponent(xpp, res));
7569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("animal")) {
7570        res.setAnimal(parsePatientAnimalComponent(xpp, res));
7571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
7572        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
7573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careProvider")) {
7574        res.getCareProvider().add(parseReference(xpp));
7575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7576        res.setManagingOrganization(parseReference(xpp));
7577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
7578        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
7579      } else if (!parseDomainResourceContent(eventType, xpp, res))
7580        unknownContent(xpp);
7581      eventType = nextNoWhitespace(xpp);
7582    }
7583    next(xpp);
7584    parseElementClose(res);
7585    return res;
7586  }
7587
7588  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
7589    Patient.ContactComponent res = new Patient.ContactComponent();
7590    parseBackboneAttributes(xpp, res);
7591    next(xpp);
7592    int eventType = nextNoWhitespace(xpp);
7593    while (eventType != XmlPullParser.END_TAG) {
7594      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
7595        res.getRelationship().add(parseCodeableConcept(xpp));
7596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7597        res.setName(parseHumanName(xpp));
7598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7599        res.getTelecom().add(parseContactPoint(xpp));
7600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7601        res.setAddress(parseAddress(xpp));
7602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
7603        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
7604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7605        res.setOrganization(parseReference(xpp));
7606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7607        res.setPeriod(parsePeriod(xpp));
7608      } else if (!parseBackboneContent(eventType, xpp, res))
7609        unknownContent(xpp);
7610      eventType = nextNoWhitespace(xpp);
7611    }
7612    next(xpp);
7613    parseElementClose(res);
7614    return res;
7615  }
7616
7617  protected Patient.AnimalComponent parsePatientAnimalComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
7618    Patient.AnimalComponent res = new Patient.AnimalComponent();
7619    parseBackboneAttributes(xpp, res);
7620    next(xpp);
7621    int eventType = nextNoWhitespace(xpp);
7622    while (eventType != XmlPullParser.END_TAG) {
7623      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
7624        res.setSpecies(parseCodeableConcept(xpp));
7625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("breed")) {
7626        res.setBreed(parseCodeableConcept(xpp));
7627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genderStatus")) {
7628        res.setGenderStatus(parseCodeableConcept(xpp));
7629      } else if (!parseBackboneContent(eventType, xpp, res))
7630        unknownContent(xpp);
7631      eventType = nextNoWhitespace(xpp);
7632    }
7633    next(xpp);
7634    parseElementClose(res);
7635    return res;
7636  }
7637
7638  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
7639    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
7640    parseBackboneAttributes(xpp, res);
7641    next(xpp);
7642    int eventType = nextNoWhitespace(xpp);
7643    while (eventType != XmlPullParser.END_TAG) {
7644      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
7645        res.setLanguage(parseCodeableConcept(xpp));
7646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
7647        res.setPreferredElement(parseBoolean(xpp));
7648      } else if (!parseBackboneContent(eventType, xpp, res))
7649        unknownContent(xpp);
7650      eventType = nextNoWhitespace(xpp);
7651    }
7652    next(xpp);
7653    parseElementClose(res);
7654    return res;
7655  }
7656
7657  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
7658    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
7659    parseBackboneAttributes(xpp, res);
7660    next(xpp);
7661    int eventType = nextNoWhitespace(xpp);
7662    while (eventType != XmlPullParser.END_TAG) {
7663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
7664        res.setOther(parseReference(xpp));
7665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7666        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
7667      } else if (!parseBackboneContent(eventType, xpp, res))
7668        unknownContent(xpp);
7669      eventType = nextNoWhitespace(xpp);
7670    }
7671    next(xpp);
7672    parseElementClose(res);
7673    return res;
7674  }
7675
7676  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7677    PaymentNotice res = new PaymentNotice();
7678    parseDomainResourceAttributes(xpp, res);
7679    next(xpp);
7680    int eventType = nextNoWhitespace(xpp);
7681    while (eventType != XmlPullParser.END_TAG) {
7682      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7683        res.getIdentifier().add(parseIdentifier(xpp));
7684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
7685        res.setRuleset(parseCoding(xpp));
7686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
7687        res.setOriginalRuleset(parseCoding(xpp));
7688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7689        res.setCreatedElement(parseDateTime(xpp));
7690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7691        res.setTarget(parseReference(xpp));
7692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7693        res.setProvider(parseReference(xpp));
7694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7695        res.setOrganization(parseReference(xpp));
7696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7697        res.setRequest(parseReference(xpp));
7698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
7699        res.setResponse(parseReference(xpp));
7700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
7701        res.setPaymentStatus(parseCoding(xpp));
7702      } else if (!parseDomainResourceContent(eventType, xpp, res))
7703        unknownContent(xpp);
7704      eventType = nextNoWhitespace(xpp);
7705    }
7706    next(xpp);
7707    parseElementClose(res);
7708    return res;
7709  }
7710
7711  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7712    PaymentReconciliation res = new PaymentReconciliation();
7713    parseDomainResourceAttributes(xpp, res);
7714    next(xpp);
7715    int eventType = nextNoWhitespace(xpp);
7716    while (eventType != XmlPullParser.END_TAG) {
7717      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7718        res.getIdentifier().add(parseIdentifier(xpp));
7719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7720        res.setRequest(parseReference(xpp));
7721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7722        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
7723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7724        res.setDispositionElement(parseString(xpp));
7725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
7726        res.setRuleset(parseCoding(xpp));
7727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
7728        res.setOriginalRuleset(parseCoding(xpp));
7729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7730        res.setCreatedElement(parseDateTime(xpp));
7731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7732        res.setPeriod(parsePeriod(xpp));
7733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7734        res.setOrganization(parseReference(xpp));
7735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7736        res.setRequestProvider(parseReference(xpp));
7737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
7738        res.setRequestOrganization(parseReference(xpp));
7739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7740        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
7741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7742        res.setForm(parseCoding(xpp));
7743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
7744        res.setTotal(parseMoney(xpp));
7745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7746        res.getNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
7747      } else if (!parseDomainResourceContent(eventType, xpp, res))
7748        unknownContent(xpp);
7749      eventType = nextNoWhitespace(xpp);
7750    }
7751    next(xpp);
7752    parseElementClose(res);
7753    return res;
7754  }
7755
7756  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7757    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
7758    parseBackboneAttributes(xpp, res);
7759    next(xpp);
7760    int eventType = nextNoWhitespace(xpp);
7761    while (eventType != XmlPullParser.END_TAG) {
7762      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7763        res.setType(parseCoding(xpp));
7764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7765        res.setRequest(parseReference(xpp));
7766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responce")) {
7767        res.setResponce(parseReference(xpp));
7768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
7769        res.setSubmitter(parseReference(xpp));
7770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
7771        res.setPayee(parseReference(xpp));
7772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7773        res.setDateElement(parseDate(xpp));
7774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
7775        res.setAmount(parseMoney(xpp));
7776      } else if (!parseBackboneContent(eventType, xpp, res))
7777        unknownContent(xpp);
7778      eventType = nextNoWhitespace(xpp);
7779    }
7780    next(xpp);
7781    parseElementClose(res);
7782    return res;
7783  }
7784
7785  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7786    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
7787    parseBackboneAttributes(xpp, res);
7788    next(xpp);
7789    int eventType = nextNoWhitespace(xpp);
7790    while (eventType != XmlPullParser.END_TAG) {
7791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7792        res.setType(parseCoding(xpp));
7793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
7794        res.setTextElement(parseString(xpp));
7795      } else if (!parseBackboneContent(eventType, xpp, res))
7796        unknownContent(xpp);
7797      eventType = nextNoWhitespace(xpp);
7798    }
7799    next(xpp);
7800    parseElementClose(res);
7801    return res;
7802  }
7803
7804  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7805    Person res = new Person();
7806    parseDomainResourceAttributes(xpp, res);
7807    next(xpp);
7808    int eventType = nextNoWhitespace(xpp);
7809    while (eventType != XmlPullParser.END_TAG) {
7810      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7811        res.getIdentifier().add(parseIdentifier(xpp));
7812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7813        res.getName().add(parseHumanName(xpp));
7814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7815        res.getTelecom().add(parseContactPoint(xpp));
7816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
7817        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
7818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
7819        res.setBirthDateElement(parseDate(xpp));
7820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7821        res.getAddress().add(parseAddress(xpp));
7822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
7823        res.setPhoto(parseAttachment(xpp));
7824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7825        res.setManagingOrganization(parseReference(xpp));
7826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
7827        res.setActiveElement(parseBoolean(xpp));
7828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
7829        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
7830      } else if (!parseDomainResourceContent(eventType, xpp, res))
7831        unknownContent(xpp);
7832      eventType = nextNoWhitespace(xpp);
7833    }
7834    next(xpp);
7835    parseElementClose(res);
7836    return res;
7837  }
7838
7839  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
7840    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
7841    parseBackboneAttributes(xpp, res);
7842    next(xpp);
7843    int eventType = nextNoWhitespace(xpp);
7844    while (eventType != XmlPullParser.END_TAG) {
7845      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7846        res.setTarget(parseReference(xpp));
7847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
7848        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
7849      } else if (!parseBackboneContent(eventType, xpp, res))
7850        unknownContent(xpp);
7851      eventType = nextNoWhitespace(xpp);
7852    }
7853    next(xpp);
7854    parseElementClose(res);
7855    return res;
7856  }
7857
7858  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7859    Practitioner res = new Practitioner();
7860    parseDomainResourceAttributes(xpp, res);
7861    next(xpp);
7862    int eventType = nextNoWhitespace(xpp);
7863    while (eventType != XmlPullParser.END_TAG) {
7864      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7865        res.getIdentifier().add(parseIdentifier(xpp));
7866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
7867        res.setActiveElement(parseBoolean(xpp));
7868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7869        res.setName(parseHumanName(xpp));
7870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7871        res.getTelecom().add(parseContactPoint(xpp));
7872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7873        res.getAddress().add(parseAddress(xpp));
7874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
7875        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
7876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
7877        res.setBirthDateElement(parseDate(xpp));
7878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
7879        res.getPhoto().add(parseAttachment(xpp));
7880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitionerRole")) {
7881        res.getPractitionerRole().add(parsePractitionerPractitionerPractitionerRoleComponent(xpp, res));
7882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
7883        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
7884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
7885        res.getCommunication().add(parseCodeableConcept(xpp));
7886      } else if (!parseDomainResourceContent(eventType, xpp, res))
7887        unknownContent(xpp);
7888      eventType = nextNoWhitespace(xpp);
7889    }
7890    next(xpp);
7891    parseElementClose(res);
7892    return res;
7893  }
7894
7895  protected Practitioner.PractitionerPractitionerRoleComponent parsePractitionerPractitionerPractitionerRoleComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
7896    Practitioner.PractitionerPractitionerRoleComponent res = new Practitioner.PractitionerPractitionerRoleComponent();
7897    parseBackboneAttributes(xpp, res);
7898    next(xpp);
7899    int eventType = nextNoWhitespace(xpp);
7900    while (eventType != XmlPullParser.END_TAG) {
7901      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7902        res.setManagingOrganization(parseReference(xpp));
7903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7904        res.setRole(parseCodeableConcept(xpp));
7905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
7906        res.getSpecialty().add(parseCodeableConcept(xpp));
7907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7908        res.setPeriod(parsePeriod(xpp));
7909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7910        res.getLocation().add(parseReference(xpp));
7911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
7912        res.getHealthcareService().add(parseReference(xpp));
7913      } else if (!parseBackboneContent(eventType, xpp, res))
7914        unknownContent(xpp);
7915      eventType = nextNoWhitespace(xpp);
7916    }
7917    next(xpp);
7918    parseElementClose(res);
7919    return res;
7920  }
7921
7922  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
7923    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
7924    parseBackboneAttributes(xpp, res);
7925    next(xpp);
7926    int eventType = nextNoWhitespace(xpp);
7927    while (eventType != XmlPullParser.END_TAG) {
7928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7929        res.getIdentifier().add(parseIdentifier(xpp));
7930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7931        res.setCode(parseCodeableConcept(xpp));
7932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7933        res.setPeriod(parsePeriod(xpp));
7934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
7935        res.setIssuer(parseReference(xpp));
7936      } else if (!parseBackboneContent(eventType, xpp, res))
7937        unknownContent(xpp);
7938      eventType = nextNoWhitespace(xpp);
7939    }
7940    next(xpp);
7941    parseElementClose(res);
7942    return res;
7943  }
7944
7945  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7946    Procedure res = new Procedure();
7947    parseDomainResourceAttributes(xpp, res);
7948    next(xpp);
7949    int eventType = nextNoWhitespace(xpp);
7950    while (eventType != XmlPullParser.END_TAG) {
7951      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7952        res.getIdentifier().add(parseIdentifier(xpp));
7953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7954        res.setSubject(parseReference(xpp));
7955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7956        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
7957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7958        res.setCategory(parseCodeableConcept(xpp));
7959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7960        res.setCode(parseCodeableConcept(xpp));
7961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notPerformed")) {
7962        res.setNotPerformedElement(parseBoolean(xpp));
7963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotPerformed")) {
7964        res.getReasonNotPerformed().add(parseCodeableConcept(xpp));
7965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
7966        res.getBodySite().add(parseCodeableConcept(xpp));
7967      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
7968        res.setReason(parseType("reason", xpp));
7969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7970        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
7971      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
7972        res.setPerformed(parseType("performed", xpp));
7973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7974        res.setEncounter(parseReference(xpp));
7975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7976        res.setLocation(parseReference(xpp));
7977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7978        res.setOutcome(parseCodeableConcept(xpp));
7979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
7980        res.getReport().add(parseReference(xpp));
7981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
7982        res.getComplication().add(parseCodeableConcept(xpp));
7983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
7984        res.getFollowUp().add(parseCodeableConcept(xpp));
7985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7986        res.setRequest(parseReference(xpp));
7987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
7988        res.getNotes().add(parseAnnotation(xpp));
7989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
7990        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
7991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("used")) {
7992        res.getUsed().add(parseReference(xpp));
7993      } else if (!parseDomainResourceContent(eventType, xpp, res))
7994        unknownContent(xpp);
7995      eventType = nextNoWhitespace(xpp);
7996    }
7997    next(xpp);
7998    parseElementClose(res);
7999    return res;
8000  }
8001
8002  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
8003    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
8004    parseBackboneAttributes(xpp, res);
8005    next(xpp);
8006    int eventType = nextNoWhitespace(xpp);
8007    while (eventType != XmlPullParser.END_TAG) {
8008      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
8009        res.setActor(parseReference(xpp));
8010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8011        res.setRole(parseCodeableConcept(xpp));
8012      } else if (!parseBackboneContent(eventType, xpp, res))
8013        unknownContent(xpp);
8014      eventType = nextNoWhitespace(xpp);
8015    }
8016    next(xpp);
8017    parseElementClose(res);
8018    return res;
8019  }
8020
8021  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
8022    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
8023    parseBackboneAttributes(xpp, res);
8024    next(xpp);
8025    int eventType = nextNoWhitespace(xpp);
8026    while (eventType != XmlPullParser.END_TAG) {
8027      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
8028        res.setAction(parseCodeableConcept(xpp));
8029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
8030        res.setManipulated(parseReference(xpp));
8031      } else if (!parseBackboneContent(eventType, xpp, res))
8032        unknownContent(xpp);
8033      eventType = nextNoWhitespace(xpp);
8034    }
8035    next(xpp);
8036    parseElementClose(res);
8037    return res;
8038  }
8039
8040  protected ProcedureRequest parseProcedureRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8041    ProcedureRequest res = new ProcedureRequest();
8042    parseDomainResourceAttributes(xpp, res);
8043    next(xpp);
8044    int eventType = nextNoWhitespace(xpp);
8045    while (eventType != XmlPullParser.END_TAG) {
8046      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8047        res.getIdentifier().add(parseIdentifier(xpp));
8048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8049        res.setSubject(parseReference(xpp));
8050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8051        res.setCode(parseCodeableConcept(xpp));
8052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8053        res.getBodySite().add(parseCodeableConcept(xpp));
8054      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
8055        res.setReason(parseType("reason", xpp));
8056      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
8057        res.setScheduled(parseType("scheduled", xpp));
8058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8059        res.setEncounter(parseReference(xpp));
8060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8061        res.setPerformer(parseReference(xpp));
8062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8063        res.setStatusElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestStatus.NULL, new ProcedureRequest.ProcedureRequestStatusEnumFactory()));
8064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
8065        res.getNotes().add(parseAnnotation(xpp));
8066      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
8067        res.setAsNeeded(parseType("asNeeded", xpp));
8068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedOn")) {
8069        res.setOrderedOnElement(parseDateTime(xpp));
8070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
8071        res.setOrderer(parseReference(xpp));
8072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8073        res.setPriorityElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestPriority.NULL, new ProcedureRequest.ProcedureRequestPriorityEnumFactory()));
8074      } else if (!parseDomainResourceContent(eventType, xpp, res))
8075        unknownContent(xpp);
8076      eventType = nextNoWhitespace(xpp);
8077    }
8078    next(xpp);
8079    parseElementClose(res);
8080    return res;
8081  }
8082
8083  protected ProcessRequest parseProcessRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8084    ProcessRequest res = new ProcessRequest();
8085    parseDomainResourceAttributes(xpp, res);
8086    next(xpp);
8087    int eventType = nextNoWhitespace(xpp);
8088    while (eventType != XmlPullParser.END_TAG) {
8089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
8090        res.setActionElement(parseEnumeration(xpp, ProcessRequest.ActionList.NULL, new ProcessRequest.ActionListEnumFactory()));
8091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8092        res.getIdentifier().add(parseIdentifier(xpp));
8093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
8094        res.setRuleset(parseCoding(xpp));
8095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
8096        res.setOriginalRuleset(parseCoding(xpp));
8097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8098        res.setCreatedElement(parseDateTime(xpp));
8099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8100        res.setTarget(parseReference(xpp));
8101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8102        res.setProvider(parseReference(xpp));
8103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8104        res.setOrganization(parseReference(xpp));
8105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8106        res.setRequest(parseReference(xpp));
8107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
8108        res.setResponse(parseReference(xpp));
8109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nullify")) {
8110        res.setNullifyElement(parseBoolean(xpp));
8111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8112        res.setReferenceElement(parseString(xpp));
8113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8114        res.getItem().add(parseProcessRequestItemsComponent(xpp, res));
8115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
8116        res.getInclude().add(parseString(xpp));
8117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
8118        res.getExclude().add(parseString(xpp));
8119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8120        res.setPeriod(parsePeriod(xpp));
8121      } else if (!parseDomainResourceContent(eventType, xpp, res))
8122        unknownContent(xpp);
8123      eventType = nextNoWhitespace(xpp);
8124    }
8125    next(xpp);
8126    parseElementClose(res);
8127    return res;
8128  }
8129
8130  protected ProcessRequest.ItemsComponent parseProcessRequestItemsComponent(XmlPullParser xpp, ProcessRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8131    ProcessRequest.ItemsComponent res = new ProcessRequest.ItemsComponent();
8132    parseBackboneAttributes(xpp, res);
8133    next(xpp);
8134    int eventType = nextNoWhitespace(xpp);
8135    while (eventType != XmlPullParser.END_TAG) {
8136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
8137        res.setSequenceLinkIdElement(parseInteger(xpp));
8138      } else if (!parseBackboneContent(eventType, xpp, res))
8139        unknownContent(xpp);
8140      eventType = nextNoWhitespace(xpp);
8141    }
8142    next(xpp);
8143    parseElementClose(res);
8144    return res;
8145  }
8146
8147  protected ProcessResponse parseProcessResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8148    ProcessResponse res = new ProcessResponse();
8149    parseDomainResourceAttributes(xpp, res);
8150    next(xpp);
8151    int eventType = nextNoWhitespace(xpp);
8152    while (eventType != XmlPullParser.END_TAG) {
8153      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8154        res.getIdentifier().add(parseIdentifier(xpp));
8155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8156        res.setRequest(parseReference(xpp));
8157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8158        res.setOutcome(parseCoding(xpp));
8159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8160        res.setDispositionElement(parseString(xpp));
8161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
8162        res.setRuleset(parseCoding(xpp));
8163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
8164        res.setOriginalRuleset(parseCoding(xpp));
8165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8166        res.setCreatedElement(parseDateTime(xpp));
8167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8168        res.setOrganization(parseReference(xpp));
8169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
8170        res.setRequestProvider(parseReference(xpp));
8171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
8172        res.setRequestOrganization(parseReference(xpp));
8173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
8174        res.setForm(parseCoding(xpp));
8175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
8176        res.getNotes().add(parseProcessResponseProcessResponseNotesComponent(xpp, res));
8177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
8178        res.getError().add(parseCoding(xpp));
8179      } else if (!parseDomainResourceContent(eventType, xpp, res))
8180        unknownContent(xpp);
8181      eventType = nextNoWhitespace(xpp);
8182    }
8183    next(xpp);
8184    parseElementClose(res);
8185    return res;
8186  }
8187
8188  protected ProcessResponse.ProcessResponseNotesComponent parseProcessResponseProcessResponseNotesComponent(XmlPullParser xpp, ProcessResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
8189    ProcessResponse.ProcessResponseNotesComponent res = new ProcessResponse.ProcessResponseNotesComponent();
8190    parseBackboneAttributes(xpp, res);
8191    next(xpp);
8192    int eventType = nextNoWhitespace(xpp);
8193    while (eventType != XmlPullParser.END_TAG) {
8194      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8195        res.setType(parseCoding(xpp));
8196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8197        res.setTextElement(parseString(xpp));
8198      } else if (!parseBackboneContent(eventType, xpp, res))
8199        unknownContent(xpp);
8200      eventType = nextNoWhitespace(xpp);
8201    }
8202    next(xpp);
8203    parseElementClose(res);
8204    return res;
8205  }
8206
8207  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8208    Provenance res = new Provenance();
8209    parseDomainResourceAttributes(xpp, res);
8210    next(xpp);
8211    int eventType = nextNoWhitespace(xpp);
8212    while (eventType != XmlPullParser.END_TAG) {
8213      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8214        res.getTarget().add(parseReference(xpp));
8215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8216        res.setPeriod(parsePeriod(xpp));
8217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
8218        res.setRecordedElement(parseInstant(xpp));
8219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8220        res.getReason().add(parseCodeableConcept(xpp));
8221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
8222        res.setActivity(parseCodeableConcept(xpp));
8223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8224        res.setLocation(parseReference(xpp));
8225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
8226        res.getPolicy().add(parseUri(xpp));
8227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
8228        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
8229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
8230        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
8231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
8232        res.getSignature().add(parseSignature(xpp));
8233      } else if (!parseDomainResourceContent(eventType, xpp, res))
8234        unknownContent(xpp);
8235      eventType = nextNoWhitespace(xpp);
8236    }
8237    next(xpp);
8238    parseElementClose(res);
8239    return res;
8240  }
8241
8242  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
8243    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
8244    parseBackboneAttributes(xpp, res);
8245    next(xpp);
8246    int eventType = nextNoWhitespace(xpp);
8247    while (eventType != XmlPullParser.END_TAG) {
8248      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8249        res.setRole(parseCoding(xpp));
8250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
8251        res.setActor(parseReference(xpp));
8252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
8253        res.setUserId(parseIdentifier(xpp));
8254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAgent")) {
8255        res.getRelatedAgent().add(parseProvenanceProvenanceAgentRelatedAgentComponent(xpp, owner));
8256      } else if (!parseBackboneContent(eventType, xpp, res))
8257        unknownContent(xpp);
8258      eventType = nextNoWhitespace(xpp);
8259    }
8260    next(xpp);
8261    parseElementClose(res);
8262    return res;
8263  }
8264
8265  protected Provenance.ProvenanceAgentRelatedAgentComponent parseProvenanceProvenanceAgentRelatedAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
8266    Provenance.ProvenanceAgentRelatedAgentComponent res = new Provenance.ProvenanceAgentRelatedAgentComponent();
8267    parseBackboneAttributes(xpp, res);
8268    next(xpp);
8269    int eventType = nextNoWhitespace(xpp);
8270    while (eventType != XmlPullParser.END_TAG) {
8271      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8272        res.setType(parseCodeableConcept(xpp));
8273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8274        res.setTargetElement(parseUri(xpp));
8275      } else if (!parseBackboneContent(eventType, xpp, res))
8276        unknownContent(xpp);
8277      eventType = nextNoWhitespace(xpp);
8278    }
8279    next(xpp);
8280    parseElementClose(res);
8281    return res;
8282  }
8283
8284  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
8285    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
8286    parseBackboneAttributes(xpp, res);
8287    next(xpp);
8288    int eventType = nextNoWhitespace(xpp);
8289    while (eventType != XmlPullParser.END_TAG) {
8290      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8291        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
8292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8293        res.setType(parseCoding(xpp));
8294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8295        res.setReferenceElement(parseUri(xpp));
8296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
8297        res.setDisplayElement(parseString(xpp));
8298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
8299        res.setAgent(parseProvenanceProvenanceAgentComponent(xpp, owner));
8300      } else if (!parseBackboneContent(eventType, xpp, res))
8301        unknownContent(xpp);
8302      eventType = nextNoWhitespace(xpp);
8303    }
8304    next(xpp);
8305    parseElementClose(res);
8306    return res;
8307  }
8308
8309  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8310    Questionnaire res = new Questionnaire();
8311    parseDomainResourceAttributes(xpp, res);
8312    next(xpp);
8313    int eventType = nextNoWhitespace(xpp);
8314    while (eventType != XmlPullParser.END_TAG) {
8315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8316        res.getIdentifier().add(parseIdentifier(xpp));
8317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8318        res.setVersionElement(parseString(xpp));
8319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8320        res.setStatusElement(parseEnumeration(xpp, Questionnaire.QuestionnaireStatus.NULL, new Questionnaire.QuestionnaireStatusEnumFactory()));
8321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8322        res.setDateElement(parseDateTime(xpp));
8323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8324        res.setPublisherElement(parseString(xpp));
8325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8326        res.getTelecom().add(parseContactPoint(xpp));
8327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
8328        res.getSubjectType().add(parseCode(xpp));
8329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8330        res.setGroup(parseQuestionnaireGroupComponent(xpp, res));
8331      } else if (!parseDomainResourceContent(eventType, xpp, res))
8332        unknownContent(xpp);
8333      eventType = nextNoWhitespace(xpp);
8334    }
8335    next(xpp);
8336    parseElementClose(res);
8337    return res;
8338  }
8339
8340  protected Questionnaire.GroupComponent parseQuestionnaireGroupComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
8341    Questionnaire.GroupComponent res = new Questionnaire.GroupComponent();
8342    parseBackboneAttributes(xpp, res);
8343    next(xpp);
8344    int eventType = nextNoWhitespace(xpp);
8345    while (eventType != XmlPullParser.END_TAG) {
8346      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8347        res.setLinkIdElement(parseString(xpp));
8348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8349        res.setTitleElement(parseString(xpp));
8350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
8351        res.getConcept().add(parseCoding(xpp));
8352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8353        res.setTextElement(parseString(xpp));
8354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
8355        res.setRequiredElement(parseBoolean(xpp));
8356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
8357        res.setRepeatsElement(parseBoolean(xpp));
8358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8359        res.getGroup().add(parseQuestionnaireGroupComponent(xpp, owner));
8360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
8361        res.getQuestion().add(parseQuestionnaireQuestionComponent(xpp, owner));
8362      } else if (!parseBackboneContent(eventType, xpp, res))
8363        unknownContent(xpp);
8364      eventType = nextNoWhitespace(xpp);
8365    }
8366    next(xpp);
8367    parseElementClose(res);
8368    return res;
8369  }
8370
8371  protected Questionnaire.QuestionComponent parseQuestionnaireQuestionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
8372    Questionnaire.QuestionComponent res = new Questionnaire.QuestionComponent();
8373    parseBackboneAttributes(xpp, res);
8374    next(xpp);
8375    int eventType = nextNoWhitespace(xpp);
8376    while (eventType != XmlPullParser.END_TAG) {
8377      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8378        res.setLinkIdElement(parseString(xpp));
8379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
8380        res.getConcept().add(parseCoding(xpp));
8381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8382        res.setTextElement(parseString(xpp));
8383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8384        res.setTypeElement(parseEnumeration(xpp, Questionnaire.AnswerFormat.NULL, new Questionnaire.AnswerFormatEnumFactory()));
8385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
8386        res.setRequiredElement(parseBoolean(xpp));
8387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
8388        res.setRepeatsElement(parseBoolean(xpp));
8389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("options")) {
8390        res.setOptions(parseReference(xpp));
8391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
8392        res.getOption().add(parseCoding(xpp));
8393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8394        res.getGroup().add(parseQuestionnaireGroupComponent(xpp, owner));
8395      } else if (!parseBackboneContent(eventType, xpp, res))
8396        unknownContent(xpp);
8397      eventType = nextNoWhitespace(xpp);
8398    }
8399    next(xpp);
8400    parseElementClose(res);
8401    return res;
8402  }
8403
8404  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8405    QuestionnaireResponse res = new QuestionnaireResponse();
8406    parseDomainResourceAttributes(xpp, res);
8407    next(xpp);
8408    int eventType = nextNoWhitespace(xpp);
8409    while (eventType != XmlPullParser.END_TAG) {
8410      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8411        res.setIdentifier(parseIdentifier(xpp));
8412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
8413        res.setQuestionnaire(parseReference(xpp));
8414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8415        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
8416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8417        res.setSubject(parseReference(xpp));
8418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8419        res.setAuthor(parseReference(xpp));
8420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
8421        res.setAuthoredElement(parseDateTime(xpp));
8422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8423        res.setSource(parseReference(xpp));
8424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8425        res.setEncounter(parseReference(xpp));
8426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8427        res.setGroup(parseQuestionnaireResponseGroupComponent(xpp, res));
8428      } else if (!parseDomainResourceContent(eventType, xpp, res))
8429        unknownContent(xpp);
8430      eventType = nextNoWhitespace(xpp);
8431    }
8432    next(xpp);
8433    parseElementClose(res);
8434    return res;
8435  }
8436
8437  protected QuestionnaireResponse.GroupComponent parseQuestionnaireResponseGroupComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
8438    QuestionnaireResponse.GroupComponent res = new QuestionnaireResponse.GroupComponent();
8439    parseBackboneAttributes(xpp, res);
8440    next(xpp);
8441    int eventType = nextNoWhitespace(xpp);
8442    while (eventType != XmlPullParser.END_TAG) {
8443      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8444        res.setLinkIdElement(parseString(xpp));
8445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8446        res.setTitleElement(parseString(xpp));
8447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8448        res.setTextElement(parseString(xpp));
8449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8450        res.setSubject(parseReference(xpp));
8451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8452        res.getGroup().add(parseQuestionnaireResponseGroupComponent(xpp, owner));
8453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
8454        res.getQuestion().add(parseQuestionnaireResponseQuestionComponent(xpp, owner));
8455      } else if (!parseBackboneContent(eventType, xpp, res))
8456        unknownContent(xpp);
8457      eventType = nextNoWhitespace(xpp);
8458    }
8459    next(xpp);
8460    parseElementClose(res);
8461    return res;
8462  }
8463
8464  protected QuestionnaireResponse.QuestionComponent parseQuestionnaireResponseQuestionComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
8465    QuestionnaireResponse.QuestionComponent res = new QuestionnaireResponse.QuestionComponent();
8466    parseBackboneAttributes(xpp, res);
8467    next(xpp);
8468    int eventType = nextNoWhitespace(xpp);
8469    while (eventType != XmlPullParser.END_TAG) {
8470      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8471        res.setLinkIdElement(parseString(xpp));
8472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8473        res.setTextElement(parseString(xpp));
8474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
8475        res.getAnswer().add(parseQuestionnaireResponseQuestionAnswerComponent(xpp, owner));
8476      } else if (!parseBackboneContent(eventType, xpp, res))
8477        unknownContent(xpp);
8478      eventType = nextNoWhitespace(xpp);
8479    }
8480    next(xpp);
8481    parseElementClose(res);
8482    return res;
8483  }
8484
8485  protected QuestionnaireResponse.QuestionAnswerComponent parseQuestionnaireResponseQuestionAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
8486    QuestionnaireResponse.QuestionAnswerComponent res = new QuestionnaireResponse.QuestionAnswerComponent();
8487    parseBackboneAttributes(xpp, res);
8488    next(xpp);
8489    int eventType = nextNoWhitespace(xpp);
8490    while (eventType != XmlPullParser.END_TAG) {
8491      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8492        res.setValue(parseType("value", xpp));
8493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8494        res.getGroup().add(parseQuestionnaireResponseGroupComponent(xpp, owner));
8495      } else if (!parseBackboneContent(eventType, xpp, res))
8496        unknownContent(xpp);
8497      eventType = nextNoWhitespace(xpp);
8498    }
8499    next(xpp);
8500    parseElementClose(res);
8501    return res;
8502  }
8503
8504  protected ReferralRequest parseReferralRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8505    ReferralRequest res = new ReferralRequest();
8506    parseDomainResourceAttributes(xpp, res);
8507    next(xpp);
8508    int eventType = nextNoWhitespace(xpp);
8509    while (eventType != XmlPullParser.END_TAG) {
8510      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8511        res.setStatusElement(parseEnumeration(xpp, ReferralRequest.ReferralStatus.NULL, new ReferralRequest.ReferralStatusEnumFactory()));
8512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8513        res.getIdentifier().add(parseIdentifier(xpp));
8514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8515        res.setDateElement(parseDateTime(xpp));
8516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8517        res.setType(parseCodeableConcept(xpp));
8518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
8519        res.setSpecialty(parseCodeableConcept(xpp));
8520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8521        res.setPriority(parseCodeableConcept(xpp));
8522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8523        res.setPatient(parseReference(xpp));
8524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
8525        res.setRequester(parseReference(xpp));
8526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
8527        res.getRecipient().add(parseReference(xpp));
8528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8529        res.setEncounter(parseReference(xpp));
8530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateSent")) {
8531        res.setDateSentElement(parseDateTime(xpp));
8532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8533        res.setReason(parseCodeableConcept(xpp));
8534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8535        res.setDescriptionElement(parseString(xpp));
8536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceRequested")) {
8537        res.getServiceRequested().add(parseCodeableConcept(xpp));
8538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
8539        res.getSupportingInformation().add(parseReference(xpp));
8540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fulfillmentTime")) {
8541        res.setFulfillmentTime(parsePeriod(xpp));
8542      } else if (!parseDomainResourceContent(eventType, xpp, res))
8543        unknownContent(xpp);
8544      eventType = nextNoWhitespace(xpp);
8545    }
8546    next(xpp);
8547    parseElementClose(res);
8548    return res;
8549  }
8550
8551  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8552    RelatedPerson res = new RelatedPerson();
8553    parseDomainResourceAttributes(xpp, res);
8554    next(xpp);
8555    int eventType = nextNoWhitespace(xpp);
8556    while (eventType != XmlPullParser.END_TAG) {
8557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8558        res.getIdentifier().add(parseIdentifier(xpp));
8559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8560        res.setPatient(parseReference(xpp));
8561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8562        res.setRelationship(parseCodeableConcept(xpp));
8563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8564        res.setName(parseHumanName(xpp));
8565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8566        res.getTelecom().add(parseContactPoint(xpp));
8567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
8568        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
8569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
8570        res.setBirthDateElement(parseDate(xpp));
8571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
8572        res.getAddress().add(parseAddress(xpp));
8573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
8574        res.getPhoto().add(parseAttachment(xpp));
8575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8576        res.setPeriod(parsePeriod(xpp));
8577      } else if (!parseDomainResourceContent(eventType, xpp, res))
8578        unknownContent(xpp);
8579      eventType = nextNoWhitespace(xpp);
8580    }
8581    next(xpp);
8582    parseElementClose(res);
8583    return res;
8584  }
8585
8586  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8587    RiskAssessment res = new RiskAssessment();
8588    parseDomainResourceAttributes(xpp, res);
8589    next(xpp);
8590    int eventType = nextNoWhitespace(xpp);
8591    while (eventType != XmlPullParser.END_TAG) {
8592      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8593        res.setSubject(parseReference(xpp));
8594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8595        res.setDateElement(parseDateTime(xpp));
8596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
8597        res.setCondition(parseReference(xpp));
8598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8599        res.setEncounter(parseReference(xpp));
8600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8601        res.setPerformer(parseReference(xpp));
8602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8603        res.setIdentifier(parseIdentifier(xpp));
8604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
8605        res.setMethod(parseCodeableConcept(xpp));
8606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
8607        res.getBasis().add(parseReference(xpp));
8608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
8609        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
8610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
8611        res.setMitigationElement(parseString(xpp));
8612      } else if (!parseDomainResourceContent(eventType, xpp, res))
8613        unknownContent(xpp);
8614      eventType = nextNoWhitespace(xpp);
8615    }
8616    next(xpp);
8617    parseElementClose(res);
8618    return res;
8619  }
8620
8621  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
8622    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
8623    parseBackboneAttributes(xpp, res);
8624    next(xpp);
8625    int eventType = nextNoWhitespace(xpp);
8626    while (eventType != XmlPullParser.END_TAG) {
8627      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8628        res.setOutcome(parseCodeableConcept(xpp));
8629      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
8630        res.setProbability(parseType("probability", xpp));
8631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
8632        res.setRelativeRiskElement(parseDecimal(xpp));
8633      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
8634        res.setWhen(parseType("when", xpp));
8635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
8636        res.setRationaleElement(parseString(xpp));
8637      } else if (!parseBackboneContent(eventType, xpp, res))
8638        unknownContent(xpp);
8639      eventType = nextNoWhitespace(xpp);
8640    }
8641    next(xpp);
8642    parseElementClose(res);
8643    return res;
8644  }
8645
8646  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8647    Schedule res = new Schedule();
8648    parseDomainResourceAttributes(xpp, res);
8649    next(xpp);
8650    int eventType = nextNoWhitespace(xpp);
8651    while (eventType != XmlPullParser.END_TAG) {
8652      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8653        res.getIdentifier().add(parseIdentifier(xpp));
8654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8655        res.getType().add(parseCodeableConcept(xpp));
8656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
8657        res.setActor(parseReference(xpp));
8658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
8659        res.setPlanningHorizon(parsePeriod(xpp));
8660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
8661        res.setCommentElement(parseString(xpp));
8662      } else if (!parseDomainResourceContent(eventType, xpp, res))
8663        unknownContent(xpp);
8664      eventType = nextNoWhitespace(xpp);
8665    }
8666    next(xpp);
8667    parseElementClose(res);
8668    return res;
8669  }
8670
8671  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8672    SearchParameter res = new SearchParameter();
8673    parseDomainResourceAttributes(xpp, res);
8674    next(xpp);
8675    int eventType = nextNoWhitespace(xpp);
8676    while (eventType != XmlPullParser.END_TAG) {
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("name")) {
8680        res.setNameElement(parseString(xpp));
8681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8682        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
8683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8684        res.setExperimentalElement(parseBoolean(xpp));
8685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8686        res.setPublisherElement(parseString(xpp));
8687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8688        res.getContact().add(parseSearchParameterSearchParameterContactComponent(xpp, res));
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("requirements")) {
8692        res.setRequirementsElement(parseString(xpp));
8693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8694        res.setCodeElement(parseCode(xpp));
8695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
8696        res.setBaseElement(parseCode(xpp));
8697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8698        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
8699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8700        res.setDescriptionElement(parseString(xpp));
8701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
8702        res.setXpathElement(parseString(xpp));
8703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
8704        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
8705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8706        res.getTarget().add(parseCode(xpp));
8707      } else if (!parseDomainResourceContent(eventType, xpp, res))
8708        unknownContent(xpp);
8709      eventType = nextNoWhitespace(xpp);
8710    }
8711    next(xpp);
8712    parseElementClose(res);
8713    return res;
8714  }
8715
8716  protected SearchParameter.SearchParameterContactComponent parseSearchParameterSearchParameterContactComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8717    SearchParameter.SearchParameterContactComponent res = new SearchParameter.SearchParameterContactComponent();
8718    parseBackboneAttributes(xpp, res);
8719    next(xpp);
8720    int eventType = nextNoWhitespace(xpp);
8721    while (eventType != XmlPullParser.END_TAG) {
8722      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8723        res.setNameElement(parseString(xpp));
8724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8725        res.getTelecom().add(parseContactPoint(xpp));
8726      } else if (!parseBackboneContent(eventType, xpp, res))
8727        unknownContent(xpp);
8728      eventType = nextNoWhitespace(xpp);
8729    }
8730    next(xpp);
8731    parseElementClose(res);
8732    return res;
8733  }
8734
8735  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8736    Slot res = new Slot();
8737    parseDomainResourceAttributes(xpp, res);
8738    next(xpp);
8739    int eventType = nextNoWhitespace(xpp);
8740    while (eventType != XmlPullParser.END_TAG) {
8741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8742        res.getIdentifier().add(parseIdentifier(xpp));
8743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8744        res.setType(parseCodeableConcept(xpp));
8745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
8746        res.setSchedule(parseReference(xpp));
8747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("freeBusyType")) {
8748        res.setFreeBusyTypeElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
8749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
8750        res.setStartElement(parseInstant(xpp));
8751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
8752        res.setEndElement(parseInstant(xpp));
8753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
8754        res.setOverbookedElement(parseBoolean(xpp));
8755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
8756        res.setCommentElement(parseString(xpp));
8757      } else if (!parseDomainResourceContent(eventType, xpp, res))
8758        unknownContent(xpp);
8759      eventType = nextNoWhitespace(xpp);
8760    }
8761    next(xpp);
8762    parseElementClose(res);
8763    return res;
8764  }
8765
8766  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8767    Specimen res = new Specimen();
8768    parseDomainResourceAttributes(xpp, res);
8769    next(xpp);
8770    int eventType = nextNoWhitespace(xpp);
8771    while (eventType != XmlPullParser.END_TAG) {
8772      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8773        res.getIdentifier().add(parseIdentifier(xpp));
8774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8775        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
8776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8777        res.setType(parseCodeableConcept(xpp));
8778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
8779        res.getParent().add(parseReference(xpp));
8780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8781        res.setSubject(parseReference(xpp));
8782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
8783        res.setAccessionIdentifier(parseIdentifier(xpp));
8784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
8785        res.setReceivedTimeElement(parseDateTime(xpp));
8786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
8787        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
8788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("treatment")) {
8789        res.getTreatment().add(parseSpecimenSpecimenTreatmentComponent(xpp, res));
8790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
8791        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
8792      } else if (!parseDomainResourceContent(eventType, xpp, res))
8793        unknownContent(xpp);
8794      eventType = nextNoWhitespace(xpp);
8795    }
8796    next(xpp);
8797    parseElementClose(res);
8798    return res;
8799  }
8800
8801  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
8802    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
8803    parseBackboneAttributes(xpp, res);
8804    next(xpp);
8805    int eventType = nextNoWhitespace(xpp);
8806    while (eventType != XmlPullParser.END_TAG) {
8807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
8808        res.setCollector(parseReference(xpp));
8809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
8810        res.getComment().add(parseString(xpp));
8811      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
8812        res.setCollected(parseType("collected", xpp));
8813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8814        res.setQuantity(parseSimpleQuantity(xpp));
8815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
8816        res.setMethod(parseCodeableConcept(xpp));
8817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8818        res.setBodySite(parseCodeableConcept(xpp));
8819      } else if (!parseBackboneContent(eventType, xpp, res))
8820        unknownContent(xpp);
8821      eventType = nextNoWhitespace(xpp);
8822    }
8823    next(xpp);
8824    parseElementClose(res);
8825    return res;
8826  }
8827
8828  protected Specimen.SpecimenTreatmentComponent parseSpecimenSpecimenTreatmentComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
8829    Specimen.SpecimenTreatmentComponent res = new Specimen.SpecimenTreatmentComponent();
8830    parseBackboneAttributes(xpp, res);
8831    next(xpp);
8832    int eventType = nextNoWhitespace(xpp);
8833    while (eventType != XmlPullParser.END_TAG) {
8834      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8835        res.setDescriptionElement(parseString(xpp));
8836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
8837        res.setProcedure(parseCodeableConcept(xpp));
8838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
8839        res.getAdditive().add(parseReference(xpp));
8840      } else if (!parseBackboneContent(eventType, xpp, res))
8841        unknownContent(xpp);
8842      eventType = nextNoWhitespace(xpp);
8843    }
8844    next(xpp);
8845    parseElementClose(res);
8846    return res;
8847  }
8848
8849  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
8850    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
8851    parseBackboneAttributes(xpp, res);
8852    next(xpp);
8853    int eventType = nextNoWhitespace(xpp);
8854    while (eventType != XmlPullParser.END_TAG) {
8855      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8856        res.getIdentifier().add(parseIdentifier(xpp));
8857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8858        res.setDescriptionElement(parseString(xpp));
8859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8860        res.setType(parseCodeableConcept(xpp));
8861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
8862        res.setCapacity(parseSimpleQuantity(xpp));
8863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
8864        res.setSpecimenQuantity(parseSimpleQuantity(xpp));
8865      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
8866        res.setAdditive(parseType("additive", xpp));
8867      } else if (!parseBackboneContent(eventType, xpp, res))
8868        unknownContent(xpp);
8869      eventType = nextNoWhitespace(xpp);
8870    }
8871    next(xpp);
8872    parseElementClose(res);
8873    return res;
8874  }
8875
8876  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8877    StructureDefinition res = new StructureDefinition();
8878    parseDomainResourceAttributes(xpp, res);
8879    next(xpp);
8880    int eventType = nextNoWhitespace(xpp);
8881    while (eventType != XmlPullParser.END_TAG) {
8882      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8883        res.setUrlElement(parseUri(xpp));
8884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8885        res.getIdentifier().add(parseIdentifier(xpp));
8886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8887        res.setVersionElement(parseString(xpp));
8888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8889        res.setNameElement(parseString(xpp));
8890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
8891        res.setDisplayElement(parseString(xpp));
8892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8893        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
8894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8895        res.setExperimentalElement(parseBoolean(xpp));
8896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8897        res.setPublisherElement(parseString(xpp));
8898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8899        res.getContact().add(parseStructureDefinitionStructureDefinitionContactComponent(xpp, res));
8900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8901        res.setDateElement(parseDateTime(xpp));
8902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8903        res.setDescriptionElement(parseString(xpp));
8904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8905        res.getUseContext().add(parseCodeableConcept(xpp));
8906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
8907        res.setRequirementsElement(parseString(xpp));
8908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
8909        res.setCopyrightElement(parseString(xpp));
8910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8911        res.getCode().add(parseCoding(xpp));
8912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
8913        res.setFhirVersionElement(parseId(xpp));
8914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
8915        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
8916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
8917        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
8918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constrainedType")) {
8919        res.setConstrainedTypeElement(parseCode(xpp));
8920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
8921        res.setAbstractElement(parseBoolean(xpp));
8922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
8923        res.setContextTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContext.NULL, new StructureDefinition.ExtensionContextEnumFactory()));
8924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8925        res.getContext().add(parseString(xpp));
8926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
8927        res.setBaseElement(parseUri(xpp));
8928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
8929        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
8930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
8931        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
8932      } else if (!parseDomainResourceContent(eventType, xpp, res))
8933        unknownContent(xpp);
8934      eventType = nextNoWhitespace(xpp);
8935    }
8936    next(xpp);
8937    parseElementClose(res);
8938    return res;
8939  }
8940
8941  protected StructureDefinition.StructureDefinitionContactComponent parseStructureDefinitionStructureDefinitionContactComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8942    StructureDefinition.StructureDefinitionContactComponent res = new StructureDefinition.StructureDefinitionContactComponent();
8943    parseBackboneAttributes(xpp, res);
8944    next(xpp);
8945    int eventType = nextNoWhitespace(xpp);
8946    while (eventType != XmlPullParser.END_TAG) {
8947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8948        res.setNameElement(parseString(xpp));
8949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8950        res.getTelecom().add(parseContactPoint(xpp));
8951      } else if (!parseBackboneContent(eventType, xpp, res))
8952        unknownContent(xpp);
8953      eventType = nextNoWhitespace(xpp);
8954    }
8955    next(xpp);
8956    parseElementClose(res);
8957    return res;
8958  }
8959
8960  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8961    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
8962    parseBackboneAttributes(xpp, res);
8963    next(xpp);
8964    int eventType = nextNoWhitespace(xpp);
8965    while (eventType != XmlPullParser.END_TAG) {
8966      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
8967        res.setIdentityElement(parseId(xpp));
8968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
8969        res.setUriElement(parseUri(xpp));
8970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8971        res.setNameElement(parseString(xpp));
8972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
8973        res.setCommentsElement(parseString(xpp));
8974      } else if (!parseBackboneContent(eventType, xpp, res))
8975        unknownContent(xpp);
8976      eventType = nextNoWhitespace(xpp);
8977    }
8978    next(xpp);
8979    parseElementClose(res);
8980    return res;
8981  }
8982
8983  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8984    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
8985    parseBackboneAttributes(xpp, res);
8986    next(xpp);
8987    int eventType = nextNoWhitespace(xpp);
8988    while (eventType != XmlPullParser.END_TAG) {
8989      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
8990        res.getElement().add(parseElementDefinition(xpp));
8991      } else if (!parseBackboneContent(eventType, xpp, res))
8992        unknownContent(xpp);
8993      eventType = nextNoWhitespace(xpp);
8994    }
8995    next(xpp);
8996    parseElementClose(res);
8997    return res;
8998  }
8999
9000  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9001    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
9002    parseBackboneAttributes(xpp, res);
9003    next(xpp);
9004    int eventType = nextNoWhitespace(xpp);
9005    while (eventType != XmlPullParser.END_TAG) {
9006      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
9007        res.getElement().add(parseElementDefinition(xpp));
9008      } else if (!parseBackboneContent(eventType, xpp, res))
9009        unknownContent(xpp);
9010      eventType = nextNoWhitespace(xpp);
9011    }
9012    next(xpp);
9013    parseElementClose(res);
9014    return res;
9015  }
9016
9017  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9018    Subscription res = new Subscription();
9019    parseDomainResourceAttributes(xpp, res);
9020    next(xpp);
9021    int eventType = nextNoWhitespace(xpp);
9022    while (eventType != XmlPullParser.END_TAG) {
9023      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
9024        res.setCriteriaElement(parseString(xpp));
9025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9026        res.getContact().add(parseContactPoint(xpp));
9027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9028        res.setReasonElement(parseString(xpp));
9029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9030        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
9031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
9032        res.setErrorElement(parseString(xpp));
9033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
9034        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
9035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
9036        res.setEndElement(parseInstant(xpp));
9037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
9038        res.getTag().add(parseCoding(xpp));
9039      } else if (!parseDomainResourceContent(eventType, xpp, res))
9040        unknownContent(xpp);
9041      eventType = nextNoWhitespace(xpp);
9042    }
9043    next(xpp);
9044    parseElementClose(res);
9045    return res;
9046  }
9047
9048  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
9049    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
9050    parseBackboneAttributes(xpp, res);
9051    next(xpp);
9052    int eventType = nextNoWhitespace(xpp);
9053    while (eventType != XmlPullParser.END_TAG) {
9054      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9055        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
9056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9057        res.setEndpointElement(parseUri(xpp));
9058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
9059        res.setPayloadElement(parseString(xpp));
9060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
9061        res.setHeaderElement(parseString(xpp));
9062      } else if (!parseBackboneContent(eventType, xpp, res))
9063        unknownContent(xpp);
9064      eventType = nextNoWhitespace(xpp);
9065    }
9066    next(xpp);
9067    parseElementClose(res);
9068    return res;
9069  }
9070
9071  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9072    Substance res = new Substance();
9073    parseDomainResourceAttributes(xpp, res);
9074    next(xpp);
9075    int eventType = nextNoWhitespace(xpp);
9076    while (eventType != XmlPullParser.END_TAG) {
9077      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9078        res.getIdentifier().add(parseIdentifier(xpp));
9079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9080        res.getCategory().add(parseCodeableConcept(xpp));
9081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9082        res.setCode(parseCodeableConcept(xpp));
9083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9084        res.setDescriptionElement(parseString(xpp));
9085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9086        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
9087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
9088        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
9089      } else if (!parseDomainResourceContent(eventType, xpp, res))
9090        unknownContent(xpp);
9091      eventType = nextNoWhitespace(xpp);
9092    }
9093    next(xpp);
9094    parseElementClose(res);
9095    return res;
9096  }
9097
9098  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
9099    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
9100    parseBackboneAttributes(xpp, res);
9101    next(xpp);
9102    int eventType = nextNoWhitespace(xpp);
9103    while (eventType != XmlPullParser.END_TAG) {
9104      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9105        res.setIdentifier(parseIdentifier(xpp));
9106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
9107        res.setExpiryElement(parseDateTime(xpp));
9108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9109        res.setQuantity(parseSimpleQuantity(xpp));
9110      } else if (!parseBackboneContent(eventType, xpp, res))
9111        unknownContent(xpp);
9112      eventType = nextNoWhitespace(xpp);
9113    }
9114    next(xpp);
9115    parseElementClose(res);
9116    return res;
9117  }
9118
9119  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
9120    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
9121    parseBackboneAttributes(xpp, res);
9122    next(xpp);
9123    int eventType = nextNoWhitespace(xpp);
9124    while (eventType != XmlPullParser.END_TAG) {
9125      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9126        res.setQuantity(parseRatio(xpp));
9127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
9128        res.setSubstance(parseReference(xpp));
9129      } else if (!parseBackboneContent(eventType, xpp, res))
9130        unknownContent(xpp);
9131      eventType = nextNoWhitespace(xpp);
9132    }
9133    next(xpp);
9134    parseElementClose(res);
9135    return res;
9136  }
9137
9138  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9139    SupplyDelivery res = new SupplyDelivery();
9140    parseDomainResourceAttributes(xpp, res);
9141    next(xpp);
9142    int eventType = nextNoWhitespace(xpp);
9143    while (eventType != XmlPullParser.END_TAG) {
9144      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9145        res.setIdentifier(parseIdentifier(xpp));
9146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9147        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
9148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9149        res.setPatient(parseReference(xpp));
9150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9151        res.setType(parseCodeableConcept(xpp));
9152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9153        res.setQuantity(parseSimpleQuantity(xpp));
9154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
9155        res.setSuppliedItem(parseReference(xpp));
9156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
9157        res.setSupplier(parseReference(xpp));
9158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
9159        res.setWhenPrepared(parsePeriod(xpp));
9160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
9161        res.setTimeElement(parseDateTime(xpp));
9162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9163        res.setDestination(parseReference(xpp));
9164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
9165        res.getReceiver().add(parseReference(xpp));
9166      } else if (!parseDomainResourceContent(eventType, xpp, res))
9167        unknownContent(xpp);
9168      eventType = nextNoWhitespace(xpp);
9169    }
9170    next(xpp);
9171    parseElementClose(res);
9172    return res;
9173  }
9174
9175  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9176    SupplyRequest res = new SupplyRequest();
9177    parseDomainResourceAttributes(xpp, res);
9178    next(xpp);
9179    int eventType = nextNoWhitespace(xpp);
9180    while (eventType != XmlPullParser.END_TAG) {
9181      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9182        res.setPatient(parseReference(xpp));
9183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
9184        res.setSource(parseReference(xpp));
9185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9186        res.setDateElement(parseDateTime(xpp));
9187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9188        res.setIdentifier(parseIdentifier(xpp));
9189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9190        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
9191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
9192        res.setKind(parseCodeableConcept(xpp));
9193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedItem")) {
9194        res.setOrderedItem(parseReference(xpp));
9195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
9196        res.getSupplier().add(parseReference(xpp));
9197      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
9198        res.setReason(parseType("reason", xpp));
9199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
9200        res.setWhen(parseSupplyRequestSupplyRequestWhenComponent(xpp, res));
9201      } else if (!parseDomainResourceContent(eventType, xpp, res))
9202        unknownContent(xpp);
9203      eventType = nextNoWhitespace(xpp);
9204    }
9205    next(xpp);
9206    parseElementClose(res);
9207    return res;
9208  }
9209
9210  protected SupplyRequest.SupplyRequestWhenComponent parseSupplyRequestSupplyRequestWhenComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9211    SupplyRequest.SupplyRequestWhenComponent res = new SupplyRequest.SupplyRequestWhenComponent();
9212    parseBackboneAttributes(xpp, res);
9213    next(xpp);
9214    int eventType = nextNoWhitespace(xpp);
9215    while (eventType != XmlPullParser.END_TAG) {
9216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9217        res.setCode(parseCodeableConcept(xpp));
9218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
9219        res.setSchedule(parseTiming(xpp));
9220      } else if (!parseBackboneContent(eventType, xpp, res))
9221        unknownContent(xpp);
9222      eventType = nextNoWhitespace(xpp);
9223    }
9224    next(xpp);
9225    parseElementClose(res);
9226    return res;
9227  }
9228
9229  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9230    TestScript res = new TestScript();
9231    parseDomainResourceAttributes(xpp, res);
9232    next(xpp);
9233    int eventType = nextNoWhitespace(xpp);
9234    while (eventType != XmlPullParser.END_TAG) {
9235      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9236        res.setUrlElement(parseUri(xpp));
9237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9238        res.setVersionElement(parseString(xpp));
9239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9240        res.setNameElement(parseString(xpp));
9241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9242        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
9243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9244        res.setIdentifier(parseIdentifier(xpp));
9245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9246        res.setExperimentalElement(parseBoolean(xpp));
9247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9248        res.setPublisherElement(parseString(xpp));
9249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9250        res.getContact().add(parseTestScriptTestScriptContactComponent(xpp, res));
9251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9252        res.setDateElement(parseDateTime(xpp));
9253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9254        res.setDescriptionElement(parseString(xpp));
9255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9256        res.getUseContext().add(parseCodeableConcept(xpp));
9257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
9258        res.setRequirementsElement(parseString(xpp));
9259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9260        res.setCopyrightElement(parseString(xpp));
9261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
9262        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
9263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multiserver")) {
9264        res.setMultiserverElement(parseBoolean(xpp));
9265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
9266        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
9267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9268        res.getProfile().add(parseReference(xpp));
9269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
9270        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
9271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
9272        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
9273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
9274        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
9275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
9276        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
9277      } else if (!parseDomainResourceContent(eventType, xpp, res))
9278        unknownContent(xpp);
9279      eventType = nextNoWhitespace(xpp);
9280    }
9281    next(xpp);
9282    parseElementClose(res);
9283    return res;
9284  }
9285
9286  protected TestScript.TestScriptContactComponent parseTestScriptTestScriptContactComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9287    TestScript.TestScriptContactComponent res = new TestScript.TestScriptContactComponent();
9288    parseBackboneAttributes(xpp, res);
9289    next(xpp);
9290    int eventType = nextNoWhitespace(xpp);
9291    while (eventType != XmlPullParser.END_TAG) {
9292      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9293        res.setNameElement(parseString(xpp));
9294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9295        res.getTelecom().add(parseContactPoint(xpp));
9296      } else if (!parseBackboneContent(eventType, xpp, res))
9297        unknownContent(xpp);
9298      eventType = nextNoWhitespace(xpp);
9299    }
9300    next(xpp);
9301    parseElementClose(res);
9302    return res;
9303  }
9304
9305  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9306    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
9307    parseBackboneAttributes(xpp, res);
9308    next(xpp);
9309    int eventType = nextNoWhitespace(xpp);
9310    while (eventType != XmlPullParser.END_TAG) {
9311      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9312        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
9313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
9314        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
9315      } else if (!parseBackboneContent(eventType, xpp, res))
9316        unknownContent(xpp);
9317      eventType = nextNoWhitespace(xpp);
9318    }
9319    next(xpp);
9320    parseElementClose(res);
9321    return res;
9322  }
9323
9324  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9325    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
9326    parseBackboneAttributes(xpp, res);
9327    next(xpp);
9328    int eventType = nextNoWhitespace(xpp);
9329    while (eventType != XmlPullParser.END_TAG) {
9330      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9331        res.setUrlElement(parseUri(xpp));
9332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9333        res.setDescriptionElement(parseString(xpp));
9334      } else if (!parseBackboneContent(eventType, xpp, res))
9335        unknownContent(xpp);
9336      eventType = nextNoWhitespace(xpp);
9337    }
9338    next(xpp);
9339    parseElementClose(res);
9340    return res;
9341  }
9342
9343  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9344    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
9345    parseBackboneAttributes(xpp, res);
9346    next(xpp);
9347    int eventType = nextNoWhitespace(xpp);
9348    while (eventType != XmlPullParser.END_TAG) {
9349      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
9350        res.setRequiredElement(parseBoolean(xpp));
9351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
9352        res.setValidatedElement(parseBoolean(xpp));
9353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9354        res.setDescriptionElement(parseString(xpp));
9355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9356        res.setDestinationElement(parseInteger(xpp));
9357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9358        res.getLink().add(parseUri(xpp));
9359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conformance")) {
9360        res.setConformance(parseReference(xpp));
9361      } else if (!parseBackboneContent(eventType, xpp, res))
9362        unknownContent(xpp);
9363      eventType = nextNoWhitespace(xpp);
9364    }
9365    next(xpp);
9366    parseElementClose(res);
9367    return res;
9368  }
9369
9370  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9371    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
9372    parseBackboneAttributes(xpp, res);
9373    next(xpp);
9374    int eventType = nextNoWhitespace(xpp);
9375    while (eventType != XmlPullParser.END_TAG) {
9376      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
9377        res.setAutocreateElement(parseBoolean(xpp));
9378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
9379        res.setAutodeleteElement(parseBoolean(xpp));
9380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9381        res.setResource(parseReference(xpp));
9382      } else if (!parseBackboneContent(eventType, xpp, res))
9383        unknownContent(xpp);
9384      eventType = nextNoWhitespace(xpp);
9385    }
9386    next(xpp);
9387    parseElementClose(res);
9388    return res;
9389  }
9390
9391  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9392    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
9393    parseBackboneAttributes(xpp, res);
9394    next(xpp);
9395    int eventType = nextNoWhitespace(xpp);
9396    while (eventType != XmlPullParser.END_TAG) {
9397      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9398        res.setNameElement(parseString(xpp));
9399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
9400        res.setHeaderFieldElement(parseString(xpp));
9401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9402        res.setPathElement(parseString(xpp));
9403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
9404        res.setSourceIdElement(parseId(xpp));
9405      } else if (!parseBackboneContent(eventType, xpp, res))
9406        unknownContent(xpp);
9407      eventType = nextNoWhitespace(xpp);
9408    }
9409    next(xpp);
9410    parseElementClose(res);
9411    return res;
9412  }
9413
9414  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9415    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
9416    parseBackboneAttributes(xpp, res);
9417    next(xpp);
9418    int eventType = nextNoWhitespace(xpp);
9419    while (eventType != XmlPullParser.END_TAG) {
9420      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
9421        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, owner));
9422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
9423        res.getAction().add(parseTestScriptTestScriptSetupActionComponent(xpp, owner));
9424      } else if (!parseBackboneContent(eventType, xpp, res))
9425        unknownContent(xpp);
9426      eventType = nextNoWhitespace(xpp);
9427    }
9428    next(xpp);
9429    parseElementClose(res);
9430    return res;
9431  }
9432
9433  protected TestScript.TestScriptSetupActionComponent parseTestScriptTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9434    TestScript.TestScriptSetupActionComponent res = new TestScript.TestScriptSetupActionComponent();
9435    parseBackboneAttributes(xpp, res);
9436    next(xpp);
9437    int eventType = nextNoWhitespace(xpp);
9438    while (eventType != XmlPullParser.END_TAG) {
9439      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
9440        res.setOperation(parseTestScriptTestScriptSetupActionOperationComponent(xpp, owner));
9441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
9442        res.setAssert(parseTestScriptTestScriptSetupActionAssertComponent(xpp, owner));
9443      } else if (!parseBackboneContent(eventType, xpp, res))
9444        unknownContent(xpp);
9445      eventType = nextNoWhitespace(xpp);
9446    }
9447    next(xpp);
9448    parseElementClose(res);
9449    return res;
9450  }
9451
9452  protected TestScript.TestScriptSetupActionOperationComponent parseTestScriptTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9453    TestScript.TestScriptSetupActionOperationComponent res = new TestScript.TestScriptSetupActionOperationComponent();
9454    parseBackboneAttributes(xpp, res);
9455    next(xpp);
9456    int eventType = nextNoWhitespace(xpp);
9457    while (eventType != XmlPullParser.END_TAG) {
9458      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9459        res.setType(parseCoding(xpp));
9460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9461        res.setResourceElement(parseCode(xpp));
9462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
9463        res.setLabelElement(parseString(xpp));
9464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9465        res.setDescriptionElement(parseString(xpp));
9466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
9467        res.setAcceptElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
9468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
9469        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
9470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9471        res.setDestinationElement(parseInteger(xpp));
9472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
9473        res.setEncodeRequestUrlElement(parseBoolean(xpp));
9474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
9475        res.setParamsElement(parseString(xpp));
9476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
9477        res.getRequestHeader().add(parseTestScriptTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
9478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
9479        res.setResponseIdElement(parseId(xpp));
9480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
9481        res.setSourceIdElement(parseId(xpp));
9482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
9483        res.setTargetIdElement(parseId(xpp));
9484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9485        res.setUrlElement(parseString(xpp));
9486      } else if (!parseBackboneContent(eventType, xpp, res))
9487        unknownContent(xpp);
9488      eventType = nextNoWhitespace(xpp);
9489    }
9490    next(xpp);
9491    parseElementClose(res);
9492    return res;
9493  }
9494
9495  protected TestScript.TestScriptSetupActionOperationRequestHeaderComponent parseTestScriptTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9496    TestScript.TestScriptSetupActionOperationRequestHeaderComponent res = new TestScript.TestScriptSetupActionOperationRequestHeaderComponent();
9497    parseBackboneAttributes(xpp, res);
9498    next(xpp);
9499    int eventType = nextNoWhitespace(xpp);
9500    while (eventType != XmlPullParser.END_TAG) {
9501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
9502        res.setFieldElement(parseString(xpp));
9503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9504        res.setValueElement(parseString(xpp));
9505      } else if (!parseBackboneContent(eventType, xpp, res))
9506        unknownContent(xpp);
9507      eventType = nextNoWhitespace(xpp);
9508    }
9509    next(xpp);
9510    parseElementClose(res);
9511    return res;
9512  }
9513
9514  protected TestScript.TestScriptSetupActionAssertComponent parseTestScriptTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9515    TestScript.TestScriptSetupActionAssertComponent res = new TestScript.TestScriptSetupActionAssertComponent();
9516    parseBackboneAttributes(xpp, res);
9517    next(xpp);
9518    int eventType = nextNoWhitespace(xpp);
9519    while (eventType != XmlPullParser.END_TAG) {
9520      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
9521        res.setLabelElement(parseString(xpp));
9522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9523        res.setDescriptionElement(parseString(xpp));
9524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
9525        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
9526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
9527        res.setCompareToSourceIdElement(parseString(xpp));
9528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
9529        res.setCompareToSourcePathElement(parseString(xpp));
9530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
9531        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
9532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
9533        res.setHeaderFieldElement(parseString(xpp));
9534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
9535        res.setMinimumIdElement(parseString(xpp));
9536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
9537        res.setNavigationLinksElement(parseBoolean(xpp));
9538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
9539        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
9540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9541        res.setPathElement(parseString(xpp));
9542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9543        res.setResourceElement(parseCode(xpp));
9544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
9545        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
9546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
9547        res.setResponseCodeElement(parseString(xpp));
9548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
9549        res.setSourceIdElement(parseId(xpp));
9550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
9551        res.setValidateProfileIdElement(parseId(xpp));
9552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9553        res.setValueElement(parseString(xpp));
9554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
9555        res.setWarningOnlyElement(parseBoolean(xpp));
9556      } else if (!parseBackboneContent(eventType, xpp, res))
9557        unknownContent(xpp);
9558      eventType = nextNoWhitespace(xpp);
9559    }
9560    next(xpp);
9561    parseElementClose(res);
9562    return res;
9563  }
9564
9565  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9566    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
9567    parseBackboneAttributes(xpp, res);
9568    next(xpp);
9569    int eventType = nextNoWhitespace(xpp);
9570    while (eventType != XmlPullParser.END_TAG) {
9571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9572        res.setNameElement(parseString(xpp));
9573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9574        res.setDescriptionElement(parseString(xpp));
9575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
9576        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, owner));
9577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
9578        res.getAction().add(parseTestScriptTestScriptTestActionComponent(xpp, owner));
9579      } else if (!parseBackboneContent(eventType, xpp, res))
9580        unknownContent(xpp);
9581      eventType = nextNoWhitespace(xpp);
9582    }
9583    next(xpp);
9584    parseElementClose(res);
9585    return res;
9586  }
9587
9588  protected TestScript.TestScriptTestActionComponent parseTestScriptTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9589    TestScript.TestScriptTestActionComponent res = new TestScript.TestScriptTestActionComponent();
9590    parseBackboneAttributes(xpp, res);
9591    next(xpp);
9592    int eventType = nextNoWhitespace(xpp);
9593    while (eventType != XmlPullParser.END_TAG) {
9594      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
9595        res.setOperation(parseTestScriptTestScriptSetupActionOperationComponent(xpp, owner));
9596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
9597        res.setAssert(parseTestScriptTestScriptSetupActionAssertComponent(xpp, owner));
9598      } else if (!parseBackboneContent(eventType, xpp, res))
9599        unknownContent(xpp);
9600      eventType = nextNoWhitespace(xpp);
9601    }
9602    next(xpp);
9603    parseElementClose(res);
9604    return res;
9605  }
9606
9607  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9608    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
9609    parseBackboneAttributes(xpp, res);
9610    next(xpp);
9611    int eventType = nextNoWhitespace(xpp);
9612    while (eventType != XmlPullParser.END_TAG) {
9613      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
9614        res.getAction().add(parseTestScriptTestScriptTeardownActionComponent(xpp, owner));
9615      } else if (!parseBackboneContent(eventType, xpp, res))
9616        unknownContent(xpp);
9617      eventType = nextNoWhitespace(xpp);
9618    }
9619    next(xpp);
9620    parseElementClose(res);
9621    return res;
9622  }
9623
9624  protected TestScript.TestScriptTeardownActionComponent parseTestScriptTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9625    TestScript.TestScriptTeardownActionComponent res = new TestScript.TestScriptTeardownActionComponent();
9626    parseBackboneAttributes(xpp, res);
9627    next(xpp);
9628    int eventType = nextNoWhitespace(xpp);
9629    while (eventType != XmlPullParser.END_TAG) {
9630      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
9631        res.setOperation(parseTestScriptTestScriptSetupActionOperationComponent(xpp, owner));
9632      } else if (!parseBackboneContent(eventType, xpp, res))
9633        unknownContent(xpp);
9634      eventType = nextNoWhitespace(xpp);
9635    }
9636    next(xpp);
9637    parseElementClose(res);
9638    return res;
9639  }
9640
9641  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9642    ValueSet res = new ValueSet();
9643    parseDomainResourceAttributes(xpp, res);
9644    next(xpp);
9645    int eventType = nextNoWhitespace(xpp);
9646    while (eventType != XmlPullParser.END_TAG) {
9647      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9648        res.setUrlElement(parseUri(xpp));
9649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9650        res.setIdentifier(parseIdentifier(xpp));
9651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9652        res.setVersionElement(parseString(xpp));
9653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9654        res.setNameElement(parseString(xpp));
9655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9656        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
9657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9658        res.setExperimentalElement(parseBoolean(xpp));
9659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9660        res.setPublisherElement(parseString(xpp));
9661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9662        res.getContact().add(parseValueSetValueSetContactComponent(xpp, res));
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("lockedDate")) {
9666        res.setLockedDateElement(parseDate(xpp));
9667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9668        res.setDescriptionElement(parseString(xpp));
9669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9670        res.getUseContext().add(parseCodeableConcept(xpp));
9671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
9672        res.setImmutableElement(parseBoolean(xpp));
9673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
9674        res.setRequirementsElement(parseString(xpp));
9675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9676        res.setCopyrightElement(parseString(xpp));
9677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extensible")) {
9678        res.setExtensibleElement(parseBoolean(xpp));
9679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
9680        res.setCodeSystem(parseValueSetValueSetCodeSystemComponent(xpp, res));
9681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
9682        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
9683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
9684        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
9685      } else if (!parseDomainResourceContent(eventType, xpp, res))
9686        unknownContent(xpp);
9687      eventType = nextNoWhitespace(xpp);
9688    }
9689    next(xpp);
9690    parseElementClose(res);
9691    return res;
9692  }
9693
9694  protected ValueSet.ValueSetContactComponent parseValueSetValueSetContactComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9695    ValueSet.ValueSetContactComponent res = new ValueSet.ValueSetContactComponent();
9696    parseBackboneAttributes(xpp, res);
9697    next(xpp);
9698    int eventType = nextNoWhitespace(xpp);
9699    while (eventType != XmlPullParser.END_TAG) {
9700      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9701        res.setNameElement(parseString(xpp));
9702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9703        res.getTelecom().add(parseContactPoint(xpp));
9704      } else if (!parseBackboneContent(eventType, xpp, res))
9705        unknownContent(xpp);
9706      eventType = nextNoWhitespace(xpp);
9707    }
9708    next(xpp);
9709    parseElementClose(res);
9710    return res;
9711  }
9712
9713  protected ValueSet.ValueSetCodeSystemComponent parseValueSetValueSetCodeSystemComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9714    ValueSet.ValueSetCodeSystemComponent res = new ValueSet.ValueSetCodeSystemComponent();
9715    parseBackboneAttributes(xpp, res);
9716    next(xpp);
9717    int eventType = nextNoWhitespace(xpp);
9718    while (eventType != XmlPullParser.END_TAG) {
9719      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
9720        res.setSystemElement(parseUri(xpp));
9721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9722        res.setVersionElement(parseString(xpp));
9723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
9724        res.setCaseSensitiveElement(parseBoolean(xpp));
9725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
9726        res.getConcept().add(parseValueSetConceptDefinitionComponent(xpp, owner));
9727      } else if (!parseBackboneContent(eventType, xpp, res))
9728        unknownContent(xpp);
9729      eventType = nextNoWhitespace(xpp);
9730    }
9731    next(xpp);
9732    parseElementClose(res);
9733    return res;
9734  }
9735
9736  protected ValueSet.ConceptDefinitionComponent parseValueSetConceptDefinitionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9737    ValueSet.ConceptDefinitionComponent res = new ValueSet.ConceptDefinitionComponent();
9738    parseBackboneAttributes(xpp, res);
9739    next(xpp);
9740    int eventType = nextNoWhitespace(xpp);
9741    while (eventType != XmlPullParser.END_TAG) {
9742      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9743        res.setCodeElement(parseCode(xpp));
9744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
9745        res.setAbstractElement(parseBoolean(xpp));
9746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
9747        res.setDisplayElement(parseString(xpp));
9748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
9749        res.setDefinitionElement(parseString(xpp));
9750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
9751        res.getDesignation().add(parseValueSetConceptDefinitionDesignationComponent(xpp, owner));
9752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
9753        res.getConcept().add(parseValueSetConceptDefinitionComponent(xpp, owner));
9754      } else if (!parseBackboneContent(eventType, xpp, res))
9755        unknownContent(xpp);
9756      eventType = nextNoWhitespace(xpp);
9757    }
9758    next(xpp);
9759    parseElementClose(res);
9760    return res;
9761  }
9762
9763  protected ValueSet.ConceptDefinitionDesignationComponent parseValueSetConceptDefinitionDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9764    ValueSet.ConceptDefinitionDesignationComponent res = new ValueSet.ConceptDefinitionDesignationComponent();
9765    parseBackboneAttributes(xpp, res);
9766    next(xpp);
9767    int eventType = nextNoWhitespace(xpp);
9768    while (eventType != XmlPullParser.END_TAG) {
9769      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
9770        res.setLanguageElement(parseCode(xpp));
9771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9772        res.setUse(parseCoding(xpp));
9773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9774        res.setValueElement(parseString(xpp));
9775      } else if (!parseBackboneContent(eventType, xpp, res))
9776        unknownContent(xpp);
9777      eventType = nextNoWhitespace(xpp);
9778    }
9779    next(xpp);
9780    parseElementClose(res);
9781    return res;
9782  }
9783
9784  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9785    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
9786    parseBackboneAttributes(xpp, res);
9787    next(xpp);
9788    int eventType = nextNoWhitespace(xpp);
9789    while (eventType != XmlPullParser.END_TAG) {
9790      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
9791        res.getImport().add(parseUri(xpp));
9792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
9793        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
9794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
9795        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
9796      } else if (!parseBackboneContent(eventType, xpp, res))
9797        unknownContent(xpp);
9798      eventType = nextNoWhitespace(xpp);
9799    }
9800    next(xpp);
9801    parseElementClose(res);
9802    return res;
9803  }
9804
9805  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9806    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
9807    parseBackboneAttributes(xpp, res);
9808    next(xpp);
9809    int eventType = nextNoWhitespace(xpp);
9810    while (eventType != XmlPullParser.END_TAG) {
9811      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
9812        res.setSystemElement(parseUri(xpp));
9813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9814        res.setVersionElement(parseString(xpp));
9815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
9816        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
9817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
9818        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
9819      } else if (!parseBackboneContent(eventType, xpp, res))
9820        unknownContent(xpp);
9821      eventType = nextNoWhitespace(xpp);
9822    }
9823    next(xpp);
9824    parseElementClose(res);
9825    return res;
9826  }
9827
9828  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9829    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
9830    parseBackboneAttributes(xpp, res);
9831    next(xpp);
9832    int eventType = nextNoWhitespace(xpp);
9833    while (eventType != XmlPullParser.END_TAG) {
9834      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9835        res.setCodeElement(parseCode(xpp));
9836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
9837        res.setDisplayElement(parseString(xpp));
9838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
9839        res.getDesignation().add(parseValueSetConceptDefinitionDesignationComponent(xpp, owner));
9840      } else if (!parseBackboneContent(eventType, xpp, res))
9841        unknownContent(xpp);
9842      eventType = nextNoWhitespace(xpp);
9843    }
9844    next(xpp);
9845    parseElementClose(res);
9846    return res;
9847  }
9848
9849  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9850    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
9851    parseBackboneAttributes(xpp, res);
9852    next(xpp);
9853    int eventType = nextNoWhitespace(xpp);
9854    while (eventType != XmlPullParser.END_TAG) {
9855      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
9856        res.setPropertyElement(parseCode(xpp));
9857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
9858        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
9859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9860        res.setValueElement(parseCode(xpp));
9861      } else if (!parseBackboneContent(eventType, xpp, res))
9862        unknownContent(xpp);
9863      eventType = nextNoWhitespace(xpp);
9864    }
9865    next(xpp);
9866    parseElementClose(res);
9867    return res;
9868  }
9869
9870  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9871    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
9872    parseBackboneAttributes(xpp, res);
9873    next(xpp);
9874    int eventType = nextNoWhitespace(xpp);
9875    while (eventType != XmlPullParser.END_TAG) {
9876      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9877        res.setIdentifierElement(parseUri(xpp));
9878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
9879        res.setTimestampElement(parseDateTime(xpp));
9880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
9881        res.setTotalElement(parseInteger(xpp));
9882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
9883        res.setOffsetElement(parseInteger(xpp));
9884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
9885        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
9886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
9887        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
9888      } else if (!parseBackboneContent(eventType, xpp, res))
9889        unknownContent(xpp);
9890      eventType = nextNoWhitespace(xpp);
9891    }
9892    next(xpp);
9893    parseElementClose(res);
9894    return res;
9895  }
9896
9897  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9898    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
9899    parseBackboneAttributes(xpp, res);
9900    next(xpp);
9901    int eventType = nextNoWhitespace(xpp);
9902    while (eventType != XmlPullParser.END_TAG) {
9903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9904        res.setNameElement(parseString(xpp));
9905      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9906        res.setValue(parseType("value", xpp));
9907      } else if (!parseBackboneContent(eventType, xpp, res))
9908        unknownContent(xpp);
9909      eventType = nextNoWhitespace(xpp);
9910    }
9911    next(xpp);
9912    parseElementClose(res);
9913    return res;
9914  }
9915
9916  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
9917    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
9918    parseBackboneAttributes(xpp, res);
9919    next(xpp);
9920    int eventType = nextNoWhitespace(xpp);
9921    while (eventType != XmlPullParser.END_TAG) {
9922      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
9923        res.setSystemElement(parseUri(xpp));
9924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
9925        res.setAbstractElement(parseBoolean(xpp));
9926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9927        res.setVersionElement(parseString(xpp));
9928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9929        res.setCodeElement(parseCode(xpp));
9930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
9931        res.setDisplayElement(parseString(xpp));
9932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
9933        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
9934      } else if (!parseBackboneContent(eventType, xpp, res))
9935        unknownContent(xpp);
9936      eventType = nextNoWhitespace(xpp);
9937    }
9938    next(xpp);
9939    parseElementClose(res);
9940    return res;
9941  }
9942
9943  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9944    VisionPrescription res = new VisionPrescription();
9945    parseDomainResourceAttributes(xpp, res);
9946    next(xpp);
9947    int eventType = nextNoWhitespace(xpp);
9948    while (eventType != XmlPullParser.END_TAG) {
9949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9950        res.getIdentifier().add(parseIdentifier(xpp));
9951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
9952        res.setDateWrittenElement(parseDateTime(xpp));
9953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9954        res.setPatient(parseReference(xpp));
9955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
9956        res.setPrescriber(parseReference(xpp));
9957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9958        res.setEncounter(parseReference(xpp));
9959      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
9960        res.setReason(parseType("reason", xpp));
9961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispense")) {
9962        res.getDispense().add(parseVisionPrescriptionVisionPrescriptionDispenseComponent(xpp, res));
9963      } else if (!parseDomainResourceContent(eventType, xpp, res))
9964        unknownContent(xpp);
9965      eventType = nextNoWhitespace(xpp);
9966    }
9967    next(xpp);
9968    parseElementClose(res);
9969    return res;
9970  }
9971
9972  protected VisionPrescription.VisionPrescriptionDispenseComponent parseVisionPrescriptionVisionPrescriptionDispenseComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
9973    VisionPrescription.VisionPrescriptionDispenseComponent res = new VisionPrescription.VisionPrescriptionDispenseComponent();
9974    parseBackboneAttributes(xpp, res);
9975    next(xpp);
9976    int eventType = nextNoWhitespace(xpp);
9977    while (eventType != XmlPullParser.END_TAG) {
9978      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
9979        res.setProduct(parseCoding(xpp));
9980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
9981        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
9982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
9983        res.setSphereElement(parseDecimal(xpp));
9984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
9985        res.setCylinderElement(parseDecimal(xpp));
9986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
9987        res.setAxisElement(parseInteger(xpp));
9988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
9989        res.setPrismElement(parseDecimal(xpp));
9990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
9991        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
9992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
9993        res.setAddElement(parseDecimal(xpp));
9994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
9995        res.setPowerElement(parseDecimal(xpp));
9996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
9997        res.setBackCurveElement(parseDecimal(xpp));
9998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
9999        res.setDiameterElement(parseDecimal(xpp));
10000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
10001        res.setDuration(parseSimpleQuantity(xpp));
10002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
10003        res.setColorElement(parseString(xpp));
10004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
10005        res.setBrandElement(parseString(xpp));
10006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
10007        res.setNotesElement(parseString(xpp));
10008      } else if (!parseBackboneContent(eventType, xpp, res))
10009        unknownContent(xpp);
10010      eventType = nextNoWhitespace(xpp);
10011    }
10012    next(xpp);
10013    parseElementClose(res);
10014    return res;
10015  }
10016
10017  @Override
10018  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10019    if (xpp.getName().equals("Parameters"))
10020      return parseParameters(xpp);
10021    else if (xpp.getName().equals("Account"))
10022      return parseAccount(xpp);
10023    else if (xpp.getName().equals("AllergyIntolerance"))
10024      return parseAllergyIntolerance(xpp);
10025    else if (xpp.getName().equals("Appointment"))
10026      return parseAppointment(xpp);
10027    else if (xpp.getName().equals("AppointmentResponse"))
10028      return parseAppointmentResponse(xpp);
10029    else if (xpp.getName().equals("AuditEvent"))
10030      return parseAuditEvent(xpp);
10031    else if (xpp.getName().equals("Basic"))
10032      return parseBasic(xpp);
10033    else if (xpp.getName().equals("Binary"))
10034      return parseBinary(xpp);
10035    else if (xpp.getName().equals("BodySite"))
10036      return parseBodySite(xpp);
10037    else if (xpp.getName().equals("Bundle"))
10038      return parseBundle(xpp);
10039    else if (xpp.getName().equals("CarePlan"))
10040      return parseCarePlan(xpp);
10041    else if (xpp.getName().equals("Claim"))
10042      return parseClaim(xpp);
10043    else if (xpp.getName().equals("ClaimResponse"))
10044      return parseClaimResponse(xpp);
10045    else if (xpp.getName().equals("ClinicalImpression"))
10046      return parseClinicalImpression(xpp);
10047    else if (xpp.getName().equals("Communication"))
10048      return parseCommunication(xpp);
10049    else if (xpp.getName().equals("CommunicationRequest"))
10050      return parseCommunicationRequest(xpp);
10051    else if (xpp.getName().equals("Composition"))
10052      return parseComposition(xpp);
10053    else if (xpp.getName().equals("ConceptMap"))
10054      return parseConceptMap(xpp);
10055    else if (xpp.getName().equals("Condition"))
10056      return parseCondition(xpp);
10057    else if (xpp.getName().equals("Conformance"))
10058      return parseConformance(xpp);
10059    else if (xpp.getName().equals("Contract"))
10060      return parseContract(xpp);
10061    else if (xpp.getName().equals("Coverage"))
10062      return parseCoverage(xpp);
10063    else if (xpp.getName().equals("DataElement"))
10064      return parseDataElement(xpp);
10065    else if (xpp.getName().equals("DetectedIssue"))
10066      return parseDetectedIssue(xpp);
10067    else if (xpp.getName().equals("Device"))
10068      return parseDevice(xpp);
10069    else if (xpp.getName().equals("DeviceComponent"))
10070      return parseDeviceComponent(xpp);
10071    else if (xpp.getName().equals("DeviceMetric"))
10072      return parseDeviceMetric(xpp);
10073    else if (xpp.getName().equals("DeviceUseRequest"))
10074      return parseDeviceUseRequest(xpp);
10075    else if (xpp.getName().equals("DeviceUseStatement"))
10076      return parseDeviceUseStatement(xpp);
10077    else if (xpp.getName().equals("DiagnosticOrder"))
10078      return parseDiagnosticOrder(xpp);
10079    else if (xpp.getName().equals("DiagnosticReport"))
10080      return parseDiagnosticReport(xpp);
10081    else if (xpp.getName().equals("DocumentManifest"))
10082      return parseDocumentManifest(xpp);
10083    else if (xpp.getName().equals("DocumentReference"))
10084      return parseDocumentReference(xpp);
10085    else if (xpp.getName().equals("EligibilityRequest"))
10086      return parseEligibilityRequest(xpp);
10087    else if (xpp.getName().equals("EligibilityResponse"))
10088      return parseEligibilityResponse(xpp);
10089    else if (xpp.getName().equals("Encounter"))
10090      return parseEncounter(xpp);
10091    else if (xpp.getName().equals("EnrollmentRequest"))
10092      return parseEnrollmentRequest(xpp);
10093    else if (xpp.getName().equals("EnrollmentResponse"))
10094      return parseEnrollmentResponse(xpp);
10095    else if (xpp.getName().equals("EpisodeOfCare"))
10096      return parseEpisodeOfCare(xpp);
10097    else if (xpp.getName().equals("ExplanationOfBenefit"))
10098      return parseExplanationOfBenefit(xpp);
10099    else if (xpp.getName().equals("FamilyMemberHistory"))
10100      return parseFamilyMemberHistory(xpp);
10101    else if (xpp.getName().equals("Flag"))
10102      return parseFlag(xpp);
10103    else if (xpp.getName().equals("Goal"))
10104      return parseGoal(xpp);
10105    else if (xpp.getName().equals("Group"))
10106      return parseGroup(xpp);
10107    else if (xpp.getName().equals("HealthcareService"))
10108      return parseHealthcareService(xpp);
10109    else if (xpp.getName().equals("ImagingObjectSelection"))
10110      return parseImagingObjectSelection(xpp);
10111    else if (xpp.getName().equals("ImagingStudy"))
10112      return parseImagingStudy(xpp);
10113    else if (xpp.getName().equals("Immunization"))
10114      return parseImmunization(xpp);
10115    else if (xpp.getName().equals("ImmunizationRecommendation"))
10116      return parseImmunizationRecommendation(xpp);
10117    else if (xpp.getName().equals("ImplementationGuide"))
10118      return parseImplementationGuide(xpp);
10119    else if (xpp.getName().equals("List"))
10120      return parseList_(xpp);
10121    else if (xpp.getName().equals("Location"))
10122      return parseLocation(xpp);
10123    else if (xpp.getName().equals("Media"))
10124      return parseMedia(xpp);
10125    else if (xpp.getName().equals("Medication"))
10126      return parseMedication(xpp);
10127    else if (xpp.getName().equals("MedicationAdministration"))
10128      return parseMedicationAdministration(xpp);
10129    else if (xpp.getName().equals("MedicationDispense"))
10130      return parseMedicationDispense(xpp);
10131    else if (xpp.getName().equals("MedicationOrder"))
10132      return parseMedicationOrder(xpp);
10133    else if (xpp.getName().equals("MedicationStatement"))
10134      return parseMedicationStatement(xpp);
10135    else if (xpp.getName().equals("MessageHeader"))
10136      return parseMessageHeader(xpp);
10137    else if (xpp.getName().equals("NamingSystem"))
10138      return parseNamingSystem(xpp);
10139    else if (xpp.getName().equals("NutritionOrder"))
10140      return parseNutritionOrder(xpp);
10141    else if (xpp.getName().equals("Observation"))
10142      return parseObservation(xpp);
10143    else if (xpp.getName().equals("OperationDefinition"))
10144      return parseOperationDefinition(xpp);
10145    else if (xpp.getName().equals("OperationOutcome"))
10146      return parseOperationOutcome(xpp);
10147    else if (xpp.getName().equals("Order"))
10148      return parseOrder(xpp);
10149    else if (xpp.getName().equals("OrderResponse"))
10150      return parseOrderResponse(xpp);
10151    else if (xpp.getName().equals("Organization"))
10152      return parseOrganization(xpp);
10153    else if (xpp.getName().equals("Patient"))
10154      return parsePatient(xpp);
10155    else if (xpp.getName().equals("PaymentNotice"))
10156      return parsePaymentNotice(xpp);
10157    else if (xpp.getName().equals("PaymentReconciliation"))
10158      return parsePaymentReconciliation(xpp);
10159    else if (xpp.getName().equals("Person"))
10160      return parsePerson(xpp);
10161    else if (xpp.getName().equals("Practitioner"))
10162      return parsePractitioner(xpp);
10163    else if (xpp.getName().equals("Procedure"))
10164      return parseProcedure(xpp);
10165    else if (xpp.getName().equals("ProcedureRequest"))
10166      return parseProcedureRequest(xpp);
10167    else if (xpp.getName().equals("ProcessRequest"))
10168      return parseProcessRequest(xpp);
10169    else if (xpp.getName().equals("ProcessResponse"))
10170      return parseProcessResponse(xpp);
10171    else if (xpp.getName().equals("Provenance"))
10172      return parseProvenance(xpp);
10173    else if (xpp.getName().equals("Questionnaire"))
10174      return parseQuestionnaire(xpp);
10175    else if (xpp.getName().equals("QuestionnaireResponse"))
10176      return parseQuestionnaireResponse(xpp);
10177    else if (xpp.getName().equals("ReferralRequest"))
10178      return parseReferralRequest(xpp);
10179    else if (xpp.getName().equals("RelatedPerson"))
10180      return parseRelatedPerson(xpp);
10181    else if (xpp.getName().equals("RiskAssessment"))
10182      return parseRiskAssessment(xpp);
10183    else if (xpp.getName().equals("Schedule"))
10184      return parseSchedule(xpp);
10185    else if (xpp.getName().equals("SearchParameter"))
10186      return parseSearchParameter(xpp);
10187    else if (xpp.getName().equals("Slot"))
10188      return parseSlot(xpp);
10189    else if (xpp.getName().equals("Specimen"))
10190      return parseSpecimen(xpp);
10191    else if (xpp.getName().equals("StructureDefinition"))
10192      return parseStructureDefinition(xpp);
10193    else if (xpp.getName().equals("Subscription"))
10194      return parseSubscription(xpp);
10195    else if (xpp.getName().equals("Substance"))
10196      return parseSubstance(xpp);
10197    else if (xpp.getName().equals("SupplyDelivery"))
10198      return parseSupplyDelivery(xpp);
10199    else if (xpp.getName().equals("SupplyRequest"))
10200      return parseSupplyRequest(xpp);
10201    else if (xpp.getName().equals("TestScript"))
10202      return parseTestScript(xpp);
10203    else if (xpp.getName().equals("ValueSet"))
10204      return parseValueSet(xpp);
10205    else if (xpp.getName().equals("VisionPrescription"))
10206      return parseVisionPrescription(xpp);
10207    else if (xpp.getName().equals("Binary"))
10208      return parseBinary(xpp);
10209    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
10210  }
10211
10212  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10213    if (xpp.getName().equals(prefix+"date"))
10214      return parseDate(xpp);
10215    else if (xpp.getName().equals(prefix+"dateTime"))
10216      return parseDateTime(xpp);
10217    else if (xpp.getName().equals(prefix+"code"))
10218      return parseCode(xpp);
10219    else if (xpp.getName().equals(prefix+"string"))
10220      return parseString(xpp);
10221    else if (xpp.getName().equals(prefix+"integer"))
10222      return parseInteger(xpp);
10223    else if (xpp.getName().equals(prefix+"oid"))
10224      return parseOid(xpp);
10225    else if (xpp.getName().equals(prefix+"uri"))
10226      return parseUri(xpp);
10227    else if (xpp.getName().equals(prefix+"uuid"))
10228      return parseUuid(xpp);
10229    else if (xpp.getName().equals(prefix+"instant"))
10230      return parseInstant(xpp);
10231    else if (xpp.getName().equals(prefix+"boolean"))
10232      return parseBoolean(xpp);
10233    else if (xpp.getName().equals(prefix+"base64Binary"))
10234      return parseBase64Binary(xpp);
10235    else if (xpp.getName().equals(prefix+"unsignedInt"))
10236      return parseUnsignedInt(xpp);
10237    else if (xpp.getName().equals(prefix+"markdown"))
10238      return parseMarkdown(xpp);
10239    else if (xpp.getName().equals(prefix+"time"))
10240      return parseTime(xpp);
10241    else if (xpp.getName().equals(prefix+"id"))
10242      return parseId(xpp);
10243    else if (xpp.getName().equals(prefix+"positiveInt"))
10244      return parsePositiveInt(xpp);
10245    else if (xpp.getName().equals(prefix+"decimal"))
10246      return parseDecimal(xpp);
10247    else if (xpp.getName().equals(prefix+"Extension"))
10248      return parseExtension(xpp);
10249    else if (xpp.getName().equals(prefix+"Narrative"))
10250      return parseNarrative(xpp);
10251    else if (xpp.getName().equals(prefix+"Identifier"))
10252      return parseIdentifier(xpp);
10253    else if (xpp.getName().equals(prefix+"Coding"))
10254      return parseCoding(xpp);
10255    else if (xpp.getName().equals(prefix+"Reference"))
10256      return parseReference(xpp);
10257    else if (xpp.getName().equals(prefix+"Signature"))
10258      return parseSignature(xpp);
10259    else if (xpp.getName().equals(prefix+"SampledData"))
10260      return parseSampledData(xpp);
10261    else if (xpp.getName().equals(prefix+"Quantity"))
10262      return parseQuantity(xpp);
10263    else if (xpp.getName().equals(prefix+"Period"))
10264      return parsePeriod(xpp);
10265    else if (xpp.getName().equals(prefix+"Attachment"))
10266      return parseAttachment(xpp);
10267    else if (xpp.getName().equals(prefix+"Ratio"))
10268      return parseRatio(xpp);
10269    else if (xpp.getName().equals(prefix+"Range"))
10270      return parseRange(xpp);
10271    else if (xpp.getName().equals(prefix+"Annotation"))
10272      return parseAnnotation(xpp);
10273    else if (xpp.getName().equals(prefix+"CodeableConcept"))
10274      return parseCodeableConcept(xpp);
10275    else if (xpp.getName().equals(prefix+"Money"))
10276      return parseMoney(xpp);
10277    else if (xpp.getName().equals(prefix+"SimpleQuantity"))
10278      return parseSimpleQuantity(xpp);
10279    else if (xpp.getName().equals(prefix+"Duration"))
10280      return parseDuration(xpp);
10281    else if (xpp.getName().equals(prefix+"Count"))
10282      return parseCount(xpp);
10283    else if (xpp.getName().equals(prefix+"Distance"))
10284      return parseDistance(xpp);
10285    else if (xpp.getName().equals(prefix+"Age"))
10286      return parseAge(xpp);
10287    else if (xpp.getName().equals(prefix+"HumanName"))
10288      return parseHumanName(xpp);
10289    else if (xpp.getName().equals(prefix+"ContactPoint"))
10290      return parseContactPoint(xpp);
10291    else if (xpp.getName().equals(prefix+"Meta"))
10292      return parseMeta(xpp);
10293    else if (xpp.getName().equals(prefix+"Address"))
10294      return parseAddress(xpp);
10295    else if (xpp.getName().equals(prefix+"Timing"))
10296      return parseTiming(xpp);
10297    else if (xpp.getName().equals(prefix+"ElementDefinition"))
10298      return parseElementDefinition(xpp);
10299    else if (xpp.getName().equals(prefix+"Date"))
10300      return parseDate(xpp);
10301    else if (xpp.getName().equals(prefix+"DateTime"))
10302      return parseDateTime(xpp);
10303    else if (xpp.getName().equals(prefix+"Code"))
10304      return parseCode(xpp);
10305    else if (xpp.getName().equals(prefix+"String"))
10306      return parseString(xpp);
10307    else if (xpp.getName().equals(prefix+"Integer"))
10308      return parseInteger(xpp);
10309    else if (xpp.getName().equals(prefix+"Oid"))
10310      return parseOid(xpp);
10311    else if (xpp.getName().equals(prefix+"Uri"))
10312      return parseUri(xpp);
10313    else if (xpp.getName().equals(prefix+"Uuid"))
10314      return parseUuid(xpp);
10315    else if (xpp.getName().equals(prefix+"Instant"))
10316      return parseInstant(xpp);
10317    else if (xpp.getName().equals(prefix+"Boolean"))
10318      return parseBoolean(xpp);
10319    else if (xpp.getName().equals(prefix+"Base64Binary"))
10320      return parseBase64Binary(xpp);
10321    else if (xpp.getName().equals(prefix+"UnsignedInt"))
10322      return parseUnsignedInt(xpp);
10323    else if (xpp.getName().equals(prefix+"Markdown"))
10324      return parseMarkdown(xpp);
10325    else if (xpp.getName().equals(prefix+"Time"))
10326      return parseTime(xpp);
10327    else if (xpp.getName().equals(prefix+"Id"))
10328      return parseId(xpp);
10329    else if (xpp.getName().equals(prefix+"PositiveInt"))
10330      return parsePositiveInt(xpp);
10331    else if (xpp.getName().equals(prefix+"Decimal"))
10332      return parseDecimal(xpp);
10333    throw new FHIRFormatError("Unknown type "+xpp.getName());
10334  }
10335
10336  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
10337    if (type.equals("date"))
10338      return parseDate(xpp);
10339    else if (type.equals("dateTime"))
10340      return parseDateTime(xpp);
10341    else if (type.equals("code"))
10342      return parseCode(xpp);
10343    else if (type.equals("string"))
10344      return parseString(xpp);
10345    else if (type.equals("integer"))
10346      return parseInteger(xpp);
10347    else if (type.equals("oid"))
10348      return parseOid(xpp);
10349    else if (type.equals("uri"))
10350      return parseUri(xpp);
10351    else if (type.equals("uuid"))
10352      return parseUuid(xpp);
10353    else if (type.equals("instant"))
10354      return parseInstant(xpp);
10355    else if (type.equals("boolean"))
10356      return parseBoolean(xpp);
10357    else if (type.equals("base64Binary"))
10358      return parseBase64Binary(xpp);
10359    else if (type.equals("unsignedInt"))
10360      return parseUnsignedInt(xpp);
10361    else if (type.equals("markdown"))
10362      return parseMarkdown(xpp);
10363    else if (type.equals("time"))
10364      return parseTime(xpp);
10365    else if (type.equals("id"))
10366      return parseId(xpp);
10367    else if (type.equals("positiveInt"))
10368      return parsePositiveInt(xpp);
10369    else if (type.equals("decimal"))
10370      return parseDecimal(xpp);
10371    else if (type.equals("Extension"))
10372      return parseExtension(xpp);
10373    else if (type.equals("Narrative"))
10374      return parseNarrative(xpp);
10375    else if (type.equals("Identifier"))
10376      return parseIdentifier(xpp);
10377    else if (type.equals("Coding"))
10378      return parseCoding(xpp);
10379    else if (type.equals("Reference"))
10380      return parseReference(xpp);
10381    else if (type.equals("Signature"))
10382      return parseSignature(xpp);
10383    else if (type.equals("SampledData"))
10384      return parseSampledData(xpp);
10385    else if (type.equals("Quantity"))
10386      return parseQuantity(xpp);
10387    else if (type.equals("Period"))
10388      return parsePeriod(xpp);
10389    else if (type.equals("Attachment"))
10390      return parseAttachment(xpp);
10391    else if (type.equals("Ratio"))
10392      return parseRatio(xpp);
10393    else if (type.equals("Range"))
10394      return parseRange(xpp);
10395    else if (type.equals("Annotation"))
10396      return parseAnnotation(xpp);
10397    else if (type.equals("CodeableConcept"))
10398      return parseCodeableConcept(xpp);
10399    else if (type.equals("Money"))
10400      return parseMoney(xpp);
10401    else if (type.equals("SimpleQuantity"))
10402      return parseSimpleQuantity(xpp);
10403    else if (type.equals("Duration"))
10404      return parseDuration(xpp);
10405    else if (type.equals("Count"))
10406      return parseCount(xpp);
10407    else if (type.equals("Distance"))
10408      return parseDistance(xpp);
10409    else if (type.equals("Age"))
10410      return parseAge(xpp);
10411    else if (type.equals("HumanName"))
10412      return parseHumanName(xpp);
10413    else if (type.equals("ContactPoint"))
10414      return parseContactPoint(xpp);
10415    else if (type.equals("Meta"))
10416      return parseMeta(xpp);
10417    else if (type.equals("Address"))
10418      return parseAddress(xpp);
10419    else if (type.equals("Timing"))
10420      return parseTiming(xpp);
10421    else if (type.equals("ElementDefinition"))
10422      return parseElementDefinition(xpp);
10423    throw new FHIRFormatError("Unknown type "+type);
10424  }
10425
10426  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
10427    if (type.equals("Extension"))
10428      return parseExtension(xpp);
10429    else if (type.equals("Narrative"))
10430      return parseNarrative(xpp);
10431    else if (type.equals("Identifier"))
10432      return parseIdentifier(xpp);
10433    else if (type.equals("Coding"))
10434      return parseCoding(xpp);
10435    else if (type.equals("Reference"))
10436      return parseReference(xpp);
10437    else if (type.equals("Signature"))
10438      return parseSignature(xpp);
10439    else if (type.equals("SampledData"))
10440      return parseSampledData(xpp);
10441    else if (type.equals("Quantity"))
10442      return parseQuantity(xpp);
10443    else if (type.equals("Period"))
10444      return parsePeriod(xpp);
10445    else if (type.equals("Attachment"))
10446      return parseAttachment(xpp);
10447    else if (type.equals("Ratio"))
10448      return parseRatio(xpp);
10449    else if (type.equals("Range"))
10450      return parseRange(xpp);
10451    else if (type.equals("Annotation"))
10452      return parseAnnotation(xpp);
10453    else if (type.equals("CodeableConcept"))
10454      return parseCodeableConcept(xpp);
10455    else if (type.equals("Money"))
10456      return parseMoney(xpp);
10457    else if (type.equals("SimpleQuantity"))
10458      return parseSimpleQuantity(xpp);
10459    else if (type.equals("Duration"))
10460      return parseDuration(xpp);
10461    else if (type.equals("Count"))
10462      return parseCount(xpp);
10463    else if (type.equals("Distance"))
10464      return parseDistance(xpp);
10465    else if (type.equals("Age"))
10466      return parseAge(xpp);
10467    else if (type.equals("HumanName"))
10468      return parseHumanName(xpp);
10469    else if (type.equals("ContactPoint"))
10470      return parseContactPoint(xpp);
10471    else if (type.equals("Meta"))
10472      return parseMeta(xpp);
10473    else if (type.equals("Address"))
10474      return parseAddress(xpp);
10475    else if (type.equals("Timing"))
10476      return parseTiming(xpp);
10477    else if (type.equals("ElementDefinition"))
10478      return parseElementDefinition(xpp);
10479    else if (type.equals("Parameters"))
10480      return parseParameters(xpp);
10481    else if (type.equals("Account"))
10482      return parseAccount(xpp);
10483    else if (type.equals("AllergyIntolerance"))
10484      return parseAllergyIntolerance(xpp);
10485    else if (type.equals("Appointment"))
10486      return parseAppointment(xpp);
10487    else if (type.equals("AppointmentResponse"))
10488      return parseAppointmentResponse(xpp);
10489    else if (type.equals("AuditEvent"))
10490      return parseAuditEvent(xpp);
10491    else if (type.equals("Basic"))
10492      return parseBasic(xpp);
10493    else if (type.equals("Binary"))
10494      return parseBinary(xpp);
10495    else if (type.equals("BodySite"))
10496      return parseBodySite(xpp);
10497    else if (type.equals("Bundle"))
10498      return parseBundle(xpp);
10499    else if (type.equals("CarePlan"))
10500      return parseCarePlan(xpp);
10501    else if (type.equals("Claim"))
10502      return parseClaim(xpp);
10503    else if (type.equals("ClaimResponse"))
10504      return parseClaimResponse(xpp);
10505    else if (type.equals("ClinicalImpression"))
10506      return parseClinicalImpression(xpp);
10507    else if (type.equals("Communication"))
10508      return parseCommunication(xpp);
10509    else if (type.equals("CommunicationRequest"))
10510      return parseCommunicationRequest(xpp);
10511    else if (type.equals("Composition"))
10512      return parseComposition(xpp);
10513    else if (type.equals("ConceptMap"))
10514      return parseConceptMap(xpp);
10515    else if (type.equals("Condition"))
10516      return parseCondition(xpp);
10517    else if (type.equals("Conformance"))
10518      return parseConformance(xpp);
10519    else if (type.equals("Contract"))
10520      return parseContract(xpp);
10521    else if (type.equals("Coverage"))
10522      return parseCoverage(xpp);
10523    else if (type.equals("DataElement"))
10524      return parseDataElement(xpp);
10525    else if (type.equals("DetectedIssue"))
10526      return parseDetectedIssue(xpp);
10527    else if (type.equals("Device"))
10528      return parseDevice(xpp);
10529    else if (type.equals("DeviceComponent"))
10530      return parseDeviceComponent(xpp);
10531    else if (type.equals("DeviceMetric"))
10532      return parseDeviceMetric(xpp);
10533    else if (type.equals("DeviceUseRequest"))
10534      return parseDeviceUseRequest(xpp);
10535    else if (type.equals("DeviceUseStatement"))
10536      return parseDeviceUseStatement(xpp);
10537    else if (type.equals("DiagnosticOrder"))
10538      return parseDiagnosticOrder(xpp);
10539    else if (type.equals("DiagnosticReport"))
10540      return parseDiagnosticReport(xpp);
10541    else if (type.equals("DocumentManifest"))
10542      return parseDocumentManifest(xpp);
10543    else if (type.equals("DocumentReference"))
10544      return parseDocumentReference(xpp);
10545    else if (type.equals("EligibilityRequest"))
10546      return parseEligibilityRequest(xpp);
10547    else if (type.equals("EligibilityResponse"))
10548      return parseEligibilityResponse(xpp);
10549    else if (type.equals("Encounter"))
10550      return parseEncounter(xpp);
10551    else if (type.equals("EnrollmentRequest"))
10552      return parseEnrollmentRequest(xpp);
10553    else if (type.equals("EnrollmentResponse"))
10554      return parseEnrollmentResponse(xpp);
10555    else if (type.equals("EpisodeOfCare"))
10556      return parseEpisodeOfCare(xpp);
10557    else if (type.equals("ExplanationOfBenefit"))
10558      return parseExplanationOfBenefit(xpp);
10559    else if (type.equals("FamilyMemberHistory"))
10560      return parseFamilyMemberHistory(xpp);
10561    else if (type.equals("Flag"))
10562      return parseFlag(xpp);
10563    else if (type.equals("Goal"))
10564      return parseGoal(xpp);
10565    else if (type.equals("Group"))
10566      return parseGroup(xpp);
10567    else if (type.equals("HealthcareService"))
10568      return parseHealthcareService(xpp);
10569    else if (type.equals("ImagingObjectSelection"))
10570      return parseImagingObjectSelection(xpp);
10571    else if (type.equals("ImagingStudy"))
10572      return parseImagingStudy(xpp);
10573    else if (type.equals("Immunization"))
10574      return parseImmunization(xpp);
10575    else if (type.equals("ImmunizationRecommendation"))
10576      return parseImmunizationRecommendation(xpp);
10577    else if (type.equals("ImplementationGuide"))
10578      return parseImplementationGuide(xpp);
10579    else if (type.equals("List"))
10580      return parseList_(xpp);
10581    else if (type.equals("Location"))
10582      return parseLocation(xpp);
10583    else if (type.equals("Media"))
10584      return parseMedia(xpp);
10585    else if (type.equals("Medication"))
10586      return parseMedication(xpp);
10587    else if (type.equals("MedicationAdministration"))
10588      return parseMedicationAdministration(xpp);
10589    else if (type.equals("MedicationDispense"))
10590      return parseMedicationDispense(xpp);
10591    else if (type.equals("MedicationOrder"))
10592      return parseMedicationOrder(xpp);
10593    else if (type.equals("MedicationStatement"))
10594      return parseMedicationStatement(xpp);
10595    else if (type.equals("MessageHeader"))
10596      return parseMessageHeader(xpp);
10597    else if (type.equals("NamingSystem"))
10598      return parseNamingSystem(xpp);
10599    else if (type.equals("NutritionOrder"))
10600      return parseNutritionOrder(xpp);
10601    else if (type.equals("Observation"))
10602      return parseObservation(xpp);
10603    else if (type.equals("OperationDefinition"))
10604      return parseOperationDefinition(xpp);
10605    else if (type.equals("OperationOutcome"))
10606      return parseOperationOutcome(xpp);
10607    else if (type.equals("Order"))
10608      return parseOrder(xpp);
10609    else if (type.equals("OrderResponse"))
10610      return parseOrderResponse(xpp);
10611    else if (type.equals("Organization"))
10612      return parseOrganization(xpp);
10613    else if (type.equals("Patient"))
10614      return parsePatient(xpp);
10615    else if (type.equals("PaymentNotice"))
10616      return parsePaymentNotice(xpp);
10617    else if (type.equals("PaymentReconciliation"))
10618      return parsePaymentReconciliation(xpp);
10619    else if (type.equals("Person"))
10620      return parsePerson(xpp);
10621    else if (type.equals("Practitioner"))
10622      return parsePractitioner(xpp);
10623    else if (type.equals("Procedure"))
10624      return parseProcedure(xpp);
10625    else if (type.equals("ProcedureRequest"))
10626      return parseProcedureRequest(xpp);
10627    else if (type.equals("ProcessRequest"))
10628      return parseProcessRequest(xpp);
10629    else if (type.equals("ProcessResponse"))
10630      return parseProcessResponse(xpp);
10631    else if (type.equals("Provenance"))
10632      return parseProvenance(xpp);
10633    else if (type.equals("Questionnaire"))
10634      return parseQuestionnaire(xpp);
10635    else if (type.equals("QuestionnaireResponse"))
10636      return parseQuestionnaireResponse(xpp);
10637    else if (type.equals("ReferralRequest"))
10638      return parseReferralRequest(xpp);
10639    else if (type.equals("RelatedPerson"))
10640      return parseRelatedPerson(xpp);
10641    else if (type.equals("RiskAssessment"))
10642      return parseRiskAssessment(xpp);
10643    else if (type.equals("Schedule"))
10644      return parseSchedule(xpp);
10645    else if (type.equals("SearchParameter"))
10646      return parseSearchParameter(xpp);
10647    else if (type.equals("Slot"))
10648      return parseSlot(xpp);
10649    else if (type.equals("Specimen"))
10650      return parseSpecimen(xpp);
10651    else if (type.equals("StructureDefinition"))
10652      return parseStructureDefinition(xpp);
10653    else if (type.equals("Subscription"))
10654      return parseSubscription(xpp);
10655    else if (type.equals("Substance"))
10656      return parseSubstance(xpp);
10657    else if (type.equals("SupplyDelivery"))
10658      return parseSupplyDelivery(xpp);
10659    else if (type.equals("SupplyRequest"))
10660      return parseSupplyRequest(xpp);
10661    else if (type.equals("TestScript"))
10662      return parseTestScript(xpp);
10663    else if (type.equals("ValueSet"))
10664      return parseValueSet(xpp);
10665    else if (type.equals("VisionPrescription"))
10666      return parseVisionPrescription(xpp);
10667    else if (type.equals("date"))
10668      return parseDate(xpp);
10669    else if (type.equals("dateTime"))
10670      return parseDateTime(xpp);
10671    else if (type.equals("code"))
10672      return parseCode(xpp);
10673    else if (type.equals("string"))
10674      return parseString(xpp);
10675    else if (type.equals("integer"))
10676      return parseInteger(xpp);
10677    else if (type.equals("oid"))
10678      return parseOid(xpp);
10679    else if (type.equals("uri"))
10680      return parseUri(xpp);
10681    else if (type.equals("uuid"))
10682      return parseUuid(xpp);
10683    else if (type.equals("instant"))
10684      return parseInstant(xpp);
10685    else if (type.equals("boolean"))
10686      return parseBoolean(xpp);
10687    else if (type.equals("base64Binary"))
10688      return parseBase64Binary(xpp);
10689    else if (type.equals("unsignedInt"))
10690      return parseUnsignedInt(xpp);
10691    else if (type.equals("markdown"))
10692      return parseMarkdown(xpp);
10693    else if (type.equals("time"))
10694      return parseTime(xpp);
10695    else if (type.equals("id"))
10696      return parseId(xpp);
10697    else if (type.equals("positiveInt"))
10698      return parsePositiveInt(xpp);
10699    else if (type.equals("decimal"))
10700      return parseDecimal(xpp);
10701    throw new FHIRFormatError("Unknown type "+type);
10702  }
10703
10704  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
10705        if (xpp.getName().equals(prefix+"Identifier"))
10706      return true;
10707    if (xpp.getName().equals(prefix+"Coding"))
10708      return true;
10709    if (xpp.getName().equals(prefix+"Reference"))
10710      return true;
10711    if (xpp.getName().equals(prefix+"Signature"))
10712      return true;
10713    if (xpp.getName().equals(prefix+"SampledData"))
10714      return true;
10715    if (xpp.getName().equals(prefix+"Quantity"))
10716      return true;
10717    if (xpp.getName().equals(prefix+"Period"))
10718      return true;
10719    if (xpp.getName().equals(prefix+"Attachment"))
10720      return true;
10721    if (xpp.getName().equals(prefix+"Ratio"))
10722      return true;
10723    if (xpp.getName().equals(prefix+"Range"))
10724      return true;
10725    if (xpp.getName().equals(prefix+"Annotation"))
10726      return true;
10727    if (xpp.getName().equals(prefix+"CodeableConcept"))
10728      return true;
10729    if (xpp.getName().equals(prefix+"Money"))
10730      return true;
10731    if (xpp.getName().equals(prefix+"SimpleQuantity"))
10732      return true;
10733    if (xpp.getName().equals(prefix+"Duration"))
10734      return true;
10735    if (xpp.getName().equals(prefix+"Count"))
10736      return true;
10737    if (xpp.getName().equals(prefix+"Distance"))
10738      return true;
10739    if (xpp.getName().equals(prefix+"Age"))
10740      return true;
10741    if (xpp.getName().equals(prefix+"HumanName"))
10742      return true;
10743    if (xpp.getName().equals(prefix+"ContactPoint"))
10744      return true;
10745    if (xpp.getName().equals(prefix+"Meta"))
10746      return true;
10747    if (xpp.getName().equals(prefix+"Address"))
10748      return true;
10749    if (xpp.getName().equals(prefix+"Timing"))
10750      return true;
10751    if (xpp.getName().equals(prefix+"ElementDefinition"))
10752      return true;
10753    if (xpp.getName().equals(prefix+"Parameters"))
10754      return true;
10755    if (xpp.getName().equals(prefix+"Account"))
10756      return true;
10757    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
10758      return true;
10759    if (xpp.getName().equals(prefix+"Appointment"))
10760      return true;
10761    if (xpp.getName().equals(prefix+"AppointmentResponse"))
10762      return true;
10763    if (xpp.getName().equals(prefix+"AuditEvent"))
10764      return true;
10765    if (xpp.getName().equals(prefix+"Basic"))
10766      return true;
10767    if (xpp.getName().equals(prefix+"Binary"))
10768      return true;
10769    if (xpp.getName().equals(prefix+"BodySite"))
10770      return true;
10771    if (xpp.getName().equals(prefix+"Bundle"))
10772      return true;
10773    if (xpp.getName().equals(prefix+"CarePlan"))
10774      return true;
10775    if (xpp.getName().equals(prefix+"Claim"))
10776      return true;
10777    if (xpp.getName().equals(prefix+"ClaimResponse"))
10778      return true;
10779    if (xpp.getName().equals(prefix+"ClinicalImpression"))
10780      return true;
10781    if (xpp.getName().equals(prefix+"Communication"))
10782      return true;
10783    if (xpp.getName().equals(prefix+"CommunicationRequest"))
10784      return true;
10785    if (xpp.getName().equals(prefix+"Composition"))
10786      return true;
10787    if (xpp.getName().equals(prefix+"ConceptMap"))
10788      return true;
10789    if (xpp.getName().equals(prefix+"Condition"))
10790      return true;
10791    if (xpp.getName().equals(prefix+"Conformance"))
10792      return true;
10793    if (xpp.getName().equals(prefix+"Contract"))
10794      return true;
10795    if (xpp.getName().equals(prefix+"Coverage"))
10796      return true;
10797    if (xpp.getName().equals(prefix+"DataElement"))
10798      return true;
10799    if (xpp.getName().equals(prefix+"DetectedIssue"))
10800      return true;
10801    if (xpp.getName().equals(prefix+"Device"))
10802      return true;
10803    if (xpp.getName().equals(prefix+"DeviceComponent"))
10804      return true;
10805    if (xpp.getName().equals(prefix+"DeviceMetric"))
10806      return true;
10807    if (xpp.getName().equals(prefix+"DeviceUseRequest"))
10808      return true;
10809    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
10810      return true;
10811    if (xpp.getName().equals(prefix+"DiagnosticOrder"))
10812      return true;
10813    if (xpp.getName().equals(prefix+"DiagnosticReport"))
10814      return true;
10815    if (xpp.getName().equals(prefix+"DocumentManifest"))
10816      return true;
10817    if (xpp.getName().equals(prefix+"DocumentReference"))
10818      return true;
10819    if (xpp.getName().equals(prefix+"EligibilityRequest"))
10820      return true;
10821    if (xpp.getName().equals(prefix+"EligibilityResponse"))
10822      return true;
10823    if (xpp.getName().equals(prefix+"Encounter"))
10824      return true;
10825    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
10826      return true;
10827    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
10828      return true;
10829    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
10830      return true;
10831    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
10832      return true;
10833    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
10834      return true;
10835    if (xpp.getName().equals(prefix+"Flag"))
10836      return true;
10837    if (xpp.getName().equals(prefix+"Goal"))
10838      return true;
10839    if (xpp.getName().equals(prefix+"Group"))
10840      return true;
10841    if (xpp.getName().equals(prefix+"HealthcareService"))
10842      return true;
10843    if (xpp.getName().equals(prefix+"ImagingObjectSelection"))
10844      return true;
10845    if (xpp.getName().equals(prefix+"ImagingStudy"))
10846      return true;
10847    if (xpp.getName().equals(prefix+"Immunization"))
10848      return true;
10849    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
10850      return true;
10851    if (xpp.getName().equals(prefix+"ImplementationGuide"))
10852      return true;
10853    if (xpp.getName().equals(prefix+"List"))
10854      return true;
10855    if (xpp.getName().equals(prefix+"Location"))
10856      return true;
10857    if (xpp.getName().equals(prefix+"Media"))
10858      return true;
10859    if (xpp.getName().equals(prefix+"Medication"))
10860      return true;
10861    if (xpp.getName().equals(prefix+"MedicationAdministration"))
10862      return true;
10863    if (xpp.getName().equals(prefix+"MedicationDispense"))
10864      return true;
10865    if (xpp.getName().equals(prefix+"MedicationOrder"))
10866      return true;
10867    if (xpp.getName().equals(prefix+"MedicationStatement"))
10868      return true;
10869    if (xpp.getName().equals(prefix+"MessageHeader"))
10870      return true;
10871    if (xpp.getName().equals(prefix+"NamingSystem"))
10872      return true;
10873    if (xpp.getName().equals(prefix+"NutritionOrder"))
10874      return true;
10875    if (xpp.getName().equals(prefix+"Observation"))
10876      return true;
10877    if (xpp.getName().equals(prefix+"OperationDefinition"))
10878      return true;
10879    if (xpp.getName().equals(prefix+"OperationOutcome"))
10880      return true;
10881    if (xpp.getName().equals(prefix+"Order"))
10882      return true;
10883    if (xpp.getName().equals(prefix+"OrderResponse"))
10884      return true;
10885    if (xpp.getName().equals(prefix+"Organization"))
10886      return true;
10887    if (xpp.getName().equals(prefix+"Patient"))
10888      return true;
10889    if (xpp.getName().equals(prefix+"PaymentNotice"))
10890      return true;
10891    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
10892      return true;
10893    if (xpp.getName().equals(prefix+"Person"))
10894      return true;
10895    if (xpp.getName().equals(prefix+"Practitioner"))
10896      return true;
10897    if (xpp.getName().equals(prefix+"Procedure"))
10898      return true;
10899    if (xpp.getName().equals(prefix+"ProcedureRequest"))
10900      return true;
10901    if (xpp.getName().equals(prefix+"ProcessRequest"))
10902      return true;
10903    if (xpp.getName().equals(prefix+"ProcessResponse"))
10904      return true;
10905    if (xpp.getName().equals(prefix+"Provenance"))
10906      return true;
10907    if (xpp.getName().equals(prefix+"Questionnaire"))
10908      return true;
10909    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
10910      return true;
10911    if (xpp.getName().equals(prefix+"ReferralRequest"))
10912      return true;
10913    if (xpp.getName().equals(prefix+"RelatedPerson"))
10914      return true;
10915    if (xpp.getName().equals(prefix+"RiskAssessment"))
10916      return true;
10917    if (xpp.getName().equals(prefix+"Schedule"))
10918      return true;
10919    if (xpp.getName().equals(prefix+"SearchParameter"))
10920      return true;
10921    if (xpp.getName().equals(prefix+"Slot"))
10922      return true;
10923    if (xpp.getName().equals(prefix+"Specimen"))
10924      return true;
10925    if (xpp.getName().equals(prefix+"StructureDefinition"))
10926      return true;
10927    if (xpp.getName().equals(prefix+"Subscription"))
10928      return true;
10929    if (xpp.getName().equals(prefix+"Substance"))
10930      return true;
10931    if (xpp.getName().equals(prefix+"SupplyDelivery"))
10932      return true;
10933    if (xpp.getName().equals(prefix+"SupplyRequest"))
10934      return true;
10935    if (xpp.getName().equals(prefix+"TestScript"))
10936      return true;
10937    if (xpp.getName().equals(prefix+"ValueSet"))
10938      return true;
10939    if (xpp.getName().equals(prefix+"VisionPrescription"))
10940      return true;
10941    if (xpp.getName().equals(prefix+"Date"))
10942      return true;
10943    if (xpp.getName().equals(prefix+"DateTime"))
10944      return true;
10945    if (xpp.getName().equals(prefix+"Code"))
10946      return true;
10947    if (xpp.getName().equals(prefix+"String"))
10948      return true;
10949    if (xpp.getName().equals(prefix+"Integer"))
10950      return true;
10951    if (xpp.getName().equals(prefix+"Oid"))
10952      return true;
10953    if (xpp.getName().equals(prefix+"Uri"))
10954      return true;
10955    if (xpp.getName().equals(prefix+"Uuid"))
10956      return true;
10957    if (xpp.getName().equals(prefix+"Instant"))
10958      return true;
10959    if (xpp.getName().equals(prefix+"Boolean"))
10960      return true;
10961    if (xpp.getName().equals(prefix+"Base64Binary"))
10962      return true;
10963    if (xpp.getName().equals(prefix+"UnsignedInt"))
10964      return true;
10965    if (xpp.getName().equals(prefix+"Markdown"))
10966      return true;
10967    if (xpp.getName().equals(prefix+"Time"))
10968      return true;
10969    if (xpp.getName().equals(prefix+"Id"))
10970      return true;
10971    if (xpp.getName().equals(prefix+"PositiveInt"))
10972      return true;
10973    if (xpp.getName().equals(prefix+"Decimal"))
10974      return true;
10975    return false;
10976  }
10977  protected void composeElementElements(Element element) throws IOException {
10978    for (Extension e : element.getExtension()) {
10979      composeExtension("extension", e);
10980    }
10981  }
10982
10983  protected void composeBackboneElements(BackboneElement element) throws IOException {
10984    composeElementElements(element);
10985    for (Extension e : element.getModifierExtension()) {
10986      composeExtension("modifierExtension", e);
10987    }
10988  }
10989
10990  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
10991    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
10992      composeElementAttributes(value);
10993      if (value.getValue() != null) 
10994        xml.attribute("value", e.toCode(value.getValue()));
10995        
10996      xml.enter(FHIR_NS, name);
10997      composeElementElements(value);
10998      composeElementClose(value);
10999      xml.exit(FHIR_NS, name);
11000    }    
11001  }    
11002
11003  protected void composeDate(String name, DateType value) throws IOException  {
11004    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
11005      composeElementAttributes(value);
11006      if (value.asStringValue() != null) 
11007        xml.attribute("value", value.asStringValue());
11008        
11009      xml.enter(FHIR_NS, name);
11010      composeElementElements(value);
11011      composeElementClose(value);
11012      xml.exit(FHIR_NS, name);
11013    }    
11014  }    
11015
11016  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
11017    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
11018      composeElementAttributes(value);
11019      if (value.asStringValue() != null) 
11020        xml.attribute("value", value.asStringValue());
11021        
11022      xml.enter(FHIR_NS, name);
11023      composeElementElements(value);
11024      composeElementClose(value);
11025      xml.exit(FHIR_NS, name);
11026    }    
11027  }    
11028
11029  protected void composeCode(String name, CodeType value) throws IOException  {
11030    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
11031      composeElementAttributes(value);
11032      if (value.asStringValue() != null) 
11033        xml.attribute("value", value.asStringValue());
11034        
11035      xml.enter(FHIR_NS, name);
11036      composeElementElements(value);
11037      composeElementClose(value);
11038      xml.exit(FHIR_NS, name);
11039    }    
11040  }    
11041
11042  protected void composeString(String name, StringType value) throws IOException  {
11043    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
11044      composeElementAttributes(value);
11045      if (value.asStringValue() != null) 
11046        xml.attribute("value", value.asStringValue());
11047        
11048      xml.enter(FHIR_NS, name);
11049      composeElementElements(value);
11050      composeElementClose(value);
11051      xml.exit(FHIR_NS, name);
11052    }    
11053  }    
11054
11055  protected void composeInteger(String name, IntegerType value) throws IOException  {
11056    if (value != null) { // integer
11057      composeElementAttributes(value);
11058      if (value.asStringValue() != null) 
11059        xml.attribute("value", value.asStringValue());
11060        
11061      xml.enter(FHIR_NS, name);
11062      composeElementElements(value);
11063      composeElementClose(value);
11064      xml.exit(FHIR_NS, name);
11065    }    
11066  }    
11067
11068  protected void composeOid(String name, OidType value) throws IOException  {
11069    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
11070      composeElementAttributes(value);
11071      if (value.asStringValue() != null) 
11072        xml.attribute("value", value.asStringValue());
11073        
11074      xml.enter(FHIR_NS, name);
11075      composeElementElements(value);
11076      composeElementClose(value);
11077      xml.exit(FHIR_NS, name);
11078    }    
11079  }    
11080
11081  protected void composeUri(String name, UriType value) throws IOException  {
11082    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
11083      composeElementAttributes(value);
11084      if (value.asStringValue() != null) 
11085        xml.attribute("value", value.asStringValue());
11086        
11087      xml.enter(FHIR_NS, name);
11088      composeElementElements(value);
11089      composeElementClose(value);
11090      xml.exit(FHIR_NS, name);
11091    }    
11092  }    
11093
11094  protected void composeUuid(String name, UuidType value) throws IOException  {
11095    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
11096      composeElementAttributes(value);
11097      if (value.asStringValue() != null) 
11098        xml.attribute("value", value.asStringValue());
11099        
11100      xml.enter(FHIR_NS, name);
11101      composeElementElements(value);
11102      composeElementClose(value);
11103      xml.exit(FHIR_NS, name);
11104    }    
11105  }    
11106
11107  protected void composeInstant(String name, InstantType value) throws IOException  {
11108    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
11109      composeElementAttributes(value);
11110      if (value.asStringValue() != null) 
11111        xml.attribute("value", value.asStringValue());
11112        
11113      xml.enter(FHIR_NS, name);
11114      composeElementElements(value);
11115      composeElementClose(value);
11116      xml.exit(FHIR_NS, name);
11117    }    
11118  }    
11119
11120  protected void composeBoolean(String name, BooleanType value) throws IOException  {
11121    if (value != null) { // boolean
11122      composeElementAttributes(value);
11123      if (value.asStringValue() != null) 
11124        xml.attribute("value", value.asStringValue());
11125        
11126      xml.enter(FHIR_NS, name);
11127      composeElementElements(value);
11128      composeElementClose(value);
11129      xml.exit(FHIR_NS, name);
11130    }    
11131  }    
11132
11133  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
11134    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
11135      composeElementAttributes(value);
11136      if (value.asStringValue() != null) 
11137        xml.attribute("value", value.asStringValue());
11138        
11139      xml.enter(FHIR_NS, name);
11140      composeElementElements(value);
11141      composeElementClose(value);
11142      xml.exit(FHIR_NS, name);
11143    }    
11144  }    
11145
11146  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
11147    if (value != null) { // unsignedInt
11148      composeElementAttributes(value);
11149      if (value.asStringValue() != null) 
11150        xml.attribute("value", value.asStringValue());
11151        
11152      xml.enter(FHIR_NS, name);
11153      composeElementElements(value);
11154      composeElementClose(value);
11155      xml.exit(FHIR_NS, name);
11156    }    
11157  }    
11158
11159  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
11160    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
11161      composeElementAttributes(value);
11162      if (value.asStringValue() != null) 
11163        xml.attribute("value", value.asStringValue());
11164        
11165      xml.enter(FHIR_NS, name);
11166      composeElementElements(value);
11167      composeElementClose(value);
11168      xml.exit(FHIR_NS, name);
11169    }    
11170  }    
11171
11172  protected void composeTime(String name, TimeType value) throws IOException  {
11173    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
11174      composeElementAttributes(value);
11175      if (value.asStringValue() != null) 
11176        xml.attribute("value", value.asStringValue());
11177        
11178      xml.enter(FHIR_NS, name);
11179      composeElementElements(value);
11180      composeElementClose(value);
11181      xml.exit(FHIR_NS, name);
11182    }    
11183  }    
11184
11185  protected void composeId(String name, IdType value) throws IOException  {
11186    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
11187      composeElementAttributes(value);
11188      if (value.asStringValue() != null) 
11189        xml.attribute("value", value.asStringValue());
11190        
11191      xml.enter(FHIR_NS, name);
11192      composeElementElements(value);
11193      composeElementClose(value);
11194      xml.exit(FHIR_NS, name);
11195    }    
11196  }    
11197
11198  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
11199    if (value != null) { // positiveInt
11200      composeElementAttributes(value);
11201      if (value.asStringValue() != null) 
11202        xml.attribute("value", value.asStringValue());
11203        
11204      xml.enter(FHIR_NS, name);
11205      composeElementElements(value);
11206      composeElementClose(value);
11207      xml.exit(FHIR_NS, name);
11208    }    
11209  }    
11210
11211  protected void composeDecimal(String name, DecimalType value) throws IOException  {
11212    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
11213      composeElementAttributes(value);
11214      if (value.asStringValue() != null) 
11215        xml.attribute("value", value.asStringValue());
11216        
11217      xml.enter(FHIR_NS, name);
11218      composeElementElements(value);
11219      composeElementClose(value);
11220      xml.exit(FHIR_NS, name);
11221    }    
11222  }    
11223
11224  protected void composeExtension(String name, Extension element) throws IOException {
11225    if (element != null) {
11226      composeElementAttributes(element);
11227      if (element.hasUrlElement())
11228        xml.attribute("url", element.getUrlElement().getValue());
11229      xml.enter(FHIR_NS, name);
11230      composeElementElements(element);
11231      if (element.hasValue()) {
11232        composeType("value", element.getValue());
11233      }      composeElementClose(element);
11234      xml.exit(FHIR_NS, name);
11235    }
11236  }
11237
11238  protected void composeNarrative(String name, Narrative element) throws IOException {
11239    if (element != null) {
11240      composeElementAttributes(element);
11241      xml.enter(FHIR_NS, name);
11242      composeElementElements(element);
11243      if (element.hasStatusElement())
11244        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
11245      if (element.hasDiv()) {
11246        composeXhtml("div", element.getDiv());
11247      }
11248      composeElementClose(element);
11249      xml.exit(FHIR_NS, name);
11250    }
11251  }
11252
11253  protected void composeIdentifier(String name, Identifier element) throws IOException {
11254    if (element != null) {
11255      composeTypeAttributes(element);
11256      xml.enter(FHIR_NS, name);
11257      composeElementElements(element);
11258      if (element.hasUseElement())
11259        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
11260      if (element.hasType()) {
11261        composeCodeableConcept("type", element.getType());
11262      }
11263      if (element.hasSystemElement()) {
11264        composeUri("system", element.getSystemElement());
11265      }
11266      if (element.hasValueElement()) {
11267        composeString("value", element.getValueElement());
11268      }
11269      if (element.hasPeriod()) {
11270        composePeriod("period", element.getPeriod());
11271      }
11272      if (element.hasAssigner()) {
11273        composeReference("assigner", element.getAssigner());
11274      }
11275      composeElementClose(element);
11276      xml.exit(FHIR_NS, name);
11277    }
11278  }
11279
11280  protected void composeCoding(String name, Coding element) throws IOException {
11281    if (element != null) {
11282      composeTypeAttributes(element);
11283      xml.enter(FHIR_NS, name);
11284      composeElementElements(element);
11285      if (element.hasSystemElement()) {
11286        composeUri("system", element.getSystemElement());
11287      }
11288      if (element.hasVersionElement()) {
11289        composeString("version", element.getVersionElement());
11290      }
11291      if (element.hasCodeElement()) {
11292        composeCode("code", element.getCodeElement());
11293      }
11294      if (element.hasDisplayElement()) {
11295        composeString("display", element.getDisplayElement());
11296      }
11297      if (element.hasUserSelectedElement()) {
11298        composeBoolean("userSelected", element.getUserSelectedElement());
11299      }
11300      composeElementClose(element);
11301      xml.exit(FHIR_NS, name);
11302    }
11303  }
11304
11305  protected void composeReference(String name, Reference element) throws IOException {
11306    if (element != null) {
11307      composeTypeAttributes(element);
11308      xml.enter(FHIR_NS, name);
11309      composeElementElements(element);
11310      if (element.hasReferenceElement()) {
11311        composeString("reference", element.getReferenceElement());
11312      }
11313      if (element.hasDisplayElement()) {
11314        composeString("display", element.getDisplayElement());
11315      }
11316      composeElementClose(element);
11317      xml.exit(FHIR_NS, name);
11318    }
11319  }
11320
11321  protected void composeSignature(String name, Signature element) throws IOException {
11322    if (element != null) {
11323      composeTypeAttributes(element);
11324      xml.enter(FHIR_NS, name);
11325      composeElementElements(element);
11326      if (element.hasType()) { 
11327        for (Coding e : element.getType()) 
11328          composeCoding("type", e);
11329      }
11330      if (element.hasWhenElement()) {
11331        composeInstant("when", element.getWhenElement());
11332      }
11333      if (element.hasWho()) {
11334        composeType("who", element.getWho());
11335      }      if (element.hasContentTypeElement()) {
11336        composeCode("contentType", element.getContentTypeElement());
11337      }
11338      if (element.hasBlobElement()) {
11339        composeBase64Binary("blob", element.getBlobElement());
11340      }
11341      composeElementClose(element);
11342      xml.exit(FHIR_NS, name);
11343    }
11344  }
11345
11346  protected void composeSampledData(String name, SampledData element) throws IOException {
11347    if (element != null) {
11348      composeTypeAttributes(element);
11349      xml.enter(FHIR_NS, name);
11350      composeElementElements(element);
11351      if (element.hasOrigin()) {
11352        composeSimpleQuantity("origin", element.getOrigin());
11353      }
11354      if (element.hasPeriodElement()) {
11355        composeDecimal("period", element.getPeriodElement());
11356      }
11357      if (element.hasFactorElement()) {
11358        composeDecimal("factor", element.getFactorElement());
11359      }
11360      if (element.hasLowerLimitElement()) {
11361        composeDecimal("lowerLimit", element.getLowerLimitElement());
11362      }
11363      if (element.hasUpperLimitElement()) {
11364        composeDecimal("upperLimit", element.getUpperLimitElement());
11365      }
11366      if (element.hasDimensionsElement()) {
11367        composePositiveInt("dimensions", element.getDimensionsElement());
11368      }
11369      if (element.hasDataElement()) {
11370        composeString("data", element.getDataElement());
11371      }
11372      composeElementClose(element);
11373      xml.exit(FHIR_NS, name);
11374    }
11375  }
11376
11377  protected void composeQuantity(String name, Quantity element) throws IOException {
11378    if (element != null) {
11379      composeTypeAttributes(element);
11380      xml.enter(FHIR_NS, name);
11381      composeElementElements(element);
11382      if (element.hasValueElement()) {
11383        composeDecimal("value", element.getValueElement());
11384      }
11385      if (element.hasComparatorElement())
11386        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
11387      if (element.hasUnitElement()) {
11388        composeString("unit", element.getUnitElement());
11389      }
11390      if (element.hasSystemElement()) {
11391        composeUri("system", element.getSystemElement());
11392      }
11393      if (element.hasCodeElement()) {
11394        composeCode("code", element.getCodeElement());
11395      }
11396      composeElementClose(element);
11397      xml.exit(FHIR_NS, name);
11398    }
11399  }
11400
11401  protected void composePeriod(String name, Period element) throws IOException {
11402    if (element != null) {
11403      composeTypeAttributes(element);
11404      xml.enter(FHIR_NS, name);
11405      composeElementElements(element);
11406      if (element.hasStartElement()) {
11407        composeDateTime("start", element.getStartElement());
11408      }
11409      if (element.hasEndElement()) {
11410        composeDateTime("end", element.getEndElement());
11411      }
11412      composeElementClose(element);
11413      xml.exit(FHIR_NS, name);
11414    }
11415  }
11416
11417  protected void composeAttachment(String name, Attachment element) throws IOException {
11418    if (element != null) {
11419      composeTypeAttributes(element);
11420      xml.enter(FHIR_NS, name);
11421      composeElementElements(element);
11422      if (element.hasContentTypeElement()) {
11423        composeCode("contentType", element.getContentTypeElement());
11424      }
11425      if (element.hasLanguageElement()) {
11426        composeCode("language", element.getLanguageElement());
11427      }
11428      if (element.hasDataElement()) {
11429        composeBase64Binary("data", element.getDataElement());
11430      }
11431      if (element.hasUrlElement()) {
11432        composeUri("url", element.getUrlElement());
11433      }
11434      if (element.hasSizeElement()) {
11435        composeUnsignedInt("size", element.getSizeElement());
11436      }
11437      if (element.hasHashElement()) {
11438        composeBase64Binary("hash", element.getHashElement());
11439      }
11440      if (element.hasTitleElement()) {
11441        composeString("title", element.getTitleElement());
11442      }
11443      if (element.hasCreationElement()) {
11444        composeDateTime("creation", element.getCreationElement());
11445      }
11446      composeElementClose(element);
11447      xml.exit(FHIR_NS, name);
11448    }
11449  }
11450
11451  protected void composeRatio(String name, Ratio element) throws IOException {
11452    if (element != null) {
11453      composeTypeAttributes(element);
11454      xml.enter(FHIR_NS, name);
11455      composeElementElements(element);
11456      if (element.hasNumerator()) {
11457        composeQuantity("numerator", element.getNumerator());
11458      }
11459      if (element.hasDenominator()) {
11460        composeQuantity("denominator", element.getDenominator());
11461      }
11462      composeElementClose(element);
11463      xml.exit(FHIR_NS, name);
11464    }
11465  }
11466
11467  protected void composeRange(String name, Range element) throws IOException {
11468    if (element != null) {
11469      composeTypeAttributes(element);
11470      xml.enter(FHIR_NS, name);
11471      composeElementElements(element);
11472      if (element.hasLow()) {
11473        composeSimpleQuantity("low", element.getLow());
11474      }
11475      if (element.hasHigh()) {
11476        composeSimpleQuantity("high", element.getHigh());
11477      }
11478      composeElementClose(element);
11479      xml.exit(FHIR_NS, name);
11480    }
11481  }
11482
11483  protected void composeAnnotation(String name, Annotation element) throws IOException {
11484    if (element != null) {
11485      composeTypeAttributes(element);
11486      xml.enter(FHIR_NS, name);
11487      composeElementElements(element);
11488      if (element.hasAuthor()) {
11489        composeType("author", element.getAuthor());
11490      }      if (element.hasTimeElement()) {
11491        composeDateTime("time", element.getTimeElement());
11492      }
11493      if (element.hasTextElement()) {
11494        composeString("text", element.getTextElement());
11495      }
11496      composeElementClose(element);
11497      xml.exit(FHIR_NS, name);
11498    }
11499  }
11500
11501  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
11502    if (element != null) {
11503      composeTypeAttributes(element);
11504      xml.enter(FHIR_NS, name);
11505      composeElementElements(element);
11506      if (element.hasCoding()) { 
11507        for (Coding e : element.getCoding()) 
11508          composeCoding("coding", e);
11509      }
11510      if (element.hasTextElement()) {
11511        composeString("text", element.getTextElement());
11512      }
11513      composeElementClose(element);
11514      xml.exit(FHIR_NS, name);
11515    }
11516  }
11517
11518  protected void composeMoney(String name, Money element) throws IOException {
11519    if (element != null) {
11520      composeTypeAttributes(element);
11521      xml.enter(FHIR_NS, name);
11522      composeElementElements(element);
11523      if (element.hasValueElement()) {
11524        composeDecimal("value", element.getValueElement());
11525      }
11526      if (element.hasComparatorElement())
11527        composeEnumeration("comparator", element.getComparatorElement(), new Money.QuantityComparatorEnumFactory());
11528      if (element.hasUnitElement()) {
11529        composeString("unit", element.getUnitElement());
11530      }
11531      if (element.hasSystemElement()) {
11532        composeUri("system", element.getSystemElement());
11533      }
11534      if (element.hasCodeElement()) {
11535        composeCode("code", element.getCodeElement());
11536      }
11537      composeElementClose(element);
11538      xml.exit(FHIR_NS, name);
11539    }
11540  }
11541
11542  protected void composeSimpleQuantity(String name, SimpleQuantity element) throws IOException {
11543    if (element != null) {
11544      composeTypeAttributes(element);
11545      xml.enter(FHIR_NS, name);
11546      composeElementElements(element);
11547      if (element.hasValueElement()) {
11548        composeDecimal("value", element.getValueElement());
11549      }
11550      if (element.hasComparatorElement())
11551        composeEnumeration("comparator", element.getComparatorElement(), new SimpleQuantity.QuantityComparatorEnumFactory());
11552      if (element.hasUnitElement()) {
11553        composeString("unit", element.getUnitElement());
11554      }
11555      if (element.hasSystemElement()) {
11556        composeUri("system", element.getSystemElement());
11557      }
11558      if (element.hasCodeElement()) {
11559        composeCode("code", element.getCodeElement());
11560      }
11561      composeElementClose(element);
11562      xml.exit(FHIR_NS, name);
11563    }
11564  }
11565
11566  protected void composeDuration(String name, Duration element) throws IOException {
11567    if (element != null) {
11568      composeTypeAttributes(element);
11569      xml.enter(FHIR_NS, name);
11570      composeElementElements(element);
11571      if (element.hasValueElement()) {
11572        composeDecimal("value", element.getValueElement());
11573      }
11574      if (element.hasComparatorElement())
11575        composeEnumeration("comparator", element.getComparatorElement(), new Duration.QuantityComparatorEnumFactory());
11576      if (element.hasUnitElement()) {
11577        composeString("unit", element.getUnitElement());
11578      }
11579      if (element.hasSystemElement()) {
11580        composeUri("system", element.getSystemElement());
11581      }
11582      if (element.hasCodeElement()) {
11583        composeCode("code", element.getCodeElement());
11584      }
11585      composeElementClose(element);
11586      xml.exit(FHIR_NS, name);
11587    }
11588  }
11589
11590  protected void composeCount(String name, Count element) throws IOException {
11591    if (element != null) {
11592      composeTypeAttributes(element);
11593      xml.enter(FHIR_NS, name);
11594      composeElementElements(element);
11595      if (element.hasValueElement()) {
11596        composeDecimal("value", element.getValueElement());
11597      }
11598      if (element.hasComparatorElement())
11599        composeEnumeration("comparator", element.getComparatorElement(), new Count.QuantityComparatorEnumFactory());
11600      if (element.hasUnitElement()) {
11601        composeString("unit", element.getUnitElement());
11602      }
11603      if (element.hasSystemElement()) {
11604        composeUri("system", element.getSystemElement());
11605      }
11606      if (element.hasCodeElement()) {
11607        composeCode("code", element.getCodeElement());
11608      }
11609      composeElementClose(element);
11610      xml.exit(FHIR_NS, name);
11611    }
11612  }
11613
11614  protected void composeDistance(String name, Distance element) throws IOException {
11615    if (element != null) {
11616      composeTypeAttributes(element);
11617      xml.enter(FHIR_NS, name);
11618      composeElementElements(element);
11619      if (element.hasValueElement()) {
11620        composeDecimal("value", element.getValueElement());
11621      }
11622      if (element.hasComparatorElement())
11623        composeEnumeration("comparator", element.getComparatorElement(), new Distance.QuantityComparatorEnumFactory());
11624      if (element.hasUnitElement()) {
11625        composeString("unit", element.getUnitElement());
11626      }
11627      if (element.hasSystemElement()) {
11628        composeUri("system", element.getSystemElement());
11629      }
11630      if (element.hasCodeElement()) {
11631        composeCode("code", element.getCodeElement());
11632      }
11633      composeElementClose(element);
11634      xml.exit(FHIR_NS, name);
11635    }
11636  }
11637
11638  protected void composeAge(String name, Age element) throws IOException {
11639    if (element != null) {
11640      composeTypeAttributes(element);
11641      xml.enter(FHIR_NS, name);
11642      composeElementElements(element);
11643      if (element.hasValueElement()) {
11644        composeDecimal("value", element.getValueElement());
11645      }
11646      if (element.hasComparatorElement())
11647        composeEnumeration("comparator", element.getComparatorElement(), new Age.QuantityComparatorEnumFactory());
11648      if (element.hasUnitElement()) {
11649        composeString("unit", element.getUnitElement());
11650      }
11651      if (element.hasSystemElement()) {
11652        composeUri("system", element.getSystemElement());
11653      }
11654      if (element.hasCodeElement()) {
11655        composeCode("code", element.getCodeElement());
11656      }
11657      composeElementClose(element);
11658      xml.exit(FHIR_NS, name);
11659    }
11660  }
11661
11662  protected void composeHumanName(String name, HumanName element) throws IOException {
11663    if (element != null) {
11664      composeElementAttributes(element);
11665      xml.enter(FHIR_NS, name);
11666      composeElementElements(element);
11667      if (element.hasUseElement())
11668        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
11669      if (element.hasTextElement()) {
11670        composeString("text", element.getTextElement());
11671      }
11672      if (element.hasFamily()) { 
11673        for (StringType e : element.getFamily()) 
11674          composeString("family", e);
11675      }
11676      if (element.hasGiven()) { 
11677        for (StringType e : element.getGiven()) 
11678          composeString("given", e);
11679      }
11680      if (element.hasPrefix()) { 
11681        for (StringType e : element.getPrefix()) 
11682          composeString("prefix", e);
11683      }
11684      if (element.hasSuffix()) { 
11685        for (StringType e : element.getSuffix()) 
11686          composeString("suffix", e);
11687      }
11688      if (element.hasPeriod()) {
11689        composePeriod("period", element.getPeriod());
11690      }
11691      composeElementClose(element);
11692      xml.exit(FHIR_NS, name);
11693    }
11694  }
11695
11696  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
11697    if (element != null) {
11698      composeElementAttributes(element);
11699      xml.enter(FHIR_NS, name);
11700      composeElementElements(element);
11701      if (element.hasSystemElement())
11702        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
11703      if (element.hasValueElement()) {
11704        composeString("value", element.getValueElement());
11705      }
11706      if (element.hasUseElement())
11707        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
11708      if (element.hasRankElement()) {
11709        composePositiveInt("rank", element.getRankElement());
11710      }
11711      if (element.hasPeriod()) {
11712        composePeriod("period", element.getPeriod());
11713      }
11714      composeElementClose(element);
11715      xml.exit(FHIR_NS, name);
11716    }
11717  }
11718
11719  protected void composeMeta(String name, Meta element) throws IOException {
11720    if (element != null) {
11721      composeElementAttributes(element);
11722      xml.enter(FHIR_NS, name);
11723      composeElementElements(element);
11724      if (element.hasVersionIdElement()) {
11725        composeId("versionId", element.getVersionIdElement());
11726      }
11727      if (element.hasLastUpdatedElement()) {
11728        composeInstant("lastUpdated", element.getLastUpdatedElement());
11729      }
11730      if (element.hasProfile()) { 
11731        for (UriType e : element.getProfile()) 
11732          composeUri("profile", e);
11733      }
11734      if (element.hasSecurity()) { 
11735        for (Coding e : element.getSecurity()) 
11736          composeCoding("security", e);
11737      }
11738      if (element.hasTag()) { 
11739        for (Coding e : element.getTag()) 
11740          composeCoding("tag", e);
11741      }
11742      composeElementClose(element);
11743      xml.exit(FHIR_NS, name);
11744    }
11745  }
11746
11747  protected void composeAddress(String name, Address element) throws IOException {
11748    if (element != null) {
11749      composeElementAttributes(element);
11750      xml.enter(FHIR_NS, name);
11751      composeElementElements(element);
11752      if (element.hasUseElement())
11753        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
11754      if (element.hasTypeElement())
11755        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
11756      if (element.hasTextElement()) {
11757        composeString("text", element.getTextElement());
11758      }
11759      if (element.hasLine()) { 
11760        for (StringType e : element.getLine()) 
11761          composeString("line", e);
11762      }
11763      if (element.hasCityElement()) {
11764        composeString("city", element.getCityElement());
11765      }
11766      if (element.hasDistrictElement()) {
11767        composeString("district", element.getDistrictElement());
11768      }
11769      if (element.hasStateElement()) {
11770        composeString("state", element.getStateElement());
11771      }
11772      if (element.hasPostalCodeElement()) {
11773        composeString("postalCode", element.getPostalCodeElement());
11774      }
11775      if (element.hasCountryElement()) {
11776        composeString("country", element.getCountryElement());
11777      }
11778      if (element.hasPeriod()) {
11779        composePeriod("period", element.getPeriod());
11780      }
11781      composeElementClose(element);
11782      xml.exit(FHIR_NS, name);
11783    }
11784  }
11785
11786  protected void composeTiming(String name, Timing element) throws IOException {
11787    if (element != null) {
11788      composeElementAttributes(element);
11789      xml.enter(FHIR_NS, name);
11790      composeElementElements(element);
11791      if (element.hasEvent()) { 
11792        for (DateTimeType e : element.getEvent()) 
11793          composeDateTime("event", e);
11794      }
11795      if (element.hasRepeat()) {
11796        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
11797      }
11798      if (element.hasCode()) {
11799        composeCodeableConcept("code", element.getCode());
11800      }
11801      composeElementClose(element);
11802      xml.exit(FHIR_NS, name);
11803    }
11804  }
11805
11806  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
11807    if (element != null) {
11808      composeElementAttributes(element);
11809      xml.enter(FHIR_NS, name);
11810      composeElementElements(element);
11811      if (element.hasBounds()) {
11812        composeType("bounds", element.getBounds());
11813      }      if (element.hasCountElement()) {
11814        composeInteger("count", element.getCountElement());
11815      }
11816      if (element.hasDurationElement()) {
11817        composeDecimal("duration", element.getDurationElement());
11818      }
11819      if (element.hasDurationMaxElement()) {
11820        composeDecimal("durationMax", element.getDurationMaxElement());
11821      }
11822      if (element.hasDurationUnitsElement())
11823        composeEnumeration("durationUnits", element.getDurationUnitsElement(), new Timing.UnitsOfTimeEnumFactory());
11824      if (element.hasFrequencyElement()) {
11825        composeInteger("frequency", element.getFrequencyElement());
11826      }
11827      if (element.hasFrequencyMaxElement()) {
11828        composeInteger("frequencyMax", element.getFrequencyMaxElement());
11829      }
11830      if (element.hasPeriodElement()) {
11831        composeDecimal("period", element.getPeriodElement());
11832      }
11833      if (element.hasPeriodMaxElement()) {
11834        composeDecimal("periodMax", element.getPeriodMaxElement());
11835      }
11836      if (element.hasPeriodUnitsElement())
11837        composeEnumeration("periodUnits", element.getPeriodUnitsElement(), new Timing.UnitsOfTimeEnumFactory());
11838      if (element.hasWhenElement())
11839        composeEnumeration("when", element.getWhenElement(), new Timing.EventTimingEnumFactory());
11840      composeElementClose(element);
11841      xml.exit(FHIR_NS, name);
11842    }
11843  }
11844
11845  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
11846    if (element != null) {
11847      composeElementAttributes(element);
11848      xml.enter(FHIR_NS, name);
11849      composeElementElements(element);
11850      if (element.hasPathElement()) {
11851        composeString("path", element.getPathElement());
11852      }
11853        if (element.hasRepresentation()) 
11854          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
11855            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
11856      if (element.hasNameElement()) {
11857        composeString("name", element.getNameElement());
11858      }
11859      if (element.hasLabelElement()) {
11860        composeString("label", element.getLabelElement());
11861      }
11862      if (element.hasCode()) { 
11863        for (Coding e : element.getCode()) 
11864          composeCoding("code", e);
11865      }
11866      if (element.hasSlicing()) {
11867        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
11868      }
11869      if (element.hasShortElement()) {
11870        composeString("short", element.getShortElement());
11871      }
11872      if (element.hasDefinitionElement()) {
11873        composeMarkdown("definition", element.getDefinitionElement());
11874      }
11875      if (element.hasCommentsElement()) {
11876        composeMarkdown("comments", element.getCommentsElement());
11877      }
11878      if (element.hasRequirementsElement()) {
11879        composeMarkdown("requirements", element.getRequirementsElement());
11880      }
11881      if (element.hasAlias()) { 
11882        for (StringType e : element.getAlias()) 
11883          composeString("alias", e);
11884      }
11885      if (element.hasMinElement()) {
11886        composeInteger("min", element.getMinElement());
11887      }
11888      if (element.hasMaxElement()) {
11889        composeString("max", element.getMaxElement());
11890      }
11891      if (element.hasBase()) {
11892        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
11893      }
11894      if (element.hasType()) { 
11895        for (ElementDefinition.TypeRefComponent e : element.getType()) 
11896          composeElementDefinitionTypeRefComponent("type", e);
11897      }
11898      if (element.hasNameReferenceElement()) {
11899        composeString("nameReference", element.getNameReferenceElement());
11900      }
11901      if (element.hasDefaultValue()) {
11902        composeType("defaultValue", element.getDefaultValue());
11903      }      if (element.hasMeaningWhenMissingElement()) {
11904        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
11905      }
11906      if (element.hasFixed()) {
11907        composeType("fixed", element.getFixed());
11908      }      if (element.hasPattern()) {
11909        composeType("pattern", element.getPattern());
11910      }      if (element.hasExample()) {
11911        composeType("example", element.getExample());
11912      }      if (element.hasMinValue()) {
11913        composeType("minValue", element.getMinValue());
11914      }      if (element.hasMaxValue()) {
11915        composeType("maxValue", element.getMaxValue());
11916      }      if (element.hasMaxLengthElement()) {
11917        composeInteger("maxLength", element.getMaxLengthElement());
11918      }
11919      if (element.hasCondition()) { 
11920        for (IdType e : element.getCondition()) 
11921          composeId("condition", e);
11922      }
11923      if (element.hasConstraint()) { 
11924        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
11925          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
11926      }
11927      if (element.hasMustSupportElement()) {
11928        composeBoolean("mustSupport", element.getMustSupportElement());
11929      }
11930      if (element.hasIsModifierElement()) {
11931        composeBoolean("isModifier", element.getIsModifierElement());
11932      }
11933      if (element.hasIsSummaryElement()) {
11934        composeBoolean("isSummary", element.getIsSummaryElement());
11935      }
11936      if (element.hasBinding()) {
11937        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
11938      }
11939      if (element.hasMapping()) { 
11940        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
11941          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
11942      }
11943      composeElementClose(element);
11944      xml.exit(FHIR_NS, name);
11945    }
11946  }
11947
11948  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
11949    if (element != null) {
11950      composeElementAttributes(element);
11951      xml.enter(FHIR_NS, name);
11952      composeElementElements(element);
11953      if (element.hasDiscriminator()) { 
11954        for (StringType e : element.getDiscriminator()) 
11955          composeString("discriminator", e);
11956      }
11957      if (element.hasDescriptionElement()) {
11958        composeString("description", element.getDescriptionElement());
11959      }
11960      if (element.hasOrderedElement()) {
11961        composeBoolean("ordered", element.getOrderedElement());
11962      }
11963      if (element.hasRulesElement())
11964        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
11965      composeElementClose(element);
11966      xml.exit(FHIR_NS, name);
11967    }
11968  }
11969
11970  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
11971    if (element != null) {
11972      composeElementAttributes(element);
11973      xml.enter(FHIR_NS, name);
11974      composeElementElements(element);
11975      if (element.hasPathElement()) {
11976        composeString("path", element.getPathElement());
11977      }
11978      if (element.hasMinElement()) {
11979        composeInteger("min", element.getMinElement());
11980      }
11981      if (element.hasMaxElement()) {
11982        composeString("max", element.getMaxElement());
11983      }
11984      composeElementClose(element);
11985      xml.exit(FHIR_NS, name);
11986    }
11987  }
11988
11989  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
11990    if (element != null) {
11991      composeElementAttributes(element);
11992      xml.enter(FHIR_NS, name);
11993      composeElementElements(element);
11994      if (element.hasCodeElement()) {
11995        composeCode("code", element.getCodeElement());
11996      }
11997      if (element.hasProfile()) { 
11998        for (UriType e : element.getProfile()) 
11999          composeUri("profile", e);
12000      }
12001        if (element.hasAggregation()) 
12002          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
12003            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
12004      composeElementClose(element);
12005      xml.exit(FHIR_NS, name);
12006    }
12007  }
12008
12009  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
12010    if (element != null) {
12011      composeElementAttributes(element);
12012      xml.enter(FHIR_NS, name);
12013      composeElementElements(element);
12014      if (element.hasKeyElement()) {
12015        composeId("key", element.getKeyElement());
12016      }
12017      if (element.hasRequirementsElement()) {
12018        composeString("requirements", element.getRequirementsElement());
12019      }
12020      if (element.hasSeverityElement())
12021        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
12022      if (element.hasHumanElement()) {
12023        composeString("human", element.getHumanElement());
12024      }
12025      if (element.hasXpathElement()) {
12026        composeString("xpath", element.getXpathElement());
12027      }
12028      composeElementClose(element);
12029      xml.exit(FHIR_NS, name);
12030    }
12031  }
12032
12033  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
12034    if (element != null) {
12035      composeElementAttributes(element);
12036      xml.enter(FHIR_NS, name);
12037      composeElementElements(element);
12038      if (element.hasStrengthElement())
12039        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
12040      if (element.hasDescriptionElement()) {
12041        composeString("description", element.getDescriptionElement());
12042      }
12043      if (element.hasValueSet()) {
12044        composeType("valueSet", element.getValueSet());
12045      }      composeElementClose(element);
12046      xml.exit(FHIR_NS, name);
12047    }
12048  }
12049
12050  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
12051    if (element != null) {
12052      composeElementAttributes(element);
12053      xml.enter(FHIR_NS, name);
12054      composeElementElements(element);
12055      if (element.hasIdentityElement()) {
12056        composeId("identity", element.getIdentityElement());
12057      }
12058      if (element.hasLanguageElement()) {
12059        composeCode("language", element.getLanguageElement());
12060      }
12061      if (element.hasMapElement()) {
12062        composeString("map", element.getMapElement());
12063      }
12064      composeElementClose(element);
12065      xml.exit(FHIR_NS, name);
12066    }
12067  }
12068
12069  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
12070    composeResourceAttributes(element);
12071  }
12072
12073  protected void composeDomainResourceElements(DomainResource element) throws IOException {
12074    composeResourceElements(element);
12075      if (element.hasText()) {
12076        composeNarrative("text", element.getText());
12077      }
12078      if (element.hasContained()) { 
12079        for (Resource e : element.getContained()) 
12080        {
12081          xml.enter(FHIR_NS, "contained");
12082          composeResource(e);
12083          xml.exit(FHIR_NS, "contained");
12084        }
12085      }
12086      if (element.hasExtension()) 
12087        for (Extension e : element.getExtension()) 
12088          composeExtension("extension", e);
12089      if (element.hasModifierExtension()) { 
12090        for (Extension e : element.getModifierExtension()) 
12091          composeExtension("modifierExtension", e);
12092      }
12093  }
12094
12095  protected void composeParameters(String name, Parameters element) throws IOException {
12096    if (element != null) {
12097      composeResourceAttributes(element);
12098      xml.enter(FHIR_NS, name);
12099      composeResourceElements(element);
12100      if (element.hasParameter()) { 
12101        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
12102          composeParametersParametersParameterComponent("parameter", e);
12103      }
12104      composeElementClose(element);
12105      xml.exit(FHIR_NS, name);
12106    }
12107  }
12108
12109  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
12110    if (element != null) {
12111      composeElementAttributes(element);
12112      xml.enter(FHIR_NS, name);
12113      composeBackboneElements(element);
12114      if (element.hasNameElement()) {
12115        composeString("name", element.getNameElement());
12116      }
12117      if (element.hasValue()) {
12118        composeType("value", element.getValue());
12119      }      if (element.hasResource()) {
12120        xml.enter(FHIR_NS, "resource");
12121        composeResource(element.getResource());
12122        xml.exit(FHIR_NS, "resource");
12123      }
12124      if (element.hasPart()) { 
12125        for (Parameters.ParametersParameterComponent e : element.getPart()) 
12126          composeParametersParametersParameterComponent("part", e);
12127      }
12128      composeElementClose(element);
12129      xml.exit(FHIR_NS, name);
12130    }
12131  }
12132
12133  protected void composeResourceAttributes(Resource element) throws IOException {
12134    if (style != OutputStyle.CANONICAL)
12135      for (String comment : element.getFormatCommentsPre())
12136        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
12137  }
12138
12139  protected void composeResourceElements(Resource element) throws IOException {
12140      if (element.hasIdElement()) {
12141        composeId("id", element.getIdElement());
12142      }
12143      if (element.hasMeta()) {
12144        composeMeta("meta", element.getMeta());
12145      }
12146      if (element.hasImplicitRulesElement()) {
12147        composeUri("implicitRules", element.getImplicitRulesElement());
12148      }
12149      if (element.hasLanguageElement()) {
12150        composeCode("language", element.getLanguageElement());
12151      }
12152  }
12153
12154  protected void composeAccount(String name, Account element) throws IOException {
12155    if (element != null) {
12156      composeDomainResourceAttributes(element);
12157      xml.enter(FHIR_NS, name);
12158      composeDomainResourceElements(element);
12159      if (element.hasIdentifier()) { 
12160        for (Identifier e : element.getIdentifier()) 
12161          composeIdentifier("identifier", e);
12162      }
12163      if (element.hasNameElement()) {
12164        composeString("name", element.getNameElement());
12165      }
12166      if (element.hasType()) {
12167        composeCodeableConcept("type", element.getType());
12168      }
12169      if (element.hasStatusElement())
12170        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
12171      if (element.hasActivePeriod()) {
12172        composePeriod("activePeriod", element.getActivePeriod());
12173      }
12174      if (element.hasCurrency()) {
12175        composeCoding("currency", element.getCurrency());
12176      }
12177      if (element.hasBalance()) {
12178        composeMoney("balance", element.getBalance());
12179      }
12180      if (element.hasCoveragePeriod()) {
12181        composePeriod("coveragePeriod", element.getCoveragePeriod());
12182      }
12183      if (element.hasSubject()) {
12184        composeReference("subject", element.getSubject());
12185      }
12186      if (element.hasOwner()) {
12187        composeReference("owner", element.getOwner());
12188      }
12189      if (element.hasDescriptionElement()) {
12190        composeString("description", element.getDescriptionElement());
12191      }
12192      composeElementClose(element);
12193      xml.exit(FHIR_NS, name);
12194    }
12195  }
12196
12197  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
12198    if (element != null) {
12199      composeDomainResourceAttributes(element);
12200      xml.enter(FHIR_NS, name);
12201      composeDomainResourceElements(element);
12202      if (element.hasIdentifier()) { 
12203        for (Identifier e : element.getIdentifier()) 
12204          composeIdentifier("identifier", e);
12205      }
12206      if (element.hasOnsetElement()) {
12207        composeDateTime("onset", element.getOnsetElement());
12208      }
12209      if (element.hasRecordedDateElement()) {
12210        composeDateTime("recordedDate", element.getRecordedDateElement());
12211      }
12212      if (element.hasRecorder()) {
12213        composeReference("recorder", element.getRecorder());
12214      }
12215      if (element.hasPatient()) {
12216        composeReference("patient", element.getPatient());
12217      }
12218      if (element.hasReporter()) {
12219        composeReference("reporter", element.getReporter());
12220      }
12221      if (element.hasSubstance()) {
12222        composeCodeableConcept("substance", element.getSubstance());
12223      }
12224      if (element.hasStatusElement())
12225        composeEnumeration("status", element.getStatusElement(), new AllergyIntolerance.AllergyIntoleranceStatusEnumFactory());
12226      if (element.hasCriticalityElement())
12227        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
12228      if (element.hasTypeElement())
12229        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
12230      if (element.hasCategoryElement())
12231        composeEnumeration("category", element.getCategoryElement(), new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
12232      if (element.hasLastOccurenceElement()) {
12233        composeDateTime("lastOccurence", element.getLastOccurenceElement());
12234      }
12235      if (element.hasNote()) {
12236        composeAnnotation("note", element.getNote());
12237      }
12238      if (element.hasReaction()) { 
12239        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
12240          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
12241      }
12242      composeElementClose(element);
12243      xml.exit(FHIR_NS, name);
12244    }
12245  }
12246
12247  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
12248    if (element != null) {
12249      composeElementAttributes(element);
12250      xml.enter(FHIR_NS, name);
12251      composeBackboneElements(element);
12252      if (element.hasSubstance()) {
12253        composeCodeableConcept("substance", element.getSubstance());
12254      }
12255      if (element.hasCertaintyElement())
12256        composeEnumeration("certainty", element.getCertaintyElement(), new AllergyIntolerance.AllergyIntoleranceCertaintyEnumFactory());
12257      if (element.hasManifestation()) { 
12258        for (CodeableConcept e : element.getManifestation()) 
12259          composeCodeableConcept("manifestation", e);
12260      }
12261      if (element.hasDescriptionElement()) {
12262        composeString("description", element.getDescriptionElement());
12263      }
12264      if (element.hasOnsetElement()) {
12265        composeDateTime("onset", element.getOnsetElement());
12266      }
12267      if (element.hasSeverityElement())
12268        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
12269      if (element.hasExposureRoute()) {
12270        composeCodeableConcept("exposureRoute", element.getExposureRoute());
12271      }
12272      if (element.hasNote()) {
12273        composeAnnotation("note", element.getNote());
12274      }
12275      composeElementClose(element);
12276      xml.exit(FHIR_NS, name);
12277    }
12278  }
12279
12280  protected void composeAppointment(String name, Appointment element) throws IOException {
12281    if (element != null) {
12282      composeDomainResourceAttributes(element);
12283      xml.enter(FHIR_NS, name);
12284      composeDomainResourceElements(element);
12285      if (element.hasIdentifier()) { 
12286        for (Identifier e : element.getIdentifier()) 
12287          composeIdentifier("identifier", e);
12288      }
12289      if (element.hasStatusElement())
12290        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
12291      if (element.hasType()) {
12292        composeCodeableConcept("type", element.getType());
12293      }
12294      if (element.hasReason()) {
12295        composeCodeableConcept("reason", element.getReason());
12296      }
12297      if (element.hasPriorityElement()) {
12298        composeUnsignedInt("priority", element.getPriorityElement());
12299      }
12300      if (element.hasDescriptionElement()) {
12301        composeString("description", element.getDescriptionElement());
12302      }
12303      if (element.hasStartElement()) {
12304        composeInstant("start", element.getStartElement());
12305      }
12306      if (element.hasEndElement()) {
12307        composeInstant("end", element.getEndElement());
12308      }
12309      if (element.hasMinutesDurationElement()) {
12310        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
12311      }
12312      if (element.hasSlot()) { 
12313        for (Reference e : element.getSlot()) 
12314          composeReference("slot", e);
12315      }
12316      if (element.hasCommentElement()) {
12317        composeString("comment", element.getCommentElement());
12318      }
12319      if (element.hasParticipant()) { 
12320        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
12321          composeAppointmentAppointmentParticipantComponent("participant", e);
12322      }
12323      composeElementClose(element);
12324      xml.exit(FHIR_NS, name);
12325    }
12326  }
12327
12328  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
12329    if (element != null) {
12330      composeElementAttributes(element);
12331      xml.enter(FHIR_NS, name);
12332      composeBackboneElements(element);
12333      if (element.hasType()) { 
12334        for (CodeableConcept e : element.getType()) 
12335          composeCodeableConcept("type", e);
12336      }
12337      if (element.hasActor()) {
12338        composeReference("actor", element.getActor());
12339      }
12340      if (element.hasRequiredElement())
12341        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
12342      if (element.hasStatusElement())
12343        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
12344      composeElementClose(element);
12345      xml.exit(FHIR_NS, name);
12346    }
12347  }
12348
12349  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
12350    if (element != null) {
12351      composeDomainResourceAttributes(element);
12352      xml.enter(FHIR_NS, name);
12353      composeDomainResourceElements(element);
12354      if (element.hasIdentifier()) { 
12355        for (Identifier e : element.getIdentifier()) 
12356          composeIdentifier("identifier", e);
12357      }
12358      if (element.hasAppointment()) {
12359        composeReference("appointment", element.getAppointment());
12360      }
12361      if (element.hasStartElement()) {
12362        composeInstant("start", element.getStartElement());
12363      }
12364      if (element.hasEndElement()) {
12365        composeInstant("end", element.getEndElement());
12366      }
12367      if (element.hasParticipantType()) { 
12368        for (CodeableConcept e : element.getParticipantType()) 
12369          composeCodeableConcept("participantType", e);
12370      }
12371      if (element.hasActor()) {
12372        composeReference("actor", element.getActor());
12373      }
12374      if (element.hasParticipantStatusElement())
12375        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
12376      if (element.hasCommentElement()) {
12377        composeString("comment", element.getCommentElement());
12378      }
12379      composeElementClose(element);
12380      xml.exit(FHIR_NS, name);
12381    }
12382  }
12383
12384  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
12385    if (element != null) {
12386      composeDomainResourceAttributes(element);
12387      xml.enter(FHIR_NS, name);
12388      composeDomainResourceElements(element);
12389      if (element.hasEvent()) {
12390        composeAuditEventAuditEventEventComponent("event", element.getEvent());
12391      }
12392      if (element.hasParticipant()) { 
12393        for (AuditEvent.AuditEventParticipantComponent e : element.getParticipant()) 
12394          composeAuditEventAuditEventParticipantComponent("participant", e);
12395      }
12396      if (element.hasSource()) {
12397        composeAuditEventAuditEventSourceComponent("source", element.getSource());
12398      }
12399      if (element.hasObject()) { 
12400        for (AuditEvent.AuditEventObjectComponent e : element.getObject()) 
12401          composeAuditEventAuditEventObjectComponent("object", e);
12402      }
12403      composeElementClose(element);
12404      xml.exit(FHIR_NS, name);
12405    }
12406  }
12407
12408  protected void composeAuditEventAuditEventEventComponent(String name, AuditEvent.AuditEventEventComponent element) throws IOException {
12409    if (element != null) {
12410      composeElementAttributes(element);
12411      xml.enter(FHIR_NS, name);
12412      composeBackboneElements(element);
12413      if (element.hasType()) {
12414        composeCoding("type", element.getType());
12415      }
12416      if (element.hasSubtype()) { 
12417        for (Coding e : element.getSubtype()) 
12418          composeCoding("subtype", e);
12419      }
12420      if (element.hasActionElement())
12421        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
12422      if (element.hasDateTimeElement()) {
12423        composeInstant("dateTime", element.getDateTimeElement());
12424      }
12425      if (element.hasOutcomeElement())
12426        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
12427      if (element.hasOutcomeDescElement()) {
12428        composeString("outcomeDesc", element.getOutcomeDescElement());
12429      }
12430      if (element.hasPurposeOfEvent()) { 
12431        for (Coding e : element.getPurposeOfEvent()) 
12432          composeCoding("purposeOfEvent", e);
12433      }
12434      composeElementClose(element);
12435      xml.exit(FHIR_NS, name);
12436    }
12437  }
12438
12439  protected void composeAuditEventAuditEventParticipantComponent(String name, AuditEvent.AuditEventParticipantComponent element) throws IOException {
12440    if (element != null) {
12441      composeElementAttributes(element);
12442      xml.enter(FHIR_NS, name);
12443      composeBackboneElements(element);
12444      if (element.hasRole()) { 
12445        for (CodeableConcept e : element.getRole()) 
12446          composeCodeableConcept("role", e);
12447      }
12448      if (element.hasReference()) {
12449        composeReference("reference", element.getReference());
12450      }
12451      if (element.hasUserId()) {
12452        composeIdentifier("userId", element.getUserId());
12453      }
12454      if (element.hasAltIdElement()) {
12455        composeString("altId", element.getAltIdElement());
12456      }
12457      if (element.hasNameElement()) {
12458        composeString("name", element.getNameElement());
12459      }
12460      if (element.hasRequestorElement()) {
12461        composeBoolean("requestor", element.getRequestorElement());
12462      }
12463      if (element.hasLocation()) {
12464        composeReference("location", element.getLocation());
12465      }
12466      if (element.hasPolicy()) { 
12467        for (UriType e : element.getPolicy()) 
12468          composeUri("policy", e);
12469      }
12470      if (element.hasMedia()) {
12471        composeCoding("media", element.getMedia());
12472      }
12473      if (element.hasNetwork()) {
12474        composeAuditEventAuditEventParticipantNetworkComponent("network", element.getNetwork());
12475      }
12476      if (element.hasPurposeOfUse()) { 
12477        for (Coding e : element.getPurposeOfUse()) 
12478          composeCoding("purposeOfUse", e);
12479      }
12480      composeElementClose(element);
12481      xml.exit(FHIR_NS, name);
12482    }
12483  }
12484
12485  protected void composeAuditEventAuditEventParticipantNetworkComponent(String name, AuditEvent.AuditEventParticipantNetworkComponent element) throws IOException {
12486    if (element != null) {
12487      composeElementAttributes(element);
12488      xml.enter(FHIR_NS, name);
12489      composeBackboneElements(element);
12490      if (element.hasAddressElement()) {
12491        composeString("address", element.getAddressElement());
12492      }
12493      if (element.hasTypeElement())
12494        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventParticipantNetworkTypeEnumFactory());
12495      composeElementClose(element);
12496      xml.exit(FHIR_NS, name);
12497    }
12498  }
12499
12500  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
12501    if (element != null) {
12502      composeElementAttributes(element);
12503      xml.enter(FHIR_NS, name);
12504      composeBackboneElements(element);
12505      if (element.hasSiteElement()) {
12506        composeString("site", element.getSiteElement());
12507      }
12508      if (element.hasIdentifier()) {
12509        composeIdentifier("identifier", element.getIdentifier());
12510      }
12511      if (element.hasType()) { 
12512        for (Coding e : element.getType()) 
12513          composeCoding("type", e);
12514      }
12515      composeElementClose(element);
12516      xml.exit(FHIR_NS, name);
12517    }
12518  }
12519
12520  protected void composeAuditEventAuditEventObjectComponent(String name, AuditEvent.AuditEventObjectComponent element) throws IOException {
12521    if (element != null) {
12522      composeElementAttributes(element);
12523      xml.enter(FHIR_NS, name);
12524      composeBackboneElements(element);
12525      if (element.hasIdentifier()) {
12526        composeIdentifier("identifier", element.getIdentifier());
12527      }
12528      if (element.hasReference()) {
12529        composeReference("reference", element.getReference());
12530      }
12531      if (element.hasType()) {
12532        composeCoding("type", element.getType());
12533      }
12534      if (element.hasRole()) {
12535        composeCoding("role", element.getRole());
12536      }
12537      if (element.hasLifecycle()) {
12538        composeCoding("lifecycle", element.getLifecycle());
12539      }
12540      if (element.hasSecurityLabel()) { 
12541        for (Coding e : element.getSecurityLabel()) 
12542          composeCoding("securityLabel", e);
12543      }
12544      if (element.hasNameElement()) {
12545        composeString("name", element.getNameElement());
12546      }
12547      if (element.hasDescriptionElement()) {
12548        composeString("description", element.getDescriptionElement());
12549      }
12550      if (element.hasQueryElement()) {
12551        composeBase64Binary("query", element.getQueryElement());
12552      }
12553      if (element.hasDetail()) { 
12554        for (AuditEvent.AuditEventObjectDetailComponent e : element.getDetail()) 
12555          composeAuditEventAuditEventObjectDetailComponent("detail", e);
12556      }
12557      composeElementClose(element);
12558      xml.exit(FHIR_NS, name);
12559    }
12560  }
12561
12562  protected void composeAuditEventAuditEventObjectDetailComponent(String name, AuditEvent.AuditEventObjectDetailComponent element) throws IOException {
12563    if (element != null) {
12564      composeElementAttributes(element);
12565      xml.enter(FHIR_NS, name);
12566      composeBackboneElements(element);
12567      if (element.hasTypeElement()) {
12568        composeString("type", element.getTypeElement());
12569      }
12570      if (element.hasValueElement()) {
12571        composeBase64Binary("value", element.getValueElement());
12572      }
12573      composeElementClose(element);
12574      xml.exit(FHIR_NS, name);
12575    }
12576  }
12577
12578  protected void composeBasic(String name, Basic element) throws IOException {
12579    if (element != null) {
12580      composeDomainResourceAttributes(element);
12581      xml.enter(FHIR_NS, name);
12582      composeDomainResourceElements(element);
12583      if (element.hasIdentifier()) { 
12584        for (Identifier e : element.getIdentifier()) 
12585          composeIdentifier("identifier", e);
12586      }
12587      if (element.hasCode()) {
12588        composeCodeableConcept("code", element.getCode());
12589      }
12590      if (element.hasSubject()) {
12591        composeReference("subject", element.getSubject());
12592      }
12593      if (element.hasAuthor()) {
12594        composeReference("author", element.getAuthor());
12595      }
12596      if (element.hasCreatedElement()) {
12597        composeDate("created", element.getCreatedElement());
12598      }
12599      composeElementClose(element);
12600      xml.exit(FHIR_NS, name);
12601    }
12602  }
12603
12604  protected void composeBinary(String name, Binary element) throws IOException {
12605    if (element != null) {
12606      composeResourceAttributes(element);
12607      xml.enter(FHIR_NS, name);
12608      composeResourceElements(element);
12609      if (element.hasContentTypeElement()) {
12610        composeCode("contentType", element.getContentTypeElement());
12611      }
12612      if (element.hasContentElement()) {
12613        composeBase64Binary("content", element.getContentElement());
12614      }
12615      composeElementClose(element);
12616      xml.exit(FHIR_NS, name);
12617    }
12618  }
12619
12620  protected void composeBodySite(String name, BodySite element) throws IOException {
12621    if (element != null) {
12622      composeDomainResourceAttributes(element);
12623      xml.enter(FHIR_NS, name);
12624      composeDomainResourceElements(element);
12625      if (element.hasPatient()) {
12626        composeReference("patient", element.getPatient());
12627      }
12628      if (element.hasIdentifier()) { 
12629        for (Identifier e : element.getIdentifier()) 
12630          composeIdentifier("identifier", e);
12631      }
12632      if (element.hasCode()) {
12633        composeCodeableConcept("code", element.getCode());
12634      }
12635      if (element.hasModifier()) { 
12636        for (CodeableConcept e : element.getModifier()) 
12637          composeCodeableConcept("modifier", e);
12638      }
12639      if (element.hasDescriptionElement()) {
12640        composeString("description", element.getDescriptionElement());
12641      }
12642      if (element.hasImage()) { 
12643        for (Attachment e : element.getImage()) 
12644          composeAttachment("image", e);
12645      }
12646      composeElementClose(element);
12647      xml.exit(FHIR_NS, name);
12648    }
12649  }
12650
12651  protected void composeBundle(String name, Bundle element) throws IOException {
12652    if (element != null) {
12653      composeResourceAttributes(element);
12654      xml.enter(FHIR_NS, name);
12655      composeResourceElements(element);
12656      if (element.hasTypeElement())
12657        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
12658      if (element.hasTotalElement()) {
12659        composeUnsignedInt("total", element.getTotalElement());
12660      }
12661      if (element.hasLink()) { 
12662        for (Bundle.BundleLinkComponent e : element.getLink()) 
12663          composeBundleBundleLinkComponent("link", e);
12664      }
12665      if (element.hasEntry()) { 
12666        for (Bundle.BundleEntryComponent e : element.getEntry()) 
12667          composeBundleBundleEntryComponent("entry", e);
12668      }
12669      if (element.hasSignature()) {
12670        composeSignature("signature", element.getSignature());
12671      }
12672      composeElementClose(element);
12673      xml.exit(FHIR_NS, name);
12674    }
12675  }
12676
12677  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
12678    if (element != null) {
12679      composeElementAttributes(element);
12680      xml.enter(FHIR_NS, name);
12681      composeBackboneElements(element);
12682      if (element.hasRelationElement()) {
12683        composeString("relation", element.getRelationElement());
12684      }
12685      if (element.hasUrlElement()) {
12686        composeUri("url", element.getUrlElement());
12687      }
12688      composeElementClose(element);
12689      xml.exit(FHIR_NS, name);
12690    }
12691  }
12692
12693  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
12694    if (element != null) {
12695      composeElementAttributes(element);
12696      xml.enter(FHIR_NS, name);
12697      composeBackboneElements(element);
12698      if (element.hasLink()) { 
12699        for (Bundle.BundleLinkComponent e : element.getLink()) 
12700          composeBundleBundleLinkComponent("link", e);
12701      }
12702      if (element.hasFullUrlElement()) {
12703        composeUri("fullUrl", element.getFullUrlElement());
12704      }
12705      if (element.hasResource()) {
12706        xml.enter(FHIR_NS, "resource");
12707        composeResource(element.getResource());
12708        xml.exit(FHIR_NS, "resource");
12709      }
12710      if (element.hasSearch()) {
12711        composeBundleBundleEntrySearchComponent("search", element.getSearch());
12712      }
12713      if (element.hasRequest()) {
12714        composeBundleBundleEntryRequestComponent("request", element.getRequest());
12715      }
12716      if (element.hasResponse()) {
12717        composeBundleBundleEntryResponseComponent("response", element.getResponse());
12718      }
12719      composeElementClose(element);
12720      xml.exit(FHIR_NS, name);
12721    }
12722  }
12723
12724  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
12725    if (element != null) {
12726      composeElementAttributes(element);
12727      xml.enter(FHIR_NS, name);
12728      composeBackboneElements(element);
12729      if (element.hasModeElement())
12730        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
12731      if (element.hasScoreElement()) {
12732        composeDecimal("score", element.getScoreElement());
12733      }
12734      composeElementClose(element);
12735      xml.exit(FHIR_NS, name);
12736    }
12737  }
12738
12739  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
12740    if (element != null) {
12741      composeElementAttributes(element);
12742      xml.enter(FHIR_NS, name);
12743      composeBackboneElements(element);
12744      if (element.hasMethodElement())
12745        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
12746      if (element.hasUrlElement()) {
12747        composeUri("url", element.getUrlElement());
12748      }
12749      if (element.hasIfNoneMatchElement()) {
12750        composeString("ifNoneMatch", element.getIfNoneMatchElement());
12751      }
12752      if (element.hasIfModifiedSinceElement()) {
12753        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
12754      }
12755      if (element.hasIfMatchElement()) {
12756        composeString("ifMatch", element.getIfMatchElement());
12757      }
12758      if (element.hasIfNoneExistElement()) {
12759        composeString("ifNoneExist", element.getIfNoneExistElement());
12760      }
12761      composeElementClose(element);
12762      xml.exit(FHIR_NS, name);
12763    }
12764  }
12765
12766  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
12767    if (element != null) {
12768      composeElementAttributes(element);
12769      xml.enter(FHIR_NS, name);
12770      composeBackboneElements(element);
12771      if (element.hasStatusElement()) {
12772        composeString("status", element.getStatusElement());
12773      }
12774      if (element.hasLocationElement()) {
12775        composeUri("location", element.getLocationElement());
12776      }
12777      if (element.hasEtagElement()) {
12778        composeString("etag", element.getEtagElement());
12779      }
12780      if (element.hasLastModifiedElement()) {
12781        composeInstant("lastModified", element.getLastModifiedElement());
12782      }
12783      composeElementClose(element);
12784      xml.exit(FHIR_NS, name);
12785    }
12786  }
12787
12788  protected void composeCarePlan(String name, CarePlan element) throws IOException {
12789    if (element != null) {
12790      composeDomainResourceAttributes(element);
12791      xml.enter(FHIR_NS, name);
12792      composeDomainResourceElements(element);
12793      if (element.hasIdentifier()) { 
12794        for (Identifier e : element.getIdentifier()) 
12795          composeIdentifier("identifier", e);
12796      }
12797      if (element.hasSubject()) {
12798        composeReference("subject", element.getSubject());
12799      }
12800      if (element.hasStatusElement())
12801        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
12802      if (element.hasContext()) {
12803        composeReference("context", element.getContext());
12804      }
12805      if (element.hasPeriod()) {
12806        composePeriod("period", element.getPeriod());
12807      }
12808      if (element.hasAuthor()) { 
12809        for (Reference e : element.getAuthor()) 
12810          composeReference("author", e);
12811      }
12812      if (element.hasModifiedElement()) {
12813        composeDateTime("modified", element.getModifiedElement());
12814      }
12815      if (element.hasCategory()) { 
12816        for (CodeableConcept e : element.getCategory()) 
12817          composeCodeableConcept("category", e);
12818      }
12819      if (element.hasDescriptionElement()) {
12820        composeString("description", element.getDescriptionElement());
12821      }
12822      if (element.hasAddresses()) { 
12823        for (Reference e : element.getAddresses()) 
12824          composeReference("addresses", e);
12825      }
12826      if (element.hasSupport()) { 
12827        for (Reference e : element.getSupport()) 
12828          composeReference("support", e);
12829      }
12830      if (element.hasRelatedPlan()) { 
12831        for (CarePlan.CarePlanRelatedPlanComponent e : element.getRelatedPlan()) 
12832          composeCarePlanCarePlanRelatedPlanComponent("relatedPlan", e);
12833      }
12834      if (element.hasParticipant()) { 
12835        for (CarePlan.CarePlanParticipantComponent e : element.getParticipant()) 
12836          composeCarePlanCarePlanParticipantComponent("participant", e);
12837      }
12838      if (element.hasGoal()) { 
12839        for (Reference e : element.getGoal()) 
12840          composeReference("goal", e);
12841      }
12842      if (element.hasActivity()) { 
12843        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
12844          composeCarePlanCarePlanActivityComponent("activity", e);
12845      }
12846      if (element.hasNote()) {
12847        composeAnnotation("note", element.getNote());
12848      }
12849      composeElementClose(element);
12850      xml.exit(FHIR_NS, name);
12851    }
12852  }
12853
12854  protected void composeCarePlanCarePlanRelatedPlanComponent(String name, CarePlan.CarePlanRelatedPlanComponent element) throws IOException {
12855    if (element != null) {
12856      composeElementAttributes(element);
12857      xml.enter(FHIR_NS, name);
12858      composeBackboneElements(element);
12859      if (element.hasCodeElement())
12860        composeEnumeration("code", element.getCodeElement(), new CarePlan.CarePlanRelationshipEnumFactory());
12861      if (element.hasPlan()) {
12862        composeReference("plan", element.getPlan());
12863      }
12864      composeElementClose(element);
12865      xml.exit(FHIR_NS, name);
12866    }
12867  }
12868
12869  protected void composeCarePlanCarePlanParticipantComponent(String name, CarePlan.CarePlanParticipantComponent element) throws IOException {
12870    if (element != null) {
12871      composeElementAttributes(element);
12872      xml.enter(FHIR_NS, name);
12873      composeBackboneElements(element);
12874      if (element.hasRole()) {
12875        composeCodeableConcept("role", element.getRole());
12876      }
12877      if (element.hasMember()) {
12878        composeReference("member", element.getMember());
12879      }
12880      composeElementClose(element);
12881      xml.exit(FHIR_NS, name);
12882    }
12883  }
12884
12885  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
12886    if (element != null) {
12887      composeElementAttributes(element);
12888      xml.enter(FHIR_NS, name);
12889      composeBackboneElements(element);
12890      if (element.hasActionResulting()) { 
12891        for (Reference e : element.getActionResulting()) 
12892          composeReference("actionResulting", e);
12893      }
12894      if (element.hasProgress()) { 
12895        for (Annotation e : element.getProgress()) 
12896          composeAnnotation("progress", e);
12897      }
12898      if (element.hasReference()) {
12899        composeReference("reference", element.getReference());
12900      }
12901      if (element.hasDetail()) {
12902        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
12903      }
12904      composeElementClose(element);
12905      xml.exit(FHIR_NS, name);
12906    }
12907  }
12908
12909  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
12910    if (element != null) {
12911      composeElementAttributes(element);
12912      xml.enter(FHIR_NS, name);
12913      composeBackboneElements(element);
12914      if (element.hasCategory()) {
12915        composeCodeableConcept("category", element.getCategory());
12916      }
12917      if (element.hasCode()) {
12918        composeCodeableConcept("code", element.getCode());
12919      }
12920      if (element.hasReasonCode()) { 
12921        for (CodeableConcept e : element.getReasonCode()) 
12922          composeCodeableConcept("reasonCode", e);
12923      }
12924      if (element.hasReasonReference()) { 
12925        for (Reference e : element.getReasonReference()) 
12926          composeReference("reasonReference", e);
12927      }
12928      if (element.hasGoal()) { 
12929        for (Reference e : element.getGoal()) 
12930          composeReference("goal", e);
12931      }
12932      if (element.hasStatusElement())
12933        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
12934      if (element.hasStatusReason()) {
12935        composeCodeableConcept("statusReason", element.getStatusReason());
12936      }
12937      if (element.hasProhibitedElement()) {
12938        composeBoolean("prohibited", element.getProhibitedElement());
12939      }
12940      if (element.hasScheduled()) {
12941        composeType("scheduled", element.getScheduled());
12942      }      if (element.hasLocation()) {
12943        composeReference("location", element.getLocation());
12944      }
12945      if (element.hasPerformer()) { 
12946        for (Reference e : element.getPerformer()) 
12947          composeReference("performer", e);
12948      }
12949      if (element.hasProduct()) {
12950        composeType("product", element.getProduct());
12951      }      if (element.hasDailyAmount()) {
12952        composeSimpleQuantity("dailyAmount", element.getDailyAmount());
12953      }
12954      if (element.hasQuantity()) {
12955        composeSimpleQuantity("quantity", element.getQuantity());
12956      }
12957      if (element.hasDescriptionElement()) {
12958        composeString("description", element.getDescriptionElement());
12959      }
12960      composeElementClose(element);
12961      xml.exit(FHIR_NS, name);
12962    }
12963  }
12964
12965  protected void composeClaim(String name, Claim element) throws IOException {
12966    if (element != null) {
12967      composeDomainResourceAttributes(element);
12968      xml.enter(FHIR_NS, name);
12969      composeDomainResourceElements(element);
12970      if (element.hasTypeElement())
12971        composeEnumeration("type", element.getTypeElement(), new Claim.ClaimTypeEnumFactory());
12972      if (element.hasIdentifier()) { 
12973        for (Identifier e : element.getIdentifier()) 
12974          composeIdentifier("identifier", e);
12975      }
12976      if (element.hasRuleset()) {
12977        composeCoding("ruleset", element.getRuleset());
12978      }
12979      if (element.hasOriginalRuleset()) {
12980        composeCoding("originalRuleset", element.getOriginalRuleset());
12981      }
12982      if (element.hasCreatedElement()) {
12983        composeDateTime("created", element.getCreatedElement());
12984      }
12985      if (element.hasTarget()) {
12986        composeReference("target", element.getTarget());
12987      }
12988      if (element.hasProvider()) {
12989        composeReference("provider", element.getProvider());
12990      }
12991      if (element.hasOrganization()) {
12992        composeReference("organization", element.getOrganization());
12993      }
12994      if (element.hasUseElement())
12995        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
12996      if (element.hasPriority()) {
12997        composeCoding("priority", element.getPriority());
12998      }
12999      if (element.hasFundsReserve()) {
13000        composeCoding("fundsReserve", element.getFundsReserve());
13001      }
13002      if (element.hasEnterer()) {
13003        composeReference("enterer", element.getEnterer());
13004      }
13005      if (element.hasFacility()) {
13006        composeReference("facility", element.getFacility());
13007      }
13008      if (element.hasPrescription()) {
13009        composeReference("prescription", element.getPrescription());
13010      }
13011      if (element.hasOriginalPrescription()) {
13012        composeReference("originalPrescription", element.getOriginalPrescription());
13013      }
13014      if (element.hasPayee()) {
13015        composeClaimPayeeComponent("payee", element.getPayee());
13016      }
13017      if (element.hasReferral()) {
13018        composeReference("referral", element.getReferral());
13019      }
13020      if (element.hasDiagnosis()) { 
13021        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
13022          composeClaimDiagnosisComponent("diagnosis", e);
13023      }
13024      if (element.hasCondition()) { 
13025        for (Coding e : element.getCondition()) 
13026          composeCoding("condition", e);
13027      }
13028      if (element.hasPatient()) {
13029        composeReference("patient", element.getPatient());
13030      }
13031      if (element.hasCoverage()) { 
13032        for (Claim.CoverageComponent e : element.getCoverage()) 
13033          composeClaimCoverageComponent("coverage", e);
13034      }
13035      if (element.hasException()) { 
13036        for (Coding e : element.getException()) 
13037          composeCoding("exception", e);
13038      }
13039      if (element.hasSchoolElement()) {
13040        composeString("school", element.getSchoolElement());
13041      }
13042      if (element.hasAccidentElement()) {
13043        composeDate("accident", element.getAccidentElement());
13044      }
13045      if (element.hasAccidentType()) {
13046        composeCoding("accidentType", element.getAccidentType());
13047      }
13048      if (element.hasInterventionException()) { 
13049        for (Coding e : element.getInterventionException()) 
13050          composeCoding("interventionException", e);
13051      }
13052      if (element.hasItem()) { 
13053        for (Claim.ItemsComponent e : element.getItem()) 
13054          composeClaimItemsComponent("item", e);
13055      }
13056      if (element.hasAdditionalMaterials()) { 
13057        for (Coding e : element.getAdditionalMaterials()) 
13058          composeCoding("additionalMaterials", e);
13059      }
13060      if (element.hasMissingTeeth()) { 
13061        for (Claim.MissingTeethComponent e : element.getMissingTeeth()) 
13062          composeClaimMissingTeethComponent("missingTeeth", e);
13063      }
13064      composeElementClose(element);
13065      xml.exit(FHIR_NS, name);
13066    }
13067  }
13068
13069  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
13070    if (element != null) {
13071      composeElementAttributes(element);
13072      xml.enter(FHIR_NS, name);
13073      composeBackboneElements(element);
13074      if (element.hasType()) {
13075        composeCoding("type", element.getType());
13076      }
13077      if (element.hasProvider()) {
13078        composeReference("provider", element.getProvider());
13079      }
13080      if (element.hasOrganization()) {
13081        composeReference("organization", element.getOrganization());
13082      }
13083      if (element.hasPerson()) {
13084        composeReference("person", element.getPerson());
13085      }
13086      composeElementClose(element);
13087      xml.exit(FHIR_NS, name);
13088    }
13089  }
13090
13091  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
13092    if (element != null) {
13093      composeElementAttributes(element);
13094      xml.enter(FHIR_NS, name);
13095      composeBackboneElements(element);
13096      if (element.hasSequenceElement()) {
13097        composePositiveInt("sequence", element.getSequenceElement());
13098      }
13099      if (element.hasDiagnosis()) {
13100        composeCoding("diagnosis", element.getDiagnosis());
13101      }
13102      composeElementClose(element);
13103      xml.exit(FHIR_NS, name);
13104    }
13105  }
13106
13107  protected void composeClaimCoverageComponent(String name, Claim.CoverageComponent element) throws IOException {
13108    if (element != null) {
13109      composeElementAttributes(element);
13110      xml.enter(FHIR_NS, name);
13111      composeBackboneElements(element);
13112      if (element.hasSequenceElement()) {
13113        composePositiveInt("sequence", element.getSequenceElement());
13114      }
13115      if (element.hasFocalElement()) {
13116        composeBoolean("focal", element.getFocalElement());
13117      }
13118      if (element.hasCoverage()) {
13119        composeReference("coverage", element.getCoverage());
13120      }
13121      if (element.hasBusinessArrangementElement()) {
13122        composeString("businessArrangement", element.getBusinessArrangementElement());
13123      }
13124      if (element.hasRelationship()) {
13125        composeCoding("relationship", element.getRelationship());
13126      }
13127      if (element.hasPreAuthRef()) { 
13128        for (StringType e : element.getPreAuthRef()) 
13129          composeString("preAuthRef", e);
13130      }
13131      if (element.hasClaimResponse()) {
13132        composeReference("claimResponse", element.getClaimResponse());
13133      }
13134      if (element.hasOriginalRuleset()) {
13135        composeCoding("originalRuleset", element.getOriginalRuleset());
13136      }
13137      composeElementClose(element);
13138      xml.exit(FHIR_NS, name);
13139    }
13140  }
13141
13142  protected void composeClaimItemsComponent(String name, Claim.ItemsComponent element) throws IOException {
13143    if (element != null) {
13144      composeElementAttributes(element);
13145      xml.enter(FHIR_NS, name);
13146      composeBackboneElements(element);
13147      if (element.hasSequenceElement()) {
13148        composePositiveInt("sequence", element.getSequenceElement());
13149      }
13150      if (element.hasType()) {
13151        composeCoding("type", element.getType());
13152      }
13153      if (element.hasProvider()) {
13154        composeReference("provider", element.getProvider());
13155      }
13156      if (element.hasDiagnosisLinkId()) { 
13157        for (PositiveIntType e : element.getDiagnosisLinkId()) 
13158          composePositiveInt("diagnosisLinkId", e);
13159      }
13160      if (element.hasService()) {
13161        composeCoding("service", element.getService());
13162      }
13163      if (element.hasServiceDateElement()) {
13164        composeDate("serviceDate", element.getServiceDateElement());
13165      }
13166      if (element.hasQuantity()) {
13167        composeSimpleQuantity("quantity", element.getQuantity());
13168      }
13169      if (element.hasUnitPrice()) {
13170        composeMoney("unitPrice", element.getUnitPrice());
13171      }
13172      if (element.hasFactorElement()) {
13173        composeDecimal("factor", element.getFactorElement());
13174      }
13175      if (element.hasPointsElement()) {
13176        composeDecimal("points", element.getPointsElement());
13177      }
13178      if (element.hasNet()) {
13179        composeMoney("net", element.getNet());
13180      }
13181      if (element.hasUdi()) {
13182        composeCoding("udi", element.getUdi());
13183      }
13184      if (element.hasBodySite()) {
13185        composeCoding("bodySite", element.getBodySite());
13186      }
13187      if (element.hasSubSite()) { 
13188        for (Coding e : element.getSubSite()) 
13189          composeCoding("subSite", e);
13190      }
13191      if (element.hasModifier()) { 
13192        for (Coding e : element.getModifier()) 
13193          composeCoding("modifier", e);
13194      }
13195      if (element.hasDetail()) { 
13196        for (Claim.DetailComponent e : element.getDetail()) 
13197          composeClaimDetailComponent("detail", e);
13198      }
13199      if (element.hasProsthesis()) {
13200        composeClaimProsthesisComponent("prosthesis", element.getProsthesis());
13201      }
13202      composeElementClose(element);
13203      xml.exit(FHIR_NS, name);
13204    }
13205  }
13206
13207  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
13208    if (element != null) {
13209      composeElementAttributes(element);
13210      xml.enter(FHIR_NS, name);
13211      composeBackboneElements(element);
13212      if (element.hasSequenceElement()) {
13213        composePositiveInt("sequence", element.getSequenceElement());
13214      }
13215      if (element.hasType()) {
13216        composeCoding("type", element.getType());
13217      }
13218      if (element.hasService()) {
13219        composeCoding("service", element.getService());
13220      }
13221      if (element.hasQuantity()) {
13222        composeSimpleQuantity("quantity", element.getQuantity());
13223      }
13224      if (element.hasUnitPrice()) {
13225        composeMoney("unitPrice", element.getUnitPrice());
13226      }
13227      if (element.hasFactorElement()) {
13228        composeDecimal("factor", element.getFactorElement());
13229      }
13230      if (element.hasPointsElement()) {
13231        composeDecimal("points", element.getPointsElement());
13232      }
13233      if (element.hasNet()) {
13234        composeMoney("net", element.getNet());
13235      }
13236      if (element.hasUdi()) {
13237        composeCoding("udi", element.getUdi());
13238      }
13239      if (element.hasSubDetail()) { 
13240        for (Claim.SubDetailComponent e : element.getSubDetail()) 
13241          composeClaimSubDetailComponent("subDetail", e);
13242      }
13243      composeElementClose(element);
13244      xml.exit(FHIR_NS, name);
13245    }
13246  }
13247
13248  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
13249    if (element != null) {
13250      composeElementAttributes(element);
13251      xml.enter(FHIR_NS, name);
13252      composeBackboneElements(element);
13253      if (element.hasSequenceElement()) {
13254        composePositiveInt("sequence", element.getSequenceElement());
13255      }
13256      if (element.hasType()) {
13257        composeCoding("type", element.getType());
13258      }
13259      if (element.hasService()) {
13260        composeCoding("service", element.getService());
13261      }
13262      if (element.hasQuantity()) {
13263        composeSimpleQuantity("quantity", element.getQuantity());
13264      }
13265      if (element.hasUnitPrice()) {
13266        composeMoney("unitPrice", element.getUnitPrice());
13267      }
13268      if (element.hasFactorElement()) {
13269        composeDecimal("factor", element.getFactorElement());
13270      }
13271      if (element.hasPointsElement()) {
13272        composeDecimal("points", element.getPointsElement());
13273      }
13274      if (element.hasNet()) {
13275        composeMoney("net", element.getNet());
13276      }
13277      if (element.hasUdi()) {
13278        composeCoding("udi", element.getUdi());
13279      }
13280      composeElementClose(element);
13281      xml.exit(FHIR_NS, name);
13282    }
13283  }
13284
13285  protected void composeClaimProsthesisComponent(String name, Claim.ProsthesisComponent element) throws IOException {
13286    if (element != null) {
13287      composeElementAttributes(element);
13288      xml.enter(FHIR_NS, name);
13289      composeBackboneElements(element);
13290      if (element.hasInitialElement()) {
13291        composeBoolean("initial", element.getInitialElement());
13292      }
13293      if (element.hasPriorDateElement()) {
13294        composeDate("priorDate", element.getPriorDateElement());
13295      }
13296      if (element.hasPriorMaterial()) {
13297        composeCoding("priorMaterial", element.getPriorMaterial());
13298      }
13299      composeElementClose(element);
13300      xml.exit(FHIR_NS, name);
13301    }
13302  }
13303
13304  protected void composeClaimMissingTeethComponent(String name, Claim.MissingTeethComponent element) throws IOException {
13305    if (element != null) {
13306      composeElementAttributes(element);
13307      xml.enter(FHIR_NS, name);
13308      composeBackboneElements(element);
13309      if (element.hasTooth()) {
13310        composeCoding("tooth", element.getTooth());
13311      }
13312      if (element.hasReason()) {
13313        composeCoding("reason", element.getReason());
13314      }
13315      if (element.hasExtractionDateElement()) {
13316        composeDate("extractionDate", element.getExtractionDateElement());
13317      }
13318      composeElementClose(element);
13319      xml.exit(FHIR_NS, name);
13320    }
13321  }
13322
13323  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
13324    if (element != null) {
13325      composeDomainResourceAttributes(element);
13326      xml.enter(FHIR_NS, name);
13327      composeDomainResourceElements(element);
13328      if (element.hasIdentifier()) { 
13329        for (Identifier e : element.getIdentifier()) 
13330          composeIdentifier("identifier", e);
13331      }
13332      if (element.hasRequest()) {
13333        composeReference("request", element.getRequest());
13334      }
13335      if (element.hasRuleset()) {
13336        composeCoding("ruleset", element.getRuleset());
13337      }
13338      if (element.hasOriginalRuleset()) {
13339        composeCoding("originalRuleset", element.getOriginalRuleset());
13340      }
13341      if (element.hasCreatedElement()) {
13342        composeDateTime("created", element.getCreatedElement());
13343      }
13344      if (element.hasOrganization()) {
13345        composeReference("organization", element.getOrganization());
13346      }
13347      if (element.hasRequestProvider()) {
13348        composeReference("requestProvider", element.getRequestProvider());
13349      }
13350      if (element.hasRequestOrganization()) {
13351        composeReference("requestOrganization", element.getRequestOrganization());
13352      }
13353      if (element.hasOutcomeElement())
13354        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
13355      if (element.hasDispositionElement()) {
13356        composeString("disposition", element.getDispositionElement());
13357      }
13358      if (element.hasPayeeType()) {
13359        composeCoding("payeeType", element.getPayeeType());
13360      }
13361      if (element.hasItem()) { 
13362        for (ClaimResponse.ItemsComponent e : element.getItem()) 
13363          composeClaimResponseItemsComponent("item", e);
13364      }
13365      if (element.hasAddItem()) { 
13366        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
13367          composeClaimResponseAddedItemComponent("addItem", e);
13368      }
13369      if (element.hasError()) { 
13370        for (ClaimResponse.ErrorsComponent e : element.getError()) 
13371          composeClaimResponseErrorsComponent("error", e);
13372      }
13373      if (element.hasTotalCost()) {
13374        composeMoney("totalCost", element.getTotalCost());
13375      }
13376      if (element.hasUnallocDeductable()) {
13377        composeMoney("unallocDeductable", element.getUnallocDeductable());
13378      }
13379      if (element.hasTotalBenefit()) {
13380        composeMoney("totalBenefit", element.getTotalBenefit());
13381      }
13382      if (element.hasPaymentAdjustment()) {
13383        composeMoney("paymentAdjustment", element.getPaymentAdjustment());
13384      }
13385      if (element.hasPaymentAdjustmentReason()) {
13386        composeCoding("paymentAdjustmentReason", element.getPaymentAdjustmentReason());
13387      }
13388      if (element.hasPaymentDateElement()) {
13389        composeDate("paymentDate", element.getPaymentDateElement());
13390      }
13391      if (element.hasPaymentAmount()) {
13392        composeMoney("paymentAmount", element.getPaymentAmount());
13393      }
13394      if (element.hasPaymentRef()) {
13395        composeIdentifier("paymentRef", element.getPaymentRef());
13396      }
13397      if (element.hasReserved()) {
13398        composeCoding("reserved", element.getReserved());
13399      }
13400      if (element.hasForm()) {
13401        composeCoding("form", element.getForm());
13402      }
13403      if (element.hasNote()) { 
13404        for (ClaimResponse.NotesComponent e : element.getNote()) 
13405          composeClaimResponseNotesComponent("note", e);
13406      }
13407      if (element.hasCoverage()) { 
13408        for (ClaimResponse.CoverageComponent e : element.getCoverage()) 
13409          composeClaimResponseCoverageComponent("coverage", e);
13410      }
13411      composeElementClose(element);
13412      xml.exit(FHIR_NS, name);
13413    }
13414  }
13415
13416  protected void composeClaimResponseItemsComponent(String name, ClaimResponse.ItemsComponent element) throws IOException {
13417    if (element != null) {
13418      composeElementAttributes(element);
13419      xml.enter(FHIR_NS, name);
13420      composeBackboneElements(element);
13421      if (element.hasSequenceLinkIdElement()) {
13422        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
13423      }
13424      if (element.hasNoteNumber()) { 
13425        for (PositiveIntType e : element.getNoteNumber()) 
13426          composePositiveInt("noteNumber", e);
13427      }
13428      if (element.hasAdjudication()) { 
13429        for (ClaimResponse.ItemAdjudicationComponent e : element.getAdjudication()) 
13430          composeClaimResponseItemAdjudicationComponent("adjudication", e);
13431      }
13432      if (element.hasDetail()) { 
13433        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
13434          composeClaimResponseItemDetailComponent("detail", e);
13435      }
13436      composeElementClose(element);
13437      xml.exit(FHIR_NS, name);
13438    }
13439  }
13440
13441  protected void composeClaimResponseItemAdjudicationComponent(String name, ClaimResponse.ItemAdjudicationComponent element) throws IOException {
13442    if (element != null) {
13443      composeElementAttributes(element);
13444      xml.enter(FHIR_NS, name);
13445      composeBackboneElements(element);
13446      if (element.hasCode()) {
13447        composeCoding("code", element.getCode());
13448      }
13449      if (element.hasAmount()) {
13450        composeMoney("amount", element.getAmount());
13451      }
13452      if (element.hasValueElement()) {
13453        composeDecimal("value", element.getValueElement());
13454      }
13455      composeElementClose(element);
13456      xml.exit(FHIR_NS, name);
13457    }
13458  }
13459
13460  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
13461    if (element != null) {
13462      composeElementAttributes(element);
13463      xml.enter(FHIR_NS, name);
13464      composeBackboneElements(element);
13465      if (element.hasSequenceLinkIdElement()) {
13466        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
13467      }
13468      if (element.hasAdjudication()) { 
13469        for (ClaimResponse.DetailAdjudicationComponent e : element.getAdjudication()) 
13470          composeClaimResponseDetailAdjudicationComponent("adjudication", e);
13471      }
13472      if (element.hasSubDetail()) { 
13473        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
13474          composeClaimResponseSubDetailComponent("subDetail", e);
13475      }
13476      composeElementClose(element);
13477      xml.exit(FHIR_NS, name);
13478    }
13479  }
13480
13481  protected void composeClaimResponseDetailAdjudicationComponent(String name, ClaimResponse.DetailAdjudicationComponent element) throws IOException {
13482    if (element != null) {
13483      composeElementAttributes(element);
13484      xml.enter(FHIR_NS, name);
13485      composeBackboneElements(element);
13486      if (element.hasCode()) {
13487        composeCoding("code", element.getCode());
13488      }
13489      if (element.hasAmount()) {
13490        composeMoney("amount", element.getAmount());
13491      }
13492      if (element.hasValueElement()) {
13493        composeDecimal("value", element.getValueElement());
13494      }
13495      composeElementClose(element);
13496      xml.exit(FHIR_NS, name);
13497    }
13498  }
13499
13500  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
13501    if (element != null) {
13502      composeElementAttributes(element);
13503      xml.enter(FHIR_NS, name);
13504      composeBackboneElements(element);
13505      if (element.hasSequenceLinkIdElement()) {
13506        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
13507      }
13508      if (element.hasAdjudication()) { 
13509        for (ClaimResponse.SubdetailAdjudicationComponent e : element.getAdjudication()) 
13510          composeClaimResponseSubdetailAdjudicationComponent("adjudication", e);
13511      }
13512      composeElementClose(element);
13513      xml.exit(FHIR_NS, name);
13514    }
13515  }
13516
13517  protected void composeClaimResponseSubdetailAdjudicationComponent(String name, ClaimResponse.SubdetailAdjudicationComponent element) throws IOException {
13518    if (element != null) {
13519      composeElementAttributes(element);
13520      xml.enter(FHIR_NS, name);
13521      composeBackboneElements(element);
13522      if (element.hasCode()) {
13523        composeCoding("code", element.getCode());
13524      }
13525      if (element.hasAmount()) {
13526        composeMoney("amount", element.getAmount());
13527      }
13528      if (element.hasValueElement()) {
13529        composeDecimal("value", element.getValueElement());
13530      }
13531      composeElementClose(element);
13532      xml.exit(FHIR_NS, name);
13533    }
13534  }
13535
13536  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
13537    if (element != null) {
13538      composeElementAttributes(element);
13539      xml.enter(FHIR_NS, name);
13540      composeBackboneElements(element);
13541      if (element.hasSequenceLinkId()) { 
13542        for (PositiveIntType e : element.getSequenceLinkId()) 
13543          composePositiveInt("sequenceLinkId", e);
13544      }
13545      if (element.hasService()) {
13546        composeCoding("service", element.getService());
13547      }
13548      if (element.hasFee()) {
13549        composeMoney("fee", element.getFee());
13550      }
13551      if (element.hasNoteNumberLinkId()) { 
13552        for (PositiveIntType e : element.getNoteNumberLinkId()) 
13553          composePositiveInt("noteNumberLinkId", e);
13554      }
13555      if (element.hasAdjudication()) { 
13556        for (ClaimResponse.AddedItemAdjudicationComponent e : element.getAdjudication()) 
13557          composeClaimResponseAddedItemAdjudicationComponent("adjudication", e);
13558      }
13559      if (element.hasDetail()) { 
13560        for (ClaimResponse.AddedItemsDetailComponent e : element.getDetail()) 
13561          composeClaimResponseAddedItemsDetailComponent("detail", e);
13562      }
13563      composeElementClose(element);
13564      xml.exit(FHIR_NS, name);
13565    }
13566  }
13567
13568  protected void composeClaimResponseAddedItemAdjudicationComponent(String name, ClaimResponse.AddedItemAdjudicationComponent element) throws IOException {
13569    if (element != null) {
13570      composeElementAttributes(element);
13571      xml.enter(FHIR_NS, name);
13572      composeBackboneElements(element);
13573      if (element.hasCode()) {
13574        composeCoding("code", element.getCode());
13575      }
13576      if (element.hasAmount()) {
13577        composeMoney("amount", element.getAmount());
13578      }
13579      if (element.hasValueElement()) {
13580        composeDecimal("value", element.getValueElement());
13581      }
13582      composeElementClose(element);
13583      xml.exit(FHIR_NS, name);
13584    }
13585  }
13586
13587  protected void composeClaimResponseAddedItemsDetailComponent(String name, ClaimResponse.AddedItemsDetailComponent element) throws IOException {
13588    if (element != null) {
13589      composeElementAttributes(element);
13590      xml.enter(FHIR_NS, name);
13591      composeBackboneElements(element);
13592      if (element.hasService()) {
13593        composeCoding("service", element.getService());
13594      }
13595      if (element.hasFee()) {
13596        composeMoney("fee", element.getFee());
13597      }
13598      if (element.hasAdjudication()) { 
13599        for (ClaimResponse.AddedItemDetailAdjudicationComponent e : element.getAdjudication()) 
13600          composeClaimResponseAddedItemDetailAdjudicationComponent("adjudication", e);
13601      }
13602      composeElementClose(element);
13603      xml.exit(FHIR_NS, name);
13604    }
13605  }
13606
13607  protected void composeClaimResponseAddedItemDetailAdjudicationComponent(String name, ClaimResponse.AddedItemDetailAdjudicationComponent element) throws IOException {
13608    if (element != null) {
13609      composeElementAttributes(element);
13610      xml.enter(FHIR_NS, name);
13611      composeBackboneElements(element);
13612      if (element.hasCode()) {
13613        composeCoding("code", element.getCode());
13614      }
13615      if (element.hasAmount()) {
13616        composeMoney("amount", element.getAmount());
13617      }
13618      if (element.hasValueElement()) {
13619        composeDecimal("value", element.getValueElement());
13620      }
13621      composeElementClose(element);
13622      xml.exit(FHIR_NS, name);
13623    }
13624  }
13625
13626  protected void composeClaimResponseErrorsComponent(String name, ClaimResponse.ErrorsComponent element) throws IOException {
13627    if (element != null) {
13628      composeElementAttributes(element);
13629      xml.enter(FHIR_NS, name);
13630      composeBackboneElements(element);
13631      if (element.hasSequenceLinkIdElement()) {
13632        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
13633      }
13634      if (element.hasDetailSequenceLinkIdElement()) {
13635        composePositiveInt("detailSequenceLinkId", element.getDetailSequenceLinkIdElement());
13636      }
13637      if (element.hasSubdetailSequenceLinkIdElement()) {
13638        composePositiveInt("subdetailSequenceLinkId", element.getSubdetailSequenceLinkIdElement());
13639      }
13640      if (element.hasCode()) {
13641        composeCoding("code", element.getCode());
13642      }
13643      composeElementClose(element);
13644      xml.exit(FHIR_NS, name);
13645    }
13646  }
13647
13648  protected void composeClaimResponseNotesComponent(String name, ClaimResponse.NotesComponent element) throws IOException {
13649    if (element != null) {
13650      composeElementAttributes(element);
13651      xml.enter(FHIR_NS, name);
13652      composeBackboneElements(element);
13653      if (element.hasNumberElement()) {
13654        composePositiveInt("number", element.getNumberElement());
13655      }
13656      if (element.hasType()) {
13657        composeCoding("type", element.getType());
13658      }
13659      if (element.hasTextElement()) {
13660        composeString("text", element.getTextElement());
13661      }
13662      composeElementClose(element);
13663      xml.exit(FHIR_NS, name);
13664    }
13665  }
13666
13667  protected void composeClaimResponseCoverageComponent(String name, ClaimResponse.CoverageComponent element) throws IOException {
13668    if (element != null) {
13669      composeElementAttributes(element);
13670      xml.enter(FHIR_NS, name);
13671      composeBackboneElements(element);
13672      if (element.hasSequenceElement()) {
13673        composePositiveInt("sequence", element.getSequenceElement());
13674      }
13675      if (element.hasFocalElement()) {
13676        composeBoolean("focal", element.getFocalElement());
13677      }
13678      if (element.hasCoverage()) {
13679        composeReference("coverage", element.getCoverage());
13680      }
13681      if (element.hasBusinessArrangementElement()) {
13682        composeString("businessArrangement", element.getBusinessArrangementElement());
13683      }
13684      if (element.hasRelationship()) {
13685        composeCoding("relationship", element.getRelationship());
13686      }
13687      if (element.hasPreAuthRef()) { 
13688        for (StringType e : element.getPreAuthRef()) 
13689          composeString("preAuthRef", e);
13690      }
13691      if (element.hasClaimResponse()) {
13692        composeReference("claimResponse", element.getClaimResponse());
13693      }
13694      if (element.hasOriginalRuleset()) {
13695        composeCoding("originalRuleset", element.getOriginalRuleset());
13696      }
13697      composeElementClose(element);
13698      xml.exit(FHIR_NS, name);
13699    }
13700  }
13701
13702  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
13703    if (element != null) {
13704      composeDomainResourceAttributes(element);
13705      xml.enter(FHIR_NS, name);
13706      composeDomainResourceElements(element);
13707      if (element.hasPatient()) {
13708        composeReference("patient", element.getPatient());
13709      }
13710      if (element.hasAssessor()) {
13711        composeReference("assessor", element.getAssessor());
13712      }
13713      if (element.hasStatusElement())
13714        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
13715      if (element.hasDateElement()) {
13716        composeDateTime("date", element.getDateElement());
13717      }
13718      if (element.hasDescriptionElement()) {
13719        composeString("description", element.getDescriptionElement());
13720      }
13721      if (element.hasPrevious()) {
13722        composeReference("previous", element.getPrevious());
13723      }
13724      if (element.hasProblem()) { 
13725        for (Reference e : element.getProblem()) 
13726          composeReference("problem", e);
13727      }
13728      if (element.hasTrigger()) {
13729        composeType("trigger", element.getTrigger());
13730      }      if (element.hasInvestigations()) { 
13731        for (ClinicalImpression.ClinicalImpressionInvestigationsComponent e : element.getInvestigations()) 
13732          composeClinicalImpressionClinicalImpressionInvestigationsComponent("investigations", e);
13733      }
13734      if (element.hasProtocolElement()) {
13735        composeUri("protocol", element.getProtocolElement());
13736      }
13737      if (element.hasSummaryElement()) {
13738        composeString("summary", element.getSummaryElement());
13739      }
13740      if (element.hasFinding()) { 
13741        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
13742          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
13743      }
13744      if (element.hasResolved()) { 
13745        for (CodeableConcept e : element.getResolved()) 
13746          composeCodeableConcept("resolved", e);
13747      }
13748      if (element.hasRuledOut()) { 
13749        for (ClinicalImpression.ClinicalImpressionRuledOutComponent e : element.getRuledOut()) 
13750          composeClinicalImpressionClinicalImpressionRuledOutComponent("ruledOut", e);
13751      }
13752      if (element.hasPrognosisElement()) {
13753        composeString("prognosis", element.getPrognosisElement());
13754      }
13755      if (element.hasPlan()) { 
13756        for (Reference e : element.getPlan()) 
13757          composeReference("plan", e);
13758      }
13759      if (element.hasAction()) { 
13760        for (Reference e : element.getAction()) 
13761          composeReference("action", e);
13762      }
13763      composeElementClose(element);
13764      xml.exit(FHIR_NS, name);
13765    }
13766  }
13767
13768  protected void composeClinicalImpressionClinicalImpressionInvestigationsComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationsComponent element) throws IOException {
13769    if (element != null) {
13770      composeElementAttributes(element);
13771      xml.enter(FHIR_NS, name);
13772      composeBackboneElements(element);
13773      if (element.hasCode()) {
13774        composeCodeableConcept("code", element.getCode());
13775      }
13776      if (element.hasItem()) { 
13777        for (Reference e : element.getItem()) 
13778          composeReference("item", e);
13779      }
13780      composeElementClose(element);
13781      xml.exit(FHIR_NS, name);
13782    }
13783  }
13784
13785  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
13786    if (element != null) {
13787      composeElementAttributes(element);
13788      xml.enter(FHIR_NS, name);
13789      composeBackboneElements(element);
13790      if (element.hasItem()) {
13791        composeCodeableConcept("item", element.getItem());
13792      }
13793      if (element.hasCauseElement()) {
13794        composeString("cause", element.getCauseElement());
13795      }
13796      composeElementClose(element);
13797      xml.exit(FHIR_NS, name);
13798    }
13799  }
13800
13801  protected void composeClinicalImpressionClinicalImpressionRuledOutComponent(String name, ClinicalImpression.ClinicalImpressionRuledOutComponent element) throws IOException {
13802    if (element != null) {
13803      composeElementAttributes(element);
13804      xml.enter(FHIR_NS, name);
13805      composeBackboneElements(element);
13806      if (element.hasItem()) {
13807        composeCodeableConcept("item", element.getItem());
13808      }
13809      if (element.hasReasonElement()) {
13810        composeString("reason", element.getReasonElement());
13811      }
13812      composeElementClose(element);
13813      xml.exit(FHIR_NS, name);
13814    }
13815  }
13816
13817  protected void composeCommunication(String name, Communication element) throws IOException {
13818    if (element != null) {
13819      composeDomainResourceAttributes(element);
13820      xml.enter(FHIR_NS, name);
13821      composeDomainResourceElements(element);
13822      if (element.hasIdentifier()) { 
13823        for (Identifier e : element.getIdentifier()) 
13824          composeIdentifier("identifier", e);
13825      }
13826      if (element.hasCategory()) {
13827        composeCodeableConcept("category", element.getCategory());
13828      }
13829      if (element.hasSender()) {
13830        composeReference("sender", element.getSender());
13831      }
13832      if (element.hasRecipient()) { 
13833        for (Reference e : element.getRecipient()) 
13834          composeReference("recipient", e);
13835      }
13836      if (element.hasPayload()) { 
13837        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
13838          composeCommunicationCommunicationPayloadComponent("payload", e);
13839      }
13840      if (element.hasMedium()) { 
13841        for (CodeableConcept e : element.getMedium()) 
13842          composeCodeableConcept("medium", e);
13843      }
13844      if (element.hasStatusElement())
13845        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
13846      if (element.hasEncounter()) {
13847        composeReference("encounter", element.getEncounter());
13848      }
13849      if (element.hasSentElement()) {
13850        composeDateTime("sent", element.getSentElement());
13851      }
13852      if (element.hasReceivedElement()) {
13853        composeDateTime("received", element.getReceivedElement());
13854      }
13855      if (element.hasReason()) { 
13856        for (CodeableConcept e : element.getReason()) 
13857          composeCodeableConcept("reason", e);
13858      }
13859      if (element.hasSubject()) {
13860        composeReference("subject", element.getSubject());
13861      }
13862      if (element.hasRequestDetail()) {
13863        composeReference("requestDetail", element.getRequestDetail());
13864      }
13865      composeElementClose(element);
13866      xml.exit(FHIR_NS, name);
13867    }
13868  }
13869
13870  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
13871    if (element != null) {
13872      composeElementAttributes(element);
13873      xml.enter(FHIR_NS, name);
13874      composeBackboneElements(element);
13875      if (element.hasContent()) {
13876        composeType("content", element.getContent());
13877      }      composeElementClose(element);
13878      xml.exit(FHIR_NS, name);
13879    }
13880  }
13881
13882  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
13883    if (element != null) {
13884      composeDomainResourceAttributes(element);
13885      xml.enter(FHIR_NS, name);
13886      composeDomainResourceElements(element);
13887      if (element.hasIdentifier()) { 
13888        for (Identifier e : element.getIdentifier()) 
13889          composeIdentifier("identifier", e);
13890      }
13891      if (element.hasCategory()) {
13892        composeCodeableConcept("category", element.getCategory());
13893      }
13894      if (element.hasSender()) {
13895        composeReference("sender", element.getSender());
13896      }
13897      if (element.hasRecipient()) { 
13898        for (Reference e : element.getRecipient()) 
13899          composeReference("recipient", e);
13900      }
13901      if (element.hasPayload()) { 
13902        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
13903          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
13904      }
13905      if (element.hasMedium()) { 
13906        for (CodeableConcept e : element.getMedium()) 
13907          composeCodeableConcept("medium", e);
13908      }
13909      if (element.hasRequester()) {
13910        composeReference("requester", element.getRequester());
13911      }
13912      if (element.hasStatusElement())
13913        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
13914      if (element.hasEncounter()) {
13915        composeReference("encounter", element.getEncounter());
13916      }
13917      if (element.hasScheduled()) {
13918        composeType("scheduled", element.getScheduled());
13919      }      if (element.hasReason()) { 
13920        for (CodeableConcept e : element.getReason()) 
13921          composeCodeableConcept("reason", e);
13922      }
13923      if (element.hasRequestedOnElement()) {
13924        composeDateTime("requestedOn", element.getRequestedOnElement());
13925      }
13926      if (element.hasSubject()) {
13927        composeReference("subject", element.getSubject());
13928      }
13929      if (element.hasPriority()) {
13930        composeCodeableConcept("priority", element.getPriority());
13931      }
13932      composeElementClose(element);
13933      xml.exit(FHIR_NS, name);
13934    }
13935  }
13936
13937  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
13938    if (element != null) {
13939      composeElementAttributes(element);
13940      xml.enter(FHIR_NS, name);
13941      composeBackboneElements(element);
13942      if (element.hasContent()) {
13943        composeType("content", element.getContent());
13944      }      composeElementClose(element);
13945      xml.exit(FHIR_NS, name);
13946    }
13947  }
13948
13949  protected void composeComposition(String name, Composition element) throws IOException {
13950    if (element != null) {
13951      composeDomainResourceAttributes(element);
13952      xml.enter(FHIR_NS, name);
13953      composeDomainResourceElements(element);
13954      if (element.hasIdentifier()) {
13955        composeIdentifier("identifier", element.getIdentifier());
13956      }
13957      if (element.hasDateElement()) {
13958        composeDateTime("date", element.getDateElement());
13959      }
13960      if (element.hasType()) {
13961        composeCodeableConcept("type", element.getType());
13962      }
13963      if (element.hasClass_()) {
13964        composeCodeableConcept("class", element.getClass_());
13965      }
13966      if (element.hasTitleElement()) {
13967        composeString("title", element.getTitleElement());
13968      }
13969      if (element.hasStatusElement())
13970        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
13971      if (element.hasConfidentialityElement()) {
13972        composeCode("confidentiality", element.getConfidentialityElement());
13973      }
13974      if (element.hasSubject()) {
13975        composeReference("subject", element.getSubject());
13976      }
13977      if (element.hasAuthor()) { 
13978        for (Reference e : element.getAuthor()) 
13979          composeReference("author", e);
13980      }
13981      if (element.hasAttester()) { 
13982        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
13983          composeCompositionCompositionAttesterComponent("attester", e);
13984      }
13985      if (element.hasCustodian()) {
13986        composeReference("custodian", element.getCustodian());
13987      }
13988      if (element.hasEvent()) { 
13989        for (Composition.CompositionEventComponent e : element.getEvent()) 
13990          composeCompositionCompositionEventComponent("event", e);
13991      }
13992      if (element.hasEncounter()) {
13993        composeReference("encounter", element.getEncounter());
13994      }
13995      if (element.hasSection()) { 
13996        for (Composition.SectionComponent e : element.getSection()) 
13997          composeCompositionSectionComponent("section", e);
13998      }
13999      composeElementClose(element);
14000      xml.exit(FHIR_NS, name);
14001    }
14002  }
14003
14004  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
14005    if (element != null) {
14006      composeElementAttributes(element);
14007      xml.enter(FHIR_NS, name);
14008      composeBackboneElements(element);
14009        if (element.hasMode()) 
14010          for (Enumeration<Composition.CompositionAttestationMode> e : element.getMode()) 
14011            composeEnumeration("mode", e, new Composition.CompositionAttestationModeEnumFactory());
14012      if (element.hasTimeElement()) {
14013        composeDateTime("time", element.getTimeElement());
14014      }
14015      if (element.hasParty()) {
14016        composeReference("party", element.getParty());
14017      }
14018      composeElementClose(element);
14019      xml.exit(FHIR_NS, name);
14020    }
14021  }
14022
14023  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
14024    if (element != null) {
14025      composeElementAttributes(element);
14026      xml.enter(FHIR_NS, name);
14027      composeBackboneElements(element);
14028      if (element.hasCode()) { 
14029        for (CodeableConcept e : element.getCode()) 
14030          composeCodeableConcept("code", e);
14031      }
14032      if (element.hasPeriod()) {
14033        composePeriod("period", element.getPeriod());
14034      }
14035      if (element.hasDetail()) { 
14036        for (Reference e : element.getDetail()) 
14037          composeReference("detail", e);
14038      }
14039      composeElementClose(element);
14040      xml.exit(FHIR_NS, name);
14041    }
14042  }
14043
14044  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
14045    if (element != null) {
14046      composeElementAttributes(element);
14047      xml.enter(FHIR_NS, name);
14048      composeBackboneElements(element);
14049      if (element.hasTitleElement()) {
14050        composeString("title", element.getTitleElement());
14051      }
14052      if (element.hasCode()) {
14053        composeCodeableConcept("code", element.getCode());
14054      }
14055      if (element.hasText()) {
14056        composeNarrative("text", element.getText());
14057      }
14058      if (element.hasModeElement()) {
14059        composeCode("mode", element.getModeElement());
14060      }
14061      if (element.hasOrderedBy()) {
14062        composeCodeableConcept("orderedBy", element.getOrderedBy());
14063      }
14064      if (element.hasEntry()) { 
14065        for (Reference e : element.getEntry()) 
14066          composeReference("entry", e);
14067      }
14068      if (element.hasEmptyReason()) {
14069        composeCodeableConcept("emptyReason", element.getEmptyReason());
14070      }
14071      if (element.hasSection()) { 
14072        for (Composition.SectionComponent e : element.getSection()) 
14073          composeCompositionSectionComponent("section", e);
14074      }
14075      composeElementClose(element);
14076      xml.exit(FHIR_NS, name);
14077    }
14078  }
14079
14080  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
14081    if (element != null) {
14082      composeDomainResourceAttributes(element);
14083      xml.enter(FHIR_NS, name);
14084      composeDomainResourceElements(element);
14085      if (element.hasUrlElement()) {
14086        composeUri("url", element.getUrlElement());
14087      }
14088      if (element.hasIdentifier()) {
14089        composeIdentifier("identifier", element.getIdentifier());
14090      }
14091      if (element.hasVersionElement()) {
14092        composeString("version", element.getVersionElement());
14093      }
14094      if (element.hasNameElement()) {
14095        composeString("name", element.getNameElement());
14096      }
14097      if (element.hasStatusElement())
14098        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
14099      if (element.hasExperimentalElement()) {
14100        composeBoolean("experimental", element.getExperimentalElement());
14101      }
14102      if (element.hasPublisherElement()) {
14103        composeString("publisher", element.getPublisherElement());
14104      }
14105      if (element.hasContact()) { 
14106        for (ConceptMap.ConceptMapContactComponent e : element.getContact()) 
14107          composeConceptMapConceptMapContactComponent("contact", e);
14108      }
14109      if (element.hasDateElement()) {
14110        composeDateTime("date", element.getDateElement());
14111      }
14112      if (element.hasDescriptionElement()) {
14113        composeString("description", element.getDescriptionElement());
14114      }
14115      if (element.hasUseContext()) { 
14116        for (CodeableConcept e : element.getUseContext()) 
14117          composeCodeableConcept("useContext", e);
14118      }
14119      if (element.hasRequirementsElement()) {
14120        composeString("requirements", element.getRequirementsElement());
14121      }
14122      if (element.hasCopyrightElement()) {
14123        composeString("copyright", element.getCopyrightElement());
14124      }
14125      if (element.hasSource()) {
14126        composeType("source", element.getSource());
14127      }      if (element.hasTarget()) {
14128        composeType("target", element.getTarget());
14129      }      if (element.hasElement()) { 
14130        for (ConceptMap.SourceElementComponent e : element.getElement()) 
14131          composeConceptMapSourceElementComponent("element", e);
14132      }
14133      composeElementClose(element);
14134      xml.exit(FHIR_NS, name);
14135    }
14136  }
14137
14138  protected void composeConceptMapConceptMapContactComponent(String name, ConceptMap.ConceptMapContactComponent element) throws IOException {
14139    if (element != null) {
14140      composeElementAttributes(element);
14141      xml.enter(FHIR_NS, name);
14142      composeBackboneElements(element);
14143      if (element.hasNameElement()) {
14144        composeString("name", element.getNameElement());
14145      }
14146      if (element.hasTelecom()) { 
14147        for (ContactPoint e : element.getTelecom()) 
14148          composeContactPoint("telecom", e);
14149      }
14150      composeElementClose(element);
14151      xml.exit(FHIR_NS, name);
14152    }
14153  }
14154
14155  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
14156    if (element != null) {
14157      composeElementAttributes(element);
14158      xml.enter(FHIR_NS, name);
14159      composeBackboneElements(element);
14160      if (element.hasCodeSystemElement()) {
14161        composeUri("codeSystem", element.getCodeSystemElement());
14162      }
14163      if (element.hasCodeElement()) {
14164        composeCode("code", element.getCodeElement());
14165      }
14166      if (element.hasTarget()) { 
14167        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
14168          composeConceptMapTargetElementComponent("target", e);
14169      }
14170      composeElementClose(element);
14171      xml.exit(FHIR_NS, name);
14172    }
14173  }
14174
14175  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
14176    if (element != null) {
14177      composeElementAttributes(element);
14178      xml.enter(FHIR_NS, name);
14179      composeBackboneElements(element);
14180      if (element.hasCodeSystemElement()) {
14181        composeUri("codeSystem", element.getCodeSystemElement());
14182      }
14183      if (element.hasCodeElement()) {
14184        composeCode("code", element.getCodeElement());
14185      }
14186      if (element.hasEquivalenceElement())
14187        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
14188      if (element.hasCommentsElement()) {
14189        composeString("comments", element.getCommentsElement());
14190      }
14191      if (element.hasDependsOn()) { 
14192        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
14193          composeConceptMapOtherElementComponent("dependsOn", e);
14194      }
14195      if (element.hasProduct()) { 
14196        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
14197          composeConceptMapOtherElementComponent("product", e);
14198      }
14199      composeElementClose(element);
14200      xml.exit(FHIR_NS, name);
14201    }
14202  }
14203
14204  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
14205    if (element != null) {
14206      composeElementAttributes(element);
14207      xml.enter(FHIR_NS, name);
14208      composeBackboneElements(element);
14209      if (element.hasElementElement()) {
14210        composeUri("element", element.getElementElement());
14211      }
14212      if (element.hasCodeSystemElement()) {
14213        composeUri("codeSystem", element.getCodeSystemElement());
14214      }
14215      if (element.hasCodeElement()) {
14216        composeString("code", element.getCodeElement());
14217      }
14218      composeElementClose(element);
14219      xml.exit(FHIR_NS, name);
14220    }
14221  }
14222
14223  protected void composeCondition(String name, Condition element) throws IOException {
14224    if (element != null) {
14225      composeDomainResourceAttributes(element);
14226      xml.enter(FHIR_NS, name);
14227      composeDomainResourceElements(element);
14228      if (element.hasIdentifier()) { 
14229        for (Identifier e : element.getIdentifier()) 
14230          composeIdentifier("identifier", e);
14231      }
14232      if (element.hasPatient()) {
14233        composeReference("patient", element.getPatient());
14234      }
14235      if (element.hasEncounter()) {
14236        composeReference("encounter", element.getEncounter());
14237      }
14238      if (element.hasAsserter()) {
14239        composeReference("asserter", element.getAsserter());
14240      }
14241      if (element.hasDateRecordedElement()) {
14242        composeDate("dateRecorded", element.getDateRecordedElement());
14243      }
14244      if (element.hasCode()) {
14245        composeCodeableConcept("code", element.getCode());
14246      }
14247      if (element.hasCategory()) {
14248        composeCodeableConcept("category", element.getCategory());
14249      }
14250      if (element.hasClinicalStatusElement()) {
14251        composeCode("clinicalStatus", element.getClinicalStatusElement());
14252      }
14253      if (element.hasVerificationStatusElement())
14254        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new Condition.ConditionVerificationStatusEnumFactory());
14255      if (element.hasSeverity()) {
14256        composeCodeableConcept("severity", element.getSeverity());
14257      }
14258      if (element.hasOnset()) {
14259        composeType("onset", element.getOnset());
14260      }      if (element.hasAbatement()) {
14261        composeType("abatement", element.getAbatement());
14262      }      if (element.hasStage()) {
14263        composeConditionConditionStageComponent("stage", element.getStage());
14264      }
14265      if (element.hasEvidence()) { 
14266        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
14267          composeConditionConditionEvidenceComponent("evidence", e);
14268      }
14269      if (element.hasBodySite()) { 
14270        for (CodeableConcept e : element.getBodySite()) 
14271          composeCodeableConcept("bodySite", e);
14272      }
14273      if (element.hasNotesElement()) {
14274        composeString("notes", element.getNotesElement());
14275      }
14276      composeElementClose(element);
14277      xml.exit(FHIR_NS, name);
14278    }
14279  }
14280
14281  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
14282    if (element != null) {
14283      composeElementAttributes(element);
14284      xml.enter(FHIR_NS, name);
14285      composeBackboneElements(element);
14286      if (element.hasSummary()) {
14287        composeCodeableConcept("summary", element.getSummary());
14288      }
14289      if (element.hasAssessment()) { 
14290        for (Reference e : element.getAssessment()) 
14291          composeReference("assessment", e);
14292      }
14293      composeElementClose(element);
14294      xml.exit(FHIR_NS, name);
14295    }
14296  }
14297
14298  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
14299    if (element != null) {
14300      composeElementAttributes(element);
14301      xml.enter(FHIR_NS, name);
14302      composeBackboneElements(element);
14303      if (element.hasCode()) {
14304        composeCodeableConcept("code", element.getCode());
14305      }
14306      if (element.hasDetail()) { 
14307        for (Reference e : element.getDetail()) 
14308          composeReference("detail", e);
14309      }
14310      composeElementClose(element);
14311      xml.exit(FHIR_NS, name);
14312    }
14313  }
14314
14315  protected void composeConformance(String name, Conformance element) throws IOException {
14316    if (element != null) {
14317      composeDomainResourceAttributes(element);
14318      xml.enter(FHIR_NS, name);
14319      composeDomainResourceElements(element);
14320      if (element.hasUrlElement()) {
14321        composeUri("url", element.getUrlElement());
14322      }
14323      if (element.hasVersionElement()) {
14324        composeString("version", element.getVersionElement());
14325      }
14326      if (element.hasNameElement()) {
14327        composeString("name", element.getNameElement());
14328      }
14329      if (element.hasStatusElement())
14330        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
14331      if (element.hasExperimentalElement()) {
14332        composeBoolean("experimental", element.getExperimentalElement());
14333      }
14334      if (element.hasPublisherElement()) {
14335        composeString("publisher", element.getPublisherElement());
14336      }
14337      if (element.hasContact()) { 
14338        for (Conformance.ConformanceContactComponent e : element.getContact()) 
14339          composeConformanceConformanceContactComponent("contact", e);
14340      }
14341      if (element.hasDateElement()) {
14342        composeDateTime("date", element.getDateElement());
14343      }
14344      if (element.hasDescriptionElement()) {
14345        composeString("description", element.getDescriptionElement());
14346      }
14347      if (element.hasRequirementsElement()) {
14348        composeString("requirements", element.getRequirementsElement());
14349      }
14350      if (element.hasCopyrightElement()) {
14351        composeString("copyright", element.getCopyrightElement());
14352      }
14353      if (element.hasKindElement())
14354        composeEnumeration("kind", element.getKindElement(), new Conformance.ConformanceStatementKindEnumFactory());
14355      if (element.hasSoftware()) {
14356        composeConformanceConformanceSoftwareComponent("software", element.getSoftware());
14357      }
14358      if (element.hasImplementation()) {
14359        composeConformanceConformanceImplementationComponent("implementation", element.getImplementation());
14360      }
14361      if (element.hasFhirVersionElement()) {
14362        composeId("fhirVersion", element.getFhirVersionElement());
14363      }
14364      if (element.hasAcceptUnknownElement())
14365        composeEnumeration("acceptUnknown", element.getAcceptUnknownElement(), new Conformance.UnknownContentCodeEnumFactory());
14366      if (element.hasFormat()) { 
14367        for (CodeType e : element.getFormat()) 
14368          composeCode("format", e);
14369      }
14370      if (element.hasProfile()) { 
14371        for (Reference e : element.getProfile()) 
14372          composeReference("profile", e);
14373      }
14374      if (element.hasRest()) { 
14375        for (Conformance.ConformanceRestComponent e : element.getRest()) 
14376          composeConformanceConformanceRestComponent("rest", e);
14377      }
14378      if (element.hasMessaging()) { 
14379        for (Conformance.ConformanceMessagingComponent e : element.getMessaging()) 
14380          composeConformanceConformanceMessagingComponent("messaging", e);
14381      }
14382      if (element.hasDocument()) { 
14383        for (Conformance.ConformanceDocumentComponent e : element.getDocument()) 
14384          composeConformanceConformanceDocumentComponent("document", e);
14385      }
14386      composeElementClose(element);
14387      xml.exit(FHIR_NS, name);
14388    }
14389  }
14390
14391  protected void composeConformanceConformanceContactComponent(String name, Conformance.ConformanceContactComponent element) throws IOException {
14392    if (element != null) {
14393      composeElementAttributes(element);
14394      xml.enter(FHIR_NS, name);
14395      composeBackboneElements(element);
14396      if (element.hasNameElement()) {
14397        composeString("name", element.getNameElement());
14398      }
14399      if (element.hasTelecom()) { 
14400        for (ContactPoint e : element.getTelecom()) 
14401          composeContactPoint("telecom", e);
14402      }
14403      composeElementClose(element);
14404      xml.exit(FHIR_NS, name);
14405    }
14406  }
14407
14408  protected void composeConformanceConformanceSoftwareComponent(String name, Conformance.ConformanceSoftwareComponent element) throws IOException {
14409    if (element != null) {
14410      composeElementAttributes(element);
14411      xml.enter(FHIR_NS, name);
14412      composeBackboneElements(element);
14413      if (element.hasNameElement()) {
14414        composeString("name", element.getNameElement());
14415      }
14416      if (element.hasVersionElement()) {
14417        composeString("version", element.getVersionElement());
14418      }
14419      if (element.hasReleaseDateElement()) {
14420        composeDateTime("releaseDate", element.getReleaseDateElement());
14421      }
14422      composeElementClose(element);
14423      xml.exit(FHIR_NS, name);
14424    }
14425  }
14426
14427  protected void composeConformanceConformanceImplementationComponent(String name, Conformance.ConformanceImplementationComponent element) throws IOException {
14428    if (element != null) {
14429      composeElementAttributes(element);
14430      xml.enter(FHIR_NS, name);
14431      composeBackboneElements(element);
14432      if (element.hasDescriptionElement()) {
14433        composeString("description", element.getDescriptionElement());
14434      }
14435      if (element.hasUrlElement()) {
14436        composeUri("url", element.getUrlElement());
14437      }
14438      composeElementClose(element);
14439      xml.exit(FHIR_NS, name);
14440    }
14441  }
14442
14443  protected void composeConformanceConformanceRestComponent(String name, Conformance.ConformanceRestComponent element) throws IOException {
14444    if (element != null) {
14445      composeElementAttributes(element);
14446      xml.enter(FHIR_NS, name);
14447      composeBackboneElements(element);
14448      if (element.hasModeElement())
14449        composeEnumeration("mode", element.getModeElement(), new Conformance.RestfulConformanceModeEnumFactory());
14450      if (element.hasDocumentationElement()) {
14451        composeString("documentation", element.getDocumentationElement());
14452      }
14453      if (element.hasSecurity()) {
14454        composeConformanceConformanceRestSecurityComponent("security", element.getSecurity());
14455      }
14456      if (element.hasResource()) { 
14457        for (Conformance.ConformanceRestResourceComponent e : element.getResource()) 
14458          composeConformanceConformanceRestResourceComponent("resource", e);
14459      }
14460      if (element.hasInteraction()) { 
14461        for (Conformance.SystemInteractionComponent e : element.getInteraction()) 
14462          composeConformanceSystemInteractionComponent("interaction", e);
14463      }
14464      if (element.hasTransactionModeElement())
14465        composeEnumeration("transactionMode", element.getTransactionModeElement(), new Conformance.TransactionModeEnumFactory());
14466      if (element.hasSearchParam()) { 
14467        for (Conformance.ConformanceRestResourceSearchParamComponent e : element.getSearchParam()) 
14468          composeConformanceConformanceRestResourceSearchParamComponent("searchParam", e);
14469      }
14470      if (element.hasOperation()) { 
14471        for (Conformance.ConformanceRestOperationComponent e : element.getOperation()) 
14472          composeConformanceConformanceRestOperationComponent("operation", e);
14473      }
14474      if (element.hasCompartment()) { 
14475        for (UriType e : element.getCompartment()) 
14476          composeUri("compartment", e);
14477      }
14478      composeElementClose(element);
14479      xml.exit(FHIR_NS, name);
14480    }
14481  }
14482
14483  protected void composeConformanceConformanceRestSecurityComponent(String name, Conformance.ConformanceRestSecurityComponent element) throws IOException {
14484    if (element != null) {
14485      composeElementAttributes(element);
14486      xml.enter(FHIR_NS, name);
14487      composeBackboneElements(element);
14488      if (element.hasCorsElement()) {
14489        composeBoolean("cors", element.getCorsElement());
14490      }
14491      if (element.hasService()) { 
14492        for (CodeableConcept e : element.getService()) 
14493          composeCodeableConcept("service", e);
14494      }
14495      if (element.hasDescriptionElement()) {
14496        composeString("description", element.getDescriptionElement());
14497      }
14498      if (element.hasCertificate()) { 
14499        for (Conformance.ConformanceRestSecurityCertificateComponent e : element.getCertificate()) 
14500          composeConformanceConformanceRestSecurityCertificateComponent("certificate", e);
14501      }
14502      composeElementClose(element);
14503      xml.exit(FHIR_NS, name);
14504    }
14505  }
14506
14507  protected void composeConformanceConformanceRestSecurityCertificateComponent(String name, Conformance.ConformanceRestSecurityCertificateComponent element) throws IOException {
14508    if (element != null) {
14509      composeElementAttributes(element);
14510      xml.enter(FHIR_NS, name);
14511      composeBackboneElements(element);
14512      if (element.hasTypeElement()) {
14513        composeCode("type", element.getTypeElement());
14514      }
14515      if (element.hasBlobElement()) {
14516        composeBase64Binary("blob", element.getBlobElement());
14517      }
14518      composeElementClose(element);
14519      xml.exit(FHIR_NS, name);
14520    }
14521  }
14522
14523  protected void composeConformanceConformanceRestResourceComponent(String name, Conformance.ConformanceRestResourceComponent element) throws IOException {
14524    if (element != null) {
14525      composeElementAttributes(element);
14526      xml.enter(FHIR_NS, name);
14527      composeBackboneElements(element);
14528      if (element.hasTypeElement()) {
14529        composeCode("type", element.getTypeElement());
14530      }
14531      if (element.hasProfile()) {
14532        composeReference("profile", element.getProfile());
14533      }
14534      if (element.hasInteraction()) { 
14535        for (Conformance.ResourceInteractionComponent e : element.getInteraction()) 
14536          composeConformanceResourceInteractionComponent("interaction", e);
14537      }
14538      if (element.hasVersioningElement())
14539        composeEnumeration("versioning", element.getVersioningElement(), new Conformance.ResourceVersionPolicyEnumFactory());
14540      if (element.hasReadHistoryElement()) {
14541        composeBoolean("readHistory", element.getReadHistoryElement());
14542      }
14543      if (element.hasUpdateCreateElement()) {
14544        composeBoolean("updateCreate", element.getUpdateCreateElement());
14545      }
14546      if (element.hasConditionalCreateElement()) {
14547        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
14548      }
14549      if (element.hasConditionalUpdateElement()) {
14550        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
14551      }
14552      if (element.hasConditionalDeleteElement())
14553        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new Conformance.ConditionalDeleteStatusEnumFactory());
14554      if (element.hasSearchInclude()) { 
14555        for (StringType e : element.getSearchInclude()) 
14556          composeString("searchInclude", e);
14557      }
14558      if (element.hasSearchRevInclude()) { 
14559        for (StringType e : element.getSearchRevInclude()) 
14560          composeString("searchRevInclude", e);
14561      }
14562      if (element.hasSearchParam()) { 
14563        for (Conformance.ConformanceRestResourceSearchParamComponent e : element.getSearchParam()) 
14564          composeConformanceConformanceRestResourceSearchParamComponent("searchParam", e);
14565      }
14566      composeElementClose(element);
14567      xml.exit(FHIR_NS, name);
14568    }
14569  }
14570
14571  protected void composeConformanceResourceInteractionComponent(String name, Conformance.ResourceInteractionComponent element) throws IOException {
14572    if (element != null) {
14573      composeElementAttributes(element);
14574      xml.enter(FHIR_NS, name);
14575      composeBackboneElements(element);
14576      if (element.hasCodeElement())
14577        composeEnumeration("code", element.getCodeElement(), new Conformance.TypeRestfulInteractionEnumFactory());
14578      if (element.hasDocumentationElement()) {
14579        composeString("documentation", element.getDocumentationElement());
14580      }
14581      composeElementClose(element);
14582      xml.exit(FHIR_NS, name);
14583    }
14584  }
14585
14586  protected void composeConformanceConformanceRestResourceSearchParamComponent(String name, Conformance.ConformanceRestResourceSearchParamComponent element) throws IOException {
14587    if (element != null) {
14588      composeElementAttributes(element);
14589      xml.enter(FHIR_NS, name);
14590      composeBackboneElements(element);
14591      if (element.hasNameElement()) {
14592        composeString("name", element.getNameElement());
14593      }
14594      if (element.hasDefinitionElement()) {
14595        composeUri("definition", element.getDefinitionElement());
14596      }
14597      if (element.hasTypeElement())
14598        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
14599      if (element.hasDocumentationElement()) {
14600        composeString("documentation", element.getDocumentationElement());
14601      }
14602      if (element.hasTarget()) { 
14603        for (CodeType e : element.getTarget()) 
14604          composeCode("target", e);
14605      }
14606        if (element.hasModifier()) 
14607          for (Enumeration<Conformance.SearchModifierCode> e : element.getModifier()) 
14608            composeEnumeration("modifier", e, new Conformance.SearchModifierCodeEnumFactory());
14609      if (element.hasChain()) { 
14610        for (StringType e : element.getChain()) 
14611          composeString("chain", e);
14612      }
14613      composeElementClose(element);
14614      xml.exit(FHIR_NS, name);
14615    }
14616  }
14617
14618  protected void composeConformanceSystemInteractionComponent(String name, Conformance.SystemInteractionComponent element) throws IOException {
14619    if (element != null) {
14620      composeElementAttributes(element);
14621      xml.enter(FHIR_NS, name);
14622      composeBackboneElements(element);
14623      if (element.hasCodeElement())
14624        composeEnumeration("code", element.getCodeElement(), new Conformance.SystemRestfulInteractionEnumFactory());
14625      if (element.hasDocumentationElement()) {
14626        composeString("documentation", element.getDocumentationElement());
14627      }
14628      composeElementClose(element);
14629      xml.exit(FHIR_NS, name);
14630    }
14631  }
14632
14633  protected void composeConformanceConformanceRestOperationComponent(String name, Conformance.ConformanceRestOperationComponent element) throws IOException {
14634    if (element != null) {
14635      composeElementAttributes(element);
14636      xml.enter(FHIR_NS, name);
14637      composeBackboneElements(element);
14638      if (element.hasNameElement()) {
14639        composeString("name", element.getNameElement());
14640      }
14641      if (element.hasDefinition()) {
14642        composeReference("definition", element.getDefinition());
14643      }
14644      composeElementClose(element);
14645      xml.exit(FHIR_NS, name);
14646    }
14647  }
14648
14649  protected void composeConformanceConformanceMessagingComponent(String name, Conformance.ConformanceMessagingComponent element) throws IOException {
14650    if (element != null) {
14651      composeElementAttributes(element);
14652      xml.enter(FHIR_NS, name);
14653      composeBackboneElements(element);
14654      if (element.hasEndpoint()) { 
14655        for (Conformance.ConformanceMessagingEndpointComponent e : element.getEndpoint()) 
14656          composeConformanceConformanceMessagingEndpointComponent("endpoint", e);
14657      }
14658      if (element.hasReliableCacheElement()) {
14659        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
14660      }
14661      if (element.hasDocumentationElement()) {
14662        composeString("documentation", element.getDocumentationElement());
14663      }
14664      if (element.hasEvent()) { 
14665        for (Conformance.ConformanceMessagingEventComponent e : element.getEvent()) 
14666          composeConformanceConformanceMessagingEventComponent("event", e);
14667      }
14668      composeElementClose(element);
14669      xml.exit(FHIR_NS, name);
14670    }
14671  }
14672
14673  protected void composeConformanceConformanceMessagingEndpointComponent(String name, Conformance.ConformanceMessagingEndpointComponent element) throws IOException {
14674    if (element != null) {
14675      composeElementAttributes(element);
14676      xml.enter(FHIR_NS, name);
14677      composeBackboneElements(element);
14678      if (element.hasProtocol()) {
14679        composeCoding("protocol", element.getProtocol());
14680      }
14681      if (element.hasAddressElement()) {
14682        composeUri("address", element.getAddressElement());
14683      }
14684      composeElementClose(element);
14685      xml.exit(FHIR_NS, name);
14686    }
14687  }
14688
14689  protected void composeConformanceConformanceMessagingEventComponent(String name, Conformance.ConformanceMessagingEventComponent element) throws IOException {
14690    if (element != null) {
14691      composeElementAttributes(element);
14692      xml.enter(FHIR_NS, name);
14693      composeBackboneElements(element);
14694      if (element.hasCode()) {
14695        composeCoding("code", element.getCode());
14696      }
14697      if (element.hasCategoryElement())
14698        composeEnumeration("category", element.getCategoryElement(), new Conformance.MessageSignificanceCategoryEnumFactory());
14699      if (element.hasModeElement())
14700        composeEnumeration("mode", element.getModeElement(), new Conformance.ConformanceEventModeEnumFactory());
14701      if (element.hasFocusElement()) {
14702        composeCode("focus", element.getFocusElement());
14703      }
14704      if (element.hasRequest()) {
14705        composeReference("request", element.getRequest());
14706      }
14707      if (element.hasResponse()) {
14708        composeReference("response", element.getResponse());
14709      }
14710      if (element.hasDocumentationElement()) {
14711        composeString("documentation", element.getDocumentationElement());
14712      }
14713      composeElementClose(element);
14714      xml.exit(FHIR_NS, name);
14715    }
14716  }
14717
14718  protected void composeConformanceConformanceDocumentComponent(String name, Conformance.ConformanceDocumentComponent element) throws IOException {
14719    if (element != null) {
14720      composeElementAttributes(element);
14721      xml.enter(FHIR_NS, name);
14722      composeBackboneElements(element);
14723      if (element.hasModeElement())
14724        composeEnumeration("mode", element.getModeElement(), new Conformance.DocumentModeEnumFactory());
14725      if (element.hasDocumentationElement()) {
14726        composeString("documentation", element.getDocumentationElement());
14727      }
14728      if (element.hasProfile()) {
14729        composeReference("profile", element.getProfile());
14730      }
14731      composeElementClose(element);
14732      xml.exit(FHIR_NS, name);
14733    }
14734  }
14735
14736  protected void composeContract(String name, Contract element) throws IOException {
14737    if (element != null) {
14738      composeDomainResourceAttributes(element);
14739      xml.enter(FHIR_NS, name);
14740      composeDomainResourceElements(element);
14741      if (element.hasIdentifier()) {
14742        composeIdentifier("identifier", element.getIdentifier());
14743      }
14744      if (element.hasIssuedElement()) {
14745        composeDateTime("issued", element.getIssuedElement());
14746      }
14747      if (element.hasApplies()) {
14748        composePeriod("applies", element.getApplies());
14749      }
14750      if (element.hasSubject()) { 
14751        for (Reference e : element.getSubject()) 
14752          composeReference("subject", e);
14753      }
14754      if (element.hasAuthority()) { 
14755        for (Reference e : element.getAuthority()) 
14756          composeReference("authority", e);
14757      }
14758      if (element.hasDomain()) { 
14759        for (Reference e : element.getDomain()) 
14760          composeReference("domain", e);
14761      }
14762      if (element.hasType()) {
14763        composeCodeableConcept("type", element.getType());
14764      }
14765      if (element.hasSubType()) { 
14766        for (CodeableConcept e : element.getSubType()) 
14767          composeCodeableConcept("subType", e);
14768      }
14769      if (element.hasAction()) { 
14770        for (CodeableConcept e : element.getAction()) 
14771          composeCodeableConcept("action", e);
14772      }
14773      if (element.hasActionReason()) { 
14774        for (CodeableConcept e : element.getActionReason()) 
14775          composeCodeableConcept("actionReason", e);
14776      }
14777      if (element.hasActor()) { 
14778        for (Contract.ActorComponent e : element.getActor()) 
14779          composeContractActorComponent("actor", e);
14780      }
14781      if (element.hasValuedItem()) { 
14782        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
14783          composeContractValuedItemComponent("valuedItem", e);
14784      }
14785      if (element.hasSigner()) { 
14786        for (Contract.SignatoryComponent e : element.getSigner()) 
14787          composeContractSignatoryComponent("signer", e);
14788      }
14789      if (element.hasTerm()) { 
14790        for (Contract.TermComponent e : element.getTerm()) 
14791          composeContractTermComponent("term", e);
14792      }
14793      if (element.hasBinding()) {
14794        composeType("binding", element.getBinding());
14795      }      if (element.hasFriendly()) { 
14796        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
14797          composeContractFriendlyLanguageComponent("friendly", e);
14798      }
14799      if (element.hasLegal()) { 
14800        for (Contract.LegalLanguageComponent e : element.getLegal()) 
14801          composeContractLegalLanguageComponent("legal", e);
14802      }
14803      if (element.hasRule()) { 
14804        for (Contract.ComputableLanguageComponent e : element.getRule()) 
14805          composeContractComputableLanguageComponent("rule", e);
14806      }
14807      composeElementClose(element);
14808      xml.exit(FHIR_NS, name);
14809    }
14810  }
14811
14812  protected void composeContractActorComponent(String name, Contract.ActorComponent element) throws IOException {
14813    if (element != null) {
14814      composeElementAttributes(element);
14815      xml.enter(FHIR_NS, name);
14816      composeBackboneElements(element);
14817      if (element.hasEntity()) {
14818        composeReference("entity", element.getEntity());
14819      }
14820      if (element.hasRole()) { 
14821        for (CodeableConcept e : element.getRole()) 
14822          composeCodeableConcept("role", e);
14823      }
14824      composeElementClose(element);
14825      xml.exit(FHIR_NS, name);
14826    }
14827  }
14828
14829  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
14830    if (element != null) {
14831      composeElementAttributes(element);
14832      xml.enter(FHIR_NS, name);
14833      composeBackboneElements(element);
14834      if (element.hasEntity()) {
14835        composeType("entity", element.getEntity());
14836      }      if (element.hasIdentifier()) {
14837        composeIdentifier("identifier", element.getIdentifier());
14838      }
14839      if (element.hasEffectiveTimeElement()) {
14840        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
14841      }
14842      if (element.hasQuantity()) {
14843        composeSimpleQuantity("quantity", element.getQuantity());
14844      }
14845      if (element.hasUnitPrice()) {
14846        composeMoney("unitPrice", element.getUnitPrice());
14847      }
14848      if (element.hasFactorElement()) {
14849        composeDecimal("factor", element.getFactorElement());
14850      }
14851      if (element.hasPointsElement()) {
14852        composeDecimal("points", element.getPointsElement());
14853      }
14854      if (element.hasNet()) {
14855        composeMoney("net", element.getNet());
14856      }
14857      composeElementClose(element);
14858      xml.exit(FHIR_NS, name);
14859    }
14860  }
14861
14862  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
14863    if (element != null) {
14864      composeElementAttributes(element);
14865      xml.enter(FHIR_NS, name);
14866      composeBackboneElements(element);
14867      if (element.hasType()) {
14868        composeCoding("type", element.getType());
14869      }
14870      if (element.hasParty()) {
14871        composeReference("party", element.getParty());
14872      }
14873      if (element.hasSignatureElement()) {
14874        composeString("signature", element.getSignatureElement());
14875      }
14876      composeElementClose(element);
14877      xml.exit(FHIR_NS, name);
14878    }
14879  }
14880
14881  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
14882    if (element != null) {
14883      composeElementAttributes(element);
14884      xml.enter(FHIR_NS, name);
14885      composeBackboneElements(element);
14886      if (element.hasIdentifier()) {
14887        composeIdentifier("identifier", element.getIdentifier());
14888      }
14889      if (element.hasIssuedElement()) {
14890        composeDateTime("issued", element.getIssuedElement());
14891      }
14892      if (element.hasApplies()) {
14893        composePeriod("applies", element.getApplies());
14894      }
14895      if (element.hasType()) {
14896        composeCodeableConcept("type", element.getType());
14897      }
14898      if (element.hasSubType()) {
14899        composeCodeableConcept("subType", element.getSubType());
14900      }
14901      if (element.hasSubject()) {
14902        composeReference("subject", element.getSubject());
14903      }
14904      if (element.hasAction()) { 
14905        for (CodeableConcept e : element.getAction()) 
14906          composeCodeableConcept("action", e);
14907      }
14908      if (element.hasActionReason()) { 
14909        for (CodeableConcept e : element.getActionReason()) 
14910          composeCodeableConcept("actionReason", e);
14911      }
14912      if (element.hasActor()) { 
14913        for (Contract.TermActorComponent e : element.getActor()) 
14914          composeContractTermActorComponent("actor", e);
14915      }
14916      if (element.hasTextElement()) {
14917        composeString("text", element.getTextElement());
14918      }
14919      if (element.hasValuedItem()) { 
14920        for (Contract.TermValuedItemComponent e : element.getValuedItem()) 
14921          composeContractTermValuedItemComponent("valuedItem", e);
14922      }
14923      if (element.hasGroup()) { 
14924        for (Contract.TermComponent e : element.getGroup()) 
14925          composeContractTermComponent("group", e);
14926      }
14927      composeElementClose(element);
14928      xml.exit(FHIR_NS, name);
14929    }
14930  }
14931
14932  protected void composeContractTermActorComponent(String name, Contract.TermActorComponent element) throws IOException {
14933    if (element != null) {
14934      composeElementAttributes(element);
14935      xml.enter(FHIR_NS, name);
14936      composeBackboneElements(element);
14937      if (element.hasEntity()) {
14938        composeReference("entity", element.getEntity());
14939      }
14940      if (element.hasRole()) { 
14941        for (CodeableConcept e : element.getRole()) 
14942          composeCodeableConcept("role", e);
14943      }
14944      composeElementClose(element);
14945      xml.exit(FHIR_NS, name);
14946    }
14947  }
14948
14949  protected void composeContractTermValuedItemComponent(String name, Contract.TermValuedItemComponent element) throws IOException {
14950    if (element != null) {
14951      composeElementAttributes(element);
14952      xml.enter(FHIR_NS, name);
14953      composeBackboneElements(element);
14954      if (element.hasEntity()) {
14955        composeType("entity", element.getEntity());
14956      }      if (element.hasIdentifier()) {
14957        composeIdentifier("identifier", element.getIdentifier());
14958      }
14959      if (element.hasEffectiveTimeElement()) {
14960        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
14961      }
14962      if (element.hasQuantity()) {
14963        composeSimpleQuantity("quantity", element.getQuantity());
14964      }
14965      if (element.hasUnitPrice()) {
14966        composeMoney("unitPrice", element.getUnitPrice());
14967      }
14968      if (element.hasFactorElement()) {
14969        composeDecimal("factor", element.getFactorElement());
14970      }
14971      if (element.hasPointsElement()) {
14972        composeDecimal("points", element.getPointsElement());
14973      }
14974      if (element.hasNet()) {
14975        composeMoney("net", element.getNet());
14976      }
14977      composeElementClose(element);
14978      xml.exit(FHIR_NS, name);
14979    }
14980  }
14981
14982  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
14983    if (element != null) {
14984      composeElementAttributes(element);
14985      xml.enter(FHIR_NS, name);
14986      composeBackboneElements(element);
14987      if (element.hasContent()) {
14988        composeType("content", element.getContent());
14989      }      composeElementClose(element);
14990      xml.exit(FHIR_NS, name);
14991    }
14992  }
14993
14994  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
14995    if (element != null) {
14996      composeElementAttributes(element);
14997      xml.enter(FHIR_NS, name);
14998      composeBackboneElements(element);
14999      if (element.hasContent()) {
15000        composeType("content", element.getContent());
15001      }      composeElementClose(element);
15002      xml.exit(FHIR_NS, name);
15003    }
15004  }
15005
15006  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
15007    if (element != null) {
15008      composeElementAttributes(element);
15009      xml.enter(FHIR_NS, name);
15010      composeBackboneElements(element);
15011      if (element.hasContent()) {
15012        composeType("content", element.getContent());
15013      }      composeElementClose(element);
15014      xml.exit(FHIR_NS, name);
15015    }
15016  }
15017
15018  protected void composeCoverage(String name, Coverage element) throws IOException {
15019    if (element != null) {
15020      composeDomainResourceAttributes(element);
15021      xml.enter(FHIR_NS, name);
15022      composeDomainResourceElements(element);
15023      if (element.hasIssuer()) {
15024        composeReference("issuer", element.getIssuer());
15025      }
15026      if (element.hasBin()) {
15027        composeIdentifier("bin", element.getBin());
15028      }
15029      if (element.hasPeriod()) {
15030        composePeriod("period", element.getPeriod());
15031      }
15032      if (element.hasType()) {
15033        composeCoding("type", element.getType());
15034      }
15035      if (element.hasSubscriberId()) {
15036        composeIdentifier("subscriberId", element.getSubscriberId());
15037      }
15038      if (element.hasIdentifier()) { 
15039        for (Identifier e : element.getIdentifier()) 
15040          composeIdentifier("identifier", e);
15041      }
15042      if (element.hasGroupElement()) {
15043        composeString("group", element.getGroupElement());
15044      }
15045      if (element.hasPlanElement()) {
15046        composeString("plan", element.getPlanElement());
15047      }
15048      if (element.hasSubPlanElement()) {
15049        composeString("subPlan", element.getSubPlanElement());
15050      }
15051      if (element.hasDependentElement()) {
15052        composePositiveInt("dependent", element.getDependentElement());
15053      }
15054      if (element.hasSequenceElement()) {
15055        composePositiveInt("sequence", element.getSequenceElement());
15056      }
15057      if (element.hasSubscriber()) {
15058        composeReference("subscriber", element.getSubscriber());
15059      }
15060      if (element.hasNetwork()) {
15061        composeIdentifier("network", element.getNetwork());
15062      }
15063      if (element.hasContract()) { 
15064        for (Reference e : element.getContract()) 
15065          composeReference("contract", e);
15066      }
15067      composeElementClose(element);
15068      xml.exit(FHIR_NS, name);
15069    }
15070  }
15071
15072  protected void composeDataElement(String name, DataElement element) throws IOException {
15073    if (element != null) {
15074      composeDomainResourceAttributes(element);
15075      xml.enter(FHIR_NS, name);
15076      composeDomainResourceElements(element);
15077      if (element.hasUrlElement()) {
15078        composeUri("url", element.getUrlElement());
15079      }
15080      if (element.hasIdentifier()) { 
15081        for (Identifier e : element.getIdentifier()) 
15082          composeIdentifier("identifier", e);
15083      }
15084      if (element.hasVersionElement()) {
15085        composeString("version", element.getVersionElement());
15086      }
15087      if (element.hasNameElement()) {
15088        composeString("name", element.getNameElement());
15089      }
15090      if (element.hasStatusElement())
15091        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
15092      if (element.hasExperimentalElement()) {
15093        composeBoolean("experimental", element.getExperimentalElement());
15094      }
15095      if (element.hasPublisherElement()) {
15096        composeString("publisher", element.getPublisherElement());
15097      }
15098      if (element.hasContact()) { 
15099        for (DataElement.DataElementContactComponent e : element.getContact()) 
15100          composeDataElementDataElementContactComponent("contact", e);
15101      }
15102      if (element.hasDateElement()) {
15103        composeDateTime("date", element.getDateElement());
15104      }
15105      if (element.hasUseContext()) { 
15106        for (CodeableConcept e : element.getUseContext()) 
15107          composeCodeableConcept("useContext", e);
15108      }
15109      if (element.hasCopyrightElement()) {
15110        composeString("copyright", element.getCopyrightElement());
15111      }
15112      if (element.hasStringencyElement())
15113        composeEnumeration("stringency", element.getStringencyElement(), new DataElement.DataElementStringencyEnumFactory());
15114      if (element.hasMapping()) { 
15115        for (DataElement.DataElementMappingComponent e : element.getMapping()) 
15116          composeDataElementDataElementMappingComponent("mapping", e);
15117      }
15118      if (element.hasElement()) { 
15119        for (ElementDefinition e : element.getElement()) 
15120          composeElementDefinition("element", e);
15121      }
15122      composeElementClose(element);
15123      xml.exit(FHIR_NS, name);
15124    }
15125  }
15126
15127  protected void composeDataElementDataElementContactComponent(String name, DataElement.DataElementContactComponent element) throws IOException {
15128    if (element != null) {
15129      composeElementAttributes(element);
15130      xml.enter(FHIR_NS, name);
15131      composeBackboneElements(element);
15132      if (element.hasNameElement()) {
15133        composeString("name", element.getNameElement());
15134      }
15135      if (element.hasTelecom()) { 
15136        for (ContactPoint e : element.getTelecom()) 
15137          composeContactPoint("telecom", e);
15138      }
15139      composeElementClose(element);
15140      xml.exit(FHIR_NS, name);
15141    }
15142  }
15143
15144  protected void composeDataElementDataElementMappingComponent(String name, DataElement.DataElementMappingComponent element) throws IOException {
15145    if (element != null) {
15146      composeElementAttributes(element);
15147      xml.enter(FHIR_NS, name);
15148      composeBackboneElements(element);
15149      if (element.hasIdentityElement()) {
15150        composeId("identity", element.getIdentityElement());
15151      }
15152      if (element.hasUriElement()) {
15153        composeUri("uri", element.getUriElement());
15154      }
15155      if (element.hasNameElement()) {
15156        composeString("name", element.getNameElement());
15157      }
15158      if (element.hasCommentsElement()) {
15159        composeString("comments", element.getCommentsElement());
15160      }
15161      composeElementClose(element);
15162      xml.exit(FHIR_NS, name);
15163    }
15164  }
15165
15166  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
15167    if (element != null) {
15168      composeDomainResourceAttributes(element);
15169      xml.enter(FHIR_NS, name);
15170      composeDomainResourceElements(element);
15171      if (element.hasPatient()) {
15172        composeReference("patient", element.getPatient());
15173      }
15174      if (element.hasCategory()) {
15175        composeCodeableConcept("category", element.getCategory());
15176      }
15177      if (element.hasSeverityElement())
15178        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
15179      if (element.hasImplicated()) { 
15180        for (Reference e : element.getImplicated()) 
15181          composeReference("implicated", e);
15182      }
15183      if (element.hasDetailElement()) {
15184        composeString("detail", element.getDetailElement());
15185      }
15186      if (element.hasDateElement()) {
15187        composeDateTime("date", element.getDateElement());
15188      }
15189      if (element.hasAuthor()) {
15190        composeReference("author", element.getAuthor());
15191      }
15192      if (element.hasIdentifier()) {
15193        composeIdentifier("identifier", element.getIdentifier());
15194      }
15195      if (element.hasReferenceElement()) {
15196        composeUri("reference", element.getReferenceElement());
15197      }
15198      if (element.hasMitigation()) { 
15199        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
15200          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
15201      }
15202      composeElementClose(element);
15203      xml.exit(FHIR_NS, name);
15204    }
15205  }
15206
15207  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
15208    if (element != null) {
15209      composeElementAttributes(element);
15210      xml.enter(FHIR_NS, name);
15211      composeBackboneElements(element);
15212      if (element.hasAction()) {
15213        composeCodeableConcept("action", element.getAction());
15214      }
15215      if (element.hasDateElement()) {
15216        composeDateTime("date", element.getDateElement());
15217      }
15218      if (element.hasAuthor()) {
15219        composeReference("author", element.getAuthor());
15220      }
15221      composeElementClose(element);
15222      xml.exit(FHIR_NS, name);
15223    }
15224  }
15225
15226  protected void composeDevice(String name, Device element) throws IOException {
15227    if (element != null) {
15228      composeDomainResourceAttributes(element);
15229      xml.enter(FHIR_NS, name);
15230      composeDomainResourceElements(element);
15231      if (element.hasIdentifier()) { 
15232        for (Identifier e : element.getIdentifier()) 
15233          composeIdentifier("identifier", e);
15234      }
15235      if (element.hasType()) {
15236        composeCodeableConcept("type", element.getType());
15237      }
15238      if (element.hasNote()) { 
15239        for (Annotation e : element.getNote()) 
15240          composeAnnotation("note", e);
15241      }
15242      if (element.hasStatusElement())
15243        composeEnumeration("status", element.getStatusElement(), new Device.DeviceStatusEnumFactory());
15244      if (element.hasManufacturerElement()) {
15245        composeString("manufacturer", element.getManufacturerElement());
15246      }
15247      if (element.hasModelElement()) {
15248        composeString("model", element.getModelElement());
15249      }
15250      if (element.hasVersionElement()) {
15251        composeString("version", element.getVersionElement());
15252      }
15253      if (element.hasManufactureDateElement()) {
15254        composeDateTime("manufactureDate", element.getManufactureDateElement());
15255      }
15256      if (element.hasExpiryElement()) {
15257        composeDateTime("expiry", element.getExpiryElement());
15258      }
15259      if (element.hasUdiElement()) {
15260        composeString("udi", element.getUdiElement());
15261      }
15262      if (element.hasLotNumberElement()) {
15263        composeString("lotNumber", element.getLotNumberElement());
15264      }
15265      if (element.hasOwner()) {
15266        composeReference("owner", element.getOwner());
15267      }
15268      if (element.hasLocation()) {
15269        composeReference("location", element.getLocation());
15270      }
15271      if (element.hasPatient()) {
15272        composeReference("patient", element.getPatient());
15273      }
15274      if (element.hasContact()) { 
15275        for (ContactPoint e : element.getContact()) 
15276          composeContactPoint("contact", e);
15277      }
15278      if (element.hasUrlElement()) {
15279        composeUri("url", element.getUrlElement());
15280      }
15281      composeElementClose(element);
15282      xml.exit(FHIR_NS, name);
15283    }
15284  }
15285
15286  protected void composeDeviceComponent(String name, DeviceComponent element) throws IOException {
15287    if (element != null) {
15288      composeDomainResourceAttributes(element);
15289      xml.enter(FHIR_NS, name);
15290      composeDomainResourceElements(element);
15291      if (element.hasType()) {
15292        composeCodeableConcept("type", element.getType());
15293      }
15294      if (element.hasIdentifier()) {
15295        composeIdentifier("identifier", element.getIdentifier());
15296      }
15297      if (element.hasLastSystemChangeElement()) {
15298        composeInstant("lastSystemChange", element.getLastSystemChangeElement());
15299      }
15300      if (element.hasSource()) {
15301        composeReference("source", element.getSource());
15302      }
15303      if (element.hasParent()) {
15304        composeReference("parent", element.getParent());
15305      }
15306      if (element.hasOperationalStatus()) { 
15307        for (CodeableConcept e : element.getOperationalStatus()) 
15308          composeCodeableConcept("operationalStatus", e);
15309      }
15310      if (element.hasParameterGroup()) {
15311        composeCodeableConcept("parameterGroup", element.getParameterGroup());
15312      }
15313      if (element.hasMeasurementPrincipleElement())
15314        composeEnumeration("measurementPrinciple", element.getMeasurementPrincipleElement(), new DeviceComponent.MeasmntPrincipleEnumFactory());
15315      if (element.hasProductionSpecification()) { 
15316        for (DeviceComponent.DeviceComponentProductionSpecificationComponent e : element.getProductionSpecification()) 
15317          composeDeviceComponentDeviceComponentProductionSpecificationComponent("productionSpecification", e);
15318      }
15319      if (element.hasLanguageCode()) {
15320        composeCodeableConcept("languageCode", element.getLanguageCode());
15321      }
15322      composeElementClose(element);
15323      xml.exit(FHIR_NS, name);
15324    }
15325  }
15326
15327  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponent(String name, DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
15328    if (element != null) {
15329      composeElementAttributes(element);
15330      xml.enter(FHIR_NS, name);
15331      composeBackboneElements(element);
15332      if (element.hasSpecType()) {
15333        composeCodeableConcept("specType", element.getSpecType());
15334      }
15335      if (element.hasComponentId()) {
15336        composeIdentifier("componentId", element.getComponentId());
15337      }
15338      if (element.hasProductionSpecElement()) {
15339        composeString("productionSpec", element.getProductionSpecElement());
15340      }
15341      composeElementClose(element);
15342      xml.exit(FHIR_NS, name);
15343    }
15344  }
15345
15346  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
15347    if (element != null) {
15348      composeDomainResourceAttributes(element);
15349      xml.enter(FHIR_NS, name);
15350      composeDomainResourceElements(element);
15351      if (element.hasType()) {
15352        composeCodeableConcept("type", element.getType());
15353      }
15354      if (element.hasIdentifier()) {
15355        composeIdentifier("identifier", element.getIdentifier());
15356      }
15357      if (element.hasUnit()) {
15358        composeCodeableConcept("unit", element.getUnit());
15359      }
15360      if (element.hasSource()) {
15361        composeReference("source", element.getSource());
15362      }
15363      if (element.hasParent()) {
15364        composeReference("parent", element.getParent());
15365      }
15366      if (element.hasOperationalStatusElement())
15367        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
15368      if (element.hasColorElement())
15369        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
15370      if (element.hasCategoryElement())
15371        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
15372      if (element.hasMeasurementPeriod()) {
15373        composeTiming("measurementPeriod", element.getMeasurementPeriod());
15374      }
15375      if (element.hasCalibration()) { 
15376        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
15377          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
15378      }
15379      composeElementClose(element);
15380      xml.exit(FHIR_NS, name);
15381    }
15382  }
15383
15384  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
15385    if (element != null) {
15386      composeElementAttributes(element);
15387      xml.enter(FHIR_NS, name);
15388      composeBackboneElements(element);
15389      if (element.hasTypeElement())
15390        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
15391      if (element.hasStateElement())
15392        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
15393      if (element.hasTimeElement()) {
15394        composeInstant("time", element.getTimeElement());
15395      }
15396      composeElementClose(element);
15397      xml.exit(FHIR_NS, name);
15398    }
15399  }
15400
15401  protected void composeDeviceUseRequest(String name, DeviceUseRequest element) throws IOException {
15402    if (element != null) {
15403      composeDomainResourceAttributes(element);
15404      xml.enter(FHIR_NS, name);
15405      composeDomainResourceElements(element);
15406      if (element.hasBodySite()) {
15407        composeType("bodySite", element.getBodySite());
15408      }      if (element.hasStatusElement())
15409        composeEnumeration("status", element.getStatusElement(), new DeviceUseRequest.DeviceUseRequestStatusEnumFactory());
15410      if (element.hasDevice()) {
15411        composeReference("device", element.getDevice());
15412      }
15413      if (element.hasEncounter()) {
15414        composeReference("encounter", element.getEncounter());
15415      }
15416      if (element.hasIdentifier()) { 
15417        for (Identifier e : element.getIdentifier()) 
15418          composeIdentifier("identifier", e);
15419      }
15420      if (element.hasIndication()) { 
15421        for (CodeableConcept e : element.getIndication()) 
15422          composeCodeableConcept("indication", e);
15423      }
15424      if (element.hasNotes()) { 
15425        for (StringType e : element.getNotes()) 
15426          composeString("notes", e);
15427      }
15428      if (element.hasPrnReason()) { 
15429        for (CodeableConcept e : element.getPrnReason()) 
15430          composeCodeableConcept("prnReason", e);
15431      }
15432      if (element.hasOrderedOnElement()) {
15433        composeDateTime("orderedOn", element.getOrderedOnElement());
15434      }
15435      if (element.hasRecordedOnElement()) {
15436        composeDateTime("recordedOn", element.getRecordedOnElement());
15437      }
15438      if (element.hasSubject()) {
15439        composeReference("subject", element.getSubject());
15440      }
15441      if (element.hasTiming()) {
15442        composeType("timing", element.getTiming());
15443      }      if (element.hasPriorityElement())
15444        composeEnumeration("priority", element.getPriorityElement(), new DeviceUseRequest.DeviceUseRequestPriorityEnumFactory());
15445      composeElementClose(element);
15446      xml.exit(FHIR_NS, name);
15447    }
15448  }
15449
15450  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
15451    if (element != null) {
15452      composeDomainResourceAttributes(element);
15453      xml.enter(FHIR_NS, name);
15454      composeDomainResourceElements(element);
15455      if (element.hasBodySite()) {
15456        composeType("bodySite", element.getBodySite());
15457      }      if (element.hasWhenUsed()) {
15458        composePeriod("whenUsed", element.getWhenUsed());
15459      }
15460      if (element.hasDevice()) {
15461        composeReference("device", element.getDevice());
15462      }
15463      if (element.hasIdentifier()) { 
15464        for (Identifier e : element.getIdentifier()) 
15465          composeIdentifier("identifier", e);
15466      }
15467      if (element.hasIndication()) { 
15468        for (CodeableConcept e : element.getIndication()) 
15469          composeCodeableConcept("indication", e);
15470      }
15471      if (element.hasNotes()) { 
15472        for (StringType e : element.getNotes()) 
15473          composeString("notes", e);
15474      }
15475      if (element.hasRecordedOnElement()) {
15476        composeDateTime("recordedOn", element.getRecordedOnElement());
15477      }
15478      if (element.hasSubject()) {
15479        composeReference("subject", element.getSubject());
15480      }
15481      if (element.hasTiming()) {
15482        composeType("timing", element.getTiming());
15483      }      composeElementClose(element);
15484      xml.exit(FHIR_NS, name);
15485    }
15486  }
15487
15488  protected void composeDiagnosticOrder(String name, DiagnosticOrder element) throws IOException {
15489    if (element != null) {
15490      composeDomainResourceAttributes(element);
15491      xml.enter(FHIR_NS, name);
15492      composeDomainResourceElements(element);
15493      if (element.hasSubject()) {
15494        composeReference("subject", element.getSubject());
15495      }
15496      if (element.hasOrderer()) {
15497        composeReference("orderer", element.getOrderer());
15498      }
15499      if (element.hasIdentifier()) { 
15500        for (Identifier e : element.getIdentifier()) 
15501          composeIdentifier("identifier", e);
15502      }
15503      if (element.hasEncounter()) {
15504        composeReference("encounter", element.getEncounter());
15505      }
15506      if (element.hasReason()) { 
15507        for (CodeableConcept e : element.getReason()) 
15508          composeCodeableConcept("reason", e);
15509      }
15510      if (element.hasSupportingInformation()) { 
15511        for (Reference e : element.getSupportingInformation()) 
15512          composeReference("supportingInformation", e);
15513      }
15514      if (element.hasSpecimen()) { 
15515        for (Reference e : element.getSpecimen()) 
15516          composeReference("specimen", e);
15517      }
15518      if (element.hasStatusElement())
15519        composeEnumeration("status", element.getStatusElement(), new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
15520      if (element.hasPriorityElement())
15521        composeEnumeration("priority", element.getPriorityElement(), new DiagnosticOrder.DiagnosticOrderPriorityEnumFactory());
15522      if (element.hasEvent()) { 
15523        for (DiagnosticOrder.DiagnosticOrderEventComponent e : element.getEvent()) 
15524          composeDiagnosticOrderDiagnosticOrderEventComponent("event", e);
15525      }
15526      if (element.hasItem()) { 
15527        for (DiagnosticOrder.DiagnosticOrderItemComponent e : element.getItem()) 
15528          composeDiagnosticOrderDiagnosticOrderItemComponent("item", e);
15529      }
15530      if (element.hasNote()) { 
15531        for (Annotation e : element.getNote()) 
15532          composeAnnotation("note", e);
15533      }
15534      composeElementClose(element);
15535      xml.exit(FHIR_NS, name);
15536    }
15537  }
15538
15539  protected void composeDiagnosticOrderDiagnosticOrderEventComponent(String name, DiagnosticOrder.DiagnosticOrderEventComponent element) throws IOException {
15540    if (element != null) {
15541      composeElementAttributes(element);
15542      xml.enter(FHIR_NS, name);
15543      composeBackboneElements(element);
15544      if (element.hasStatusElement())
15545        composeEnumeration("status", element.getStatusElement(), new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
15546      if (element.hasDescription()) {
15547        composeCodeableConcept("description", element.getDescription());
15548      }
15549      if (element.hasDateTimeElement()) {
15550        composeDateTime("dateTime", element.getDateTimeElement());
15551      }
15552      if (element.hasActor()) {
15553        composeReference("actor", element.getActor());
15554      }
15555      composeElementClose(element);
15556      xml.exit(FHIR_NS, name);
15557    }
15558  }
15559
15560  protected void composeDiagnosticOrderDiagnosticOrderItemComponent(String name, DiagnosticOrder.DiagnosticOrderItemComponent element) throws IOException {
15561    if (element != null) {
15562      composeElementAttributes(element);
15563      xml.enter(FHIR_NS, name);
15564      composeBackboneElements(element);
15565      if (element.hasCode()) {
15566        composeCodeableConcept("code", element.getCode());
15567      }
15568      if (element.hasSpecimen()) { 
15569        for (Reference e : element.getSpecimen()) 
15570          composeReference("specimen", e);
15571      }
15572      if (element.hasBodySite()) {
15573        composeCodeableConcept("bodySite", element.getBodySite());
15574      }
15575      if (element.hasStatusElement())
15576        composeEnumeration("status", element.getStatusElement(), new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
15577      if (element.hasEvent()) { 
15578        for (DiagnosticOrder.DiagnosticOrderEventComponent e : element.getEvent()) 
15579          composeDiagnosticOrderDiagnosticOrderEventComponent("event", e);
15580      }
15581      composeElementClose(element);
15582      xml.exit(FHIR_NS, name);
15583    }
15584  }
15585
15586  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
15587    if (element != null) {
15588      composeDomainResourceAttributes(element);
15589      xml.enter(FHIR_NS, name);
15590      composeDomainResourceElements(element);
15591      if (element.hasIdentifier()) { 
15592        for (Identifier e : element.getIdentifier()) 
15593          composeIdentifier("identifier", e);
15594      }
15595      if (element.hasStatusElement())
15596        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
15597      if (element.hasCategory()) {
15598        composeCodeableConcept("category", element.getCategory());
15599      }
15600      if (element.hasCode()) {
15601        composeCodeableConcept("code", element.getCode());
15602      }
15603      if (element.hasSubject()) {
15604        composeReference("subject", element.getSubject());
15605      }
15606      if (element.hasEncounter()) {
15607        composeReference("encounter", element.getEncounter());
15608      }
15609      if (element.hasEffective()) {
15610        composeType("effective", element.getEffective());
15611      }      if (element.hasIssuedElement()) {
15612        composeInstant("issued", element.getIssuedElement());
15613      }
15614      if (element.hasPerformer()) {
15615        composeReference("performer", element.getPerformer());
15616      }
15617      if (element.hasRequest()) { 
15618        for (Reference e : element.getRequest()) 
15619          composeReference("request", e);
15620      }
15621      if (element.hasSpecimen()) { 
15622        for (Reference e : element.getSpecimen()) 
15623          composeReference("specimen", e);
15624      }
15625      if (element.hasResult()) { 
15626        for (Reference e : element.getResult()) 
15627          composeReference("result", e);
15628      }
15629      if (element.hasImagingStudy()) { 
15630        for (Reference e : element.getImagingStudy()) 
15631          composeReference("imagingStudy", e);
15632      }
15633      if (element.hasImage()) { 
15634        for (DiagnosticReport.DiagnosticReportImageComponent e : element.getImage()) 
15635          composeDiagnosticReportDiagnosticReportImageComponent("image", e);
15636      }
15637      if (element.hasConclusionElement()) {
15638        composeString("conclusion", element.getConclusionElement());
15639      }
15640      if (element.hasCodedDiagnosis()) { 
15641        for (CodeableConcept e : element.getCodedDiagnosis()) 
15642          composeCodeableConcept("codedDiagnosis", e);
15643      }
15644      if (element.hasPresentedForm()) { 
15645        for (Attachment e : element.getPresentedForm()) 
15646          composeAttachment("presentedForm", e);
15647      }
15648      composeElementClose(element);
15649      xml.exit(FHIR_NS, name);
15650    }
15651  }
15652
15653  protected void composeDiagnosticReportDiagnosticReportImageComponent(String name, DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
15654    if (element != null) {
15655      composeElementAttributes(element);
15656      xml.enter(FHIR_NS, name);
15657      composeBackboneElements(element);
15658      if (element.hasCommentElement()) {
15659        composeString("comment", element.getCommentElement());
15660      }
15661      if (element.hasLink()) {
15662        composeReference("link", element.getLink());
15663      }
15664      composeElementClose(element);
15665      xml.exit(FHIR_NS, name);
15666    }
15667  }
15668
15669  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
15670    if (element != null) {
15671      composeDomainResourceAttributes(element);
15672      xml.enter(FHIR_NS, name);
15673      composeDomainResourceElements(element);
15674      if (element.hasMasterIdentifier()) {
15675        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
15676      }
15677      if (element.hasIdentifier()) { 
15678        for (Identifier e : element.getIdentifier()) 
15679          composeIdentifier("identifier", e);
15680      }
15681      if (element.hasSubject()) {
15682        composeReference("subject", element.getSubject());
15683      }
15684      if (element.hasRecipient()) { 
15685        for (Reference e : element.getRecipient()) 
15686          composeReference("recipient", e);
15687      }
15688      if (element.hasType()) {
15689        composeCodeableConcept("type", element.getType());
15690      }
15691      if (element.hasAuthor()) { 
15692        for (Reference e : element.getAuthor()) 
15693          composeReference("author", e);
15694      }
15695      if (element.hasCreatedElement()) {
15696        composeDateTime("created", element.getCreatedElement());
15697      }
15698      if (element.hasSourceElement()) {
15699        composeUri("source", element.getSourceElement());
15700      }
15701      if (element.hasStatusElement())
15702        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
15703      if (element.hasDescriptionElement()) {
15704        composeString("description", element.getDescriptionElement());
15705      }
15706      if (element.hasContent()) { 
15707        for (DocumentManifest.DocumentManifestContentComponent e : element.getContent()) 
15708          composeDocumentManifestDocumentManifestContentComponent("content", e);
15709      }
15710      if (element.hasRelated()) { 
15711        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
15712          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
15713      }
15714      composeElementClose(element);
15715      xml.exit(FHIR_NS, name);
15716    }
15717  }
15718
15719  protected void composeDocumentManifestDocumentManifestContentComponent(String name, DocumentManifest.DocumentManifestContentComponent element) throws IOException {
15720    if (element != null) {
15721      composeElementAttributes(element);
15722      xml.enter(FHIR_NS, name);
15723      composeBackboneElements(element);
15724      if (element.hasP()) {
15725        composeType("p", element.getP());
15726      }      composeElementClose(element);
15727      xml.exit(FHIR_NS, name);
15728    }
15729  }
15730
15731  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
15732    if (element != null) {
15733      composeElementAttributes(element);
15734      xml.enter(FHIR_NS, name);
15735      composeBackboneElements(element);
15736      if (element.hasIdentifier()) {
15737        composeIdentifier("identifier", element.getIdentifier());
15738      }
15739      if (element.hasRef()) {
15740        composeReference("ref", element.getRef());
15741      }
15742      composeElementClose(element);
15743      xml.exit(FHIR_NS, name);
15744    }
15745  }
15746
15747  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
15748    if (element != null) {
15749      composeDomainResourceAttributes(element);
15750      xml.enter(FHIR_NS, name);
15751      composeDomainResourceElements(element);
15752      if (element.hasMasterIdentifier()) {
15753        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
15754      }
15755      if (element.hasIdentifier()) { 
15756        for (Identifier e : element.getIdentifier()) 
15757          composeIdentifier("identifier", e);
15758      }
15759      if (element.hasSubject()) {
15760        composeReference("subject", element.getSubject());
15761      }
15762      if (element.hasType()) {
15763        composeCodeableConcept("type", element.getType());
15764      }
15765      if (element.hasClass_()) {
15766        composeCodeableConcept("class", element.getClass_());
15767      }
15768      if (element.hasAuthor()) { 
15769        for (Reference e : element.getAuthor()) 
15770          composeReference("author", e);
15771      }
15772      if (element.hasCustodian()) {
15773        composeReference("custodian", element.getCustodian());
15774      }
15775      if (element.hasAuthenticator()) {
15776        composeReference("authenticator", element.getAuthenticator());
15777      }
15778      if (element.hasCreatedElement()) {
15779        composeDateTime("created", element.getCreatedElement());
15780      }
15781      if (element.hasIndexedElement()) {
15782        composeInstant("indexed", element.getIndexedElement());
15783      }
15784      if (element.hasStatusElement())
15785        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
15786      if (element.hasDocStatus()) {
15787        composeCodeableConcept("docStatus", element.getDocStatus());
15788      }
15789      if (element.hasRelatesTo()) { 
15790        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
15791          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
15792      }
15793      if (element.hasDescriptionElement()) {
15794        composeString("description", element.getDescriptionElement());
15795      }
15796      if (element.hasSecurityLabel()) { 
15797        for (CodeableConcept e : element.getSecurityLabel()) 
15798          composeCodeableConcept("securityLabel", e);
15799      }
15800      if (element.hasContent()) { 
15801        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
15802          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
15803      }
15804      if (element.hasContext()) {
15805        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
15806      }
15807      composeElementClose(element);
15808      xml.exit(FHIR_NS, name);
15809    }
15810  }
15811
15812  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
15813    if (element != null) {
15814      composeElementAttributes(element);
15815      xml.enter(FHIR_NS, name);
15816      composeBackboneElements(element);
15817      if (element.hasCodeElement())
15818        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
15819      if (element.hasTarget()) {
15820        composeReference("target", element.getTarget());
15821      }
15822      composeElementClose(element);
15823      xml.exit(FHIR_NS, name);
15824    }
15825  }
15826
15827  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
15828    if (element != null) {
15829      composeElementAttributes(element);
15830      xml.enter(FHIR_NS, name);
15831      composeBackboneElements(element);
15832      if (element.hasAttachment()) {
15833        composeAttachment("attachment", element.getAttachment());
15834      }
15835      if (element.hasFormat()) { 
15836        for (Coding e : element.getFormat()) 
15837          composeCoding("format", e);
15838      }
15839      composeElementClose(element);
15840      xml.exit(FHIR_NS, name);
15841    }
15842  }
15843
15844  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
15845    if (element != null) {
15846      composeElementAttributes(element);
15847      xml.enter(FHIR_NS, name);
15848      composeBackboneElements(element);
15849      if (element.hasEncounter()) {
15850        composeReference("encounter", element.getEncounter());
15851      }
15852      if (element.hasEvent()) { 
15853        for (CodeableConcept e : element.getEvent()) 
15854          composeCodeableConcept("event", e);
15855      }
15856      if (element.hasPeriod()) {
15857        composePeriod("period", element.getPeriod());
15858      }
15859      if (element.hasFacilityType()) {
15860        composeCodeableConcept("facilityType", element.getFacilityType());
15861      }
15862      if (element.hasPracticeSetting()) {
15863        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
15864      }
15865      if (element.hasSourcePatientInfo()) {
15866        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
15867      }
15868      if (element.hasRelated()) { 
15869        for (DocumentReference.DocumentReferenceContextRelatedComponent e : element.getRelated()) 
15870          composeDocumentReferenceDocumentReferenceContextRelatedComponent("related", e);
15871      }
15872      composeElementClose(element);
15873      xml.exit(FHIR_NS, name);
15874    }
15875  }
15876
15877  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponent(String name, DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
15878    if (element != null) {
15879      composeElementAttributes(element);
15880      xml.enter(FHIR_NS, name);
15881      composeBackboneElements(element);
15882      if (element.hasIdentifier()) {
15883        composeIdentifier("identifier", element.getIdentifier());
15884      }
15885      if (element.hasRef()) {
15886        composeReference("ref", element.getRef());
15887      }
15888      composeElementClose(element);
15889      xml.exit(FHIR_NS, name);
15890    }
15891  }
15892
15893  protected void composeEligibilityRequest(String name, EligibilityRequest element) throws IOException {
15894    if (element != null) {
15895      composeDomainResourceAttributes(element);
15896      xml.enter(FHIR_NS, name);
15897      composeDomainResourceElements(element);
15898      if (element.hasIdentifier()) { 
15899        for (Identifier e : element.getIdentifier()) 
15900          composeIdentifier("identifier", e);
15901      }
15902      if (element.hasRuleset()) {
15903        composeCoding("ruleset", element.getRuleset());
15904      }
15905      if (element.hasOriginalRuleset()) {
15906        composeCoding("originalRuleset", element.getOriginalRuleset());
15907      }
15908      if (element.hasCreatedElement()) {
15909        composeDateTime("created", element.getCreatedElement());
15910      }
15911      if (element.hasTarget()) {
15912        composeReference("target", element.getTarget());
15913      }
15914      if (element.hasProvider()) {
15915        composeReference("provider", element.getProvider());
15916      }
15917      if (element.hasOrganization()) {
15918        composeReference("organization", element.getOrganization());
15919      }
15920      composeElementClose(element);
15921      xml.exit(FHIR_NS, name);
15922    }
15923  }
15924
15925  protected void composeEligibilityResponse(String name, EligibilityResponse element) throws IOException {
15926    if (element != null) {
15927      composeDomainResourceAttributes(element);
15928      xml.enter(FHIR_NS, name);
15929      composeDomainResourceElements(element);
15930      if (element.hasIdentifier()) { 
15931        for (Identifier e : element.getIdentifier()) 
15932          composeIdentifier("identifier", e);
15933      }
15934      if (element.hasRequest()) {
15935        composeReference("request", element.getRequest());
15936      }
15937      if (element.hasOutcomeElement())
15938        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
15939      if (element.hasDispositionElement()) {
15940        composeString("disposition", element.getDispositionElement());
15941      }
15942      if (element.hasRuleset()) {
15943        composeCoding("ruleset", element.getRuleset());
15944      }
15945      if (element.hasOriginalRuleset()) {
15946        composeCoding("originalRuleset", element.getOriginalRuleset());
15947      }
15948      if (element.hasCreatedElement()) {
15949        composeDateTime("created", element.getCreatedElement());
15950      }
15951      if (element.hasOrganization()) {
15952        composeReference("organization", element.getOrganization());
15953      }
15954      if (element.hasRequestProvider()) {
15955        composeReference("requestProvider", element.getRequestProvider());
15956      }
15957      if (element.hasRequestOrganization()) {
15958        composeReference("requestOrganization", element.getRequestOrganization());
15959      }
15960      composeElementClose(element);
15961      xml.exit(FHIR_NS, name);
15962    }
15963  }
15964
15965  protected void composeEncounter(String name, Encounter element) throws IOException {
15966    if (element != null) {
15967      composeDomainResourceAttributes(element);
15968      xml.enter(FHIR_NS, name);
15969      composeDomainResourceElements(element);
15970      if (element.hasIdentifier()) { 
15971        for (Identifier e : element.getIdentifier()) 
15972          composeIdentifier("identifier", e);
15973      }
15974      if (element.hasStatusElement())
15975        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStateEnumFactory());
15976      if (element.hasStatusHistory()) { 
15977        for (Encounter.EncounterStatusHistoryComponent e : element.getStatusHistory()) 
15978          composeEncounterEncounterStatusHistoryComponent("statusHistory", e);
15979      }
15980      if (element.hasClass_Element())
15981        composeEnumeration("class", element.getClass_Element(), new Encounter.EncounterClassEnumFactory());
15982      if (element.hasType()) { 
15983        for (CodeableConcept e : element.getType()) 
15984          composeCodeableConcept("type", e);
15985      }
15986      if (element.hasPriority()) {
15987        composeCodeableConcept("priority", element.getPriority());
15988      }
15989      if (element.hasPatient()) {
15990        composeReference("patient", element.getPatient());
15991      }
15992      if (element.hasEpisodeOfCare()) { 
15993        for (Reference e : element.getEpisodeOfCare()) 
15994          composeReference("episodeOfCare", e);
15995      }
15996      if (element.hasIncomingReferral()) { 
15997        for (Reference e : element.getIncomingReferral()) 
15998          composeReference("incomingReferral", e);
15999      }
16000      if (element.hasParticipant()) { 
16001        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
16002          composeEncounterEncounterParticipantComponent("participant", e);
16003      }
16004      if (element.hasAppointment()) {
16005        composeReference("appointment", element.getAppointment());
16006      }
16007      if (element.hasPeriod()) {
16008        composePeriod("period", element.getPeriod());
16009      }
16010      if (element.hasLength()) {
16011        composeDuration("length", element.getLength());
16012      }
16013      if (element.hasReason()) { 
16014        for (CodeableConcept e : element.getReason()) 
16015          composeCodeableConcept("reason", e);
16016      }
16017      if (element.hasIndication()) { 
16018        for (Reference e : element.getIndication()) 
16019          composeReference("indication", e);
16020      }
16021      if (element.hasHospitalization()) {
16022        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
16023      }
16024      if (element.hasLocation()) { 
16025        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
16026          composeEncounterEncounterLocationComponent("location", e);
16027      }
16028      if (element.hasServiceProvider()) {
16029        composeReference("serviceProvider", element.getServiceProvider());
16030      }
16031      if (element.hasPartOf()) {
16032        composeReference("partOf", element.getPartOf());
16033      }
16034      composeElementClose(element);
16035      xml.exit(FHIR_NS, name);
16036    }
16037  }
16038
16039  protected void composeEncounterEncounterStatusHistoryComponent(String name, Encounter.EncounterStatusHistoryComponent element) throws IOException {
16040    if (element != null) {
16041      composeElementAttributes(element);
16042      xml.enter(FHIR_NS, name);
16043      composeBackboneElements(element);
16044      if (element.hasStatusElement())
16045        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStateEnumFactory());
16046      if (element.hasPeriod()) {
16047        composePeriod("period", element.getPeriod());
16048      }
16049      composeElementClose(element);
16050      xml.exit(FHIR_NS, name);
16051    }
16052  }
16053
16054  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
16055    if (element != null) {
16056      composeElementAttributes(element);
16057      xml.enter(FHIR_NS, name);
16058      composeBackboneElements(element);
16059      if (element.hasType()) { 
16060        for (CodeableConcept e : element.getType()) 
16061          composeCodeableConcept("type", e);
16062      }
16063      if (element.hasPeriod()) {
16064        composePeriod("period", element.getPeriod());
16065      }
16066      if (element.hasIndividual()) {
16067        composeReference("individual", element.getIndividual());
16068      }
16069      composeElementClose(element);
16070      xml.exit(FHIR_NS, name);
16071    }
16072  }
16073
16074  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
16075    if (element != null) {
16076      composeElementAttributes(element);
16077      xml.enter(FHIR_NS, name);
16078      composeBackboneElements(element);
16079      if (element.hasPreAdmissionIdentifier()) {
16080        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
16081      }
16082      if (element.hasOrigin()) {
16083        composeReference("origin", element.getOrigin());
16084      }
16085      if (element.hasAdmitSource()) {
16086        composeCodeableConcept("admitSource", element.getAdmitSource());
16087      }
16088      if (element.hasAdmittingDiagnosis()) { 
16089        for (Reference e : element.getAdmittingDiagnosis()) 
16090          composeReference("admittingDiagnosis", e);
16091      }
16092      if (element.hasReAdmission()) {
16093        composeCodeableConcept("reAdmission", element.getReAdmission());
16094      }
16095      if (element.hasDietPreference()) { 
16096        for (CodeableConcept e : element.getDietPreference()) 
16097          composeCodeableConcept("dietPreference", e);
16098      }
16099      if (element.hasSpecialCourtesy()) { 
16100        for (CodeableConcept e : element.getSpecialCourtesy()) 
16101          composeCodeableConcept("specialCourtesy", e);
16102      }
16103      if (element.hasSpecialArrangement()) { 
16104        for (CodeableConcept e : element.getSpecialArrangement()) 
16105          composeCodeableConcept("specialArrangement", e);
16106      }
16107      if (element.hasDestination()) {
16108        composeReference("destination", element.getDestination());
16109      }
16110      if (element.hasDischargeDisposition()) {
16111        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
16112      }
16113      if (element.hasDischargeDiagnosis()) { 
16114        for (Reference e : element.getDischargeDiagnosis()) 
16115          composeReference("dischargeDiagnosis", e);
16116      }
16117      composeElementClose(element);
16118      xml.exit(FHIR_NS, name);
16119    }
16120  }
16121
16122  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
16123    if (element != null) {
16124      composeElementAttributes(element);
16125      xml.enter(FHIR_NS, name);
16126      composeBackboneElements(element);
16127      if (element.hasLocation()) {
16128        composeReference("location", element.getLocation());
16129      }
16130      if (element.hasStatusElement())
16131        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
16132      if (element.hasPeriod()) {
16133        composePeriod("period", element.getPeriod());
16134      }
16135      composeElementClose(element);
16136      xml.exit(FHIR_NS, name);
16137    }
16138  }
16139
16140  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
16141    if (element != null) {
16142      composeDomainResourceAttributes(element);
16143      xml.enter(FHIR_NS, name);
16144      composeDomainResourceElements(element);
16145      if (element.hasIdentifier()) { 
16146        for (Identifier e : element.getIdentifier()) 
16147          composeIdentifier("identifier", e);
16148      }
16149      if (element.hasRuleset()) {
16150        composeCoding("ruleset", element.getRuleset());
16151      }
16152      if (element.hasOriginalRuleset()) {
16153        composeCoding("originalRuleset", element.getOriginalRuleset());
16154      }
16155      if (element.hasCreatedElement()) {
16156        composeDateTime("created", element.getCreatedElement());
16157      }
16158      if (element.hasTarget()) {
16159        composeReference("target", element.getTarget());
16160      }
16161      if (element.hasProvider()) {
16162        composeReference("provider", element.getProvider());
16163      }
16164      if (element.hasOrganization()) {
16165        composeReference("organization", element.getOrganization());
16166      }
16167      if (element.hasSubject()) {
16168        composeReference("subject", element.getSubject());
16169      }
16170      if (element.hasCoverage()) {
16171        composeReference("coverage", element.getCoverage());
16172      }
16173      if (element.hasRelationship()) {
16174        composeCoding("relationship", element.getRelationship());
16175      }
16176      composeElementClose(element);
16177      xml.exit(FHIR_NS, name);
16178    }
16179  }
16180
16181  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
16182    if (element != null) {
16183      composeDomainResourceAttributes(element);
16184      xml.enter(FHIR_NS, name);
16185      composeDomainResourceElements(element);
16186      if (element.hasIdentifier()) { 
16187        for (Identifier e : element.getIdentifier()) 
16188          composeIdentifier("identifier", e);
16189      }
16190      if (element.hasRequest()) {
16191        composeReference("request", element.getRequest());
16192      }
16193      if (element.hasOutcomeElement())
16194        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
16195      if (element.hasDispositionElement()) {
16196        composeString("disposition", element.getDispositionElement());
16197      }
16198      if (element.hasRuleset()) {
16199        composeCoding("ruleset", element.getRuleset());
16200      }
16201      if (element.hasOriginalRuleset()) {
16202        composeCoding("originalRuleset", element.getOriginalRuleset());
16203      }
16204      if (element.hasCreatedElement()) {
16205        composeDateTime("created", element.getCreatedElement());
16206      }
16207      if (element.hasOrganization()) {
16208        composeReference("organization", element.getOrganization());
16209      }
16210      if (element.hasRequestProvider()) {
16211        composeReference("requestProvider", element.getRequestProvider());
16212      }
16213      if (element.hasRequestOrganization()) {
16214        composeReference("requestOrganization", element.getRequestOrganization());
16215      }
16216      composeElementClose(element);
16217      xml.exit(FHIR_NS, name);
16218    }
16219  }
16220
16221  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
16222    if (element != null) {
16223      composeDomainResourceAttributes(element);
16224      xml.enter(FHIR_NS, name);
16225      composeDomainResourceElements(element);
16226      if (element.hasIdentifier()) { 
16227        for (Identifier e : element.getIdentifier()) 
16228          composeIdentifier("identifier", e);
16229      }
16230      if (element.hasStatusElement())
16231        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
16232      if (element.hasStatusHistory()) { 
16233        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
16234          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
16235      }
16236      if (element.hasType()) { 
16237        for (CodeableConcept e : element.getType()) 
16238          composeCodeableConcept("type", e);
16239      }
16240      if (element.hasCondition()) { 
16241        for (Reference e : element.getCondition()) 
16242          composeReference("condition", e);
16243      }
16244      if (element.hasPatient()) {
16245        composeReference("patient", element.getPatient());
16246      }
16247      if (element.hasManagingOrganization()) {
16248        composeReference("managingOrganization", element.getManagingOrganization());
16249      }
16250      if (element.hasPeriod()) {
16251        composePeriod("period", element.getPeriod());
16252      }
16253      if (element.hasReferralRequest()) { 
16254        for (Reference e : element.getReferralRequest()) 
16255          composeReference("referralRequest", e);
16256      }
16257      if (element.hasCareManager()) {
16258        composeReference("careManager", element.getCareManager());
16259      }
16260      if (element.hasCareTeam()) { 
16261        for (EpisodeOfCare.EpisodeOfCareCareTeamComponent e : element.getCareTeam()) 
16262          composeEpisodeOfCareEpisodeOfCareCareTeamComponent("careTeam", e);
16263      }
16264      composeElementClose(element);
16265      xml.exit(FHIR_NS, name);
16266    }
16267  }
16268
16269  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
16270    if (element != null) {
16271      composeElementAttributes(element);
16272      xml.enter(FHIR_NS, name);
16273      composeBackboneElements(element);
16274      if (element.hasStatusElement())
16275        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
16276      if (element.hasPeriod()) {
16277        composePeriod("period", element.getPeriod());
16278      }
16279      composeElementClose(element);
16280      xml.exit(FHIR_NS, name);
16281    }
16282  }
16283
16284  protected void composeEpisodeOfCareEpisodeOfCareCareTeamComponent(String name, EpisodeOfCare.EpisodeOfCareCareTeamComponent element) throws IOException {
16285    if (element != null) {
16286      composeElementAttributes(element);
16287      xml.enter(FHIR_NS, name);
16288      composeBackboneElements(element);
16289      if (element.hasRole()) { 
16290        for (CodeableConcept e : element.getRole()) 
16291          composeCodeableConcept("role", e);
16292      }
16293      if (element.hasPeriod()) {
16294        composePeriod("period", element.getPeriod());
16295      }
16296      if (element.hasMember()) {
16297        composeReference("member", element.getMember());
16298      }
16299      composeElementClose(element);
16300      xml.exit(FHIR_NS, name);
16301    }
16302  }
16303
16304  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
16305    if (element != null) {
16306      composeDomainResourceAttributes(element);
16307      xml.enter(FHIR_NS, name);
16308      composeDomainResourceElements(element);
16309      if (element.hasIdentifier()) { 
16310        for (Identifier e : element.getIdentifier()) 
16311          composeIdentifier("identifier", e);
16312      }
16313      if (element.hasRequest()) {
16314        composeReference("request", element.getRequest());
16315      }
16316      if (element.hasOutcomeElement())
16317        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
16318      if (element.hasDispositionElement()) {
16319        composeString("disposition", element.getDispositionElement());
16320      }
16321      if (element.hasRuleset()) {
16322        composeCoding("ruleset", element.getRuleset());
16323      }
16324      if (element.hasOriginalRuleset()) {
16325        composeCoding("originalRuleset", element.getOriginalRuleset());
16326      }
16327      if (element.hasCreatedElement()) {
16328        composeDateTime("created", element.getCreatedElement());
16329      }
16330      if (element.hasOrganization()) {
16331        composeReference("organization", element.getOrganization());
16332      }
16333      if (element.hasRequestProvider()) {
16334        composeReference("requestProvider", element.getRequestProvider());
16335      }
16336      if (element.hasRequestOrganization()) {
16337        composeReference("requestOrganization", element.getRequestOrganization());
16338      }
16339      composeElementClose(element);
16340      xml.exit(FHIR_NS, name);
16341    }
16342  }
16343
16344  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
16345    if (element != null) {
16346      composeDomainResourceAttributes(element);
16347      xml.enter(FHIR_NS, name);
16348      composeDomainResourceElements(element);
16349      if (element.hasIdentifier()) { 
16350        for (Identifier e : element.getIdentifier()) 
16351          composeIdentifier("identifier", e);
16352      }
16353      if (element.hasPatient()) {
16354        composeReference("patient", element.getPatient());
16355      }
16356      if (element.hasDateElement()) {
16357        composeDateTime("date", element.getDateElement());
16358      }
16359      if (element.hasStatusElement())
16360        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
16361      if (element.hasNameElement()) {
16362        composeString("name", element.getNameElement());
16363      }
16364      if (element.hasRelationship()) {
16365        composeCodeableConcept("relationship", element.getRelationship());
16366      }
16367      if (element.hasGenderElement())
16368        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
16369      if (element.hasBorn()) {
16370        composeType("born", element.getBorn());
16371      }      if (element.hasAge()) {
16372        composeType("age", element.getAge());
16373      }      if (element.hasDeceased()) {
16374        composeType("deceased", element.getDeceased());
16375      }      if (element.hasNote()) {
16376        composeAnnotation("note", element.getNote());
16377      }
16378      if (element.hasCondition()) { 
16379        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
16380          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
16381      }
16382      composeElementClose(element);
16383      xml.exit(FHIR_NS, name);
16384    }
16385  }
16386
16387  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
16388    if (element != null) {
16389      composeElementAttributes(element);
16390      xml.enter(FHIR_NS, name);
16391      composeBackboneElements(element);
16392      if (element.hasCode()) {
16393        composeCodeableConcept("code", element.getCode());
16394      }
16395      if (element.hasOutcome()) {
16396        composeCodeableConcept("outcome", element.getOutcome());
16397      }
16398      if (element.hasOnset()) {
16399        composeType("onset", element.getOnset());
16400      }      if (element.hasNote()) {
16401        composeAnnotation("note", element.getNote());
16402      }
16403      composeElementClose(element);
16404      xml.exit(FHIR_NS, name);
16405    }
16406  }
16407
16408  protected void composeFlag(String name, Flag element) throws IOException {
16409    if (element != null) {
16410      composeDomainResourceAttributes(element);
16411      xml.enter(FHIR_NS, name);
16412      composeDomainResourceElements(element);
16413      if (element.hasIdentifier()) { 
16414        for (Identifier e : element.getIdentifier()) 
16415          composeIdentifier("identifier", e);
16416      }
16417      if (element.hasCategory()) {
16418        composeCodeableConcept("category", element.getCategory());
16419      }
16420      if (element.hasStatusElement())
16421        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
16422      if (element.hasPeriod()) {
16423        composePeriod("period", element.getPeriod());
16424      }
16425      if (element.hasSubject()) {
16426        composeReference("subject", element.getSubject());
16427      }
16428      if (element.hasEncounter()) {
16429        composeReference("encounter", element.getEncounter());
16430      }
16431      if (element.hasAuthor()) {
16432        composeReference("author", element.getAuthor());
16433      }
16434      if (element.hasCode()) {
16435        composeCodeableConcept("code", element.getCode());
16436      }
16437      composeElementClose(element);
16438      xml.exit(FHIR_NS, name);
16439    }
16440  }
16441
16442  protected void composeGoal(String name, Goal element) throws IOException {
16443    if (element != null) {
16444      composeDomainResourceAttributes(element);
16445      xml.enter(FHIR_NS, name);
16446      composeDomainResourceElements(element);
16447      if (element.hasIdentifier()) { 
16448        for (Identifier e : element.getIdentifier()) 
16449          composeIdentifier("identifier", e);
16450      }
16451      if (element.hasSubject()) {
16452        composeReference("subject", element.getSubject());
16453      }
16454      if (element.hasStart()) {
16455        composeType("start", element.getStart());
16456      }      if (element.hasTarget()) {
16457        composeType("target", element.getTarget());
16458      }      if (element.hasCategory()) { 
16459        for (CodeableConcept e : element.getCategory()) 
16460          composeCodeableConcept("category", e);
16461      }
16462      if (element.hasDescriptionElement()) {
16463        composeString("description", element.getDescriptionElement());
16464      }
16465      if (element.hasStatusElement())
16466        composeEnumeration("status", element.getStatusElement(), new Goal.GoalStatusEnumFactory());
16467      if (element.hasStatusDateElement()) {
16468        composeDate("statusDate", element.getStatusDateElement());
16469      }
16470      if (element.hasStatusReason()) {
16471        composeCodeableConcept("statusReason", element.getStatusReason());
16472      }
16473      if (element.hasAuthor()) {
16474        composeReference("author", element.getAuthor());
16475      }
16476      if (element.hasPriority()) {
16477        composeCodeableConcept("priority", element.getPriority());
16478      }
16479      if (element.hasAddresses()) { 
16480        for (Reference e : element.getAddresses()) 
16481          composeReference("addresses", e);
16482      }
16483      if (element.hasNote()) { 
16484        for (Annotation e : element.getNote()) 
16485          composeAnnotation("note", e);
16486      }
16487      if (element.hasOutcome()) { 
16488        for (Goal.GoalOutcomeComponent e : element.getOutcome()) 
16489          composeGoalGoalOutcomeComponent("outcome", e);
16490      }
16491      composeElementClose(element);
16492      xml.exit(FHIR_NS, name);
16493    }
16494  }
16495
16496  protected void composeGoalGoalOutcomeComponent(String name, Goal.GoalOutcomeComponent element) throws IOException {
16497    if (element != null) {
16498      composeElementAttributes(element);
16499      xml.enter(FHIR_NS, name);
16500      composeBackboneElements(element);
16501      if (element.hasResult()) {
16502        composeType("result", element.getResult());
16503      }      composeElementClose(element);
16504      xml.exit(FHIR_NS, name);
16505    }
16506  }
16507
16508  protected void composeGroup(String name, Group element) throws IOException {
16509    if (element != null) {
16510      composeDomainResourceAttributes(element);
16511      xml.enter(FHIR_NS, name);
16512      composeDomainResourceElements(element);
16513      if (element.hasIdentifier()) { 
16514        for (Identifier e : element.getIdentifier()) 
16515          composeIdentifier("identifier", e);
16516      }
16517      if (element.hasTypeElement())
16518        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
16519      if (element.hasActualElement()) {
16520        composeBoolean("actual", element.getActualElement());
16521      }
16522      if (element.hasCode()) {
16523        composeCodeableConcept("code", element.getCode());
16524      }
16525      if (element.hasNameElement()) {
16526        composeString("name", element.getNameElement());
16527      }
16528      if (element.hasQuantityElement()) {
16529        composeUnsignedInt("quantity", element.getQuantityElement());
16530      }
16531      if (element.hasCharacteristic()) { 
16532        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
16533          composeGroupGroupCharacteristicComponent("characteristic", e);
16534      }
16535      if (element.hasMember()) { 
16536        for (Group.GroupMemberComponent e : element.getMember()) 
16537          composeGroupGroupMemberComponent("member", e);
16538      }
16539      composeElementClose(element);
16540      xml.exit(FHIR_NS, name);
16541    }
16542  }
16543
16544  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
16545    if (element != null) {
16546      composeElementAttributes(element);
16547      xml.enter(FHIR_NS, name);
16548      composeBackboneElements(element);
16549      if (element.hasCode()) {
16550        composeCodeableConcept("code", element.getCode());
16551      }
16552      if (element.hasValue()) {
16553        composeType("value", element.getValue());
16554      }      if (element.hasExcludeElement()) {
16555        composeBoolean("exclude", element.getExcludeElement());
16556      }
16557      if (element.hasPeriod()) {
16558        composePeriod("period", element.getPeriod());
16559      }
16560      composeElementClose(element);
16561      xml.exit(FHIR_NS, name);
16562    }
16563  }
16564
16565  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
16566    if (element != null) {
16567      composeElementAttributes(element);
16568      xml.enter(FHIR_NS, name);
16569      composeBackboneElements(element);
16570      if (element.hasEntity()) {
16571        composeReference("entity", element.getEntity());
16572      }
16573      if (element.hasPeriod()) {
16574        composePeriod("period", element.getPeriod());
16575      }
16576      if (element.hasInactiveElement()) {
16577        composeBoolean("inactive", element.getInactiveElement());
16578      }
16579      composeElementClose(element);
16580      xml.exit(FHIR_NS, name);
16581    }
16582  }
16583
16584  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
16585    if (element != null) {
16586      composeDomainResourceAttributes(element);
16587      xml.enter(FHIR_NS, name);
16588      composeDomainResourceElements(element);
16589      if (element.hasIdentifier()) { 
16590        for (Identifier e : element.getIdentifier()) 
16591          composeIdentifier("identifier", e);
16592      }
16593      if (element.hasProvidedBy()) {
16594        composeReference("providedBy", element.getProvidedBy());
16595      }
16596      if (element.hasServiceCategory()) {
16597        composeCodeableConcept("serviceCategory", element.getServiceCategory());
16598      }
16599      if (element.hasServiceType()) { 
16600        for (HealthcareService.ServiceTypeComponent e : element.getServiceType()) 
16601          composeHealthcareServiceServiceTypeComponent("serviceType", e);
16602      }
16603      if (element.hasLocation()) {
16604        composeReference("location", element.getLocation());
16605      }
16606      if (element.hasServiceNameElement()) {
16607        composeString("serviceName", element.getServiceNameElement());
16608      }
16609      if (element.hasCommentElement()) {
16610        composeString("comment", element.getCommentElement());
16611      }
16612      if (element.hasExtraDetailsElement()) {
16613        composeString("extraDetails", element.getExtraDetailsElement());
16614      }
16615      if (element.hasPhoto()) {
16616        composeAttachment("photo", element.getPhoto());
16617      }
16618      if (element.hasTelecom()) { 
16619        for (ContactPoint e : element.getTelecom()) 
16620          composeContactPoint("telecom", e);
16621      }
16622      if (element.hasCoverageArea()) { 
16623        for (Reference e : element.getCoverageArea()) 
16624          composeReference("coverageArea", e);
16625      }
16626      if (element.hasServiceProvisionCode()) { 
16627        for (CodeableConcept e : element.getServiceProvisionCode()) 
16628          composeCodeableConcept("serviceProvisionCode", e);
16629      }
16630      if (element.hasEligibility()) {
16631        composeCodeableConcept("eligibility", element.getEligibility());
16632      }
16633      if (element.hasEligibilityNoteElement()) {
16634        composeString("eligibilityNote", element.getEligibilityNoteElement());
16635      }
16636      if (element.hasProgramName()) { 
16637        for (StringType e : element.getProgramName()) 
16638          composeString("programName", e);
16639      }
16640      if (element.hasCharacteristic()) { 
16641        for (CodeableConcept e : element.getCharacteristic()) 
16642          composeCodeableConcept("characteristic", e);
16643      }
16644      if (element.hasReferralMethod()) { 
16645        for (CodeableConcept e : element.getReferralMethod()) 
16646          composeCodeableConcept("referralMethod", e);
16647      }
16648      if (element.hasPublicKeyElement()) {
16649        composeString("publicKey", element.getPublicKeyElement());
16650      }
16651      if (element.hasAppointmentRequiredElement()) {
16652        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
16653      }
16654      if (element.hasAvailableTime()) { 
16655        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
16656          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
16657      }
16658      if (element.hasNotAvailable()) { 
16659        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
16660          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
16661      }
16662      if (element.hasAvailabilityExceptionsElement()) {
16663        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
16664      }
16665      composeElementClose(element);
16666      xml.exit(FHIR_NS, name);
16667    }
16668  }
16669
16670  protected void composeHealthcareServiceServiceTypeComponent(String name, HealthcareService.ServiceTypeComponent element) throws IOException {
16671    if (element != null) {
16672      composeElementAttributes(element);
16673      xml.enter(FHIR_NS, name);
16674      composeBackboneElements(element);
16675      if (element.hasType()) {
16676        composeCodeableConcept("type", element.getType());
16677      }
16678      if (element.hasSpecialty()) { 
16679        for (CodeableConcept e : element.getSpecialty()) 
16680          composeCodeableConcept("specialty", e);
16681      }
16682      composeElementClose(element);
16683      xml.exit(FHIR_NS, name);
16684    }
16685  }
16686
16687  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
16688    if (element != null) {
16689      composeElementAttributes(element);
16690      xml.enter(FHIR_NS, name);
16691      composeBackboneElements(element);
16692        if (element.hasDaysOfWeek()) 
16693          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
16694            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
16695      if (element.hasAllDayElement()) {
16696        composeBoolean("allDay", element.getAllDayElement());
16697      }
16698      if (element.hasAvailableStartTimeElement()) {
16699        composeTime("availableStartTime", element.getAvailableStartTimeElement());
16700      }
16701      if (element.hasAvailableEndTimeElement()) {
16702        composeTime("availableEndTime", element.getAvailableEndTimeElement());
16703      }
16704      composeElementClose(element);
16705      xml.exit(FHIR_NS, name);
16706    }
16707  }
16708
16709  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
16710    if (element != null) {
16711      composeElementAttributes(element);
16712      xml.enter(FHIR_NS, name);
16713      composeBackboneElements(element);
16714      if (element.hasDescriptionElement()) {
16715        composeString("description", element.getDescriptionElement());
16716      }
16717      if (element.hasDuring()) {
16718        composePeriod("during", element.getDuring());
16719      }
16720      composeElementClose(element);
16721      xml.exit(FHIR_NS, name);
16722    }
16723  }
16724
16725  protected void composeImagingObjectSelection(String name, ImagingObjectSelection element) throws IOException {
16726    if (element != null) {
16727      composeDomainResourceAttributes(element);
16728      xml.enter(FHIR_NS, name);
16729      composeDomainResourceElements(element);
16730      if (element.hasUidElement()) {
16731        composeOid("uid", element.getUidElement());
16732      }
16733      if (element.hasPatient()) {
16734        composeReference("patient", element.getPatient());
16735      }
16736      if (element.hasTitle()) {
16737        composeCodeableConcept("title", element.getTitle());
16738      }
16739      if (element.hasDescriptionElement()) {
16740        composeString("description", element.getDescriptionElement());
16741      }
16742      if (element.hasAuthor()) {
16743        composeReference("author", element.getAuthor());
16744      }
16745      if (element.hasAuthoringTimeElement()) {
16746        composeDateTime("authoringTime", element.getAuthoringTimeElement());
16747      }
16748      if (element.hasStudy()) { 
16749        for (ImagingObjectSelection.StudyComponent e : element.getStudy()) 
16750          composeImagingObjectSelectionStudyComponent("study", e);
16751      }
16752      composeElementClose(element);
16753      xml.exit(FHIR_NS, name);
16754    }
16755  }
16756
16757  protected void composeImagingObjectSelectionStudyComponent(String name, ImagingObjectSelection.StudyComponent element) throws IOException {
16758    if (element != null) {
16759      composeElementAttributes(element);
16760      xml.enter(FHIR_NS, name);
16761      composeBackboneElements(element);
16762      if (element.hasUidElement()) {
16763        composeOid("uid", element.getUidElement());
16764      }
16765      if (element.hasUrlElement()) {
16766        composeUri("url", element.getUrlElement());
16767      }
16768      if (element.hasImagingStudy()) {
16769        composeReference("imagingStudy", element.getImagingStudy());
16770      }
16771      if (element.hasSeries()) { 
16772        for (ImagingObjectSelection.SeriesComponent e : element.getSeries()) 
16773          composeImagingObjectSelectionSeriesComponent("series", e);
16774      }
16775      composeElementClose(element);
16776      xml.exit(FHIR_NS, name);
16777    }
16778  }
16779
16780  protected void composeImagingObjectSelectionSeriesComponent(String name, ImagingObjectSelection.SeriesComponent element) throws IOException {
16781    if (element != null) {
16782      composeElementAttributes(element);
16783      xml.enter(FHIR_NS, name);
16784      composeBackboneElements(element);
16785      if (element.hasUidElement()) {
16786        composeOid("uid", element.getUidElement());
16787      }
16788      if (element.hasUrlElement()) {
16789        composeUri("url", element.getUrlElement());
16790      }
16791      if (element.hasInstance()) { 
16792        for (ImagingObjectSelection.InstanceComponent e : element.getInstance()) 
16793          composeImagingObjectSelectionInstanceComponent("instance", e);
16794      }
16795      composeElementClose(element);
16796      xml.exit(FHIR_NS, name);
16797    }
16798  }
16799
16800  protected void composeImagingObjectSelectionInstanceComponent(String name, ImagingObjectSelection.InstanceComponent element) throws IOException {
16801    if (element != null) {
16802      composeElementAttributes(element);
16803      xml.enter(FHIR_NS, name);
16804      composeBackboneElements(element);
16805      if (element.hasSopClassElement()) {
16806        composeOid("sopClass", element.getSopClassElement());
16807      }
16808      if (element.hasUidElement()) {
16809        composeOid("uid", element.getUidElement());
16810      }
16811      if (element.hasUrlElement()) {
16812        composeUri("url", element.getUrlElement());
16813      }
16814      if (element.hasFrames()) { 
16815        for (ImagingObjectSelection.FramesComponent e : element.getFrames()) 
16816          composeImagingObjectSelectionFramesComponent("frames", e);
16817      }
16818      composeElementClose(element);
16819      xml.exit(FHIR_NS, name);
16820    }
16821  }
16822
16823  protected void composeImagingObjectSelectionFramesComponent(String name, ImagingObjectSelection.FramesComponent element) throws IOException {
16824    if (element != null) {
16825      composeElementAttributes(element);
16826      xml.enter(FHIR_NS, name);
16827      composeBackboneElements(element);
16828      if (element.hasFrameNumbers()) { 
16829        for (UnsignedIntType e : element.getFrameNumbers()) 
16830          composeUnsignedInt("frameNumbers", e);
16831      }
16832      if (element.hasUrlElement()) {
16833        composeUri("url", element.getUrlElement());
16834      }
16835      composeElementClose(element);
16836      xml.exit(FHIR_NS, name);
16837    }
16838  }
16839
16840  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
16841    if (element != null) {
16842      composeDomainResourceAttributes(element);
16843      xml.enter(FHIR_NS, name);
16844      composeDomainResourceElements(element);
16845      if (element.hasStartedElement()) {
16846        composeDateTime("started", element.getStartedElement());
16847      }
16848      if (element.hasPatient()) {
16849        composeReference("patient", element.getPatient());
16850      }
16851      if (element.hasUidElement()) {
16852        composeOid("uid", element.getUidElement());
16853      }
16854      if (element.hasAccession()) {
16855        composeIdentifier("accession", element.getAccession());
16856      }
16857      if (element.hasIdentifier()) { 
16858        for (Identifier e : element.getIdentifier()) 
16859          composeIdentifier("identifier", e);
16860      }
16861      if (element.hasOrder()) { 
16862        for (Reference e : element.getOrder()) 
16863          composeReference("order", e);
16864      }
16865      if (element.hasModalityList()) { 
16866        for (Coding e : element.getModalityList()) 
16867          composeCoding("modalityList", e);
16868      }
16869      if (element.hasReferrer()) {
16870        composeReference("referrer", element.getReferrer());
16871      }
16872      if (element.hasAvailabilityElement())
16873        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
16874      if (element.hasUrlElement()) {
16875        composeUri("url", element.getUrlElement());
16876      }
16877      if (element.hasNumberOfSeriesElement()) {
16878        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
16879      }
16880      if (element.hasNumberOfInstancesElement()) {
16881        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
16882      }
16883      if (element.hasProcedure()) { 
16884        for (Reference e : element.getProcedure()) 
16885          composeReference("procedure", e);
16886      }
16887      if (element.hasInterpreter()) {
16888        composeReference("interpreter", element.getInterpreter());
16889      }
16890      if (element.hasDescriptionElement()) {
16891        composeString("description", element.getDescriptionElement());
16892      }
16893      if (element.hasSeries()) { 
16894        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
16895          composeImagingStudyImagingStudySeriesComponent("series", e);
16896      }
16897      composeElementClose(element);
16898      xml.exit(FHIR_NS, name);
16899    }
16900  }
16901
16902  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
16903    if (element != null) {
16904      composeElementAttributes(element);
16905      xml.enter(FHIR_NS, name);
16906      composeBackboneElements(element);
16907      if (element.hasNumberElement()) {
16908        composeUnsignedInt("number", element.getNumberElement());
16909      }
16910      if (element.hasModality()) {
16911        composeCoding("modality", element.getModality());
16912      }
16913      if (element.hasUidElement()) {
16914        composeOid("uid", element.getUidElement());
16915      }
16916      if (element.hasDescriptionElement()) {
16917        composeString("description", element.getDescriptionElement());
16918      }
16919      if (element.hasNumberOfInstancesElement()) {
16920        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
16921      }
16922      if (element.hasAvailabilityElement())
16923        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
16924      if (element.hasUrlElement()) {
16925        composeUri("url", element.getUrlElement());
16926      }
16927      if (element.hasBodySite()) {
16928        composeCoding("bodySite", element.getBodySite());
16929      }
16930      if (element.hasLaterality()) {
16931        composeCoding("laterality", element.getLaterality());
16932      }
16933      if (element.hasStartedElement()) {
16934        composeDateTime("started", element.getStartedElement());
16935      }
16936      if (element.hasInstance()) { 
16937        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
16938          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
16939      }
16940      composeElementClose(element);
16941      xml.exit(FHIR_NS, name);
16942    }
16943  }
16944
16945  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
16946    if (element != null) {
16947      composeElementAttributes(element);
16948      xml.enter(FHIR_NS, name);
16949      composeBackboneElements(element);
16950      if (element.hasNumberElement()) {
16951        composeUnsignedInt("number", element.getNumberElement());
16952      }
16953      if (element.hasUidElement()) {
16954        composeOid("uid", element.getUidElement());
16955      }
16956      if (element.hasSopClassElement()) {
16957        composeOid("sopClass", element.getSopClassElement());
16958      }
16959      if (element.hasTypeElement()) {
16960        composeString("type", element.getTypeElement());
16961      }
16962      if (element.hasTitleElement()) {
16963        composeString("title", element.getTitleElement());
16964      }
16965      if (element.hasContent()) { 
16966        for (Attachment e : element.getContent()) 
16967          composeAttachment("content", e);
16968      }
16969      composeElementClose(element);
16970      xml.exit(FHIR_NS, name);
16971    }
16972  }
16973
16974  protected void composeImmunization(String name, Immunization element) throws IOException {
16975    if (element != null) {
16976      composeDomainResourceAttributes(element);
16977      xml.enter(FHIR_NS, name);
16978      composeDomainResourceElements(element);
16979      if (element.hasIdentifier()) { 
16980        for (Identifier e : element.getIdentifier()) 
16981          composeIdentifier("identifier", e);
16982      }
16983      if (element.hasStatusElement()) {
16984        composeCode("status", element.getStatusElement());
16985      }
16986      if (element.hasDateElement()) {
16987        composeDateTime("date", element.getDateElement());
16988      }
16989      if (element.hasVaccineCode()) {
16990        composeCodeableConcept("vaccineCode", element.getVaccineCode());
16991      }
16992      if (element.hasPatient()) {
16993        composeReference("patient", element.getPatient());
16994      }
16995      if (element.hasWasNotGivenElement()) {
16996        composeBoolean("wasNotGiven", element.getWasNotGivenElement());
16997      }
16998      if (element.hasReportedElement()) {
16999        composeBoolean("reported", element.getReportedElement());
17000      }
17001      if (element.hasPerformer()) {
17002        composeReference("performer", element.getPerformer());
17003      }
17004      if (element.hasRequester()) {
17005        composeReference("requester", element.getRequester());
17006      }
17007      if (element.hasEncounter()) {
17008        composeReference("encounter", element.getEncounter());
17009      }
17010      if (element.hasManufacturer()) {
17011        composeReference("manufacturer", element.getManufacturer());
17012      }
17013      if (element.hasLocation()) {
17014        composeReference("location", element.getLocation());
17015      }
17016      if (element.hasLotNumberElement()) {
17017        composeString("lotNumber", element.getLotNumberElement());
17018      }
17019      if (element.hasExpirationDateElement()) {
17020        composeDate("expirationDate", element.getExpirationDateElement());
17021      }
17022      if (element.hasSite()) {
17023        composeCodeableConcept("site", element.getSite());
17024      }
17025      if (element.hasRoute()) {
17026        composeCodeableConcept("route", element.getRoute());
17027      }
17028      if (element.hasDoseQuantity()) {
17029        composeSimpleQuantity("doseQuantity", element.getDoseQuantity());
17030      }
17031      if (element.hasNote()) { 
17032        for (Annotation e : element.getNote()) 
17033          composeAnnotation("note", e);
17034      }
17035      if (element.hasExplanation()) {
17036        composeImmunizationImmunizationExplanationComponent("explanation", element.getExplanation());
17037      }
17038      if (element.hasReaction()) { 
17039        for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
17040          composeImmunizationImmunizationReactionComponent("reaction", e);
17041      }
17042      if (element.hasVaccinationProtocol()) { 
17043        for (Immunization.ImmunizationVaccinationProtocolComponent e : element.getVaccinationProtocol()) 
17044          composeImmunizationImmunizationVaccinationProtocolComponent("vaccinationProtocol", e);
17045      }
17046      composeElementClose(element);
17047      xml.exit(FHIR_NS, name);
17048    }
17049  }
17050
17051  protected void composeImmunizationImmunizationExplanationComponent(String name, Immunization.ImmunizationExplanationComponent element) throws IOException {
17052    if (element != null) {
17053      composeElementAttributes(element);
17054      xml.enter(FHIR_NS, name);
17055      composeBackboneElements(element);
17056      if (element.hasReason()) { 
17057        for (CodeableConcept e : element.getReason()) 
17058          composeCodeableConcept("reason", e);
17059      }
17060      if (element.hasReasonNotGiven()) { 
17061        for (CodeableConcept e : element.getReasonNotGiven()) 
17062          composeCodeableConcept("reasonNotGiven", e);
17063      }
17064      composeElementClose(element);
17065      xml.exit(FHIR_NS, name);
17066    }
17067  }
17068
17069  protected void composeImmunizationImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
17070    if (element != null) {
17071      composeElementAttributes(element);
17072      xml.enter(FHIR_NS, name);
17073      composeBackboneElements(element);
17074      if (element.hasDateElement()) {
17075        composeDateTime("date", element.getDateElement());
17076      }
17077      if (element.hasDetail()) {
17078        composeReference("detail", element.getDetail());
17079      }
17080      if (element.hasReportedElement()) {
17081        composeBoolean("reported", element.getReportedElement());
17082      }
17083      composeElementClose(element);
17084      xml.exit(FHIR_NS, name);
17085    }
17086  }
17087
17088  protected void composeImmunizationImmunizationVaccinationProtocolComponent(String name, Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
17089    if (element != null) {
17090      composeElementAttributes(element);
17091      xml.enter(FHIR_NS, name);
17092      composeBackboneElements(element);
17093      if (element.hasDoseSequenceElement()) {
17094        composePositiveInt("doseSequence", element.getDoseSequenceElement());
17095      }
17096      if (element.hasDescriptionElement()) {
17097        composeString("description", element.getDescriptionElement());
17098      }
17099      if (element.hasAuthority()) {
17100        composeReference("authority", element.getAuthority());
17101      }
17102      if (element.hasSeriesElement()) {
17103        composeString("series", element.getSeriesElement());
17104      }
17105      if (element.hasSeriesDosesElement()) {
17106        composePositiveInt("seriesDoses", element.getSeriesDosesElement());
17107      }
17108      if (element.hasTargetDisease()) { 
17109        for (CodeableConcept e : element.getTargetDisease()) 
17110          composeCodeableConcept("targetDisease", e);
17111      }
17112      if (element.hasDoseStatus()) {
17113        composeCodeableConcept("doseStatus", element.getDoseStatus());
17114      }
17115      if (element.hasDoseStatusReason()) {
17116        composeCodeableConcept("doseStatusReason", element.getDoseStatusReason());
17117      }
17118      composeElementClose(element);
17119      xml.exit(FHIR_NS, name);
17120    }
17121  }
17122
17123  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
17124    if (element != null) {
17125      composeDomainResourceAttributes(element);
17126      xml.enter(FHIR_NS, name);
17127      composeDomainResourceElements(element);
17128      if (element.hasIdentifier()) { 
17129        for (Identifier e : element.getIdentifier()) 
17130          composeIdentifier("identifier", e);
17131      }
17132      if (element.hasPatient()) {
17133        composeReference("patient", element.getPatient());
17134      }
17135      if (element.hasRecommendation()) { 
17136        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
17137          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
17138      }
17139      composeElementClose(element);
17140      xml.exit(FHIR_NS, name);
17141    }
17142  }
17143
17144  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
17145    if (element != null) {
17146      composeElementAttributes(element);
17147      xml.enter(FHIR_NS, name);
17148      composeBackboneElements(element);
17149      if (element.hasDateElement()) {
17150        composeDateTime("date", element.getDateElement());
17151      }
17152      if (element.hasVaccineCode()) {
17153        composeCodeableConcept("vaccineCode", element.getVaccineCode());
17154      }
17155      if (element.hasDoseNumberElement()) {
17156        composePositiveInt("doseNumber", element.getDoseNumberElement());
17157      }
17158      if (element.hasForecastStatus()) {
17159        composeCodeableConcept("forecastStatus", element.getForecastStatus());
17160      }
17161      if (element.hasDateCriterion()) { 
17162        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
17163          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
17164      }
17165      if (element.hasProtocol()) {
17166        composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent("protocol", element.getProtocol());
17167      }
17168      if (element.hasSupportingImmunization()) { 
17169        for (Reference e : element.getSupportingImmunization()) 
17170          composeReference("supportingImmunization", e);
17171      }
17172      if (element.hasSupportingPatientInformation()) { 
17173        for (Reference e : element.getSupportingPatientInformation()) 
17174          composeReference("supportingPatientInformation", e);
17175      }
17176      composeElementClose(element);
17177      xml.exit(FHIR_NS, name);
17178    }
17179  }
17180
17181  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
17182    if (element != null) {
17183      composeElementAttributes(element);
17184      xml.enter(FHIR_NS, name);
17185      composeBackboneElements(element);
17186      if (element.hasCode()) {
17187        composeCodeableConcept("code", element.getCode());
17188      }
17189      if (element.hasValueElement()) {
17190        composeDateTime("value", element.getValueElement());
17191      }
17192      composeElementClose(element);
17193      xml.exit(FHIR_NS, name);
17194    }
17195  }
17196
17197  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
17198    if (element != null) {
17199      composeElementAttributes(element);
17200      xml.enter(FHIR_NS, name);
17201      composeBackboneElements(element);
17202      if (element.hasDoseSequenceElement()) {
17203        composeInteger("doseSequence", element.getDoseSequenceElement());
17204      }
17205      if (element.hasDescriptionElement()) {
17206        composeString("description", element.getDescriptionElement());
17207      }
17208      if (element.hasAuthority()) {
17209        composeReference("authority", element.getAuthority());
17210      }
17211      if (element.hasSeriesElement()) {
17212        composeString("series", element.getSeriesElement());
17213      }
17214      composeElementClose(element);
17215      xml.exit(FHIR_NS, name);
17216    }
17217  }
17218
17219  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
17220    if (element != null) {
17221      composeDomainResourceAttributes(element);
17222      xml.enter(FHIR_NS, name);
17223      composeDomainResourceElements(element);
17224      if (element.hasUrlElement()) {
17225        composeUri("url", element.getUrlElement());
17226      }
17227      if (element.hasVersionElement()) {
17228        composeString("version", element.getVersionElement());
17229      }
17230      if (element.hasNameElement()) {
17231        composeString("name", element.getNameElement());
17232      }
17233      if (element.hasStatusElement())
17234        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
17235      if (element.hasExperimentalElement()) {
17236        composeBoolean("experimental", element.getExperimentalElement());
17237      }
17238      if (element.hasPublisherElement()) {
17239        composeString("publisher", element.getPublisherElement());
17240      }
17241      if (element.hasContact()) { 
17242        for (ImplementationGuide.ImplementationGuideContactComponent e : element.getContact()) 
17243          composeImplementationGuideImplementationGuideContactComponent("contact", e);
17244      }
17245      if (element.hasDateElement()) {
17246        composeDateTime("date", element.getDateElement());
17247      }
17248      if (element.hasDescriptionElement()) {
17249        composeString("description", element.getDescriptionElement());
17250      }
17251      if (element.hasUseContext()) { 
17252        for (CodeableConcept e : element.getUseContext()) 
17253          composeCodeableConcept("useContext", e);
17254      }
17255      if (element.hasCopyrightElement()) {
17256        composeString("copyright", element.getCopyrightElement());
17257      }
17258      if (element.hasFhirVersionElement()) {
17259        composeId("fhirVersion", element.getFhirVersionElement());
17260      }
17261      if (element.hasDependency()) { 
17262        for (ImplementationGuide.ImplementationGuideDependencyComponent e : element.getDependency()) 
17263          composeImplementationGuideImplementationGuideDependencyComponent("dependency", e);
17264      }
17265      if (element.hasPackage()) { 
17266        for (ImplementationGuide.ImplementationGuidePackageComponent e : element.getPackage()) 
17267          composeImplementationGuideImplementationGuidePackageComponent("package", e);
17268      }
17269      if (element.hasGlobal()) { 
17270        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
17271          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
17272      }
17273      if (element.hasBinary()) { 
17274        for (UriType e : element.getBinary()) 
17275          composeUri("binary", e);
17276      }
17277      if (element.hasPage()) {
17278        composeImplementationGuideImplementationGuidePageComponent("page", element.getPage());
17279      }
17280      composeElementClose(element);
17281      xml.exit(FHIR_NS, name);
17282    }
17283  }
17284
17285  protected void composeImplementationGuideImplementationGuideContactComponent(String name, ImplementationGuide.ImplementationGuideContactComponent element) throws IOException {
17286    if (element != null) {
17287      composeElementAttributes(element);
17288      xml.enter(FHIR_NS, name);
17289      composeBackboneElements(element);
17290      if (element.hasNameElement()) {
17291        composeString("name", element.getNameElement());
17292      }
17293      if (element.hasTelecom()) { 
17294        for (ContactPoint e : element.getTelecom()) 
17295          composeContactPoint("telecom", e);
17296      }
17297      composeElementClose(element);
17298      xml.exit(FHIR_NS, name);
17299    }
17300  }
17301
17302  protected void composeImplementationGuideImplementationGuideDependencyComponent(String name, ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
17303    if (element != null) {
17304      composeElementAttributes(element);
17305      xml.enter(FHIR_NS, name);
17306      composeBackboneElements(element);
17307      if (element.hasTypeElement())
17308        composeEnumeration("type", element.getTypeElement(), new ImplementationGuide.GuideDependencyTypeEnumFactory());
17309      if (element.hasUriElement()) {
17310        composeUri("uri", element.getUriElement());
17311      }
17312      composeElementClose(element);
17313      xml.exit(FHIR_NS, name);
17314    }
17315  }
17316
17317  protected void composeImplementationGuideImplementationGuidePackageComponent(String name, ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
17318    if (element != null) {
17319      composeElementAttributes(element);
17320      xml.enter(FHIR_NS, name);
17321      composeBackboneElements(element);
17322      if (element.hasNameElement()) {
17323        composeString("name", element.getNameElement());
17324      }
17325      if (element.hasDescriptionElement()) {
17326        composeString("description", element.getDescriptionElement());
17327      }
17328      if (element.hasResource()) { 
17329        for (ImplementationGuide.ImplementationGuidePackageResourceComponent e : element.getResource()) 
17330          composeImplementationGuideImplementationGuidePackageResourceComponent("resource", e);
17331      }
17332      composeElementClose(element);
17333      xml.exit(FHIR_NS, name);
17334    }
17335  }
17336
17337  protected void composeImplementationGuideImplementationGuidePackageResourceComponent(String name, ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
17338    if (element != null) {
17339      composeElementAttributes(element);
17340      xml.enter(FHIR_NS, name);
17341      composeBackboneElements(element);
17342      if (element.hasPurposeElement())
17343        composeEnumeration("purpose", element.getPurposeElement(), new ImplementationGuide.GuideResourcePurposeEnumFactory());
17344      if (element.hasNameElement()) {
17345        composeString("name", element.getNameElement());
17346      }
17347      if (element.hasDescriptionElement()) {
17348        composeString("description", element.getDescriptionElement());
17349      }
17350      if (element.hasAcronymElement()) {
17351        composeString("acronym", element.getAcronymElement());
17352      }
17353      if (element.hasSource()) {
17354        composeType("source", element.getSource());
17355      }      if (element.hasExampleFor()) {
17356        composeReference("exampleFor", element.getExampleFor());
17357      }
17358      composeElementClose(element);
17359      xml.exit(FHIR_NS, name);
17360    }
17361  }
17362
17363  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
17364    if (element != null) {
17365      composeElementAttributes(element);
17366      xml.enter(FHIR_NS, name);
17367      composeBackboneElements(element);
17368      if (element.hasTypeElement()) {
17369        composeCode("type", element.getTypeElement());
17370      }
17371      if (element.hasProfile()) {
17372        composeReference("profile", element.getProfile());
17373      }
17374      composeElementClose(element);
17375      xml.exit(FHIR_NS, name);
17376    }
17377  }
17378
17379  protected void composeImplementationGuideImplementationGuidePageComponent(String name, ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
17380    if (element != null) {
17381      composeElementAttributes(element);
17382      xml.enter(FHIR_NS, name);
17383      composeBackboneElements(element);
17384      if (element.hasSourceElement()) {
17385        composeUri("source", element.getSourceElement());
17386      }
17387      if (element.hasNameElement()) {
17388        composeString("name", element.getNameElement());
17389      }
17390      if (element.hasKindElement())
17391        composeEnumeration("kind", element.getKindElement(), new ImplementationGuide.GuidePageKindEnumFactory());
17392      if (element.hasType()) { 
17393        for (CodeType e : element.getType()) 
17394          composeCode("type", e);
17395      }
17396      if (element.hasPackage()) { 
17397        for (StringType e : element.getPackage()) 
17398          composeString("package", e);
17399      }
17400      if (element.hasFormatElement()) {
17401        composeCode("format", element.getFormatElement());
17402      }
17403      if (element.hasPage()) { 
17404        for (ImplementationGuide.ImplementationGuidePageComponent e : element.getPage()) 
17405          composeImplementationGuideImplementationGuidePageComponent("page", e);
17406      }
17407      composeElementClose(element);
17408      xml.exit(FHIR_NS, name);
17409    }
17410  }
17411
17412  protected void composeList_(String name, List_ element) throws IOException {
17413    if (element != null) {
17414      composeDomainResourceAttributes(element);
17415      xml.enter(FHIR_NS, name);
17416      composeDomainResourceElements(element);
17417      if (element.hasIdentifier()) { 
17418        for (Identifier e : element.getIdentifier()) 
17419          composeIdentifier("identifier", e);
17420      }
17421      if (element.hasTitleElement()) {
17422        composeString("title", element.getTitleElement());
17423      }
17424      if (element.hasCode()) {
17425        composeCodeableConcept("code", element.getCode());
17426      }
17427      if (element.hasSubject()) {
17428        composeReference("subject", element.getSubject());
17429      }
17430      if (element.hasSource()) {
17431        composeReference("source", element.getSource());
17432      }
17433      if (element.hasEncounter()) {
17434        composeReference("encounter", element.getEncounter());
17435      }
17436      if (element.hasStatusElement())
17437        composeEnumeration("status", element.getStatusElement(), new List_.ListStatusEnumFactory());
17438      if (element.hasDateElement()) {
17439        composeDateTime("date", element.getDateElement());
17440      }
17441      if (element.hasOrderedBy()) {
17442        composeCodeableConcept("orderedBy", element.getOrderedBy());
17443      }
17444      if (element.hasModeElement())
17445        composeEnumeration("mode", element.getModeElement(), new List_.ListModeEnumFactory());
17446      if (element.hasNoteElement()) {
17447        composeString("note", element.getNoteElement());
17448      }
17449      if (element.hasEntry()) { 
17450        for (List_.ListEntryComponent e : element.getEntry()) 
17451          composeList_ListEntryComponent("entry", e);
17452      }
17453      if (element.hasEmptyReason()) {
17454        composeCodeableConcept("emptyReason", element.getEmptyReason());
17455      }
17456      composeElementClose(element);
17457      xml.exit(FHIR_NS, name);
17458    }
17459  }
17460
17461  protected void composeList_ListEntryComponent(String name, List_.ListEntryComponent element) throws IOException {
17462    if (element != null) {
17463      composeElementAttributes(element);
17464      xml.enter(FHIR_NS, name);
17465      composeBackboneElements(element);
17466      if (element.hasFlag()) {
17467        composeCodeableConcept("flag", element.getFlag());
17468      }
17469      if (element.hasDeletedElement()) {
17470        composeBoolean("deleted", element.getDeletedElement());
17471      }
17472      if (element.hasDateElement()) {
17473        composeDateTime("date", element.getDateElement());
17474      }
17475      if (element.hasItem()) {
17476        composeReference("item", element.getItem());
17477      }
17478      composeElementClose(element);
17479      xml.exit(FHIR_NS, name);
17480    }
17481  }
17482
17483  protected void composeLocation(String name, Location element) throws IOException {
17484    if (element != null) {
17485      composeDomainResourceAttributes(element);
17486      xml.enter(FHIR_NS, name);
17487      composeDomainResourceElements(element);
17488      if (element.hasIdentifier()) { 
17489        for (Identifier e : element.getIdentifier()) 
17490          composeIdentifier("identifier", e);
17491      }
17492      if (element.hasStatusElement())
17493        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
17494      if (element.hasNameElement()) {
17495        composeString("name", element.getNameElement());
17496      }
17497      if (element.hasDescriptionElement()) {
17498        composeString("description", element.getDescriptionElement());
17499      }
17500      if (element.hasModeElement())
17501        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
17502      if (element.hasType()) {
17503        composeCodeableConcept("type", element.getType());
17504      }
17505      if (element.hasTelecom()) { 
17506        for (ContactPoint e : element.getTelecom()) 
17507          composeContactPoint("telecom", e);
17508      }
17509      if (element.hasAddress()) {
17510        composeAddress("address", element.getAddress());
17511      }
17512      if (element.hasPhysicalType()) {
17513        composeCodeableConcept("physicalType", element.getPhysicalType());
17514      }
17515      if (element.hasPosition()) {
17516        composeLocationLocationPositionComponent("position", element.getPosition());
17517      }
17518      if (element.hasManagingOrganization()) {
17519        composeReference("managingOrganization", element.getManagingOrganization());
17520      }
17521      if (element.hasPartOf()) {
17522        composeReference("partOf", element.getPartOf());
17523      }
17524      composeElementClose(element);
17525      xml.exit(FHIR_NS, name);
17526    }
17527  }
17528
17529  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
17530    if (element != null) {
17531      composeElementAttributes(element);
17532      xml.enter(FHIR_NS, name);
17533      composeBackboneElements(element);
17534      if (element.hasLongitudeElement()) {
17535        composeDecimal("longitude", element.getLongitudeElement());
17536      }
17537      if (element.hasLatitudeElement()) {
17538        composeDecimal("latitude", element.getLatitudeElement());
17539      }
17540      if (element.hasAltitudeElement()) {
17541        composeDecimal("altitude", element.getAltitudeElement());
17542      }
17543      composeElementClose(element);
17544      xml.exit(FHIR_NS, name);
17545    }
17546  }
17547
17548  protected void composeMedia(String name, Media element) throws IOException {
17549    if (element != null) {
17550      composeDomainResourceAttributes(element);
17551      xml.enter(FHIR_NS, name);
17552      composeDomainResourceElements(element);
17553      if (element.hasTypeElement())
17554        composeEnumeration("type", element.getTypeElement(), new Media.DigitalMediaTypeEnumFactory());
17555      if (element.hasSubtype()) {
17556        composeCodeableConcept("subtype", element.getSubtype());
17557      }
17558      if (element.hasIdentifier()) { 
17559        for (Identifier e : element.getIdentifier()) 
17560          composeIdentifier("identifier", e);
17561      }
17562      if (element.hasSubject()) {
17563        composeReference("subject", element.getSubject());
17564      }
17565      if (element.hasOperator()) {
17566        composeReference("operator", element.getOperator());
17567      }
17568      if (element.hasView()) {
17569        composeCodeableConcept("view", element.getView());
17570      }
17571      if (element.hasDeviceNameElement()) {
17572        composeString("deviceName", element.getDeviceNameElement());
17573      }
17574      if (element.hasHeightElement()) {
17575        composePositiveInt("height", element.getHeightElement());
17576      }
17577      if (element.hasWidthElement()) {
17578        composePositiveInt("width", element.getWidthElement());
17579      }
17580      if (element.hasFramesElement()) {
17581        composePositiveInt("frames", element.getFramesElement());
17582      }
17583      if (element.hasDurationElement()) {
17584        composeUnsignedInt("duration", element.getDurationElement());
17585      }
17586      if (element.hasContent()) {
17587        composeAttachment("content", element.getContent());
17588      }
17589      composeElementClose(element);
17590      xml.exit(FHIR_NS, name);
17591    }
17592  }
17593
17594  protected void composeMedication(String name, Medication element) throws IOException {
17595    if (element != null) {
17596      composeDomainResourceAttributes(element);
17597      xml.enter(FHIR_NS, name);
17598      composeDomainResourceElements(element);
17599      if (element.hasCode()) {
17600        composeCodeableConcept("code", element.getCode());
17601      }
17602      if (element.hasIsBrandElement()) {
17603        composeBoolean("isBrand", element.getIsBrandElement());
17604      }
17605      if (element.hasManufacturer()) {
17606        composeReference("manufacturer", element.getManufacturer());
17607      }
17608      if (element.hasProduct()) {
17609        composeMedicationMedicationProductComponent("product", element.getProduct());
17610      }
17611      if (element.hasPackage()) {
17612        composeMedicationMedicationPackageComponent("package", element.getPackage());
17613      }
17614      composeElementClose(element);
17615      xml.exit(FHIR_NS, name);
17616    }
17617  }
17618
17619  protected void composeMedicationMedicationProductComponent(String name, Medication.MedicationProductComponent element) throws IOException {
17620    if (element != null) {
17621      composeElementAttributes(element);
17622      xml.enter(FHIR_NS, name);
17623      composeBackboneElements(element);
17624      if (element.hasForm()) {
17625        composeCodeableConcept("form", element.getForm());
17626      }
17627      if (element.hasIngredient()) { 
17628        for (Medication.MedicationProductIngredientComponent e : element.getIngredient()) 
17629          composeMedicationMedicationProductIngredientComponent("ingredient", e);
17630      }
17631      if (element.hasBatch()) { 
17632        for (Medication.MedicationProductBatchComponent e : element.getBatch()) 
17633          composeMedicationMedicationProductBatchComponent("batch", e);
17634      }
17635      composeElementClose(element);
17636      xml.exit(FHIR_NS, name);
17637    }
17638  }
17639
17640  protected void composeMedicationMedicationProductIngredientComponent(String name, Medication.MedicationProductIngredientComponent element) throws IOException {
17641    if (element != null) {
17642      composeElementAttributes(element);
17643      xml.enter(FHIR_NS, name);
17644      composeBackboneElements(element);
17645      if (element.hasItem()) {
17646        composeReference("item", element.getItem());
17647      }
17648      if (element.hasAmount()) {
17649        composeRatio("amount", element.getAmount());
17650      }
17651      composeElementClose(element);
17652      xml.exit(FHIR_NS, name);
17653    }
17654  }
17655
17656  protected void composeMedicationMedicationProductBatchComponent(String name, Medication.MedicationProductBatchComponent element) throws IOException {
17657    if (element != null) {
17658      composeElementAttributes(element);
17659      xml.enter(FHIR_NS, name);
17660      composeBackboneElements(element);
17661      if (element.hasLotNumberElement()) {
17662        composeString("lotNumber", element.getLotNumberElement());
17663      }
17664      if (element.hasExpirationDateElement()) {
17665        composeDateTime("expirationDate", element.getExpirationDateElement());
17666      }
17667      composeElementClose(element);
17668      xml.exit(FHIR_NS, name);
17669    }
17670  }
17671
17672  protected void composeMedicationMedicationPackageComponent(String name, Medication.MedicationPackageComponent element) throws IOException {
17673    if (element != null) {
17674      composeElementAttributes(element);
17675      xml.enter(FHIR_NS, name);
17676      composeBackboneElements(element);
17677      if (element.hasContainer()) {
17678        composeCodeableConcept("container", element.getContainer());
17679      }
17680      if (element.hasContent()) { 
17681        for (Medication.MedicationPackageContentComponent e : element.getContent()) 
17682          composeMedicationMedicationPackageContentComponent("content", e);
17683      }
17684      composeElementClose(element);
17685      xml.exit(FHIR_NS, name);
17686    }
17687  }
17688
17689  protected void composeMedicationMedicationPackageContentComponent(String name, Medication.MedicationPackageContentComponent element) throws IOException {
17690    if (element != null) {
17691      composeElementAttributes(element);
17692      xml.enter(FHIR_NS, name);
17693      composeBackboneElements(element);
17694      if (element.hasItem()) {
17695        composeReference("item", element.getItem());
17696      }
17697      if (element.hasAmount()) {
17698        composeSimpleQuantity("amount", element.getAmount());
17699      }
17700      composeElementClose(element);
17701      xml.exit(FHIR_NS, name);
17702    }
17703  }
17704
17705  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
17706    if (element != null) {
17707      composeDomainResourceAttributes(element);
17708      xml.enter(FHIR_NS, name);
17709      composeDomainResourceElements(element);
17710      if (element.hasIdentifier()) { 
17711        for (Identifier e : element.getIdentifier()) 
17712          composeIdentifier("identifier", e);
17713      }
17714      if (element.hasStatusElement())
17715        composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
17716      if (element.hasPatient()) {
17717        composeReference("patient", element.getPatient());
17718      }
17719      if (element.hasPractitioner()) {
17720        composeReference("practitioner", element.getPractitioner());
17721      }
17722      if (element.hasEncounter()) {
17723        composeReference("encounter", element.getEncounter());
17724      }
17725      if (element.hasPrescription()) {
17726        composeReference("prescription", element.getPrescription());
17727      }
17728      if (element.hasWasNotGivenElement()) {
17729        composeBoolean("wasNotGiven", element.getWasNotGivenElement());
17730      }
17731      if (element.hasReasonNotGiven()) { 
17732        for (CodeableConcept e : element.getReasonNotGiven()) 
17733          composeCodeableConcept("reasonNotGiven", e);
17734      }
17735      if (element.hasReasonGiven()) { 
17736        for (CodeableConcept e : element.getReasonGiven()) 
17737          composeCodeableConcept("reasonGiven", e);
17738      }
17739      if (element.hasEffectiveTime()) {
17740        composeType("effectiveTime", element.getEffectiveTime());
17741      }      if (element.hasMedication()) {
17742        composeType("medication", element.getMedication());
17743      }      if (element.hasDevice()) { 
17744        for (Reference e : element.getDevice()) 
17745          composeReference("device", e);
17746      }
17747      if (element.hasNoteElement()) {
17748        composeString("note", element.getNoteElement());
17749      }
17750      if (element.hasDosage()) {
17751        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
17752      }
17753      composeElementClose(element);
17754      xml.exit(FHIR_NS, name);
17755    }
17756  }
17757
17758  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
17759    if (element != null) {
17760      composeElementAttributes(element);
17761      xml.enter(FHIR_NS, name);
17762      composeBackboneElements(element);
17763      if (element.hasTextElement()) {
17764        composeString("text", element.getTextElement());
17765      }
17766      if (element.hasSite()) {
17767        composeType("site", element.getSite());
17768      }      if (element.hasRoute()) {
17769        composeCodeableConcept("route", element.getRoute());
17770      }
17771      if (element.hasMethod()) {
17772        composeCodeableConcept("method", element.getMethod());
17773      }
17774      if (element.hasQuantity()) {
17775        composeSimpleQuantity("quantity", element.getQuantity());
17776      }
17777      if (element.hasRate()) {
17778        composeType("rate", element.getRate());
17779      }      composeElementClose(element);
17780      xml.exit(FHIR_NS, name);
17781    }
17782  }
17783
17784  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
17785    if (element != null) {
17786      composeDomainResourceAttributes(element);
17787      xml.enter(FHIR_NS, name);
17788      composeDomainResourceElements(element);
17789      if (element.hasIdentifier()) {
17790        composeIdentifier("identifier", element.getIdentifier());
17791      }
17792      if (element.hasStatusElement())
17793        composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusEnumFactory());
17794      if (element.hasPatient()) {
17795        composeReference("patient", element.getPatient());
17796      }
17797      if (element.hasDispenser()) {
17798        composeReference("dispenser", element.getDispenser());
17799      }
17800      if (element.hasAuthorizingPrescription()) { 
17801        for (Reference e : element.getAuthorizingPrescription()) 
17802          composeReference("authorizingPrescription", e);
17803      }
17804      if (element.hasType()) {
17805        composeCodeableConcept("type", element.getType());
17806      }
17807      if (element.hasQuantity()) {
17808        composeSimpleQuantity("quantity", element.getQuantity());
17809      }
17810      if (element.hasDaysSupply()) {
17811        composeSimpleQuantity("daysSupply", element.getDaysSupply());
17812      }
17813      if (element.hasMedication()) {
17814        composeType("medication", element.getMedication());
17815      }      if (element.hasWhenPreparedElement()) {
17816        composeDateTime("whenPrepared", element.getWhenPreparedElement());
17817      }
17818      if (element.hasWhenHandedOverElement()) {
17819        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
17820      }
17821      if (element.hasDestination()) {
17822        composeReference("destination", element.getDestination());
17823      }
17824      if (element.hasReceiver()) { 
17825        for (Reference e : element.getReceiver()) 
17826          composeReference("receiver", e);
17827      }
17828      if (element.hasNoteElement()) {
17829        composeString("note", element.getNoteElement());
17830      }
17831      if (element.hasDosageInstruction()) { 
17832        for (MedicationDispense.MedicationDispenseDosageInstructionComponent e : element.getDosageInstruction()) 
17833          composeMedicationDispenseMedicationDispenseDosageInstructionComponent("dosageInstruction", e);
17834      }
17835      if (element.hasSubstitution()) {
17836        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
17837      }
17838      composeElementClose(element);
17839      xml.exit(FHIR_NS, name);
17840    }
17841  }
17842
17843  protected void composeMedicationDispenseMedicationDispenseDosageInstructionComponent(String name, MedicationDispense.MedicationDispenseDosageInstructionComponent element) throws IOException {
17844    if (element != null) {
17845      composeElementAttributes(element);
17846      xml.enter(FHIR_NS, name);
17847      composeBackboneElements(element);
17848      if (element.hasTextElement()) {
17849        composeString("text", element.getTextElement());
17850      }
17851      if (element.hasAdditionalInstructions()) {
17852        composeCodeableConcept("additionalInstructions", element.getAdditionalInstructions());
17853      }
17854      if (element.hasTiming()) {
17855        composeTiming("timing", element.getTiming());
17856      }
17857      if (element.hasAsNeeded()) {
17858        composeType("asNeeded", element.getAsNeeded());
17859      }      if (element.hasSite()) {
17860        composeType("site", element.getSite());
17861      }      if (element.hasRoute()) {
17862        composeCodeableConcept("route", element.getRoute());
17863      }
17864      if (element.hasMethod()) {
17865        composeCodeableConcept("method", element.getMethod());
17866      }
17867      if (element.hasDose()) {
17868        composeType("dose", element.getDose());
17869      }      if (element.hasRate()) {
17870        composeType("rate", element.getRate());
17871      }      if (element.hasMaxDosePerPeriod()) {
17872        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
17873      }
17874      composeElementClose(element);
17875      xml.exit(FHIR_NS, name);
17876    }
17877  }
17878
17879  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
17880    if (element != null) {
17881      composeElementAttributes(element);
17882      xml.enter(FHIR_NS, name);
17883      composeBackboneElements(element);
17884      if (element.hasType()) {
17885        composeCodeableConcept("type", element.getType());
17886      }
17887      if (element.hasReason()) { 
17888        for (CodeableConcept e : element.getReason()) 
17889          composeCodeableConcept("reason", e);
17890      }
17891      if (element.hasResponsibleParty()) { 
17892        for (Reference e : element.getResponsibleParty()) 
17893          composeReference("responsibleParty", e);
17894      }
17895      composeElementClose(element);
17896      xml.exit(FHIR_NS, name);
17897    }
17898  }
17899
17900  protected void composeMedicationOrder(String name, MedicationOrder element) throws IOException {
17901    if (element != null) {
17902      composeDomainResourceAttributes(element);
17903      xml.enter(FHIR_NS, name);
17904      composeDomainResourceElements(element);
17905      if (element.hasIdentifier()) { 
17906        for (Identifier e : element.getIdentifier()) 
17907          composeIdentifier("identifier", e);
17908      }
17909      if (element.hasDateWrittenElement()) {
17910        composeDateTime("dateWritten", element.getDateWrittenElement());
17911      }
17912      if (element.hasStatusElement())
17913        composeEnumeration("status", element.getStatusElement(), new MedicationOrder.MedicationOrderStatusEnumFactory());
17914      if (element.hasDateEndedElement()) {
17915        composeDateTime("dateEnded", element.getDateEndedElement());
17916      }
17917      if (element.hasReasonEnded()) {
17918        composeCodeableConcept("reasonEnded", element.getReasonEnded());
17919      }
17920      if (element.hasPatient()) {
17921        composeReference("patient", element.getPatient());
17922      }
17923      if (element.hasPrescriber()) {
17924        composeReference("prescriber", element.getPrescriber());
17925      }
17926      if (element.hasEncounter()) {
17927        composeReference("encounter", element.getEncounter());
17928      }
17929      if (element.hasReason()) {
17930        composeType("reason", element.getReason());
17931      }      if (element.hasNoteElement()) {
17932        composeString("note", element.getNoteElement());
17933      }
17934      if (element.hasMedication()) {
17935        composeType("medication", element.getMedication());
17936      }      if (element.hasDosageInstruction()) { 
17937        for (MedicationOrder.MedicationOrderDosageInstructionComponent e : element.getDosageInstruction()) 
17938          composeMedicationOrderMedicationOrderDosageInstructionComponent("dosageInstruction", e);
17939      }
17940      if (element.hasDispenseRequest()) {
17941        composeMedicationOrderMedicationOrderDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
17942      }
17943      if (element.hasSubstitution()) {
17944        composeMedicationOrderMedicationOrderSubstitutionComponent("substitution", element.getSubstitution());
17945      }
17946      if (element.hasPriorPrescription()) {
17947        composeReference("priorPrescription", element.getPriorPrescription());
17948      }
17949      composeElementClose(element);
17950      xml.exit(FHIR_NS, name);
17951    }
17952  }
17953
17954  protected void composeMedicationOrderMedicationOrderDosageInstructionComponent(String name, MedicationOrder.MedicationOrderDosageInstructionComponent element) throws IOException {
17955    if (element != null) {
17956      composeElementAttributes(element);
17957      xml.enter(FHIR_NS, name);
17958      composeBackboneElements(element);
17959      if (element.hasTextElement()) {
17960        composeString("text", element.getTextElement());
17961      }
17962      if (element.hasAdditionalInstructions()) {
17963        composeCodeableConcept("additionalInstructions", element.getAdditionalInstructions());
17964      }
17965      if (element.hasTiming()) {
17966        composeTiming("timing", element.getTiming());
17967      }
17968      if (element.hasAsNeeded()) {
17969        composeType("asNeeded", element.getAsNeeded());
17970      }      if (element.hasSite()) {
17971        composeType("site", element.getSite());
17972      }      if (element.hasRoute()) {
17973        composeCodeableConcept("route", element.getRoute());
17974      }
17975      if (element.hasMethod()) {
17976        composeCodeableConcept("method", element.getMethod());
17977      }
17978      if (element.hasDose()) {
17979        composeType("dose", element.getDose());
17980      }      if (element.hasRate()) {
17981        composeType("rate", element.getRate());
17982      }      if (element.hasMaxDosePerPeriod()) {
17983        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
17984      }
17985      composeElementClose(element);
17986      xml.exit(FHIR_NS, name);
17987    }
17988  }
17989
17990  protected void composeMedicationOrderMedicationOrderDispenseRequestComponent(String name, MedicationOrder.MedicationOrderDispenseRequestComponent element) throws IOException {
17991    if (element != null) {
17992      composeElementAttributes(element);
17993      xml.enter(FHIR_NS, name);
17994      composeBackboneElements(element);
17995      if (element.hasMedication()) {
17996        composeType("medication", element.getMedication());
17997      }      if (element.hasValidityPeriod()) {
17998        composePeriod("validityPeriod", element.getValidityPeriod());
17999      }
18000      if (element.hasNumberOfRepeatsAllowedElement()) {
18001        composePositiveInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
18002      }
18003      if (element.hasQuantity()) {
18004        composeSimpleQuantity("quantity", element.getQuantity());
18005      }
18006      if (element.hasExpectedSupplyDuration()) {
18007        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
18008      }
18009      composeElementClose(element);
18010      xml.exit(FHIR_NS, name);
18011    }
18012  }
18013
18014  protected void composeMedicationOrderMedicationOrderSubstitutionComponent(String name, MedicationOrder.MedicationOrderSubstitutionComponent element) throws IOException {
18015    if (element != null) {
18016      composeElementAttributes(element);
18017      xml.enter(FHIR_NS, name);
18018      composeBackboneElements(element);
18019      if (element.hasType()) {
18020        composeCodeableConcept("type", element.getType());
18021      }
18022      if (element.hasReason()) {
18023        composeCodeableConcept("reason", element.getReason());
18024      }
18025      composeElementClose(element);
18026      xml.exit(FHIR_NS, name);
18027    }
18028  }
18029
18030  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
18031    if (element != null) {
18032      composeDomainResourceAttributes(element);
18033      xml.enter(FHIR_NS, name);
18034      composeDomainResourceElements(element);
18035      if (element.hasIdentifier()) { 
18036        for (Identifier e : element.getIdentifier()) 
18037          composeIdentifier("identifier", e);
18038      }
18039      if (element.hasPatient()) {
18040        composeReference("patient", element.getPatient());
18041      }
18042      if (element.hasInformationSource()) {
18043        composeReference("informationSource", element.getInformationSource());
18044      }
18045      if (element.hasDateAssertedElement()) {
18046        composeDateTime("dateAsserted", element.getDateAssertedElement());
18047      }
18048      if (element.hasStatusElement())
18049        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
18050      if (element.hasWasNotTakenElement()) {
18051        composeBoolean("wasNotTaken", element.getWasNotTakenElement());
18052      }
18053      if (element.hasReasonNotTaken()) { 
18054        for (CodeableConcept e : element.getReasonNotTaken()) 
18055          composeCodeableConcept("reasonNotTaken", e);
18056      }
18057      if (element.hasReasonForUse()) {
18058        composeType("reasonForUse", element.getReasonForUse());
18059      }      if (element.hasEffective()) {
18060        composeType("effective", element.getEffective());
18061      }      if (element.hasNoteElement()) {
18062        composeString("note", element.getNoteElement());
18063      }
18064      if (element.hasSupportingInformation()) { 
18065        for (Reference e : element.getSupportingInformation()) 
18066          composeReference("supportingInformation", e);
18067      }
18068      if (element.hasMedication()) {
18069        composeType("medication", element.getMedication());
18070      }      if (element.hasDosage()) { 
18071        for (MedicationStatement.MedicationStatementDosageComponent e : element.getDosage()) 
18072          composeMedicationStatementMedicationStatementDosageComponent("dosage", e);
18073      }
18074      composeElementClose(element);
18075      xml.exit(FHIR_NS, name);
18076    }
18077  }
18078
18079  protected void composeMedicationStatementMedicationStatementDosageComponent(String name, MedicationStatement.MedicationStatementDosageComponent element) throws IOException {
18080    if (element != null) {
18081      composeElementAttributes(element);
18082      xml.enter(FHIR_NS, name);
18083      composeBackboneElements(element);
18084      if (element.hasTextElement()) {
18085        composeString("text", element.getTextElement());
18086      }
18087      if (element.hasTiming()) {
18088        composeTiming("timing", element.getTiming());
18089      }
18090      if (element.hasAsNeeded()) {
18091        composeType("asNeeded", element.getAsNeeded());
18092      }      if (element.hasSite()) {
18093        composeType("site", element.getSite());
18094      }      if (element.hasRoute()) {
18095        composeCodeableConcept("route", element.getRoute());
18096      }
18097      if (element.hasMethod()) {
18098        composeCodeableConcept("method", element.getMethod());
18099      }
18100      if (element.hasQuantity()) {
18101        composeType("quantity", element.getQuantity());
18102      }      if (element.hasRate()) {
18103        composeType("rate", element.getRate());
18104      }      if (element.hasMaxDosePerPeriod()) {
18105        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
18106      }
18107      composeElementClose(element);
18108      xml.exit(FHIR_NS, name);
18109    }
18110  }
18111
18112  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
18113    if (element != null) {
18114      composeDomainResourceAttributes(element);
18115      xml.enter(FHIR_NS, name);
18116      composeDomainResourceElements(element);
18117      if (element.hasTimestampElement()) {
18118        composeInstant("timestamp", element.getTimestampElement());
18119      }
18120      if (element.hasEvent()) {
18121        composeCoding("event", element.getEvent());
18122      }
18123      if (element.hasResponse()) {
18124        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
18125      }
18126      if (element.hasSource()) {
18127        composeMessageHeaderMessageSourceComponent("source", element.getSource());
18128      }
18129      if (element.hasDestination()) { 
18130        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
18131          composeMessageHeaderMessageDestinationComponent("destination", e);
18132      }
18133      if (element.hasEnterer()) {
18134        composeReference("enterer", element.getEnterer());
18135      }
18136      if (element.hasAuthor()) {
18137        composeReference("author", element.getAuthor());
18138      }
18139      if (element.hasReceiver()) {
18140        composeReference("receiver", element.getReceiver());
18141      }
18142      if (element.hasResponsible()) {
18143        composeReference("responsible", element.getResponsible());
18144      }
18145      if (element.hasReason()) {
18146        composeCodeableConcept("reason", element.getReason());
18147      }
18148      if (element.hasData()) { 
18149        for (Reference e : element.getData()) 
18150          composeReference("data", e);
18151      }
18152      composeElementClose(element);
18153      xml.exit(FHIR_NS, name);
18154    }
18155  }
18156
18157  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
18158    if (element != null) {
18159      composeElementAttributes(element);
18160      xml.enter(FHIR_NS, name);
18161      composeBackboneElements(element);
18162      if (element.hasIdentifierElement()) {
18163        composeId("identifier", element.getIdentifierElement());
18164      }
18165      if (element.hasCodeElement())
18166        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
18167      if (element.hasDetails()) {
18168        composeReference("details", element.getDetails());
18169      }
18170      composeElementClose(element);
18171      xml.exit(FHIR_NS, name);
18172    }
18173  }
18174
18175  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
18176    if (element != null) {
18177      composeElementAttributes(element);
18178      xml.enter(FHIR_NS, name);
18179      composeBackboneElements(element);
18180      if (element.hasNameElement()) {
18181        composeString("name", element.getNameElement());
18182      }
18183      if (element.hasSoftwareElement()) {
18184        composeString("software", element.getSoftwareElement());
18185      }
18186      if (element.hasVersionElement()) {
18187        composeString("version", element.getVersionElement());
18188      }
18189      if (element.hasContact()) {
18190        composeContactPoint("contact", element.getContact());
18191      }
18192      if (element.hasEndpointElement()) {
18193        composeUri("endpoint", element.getEndpointElement());
18194      }
18195      composeElementClose(element);
18196      xml.exit(FHIR_NS, name);
18197    }
18198  }
18199
18200  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
18201    if (element != null) {
18202      composeElementAttributes(element);
18203      xml.enter(FHIR_NS, name);
18204      composeBackboneElements(element);
18205      if (element.hasNameElement()) {
18206        composeString("name", element.getNameElement());
18207      }
18208      if (element.hasTarget()) {
18209        composeReference("target", element.getTarget());
18210      }
18211      if (element.hasEndpointElement()) {
18212        composeUri("endpoint", element.getEndpointElement());
18213      }
18214      composeElementClose(element);
18215      xml.exit(FHIR_NS, name);
18216    }
18217  }
18218
18219  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
18220    if (element != null) {
18221      composeDomainResourceAttributes(element);
18222      xml.enter(FHIR_NS, name);
18223      composeDomainResourceElements(element);
18224      if (element.hasNameElement()) {
18225        composeString("name", element.getNameElement());
18226      }
18227      if (element.hasStatusElement())
18228        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
18229      if (element.hasKindElement())
18230        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
18231      if (element.hasPublisherElement()) {
18232        composeString("publisher", element.getPublisherElement());
18233      }
18234      if (element.hasContact()) { 
18235        for (NamingSystem.NamingSystemContactComponent e : element.getContact()) 
18236          composeNamingSystemNamingSystemContactComponent("contact", e);
18237      }
18238      if (element.hasResponsibleElement()) {
18239        composeString("responsible", element.getResponsibleElement());
18240      }
18241      if (element.hasDateElement()) {
18242        composeDateTime("date", element.getDateElement());
18243      }
18244      if (element.hasType()) {
18245        composeCodeableConcept("type", element.getType());
18246      }
18247      if (element.hasDescriptionElement()) {
18248        composeString("description", element.getDescriptionElement());
18249      }
18250      if (element.hasUseContext()) { 
18251        for (CodeableConcept e : element.getUseContext()) 
18252          composeCodeableConcept("useContext", e);
18253      }
18254      if (element.hasUsageElement()) {
18255        composeString("usage", element.getUsageElement());
18256      }
18257      if (element.hasUniqueId()) { 
18258        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
18259          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
18260      }
18261      if (element.hasReplacedBy()) {
18262        composeReference("replacedBy", element.getReplacedBy());
18263      }
18264      composeElementClose(element);
18265      xml.exit(FHIR_NS, name);
18266    }
18267  }
18268
18269  protected void composeNamingSystemNamingSystemContactComponent(String name, NamingSystem.NamingSystemContactComponent element) throws IOException {
18270    if (element != null) {
18271      composeElementAttributes(element);
18272      xml.enter(FHIR_NS, name);
18273      composeBackboneElements(element);
18274      if (element.hasNameElement()) {
18275        composeString("name", element.getNameElement());
18276      }
18277      if (element.hasTelecom()) { 
18278        for (ContactPoint e : element.getTelecom()) 
18279          composeContactPoint("telecom", e);
18280      }
18281      composeElementClose(element);
18282      xml.exit(FHIR_NS, name);
18283    }
18284  }
18285
18286  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
18287    if (element != null) {
18288      composeElementAttributes(element);
18289      xml.enter(FHIR_NS, name);
18290      composeBackboneElements(element);
18291      if (element.hasTypeElement())
18292        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
18293      if (element.hasValueElement()) {
18294        composeString("value", element.getValueElement());
18295      }
18296      if (element.hasPreferredElement()) {
18297        composeBoolean("preferred", element.getPreferredElement());
18298      }
18299      if (element.hasPeriod()) {
18300        composePeriod("period", element.getPeriod());
18301      }
18302      composeElementClose(element);
18303      xml.exit(FHIR_NS, name);
18304    }
18305  }
18306
18307  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
18308    if (element != null) {
18309      composeDomainResourceAttributes(element);
18310      xml.enter(FHIR_NS, name);
18311      composeDomainResourceElements(element);
18312      if (element.hasPatient()) {
18313        composeReference("patient", element.getPatient());
18314      }
18315      if (element.hasOrderer()) {
18316        composeReference("orderer", element.getOrderer());
18317      }
18318      if (element.hasIdentifier()) { 
18319        for (Identifier e : element.getIdentifier()) 
18320          composeIdentifier("identifier", e);
18321      }
18322      if (element.hasEncounter()) {
18323        composeReference("encounter", element.getEncounter());
18324      }
18325      if (element.hasDateTimeElement()) {
18326        composeDateTime("dateTime", element.getDateTimeElement());
18327      }
18328      if (element.hasStatusElement())
18329        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
18330      if (element.hasAllergyIntolerance()) { 
18331        for (Reference e : element.getAllergyIntolerance()) 
18332          composeReference("allergyIntolerance", e);
18333      }
18334      if (element.hasFoodPreferenceModifier()) { 
18335        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
18336          composeCodeableConcept("foodPreferenceModifier", e);
18337      }
18338      if (element.hasExcludeFoodModifier()) { 
18339        for (CodeableConcept e : element.getExcludeFoodModifier()) 
18340          composeCodeableConcept("excludeFoodModifier", e);
18341      }
18342      if (element.hasOralDiet()) {
18343        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
18344      }
18345      if (element.hasSupplement()) { 
18346        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
18347          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
18348      }
18349      if (element.hasEnteralFormula()) {
18350        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
18351      }
18352      composeElementClose(element);
18353      xml.exit(FHIR_NS, name);
18354    }
18355  }
18356
18357  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
18358    if (element != null) {
18359      composeElementAttributes(element);
18360      xml.enter(FHIR_NS, name);
18361      composeBackboneElements(element);
18362      if (element.hasType()) { 
18363        for (CodeableConcept e : element.getType()) 
18364          composeCodeableConcept("type", e);
18365      }
18366      if (element.hasSchedule()) { 
18367        for (Timing e : element.getSchedule()) 
18368          composeTiming("schedule", e);
18369      }
18370      if (element.hasNutrient()) { 
18371        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
18372          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
18373      }
18374      if (element.hasTexture()) { 
18375        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
18376          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
18377      }
18378      if (element.hasFluidConsistencyType()) { 
18379        for (CodeableConcept e : element.getFluidConsistencyType()) 
18380          composeCodeableConcept("fluidConsistencyType", e);
18381      }
18382      if (element.hasInstructionElement()) {
18383        composeString("instruction", element.getInstructionElement());
18384      }
18385      composeElementClose(element);
18386      xml.exit(FHIR_NS, name);
18387    }
18388  }
18389
18390  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
18391    if (element != null) {
18392      composeElementAttributes(element);
18393      xml.enter(FHIR_NS, name);
18394      composeBackboneElements(element);
18395      if (element.hasModifier()) {
18396        composeCodeableConcept("modifier", element.getModifier());
18397      }
18398      if (element.hasAmount()) {
18399        composeSimpleQuantity("amount", element.getAmount());
18400      }
18401      composeElementClose(element);
18402      xml.exit(FHIR_NS, name);
18403    }
18404  }
18405
18406  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
18407    if (element != null) {
18408      composeElementAttributes(element);
18409      xml.enter(FHIR_NS, name);
18410      composeBackboneElements(element);
18411      if (element.hasModifier()) {
18412        composeCodeableConcept("modifier", element.getModifier());
18413      }
18414      if (element.hasFoodType()) {
18415        composeCodeableConcept("foodType", element.getFoodType());
18416      }
18417      composeElementClose(element);
18418      xml.exit(FHIR_NS, name);
18419    }
18420  }
18421
18422  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
18423    if (element != null) {
18424      composeElementAttributes(element);
18425      xml.enter(FHIR_NS, name);
18426      composeBackboneElements(element);
18427      if (element.hasType()) {
18428        composeCodeableConcept("type", element.getType());
18429      }
18430      if (element.hasProductNameElement()) {
18431        composeString("productName", element.getProductNameElement());
18432      }
18433      if (element.hasSchedule()) { 
18434        for (Timing e : element.getSchedule()) 
18435          composeTiming("schedule", e);
18436      }
18437      if (element.hasQuantity()) {
18438        composeSimpleQuantity("quantity", element.getQuantity());
18439      }
18440      if (element.hasInstructionElement()) {
18441        composeString("instruction", element.getInstructionElement());
18442      }
18443      composeElementClose(element);
18444      xml.exit(FHIR_NS, name);
18445    }
18446  }
18447
18448  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
18449    if (element != null) {
18450      composeElementAttributes(element);
18451      xml.enter(FHIR_NS, name);
18452      composeBackboneElements(element);
18453      if (element.hasBaseFormulaType()) {
18454        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
18455      }
18456      if (element.hasBaseFormulaProductNameElement()) {
18457        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
18458      }
18459      if (element.hasAdditiveType()) {
18460        composeCodeableConcept("additiveType", element.getAdditiveType());
18461      }
18462      if (element.hasAdditiveProductNameElement()) {
18463        composeString("additiveProductName", element.getAdditiveProductNameElement());
18464      }
18465      if (element.hasCaloricDensity()) {
18466        composeSimpleQuantity("caloricDensity", element.getCaloricDensity());
18467      }
18468      if (element.hasRouteofAdministration()) {
18469        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
18470      }
18471      if (element.hasAdministration()) { 
18472        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
18473          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
18474      }
18475      if (element.hasMaxVolumeToDeliver()) {
18476        composeSimpleQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
18477      }
18478      if (element.hasAdministrationInstructionElement()) {
18479        composeString("administrationInstruction", element.getAdministrationInstructionElement());
18480      }
18481      composeElementClose(element);
18482      xml.exit(FHIR_NS, name);
18483    }
18484  }
18485
18486  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
18487    if (element != null) {
18488      composeElementAttributes(element);
18489      xml.enter(FHIR_NS, name);
18490      composeBackboneElements(element);
18491      if (element.hasSchedule()) {
18492        composeTiming("schedule", element.getSchedule());
18493      }
18494      if (element.hasQuantity()) {
18495        composeSimpleQuantity("quantity", element.getQuantity());
18496      }
18497      if (element.hasRate()) {
18498        composeType("rate", element.getRate());
18499      }      composeElementClose(element);
18500      xml.exit(FHIR_NS, name);
18501    }
18502  }
18503
18504  protected void composeObservation(String name, Observation element) throws IOException {
18505    if (element != null) {
18506      composeDomainResourceAttributes(element);
18507      xml.enter(FHIR_NS, name);
18508      composeDomainResourceElements(element);
18509      if (element.hasIdentifier()) { 
18510        for (Identifier e : element.getIdentifier()) 
18511          composeIdentifier("identifier", e);
18512      }
18513      if (element.hasStatusElement())
18514        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
18515      if (element.hasCategory()) {
18516        composeCodeableConcept("category", element.getCategory());
18517      }
18518      if (element.hasCode()) {
18519        composeCodeableConcept("code", element.getCode());
18520      }
18521      if (element.hasSubject()) {
18522        composeReference("subject", element.getSubject());
18523      }
18524      if (element.hasEncounter()) {
18525        composeReference("encounter", element.getEncounter());
18526      }
18527      if (element.hasEffective()) {
18528        composeType("effective", element.getEffective());
18529      }      if (element.hasIssuedElement()) {
18530        composeInstant("issued", element.getIssuedElement());
18531      }
18532      if (element.hasPerformer()) { 
18533        for (Reference e : element.getPerformer()) 
18534          composeReference("performer", e);
18535      }
18536      if (element.hasValue()) {
18537        composeType("value", element.getValue());
18538      }      if (element.hasDataAbsentReason()) {
18539        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
18540      }
18541      if (element.hasInterpretation()) {
18542        composeCodeableConcept("interpretation", element.getInterpretation());
18543      }
18544      if (element.hasCommentsElement()) {
18545        composeString("comments", element.getCommentsElement());
18546      }
18547      if (element.hasBodySite()) {
18548        composeCodeableConcept("bodySite", element.getBodySite());
18549      }
18550      if (element.hasMethod()) {
18551        composeCodeableConcept("method", element.getMethod());
18552      }
18553      if (element.hasSpecimen()) {
18554        composeReference("specimen", element.getSpecimen());
18555      }
18556      if (element.hasDevice()) {
18557        composeReference("device", element.getDevice());
18558      }
18559      if (element.hasReferenceRange()) { 
18560        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
18561          composeObservationObservationReferenceRangeComponent("referenceRange", e);
18562      }
18563      if (element.hasRelated()) { 
18564        for (Observation.ObservationRelatedComponent e : element.getRelated()) 
18565          composeObservationObservationRelatedComponent("related", e);
18566      }
18567      if (element.hasComponent()) { 
18568        for (Observation.ObservationComponentComponent e : element.getComponent()) 
18569          composeObservationObservationComponentComponent("component", e);
18570      }
18571      composeElementClose(element);
18572      xml.exit(FHIR_NS, name);
18573    }
18574  }
18575
18576  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
18577    if (element != null) {
18578      composeElementAttributes(element);
18579      xml.enter(FHIR_NS, name);
18580      composeBackboneElements(element);
18581      if (element.hasLow()) {
18582        composeSimpleQuantity("low", element.getLow());
18583      }
18584      if (element.hasHigh()) {
18585        composeSimpleQuantity("high", element.getHigh());
18586      }
18587      if (element.hasMeaning()) {
18588        composeCodeableConcept("meaning", element.getMeaning());
18589      }
18590      if (element.hasAge()) {
18591        composeRange("age", element.getAge());
18592      }
18593      if (element.hasTextElement()) {
18594        composeString("text", element.getTextElement());
18595      }
18596      composeElementClose(element);
18597      xml.exit(FHIR_NS, name);
18598    }
18599  }
18600
18601  protected void composeObservationObservationRelatedComponent(String name, Observation.ObservationRelatedComponent element) throws IOException {
18602    if (element != null) {
18603      composeElementAttributes(element);
18604      xml.enter(FHIR_NS, name);
18605      composeBackboneElements(element);
18606      if (element.hasTypeElement())
18607        composeEnumeration("type", element.getTypeElement(), new Observation.ObservationRelationshipTypeEnumFactory());
18608      if (element.hasTarget()) {
18609        composeReference("target", element.getTarget());
18610      }
18611      composeElementClose(element);
18612      xml.exit(FHIR_NS, name);
18613    }
18614  }
18615
18616  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
18617    if (element != null) {
18618      composeElementAttributes(element);
18619      xml.enter(FHIR_NS, name);
18620      composeBackboneElements(element);
18621      if (element.hasCode()) {
18622        composeCodeableConcept("code", element.getCode());
18623      }
18624      if (element.hasValue()) {
18625        composeType("value", element.getValue());
18626      }      if (element.hasDataAbsentReason()) {
18627        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
18628      }
18629      if (element.hasReferenceRange()) { 
18630        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
18631          composeObservationObservationReferenceRangeComponent("referenceRange", e);
18632      }
18633      composeElementClose(element);
18634      xml.exit(FHIR_NS, name);
18635    }
18636  }
18637
18638  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
18639    if (element != null) {
18640      composeDomainResourceAttributes(element);
18641      xml.enter(FHIR_NS, name);
18642      composeDomainResourceElements(element);
18643      if (element.hasUrlElement()) {
18644        composeUri("url", element.getUrlElement());
18645      }
18646      if (element.hasVersionElement()) {
18647        composeString("version", element.getVersionElement());
18648      }
18649      if (element.hasNameElement()) {
18650        composeString("name", element.getNameElement());
18651      }
18652      if (element.hasStatusElement())
18653        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
18654      if (element.hasKindElement())
18655        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
18656      if (element.hasExperimentalElement()) {
18657        composeBoolean("experimental", element.getExperimentalElement());
18658      }
18659      if (element.hasPublisherElement()) {
18660        composeString("publisher", element.getPublisherElement());
18661      }
18662      if (element.hasContact()) { 
18663        for (OperationDefinition.OperationDefinitionContactComponent e : element.getContact()) 
18664          composeOperationDefinitionOperationDefinitionContactComponent("contact", e);
18665      }
18666      if (element.hasDateElement()) {
18667        composeDateTime("date", element.getDateElement());
18668      }
18669      if (element.hasDescriptionElement()) {
18670        composeString("description", element.getDescriptionElement());
18671      }
18672      if (element.hasRequirementsElement()) {
18673        composeString("requirements", element.getRequirementsElement());
18674      }
18675      if (element.hasIdempotentElement()) {
18676        composeBoolean("idempotent", element.getIdempotentElement());
18677      }
18678      if (element.hasCodeElement()) {
18679        composeCode("code", element.getCodeElement());
18680      }
18681      if (element.hasNotesElement()) {
18682        composeString("notes", element.getNotesElement());
18683      }
18684      if (element.hasBase()) {
18685        composeReference("base", element.getBase());
18686      }
18687      if (element.hasSystemElement()) {
18688        composeBoolean("system", element.getSystemElement());
18689      }
18690      if (element.hasType()) { 
18691        for (CodeType e : element.getType()) 
18692          composeCode("type", e);
18693      }
18694      if (element.hasInstanceElement()) {
18695        composeBoolean("instance", element.getInstanceElement());
18696      }
18697      if (element.hasParameter()) { 
18698        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
18699          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
18700      }
18701      composeElementClose(element);
18702      xml.exit(FHIR_NS, name);
18703    }
18704  }
18705
18706  protected void composeOperationDefinitionOperationDefinitionContactComponent(String name, OperationDefinition.OperationDefinitionContactComponent element) throws IOException {
18707    if (element != null) {
18708      composeElementAttributes(element);
18709      xml.enter(FHIR_NS, name);
18710      composeBackboneElements(element);
18711      if (element.hasNameElement()) {
18712        composeString("name", element.getNameElement());
18713      }
18714      if (element.hasTelecom()) { 
18715        for (ContactPoint e : element.getTelecom()) 
18716          composeContactPoint("telecom", e);
18717      }
18718      composeElementClose(element);
18719      xml.exit(FHIR_NS, name);
18720    }
18721  }
18722
18723  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
18724    if (element != null) {
18725      composeElementAttributes(element);
18726      xml.enter(FHIR_NS, name);
18727      composeBackboneElements(element);
18728      if (element.hasNameElement()) {
18729        composeCode("name", element.getNameElement());
18730      }
18731      if (element.hasUseElement())
18732        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
18733      if (element.hasMinElement()) {
18734        composeInteger("min", element.getMinElement());
18735      }
18736      if (element.hasMaxElement()) {
18737        composeString("max", element.getMaxElement());
18738      }
18739      if (element.hasDocumentationElement()) {
18740        composeString("documentation", element.getDocumentationElement());
18741      }
18742      if (element.hasTypeElement()) {
18743        composeCode("type", element.getTypeElement());
18744      }
18745      if (element.hasProfile()) {
18746        composeReference("profile", element.getProfile());
18747      }
18748      if (element.hasBinding()) {
18749        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
18750      }
18751      if (element.hasPart()) { 
18752        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
18753          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
18754      }
18755      composeElementClose(element);
18756      xml.exit(FHIR_NS, name);
18757    }
18758  }
18759
18760  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
18761    if (element != null) {
18762      composeElementAttributes(element);
18763      xml.enter(FHIR_NS, name);
18764      composeBackboneElements(element);
18765      if (element.hasStrengthElement())
18766        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
18767      if (element.hasValueSet()) {
18768        composeType("valueSet", element.getValueSet());
18769      }      composeElementClose(element);
18770      xml.exit(FHIR_NS, name);
18771    }
18772  }
18773
18774  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
18775    if (element != null) {
18776      composeDomainResourceAttributes(element);
18777      xml.enter(FHIR_NS, name);
18778      composeDomainResourceElements(element);
18779      if (element.hasIssue()) { 
18780        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
18781          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
18782      }
18783      composeElementClose(element);
18784      xml.exit(FHIR_NS, name);
18785    }
18786  }
18787
18788  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
18789    if (element != null) {
18790      composeElementAttributes(element);
18791      xml.enter(FHIR_NS, name);
18792      composeBackboneElements(element);
18793      if (element.hasSeverityElement())
18794        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
18795      if (element.hasCodeElement())
18796        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
18797      if (element.hasDetails()) {
18798        composeCodeableConcept("details", element.getDetails());
18799      }
18800      if (element.hasDiagnosticsElement()) {
18801        composeString("diagnostics", element.getDiagnosticsElement());
18802      }
18803      if (element.hasLocation()) { 
18804        for (StringType e : element.getLocation()) 
18805          composeString("location", e);
18806      }
18807      composeElementClose(element);
18808      xml.exit(FHIR_NS, name);
18809    }
18810  }
18811
18812  protected void composeOrder(String name, Order element) throws IOException {
18813    if (element != null) {
18814      composeDomainResourceAttributes(element);
18815      xml.enter(FHIR_NS, name);
18816      composeDomainResourceElements(element);
18817      if (element.hasIdentifier()) { 
18818        for (Identifier e : element.getIdentifier()) 
18819          composeIdentifier("identifier", e);
18820      }
18821      if (element.hasDateElement()) {
18822        composeDateTime("date", element.getDateElement());
18823      }
18824      if (element.hasSubject()) {
18825        composeReference("subject", element.getSubject());
18826      }
18827      if (element.hasSource()) {
18828        composeReference("source", element.getSource());
18829      }
18830      if (element.hasTarget()) {
18831        composeReference("target", element.getTarget());
18832      }
18833      if (element.hasReason()) {
18834        composeType("reason", element.getReason());
18835      }      if (element.hasWhen()) {
18836        composeOrderOrderWhenComponent("when", element.getWhen());
18837      }
18838      if (element.hasDetail()) { 
18839        for (Reference e : element.getDetail()) 
18840          composeReference("detail", e);
18841      }
18842      composeElementClose(element);
18843      xml.exit(FHIR_NS, name);
18844    }
18845  }
18846
18847  protected void composeOrderOrderWhenComponent(String name, Order.OrderWhenComponent element) throws IOException {
18848    if (element != null) {
18849      composeElementAttributes(element);
18850      xml.enter(FHIR_NS, name);
18851      composeBackboneElements(element);
18852      if (element.hasCode()) {
18853        composeCodeableConcept("code", element.getCode());
18854      }
18855      if (element.hasSchedule()) {
18856        composeTiming("schedule", element.getSchedule());
18857      }
18858      composeElementClose(element);
18859      xml.exit(FHIR_NS, name);
18860    }
18861  }
18862
18863  protected void composeOrderResponse(String name, OrderResponse element) throws IOException {
18864    if (element != null) {
18865      composeDomainResourceAttributes(element);
18866      xml.enter(FHIR_NS, name);
18867      composeDomainResourceElements(element);
18868      if (element.hasIdentifier()) { 
18869        for (Identifier e : element.getIdentifier()) 
18870          composeIdentifier("identifier", e);
18871      }
18872      if (element.hasRequest()) {
18873        composeReference("request", element.getRequest());
18874      }
18875      if (element.hasDateElement()) {
18876        composeDateTime("date", element.getDateElement());
18877      }
18878      if (element.hasWho()) {
18879        composeReference("who", element.getWho());
18880      }
18881      if (element.hasOrderStatusElement())
18882        composeEnumeration("orderStatus", element.getOrderStatusElement(), new OrderResponse.OrderStatusEnumFactory());
18883      if (element.hasDescriptionElement()) {
18884        composeString("description", element.getDescriptionElement());
18885      }
18886      if (element.hasFulfillment()) { 
18887        for (Reference e : element.getFulfillment()) 
18888          composeReference("fulfillment", e);
18889      }
18890      composeElementClose(element);
18891      xml.exit(FHIR_NS, name);
18892    }
18893  }
18894
18895  protected void composeOrganization(String name, Organization element) throws IOException {
18896    if (element != null) {
18897      composeDomainResourceAttributes(element);
18898      xml.enter(FHIR_NS, name);
18899      composeDomainResourceElements(element);
18900      if (element.hasIdentifier()) { 
18901        for (Identifier e : element.getIdentifier()) 
18902          composeIdentifier("identifier", e);
18903      }
18904      if (element.hasActiveElement()) {
18905        composeBoolean("active", element.getActiveElement());
18906      }
18907      if (element.hasType()) {
18908        composeCodeableConcept("type", element.getType());
18909      }
18910      if (element.hasNameElement()) {
18911        composeString("name", element.getNameElement());
18912      }
18913      if (element.hasTelecom()) { 
18914        for (ContactPoint e : element.getTelecom()) 
18915          composeContactPoint("telecom", e);
18916      }
18917      if (element.hasAddress()) { 
18918        for (Address e : element.getAddress()) 
18919          composeAddress("address", e);
18920      }
18921      if (element.hasPartOf()) {
18922        composeReference("partOf", element.getPartOf());
18923      }
18924      if (element.hasContact()) { 
18925        for (Organization.OrganizationContactComponent e : element.getContact()) 
18926          composeOrganizationOrganizationContactComponent("contact", e);
18927      }
18928      composeElementClose(element);
18929      xml.exit(FHIR_NS, name);
18930    }
18931  }
18932
18933  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
18934    if (element != null) {
18935      composeElementAttributes(element);
18936      xml.enter(FHIR_NS, name);
18937      composeBackboneElements(element);
18938      if (element.hasPurpose()) {
18939        composeCodeableConcept("purpose", element.getPurpose());
18940      }
18941      if (element.hasName()) {
18942        composeHumanName("name", element.getName());
18943      }
18944      if (element.hasTelecom()) { 
18945        for (ContactPoint e : element.getTelecom()) 
18946          composeContactPoint("telecom", e);
18947      }
18948      if (element.hasAddress()) {
18949        composeAddress("address", element.getAddress());
18950      }
18951      composeElementClose(element);
18952      xml.exit(FHIR_NS, name);
18953    }
18954  }
18955
18956  protected void composePatient(String name, Patient element) throws IOException {
18957    if (element != null) {
18958      composeDomainResourceAttributes(element);
18959      xml.enter(FHIR_NS, name);
18960      composeDomainResourceElements(element);
18961      if (element.hasIdentifier()) { 
18962        for (Identifier e : element.getIdentifier()) 
18963          composeIdentifier("identifier", e);
18964      }
18965      if (element.hasActiveElement()) {
18966        composeBoolean("active", element.getActiveElement());
18967      }
18968      if (element.hasName()) { 
18969        for (HumanName e : element.getName()) 
18970          composeHumanName("name", e);
18971      }
18972      if (element.hasTelecom()) { 
18973        for (ContactPoint e : element.getTelecom()) 
18974          composeContactPoint("telecom", e);
18975      }
18976      if (element.hasGenderElement())
18977        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
18978      if (element.hasBirthDateElement()) {
18979        composeDate("birthDate", element.getBirthDateElement());
18980      }
18981      if (element.hasDeceased()) {
18982        composeType("deceased", element.getDeceased());
18983      }      if (element.hasAddress()) { 
18984        for (Address e : element.getAddress()) 
18985          composeAddress("address", e);
18986      }
18987      if (element.hasMaritalStatus()) {
18988        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
18989      }
18990      if (element.hasMultipleBirth()) {
18991        composeType("multipleBirth", element.getMultipleBirth());
18992      }      if (element.hasPhoto()) { 
18993        for (Attachment e : element.getPhoto()) 
18994          composeAttachment("photo", e);
18995      }
18996      if (element.hasContact()) { 
18997        for (Patient.ContactComponent e : element.getContact()) 
18998          composePatientContactComponent("contact", e);
18999      }
19000      if (element.hasAnimal()) {
19001        composePatientAnimalComponent("animal", element.getAnimal());
19002      }
19003      if (element.hasCommunication()) { 
19004        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
19005          composePatientPatientCommunicationComponent("communication", e);
19006      }
19007      if (element.hasCareProvider()) { 
19008        for (Reference e : element.getCareProvider()) 
19009          composeReference("careProvider", e);
19010      }
19011      if (element.hasManagingOrganization()) {
19012        composeReference("managingOrganization", element.getManagingOrganization());
19013      }
19014      if (element.hasLink()) { 
19015        for (Patient.PatientLinkComponent e : element.getLink()) 
19016          composePatientPatientLinkComponent("link", e);
19017      }
19018      composeElementClose(element);
19019      xml.exit(FHIR_NS, name);
19020    }
19021  }
19022
19023  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
19024    if (element != null) {
19025      composeElementAttributes(element);
19026      xml.enter(FHIR_NS, name);
19027      composeBackboneElements(element);
19028      if (element.hasRelationship()) { 
19029        for (CodeableConcept e : element.getRelationship()) 
19030          composeCodeableConcept("relationship", e);
19031      }
19032      if (element.hasName()) {
19033        composeHumanName("name", element.getName());
19034      }
19035      if (element.hasTelecom()) { 
19036        for (ContactPoint e : element.getTelecom()) 
19037          composeContactPoint("telecom", e);
19038      }
19039      if (element.hasAddress()) {
19040        composeAddress("address", element.getAddress());
19041      }
19042      if (element.hasGenderElement())
19043        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
19044      if (element.hasOrganization()) {
19045        composeReference("organization", element.getOrganization());
19046      }
19047      if (element.hasPeriod()) {
19048        composePeriod("period", element.getPeriod());
19049      }
19050      composeElementClose(element);
19051      xml.exit(FHIR_NS, name);
19052    }
19053  }
19054
19055  protected void composePatientAnimalComponent(String name, Patient.AnimalComponent element) throws IOException {
19056    if (element != null) {
19057      composeElementAttributes(element);
19058      xml.enter(FHIR_NS, name);
19059      composeBackboneElements(element);
19060      if (element.hasSpecies()) {
19061        composeCodeableConcept("species", element.getSpecies());
19062      }
19063      if (element.hasBreed()) {
19064        composeCodeableConcept("breed", element.getBreed());
19065      }
19066      if (element.hasGenderStatus()) {
19067        composeCodeableConcept("genderStatus", element.getGenderStatus());
19068      }
19069      composeElementClose(element);
19070      xml.exit(FHIR_NS, name);
19071    }
19072  }
19073
19074  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
19075    if (element != null) {
19076      composeElementAttributes(element);
19077      xml.enter(FHIR_NS, name);
19078      composeBackboneElements(element);
19079      if (element.hasLanguage()) {
19080        composeCodeableConcept("language", element.getLanguage());
19081      }
19082      if (element.hasPreferredElement()) {
19083        composeBoolean("preferred", element.getPreferredElement());
19084      }
19085      composeElementClose(element);
19086      xml.exit(FHIR_NS, name);
19087    }
19088  }
19089
19090  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
19091    if (element != null) {
19092      composeElementAttributes(element);
19093      xml.enter(FHIR_NS, name);
19094      composeBackboneElements(element);
19095      if (element.hasOther()) {
19096        composeReference("other", element.getOther());
19097      }
19098      if (element.hasTypeElement())
19099        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
19100      composeElementClose(element);
19101      xml.exit(FHIR_NS, name);
19102    }
19103  }
19104
19105  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
19106    if (element != null) {
19107      composeDomainResourceAttributes(element);
19108      xml.enter(FHIR_NS, name);
19109      composeDomainResourceElements(element);
19110      if (element.hasIdentifier()) { 
19111        for (Identifier e : element.getIdentifier()) 
19112          composeIdentifier("identifier", e);
19113      }
19114      if (element.hasRuleset()) {
19115        composeCoding("ruleset", element.getRuleset());
19116      }
19117      if (element.hasOriginalRuleset()) {
19118        composeCoding("originalRuleset", element.getOriginalRuleset());
19119      }
19120      if (element.hasCreatedElement()) {
19121        composeDateTime("created", element.getCreatedElement());
19122      }
19123      if (element.hasTarget()) {
19124        composeReference("target", element.getTarget());
19125      }
19126      if (element.hasProvider()) {
19127        composeReference("provider", element.getProvider());
19128      }
19129      if (element.hasOrganization()) {
19130        composeReference("organization", element.getOrganization());
19131      }
19132      if (element.hasRequest()) {
19133        composeReference("request", element.getRequest());
19134      }
19135      if (element.hasResponse()) {
19136        composeReference("response", element.getResponse());
19137      }
19138      if (element.hasPaymentStatus()) {
19139        composeCoding("paymentStatus", element.getPaymentStatus());
19140      }
19141      composeElementClose(element);
19142      xml.exit(FHIR_NS, name);
19143    }
19144  }
19145
19146  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
19147    if (element != null) {
19148      composeDomainResourceAttributes(element);
19149      xml.enter(FHIR_NS, name);
19150      composeDomainResourceElements(element);
19151      if (element.hasIdentifier()) { 
19152        for (Identifier e : element.getIdentifier()) 
19153          composeIdentifier("identifier", e);
19154      }
19155      if (element.hasRequest()) {
19156        composeReference("request", element.getRequest());
19157      }
19158      if (element.hasOutcomeElement())
19159        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
19160      if (element.hasDispositionElement()) {
19161        composeString("disposition", element.getDispositionElement());
19162      }
19163      if (element.hasRuleset()) {
19164        composeCoding("ruleset", element.getRuleset());
19165      }
19166      if (element.hasOriginalRuleset()) {
19167        composeCoding("originalRuleset", element.getOriginalRuleset());
19168      }
19169      if (element.hasCreatedElement()) {
19170        composeDateTime("created", element.getCreatedElement());
19171      }
19172      if (element.hasPeriod()) {
19173        composePeriod("period", element.getPeriod());
19174      }
19175      if (element.hasOrganization()) {
19176        composeReference("organization", element.getOrganization());
19177      }
19178      if (element.hasRequestProvider()) {
19179        composeReference("requestProvider", element.getRequestProvider());
19180      }
19181      if (element.hasRequestOrganization()) {
19182        composeReference("requestOrganization", element.getRequestOrganization());
19183      }
19184      if (element.hasDetail()) { 
19185        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
19186          composePaymentReconciliationDetailsComponent("detail", e);
19187      }
19188      if (element.hasForm()) {
19189        composeCoding("form", element.getForm());
19190      }
19191      if (element.hasTotal()) {
19192        composeMoney("total", element.getTotal());
19193      }
19194      if (element.hasNote()) { 
19195        for (PaymentReconciliation.NotesComponent e : element.getNote()) 
19196          composePaymentReconciliationNotesComponent("note", e);
19197      }
19198      composeElementClose(element);
19199      xml.exit(FHIR_NS, name);
19200    }
19201  }
19202
19203  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
19204    if (element != null) {
19205      composeElementAttributes(element);
19206      xml.enter(FHIR_NS, name);
19207      composeBackboneElements(element);
19208      if (element.hasType()) {
19209        composeCoding("type", element.getType());
19210      }
19211      if (element.hasRequest()) {
19212        composeReference("request", element.getRequest());
19213      }
19214      if (element.hasResponce()) {
19215        composeReference("responce", element.getResponce());
19216      }
19217      if (element.hasSubmitter()) {
19218        composeReference("submitter", element.getSubmitter());
19219      }
19220      if (element.hasPayee()) {
19221        composeReference("payee", element.getPayee());
19222      }
19223      if (element.hasDateElement()) {
19224        composeDate("date", element.getDateElement());
19225      }
19226      if (element.hasAmount()) {
19227        composeMoney("amount", element.getAmount());
19228      }
19229      composeElementClose(element);
19230      xml.exit(FHIR_NS, name);
19231    }
19232  }
19233
19234  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
19235    if (element != null) {
19236      composeElementAttributes(element);
19237      xml.enter(FHIR_NS, name);
19238      composeBackboneElements(element);
19239      if (element.hasType()) {
19240        composeCoding("type", element.getType());
19241      }
19242      if (element.hasTextElement()) {
19243        composeString("text", element.getTextElement());
19244      }
19245      composeElementClose(element);
19246      xml.exit(FHIR_NS, name);
19247    }
19248  }
19249
19250  protected void composePerson(String name, Person element) throws IOException {
19251    if (element != null) {
19252      composeDomainResourceAttributes(element);
19253      xml.enter(FHIR_NS, name);
19254      composeDomainResourceElements(element);
19255      if (element.hasIdentifier()) { 
19256        for (Identifier e : element.getIdentifier()) 
19257          composeIdentifier("identifier", e);
19258      }
19259      if (element.hasName()) { 
19260        for (HumanName e : element.getName()) 
19261          composeHumanName("name", e);
19262      }
19263      if (element.hasTelecom()) { 
19264        for (ContactPoint e : element.getTelecom()) 
19265          composeContactPoint("telecom", e);
19266      }
19267      if (element.hasGenderElement())
19268        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
19269      if (element.hasBirthDateElement()) {
19270        composeDate("birthDate", element.getBirthDateElement());
19271      }
19272      if (element.hasAddress()) { 
19273        for (Address e : element.getAddress()) 
19274          composeAddress("address", e);
19275      }
19276      if (element.hasPhoto()) {
19277        composeAttachment("photo", element.getPhoto());
19278      }
19279      if (element.hasManagingOrganization()) {
19280        composeReference("managingOrganization", element.getManagingOrganization());
19281      }
19282      if (element.hasActiveElement()) {
19283        composeBoolean("active", element.getActiveElement());
19284      }
19285      if (element.hasLink()) { 
19286        for (Person.PersonLinkComponent e : element.getLink()) 
19287          composePersonPersonLinkComponent("link", e);
19288      }
19289      composeElementClose(element);
19290      xml.exit(FHIR_NS, name);
19291    }
19292  }
19293
19294  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
19295    if (element != null) {
19296      composeElementAttributes(element);
19297      xml.enter(FHIR_NS, name);
19298      composeBackboneElements(element);
19299      if (element.hasTarget()) {
19300        composeReference("target", element.getTarget());
19301      }
19302      if (element.hasAssuranceElement())
19303        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
19304      composeElementClose(element);
19305      xml.exit(FHIR_NS, name);
19306    }
19307  }
19308
19309  protected void composePractitioner(String name, Practitioner element) throws IOException {
19310    if (element != null) {
19311      composeDomainResourceAttributes(element);
19312      xml.enter(FHIR_NS, name);
19313      composeDomainResourceElements(element);
19314      if (element.hasIdentifier()) { 
19315        for (Identifier e : element.getIdentifier()) 
19316          composeIdentifier("identifier", e);
19317      }
19318      if (element.hasActiveElement()) {
19319        composeBoolean("active", element.getActiveElement());
19320      }
19321      if (element.hasName()) {
19322        composeHumanName("name", element.getName());
19323      }
19324      if (element.hasTelecom()) { 
19325        for (ContactPoint e : element.getTelecom()) 
19326          composeContactPoint("telecom", e);
19327      }
19328      if (element.hasAddress()) { 
19329        for (Address e : element.getAddress()) 
19330          composeAddress("address", e);
19331      }
19332      if (element.hasGenderElement())
19333        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
19334      if (element.hasBirthDateElement()) {
19335        composeDate("birthDate", element.getBirthDateElement());
19336      }
19337      if (element.hasPhoto()) { 
19338        for (Attachment e : element.getPhoto()) 
19339          composeAttachment("photo", e);
19340      }
19341      if (element.hasPractitionerRole()) { 
19342        for (Practitioner.PractitionerPractitionerRoleComponent e : element.getPractitionerRole()) 
19343          composePractitionerPractitionerPractitionerRoleComponent("practitionerRole", e);
19344      }
19345      if (element.hasQualification()) { 
19346        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
19347          composePractitionerPractitionerQualificationComponent("qualification", e);
19348      }
19349      if (element.hasCommunication()) { 
19350        for (CodeableConcept e : element.getCommunication()) 
19351          composeCodeableConcept("communication", e);
19352      }
19353      composeElementClose(element);
19354      xml.exit(FHIR_NS, name);
19355    }
19356  }
19357
19358  protected void composePractitionerPractitionerPractitionerRoleComponent(String name, Practitioner.PractitionerPractitionerRoleComponent element) throws IOException {
19359    if (element != null) {
19360      composeElementAttributes(element);
19361      xml.enter(FHIR_NS, name);
19362      composeBackboneElements(element);
19363      if (element.hasManagingOrganization()) {
19364        composeReference("managingOrganization", element.getManagingOrganization());
19365      }
19366      if (element.hasRole()) {
19367        composeCodeableConcept("role", element.getRole());
19368      }
19369      if (element.hasSpecialty()) { 
19370        for (CodeableConcept e : element.getSpecialty()) 
19371          composeCodeableConcept("specialty", e);
19372      }
19373      if (element.hasPeriod()) {
19374        composePeriod("period", element.getPeriod());
19375      }
19376      if (element.hasLocation()) { 
19377        for (Reference e : element.getLocation()) 
19378          composeReference("location", e);
19379      }
19380      if (element.hasHealthcareService()) { 
19381        for (Reference e : element.getHealthcareService()) 
19382          composeReference("healthcareService", e);
19383      }
19384      composeElementClose(element);
19385      xml.exit(FHIR_NS, name);
19386    }
19387  }
19388
19389  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
19390    if (element != null) {
19391      composeElementAttributes(element);
19392      xml.enter(FHIR_NS, name);
19393      composeBackboneElements(element);
19394      if (element.hasIdentifier()) { 
19395        for (Identifier e : element.getIdentifier()) 
19396          composeIdentifier("identifier", e);
19397      }
19398      if (element.hasCode()) {
19399        composeCodeableConcept("code", element.getCode());
19400      }
19401      if (element.hasPeriod()) {
19402        composePeriod("period", element.getPeriod());
19403      }
19404      if (element.hasIssuer()) {
19405        composeReference("issuer", element.getIssuer());
19406      }
19407      composeElementClose(element);
19408      xml.exit(FHIR_NS, name);
19409    }
19410  }
19411
19412  protected void composeProcedure(String name, Procedure element) throws IOException {
19413    if (element != null) {
19414      composeDomainResourceAttributes(element);
19415      xml.enter(FHIR_NS, name);
19416      composeDomainResourceElements(element);
19417      if (element.hasIdentifier()) { 
19418        for (Identifier e : element.getIdentifier()) 
19419          composeIdentifier("identifier", e);
19420      }
19421      if (element.hasSubject()) {
19422        composeReference("subject", element.getSubject());
19423      }
19424      if (element.hasStatusElement())
19425        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
19426      if (element.hasCategory()) {
19427        composeCodeableConcept("category", element.getCategory());
19428      }
19429      if (element.hasCode()) {
19430        composeCodeableConcept("code", element.getCode());
19431      }
19432      if (element.hasNotPerformedElement()) {
19433        composeBoolean("notPerformed", element.getNotPerformedElement());
19434      }
19435      if (element.hasReasonNotPerformed()) { 
19436        for (CodeableConcept e : element.getReasonNotPerformed()) 
19437          composeCodeableConcept("reasonNotPerformed", e);
19438      }
19439      if (element.hasBodySite()) { 
19440        for (CodeableConcept e : element.getBodySite()) 
19441          composeCodeableConcept("bodySite", e);
19442      }
19443      if (element.hasReason()) {
19444        composeType("reason", element.getReason());
19445      }      if (element.hasPerformer()) { 
19446        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
19447          composeProcedureProcedurePerformerComponent("performer", e);
19448      }
19449      if (element.hasPerformed()) {
19450        composeType("performed", element.getPerformed());
19451      }      if (element.hasEncounter()) {
19452        composeReference("encounter", element.getEncounter());
19453      }
19454      if (element.hasLocation()) {
19455        composeReference("location", element.getLocation());
19456      }
19457      if (element.hasOutcome()) {
19458        composeCodeableConcept("outcome", element.getOutcome());
19459      }
19460      if (element.hasReport()) { 
19461        for (Reference e : element.getReport()) 
19462          composeReference("report", e);
19463      }
19464      if (element.hasComplication()) { 
19465        for (CodeableConcept e : element.getComplication()) 
19466          composeCodeableConcept("complication", e);
19467      }
19468      if (element.hasFollowUp()) { 
19469        for (CodeableConcept e : element.getFollowUp()) 
19470          composeCodeableConcept("followUp", e);
19471      }
19472      if (element.hasRequest()) {
19473        composeReference("request", element.getRequest());
19474      }
19475      if (element.hasNotes()) { 
19476        for (Annotation e : element.getNotes()) 
19477          composeAnnotation("notes", e);
19478      }
19479      if (element.hasFocalDevice()) { 
19480        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
19481          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
19482      }
19483      if (element.hasUsed()) { 
19484        for (Reference e : element.getUsed()) 
19485          composeReference("used", e);
19486      }
19487      composeElementClose(element);
19488      xml.exit(FHIR_NS, name);
19489    }
19490  }
19491
19492  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
19493    if (element != null) {
19494      composeElementAttributes(element);
19495      xml.enter(FHIR_NS, name);
19496      composeBackboneElements(element);
19497      if (element.hasActor()) {
19498        composeReference("actor", element.getActor());
19499      }
19500      if (element.hasRole()) {
19501        composeCodeableConcept("role", element.getRole());
19502      }
19503      composeElementClose(element);
19504      xml.exit(FHIR_NS, name);
19505    }
19506  }
19507
19508  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
19509    if (element != null) {
19510      composeElementAttributes(element);
19511      xml.enter(FHIR_NS, name);
19512      composeBackboneElements(element);
19513      if (element.hasAction()) {
19514        composeCodeableConcept("action", element.getAction());
19515      }
19516      if (element.hasManipulated()) {
19517        composeReference("manipulated", element.getManipulated());
19518      }
19519      composeElementClose(element);
19520      xml.exit(FHIR_NS, name);
19521    }
19522  }
19523
19524  protected void composeProcedureRequest(String name, ProcedureRequest element) throws IOException {
19525    if (element != null) {
19526      composeDomainResourceAttributes(element);
19527      xml.enter(FHIR_NS, name);
19528      composeDomainResourceElements(element);
19529      if (element.hasIdentifier()) { 
19530        for (Identifier e : element.getIdentifier()) 
19531          composeIdentifier("identifier", e);
19532      }
19533      if (element.hasSubject()) {
19534        composeReference("subject", element.getSubject());
19535      }
19536      if (element.hasCode()) {
19537        composeCodeableConcept("code", element.getCode());
19538      }
19539      if (element.hasBodySite()) { 
19540        for (CodeableConcept e : element.getBodySite()) 
19541          composeCodeableConcept("bodySite", e);
19542      }
19543      if (element.hasReason()) {
19544        composeType("reason", element.getReason());
19545      }      if (element.hasScheduled()) {
19546        composeType("scheduled", element.getScheduled());
19547      }      if (element.hasEncounter()) {
19548        composeReference("encounter", element.getEncounter());
19549      }
19550      if (element.hasPerformer()) {
19551        composeReference("performer", element.getPerformer());
19552      }
19553      if (element.hasStatusElement())
19554        composeEnumeration("status", element.getStatusElement(), new ProcedureRequest.ProcedureRequestStatusEnumFactory());
19555      if (element.hasNotes()) { 
19556        for (Annotation e : element.getNotes()) 
19557          composeAnnotation("notes", e);
19558      }
19559      if (element.hasAsNeeded()) {
19560        composeType("asNeeded", element.getAsNeeded());
19561      }      if (element.hasOrderedOnElement()) {
19562        composeDateTime("orderedOn", element.getOrderedOnElement());
19563      }
19564      if (element.hasOrderer()) {
19565        composeReference("orderer", element.getOrderer());
19566      }
19567      if (element.hasPriorityElement())
19568        composeEnumeration("priority", element.getPriorityElement(), new ProcedureRequest.ProcedureRequestPriorityEnumFactory());
19569      composeElementClose(element);
19570      xml.exit(FHIR_NS, name);
19571    }
19572  }
19573
19574  protected void composeProcessRequest(String name, ProcessRequest element) throws IOException {
19575    if (element != null) {
19576      composeDomainResourceAttributes(element);
19577      xml.enter(FHIR_NS, name);
19578      composeDomainResourceElements(element);
19579      if (element.hasActionElement())
19580        composeEnumeration("action", element.getActionElement(), new ProcessRequest.ActionListEnumFactory());
19581      if (element.hasIdentifier()) { 
19582        for (Identifier e : element.getIdentifier()) 
19583          composeIdentifier("identifier", e);
19584      }
19585      if (element.hasRuleset()) {
19586        composeCoding("ruleset", element.getRuleset());
19587      }
19588      if (element.hasOriginalRuleset()) {
19589        composeCoding("originalRuleset", element.getOriginalRuleset());
19590      }
19591      if (element.hasCreatedElement()) {
19592        composeDateTime("created", element.getCreatedElement());
19593      }
19594      if (element.hasTarget()) {
19595        composeReference("target", element.getTarget());
19596      }
19597      if (element.hasProvider()) {
19598        composeReference("provider", element.getProvider());
19599      }
19600      if (element.hasOrganization()) {
19601        composeReference("organization", element.getOrganization());
19602      }
19603      if (element.hasRequest()) {
19604        composeReference("request", element.getRequest());
19605      }
19606      if (element.hasResponse()) {
19607        composeReference("response", element.getResponse());
19608      }
19609      if (element.hasNullifyElement()) {
19610        composeBoolean("nullify", element.getNullifyElement());
19611      }
19612      if (element.hasReferenceElement()) {
19613        composeString("reference", element.getReferenceElement());
19614      }
19615      if (element.hasItem()) { 
19616        for (ProcessRequest.ItemsComponent e : element.getItem()) 
19617          composeProcessRequestItemsComponent("item", e);
19618      }
19619      if (element.hasInclude()) { 
19620        for (StringType e : element.getInclude()) 
19621          composeString("include", e);
19622      }
19623      if (element.hasExclude()) { 
19624        for (StringType e : element.getExclude()) 
19625          composeString("exclude", e);
19626      }
19627      if (element.hasPeriod()) {
19628        composePeriod("period", element.getPeriod());
19629      }
19630      composeElementClose(element);
19631      xml.exit(FHIR_NS, name);
19632    }
19633  }
19634
19635  protected void composeProcessRequestItemsComponent(String name, ProcessRequest.ItemsComponent element) throws IOException {
19636    if (element != null) {
19637      composeElementAttributes(element);
19638      xml.enter(FHIR_NS, name);
19639      composeBackboneElements(element);
19640      if (element.hasSequenceLinkIdElement()) {
19641        composeInteger("sequenceLinkId", element.getSequenceLinkIdElement());
19642      }
19643      composeElementClose(element);
19644      xml.exit(FHIR_NS, name);
19645    }
19646  }
19647
19648  protected void composeProcessResponse(String name, ProcessResponse element) throws IOException {
19649    if (element != null) {
19650      composeDomainResourceAttributes(element);
19651      xml.enter(FHIR_NS, name);
19652      composeDomainResourceElements(element);
19653      if (element.hasIdentifier()) { 
19654        for (Identifier e : element.getIdentifier()) 
19655          composeIdentifier("identifier", e);
19656      }
19657      if (element.hasRequest()) {
19658        composeReference("request", element.getRequest());
19659      }
19660      if (element.hasOutcome()) {
19661        composeCoding("outcome", element.getOutcome());
19662      }
19663      if (element.hasDispositionElement()) {
19664        composeString("disposition", element.getDispositionElement());
19665      }
19666      if (element.hasRuleset()) {
19667        composeCoding("ruleset", element.getRuleset());
19668      }
19669      if (element.hasOriginalRuleset()) {
19670        composeCoding("originalRuleset", element.getOriginalRuleset());
19671      }
19672      if (element.hasCreatedElement()) {
19673        composeDateTime("created", element.getCreatedElement());
19674      }
19675      if (element.hasOrganization()) {
19676        composeReference("organization", element.getOrganization());
19677      }
19678      if (element.hasRequestProvider()) {
19679        composeReference("requestProvider", element.getRequestProvider());
19680      }
19681      if (element.hasRequestOrganization()) {
19682        composeReference("requestOrganization", element.getRequestOrganization());
19683      }
19684      if (element.hasForm()) {
19685        composeCoding("form", element.getForm());
19686      }
19687      if (element.hasNotes()) { 
19688        for (ProcessResponse.ProcessResponseNotesComponent e : element.getNotes()) 
19689          composeProcessResponseProcessResponseNotesComponent("notes", e);
19690      }
19691      if (element.hasError()) { 
19692        for (Coding e : element.getError()) 
19693          composeCoding("error", e);
19694      }
19695      composeElementClose(element);
19696      xml.exit(FHIR_NS, name);
19697    }
19698  }
19699
19700  protected void composeProcessResponseProcessResponseNotesComponent(String name, ProcessResponse.ProcessResponseNotesComponent element) throws IOException {
19701    if (element != null) {
19702      composeElementAttributes(element);
19703      xml.enter(FHIR_NS, name);
19704      composeBackboneElements(element);
19705      if (element.hasType()) {
19706        composeCoding("type", element.getType());
19707      }
19708      if (element.hasTextElement()) {
19709        composeString("text", element.getTextElement());
19710      }
19711      composeElementClose(element);
19712      xml.exit(FHIR_NS, name);
19713    }
19714  }
19715
19716  protected void composeProvenance(String name, Provenance element) throws IOException {
19717    if (element != null) {
19718      composeDomainResourceAttributes(element);
19719      xml.enter(FHIR_NS, name);
19720      composeDomainResourceElements(element);
19721      if (element.hasTarget()) { 
19722        for (Reference e : element.getTarget()) 
19723          composeReference("target", e);
19724      }
19725      if (element.hasPeriod()) {
19726        composePeriod("period", element.getPeriod());
19727      }
19728      if (element.hasRecordedElement()) {
19729        composeInstant("recorded", element.getRecordedElement());
19730      }
19731      if (element.hasReason()) { 
19732        for (CodeableConcept e : element.getReason()) 
19733          composeCodeableConcept("reason", e);
19734      }
19735      if (element.hasActivity()) {
19736        composeCodeableConcept("activity", element.getActivity());
19737      }
19738      if (element.hasLocation()) {
19739        composeReference("location", element.getLocation());
19740      }
19741      if (element.hasPolicy()) { 
19742        for (UriType e : element.getPolicy()) 
19743          composeUri("policy", e);
19744      }
19745      if (element.hasAgent()) { 
19746        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
19747          composeProvenanceProvenanceAgentComponent("agent", e);
19748      }
19749      if (element.hasEntity()) { 
19750        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
19751          composeProvenanceProvenanceEntityComponent("entity", e);
19752      }
19753      if (element.hasSignature()) { 
19754        for (Signature e : element.getSignature()) 
19755          composeSignature("signature", e);
19756      }
19757      composeElementClose(element);
19758      xml.exit(FHIR_NS, name);
19759    }
19760  }
19761
19762  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
19763    if (element != null) {
19764      composeElementAttributes(element);
19765      xml.enter(FHIR_NS, name);
19766      composeBackboneElements(element);
19767      if (element.hasRole()) {
19768        composeCoding("role", element.getRole());
19769      }
19770      if (element.hasActor()) {
19771        composeReference("actor", element.getActor());
19772      }
19773      if (element.hasUserId()) {
19774        composeIdentifier("userId", element.getUserId());
19775      }
19776      if (element.hasRelatedAgent()) { 
19777        for (Provenance.ProvenanceAgentRelatedAgentComponent e : element.getRelatedAgent()) 
19778          composeProvenanceProvenanceAgentRelatedAgentComponent("relatedAgent", e);
19779      }
19780      composeElementClose(element);
19781      xml.exit(FHIR_NS, name);
19782    }
19783  }
19784
19785  protected void composeProvenanceProvenanceAgentRelatedAgentComponent(String name, Provenance.ProvenanceAgentRelatedAgentComponent element) throws IOException {
19786    if (element != null) {
19787      composeElementAttributes(element);
19788      xml.enter(FHIR_NS, name);
19789      composeBackboneElements(element);
19790      if (element.hasType()) {
19791        composeCodeableConcept("type", element.getType());
19792      }
19793      if (element.hasTargetElement()) {
19794        composeUri("target", element.getTargetElement());
19795      }
19796      composeElementClose(element);
19797      xml.exit(FHIR_NS, name);
19798    }
19799  }
19800
19801  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
19802    if (element != null) {
19803      composeElementAttributes(element);
19804      xml.enter(FHIR_NS, name);
19805      composeBackboneElements(element);
19806      if (element.hasRoleElement())
19807        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
19808      if (element.hasType()) {
19809        composeCoding("type", element.getType());
19810      }
19811      if (element.hasReferenceElement()) {
19812        composeUri("reference", element.getReferenceElement());
19813      }
19814      if (element.hasDisplayElement()) {
19815        composeString("display", element.getDisplayElement());
19816      }
19817      if (element.hasAgent()) {
19818        composeProvenanceProvenanceAgentComponent("agent", element.getAgent());
19819      }
19820      composeElementClose(element);
19821      xml.exit(FHIR_NS, name);
19822    }
19823  }
19824
19825  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
19826    if (element != null) {
19827      composeDomainResourceAttributes(element);
19828      xml.enter(FHIR_NS, name);
19829      composeDomainResourceElements(element);
19830      if (element.hasIdentifier()) { 
19831        for (Identifier e : element.getIdentifier()) 
19832          composeIdentifier("identifier", e);
19833      }
19834      if (element.hasVersionElement()) {
19835        composeString("version", element.getVersionElement());
19836      }
19837      if (element.hasStatusElement())
19838        composeEnumeration("status", element.getStatusElement(), new Questionnaire.QuestionnaireStatusEnumFactory());
19839      if (element.hasDateElement()) {
19840        composeDateTime("date", element.getDateElement());
19841      }
19842      if (element.hasPublisherElement()) {
19843        composeString("publisher", element.getPublisherElement());
19844      }
19845      if (element.hasTelecom()) { 
19846        for (ContactPoint e : element.getTelecom()) 
19847          composeContactPoint("telecom", e);
19848      }
19849      if (element.hasSubjectType()) { 
19850        for (CodeType e : element.getSubjectType()) 
19851          composeCode("subjectType", e);
19852      }
19853      if (element.hasGroup()) {
19854        composeQuestionnaireGroupComponent("group", element.getGroup());
19855      }
19856      composeElementClose(element);
19857      xml.exit(FHIR_NS, name);
19858    }
19859  }
19860
19861  protected void composeQuestionnaireGroupComponent(String name, Questionnaire.GroupComponent element) throws IOException {
19862    if (element != null) {
19863      composeElementAttributes(element);
19864      xml.enter(FHIR_NS, name);
19865      composeBackboneElements(element);
19866      if (element.hasLinkIdElement()) {
19867        composeString("linkId", element.getLinkIdElement());
19868      }
19869      if (element.hasTitleElement()) {
19870        composeString("title", element.getTitleElement());
19871      }
19872      if (element.hasConcept()) { 
19873        for (Coding e : element.getConcept()) 
19874          composeCoding("concept", e);
19875      }
19876      if (element.hasTextElement()) {
19877        composeString("text", element.getTextElement());
19878      }
19879      if (element.hasRequiredElement()) {
19880        composeBoolean("required", element.getRequiredElement());
19881      }
19882      if (element.hasRepeatsElement()) {
19883        composeBoolean("repeats", element.getRepeatsElement());
19884      }
19885      if (element.hasGroup()) { 
19886        for (Questionnaire.GroupComponent e : element.getGroup()) 
19887          composeQuestionnaireGroupComponent("group", e);
19888      }
19889      if (element.hasQuestion()) { 
19890        for (Questionnaire.QuestionComponent e : element.getQuestion()) 
19891          composeQuestionnaireQuestionComponent("question", e);
19892      }
19893      composeElementClose(element);
19894      xml.exit(FHIR_NS, name);
19895    }
19896  }
19897
19898  protected void composeQuestionnaireQuestionComponent(String name, Questionnaire.QuestionComponent element) throws IOException {
19899    if (element != null) {
19900      composeElementAttributes(element);
19901      xml.enter(FHIR_NS, name);
19902      composeBackboneElements(element);
19903      if (element.hasLinkIdElement()) {
19904        composeString("linkId", element.getLinkIdElement());
19905      }
19906      if (element.hasConcept()) { 
19907        for (Coding e : element.getConcept()) 
19908          composeCoding("concept", e);
19909      }
19910      if (element.hasTextElement()) {
19911        composeString("text", element.getTextElement());
19912      }
19913      if (element.hasTypeElement())
19914        composeEnumeration("type", element.getTypeElement(), new Questionnaire.AnswerFormatEnumFactory());
19915      if (element.hasRequiredElement()) {
19916        composeBoolean("required", element.getRequiredElement());
19917      }
19918      if (element.hasRepeatsElement()) {
19919        composeBoolean("repeats", element.getRepeatsElement());
19920      }
19921      if (element.hasOptions()) {
19922        composeReference("options", element.getOptions());
19923      }
19924      if (element.hasOption()) { 
19925        for (Coding e : element.getOption()) 
19926          composeCoding("option", e);
19927      }
19928      if (element.hasGroup()) { 
19929        for (Questionnaire.GroupComponent e : element.getGroup()) 
19930          composeQuestionnaireGroupComponent("group", e);
19931      }
19932      composeElementClose(element);
19933      xml.exit(FHIR_NS, name);
19934    }
19935  }
19936
19937  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
19938    if (element != null) {
19939      composeDomainResourceAttributes(element);
19940      xml.enter(FHIR_NS, name);
19941      composeDomainResourceElements(element);
19942      if (element.hasIdentifier()) {
19943        composeIdentifier("identifier", element.getIdentifier());
19944      }
19945      if (element.hasQuestionnaire()) {
19946        composeReference("questionnaire", element.getQuestionnaire());
19947      }
19948      if (element.hasStatusElement())
19949        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
19950      if (element.hasSubject()) {
19951        composeReference("subject", element.getSubject());
19952      }
19953      if (element.hasAuthor()) {
19954        composeReference("author", element.getAuthor());
19955      }
19956      if (element.hasAuthoredElement()) {
19957        composeDateTime("authored", element.getAuthoredElement());
19958      }
19959      if (element.hasSource()) {
19960        composeReference("source", element.getSource());
19961      }
19962      if (element.hasEncounter()) {
19963        composeReference("encounter", element.getEncounter());
19964      }
19965      if (element.hasGroup()) {
19966        composeQuestionnaireResponseGroupComponent("group", element.getGroup());
19967      }
19968      composeElementClose(element);
19969      xml.exit(FHIR_NS, name);
19970    }
19971  }
19972
19973  protected void composeQuestionnaireResponseGroupComponent(String name, QuestionnaireResponse.GroupComponent element) throws IOException {
19974    if (element != null) {
19975      composeElementAttributes(element);
19976      xml.enter(FHIR_NS, name);
19977      composeBackboneElements(element);
19978      if (element.hasLinkIdElement()) {
19979        composeString("linkId", element.getLinkIdElement());
19980      }
19981      if (element.hasTitleElement()) {
19982        composeString("title", element.getTitleElement());
19983      }
19984      if (element.hasTextElement()) {
19985        composeString("text", element.getTextElement());
19986      }
19987      if (element.hasSubject()) {
19988        composeReference("subject", element.getSubject());
19989      }
19990      if (element.hasGroup()) { 
19991        for (QuestionnaireResponse.GroupComponent e : element.getGroup()) 
19992          composeQuestionnaireResponseGroupComponent("group", e);
19993      }
19994      if (element.hasQuestion()) { 
19995        for (QuestionnaireResponse.QuestionComponent e : element.getQuestion()) 
19996          composeQuestionnaireResponseQuestionComponent("question", e);
19997      }
19998      composeElementClose(element);
19999      xml.exit(FHIR_NS, name);
20000    }
20001  }
20002
20003  protected void composeQuestionnaireResponseQuestionComponent(String name, QuestionnaireResponse.QuestionComponent element) throws IOException {
20004    if (element != null) {
20005      composeElementAttributes(element);
20006      xml.enter(FHIR_NS, name);
20007      composeBackboneElements(element);
20008      if (element.hasLinkIdElement()) {
20009        composeString("linkId", element.getLinkIdElement());
20010      }
20011      if (element.hasTextElement()) {
20012        composeString("text", element.getTextElement());
20013      }
20014      if (element.hasAnswer()) { 
20015        for (QuestionnaireResponse.QuestionAnswerComponent e : element.getAnswer()) 
20016          composeQuestionnaireResponseQuestionAnswerComponent("answer", e);
20017      }
20018      composeElementClose(element);
20019      xml.exit(FHIR_NS, name);
20020    }
20021  }
20022
20023  protected void composeQuestionnaireResponseQuestionAnswerComponent(String name, QuestionnaireResponse.QuestionAnswerComponent element) throws IOException {
20024    if (element != null) {
20025      composeElementAttributes(element);
20026      xml.enter(FHIR_NS, name);
20027      composeBackboneElements(element);
20028      if (element.hasValue()) {
20029        composeType("value", element.getValue());
20030      }      if (element.hasGroup()) { 
20031        for (QuestionnaireResponse.GroupComponent e : element.getGroup()) 
20032          composeQuestionnaireResponseGroupComponent("group", e);
20033      }
20034      composeElementClose(element);
20035      xml.exit(FHIR_NS, name);
20036    }
20037  }
20038
20039  protected void composeReferralRequest(String name, ReferralRequest element) throws IOException {
20040    if (element != null) {
20041      composeDomainResourceAttributes(element);
20042      xml.enter(FHIR_NS, name);
20043      composeDomainResourceElements(element);
20044      if (element.hasStatusElement())
20045        composeEnumeration("status", element.getStatusElement(), new ReferralRequest.ReferralStatusEnumFactory());
20046      if (element.hasIdentifier()) { 
20047        for (Identifier e : element.getIdentifier()) 
20048          composeIdentifier("identifier", e);
20049      }
20050      if (element.hasDateElement()) {
20051        composeDateTime("date", element.getDateElement());
20052      }
20053      if (element.hasType()) {
20054        composeCodeableConcept("type", element.getType());
20055      }
20056      if (element.hasSpecialty()) {
20057        composeCodeableConcept("specialty", element.getSpecialty());
20058      }
20059      if (element.hasPriority()) {
20060        composeCodeableConcept("priority", element.getPriority());
20061      }
20062      if (element.hasPatient()) {
20063        composeReference("patient", element.getPatient());
20064      }
20065      if (element.hasRequester()) {
20066        composeReference("requester", element.getRequester());
20067      }
20068      if (element.hasRecipient()) { 
20069        for (Reference e : element.getRecipient()) 
20070          composeReference("recipient", e);
20071      }
20072      if (element.hasEncounter()) {
20073        composeReference("encounter", element.getEncounter());
20074      }
20075      if (element.hasDateSentElement()) {
20076        composeDateTime("dateSent", element.getDateSentElement());
20077      }
20078      if (element.hasReason()) {
20079        composeCodeableConcept("reason", element.getReason());
20080      }
20081      if (element.hasDescriptionElement()) {
20082        composeString("description", element.getDescriptionElement());
20083      }
20084      if (element.hasServiceRequested()) { 
20085        for (CodeableConcept e : element.getServiceRequested()) 
20086          composeCodeableConcept("serviceRequested", e);
20087      }
20088      if (element.hasSupportingInformation()) { 
20089        for (Reference e : element.getSupportingInformation()) 
20090          composeReference("supportingInformation", e);
20091      }
20092      if (element.hasFulfillmentTime()) {
20093        composePeriod("fulfillmentTime", element.getFulfillmentTime());
20094      }
20095      composeElementClose(element);
20096      xml.exit(FHIR_NS, name);
20097    }
20098  }
20099
20100  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
20101    if (element != null) {
20102      composeDomainResourceAttributes(element);
20103      xml.enter(FHIR_NS, name);
20104      composeDomainResourceElements(element);
20105      if (element.hasIdentifier()) { 
20106        for (Identifier e : element.getIdentifier()) 
20107          composeIdentifier("identifier", e);
20108      }
20109      if (element.hasPatient()) {
20110        composeReference("patient", element.getPatient());
20111      }
20112      if (element.hasRelationship()) {
20113        composeCodeableConcept("relationship", element.getRelationship());
20114      }
20115      if (element.hasName()) {
20116        composeHumanName("name", element.getName());
20117      }
20118      if (element.hasTelecom()) { 
20119        for (ContactPoint e : element.getTelecom()) 
20120          composeContactPoint("telecom", e);
20121      }
20122      if (element.hasGenderElement())
20123        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
20124      if (element.hasBirthDateElement()) {
20125        composeDate("birthDate", element.getBirthDateElement());
20126      }
20127      if (element.hasAddress()) { 
20128        for (Address e : element.getAddress()) 
20129          composeAddress("address", e);
20130      }
20131      if (element.hasPhoto()) { 
20132        for (Attachment e : element.getPhoto()) 
20133          composeAttachment("photo", e);
20134      }
20135      if (element.hasPeriod()) {
20136        composePeriod("period", element.getPeriod());
20137      }
20138      composeElementClose(element);
20139      xml.exit(FHIR_NS, name);
20140    }
20141  }
20142
20143  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
20144    if (element != null) {
20145      composeDomainResourceAttributes(element);
20146      xml.enter(FHIR_NS, name);
20147      composeDomainResourceElements(element);
20148      if (element.hasSubject()) {
20149        composeReference("subject", element.getSubject());
20150      }
20151      if (element.hasDateElement()) {
20152        composeDateTime("date", element.getDateElement());
20153      }
20154      if (element.hasCondition()) {
20155        composeReference("condition", element.getCondition());
20156      }
20157      if (element.hasEncounter()) {
20158        composeReference("encounter", element.getEncounter());
20159      }
20160      if (element.hasPerformer()) {
20161        composeReference("performer", element.getPerformer());
20162      }
20163      if (element.hasIdentifier()) {
20164        composeIdentifier("identifier", element.getIdentifier());
20165      }
20166      if (element.hasMethod()) {
20167        composeCodeableConcept("method", element.getMethod());
20168      }
20169      if (element.hasBasis()) { 
20170        for (Reference e : element.getBasis()) 
20171          composeReference("basis", e);
20172      }
20173      if (element.hasPrediction()) { 
20174        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
20175          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
20176      }
20177      if (element.hasMitigationElement()) {
20178        composeString("mitigation", element.getMitigationElement());
20179      }
20180      composeElementClose(element);
20181      xml.exit(FHIR_NS, name);
20182    }
20183  }
20184
20185  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
20186    if (element != null) {
20187      composeElementAttributes(element);
20188      xml.enter(FHIR_NS, name);
20189      composeBackboneElements(element);
20190      if (element.hasOutcome()) {
20191        composeCodeableConcept("outcome", element.getOutcome());
20192      }
20193      if (element.hasProbability()) {
20194        composeType("probability", element.getProbability());
20195      }      if (element.hasRelativeRiskElement()) {
20196        composeDecimal("relativeRisk", element.getRelativeRiskElement());
20197      }
20198      if (element.hasWhen()) {
20199        composeType("when", element.getWhen());
20200      }      if (element.hasRationaleElement()) {
20201        composeString("rationale", element.getRationaleElement());
20202      }
20203      composeElementClose(element);
20204      xml.exit(FHIR_NS, name);
20205    }
20206  }
20207
20208  protected void composeSchedule(String name, Schedule element) throws IOException {
20209    if (element != null) {
20210      composeDomainResourceAttributes(element);
20211      xml.enter(FHIR_NS, name);
20212      composeDomainResourceElements(element);
20213      if (element.hasIdentifier()) { 
20214        for (Identifier e : element.getIdentifier()) 
20215          composeIdentifier("identifier", e);
20216      }
20217      if (element.hasType()) { 
20218        for (CodeableConcept e : element.getType()) 
20219          composeCodeableConcept("type", e);
20220      }
20221      if (element.hasActor()) {
20222        composeReference("actor", element.getActor());
20223      }
20224      if (element.hasPlanningHorizon()) {
20225        composePeriod("planningHorizon", element.getPlanningHorizon());
20226      }
20227      if (element.hasCommentElement()) {
20228        composeString("comment", element.getCommentElement());
20229      }
20230      composeElementClose(element);
20231      xml.exit(FHIR_NS, name);
20232    }
20233  }
20234
20235  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
20236    if (element != null) {
20237      composeDomainResourceAttributes(element);
20238      xml.enter(FHIR_NS, name);
20239      composeDomainResourceElements(element);
20240      if (element.hasUrlElement()) {
20241        composeUri("url", element.getUrlElement());
20242      }
20243      if (element.hasNameElement()) {
20244        composeString("name", element.getNameElement());
20245      }
20246      if (element.hasStatusElement())
20247        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
20248      if (element.hasExperimentalElement()) {
20249        composeBoolean("experimental", element.getExperimentalElement());
20250      }
20251      if (element.hasPublisherElement()) {
20252        composeString("publisher", element.getPublisherElement());
20253      }
20254      if (element.hasContact()) { 
20255        for (SearchParameter.SearchParameterContactComponent e : element.getContact()) 
20256          composeSearchParameterSearchParameterContactComponent("contact", e);
20257      }
20258      if (element.hasDateElement()) {
20259        composeDateTime("date", element.getDateElement());
20260      }
20261      if (element.hasRequirementsElement()) {
20262        composeString("requirements", element.getRequirementsElement());
20263      }
20264      if (element.hasCodeElement()) {
20265        composeCode("code", element.getCodeElement());
20266      }
20267      if (element.hasBaseElement()) {
20268        composeCode("base", element.getBaseElement());
20269      }
20270      if (element.hasTypeElement())
20271        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
20272      if (element.hasDescriptionElement()) {
20273        composeString("description", element.getDescriptionElement());
20274      }
20275      if (element.hasXpathElement()) {
20276        composeString("xpath", element.getXpathElement());
20277      }
20278      if (element.hasXpathUsageElement())
20279        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
20280      if (element.hasTarget()) { 
20281        for (CodeType e : element.getTarget()) 
20282          composeCode("target", e);
20283      }
20284      composeElementClose(element);
20285      xml.exit(FHIR_NS, name);
20286    }
20287  }
20288
20289  protected void composeSearchParameterSearchParameterContactComponent(String name, SearchParameter.SearchParameterContactComponent element) throws IOException {
20290    if (element != null) {
20291      composeElementAttributes(element);
20292      xml.enter(FHIR_NS, name);
20293      composeBackboneElements(element);
20294      if (element.hasNameElement()) {
20295        composeString("name", element.getNameElement());
20296      }
20297      if (element.hasTelecom()) { 
20298        for (ContactPoint e : element.getTelecom()) 
20299          composeContactPoint("telecom", e);
20300      }
20301      composeElementClose(element);
20302      xml.exit(FHIR_NS, name);
20303    }
20304  }
20305
20306  protected void composeSlot(String name, Slot element) throws IOException {
20307    if (element != null) {
20308      composeDomainResourceAttributes(element);
20309      xml.enter(FHIR_NS, name);
20310      composeDomainResourceElements(element);
20311      if (element.hasIdentifier()) { 
20312        for (Identifier e : element.getIdentifier()) 
20313          composeIdentifier("identifier", e);
20314      }
20315      if (element.hasType()) {
20316        composeCodeableConcept("type", element.getType());
20317      }
20318      if (element.hasSchedule()) {
20319        composeReference("schedule", element.getSchedule());
20320      }
20321      if (element.hasFreeBusyTypeElement())
20322        composeEnumeration("freeBusyType", element.getFreeBusyTypeElement(), new Slot.SlotStatusEnumFactory());
20323      if (element.hasStartElement()) {
20324        composeInstant("start", element.getStartElement());
20325      }
20326      if (element.hasEndElement()) {
20327        composeInstant("end", element.getEndElement());
20328      }
20329      if (element.hasOverbookedElement()) {
20330        composeBoolean("overbooked", element.getOverbookedElement());
20331      }
20332      if (element.hasCommentElement()) {
20333        composeString("comment", element.getCommentElement());
20334      }
20335      composeElementClose(element);
20336      xml.exit(FHIR_NS, name);
20337    }
20338  }
20339
20340  protected void composeSpecimen(String name, Specimen element) throws IOException {
20341    if (element != null) {
20342      composeDomainResourceAttributes(element);
20343      xml.enter(FHIR_NS, name);
20344      composeDomainResourceElements(element);
20345      if (element.hasIdentifier()) { 
20346        for (Identifier e : element.getIdentifier()) 
20347          composeIdentifier("identifier", e);
20348      }
20349      if (element.hasStatusElement())
20350        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
20351      if (element.hasType()) {
20352        composeCodeableConcept("type", element.getType());
20353      }
20354      if (element.hasParent()) { 
20355        for (Reference e : element.getParent()) 
20356          composeReference("parent", e);
20357      }
20358      if (element.hasSubject()) {
20359        composeReference("subject", element.getSubject());
20360      }
20361      if (element.hasAccessionIdentifier()) {
20362        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
20363      }
20364      if (element.hasReceivedTimeElement()) {
20365        composeDateTime("receivedTime", element.getReceivedTimeElement());
20366      }
20367      if (element.hasCollection()) {
20368        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
20369      }
20370      if (element.hasTreatment()) { 
20371        for (Specimen.SpecimenTreatmentComponent e : element.getTreatment()) 
20372          composeSpecimenSpecimenTreatmentComponent("treatment", e);
20373      }
20374      if (element.hasContainer()) { 
20375        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
20376          composeSpecimenSpecimenContainerComponent("container", e);
20377      }
20378      composeElementClose(element);
20379      xml.exit(FHIR_NS, name);
20380    }
20381  }
20382
20383  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
20384    if (element != null) {
20385      composeElementAttributes(element);
20386      xml.enter(FHIR_NS, name);
20387      composeBackboneElements(element);
20388      if (element.hasCollector()) {
20389        composeReference("collector", element.getCollector());
20390      }
20391      if (element.hasComment()) { 
20392        for (StringType e : element.getComment()) 
20393          composeString("comment", e);
20394      }
20395      if (element.hasCollected()) {
20396        composeType("collected", element.getCollected());
20397      }      if (element.hasQuantity()) {
20398        composeSimpleQuantity("quantity", element.getQuantity());
20399      }
20400      if (element.hasMethod()) {
20401        composeCodeableConcept("method", element.getMethod());
20402      }
20403      if (element.hasBodySite()) {
20404        composeCodeableConcept("bodySite", element.getBodySite());
20405      }
20406      composeElementClose(element);
20407      xml.exit(FHIR_NS, name);
20408    }
20409  }
20410
20411  protected void composeSpecimenSpecimenTreatmentComponent(String name, Specimen.SpecimenTreatmentComponent element) throws IOException {
20412    if (element != null) {
20413      composeElementAttributes(element);
20414      xml.enter(FHIR_NS, name);
20415      composeBackboneElements(element);
20416      if (element.hasDescriptionElement()) {
20417        composeString("description", element.getDescriptionElement());
20418      }
20419      if (element.hasProcedure()) {
20420        composeCodeableConcept("procedure", element.getProcedure());
20421      }
20422      if (element.hasAdditive()) { 
20423        for (Reference e : element.getAdditive()) 
20424          composeReference("additive", e);
20425      }
20426      composeElementClose(element);
20427      xml.exit(FHIR_NS, name);
20428    }
20429  }
20430
20431  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
20432    if (element != null) {
20433      composeElementAttributes(element);
20434      xml.enter(FHIR_NS, name);
20435      composeBackboneElements(element);
20436      if (element.hasIdentifier()) { 
20437        for (Identifier e : element.getIdentifier()) 
20438          composeIdentifier("identifier", e);
20439      }
20440      if (element.hasDescriptionElement()) {
20441        composeString("description", element.getDescriptionElement());
20442      }
20443      if (element.hasType()) {
20444        composeCodeableConcept("type", element.getType());
20445      }
20446      if (element.hasCapacity()) {
20447        composeSimpleQuantity("capacity", element.getCapacity());
20448      }
20449      if (element.hasSpecimenQuantity()) {
20450        composeSimpleQuantity("specimenQuantity", element.getSpecimenQuantity());
20451      }
20452      if (element.hasAdditive()) {
20453        composeType("additive", element.getAdditive());
20454      }      composeElementClose(element);
20455      xml.exit(FHIR_NS, name);
20456    }
20457  }
20458
20459  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
20460    if (element != null) {
20461      composeDomainResourceAttributes(element);
20462      xml.enter(FHIR_NS, name);
20463      composeDomainResourceElements(element);
20464      if (element.hasUrlElement()) {
20465        composeUri("url", element.getUrlElement());
20466      }
20467      if (element.hasIdentifier()) { 
20468        for (Identifier e : element.getIdentifier()) 
20469          composeIdentifier("identifier", e);
20470      }
20471      if (element.hasVersionElement()) {
20472        composeString("version", element.getVersionElement());
20473      }
20474      if (element.hasNameElement()) {
20475        composeString("name", element.getNameElement());
20476      }
20477      if (element.hasDisplayElement()) {
20478        composeString("display", element.getDisplayElement());
20479      }
20480      if (element.hasStatusElement())
20481        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
20482      if (element.hasExperimentalElement()) {
20483        composeBoolean("experimental", element.getExperimentalElement());
20484      }
20485      if (element.hasPublisherElement()) {
20486        composeString("publisher", element.getPublisherElement());
20487      }
20488      if (element.hasContact()) { 
20489        for (StructureDefinition.StructureDefinitionContactComponent e : element.getContact()) 
20490          composeStructureDefinitionStructureDefinitionContactComponent("contact", e);
20491      }
20492      if (element.hasDateElement()) {
20493        composeDateTime("date", element.getDateElement());
20494      }
20495      if (element.hasDescriptionElement()) {
20496        composeString("description", element.getDescriptionElement());
20497      }
20498      if (element.hasUseContext()) { 
20499        for (CodeableConcept e : element.getUseContext()) 
20500          composeCodeableConcept("useContext", e);
20501      }
20502      if (element.hasRequirementsElement()) {
20503        composeString("requirements", element.getRequirementsElement());
20504      }
20505      if (element.hasCopyrightElement()) {
20506        composeString("copyright", element.getCopyrightElement());
20507      }
20508      if (element.hasCode()) { 
20509        for (Coding e : element.getCode()) 
20510          composeCoding("code", e);
20511      }
20512      if (element.hasFhirVersionElement()) {
20513        composeId("fhirVersion", element.getFhirVersionElement());
20514      }
20515      if (element.hasMapping()) { 
20516        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
20517          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
20518      }
20519      if (element.hasKindElement())
20520        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
20521      if (element.hasConstrainedTypeElement()) {
20522        composeCode("constrainedType", element.getConstrainedTypeElement());
20523      }
20524      if (element.hasAbstractElement()) {
20525        composeBoolean("abstract", element.getAbstractElement());
20526      }
20527      if (element.hasContextTypeElement())
20528        composeEnumeration("contextType", element.getContextTypeElement(), new StructureDefinition.ExtensionContextEnumFactory());
20529      if (element.hasContext()) { 
20530        for (StringType e : element.getContext()) 
20531          composeString("context", e);
20532      }
20533      if (element.hasBaseElement()) {
20534        composeUri("base", element.getBaseElement());
20535      }
20536      if (element.hasSnapshot()) {
20537        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
20538      }
20539      if (element.hasDifferential()) {
20540        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
20541      }
20542      composeElementClose(element);
20543      xml.exit(FHIR_NS, name);
20544    }
20545  }
20546
20547  protected void composeStructureDefinitionStructureDefinitionContactComponent(String name, StructureDefinition.StructureDefinitionContactComponent element) throws IOException {
20548    if (element != null) {
20549      composeElementAttributes(element);
20550      xml.enter(FHIR_NS, name);
20551      composeBackboneElements(element);
20552      if (element.hasNameElement()) {
20553        composeString("name", element.getNameElement());
20554      }
20555      if (element.hasTelecom()) { 
20556        for (ContactPoint e : element.getTelecom()) 
20557          composeContactPoint("telecom", e);
20558      }
20559      composeElementClose(element);
20560      xml.exit(FHIR_NS, name);
20561    }
20562  }
20563
20564  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
20565    if (element != null) {
20566      composeElementAttributes(element);
20567      xml.enter(FHIR_NS, name);
20568      composeBackboneElements(element);
20569      if (element.hasIdentityElement()) {
20570        composeId("identity", element.getIdentityElement());
20571      }
20572      if (element.hasUriElement()) {
20573        composeUri("uri", element.getUriElement());
20574      }
20575      if (element.hasNameElement()) {
20576        composeString("name", element.getNameElement());
20577      }
20578      if (element.hasCommentsElement()) {
20579        composeString("comments", element.getCommentsElement());
20580      }
20581      composeElementClose(element);
20582      xml.exit(FHIR_NS, name);
20583    }
20584  }
20585
20586  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
20587    if (element != null) {
20588      composeElementAttributes(element);
20589      xml.enter(FHIR_NS, name);
20590      composeBackboneElements(element);
20591      if (element.hasElement()) { 
20592        for (ElementDefinition e : element.getElement()) 
20593          composeElementDefinition("element", e);
20594      }
20595      composeElementClose(element);
20596      xml.exit(FHIR_NS, name);
20597    }
20598  }
20599
20600  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
20601    if (element != null) {
20602      composeElementAttributes(element);
20603      xml.enter(FHIR_NS, name);
20604      composeBackboneElements(element);
20605      if (element.hasElement()) { 
20606        for (ElementDefinition e : element.getElement()) 
20607          composeElementDefinition("element", e);
20608      }
20609      composeElementClose(element);
20610      xml.exit(FHIR_NS, name);
20611    }
20612  }
20613
20614  protected void composeSubscription(String name, Subscription element) throws IOException {
20615    if (element != null) {
20616      composeDomainResourceAttributes(element);
20617      xml.enter(FHIR_NS, name);
20618      composeDomainResourceElements(element);
20619      if (element.hasCriteriaElement()) {
20620        composeString("criteria", element.getCriteriaElement());
20621      }
20622      if (element.hasContact()) { 
20623        for (ContactPoint e : element.getContact()) 
20624          composeContactPoint("contact", e);
20625      }
20626      if (element.hasReasonElement()) {
20627        composeString("reason", element.getReasonElement());
20628      }
20629      if (element.hasStatusElement())
20630        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
20631      if (element.hasErrorElement()) {
20632        composeString("error", element.getErrorElement());
20633      }
20634      if (element.hasChannel()) {
20635        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
20636      }
20637      if (element.hasEndElement()) {
20638        composeInstant("end", element.getEndElement());
20639      }
20640      if (element.hasTag()) { 
20641        for (Coding e : element.getTag()) 
20642          composeCoding("tag", e);
20643      }
20644      composeElementClose(element);
20645      xml.exit(FHIR_NS, name);
20646    }
20647  }
20648
20649  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
20650    if (element != null) {
20651      composeElementAttributes(element);
20652      xml.enter(FHIR_NS, name);
20653      composeBackboneElements(element);
20654      if (element.hasTypeElement())
20655        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
20656      if (element.hasEndpointElement()) {
20657        composeUri("endpoint", element.getEndpointElement());
20658      }
20659      if (element.hasPayloadElement()) {
20660        composeString("payload", element.getPayloadElement());
20661      }
20662      if (element.hasHeaderElement()) {
20663        composeString("header", element.getHeaderElement());
20664      }
20665      composeElementClose(element);
20666      xml.exit(FHIR_NS, name);
20667    }
20668  }
20669
20670  protected void composeSubstance(String name, Substance element) throws IOException {
20671    if (element != null) {
20672      composeDomainResourceAttributes(element);
20673      xml.enter(FHIR_NS, name);
20674      composeDomainResourceElements(element);
20675      if (element.hasIdentifier()) { 
20676        for (Identifier e : element.getIdentifier()) 
20677          composeIdentifier("identifier", e);
20678      }
20679      if (element.hasCategory()) { 
20680        for (CodeableConcept e : element.getCategory()) 
20681          composeCodeableConcept("category", e);
20682      }
20683      if (element.hasCode()) {
20684        composeCodeableConcept("code", element.getCode());
20685      }
20686      if (element.hasDescriptionElement()) {
20687        composeString("description", element.getDescriptionElement());
20688      }
20689      if (element.hasInstance()) { 
20690        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
20691          composeSubstanceSubstanceInstanceComponent("instance", e);
20692      }
20693      if (element.hasIngredient()) { 
20694        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
20695          composeSubstanceSubstanceIngredientComponent("ingredient", e);
20696      }
20697      composeElementClose(element);
20698      xml.exit(FHIR_NS, name);
20699    }
20700  }
20701
20702  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
20703    if (element != null) {
20704      composeElementAttributes(element);
20705      xml.enter(FHIR_NS, name);
20706      composeBackboneElements(element);
20707      if (element.hasIdentifier()) {
20708        composeIdentifier("identifier", element.getIdentifier());
20709      }
20710      if (element.hasExpiryElement()) {
20711        composeDateTime("expiry", element.getExpiryElement());
20712      }
20713      if (element.hasQuantity()) {
20714        composeSimpleQuantity("quantity", element.getQuantity());
20715      }
20716      composeElementClose(element);
20717      xml.exit(FHIR_NS, name);
20718    }
20719  }
20720
20721  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
20722    if (element != null) {
20723      composeElementAttributes(element);
20724      xml.enter(FHIR_NS, name);
20725      composeBackboneElements(element);
20726      if (element.hasQuantity()) {
20727        composeRatio("quantity", element.getQuantity());
20728      }
20729      if (element.hasSubstance()) {
20730        composeReference("substance", element.getSubstance());
20731      }
20732      composeElementClose(element);
20733      xml.exit(FHIR_NS, name);
20734    }
20735  }
20736
20737  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
20738    if (element != null) {
20739      composeDomainResourceAttributes(element);
20740      xml.enter(FHIR_NS, name);
20741      composeDomainResourceElements(element);
20742      if (element.hasIdentifier()) {
20743        composeIdentifier("identifier", element.getIdentifier());
20744      }
20745      if (element.hasStatusElement())
20746        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
20747      if (element.hasPatient()) {
20748        composeReference("patient", element.getPatient());
20749      }
20750      if (element.hasType()) {
20751        composeCodeableConcept("type", element.getType());
20752      }
20753      if (element.hasQuantity()) {
20754        composeSimpleQuantity("quantity", element.getQuantity());
20755      }
20756      if (element.hasSuppliedItem()) {
20757        composeReference("suppliedItem", element.getSuppliedItem());
20758      }
20759      if (element.hasSupplier()) {
20760        composeReference("supplier", element.getSupplier());
20761      }
20762      if (element.hasWhenPrepared()) {
20763        composePeriod("whenPrepared", element.getWhenPrepared());
20764      }
20765      if (element.hasTimeElement()) {
20766        composeDateTime("time", element.getTimeElement());
20767      }
20768      if (element.hasDestination()) {
20769        composeReference("destination", element.getDestination());
20770      }
20771      if (element.hasReceiver()) { 
20772        for (Reference e : element.getReceiver()) 
20773          composeReference("receiver", e);
20774      }
20775      composeElementClose(element);
20776      xml.exit(FHIR_NS, name);
20777    }
20778  }
20779
20780  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
20781    if (element != null) {
20782      composeDomainResourceAttributes(element);
20783      xml.enter(FHIR_NS, name);
20784      composeDomainResourceElements(element);
20785      if (element.hasPatient()) {
20786        composeReference("patient", element.getPatient());
20787      }
20788      if (element.hasSource()) {
20789        composeReference("source", element.getSource());
20790      }
20791      if (element.hasDateElement()) {
20792        composeDateTime("date", element.getDateElement());
20793      }
20794      if (element.hasIdentifier()) {
20795        composeIdentifier("identifier", element.getIdentifier());
20796      }
20797      if (element.hasStatusElement())
20798        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
20799      if (element.hasKind()) {
20800        composeCodeableConcept("kind", element.getKind());
20801      }
20802      if (element.hasOrderedItem()) {
20803        composeReference("orderedItem", element.getOrderedItem());
20804      }
20805      if (element.hasSupplier()) { 
20806        for (Reference e : element.getSupplier()) 
20807          composeReference("supplier", e);
20808      }
20809      if (element.hasReason()) {
20810        composeType("reason", element.getReason());
20811      }      if (element.hasWhen()) {
20812        composeSupplyRequestSupplyRequestWhenComponent("when", element.getWhen());
20813      }
20814      composeElementClose(element);
20815      xml.exit(FHIR_NS, name);
20816    }
20817  }
20818
20819  protected void composeSupplyRequestSupplyRequestWhenComponent(String name, SupplyRequest.SupplyRequestWhenComponent element) throws IOException {
20820    if (element != null) {
20821      composeElementAttributes(element);
20822      xml.enter(FHIR_NS, name);
20823      composeBackboneElements(element);
20824      if (element.hasCode()) {
20825        composeCodeableConcept("code", element.getCode());
20826      }
20827      if (element.hasSchedule()) {
20828        composeTiming("schedule", element.getSchedule());
20829      }
20830      composeElementClose(element);
20831      xml.exit(FHIR_NS, name);
20832    }
20833  }
20834
20835  protected void composeTestScript(String name, TestScript element) throws IOException {
20836    if (element != null) {
20837      composeDomainResourceAttributes(element);
20838      xml.enter(FHIR_NS, name);
20839      composeDomainResourceElements(element);
20840      if (element.hasUrlElement()) {
20841        composeUri("url", element.getUrlElement());
20842      }
20843      if (element.hasVersionElement()) {
20844        composeString("version", element.getVersionElement());
20845      }
20846      if (element.hasNameElement()) {
20847        composeString("name", element.getNameElement());
20848      }
20849      if (element.hasStatusElement())
20850        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
20851      if (element.hasIdentifier()) {
20852        composeIdentifier("identifier", element.getIdentifier());
20853      }
20854      if (element.hasExperimentalElement()) {
20855        composeBoolean("experimental", element.getExperimentalElement());
20856      }
20857      if (element.hasPublisherElement()) {
20858        composeString("publisher", element.getPublisherElement());
20859      }
20860      if (element.hasContact()) { 
20861        for (TestScript.TestScriptContactComponent e : element.getContact()) 
20862          composeTestScriptTestScriptContactComponent("contact", e);
20863      }
20864      if (element.hasDateElement()) {
20865        composeDateTime("date", element.getDateElement());
20866      }
20867      if (element.hasDescriptionElement()) {
20868        composeString("description", element.getDescriptionElement());
20869      }
20870      if (element.hasUseContext()) { 
20871        for (CodeableConcept e : element.getUseContext()) 
20872          composeCodeableConcept("useContext", e);
20873      }
20874      if (element.hasRequirementsElement()) {
20875        composeString("requirements", element.getRequirementsElement());
20876      }
20877      if (element.hasCopyrightElement()) {
20878        composeString("copyright", element.getCopyrightElement());
20879      }
20880      if (element.hasMetadata()) {
20881        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
20882      }
20883      if (element.hasMultiserverElement()) {
20884        composeBoolean("multiserver", element.getMultiserverElement());
20885      }
20886      if (element.hasFixture()) { 
20887        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
20888          composeTestScriptTestScriptFixtureComponent("fixture", e);
20889      }
20890      if (element.hasProfile()) { 
20891        for (Reference e : element.getProfile()) 
20892          composeReference("profile", e);
20893      }
20894      if (element.hasVariable()) { 
20895        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
20896          composeTestScriptTestScriptVariableComponent("variable", e);
20897      }
20898      if (element.hasSetup()) {
20899        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
20900      }
20901      if (element.hasTest()) { 
20902        for (TestScript.TestScriptTestComponent e : element.getTest()) 
20903          composeTestScriptTestScriptTestComponent("test", e);
20904      }
20905      if (element.hasTeardown()) {
20906        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
20907      }
20908      composeElementClose(element);
20909      xml.exit(FHIR_NS, name);
20910    }
20911  }
20912
20913  protected void composeTestScriptTestScriptContactComponent(String name, TestScript.TestScriptContactComponent element) throws IOException {
20914    if (element != null) {
20915      composeElementAttributes(element);
20916      xml.enter(FHIR_NS, name);
20917      composeBackboneElements(element);
20918      if (element.hasNameElement()) {
20919        composeString("name", element.getNameElement());
20920      }
20921      if (element.hasTelecom()) { 
20922        for (ContactPoint e : element.getTelecom()) 
20923          composeContactPoint("telecom", e);
20924      }
20925      composeElementClose(element);
20926      xml.exit(FHIR_NS, name);
20927    }
20928  }
20929
20930  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
20931    if (element != null) {
20932      composeElementAttributes(element);
20933      xml.enter(FHIR_NS, name);
20934      composeBackboneElements(element);
20935      if (element.hasLink()) { 
20936        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
20937          composeTestScriptTestScriptMetadataLinkComponent("link", e);
20938      }
20939      if (element.hasCapability()) { 
20940        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
20941          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
20942      }
20943      composeElementClose(element);
20944      xml.exit(FHIR_NS, name);
20945    }
20946  }
20947
20948  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
20949    if (element != null) {
20950      composeElementAttributes(element);
20951      xml.enter(FHIR_NS, name);
20952      composeBackboneElements(element);
20953      if (element.hasUrlElement()) {
20954        composeUri("url", element.getUrlElement());
20955      }
20956      if (element.hasDescriptionElement()) {
20957        composeString("description", element.getDescriptionElement());
20958      }
20959      composeElementClose(element);
20960      xml.exit(FHIR_NS, name);
20961    }
20962  }
20963
20964  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
20965    if (element != null) {
20966      composeElementAttributes(element);
20967      xml.enter(FHIR_NS, name);
20968      composeBackboneElements(element);
20969      if (element.hasRequiredElement()) {
20970        composeBoolean("required", element.getRequiredElement());
20971      }
20972      if (element.hasValidatedElement()) {
20973        composeBoolean("validated", element.getValidatedElement());
20974      }
20975      if (element.hasDescriptionElement()) {
20976        composeString("description", element.getDescriptionElement());
20977      }
20978      if (element.hasDestinationElement()) {
20979        composeInteger("destination", element.getDestinationElement());
20980      }
20981      if (element.hasLink()) { 
20982        for (UriType e : element.getLink()) 
20983          composeUri("link", e);
20984      }
20985      if (element.hasConformance()) {
20986        composeReference("conformance", element.getConformance());
20987      }
20988      composeElementClose(element);
20989      xml.exit(FHIR_NS, name);
20990    }
20991  }
20992
20993  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
20994    if (element != null) {
20995      composeElementAttributes(element);
20996      xml.enter(FHIR_NS, name);
20997      composeBackboneElements(element);
20998      if (element.hasAutocreateElement()) {
20999        composeBoolean("autocreate", element.getAutocreateElement());
21000      }
21001      if (element.hasAutodeleteElement()) {
21002        composeBoolean("autodelete", element.getAutodeleteElement());
21003      }
21004      if (element.hasResource()) {
21005        composeReference("resource", element.getResource());
21006      }
21007      composeElementClose(element);
21008      xml.exit(FHIR_NS, name);
21009    }
21010  }
21011
21012  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
21013    if (element != null) {
21014      composeElementAttributes(element);
21015      xml.enter(FHIR_NS, name);
21016      composeBackboneElements(element);
21017      if (element.hasNameElement()) {
21018        composeString("name", element.getNameElement());
21019      }
21020      if (element.hasHeaderFieldElement()) {
21021        composeString("headerField", element.getHeaderFieldElement());
21022      }
21023      if (element.hasPathElement()) {
21024        composeString("path", element.getPathElement());
21025      }
21026      if (element.hasSourceIdElement()) {
21027        composeId("sourceId", element.getSourceIdElement());
21028      }
21029      composeElementClose(element);
21030      xml.exit(FHIR_NS, name);
21031    }
21032  }
21033
21034  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
21035    if (element != null) {
21036      composeElementAttributes(element);
21037      xml.enter(FHIR_NS, name);
21038      composeBackboneElements(element);
21039      if (element.hasMetadata()) {
21040        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
21041      }
21042      if (element.hasAction()) { 
21043        for (TestScript.TestScriptSetupActionComponent e : element.getAction()) 
21044          composeTestScriptTestScriptSetupActionComponent("action", e);
21045      }
21046      composeElementClose(element);
21047      xml.exit(FHIR_NS, name);
21048    }
21049  }
21050
21051  protected void composeTestScriptTestScriptSetupActionComponent(String name, TestScript.TestScriptSetupActionComponent element) throws IOException {
21052    if (element != null) {
21053      composeElementAttributes(element);
21054      xml.enter(FHIR_NS, name);
21055      composeBackboneElements(element);
21056      if (element.hasOperation()) {
21057        composeTestScriptTestScriptSetupActionOperationComponent("operation", element.getOperation());
21058      }
21059      if (element.hasAssert()) {
21060        composeTestScriptTestScriptSetupActionAssertComponent("assert", element.getAssert());
21061      }
21062      composeElementClose(element);
21063      xml.exit(FHIR_NS, name);
21064    }
21065  }
21066
21067  protected void composeTestScriptTestScriptSetupActionOperationComponent(String name, TestScript.TestScriptSetupActionOperationComponent element) throws IOException {
21068    if (element != null) {
21069      composeElementAttributes(element);
21070      xml.enter(FHIR_NS, name);
21071      composeBackboneElements(element);
21072      if (element.hasType()) {
21073        composeCoding("type", element.getType());
21074      }
21075      if (element.hasResourceElement()) {
21076        composeCode("resource", element.getResourceElement());
21077      }
21078      if (element.hasLabelElement()) {
21079        composeString("label", element.getLabelElement());
21080      }
21081      if (element.hasDescriptionElement()) {
21082        composeString("description", element.getDescriptionElement());
21083      }
21084      if (element.hasAcceptElement())
21085        composeEnumeration("accept", element.getAcceptElement(), new TestScript.ContentTypeEnumFactory());
21086      if (element.hasContentTypeElement())
21087        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
21088      if (element.hasDestinationElement()) {
21089        composeInteger("destination", element.getDestinationElement());
21090      }
21091      if (element.hasEncodeRequestUrlElement()) {
21092        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
21093      }
21094      if (element.hasParamsElement()) {
21095        composeString("params", element.getParamsElement());
21096      }
21097      if (element.hasRequestHeader()) { 
21098        for (TestScript.TestScriptSetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
21099          composeTestScriptTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
21100      }
21101      if (element.hasResponseIdElement()) {
21102        composeId("responseId", element.getResponseIdElement());
21103      }
21104      if (element.hasSourceIdElement()) {
21105        composeId("sourceId", element.getSourceIdElement());
21106      }
21107      if (element.hasTargetIdElement()) {
21108        composeId("targetId", element.getTargetIdElement());
21109      }
21110      if (element.hasUrlElement()) {
21111        composeString("url", element.getUrlElement());
21112      }
21113      composeElementClose(element);
21114      xml.exit(FHIR_NS, name);
21115    }
21116  }
21117
21118  protected void composeTestScriptTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.TestScriptSetupActionOperationRequestHeaderComponent element) throws IOException {
21119    if (element != null) {
21120      composeElementAttributes(element);
21121      xml.enter(FHIR_NS, name);
21122      composeBackboneElements(element);
21123      if (element.hasFieldElement()) {
21124        composeString("field", element.getFieldElement());
21125      }
21126      if (element.hasValueElement()) {
21127        composeString("value", element.getValueElement());
21128      }
21129      composeElementClose(element);
21130      xml.exit(FHIR_NS, name);
21131    }
21132  }
21133
21134  protected void composeTestScriptTestScriptSetupActionAssertComponent(String name, TestScript.TestScriptSetupActionAssertComponent element) throws IOException {
21135    if (element != null) {
21136      composeElementAttributes(element);
21137      xml.enter(FHIR_NS, name);
21138      composeBackboneElements(element);
21139      if (element.hasLabelElement()) {
21140        composeString("label", element.getLabelElement());
21141      }
21142      if (element.hasDescriptionElement()) {
21143        composeString("description", element.getDescriptionElement());
21144      }
21145      if (element.hasDirectionElement())
21146        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
21147      if (element.hasCompareToSourceIdElement()) {
21148        composeString("compareToSourceId", element.getCompareToSourceIdElement());
21149      }
21150      if (element.hasCompareToSourcePathElement()) {
21151        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
21152      }
21153      if (element.hasContentTypeElement())
21154        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
21155      if (element.hasHeaderFieldElement()) {
21156        composeString("headerField", element.getHeaderFieldElement());
21157      }
21158      if (element.hasMinimumIdElement()) {
21159        composeString("minimumId", element.getMinimumIdElement());
21160      }
21161      if (element.hasNavigationLinksElement()) {
21162        composeBoolean("navigationLinks", element.getNavigationLinksElement());
21163      }
21164      if (element.hasOperatorElement())
21165        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
21166      if (element.hasPathElement()) {
21167        composeString("path", element.getPathElement());
21168      }
21169      if (element.hasResourceElement()) {
21170        composeCode("resource", element.getResourceElement());
21171      }
21172      if (element.hasResponseElement())
21173        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
21174      if (element.hasResponseCodeElement()) {
21175        composeString("responseCode", element.getResponseCodeElement());
21176      }
21177      if (element.hasSourceIdElement()) {
21178        composeId("sourceId", element.getSourceIdElement());
21179      }
21180      if (element.hasValidateProfileIdElement()) {
21181        composeId("validateProfileId", element.getValidateProfileIdElement());
21182      }
21183      if (element.hasValueElement()) {
21184        composeString("value", element.getValueElement());
21185      }
21186      if (element.hasWarningOnlyElement()) {
21187        composeBoolean("warningOnly", element.getWarningOnlyElement());
21188      }
21189      composeElementClose(element);
21190      xml.exit(FHIR_NS, name);
21191    }
21192  }
21193
21194  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
21195    if (element != null) {
21196      composeElementAttributes(element);
21197      xml.enter(FHIR_NS, name);
21198      composeBackboneElements(element);
21199      if (element.hasNameElement()) {
21200        composeString("name", element.getNameElement());
21201      }
21202      if (element.hasDescriptionElement()) {
21203        composeString("description", element.getDescriptionElement());
21204      }
21205      if (element.hasMetadata()) {
21206        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
21207      }
21208      if (element.hasAction()) { 
21209        for (TestScript.TestScriptTestActionComponent e : element.getAction()) 
21210          composeTestScriptTestScriptTestActionComponent("action", e);
21211      }
21212      composeElementClose(element);
21213      xml.exit(FHIR_NS, name);
21214    }
21215  }
21216
21217  protected void composeTestScriptTestScriptTestActionComponent(String name, TestScript.TestScriptTestActionComponent element) throws IOException {
21218    if (element != null) {
21219      composeElementAttributes(element);
21220      xml.enter(FHIR_NS, name);
21221      composeBackboneElements(element);
21222      if (element.hasOperation()) {
21223        composeTestScriptTestScriptSetupActionOperationComponent("operation", element.getOperation());
21224      }
21225      if (element.hasAssert()) {
21226        composeTestScriptTestScriptSetupActionAssertComponent("assert", element.getAssert());
21227      }
21228      composeElementClose(element);
21229      xml.exit(FHIR_NS, name);
21230    }
21231  }
21232
21233  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
21234    if (element != null) {
21235      composeElementAttributes(element);
21236      xml.enter(FHIR_NS, name);
21237      composeBackboneElements(element);
21238      if (element.hasAction()) { 
21239        for (TestScript.TestScriptTeardownActionComponent e : element.getAction()) 
21240          composeTestScriptTestScriptTeardownActionComponent("action", e);
21241      }
21242      composeElementClose(element);
21243      xml.exit(FHIR_NS, name);
21244    }
21245  }
21246
21247  protected void composeTestScriptTestScriptTeardownActionComponent(String name, TestScript.TestScriptTeardownActionComponent element) throws IOException {
21248    if (element != null) {
21249      composeElementAttributes(element);
21250      xml.enter(FHIR_NS, name);
21251      composeBackboneElements(element);
21252      if (element.hasOperation()) {
21253        composeTestScriptTestScriptSetupActionOperationComponent("operation", element.getOperation());
21254      }
21255      composeElementClose(element);
21256      xml.exit(FHIR_NS, name);
21257    }
21258  }
21259
21260  protected void composeValueSet(String name, ValueSet element) throws IOException {
21261    if (element != null) {
21262      composeDomainResourceAttributes(element);
21263      xml.enter(FHIR_NS, name);
21264      composeDomainResourceElements(element);
21265      if (element.hasUrlElement()) {
21266        composeUri("url", element.getUrlElement());
21267      }
21268      if (element.hasIdentifier()) {
21269        composeIdentifier("identifier", element.getIdentifier());
21270      }
21271      if (element.hasVersionElement()) {
21272        composeString("version", element.getVersionElement());
21273      }
21274      if (element.hasNameElement()) {
21275        composeString("name", element.getNameElement());
21276      }
21277      if (element.hasStatusElement())
21278        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
21279      if (element.hasExperimentalElement()) {
21280        composeBoolean("experimental", element.getExperimentalElement());
21281      }
21282      if (element.hasPublisherElement()) {
21283        composeString("publisher", element.getPublisherElement());
21284      }
21285      if (element.hasContact()) { 
21286        for (ValueSet.ValueSetContactComponent e : element.getContact()) 
21287          composeValueSetValueSetContactComponent("contact", e);
21288      }
21289      if (element.hasDateElement()) {
21290        composeDateTime("date", element.getDateElement());
21291      }
21292      if (element.hasLockedDateElement()) {
21293        composeDate("lockedDate", element.getLockedDateElement());
21294      }
21295      if (element.hasDescriptionElement()) {
21296        composeString("description", element.getDescriptionElement());
21297      }
21298      if (element.hasUseContext()) { 
21299        for (CodeableConcept e : element.getUseContext()) 
21300          composeCodeableConcept("useContext", e);
21301      }
21302      if (element.hasImmutableElement()) {
21303        composeBoolean("immutable", element.getImmutableElement());
21304      }
21305      if (element.hasRequirementsElement()) {
21306        composeString("requirements", element.getRequirementsElement());
21307      }
21308      if (element.hasCopyrightElement()) {
21309        composeString("copyright", element.getCopyrightElement());
21310      }
21311      if (element.hasExtensibleElement()) {
21312        composeBoolean("extensible", element.getExtensibleElement());
21313      }
21314      if (element.hasCodeSystem()) {
21315        composeValueSetValueSetCodeSystemComponent("codeSystem", element.getCodeSystem());
21316      }
21317      if (element.hasCompose()) {
21318        composeValueSetValueSetComposeComponent("compose", element.getCompose());
21319      }
21320      if (element.hasExpansion()) {
21321        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
21322      }
21323      composeElementClose(element);
21324      xml.exit(FHIR_NS, name);
21325    }
21326  }
21327
21328  protected void composeValueSetValueSetContactComponent(String name, ValueSet.ValueSetContactComponent element) throws IOException {
21329    if (element != null) {
21330      composeElementAttributes(element);
21331      xml.enter(FHIR_NS, name);
21332      composeBackboneElements(element);
21333      if (element.hasNameElement()) {
21334        composeString("name", element.getNameElement());
21335      }
21336      if (element.hasTelecom()) { 
21337        for (ContactPoint e : element.getTelecom()) 
21338          composeContactPoint("telecom", e);
21339      }
21340      composeElementClose(element);
21341      xml.exit(FHIR_NS, name);
21342    }
21343  }
21344
21345  protected void composeValueSetValueSetCodeSystemComponent(String name, ValueSet.ValueSetCodeSystemComponent element) throws IOException {
21346    if (element != null) {
21347      composeElementAttributes(element);
21348      xml.enter(FHIR_NS, name);
21349      composeBackboneElements(element);
21350      if (element.hasSystemElement()) {
21351        composeUri("system", element.getSystemElement());
21352      }
21353      if (element.hasVersionElement()) {
21354        composeString("version", element.getVersionElement());
21355      }
21356      if (element.hasCaseSensitiveElement()) {
21357        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
21358      }
21359      if (element.hasConcept()) { 
21360        for (ValueSet.ConceptDefinitionComponent e : element.getConcept()) 
21361          composeValueSetConceptDefinitionComponent("concept", e);
21362      }
21363      composeElementClose(element);
21364      xml.exit(FHIR_NS, name);
21365    }
21366  }
21367
21368  protected void composeValueSetConceptDefinitionComponent(String name, ValueSet.ConceptDefinitionComponent element) throws IOException {
21369    if (element != null) {
21370      composeElementAttributes(element);
21371      xml.enter(FHIR_NS, name);
21372      composeBackboneElements(element);
21373      if (element.hasCodeElement()) {
21374        composeCode("code", element.getCodeElement());
21375      }
21376      if (element.hasAbstractElement()) {
21377        composeBoolean("abstract", element.getAbstractElement());
21378      }
21379      if (element.hasDisplayElement()) {
21380        composeString("display", element.getDisplayElement());
21381      }
21382      if (element.hasDefinitionElement()) {
21383        composeString("definition", element.getDefinitionElement());
21384      }
21385      if (element.hasDesignation()) { 
21386        for (ValueSet.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
21387          composeValueSetConceptDefinitionDesignationComponent("designation", e);
21388      }
21389      if (element.hasConcept()) { 
21390        for (ValueSet.ConceptDefinitionComponent e : element.getConcept()) 
21391          composeValueSetConceptDefinitionComponent("concept", e);
21392      }
21393      composeElementClose(element);
21394      xml.exit(FHIR_NS, name);
21395    }
21396  }
21397
21398  protected void composeValueSetConceptDefinitionDesignationComponent(String name, ValueSet.ConceptDefinitionDesignationComponent element) throws IOException {
21399    if (element != null) {
21400      composeElementAttributes(element);
21401      xml.enter(FHIR_NS, name);
21402      composeBackboneElements(element);
21403      if (element.hasLanguageElement()) {
21404        composeCode("language", element.getLanguageElement());
21405      }
21406      if (element.hasUse()) {
21407        composeCoding("use", element.getUse());
21408      }
21409      if (element.hasValueElement()) {
21410        composeString("value", element.getValueElement());
21411      }
21412      composeElementClose(element);
21413      xml.exit(FHIR_NS, name);
21414    }
21415  }
21416
21417  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
21418    if (element != null) {
21419      composeElementAttributes(element);
21420      xml.enter(FHIR_NS, name);
21421      composeBackboneElements(element);
21422      if (element.hasImport()) { 
21423        for (UriType e : element.getImport()) 
21424          composeUri("import", e);
21425      }
21426      if (element.hasInclude()) { 
21427        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
21428          composeValueSetConceptSetComponent("include", e);
21429      }
21430      if (element.hasExclude()) { 
21431        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
21432          composeValueSetConceptSetComponent("exclude", e);
21433      }
21434      composeElementClose(element);
21435      xml.exit(FHIR_NS, name);
21436    }
21437  }
21438
21439  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
21440    if (element != null) {
21441      composeElementAttributes(element);
21442      xml.enter(FHIR_NS, name);
21443      composeBackboneElements(element);
21444      if (element.hasSystemElement()) {
21445        composeUri("system", element.getSystemElement());
21446      }
21447      if (element.hasVersionElement()) {
21448        composeString("version", element.getVersionElement());
21449      }
21450      if (element.hasConcept()) { 
21451        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
21452          composeValueSetConceptReferenceComponent("concept", e);
21453      }
21454      if (element.hasFilter()) { 
21455        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
21456          composeValueSetConceptSetFilterComponent("filter", e);
21457      }
21458      composeElementClose(element);
21459      xml.exit(FHIR_NS, name);
21460    }
21461  }
21462
21463  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
21464    if (element != null) {
21465      composeElementAttributes(element);
21466      xml.enter(FHIR_NS, name);
21467      composeBackboneElements(element);
21468      if (element.hasCodeElement()) {
21469        composeCode("code", element.getCodeElement());
21470      }
21471      if (element.hasDisplayElement()) {
21472        composeString("display", element.getDisplayElement());
21473      }
21474      if (element.hasDesignation()) { 
21475        for (ValueSet.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
21476          composeValueSetConceptDefinitionDesignationComponent("designation", e);
21477      }
21478      composeElementClose(element);
21479      xml.exit(FHIR_NS, name);
21480    }
21481  }
21482
21483  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
21484    if (element != null) {
21485      composeElementAttributes(element);
21486      xml.enter(FHIR_NS, name);
21487      composeBackboneElements(element);
21488      if (element.hasPropertyElement()) {
21489        composeCode("property", element.getPropertyElement());
21490      }
21491      if (element.hasOpElement())
21492        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
21493      if (element.hasValueElement()) {
21494        composeCode("value", element.getValueElement());
21495      }
21496      composeElementClose(element);
21497      xml.exit(FHIR_NS, name);
21498    }
21499  }
21500
21501  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
21502    if (element != null) {
21503      composeElementAttributes(element);
21504      xml.enter(FHIR_NS, name);
21505      composeBackboneElements(element);
21506      if (element.hasIdentifierElement()) {
21507        composeUri("identifier", element.getIdentifierElement());
21508      }
21509      if (element.hasTimestampElement()) {
21510        composeDateTime("timestamp", element.getTimestampElement());
21511      }
21512      if (element.hasTotalElement()) {
21513        composeInteger("total", element.getTotalElement());
21514      }
21515      if (element.hasOffsetElement()) {
21516        composeInteger("offset", element.getOffsetElement());
21517      }
21518      if (element.hasParameter()) { 
21519        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
21520          composeValueSetValueSetExpansionParameterComponent("parameter", e);
21521      }
21522      if (element.hasContains()) { 
21523        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
21524          composeValueSetValueSetExpansionContainsComponent("contains", e);
21525      }
21526      composeElementClose(element);
21527      xml.exit(FHIR_NS, name);
21528    }
21529  }
21530
21531  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
21532    if (element != null) {
21533      composeElementAttributes(element);
21534      xml.enter(FHIR_NS, name);
21535      composeBackboneElements(element);
21536      if (element.hasNameElement()) {
21537        composeString("name", element.getNameElement());
21538      }
21539      if (element.hasValue()) {
21540        composeType("value", element.getValue());
21541      }      composeElementClose(element);
21542      xml.exit(FHIR_NS, name);
21543    }
21544  }
21545
21546  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
21547    if (element != null) {
21548      composeElementAttributes(element);
21549      xml.enter(FHIR_NS, name);
21550      composeBackboneElements(element);
21551      if (element.hasSystemElement()) {
21552        composeUri("system", element.getSystemElement());
21553      }
21554      if (element.hasAbstractElement()) {
21555        composeBoolean("abstract", element.getAbstractElement());
21556      }
21557      if (element.hasVersionElement()) {
21558        composeString("version", element.getVersionElement());
21559      }
21560      if (element.hasCodeElement()) {
21561        composeCode("code", element.getCodeElement());
21562      }
21563      if (element.hasDisplayElement()) {
21564        composeString("display", element.getDisplayElement());
21565      }
21566      if (element.hasContains()) { 
21567        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
21568          composeValueSetValueSetExpansionContainsComponent("contains", e);
21569      }
21570      composeElementClose(element);
21571      xml.exit(FHIR_NS, name);
21572    }
21573  }
21574
21575  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
21576    if (element != null) {
21577      composeDomainResourceAttributes(element);
21578      xml.enter(FHIR_NS, name);
21579      composeDomainResourceElements(element);
21580      if (element.hasIdentifier()) { 
21581        for (Identifier e : element.getIdentifier()) 
21582          composeIdentifier("identifier", e);
21583      }
21584      if (element.hasDateWrittenElement()) {
21585        composeDateTime("dateWritten", element.getDateWrittenElement());
21586      }
21587      if (element.hasPatient()) {
21588        composeReference("patient", element.getPatient());
21589      }
21590      if (element.hasPrescriber()) {
21591        composeReference("prescriber", element.getPrescriber());
21592      }
21593      if (element.hasEncounter()) {
21594        composeReference("encounter", element.getEncounter());
21595      }
21596      if (element.hasReason()) {
21597        composeType("reason", element.getReason());
21598      }      if (element.hasDispense()) { 
21599        for (VisionPrescription.VisionPrescriptionDispenseComponent e : element.getDispense()) 
21600          composeVisionPrescriptionVisionPrescriptionDispenseComponent("dispense", e);
21601      }
21602      composeElementClose(element);
21603      xml.exit(FHIR_NS, name);
21604    }
21605  }
21606
21607  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(String name, VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
21608    if (element != null) {
21609      composeElementAttributes(element);
21610      xml.enter(FHIR_NS, name);
21611      composeBackboneElements(element);
21612      if (element.hasProduct()) {
21613        composeCoding("product", element.getProduct());
21614      }
21615      if (element.hasEyeElement())
21616        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
21617      if (element.hasSphereElement()) {
21618        composeDecimal("sphere", element.getSphereElement());
21619      }
21620      if (element.hasCylinderElement()) {
21621        composeDecimal("cylinder", element.getCylinderElement());
21622      }
21623      if (element.hasAxisElement()) {
21624        composeInteger("axis", element.getAxisElement());
21625      }
21626      if (element.hasPrismElement()) {
21627        composeDecimal("prism", element.getPrismElement());
21628      }
21629      if (element.hasBaseElement())
21630        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
21631      if (element.hasAddElement()) {
21632        composeDecimal("add", element.getAddElement());
21633      }
21634      if (element.hasPowerElement()) {
21635        composeDecimal("power", element.getPowerElement());
21636      }
21637      if (element.hasBackCurveElement()) {
21638        composeDecimal("backCurve", element.getBackCurveElement());
21639      }
21640      if (element.hasDiameterElement()) {
21641        composeDecimal("diameter", element.getDiameterElement());
21642      }
21643      if (element.hasDuration()) {
21644        composeSimpleQuantity("duration", element.getDuration());
21645      }
21646      if (element.hasColorElement()) {
21647        composeString("color", element.getColorElement());
21648      }
21649      if (element.hasBrandElement()) {
21650        composeString("brand", element.getBrandElement());
21651      }
21652      if (element.hasNotesElement()) {
21653        composeString("notes", element.getNotesElement());
21654      }
21655      composeElementClose(element);
21656      xml.exit(FHIR_NS, name);
21657    }
21658  }
21659
21660  @Override
21661  protected void composeResource(Resource resource) throws IOException {
21662    if (resource instanceof Parameters)
21663      composeParameters("Parameters", (Parameters)resource);
21664    else if (resource instanceof Account)
21665      composeAccount("Account", (Account)resource);
21666    else if (resource instanceof AllergyIntolerance)
21667      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
21668    else if (resource instanceof Appointment)
21669      composeAppointment("Appointment", (Appointment)resource);
21670    else if (resource instanceof AppointmentResponse)
21671      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
21672    else if (resource instanceof AuditEvent)
21673      composeAuditEvent("AuditEvent", (AuditEvent)resource);
21674    else if (resource instanceof Basic)
21675      composeBasic("Basic", (Basic)resource);
21676    else if (resource instanceof Binary)
21677      composeBinary("Binary", (Binary)resource);
21678    else if (resource instanceof BodySite)
21679      composeBodySite("BodySite", (BodySite)resource);
21680    else if (resource instanceof Bundle)
21681      composeBundle("Bundle", (Bundle)resource);
21682    else if (resource instanceof CarePlan)
21683      composeCarePlan("CarePlan", (CarePlan)resource);
21684    else if (resource instanceof Claim)
21685      composeClaim("Claim", (Claim)resource);
21686    else if (resource instanceof ClaimResponse)
21687      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
21688    else if (resource instanceof ClinicalImpression)
21689      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
21690    else if (resource instanceof Communication)
21691      composeCommunication("Communication", (Communication)resource);
21692    else if (resource instanceof CommunicationRequest)
21693      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
21694    else if (resource instanceof Composition)
21695      composeComposition("Composition", (Composition)resource);
21696    else if (resource instanceof ConceptMap)
21697      composeConceptMap("ConceptMap", (ConceptMap)resource);
21698    else if (resource instanceof Condition)
21699      composeCondition("Condition", (Condition)resource);
21700    else if (resource instanceof Conformance)
21701      composeConformance("Conformance", (Conformance)resource);
21702    else if (resource instanceof Contract)
21703      composeContract("Contract", (Contract)resource);
21704    else if (resource instanceof Coverage)
21705      composeCoverage("Coverage", (Coverage)resource);
21706    else if (resource instanceof DataElement)
21707      composeDataElement("DataElement", (DataElement)resource);
21708    else if (resource instanceof DetectedIssue)
21709      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
21710    else if (resource instanceof Device)
21711      composeDevice("Device", (Device)resource);
21712    else if (resource instanceof DeviceComponent)
21713      composeDeviceComponent("DeviceComponent", (DeviceComponent)resource);
21714    else if (resource instanceof DeviceMetric)
21715      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
21716    else if (resource instanceof DeviceUseRequest)
21717      composeDeviceUseRequest("DeviceUseRequest", (DeviceUseRequest)resource);
21718    else if (resource instanceof DeviceUseStatement)
21719      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
21720    else if (resource instanceof DiagnosticOrder)
21721      composeDiagnosticOrder("DiagnosticOrder", (DiagnosticOrder)resource);
21722    else if (resource instanceof DiagnosticReport)
21723      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
21724    else if (resource instanceof DocumentManifest)
21725      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
21726    else if (resource instanceof DocumentReference)
21727      composeDocumentReference("DocumentReference", (DocumentReference)resource);
21728    else if (resource instanceof EligibilityRequest)
21729      composeEligibilityRequest("EligibilityRequest", (EligibilityRequest)resource);
21730    else if (resource instanceof EligibilityResponse)
21731      composeEligibilityResponse("EligibilityResponse", (EligibilityResponse)resource);
21732    else if (resource instanceof Encounter)
21733      composeEncounter("Encounter", (Encounter)resource);
21734    else if (resource instanceof EnrollmentRequest)
21735      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
21736    else if (resource instanceof EnrollmentResponse)
21737      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
21738    else if (resource instanceof EpisodeOfCare)
21739      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
21740    else if (resource instanceof ExplanationOfBenefit)
21741      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
21742    else if (resource instanceof FamilyMemberHistory)
21743      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
21744    else if (resource instanceof Flag)
21745      composeFlag("Flag", (Flag)resource);
21746    else if (resource instanceof Goal)
21747      composeGoal("Goal", (Goal)resource);
21748    else if (resource instanceof Group)
21749      composeGroup("Group", (Group)resource);
21750    else if (resource instanceof HealthcareService)
21751      composeHealthcareService("HealthcareService", (HealthcareService)resource);
21752    else if (resource instanceof ImagingObjectSelection)
21753      composeImagingObjectSelection("ImagingObjectSelection", (ImagingObjectSelection)resource);
21754    else if (resource instanceof ImagingStudy)
21755      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
21756    else if (resource instanceof Immunization)
21757      composeImmunization("Immunization", (Immunization)resource);
21758    else if (resource instanceof ImmunizationRecommendation)
21759      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
21760    else if (resource instanceof ImplementationGuide)
21761      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
21762    else if (resource instanceof List_)
21763      composeList_("List", (List_)resource);
21764    else if (resource instanceof Location)
21765      composeLocation("Location", (Location)resource);
21766    else if (resource instanceof Media)
21767      composeMedia("Media", (Media)resource);
21768    else if (resource instanceof Medication)
21769      composeMedication("Medication", (Medication)resource);
21770    else if (resource instanceof MedicationAdministration)
21771      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
21772    else if (resource instanceof MedicationDispense)
21773      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
21774    else if (resource instanceof MedicationOrder)
21775      composeMedicationOrder("MedicationOrder", (MedicationOrder)resource);
21776    else if (resource instanceof MedicationStatement)
21777      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
21778    else if (resource instanceof MessageHeader)
21779      composeMessageHeader("MessageHeader", (MessageHeader)resource);
21780    else if (resource instanceof NamingSystem)
21781      composeNamingSystem("NamingSystem", (NamingSystem)resource);
21782    else if (resource instanceof NutritionOrder)
21783      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
21784    else if (resource instanceof Observation)
21785      composeObservation("Observation", (Observation)resource);
21786    else if (resource instanceof OperationDefinition)
21787      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
21788    else if (resource instanceof OperationOutcome)
21789      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
21790    else if (resource instanceof Order)
21791      composeOrder("Order", (Order)resource);
21792    else if (resource instanceof OrderResponse)
21793      composeOrderResponse("OrderResponse", (OrderResponse)resource);
21794    else if (resource instanceof Organization)
21795      composeOrganization("Organization", (Organization)resource);
21796    else if (resource instanceof Patient)
21797      composePatient("Patient", (Patient)resource);
21798    else if (resource instanceof PaymentNotice)
21799      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
21800    else if (resource instanceof PaymentReconciliation)
21801      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
21802    else if (resource instanceof Person)
21803      composePerson("Person", (Person)resource);
21804    else if (resource instanceof Practitioner)
21805      composePractitioner("Practitioner", (Practitioner)resource);
21806    else if (resource instanceof Procedure)
21807      composeProcedure("Procedure", (Procedure)resource);
21808    else if (resource instanceof ProcedureRequest)
21809      composeProcedureRequest("ProcedureRequest", (ProcedureRequest)resource);
21810    else if (resource instanceof ProcessRequest)
21811      composeProcessRequest("ProcessRequest", (ProcessRequest)resource);
21812    else if (resource instanceof ProcessResponse)
21813      composeProcessResponse("ProcessResponse", (ProcessResponse)resource);
21814    else if (resource instanceof Provenance)
21815      composeProvenance("Provenance", (Provenance)resource);
21816    else if (resource instanceof Questionnaire)
21817      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
21818    else if (resource instanceof QuestionnaireResponse)
21819      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
21820    else if (resource instanceof ReferralRequest)
21821      composeReferralRequest("ReferralRequest", (ReferralRequest)resource);
21822    else if (resource instanceof RelatedPerson)
21823      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
21824    else if (resource instanceof RiskAssessment)
21825      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
21826    else if (resource instanceof Schedule)
21827      composeSchedule("Schedule", (Schedule)resource);
21828    else if (resource instanceof SearchParameter)
21829      composeSearchParameter("SearchParameter", (SearchParameter)resource);
21830    else if (resource instanceof Slot)
21831      composeSlot("Slot", (Slot)resource);
21832    else if (resource instanceof Specimen)
21833      composeSpecimen("Specimen", (Specimen)resource);
21834    else if (resource instanceof StructureDefinition)
21835      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
21836    else if (resource instanceof Subscription)
21837      composeSubscription("Subscription", (Subscription)resource);
21838    else if (resource instanceof Substance)
21839      composeSubstance("Substance", (Substance)resource);
21840    else if (resource instanceof SupplyDelivery)
21841      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
21842    else if (resource instanceof SupplyRequest)
21843      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
21844    else if (resource instanceof TestScript)
21845      composeTestScript("TestScript", (TestScript)resource);
21846    else if (resource instanceof ValueSet)
21847      composeValueSet("ValueSet", (ValueSet)resource);
21848    else if (resource instanceof VisionPrescription)
21849      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
21850    else if (resource instanceof Binary)
21851      composeBinary("Binary", (Binary)resource);
21852    else
21853      throw new Error("Unhandled resource type "+resource.getClass().getName());
21854  }
21855
21856  protected void composeResource(String name, Resource resource) throws IOException {
21857    if (resource instanceof Parameters)
21858      composeParameters(name, (Parameters)resource);
21859    else if (resource instanceof Account)
21860      composeAccount(name, (Account)resource);
21861    else if (resource instanceof AllergyIntolerance)
21862      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
21863    else if (resource instanceof Appointment)
21864      composeAppointment(name, (Appointment)resource);
21865    else if (resource instanceof AppointmentResponse)
21866      composeAppointmentResponse(name, (AppointmentResponse)resource);
21867    else if (resource instanceof AuditEvent)
21868      composeAuditEvent(name, (AuditEvent)resource);
21869    else if (resource instanceof Basic)
21870      composeBasic(name, (Basic)resource);
21871    else if (resource instanceof Binary)
21872      composeBinary(name, (Binary)resource);
21873    else if (resource instanceof BodySite)
21874      composeBodySite(name, (BodySite)resource);
21875    else if (resource instanceof Bundle)
21876      composeBundle(name, (Bundle)resource);
21877    else if (resource instanceof CarePlan)
21878      composeCarePlan(name, (CarePlan)resource);
21879    else if (resource instanceof Claim)
21880      composeClaim(name, (Claim)resource);
21881    else if (resource instanceof ClaimResponse)
21882      composeClaimResponse(name, (ClaimResponse)resource);
21883    else if (resource instanceof ClinicalImpression)
21884      composeClinicalImpression(name, (ClinicalImpression)resource);
21885    else if (resource instanceof Communication)
21886      composeCommunication(name, (Communication)resource);
21887    else if (resource instanceof CommunicationRequest)
21888      composeCommunicationRequest(name, (CommunicationRequest)resource);
21889    else if (resource instanceof Composition)
21890      composeComposition(name, (Composition)resource);
21891    else if (resource instanceof ConceptMap)
21892      composeConceptMap(name, (ConceptMap)resource);
21893    else if (resource instanceof Condition)
21894      composeCondition(name, (Condition)resource);
21895    else if (resource instanceof Conformance)
21896      composeConformance(name, (Conformance)resource);
21897    else if (resource instanceof Contract)
21898      composeContract(name, (Contract)resource);
21899    else if (resource instanceof Coverage)
21900      composeCoverage(name, (Coverage)resource);
21901    else if (resource instanceof DataElement)
21902      composeDataElement(name, (DataElement)resource);
21903    else if (resource instanceof DetectedIssue)
21904      composeDetectedIssue(name, (DetectedIssue)resource);
21905    else if (resource instanceof Device)
21906      composeDevice(name, (Device)resource);
21907    else if (resource instanceof DeviceComponent)
21908      composeDeviceComponent(name, (DeviceComponent)resource);
21909    else if (resource instanceof DeviceMetric)
21910      composeDeviceMetric(name, (DeviceMetric)resource);
21911    else if (resource instanceof DeviceUseRequest)
21912      composeDeviceUseRequest(name, (DeviceUseRequest)resource);
21913    else if (resource instanceof DeviceUseStatement)
21914      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
21915    else if (resource instanceof DiagnosticOrder)
21916      composeDiagnosticOrder(name, (DiagnosticOrder)resource);
21917    else if (resource instanceof DiagnosticReport)
21918      composeDiagnosticReport(name, (DiagnosticReport)resource);
21919    else if (resource instanceof DocumentManifest)
21920      composeDocumentManifest(name, (DocumentManifest)resource);
21921    else if (resource instanceof DocumentReference)
21922      composeDocumentReference(name, (DocumentReference)resource);
21923    else if (resource instanceof EligibilityRequest)
21924      composeEligibilityRequest(name, (EligibilityRequest)resource);
21925    else if (resource instanceof EligibilityResponse)
21926      composeEligibilityResponse(name, (EligibilityResponse)resource);
21927    else if (resource instanceof Encounter)
21928      composeEncounter(name, (Encounter)resource);
21929    else if (resource instanceof EnrollmentRequest)
21930      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
21931    else if (resource instanceof EnrollmentResponse)
21932      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
21933    else if (resource instanceof EpisodeOfCare)
21934      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
21935    else if (resource instanceof ExplanationOfBenefit)
21936      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
21937    else if (resource instanceof FamilyMemberHistory)
21938      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
21939    else if (resource instanceof Flag)
21940      composeFlag(name, (Flag)resource);
21941    else if (resource instanceof Goal)
21942      composeGoal(name, (Goal)resource);
21943    else if (resource instanceof Group)
21944      composeGroup(name, (Group)resource);
21945    else if (resource instanceof HealthcareService)
21946      composeHealthcareService(name, (HealthcareService)resource);
21947    else if (resource instanceof ImagingObjectSelection)
21948      composeImagingObjectSelection(name, (ImagingObjectSelection)resource);
21949    else if (resource instanceof ImagingStudy)
21950      composeImagingStudy(name, (ImagingStudy)resource);
21951    else if (resource instanceof Immunization)
21952      composeImmunization(name, (Immunization)resource);
21953    else if (resource instanceof ImmunizationRecommendation)
21954      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
21955    else if (resource instanceof ImplementationGuide)
21956      composeImplementationGuide(name, (ImplementationGuide)resource);
21957    else if (resource instanceof List_)
21958      composeList_(name, (List_)resource);
21959    else if (resource instanceof Location)
21960      composeLocation(name, (Location)resource);
21961    else if (resource instanceof Media)
21962      composeMedia(name, (Media)resource);
21963    else if (resource instanceof Medication)
21964      composeMedication(name, (Medication)resource);
21965    else if (resource instanceof MedicationAdministration)
21966      composeMedicationAdministration(name, (MedicationAdministration)resource);
21967    else if (resource instanceof MedicationDispense)
21968      composeMedicationDispense(name, (MedicationDispense)resource);
21969    else if (resource instanceof MedicationOrder)
21970      composeMedicationOrder(name, (MedicationOrder)resource);
21971    else if (resource instanceof MedicationStatement)
21972      composeMedicationStatement(name, (MedicationStatement)resource);
21973    else if (resource instanceof MessageHeader)
21974      composeMessageHeader(name, (MessageHeader)resource);
21975    else if (resource instanceof NamingSystem)
21976      composeNamingSystem(name, (NamingSystem)resource);
21977    else if (resource instanceof NutritionOrder)
21978      composeNutritionOrder(name, (NutritionOrder)resource);
21979    else if (resource instanceof Observation)
21980      composeObservation(name, (Observation)resource);
21981    else if (resource instanceof OperationDefinition)
21982      composeOperationDefinition(name, (OperationDefinition)resource);
21983    else if (resource instanceof OperationOutcome)
21984      composeOperationOutcome(name, (OperationOutcome)resource);
21985    else if (resource instanceof Order)
21986      composeOrder(name, (Order)resource);
21987    else if (resource instanceof OrderResponse)
21988      composeOrderResponse(name, (OrderResponse)resource);
21989    else if (resource instanceof Organization)
21990      composeOrganization(name, (Organization)resource);
21991    else if (resource instanceof Patient)
21992      composePatient(name, (Patient)resource);
21993    else if (resource instanceof PaymentNotice)
21994      composePaymentNotice(name, (PaymentNotice)resource);
21995    else if (resource instanceof PaymentReconciliation)
21996      composePaymentReconciliation(name, (PaymentReconciliation)resource);
21997    else if (resource instanceof Person)
21998      composePerson(name, (Person)resource);
21999    else if (resource instanceof Practitioner)
22000      composePractitioner(name, (Practitioner)resource);
22001    else if (resource instanceof Procedure)
22002      composeProcedure(name, (Procedure)resource);
22003    else if (resource instanceof ProcedureRequest)
22004      composeProcedureRequest(name, (ProcedureRequest)resource);
22005    else if (resource instanceof ProcessRequest)
22006      composeProcessRequest(name, (ProcessRequest)resource);
22007    else if (resource instanceof ProcessResponse)
22008      composeProcessResponse(name, (ProcessResponse)resource);
22009    else if (resource instanceof Provenance)
22010      composeProvenance(name, (Provenance)resource);
22011    else if (resource instanceof Questionnaire)
22012      composeQuestionnaire(name, (Questionnaire)resource);
22013    else if (resource instanceof QuestionnaireResponse)
22014      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
22015    else if (resource instanceof ReferralRequest)
22016      composeReferralRequest(name, (ReferralRequest)resource);
22017    else if (resource instanceof RelatedPerson)
22018      composeRelatedPerson(name, (RelatedPerson)resource);
22019    else if (resource instanceof RiskAssessment)
22020      composeRiskAssessment(name, (RiskAssessment)resource);
22021    else if (resource instanceof Schedule)
22022      composeSchedule(name, (Schedule)resource);
22023    else if (resource instanceof SearchParameter)
22024      composeSearchParameter(name, (SearchParameter)resource);
22025    else if (resource instanceof Slot)
22026      composeSlot(name, (Slot)resource);
22027    else if (resource instanceof Specimen)
22028      composeSpecimen(name, (Specimen)resource);
22029    else if (resource instanceof StructureDefinition)
22030      composeStructureDefinition(name, (StructureDefinition)resource);
22031    else if (resource instanceof Subscription)
22032      composeSubscription(name, (Subscription)resource);
22033    else if (resource instanceof Substance)
22034      composeSubstance(name, (Substance)resource);
22035    else if (resource instanceof SupplyDelivery)
22036      composeSupplyDelivery(name, (SupplyDelivery)resource);
22037    else if (resource instanceof SupplyRequest)
22038      composeSupplyRequest(name, (SupplyRequest)resource);
22039    else if (resource instanceof TestScript)
22040      composeTestScript(name, (TestScript)resource);
22041    else if (resource instanceof ValueSet)
22042      composeValueSet(name, (ValueSet)resource);
22043    else if (resource instanceof VisionPrescription)
22044      composeVisionPrescription(name, (VisionPrescription)resource);
22045    else if (resource instanceof Binary)
22046      composeBinary(name, (Binary)resource);
22047    else
22048      throw new Error("Unhandled resource type "+resource.getClass().getName());
22049  }
22050
22051  protected void composeType(String prefix, Type type) throws IOException {
22052    if (type == null)
22053      ;
22054    else if (type instanceof Money)
22055       composeMoney(prefix+"Money", (Money) type);
22056    else if (type instanceof SimpleQuantity)
22057       composeSimpleQuantity(prefix+"SimpleQuantity", (SimpleQuantity) type);
22058    else if (type instanceof Duration)
22059       composeDuration(prefix+"Duration", (Duration) type);
22060    else if (type instanceof Count)
22061       composeCount(prefix+"Count", (Count) type);
22062    else if (type instanceof Distance)
22063       composeDistance(prefix+"Distance", (Distance) type);
22064    else if (type instanceof Age)
22065       composeAge(prefix+"Age", (Age) type);
22066    else if (type instanceof Identifier)
22067       composeIdentifier(prefix+"Identifier", (Identifier) type);
22068    else if (type instanceof Coding)
22069       composeCoding(prefix+"Coding", (Coding) type);
22070    else if (type instanceof Reference)
22071       composeReference(prefix+"Reference", (Reference) type);
22072    else if (type instanceof Signature)
22073       composeSignature(prefix+"Signature", (Signature) type);
22074    else if (type instanceof SampledData)
22075       composeSampledData(prefix+"SampledData", (SampledData) type);
22076    else if (type instanceof Quantity)
22077       composeQuantity(prefix+"Quantity", (Quantity) type);
22078    else if (type instanceof Period)
22079       composePeriod(prefix+"Period", (Period) type);
22080    else if (type instanceof Attachment)
22081       composeAttachment(prefix+"Attachment", (Attachment) type);
22082    else if (type instanceof Ratio)
22083       composeRatio(prefix+"Ratio", (Ratio) type);
22084    else if (type instanceof Range)
22085       composeRange(prefix+"Range", (Range) type);
22086    else if (type instanceof Annotation)
22087       composeAnnotation(prefix+"Annotation", (Annotation) type);
22088    else if (type instanceof CodeableConcept)
22089       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
22090    else if (type instanceof HumanName)
22091       composeHumanName(prefix+"HumanName", (HumanName) type);
22092    else if (type instanceof ContactPoint)
22093       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
22094    else if (type instanceof Meta)
22095       composeMeta(prefix+"Meta", (Meta) type);
22096    else if (type instanceof Address)
22097       composeAddress(prefix+"Address", (Address) type);
22098    else if (type instanceof Timing)
22099       composeTiming(prefix+"Timing", (Timing) type);
22100    else if (type instanceof ElementDefinition)
22101       composeElementDefinition(prefix+"ElementDefinition", (ElementDefinition) type);
22102    else if (type instanceof DateType)
22103       composeDate(prefix+"Date", (DateType) type);
22104    else if (type instanceof DateTimeType)
22105       composeDateTime(prefix+"DateTime", (DateTimeType) type);
22106    else if (type instanceof CodeType)
22107       composeCode(prefix+"Code", (CodeType) type);
22108    else if (type instanceof StringType)
22109       composeString(prefix+"String", (StringType) type);
22110    else if (type instanceof IntegerType)
22111       composeInteger(prefix+"Integer", (IntegerType) type);
22112    else if (type instanceof OidType)
22113       composeOid(prefix+"Oid", (OidType) type);
22114    else if (type instanceof UriType)
22115       composeUri(prefix+"Uri", (UriType) type);
22116    else if (type instanceof UuidType)
22117       composeUuid(prefix+"Uuid", (UuidType) type);
22118    else if (type instanceof InstantType)
22119       composeInstant(prefix+"Instant", (InstantType) type);
22120    else if (type instanceof BooleanType)
22121       composeBoolean(prefix+"Boolean", (BooleanType) type);
22122    else if (type instanceof Base64BinaryType)
22123       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
22124    else if (type instanceof UnsignedIntType)
22125       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
22126    else if (type instanceof MarkdownType)
22127       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
22128    else if (type instanceof TimeType)
22129       composeTime(prefix+"Time", (TimeType) type);
22130    else if (type instanceof IdType)
22131       composeId(prefix+"Id", (IdType) type);
22132    else if (type instanceof PositiveIntType)
22133       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
22134    else if (type instanceof DecimalType)
22135       composeDecimal(prefix+"Decimal", (DecimalType) type);
22136    else
22137      throw new Error("Unhandled type");
22138  }
22139
22140}
22141