001package org.hl7.fhir.r4.formats;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Tue, Apr 3, 2018 06:39+1000 for FHIR v3.4.0
033
034import org.hl7.fhir.r4.model.DateType;
035import org.hl7.fhir.r4.model.DateTimeType;
036import org.hl7.fhir.r4.model.CodeType;
037import org.hl7.fhir.r4.model.StringType;
038import org.hl7.fhir.r4.model.IntegerType;
039import org.hl7.fhir.r4.model.OidType;
040import org.hl7.fhir.r4.model.CanonicalType;
041import org.hl7.fhir.r4.model.UriType;
042import org.hl7.fhir.r4.model.UuidType;
043import org.hl7.fhir.r4.model.UrlType;
044import org.hl7.fhir.r4.model.InstantType;
045import org.hl7.fhir.r4.model.BooleanType;
046import org.hl7.fhir.r4.model.Base64BinaryType;
047import org.hl7.fhir.r4.model.UnsignedIntType;
048import org.hl7.fhir.r4.model.MarkdownType;
049import org.hl7.fhir.r4.model.TimeType;
050import org.hl7.fhir.r4.model.IdType;
051import org.hl7.fhir.r4.model.PositiveIntType;
052import org.hl7.fhir.r4.model.DecimalType;
053import org.hl7.fhir.r4.model.*;
054import org.xmlpull.v1.*;
055import org.hl7.fhir.utilities.Utilities;
056import org.hl7.fhir.exceptions.FHIRFormatError;
057import org.hl7.fhir.exceptions.FHIRException;
058import org.hl7.fhir.r4.utils.formats.Turtle.Complex;
059import java.io.IOException;
060
061public class RdfParser extends RdfParserBase {
062
063  public RdfParser() {
064    super();
065  }
066
067  public RdfParser(boolean allowUnknownContent) {
068    super();
069    setAllowUnknownContent(allowUnknownContent);
070  }
071
072
073  protected void composeElement(Complex t, String parentType, String name, Element element, int index) {
074    if (element == null) 
075      return;
076    if (index > -1)
077      t.predicate("fhir:index", Integer.toString(index));
078    if (element.hasIdElement())
079      composeString(t, "Element", "id", element.getIdElement(), -1);
080    for (int i = 0; i < element.getExtension().size(); i++)
081      composeExtension(t, "Element", "extension", element.getExtension().get(i), i);
082  }
083
084  protected void composeBackboneElement(Complex t, String tType, String name, BackboneElement element, int index) {
085    composeElement(t, tType, name, element, index);
086    for (int i = 0; i < element.getModifierExtension().size(); i++)
087      composeExtension(t, "Element", "modifierExtension", element.getModifierExtension().get(i), i);
088  }
089
090  private void composeEnum(Complex parent, String parentType, String name, Enumeration<? extends Enum> value, int index) {
091    if (value == null)
092      return;
093    Complex t = parent.predicate("fhir:"+parentType+"."+name);
094    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
095    composeElement(t, parentType, name, value, index);
096    decorateCode(t, value);
097  }
098
099
100  protected void composeDate(Complex parent, String parentType, String name, DateType value, int index) {
101    if (value == null)
102      return;
103    Complex t = parent.predicate("fhir:"+parentType+"."+name);
104    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
105    composeElement(t, parentType, name, value, index);
106  }
107
108  protected void composeDateTime(Complex parent, String parentType, String name, DateTimeType value, int index) {
109    if (value == null)
110      return;
111    Complex t = parent.predicate("fhir:"+parentType+"."+name);
112    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
113    composeElement(t, parentType, name, value, index);
114  }
115
116  protected void composeCode(Complex parent, String parentType, String name, CodeType value, int index) {
117    if (value == null)
118      return;
119    Complex t = parent.predicate("fhir:"+parentType+"."+name);
120    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
121    composeElement(t, parentType, name, value, index);
122    decorateCode(t, value);
123  }
124
125  protected void composeString(Complex parent, String parentType, String name, StringType value, int index) {
126    if (value == null)
127      return;
128    Complex t = parent.predicate("fhir:"+parentType+"."+name);
129    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
130    composeElement(t, parentType, name, value, index);
131  }
132
133  protected void composeInteger(Complex parent, String parentType, String name, IntegerType value, int index) {
134    if (value == null)
135      return;
136    Complex t = parent.predicate("fhir:"+parentType+"."+name);
137    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
138    composeElement(t, parentType, name, value, index);
139  }
140
141  protected void composeOid(Complex parent, String parentType, String name, OidType value, int index) {
142    if (value == null)
143      return;
144    Complex t = parent.predicate("fhir:"+parentType+"."+name);
145    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
146    composeElement(t, parentType, name, value, index);
147  }
148
149  protected void composeCanonical(Complex parent, String parentType, String name, CanonicalType value, int index) {
150    if (value == null)
151      return;
152    Complex t = parent.predicate("fhir:"+parentType+"."+name);
153    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
154    composeElement(t, parentType, name, value, index);
155  }
156
157  protected void composeUri(Complex parent, String parentType, String name, UriType value, int index) {
158    if (value == null)
159      return;
160    Complex t = parent.predicate("fhir:"+parentType+"."+name);
161    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
162    composeElement(t, parentType, name, value, index);
163  }
164
165  protected void composeUuid(Complex parent, String parentType, String name, UuidType value, int index) {
166    if (value == null)
167      return;
168    Complex t = parent.predicate("fhir:"+parentType+"."+name);
169    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
170    composeElement(t, parentType, name, value, index);
171  }
172
173  protected void composeUrl(Complex parent, String parentType, String name, UrlType value, int index) {
174    if (value == null)
175      return;
176    Complex t = parent.predicate("fhir:"+parentType+"."+name);
177    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
178    composeElement(t, parentType, name, value, index);
179  }
180
181  protected void composeInstant(Complex parent, String parentType, String name, InstantType value, int index) {
182    if (value == null)
183      return;
184    Complex t = parent.predicate("fhir:"+parentType+"."+name);
185    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
186    composeElement(t, parentType, name, value, index);
187  }
188
189  protected void composeBoolean(Complex parent, String parentType, String name, BooleanType value, int index) {
190    if (value == null)
191      return;
192    Complex t = parent.predicate("fhir:"+parentType+"."+name);
193    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
194    composeElement(t, parentType, name, value, index);
195  }
196
197  protected void composeBase64Binary(Complex parent, String parentType, String name, Base64BinaryType value, int index) {
198    if (value == null)
199      return;
200    Complex t = parent.predicate("fhir:"+parentType+"."+name);
201    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
202    composeElement(t, parentType, name, value, index);
203  }
204
205  protected void composeUnsignedInt(Complex parent, String parentType, String name, UnsignedIntType value, int index) {
206    if (value == null)
207      return;
208    Complex t = parent.predicate("fhir:"+parentType+"."+name);
209    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
210    composeElement(t, parentType, name, value, index);
211  }
212
213  protected void composeMarkdown(Complex parent, String parentType, String name, MarkdownType value, int index) {
214    if (value == null)
215      return;
216    Complex t = parent.predicate("fhir:"+parentType+"."+name);
217    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
218    composeElement(t, parentType, name, value, index);
219  }
220
221  protected void composeTime(Complex parent, String parentType, String name, TimeType value, int index) {
222    if (value == null)
223      return;
224    Complex t = parent.predicate("fhir:"+parentType+"."+name);
225    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
226    composeElement(t, parentType, name, value, index);
227  }
228
229  protected void composeId(Complex parent, String parentType, String name, IdType value, int index) {
230    if (value == null)
231      return;
232    Complex t = parent.predicate("fhir:"+parentType+"."+name);
233    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
234    composeElement(t, parentType, name, value, index);
235  }
236
237  protected void composePositiveInt(Complex parent, String parentType, String name, PositiveIntType value, int index) {
238    if (value == null)
239      return;
240    Complex t = parent.predicate("fhir:"+parentType+"."+name);
241    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
242    composeElement(t, parentType, name, value, index);
243  }
244
245  protected void composeDecimal(Complex parent, String parentType, String name, DecimalType value, int index) {
246    if (value == null)
247      return;
248    Complex t = parent.predicate("fhir:"+parentType+"."+name);
249    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
250    composeElement(t, parentType, name, value, index);
251  }
252
253  protected void composeExtension(Complex parent, String parentType, String name, Extension element, int index) {
254    if (element == null) 
255      return;
256    Complex t;
257    if (Utilities.noString(parentType))
258      t = parent;
259    else {
260      t = parent.predicate("fhir:"+parentType+'.'+name);
261    }
262    composeElement(t, "Extension", name, element, index);
263    if (element.hasUrlElement())
264      composeUri(t, "Extension", "url", element.getUrlElement(), -1);
265    if (element.hasValue())
266      composeType(t, "Extension", "value", element.getValue(), -1);
267  }
268
269  protected void composeNarrative(Complex parent, String parentType, String name, Narrative element, int index) {
270    if (element == null) 
271      return;
272    Complex t;
273    if (Utilities.noString(parentType))
274      t = parent;
275    else {
276      t = parent.predicate("fhir:"+parentType+'.'+name);
277    }
278    composeElement(t, "Narrative", name, element, index);
279    if (element.hasStatusElement())
280      composeEnum(t, "Narrative", "status", element.getStatusElement(), -1);
281    if (element.hasDiv())
282      composeXhtml(t, "Narrative", "div", element.getDiv(), -1);
283  }
284
285  protected void composeMeta(Complex parent, String parentType, String name, Meta element, int index) {
286    if (element == null) 
287      return;
288    Complex t;
289    if (Utilities.noString(parentType))
290      t = parent;
291    else {
292      t = parent.predicate("fhir:"+parentType+'.'+name);
293    }
294    composeElement(t, "Meta", name, element, index);
295    if (element.hasVersionIdElement())
296      composeId(t, "Meta", "versionId", element.getVersionIdElement(), -1);
297    if (element.hasLastUpdatedElement())
298      composeInstant(t, "Meta", "lastUpdated", element.getLastUpdatedElement(), -1);
299    if (element.hasSourceElement())
300      composeUri(t, "Meta", "source", element.getSourceElement(), -1);
301    for (int i = 0; i < element.getProfile().size(); i++)
302      composeCanonical(t, "Meta", "profile", element.getProfile().get(i), i);
303    for (int i = 0; i < element.getSecurity().size(); i++)
304      composeCoding(t, "Meta", "security", element.getSecurity().get(i), i);
305    for (int i = 0; i < element.getTag().size(); i++)
306      composeCoding(t, "Meta", "tag", element.getTag().get(i), i);
307  }
308
309  protected void composeAddress(Complex parent, String parentType, String name, Address element, int index) {
310    if (element == null) 
311      return;
312    Complex t;
313    if (Utilities.noString(parentType))
314      t = parent;
315    else {
316      t = parent.predicate("fhir:"+parentType+'.'+name);
317    }
318    composeElement(t, "Address", name, element, index);
319    if (element.hasUseElement())
320      composeEnum(t, "Address", "use", element.getUseElement(), -1);
321    if (element.hasTypeElement())
322      composeEnum(t, "Address", "type", element.getTypeElement(), -1);
323    if (element.hasTextElement())
324      composeString(t, "Address", "text", element.getTextElement(), -1);
325    for (int i = 0; i < element.getLine().size(); i++)
326      composeString(t, "Address", "line", element.getLine().get(i), i);
327    if (element.hasCityElement())
328      composeString(t, "Address", "city", element.getCityElement(), -1);
329    if (element.hasDistrictElement())
330      composeString(t, "Address", "district", element.getDistrictElement(), -1);
331    if (element.hasStateElement())
332      composeString(t, "Address", "state", element.getStateElement(), -1);
333    if (element.hasPostalCodeElement())
334      composeString(t, "Address", "postalCode", element.getPostalCodeElement(), -1);
335    if (element.hasCountryElement())
336      composeString(t, "Address", "country", element.getCountryElement(), -1);
337    if (element.hasPeriod())
338      composePeriod(t, "Address", "period", element.getPeriod(), -1);
339  }
340
341  protected void composeContributor(Complex parent, String parentType, String name, Contributor element, int index) {
342    if (element == null) 
343      return;
344    Complex t;
345    if (Utilities.noString(parentType))
346      t = parent;
347    else {
348      t = parent.predicate("fhir:"+parentType+'.'+name);
349    }
350    composeElement(t, "Contributor", name, element, index);
351    if (element.hasTypeElement())
352      composeEnum(t, "Contributor", "type", element.getTypeElement(), -1);
353    if (element.hasNameElement())
354      composeString(t, "Contributor", "name", element.getNameElement(), -1);
355    for (int i = 0; i < element.getContact().size(); i++)
356      composeContactDetail(t, "Contributor", "contact", element.getContact().get(i), i);
357  }
358
359  protected void composeAttachment(Complex parent, String parentType, String name, Attachment element, int index) {
360    if (element == null) 
361      return;
362    Complex t;
363    if (Utilities.noString(parentType))
364      t = parent;
365    else {
366      t = parent.predicate("fhir:"+parentType+'.'+name);
367    }
368    composeElement(t, "Attachment", name, element, index);
369    if (element.hasContentTypeElement())
370      composeCode(t, "Attachment", "contentType", element.getContentTypeElement(), -1);
371    if (element.hasLanguageElement())
372      composeCode(t, "Attachment", "language", element.getLanguageElement(), -1);
373    if (element.hasDataElement())
374      composeBase64Binary(t, "Attachment", "data", element.getDataElement(), -1);
375    if (element.hasUrlElement())
376      composeUrl(t, "Attachment", "url", element.getUrlElement(), -1);
377    if (element.hasSizeElement())
378      composeUnsignedInt(t, "Attachment", "size", element.getSizeElement(), -1);
379    if (element.hasHashElement())
380      composeBase64Binary(t, "Attachment", "hash", element.getHashElement(), -1);
381    if (element.hasTitleElement())
382      composeString(t, "Attachment", "title", element.getTitleElement(), -1);
383    if (element.hasCreationElement())
384      composeDateTime(t, "Attachment", "creation", element.getCreationElement(), -1);
385  }
386
387  protected void composeCount(Complex parent, String parentType, String name, Count element, int index) {
388    if (element == null) 
389      return;
390    Complex t;
391    if (Utilities.noString(parentType))
392      t = parent;
393    else {
394      t = parent.predicate("fhir:"+parentType+'.'+name);
395    }
396    composeElement(t, "Count", name, element, index);
397  }
398
399  protected void composeDataRequirement(Complex parent, String parentType, String name, DataRequirement element, int index) {
400    if (element == null) 
401      return;
402    Complex t;
403    if (Utilities.noString(parentType))
404      t = parent;
405    else {
406      t = parent.predicate("fhir:"+parentType+'.'+name);
407    }
408    composeElement(t, "DataRequirement", name, element, index);
409    if (element.hasTypeElement())
410      composeCode(t, "DataRequirement", "type", element.getTypeElement(), -1);
411    for (int i = 0; i < element.getProfile().size(); i++)
412      composeCanonical(t, "DataRequirement", "profile", element.getProfile().get(i), i);
413    if (element.hasSubject())
414      composeType(t, "DataRequirement", "subject", element.getSubject(), -1);
415    for (int i = 0; i < element.getMustSupport().size(); i++)
416      composeString(t, "DataRequirement", "mustSupport", element.getMustSupport().get(i), i);
417    for (int i = 0; i < element.getCodeFilter().size(); i++)
418      composeDataRequirementDataRequirementCodeFilterComponent(t, "DataRequirement", "codeFilter", element.getCodeFilter().get(i), i);
419    for (int i = 0; i < element.getDateFilter().size(); i++)
420      composeDataRequirementDataRequirementDateFilterComponent(t, "DataRequirement", "dateFilter", element.getDateFilter().get(i), i);
421    if (element.hasLimitElement())
422      composePositiveInt(t, "DataRequirement", "limit", element.getLimitElement(), -1);
423    for (int i = 0; i < element.getSort().size(); i++)
424      composeDataRequirementDataRequirementSortComponent(t, "DataRequirement", "sort", element.getSort().get(i), i);
425  }
426
427  protected void composeDataRequirementDataRequirementCodeFilterComponent(Complex parent, String parentType, String name, DataRequirement.DataRequirementCodeFilterComponent element, int index) {
428    if (element == null) 
429      return;
430    Complex t;
431    if (Utilities.noString(parentType))
432      t = parent;
433    else {
434      t = parent.predicate("fhir:"+parentType+'.'+name);
435    }
436    composeElement(t, "codeFilter", name, element, index);
437    if (element.hasPathElement())
438      composeString(t, "DataRequirement", "path", element.getPathElement(), -1);
439    if (element.hasValueSet())
440      composeType(t, "DataRequirement", "valueSet", element.getValueSet(), -1);
441    for (int i = 0; i < element.getCode().size(); i++)
442      composeCoding(t, "DataRequirement", "code", element.getCode().get(i), i);
443  }
444
445  protected void composeDataRequirementDataRequirementDateFilterComponent(Complex parent, String parentType, String name, DataRequirement.DataRequirementDateFilterComponent element, int index) {
446    if (element == null) 
447      return;
448    Complex t;
449    if (Utilities.noString(parentType))
450      t = parent;
451    else {
452      t = parent.predicate("fhir:"+parentType+'.'+name);
453    }
454    composeElement(t, "dateFilter", name, element, index);
455    if (element.hasPathElement())
456      composeString(t, "DataRequirement", "path", element.getPathElement(), -1);
457    if (element.hasValue())
458      composeType(t, "DataRequirement", "value", element.getValue(), -1);
459  }
460
461  protected void composeDataRequirementDataRequirementSortComponent(Complex parent, String parentType, String name, DataRequirement.DataRequirementSortComponent element, int index) {
462    if (element == null) 
463      return;
464    Complex t;
465    if (Utilities.noString(parentType))
466      t = parent;
467    else {
468      t = parent.predicate("fhir:"+parentType+'.'+name);
469    }
470    composeElement(t, "sort", name, element, index);
471    if (element.hasPathElement())
472      composeString(t, "DataRequirement", "path", element.getPathElement(), -1);
473    if (element.hasDirectionElement())
474      composeEnum(t, "DataRequirement", "direction", element.getDirectionElement(), -1);
475  }
476
477  protected void composeDosage(Complex parent, String parentType, String name, Dosage element, int index) {
478    if (element == null) 
479      return;
480    Complex t;
481    if (Utilities.noString(parentType))
482      t = parent;
483    else {
484      t = parent.predicate("fhir:"+parentType+'.'+name);
485    }
486    composeElement(t, "Dosage", name, element, index);
487    if (element.hasSequenceElement())
488      composeInteger(t, "Dosage", "sequence", element.getSequenceElement(), -1);
489    if (element.hasTextElement())
490      composeString(t, "Dosage", "text", element.getTextElement(), -1);
491    for (int i = 0; i < element.getAdditionalInstruction().size(); i++)
492      composeCodeableConcept(t, "Dosage", "additionalInstruction", element.getAdditionalInstruction().get(i), i);
493    if (element.hasPatientInstructionElement())
494      composeString(t, "Dosage", "patientInstruction", element.getPatientInstructionElement(), -1);
495    if (element.hasTiming())
496      composeTiming(t, "Dosage", "timing", element.getTiming(), -1);
497    if (element.hasAsNeeded())
498      composeType(t, "Dosage", "asNeeded", element.getAsNeeded(), -1);
499    if (element.hasSite())
500      composeCodeableConcept(t, "Dosage", "site", element.getSite(), -1);
501    if (element.hasRoute())
502      composeCodeableConcept(t, "Dosage", "route", element.getRoute(), -1);
503    if (element.hasMethod())
504      composeCodeableConcept(t, "Dosage", "method", element.getMethod(), -1);
505    for (int i = 0; i < element.getDoseAndRate().size(); i++)
506      composeDosageDosageDoseAndRateComponent(t, "Dosage", "doseAndRate", element.getDoseAndRate().get(i), i);
507    if (element.hasMaxDosePerPeriod())
508      composeRatio(t, "Dosage", "maxDosePerPeriod", element.getMaxDosePerPeriod(), -1);
509    if (element.hasMaxDosePerAdministration())
510      composeQuantity(t, "Dosage", "maxDosePerAdministration", element.getMaxDosePerAdministration(), -1);
511    if (element.hasMaxDosePerLifetime())
512      composeQuantity(t, "Dosage", "maxDosePerLifetime", element.getMaxDosePerLifetime(), -1);
513  }
514
515  protected void composeDosageDosageDoseAndRateComponent(Complex parent, String parentType, String name, Dosage.DosageDoseAndRateComponent element, int index) {
516    if (element == null) 
517      return;
518    Complex t;
519    if (Utilities.noString(parentType))
520      t = parent;
521    else {
522      t = parent.predicate("fhir:"+parentType+'.'+name);
523    }
524    composeElement(t, "doseAndRate", name, element, index);
525    if (element.hasType())
526      composeCodeableConcept(t, "Dosage", "type", element.getType(), -1);
527    if (element.hasDose())
528      composeType(t, "Dosage", "dose", element.getDose(), -1);
529    if (element.hasRate())
530      composeType(t, "Dosage", "rate", element.getRate(), -1);
531  }
532
533  protected void composeMoney(Complex parent, String parentType, String name, Money element, int index) {
534    if (element == null) 
535      return;
536    Complex t;
537    if (Utilities.noString(parentType))
538      t = parent;
539    else {
540      t = parent.predicate("fhir:"+parentType+'.'+name);
541    }
542    composeElement(t, "Money", name, element, index);
543  }
544
545  protected void composeHumanName(Complex parent, String parentType, String name, HumanName element, int index) {
546    if (element == null) 
547      return;
548    Complex t;
549    if (Utilities.noString(parentType))
550      t = parent;
551    else {
552      t = parent.predicate("fhir:"+parentType+'.'+name);
553    }
554    composeElement(t, "HumanName", name, element, index);
555    if (element.hasUseElement())
556      composeEnum(t, "HumanName", "use", element.getUseElement(), -1);
557    if (element.hasTextElement())
558      composeString(t, "HumanName", "text", element.getTextElement(), -1);
559    if (element.hasFamilyElement())
560      composeString(t, "HumanName", "family", element.getFamilyElement(), -1);
561    for (int i = 0; i < element.getGiven().size(); i++)
562      composeString(t, "HumanName", "given", element.getGiven().get(i), i);
563    for (int i = 0; i < element.getPrefix().size(); i++)
564      composeString(t, "HumanName", "prefix", element.getPrefix().get(i), i);
565    for (int i = 0; i < element.getSuffix().size(); i++)
566      composeString(t, "HumanName", "suffix", element.getSuffix().get(i), i);
567    if (element.hasPeriod())
568      composePeriod(t, "HumanName", "period", element.getPeriod(), -1);
569  }
570
571  protected void composeContactPoint(Complex parent, String parentType, String name, ContactPoint element, int index) {
572    if (element == null) 
573      return;
574    Complex t;
575    if (Utilities.noString(parentType))
576      t = parent;
577    else {
578      t = parent.predicate("fhir:"+parentType+'.'+name);
579    }
580    composeElement(t, "ContactPoint", name, element, index);
581    if (element.hasSystemElement())
582      composeEnum(t, "ContactPoint", "system", element.getSystemElement(), -1);
583    if (element.hasValueElement())
584      composeString(t, "ContactPoint", "value", element.getValueElement(), -1);
585    if (element.hasUseElement())
586      composeEnum(t, "ContactPoint", "use", element.getUseElement(), -1);
587    if (element.hasRankElement())
588      composePositiveInt(t, "ContactPoint", "rank", element.getRankElement(), -1);
589    if (element.hasPeriod())
590      composePeriod(t, "ContactPoint", "period", element.getPeriod(), -1);
591  }
592
593  protected void composeIdentifier(Complex parent, String parentType, String name, Identifier element, int index) {
594    if (element == null) 
595      return;
596    Complex t;
597    if (Utilities.noString(parentType))
598      t = parent;
599    else {
600      t = parent.predicate("fhir:"+parentType+'.'+name);
601    }
602    composeElement(t, "Identifier", name, element, index);
603    if (element.hasUseElement())
604      composeEnum(t, "Identifier", "use", element.getUseElement(), -1);
605    if (element.hasType())
606      composeCodeableConcept(t, "Identifier", "type", element.getType(), -1);
607    if (element.hasSystemElement())
608      composeUri(t, "Identifier", "system", element.getSystemElement(), -1);
609    if (element.hasValueElement())
610      composeString(t, "Identifier", "value", element.getValueElement(), -1);
611    if (element.hasPeriod())
612      composePeriod(t, "Identifier", "period", element.getPeriod(), -1);
613    if (element.hasAssigner())
614      composeReference(t, "Identifier", "assigner", element.getAssigner(), -1);
615  }
616
617  protected void composeCoding(Complex parent, String parentType, String name, Coding element, int index) {
618    if (element == null) 
619      return;
620    Complex t;
621    if (Utilities.noString(parentType))
622      t = parent;
623    else {
624      t = parent.predicate("fhir:"+parentType+'.'+name);
625    }
626    composeElement(t, "Coding", name, element, index);
627    decorateCoding(t, element);
628    if (element.hasSystemElement())
629      composeUri(t, "Coding", "system", element.getSystemElement(), -1);
630    if (element.hasVersionElement())
631      composeString(t, "Coding", "version", element.getVersionElement(), -1);
632    if (element.hasCodeElement())
633      composeCode(t, "Coding", "code", element.getCodeElement(), -1);
634    if (element.hasDisplayElement())
635      composeString(t, "Coding", "display", element.getDisplayElement(), -1);
636    if (element.hasUserSelectedElement())
637      composeBoolean(t, "Coding", "userSelected", element.getUserSelectedElement(), -1);
638  }
639
640  protected void composeSampledData(Complex parent, String parentType, String name, SampledData element, int index) {
641    if (element == null) 
642      return;
643    Complex t;
644    if (Utilities.noString(parentType))
645      t = parent;
646    else {
647      t = parent.predicate("fhir:"+parentType+'.'+name);
648    }
649    composeElement(t, "SampledData", name, element, index);
650    if (element.hasOrigin())
651      composeQuantity(t, "SampledData", "origin", element.getOrigin(), -1);
652    if (element.hasPeriodElement())
653      composeDecimal(t, "SampledData", "period", element.getPeriodElement(), -1);
654    if (element.hasFactorElement())
655      composeDecimal(t, "SampledData", "factor", element.getFactorElement(), -1);
656    if (element.hasLowerLimitElement())
657      composeDecimal(t, "SampledData", "lowerLimit", element.getLowerLimitElement(), -1);
658    if (element.hasUpperLimitElement())
659      composeDecimal(t, "SampledData", "upperLimit", element.getUpperLimitElement(), -1);
660    if (element.hasDimensionsElement())
661      composePositiveInt(t, "SampledData", "dimensions", element.getDimensionsElement(), -1);
662    if (element.hasDataElement())
663      composeString(t, "SampledData", "data", element.getDataElement(), -1);
664  }
665
666  protected void composeRatio(Complex parent, String parentType, String name, Ratio element, int index) {
667    if (element == null) 
668      return;
669    Complex t;
670    if (Utilities.noString(parentType))
671      t = parent;
672    else {
673      t = parent.predicate("fhir:"+parentType+'.'+name);
674    }
675    composeElement(t, "Ratio", name, element, index);
676    if (element.hasNumerator())
677      composeQuantity(t, "Ratio", "numerator", element.getNumerator(), -1);
678    if (element.hasDenominator())
679      composeQuantity(t, "Ratio", "denominator", element.getDenominator(), -1);
680  }
681
682  protected void composeDistance(Complex parent, String parentType, String name, Distance element, int index) {
683    if (element == null) 
684      return;
685    Complex t;
686    if (Utilities.noString(parentType))
687      t = parent;
688    else {
689      t = parent.predicate("fhir:"+parentType+'.'+name);
690    }
691    composeElement(t, "Distance", name, element, index);
692  }
693
694  protected void composeAge(Complex parent, String parentType, String name, Age element, int index) {
695    if (element == null) 
696      return;
697    Complex t;
698    if (Utilities.noString(parentType))
699      t = parent;
700    else {
701      t = parent.predicate("fhir:"+parentType+'.'+name);
702    }
703    composeElement(t, "Age", name, element, index);
704  }
705
706  protected void composeReference(Complex parent, String parentType, String name, Reference element, int index) {
707    if (element == null) 
708      return;
709    Complex t;
710    if (Utilities.noString(parentType))
711      t = parent;
712    else {
713      t = parent.predicate("fhir:"+parentType+'.'+name);
714    }
715    composeElement(t, "Reference", name, element, index);
716    if (element.hasReferenceElement())
717      composeString(t, "Reference", "reference", element.getReferenceElement_(), -1);
718    if (element.hasTypeElement())
719      composeUri(t, "Reference", "type", element.getTypeElement(), -1);
720    if (element.hasIdentifier())
721      composeIdentifier(t, "Reference", "identifier", element.getIdentifier(), -1);
722    if (element.hasDisplayElement())
723      composeString(t, "Reference", "display", element.getDisplayElement(), -1);
724  }
725
726  protected void composeTriggerDefinition(Complex parent, String parentType, String name, TriggerDefinition element, int index) {
727    if (element == null) 
728      return;
729    Complex t;
730    if (Utilities.noString(parentType))
731      t = parent;
732    else {
733      t = parent.predicate("fhir:"+parentType+'.'+name);
734    }
735    composeElement(t, "TriggerDefinition", name, element, index);
736    if (element.hasTypeElement())
737      composeEnum(t, "TriggerDefinition", "type", element.getTypeElement(), -1);
738    if (element.hasNameElement())
739      composeString(t, "TriggerDefinition", "name", element.getNameElement(), -1);
740    if (element.hasTiming())
741      composeType(t, "TriggerDefinition", "timing", element.getTiming(), -1);
742    if (element.hasData())
743      composeDataRequirement(t, "TriggerDefinition", "data", element.getData(), -1);
744    if (element.hasCondition())
745      composeTriggerDefinitionTriggerDefinitionConditionComponent(t, "TriggerDefinition", "condition", element.getCondition(), -1);
746  }
747
748  protected void composeTriggerDefinitionTriggerDefinitionConditionComponent(Complex parent, String parentType, String name, TriggerDefinition.TriggerDefinitionConditionComponent element, int index) {
749    if (element == null) 
750      return;
751    Complex t;
752    if (Utilities.noString(parentType))
753      t = parent;
754    else {
755      t = parent.predicate("fhir:"+parentType+'.'+name);
756    }
757    composeElement(t, "condition", name, element, index);
758    if (element.hasDescriptionElement())
759      composeString(t, "TriggerDefinition", "description", element.getDescriptionElement(), -1);
760    if (element.hasLanguageElement())
761      composeEnum(t, "TriggerDefinition", "language", element.getLanguageElement(), -1);
762    if (element.hasExpressionElement())
763      composeString(t, "TriggerDefinition", "expression", element.getExpressionElement(), -1);
764  }
765
766  protected void composeQuantity(Complex parent, String parentType, String name, Quantity element, int index) {
767    if (element == null) 
768      return;
769    Complex t;
770    if (Utilities.noString(parentType))
771      t = parent;
772    else {
773      t = parent.predicate("fhir:"+parentType+'.'+name);
774    }
775    composeElement(t, "Quantity", name, element, index);
776    if (element.hasValueElement())
777      composeDecimal(t, "Quantity", "value", element.getValueElement(), -1);
778    if (element.hasComparatorElement())
779      composeEnum(t, "Quantity", "comparator", element.getComparatorElement(), -1);
780    if (element.hasUnitElement())
781      composeString(t, "Quantity", "unit", element.getUnitElement(), -1);
782    if (element.hasSystemElement())
783      composeUri(t, "Quantity", "system", element.getSystemElement(), -1);
784    if (element.hasCodeElement())
785      composeCode(t, "Quantity", "code", element.getCodeElement(), -1);
786  }
787
788  protected void composePeriod(Complex parent, String parentType, String name, Period element, int index) {
789    if (element == null) 
790      return;
791    Complex t;
792    if (Utilities.noString(parentType))
793      t = parent;
794    else {
795      t = parent.predicate("fhir:"+parentType+'.'+name);
796    }
797    composeElement(t, "Period", name, element, index);
798    if (element.hasStartElement())
799      composeDateTime(t, "Period", "start", element.getStartElement(), -1);
800    if (element.hasEndElement())
801      composeDateTime(t, "Period", "end", element.getEndElement(), -1);
802  }
803
804  protected void composeDuration(Complex parent, String parentType, String name, Duration element, int index) {
805    if (element == null) 
806      return;
807    Complex t;
808    if (Utilities.noString(parentType))
809      t = parent;
810    else {
811      t = parent.predicate("fhir:"+parentType+'.'+name);
812    }
813    composeElement(t, "Duration", name, element, index);
814  }
815
816  protected void composeRange(Complex parent, String parentType, String name, Range element, int index) {
817    if (element == null) 
818      return;
819    Complex t;
820    if (Utilities.noString(parentType))
821      t = parent;
822    else {
823      t = parent.predicate("fhir:"+parentType+'.'+name);
824    }
825    composeElement(t, "Range", name, element, index);
826    if (element.hasLow())
827      composeQuantity(t, "Range", "low", element.getLow(), -1);
828    if (element.hasHigh())
829      composeQuantity(t, "Range", "high", element.getHigh(), -1);
830  }
831
832  protected void composeRelatedArtifact(Complex parent, String parentType, String name, RelatedArtifact element, int index) {
833    if (element == null) 
834      return;
835    Complex t;
836    if (Utilities.noString(parentType))
837      t = parent;
838    else {
839      t = parent.predicate("fhir:"+parentType+'.'+name);
840    }
841    composeElement(t, "RelatedArtifact", name, element, index);
842    if (element.hasTypeElement())
843      composeEnum(t, "RelatedArtifact", "type", element.getTypeElement(), -1);
844    if (element.hasDisplayElement())
845      composeString(t, "RelatedArtifact", "display", element.getDisplayElement(), -1);
846    if (element.hasCitationElement())
847      composeString(t, "RelatedArtifact", "citation", element.getCitationElement(), -1);
848    if (element.hasUrlElement())
849      composeUrl(t, "RelatedArtifact", "url", element.getUrlElement(), -1);
850    if (element.hasDocument())
851      composeAttachment(t, "RelatedArtifact", "document", element.getDocument(), -1);
852    if (element.hasResourceElement())
853      composeCanonical(t, "RelatedArtifact", "resource", element.getResourceElement(), -1);
854  }
855
856  protected void composeAnnotation(Complex parent, String parentType, String name, Annotation element, int index) {
857    if (element == null) 
858      return;
859    Complex t;
860    if (Utilities.noString(parentType))
861      t = parent;
862    else {
863      t = parent.predicate("fhir:"+parentType+'.'+name);
864    }
865    composeElement(t, "Annotation", name, element, index);
866    if (element.hasAuthor())
867      composeType(t, "Annotation", "author", element.getAuthor(), -1);
868    if (element.hasTimeElement())
869      composeDateTime(t, "Annotation", "time", element.getTimeElement(), -1);
870    if (element.hasTextElement())
871      composeString(t, "Annotation", "text", element.getTextElement(), -1);
872  }
873
874  protected void composeContactDetail(Complex parent, String parentType, String name, ContactDetail element, int index) {
875    if (element == null) 
876      return;
877    Complex t;
878    if (Utilities.noString(parentType))
879      t = parent;
880    else {
881      t = parent.predicate("fhir:"+parentType+'.'+name);
882    }
883    composeElement(t, "ContactDetail", name, element, index);
884    if (element.hasNameElement())
885      composeString(t, "ContactDetail", "name", element.getNameElement(), -1);
886    for (int i = 0; i < element.getTelecom().size(); i++)
887      composeContactPoint(t, "ContactDetail", "telecom", element.getTelecom().get(i), i);
888  }
889
890  protected void composeUsageContext(Complex parent, String parentType, String name, UsageContext element, int index) {
891    if (element == null) 
892      return;
893    Complex t;
894    if (Utilities.noString(parentType))
895      t = parent;
896    else {
897      t = parent.predicate("fhir:"+parentType+'.'+name);
898    }
899    composeElement(t, "UsageContext", name, element, index);
900    if (element.hasCode())
901      composeCoding(t, "UsageContext", "code", element.getCode(), -1);
902    if (element.hasValue())
903      composeType(t, "UsageContext", "value", element.getValue(), -1);
904  }
905
906  protected void composeSignature(Complex parent, String parentType, String name, Signature element, int index) {
907    if (element == null) 
908      return;
909    Complex t;
910    if (Utilities.noString(parentType))
911      t = parent;
912    else {
913      t = parent.predicate("fhir:"+parentType+'.'+name);
914    }
915    composeElement(t, "Signature", name, element, index);
916    for (int i = 0; i < element.getType().size(); i++)
917      composeCoding(t, "Signature", "type", element.getType().get(i), i);
918    if (element.hasWhenElement())
919      composeInstant(t, "Signature", "when", element.getWhenElement(), -1);
920    if (element.hasWho())
921      composeType(t, "Signature", "who", element.getWho(), -1);
922    if (element.hasOnBehalfOf())
923      composeType(t, "Signature", "onBehalfOf", element.getOnBehalfOf(), -1);
924    if (element.hasTargetFormatElement())
925      composeCode(t, "Signature", "targetFormat", element.getTargetFormatElement(), -1);
926    if (element.hasSigFormatElement())
927      composeCode(t, "Signature", "sigFormat", element.getSigFormatElement(), -1);
928    if (element.hasBlobElement())
929      composeBase64Binary(t, "Signature", "blob", element.getBlobElement(), -1);
930  }
931
932  protected void composeTiming(Complex parent, String parentType, String name, Timing element, int index) {
933    if (element == null) 
934      return;
935    Complex t;
936    if (Utilities.noString(parentType))
937      t = parent;
938    else {
939      t = parent.predicate("fhir:"+parentType+'.'+name);
940    }
941    composeElement(t, "Timing", name, element, index);
942    for (int i = 0; i < element.getEvent().size(); i++)
943      composeDateTime(t, "Timing", "event", element.getEvent().get(i), i);
944    if (element.hasRepeat())
945      composeTimingTimingRepeatComponent(t, "Timing", "repeat", element.getRepeat(), -1);
946    if (element.hasCode())
947      composeCodeableConcept(t, "Timing", "code", element.getCode(), -1);
948  }
949
950  protected void composeTimingTimingRepeatComponent(Complex parent, String parentType, String name, Timing.TimingRepeatComponent element, int index) {
951    if (element == null) 
952      return;
953    Complex t;
954    if (Utilities.noString(parentType))
955      t = parent;
956    else {
957      t = parent.predicate("fhir:"+parentType+'.'+name);
958    }
959    composeElement(t, "repeat", name, element, index);
960    if (element.hasBounds())
961      composeType(t, "Timing", "bounds", element.getBounds(), -1);
962    if (element.hasCountElement())
963      composeInteger(t, "Timing", "count", element.getCountElement(), -1);
964    if (element.hasCountMaxElement())
965      composeInteger(t, "Timing", "countMax", element.getCountMaxElement(), -1);
966    if (element.hasDurationElement())
967      composeDecimal(t, "Timing", "duration", element.getDurationElement(), -1);
968    if (element.hasDurationMaxElement())
969      composeDecimal(t, "Timing", "durationMax", element.getDurationMaxElement(), -1);
970    if (element.hasDurationUnitElement())
971      composeEnum(t, "Timing", "durationUnit", element.getDurationUnitElement(), -1);
972    if (element.hasFrequencyElement())
973      composeInteger(t, "Timing", "frequency", element.getFrequencyElement(), -1);
974    if (element.hasFrequencyMaxElement())
975      composeInteger(t, "Timing", "frequencyMax", element.getFrequencyMaxElement(), -1);
976    if (element.hasPeriodElement())
977      composeDecimal(t, "Timing", "period", element.getPeriodElement(), -1);
978    if (element.hasPeriodMaxElement())
979      composeDecimal(t, "Timing", "periodMax", element.getPeriodMaxElement(), -1);
980    if (element.hasPeriodUnitElement())
981      composeEnum(t, "Timing", "periodUnit", element.getPeriodUnitElement(), -1);
982    for (int i = 0; i < element.getDayOfWeek().size(); i++)
983      composeEnum(t, "Timing", "dayOfWeek", element.getDayOfWeek().get(i), i);
984    for (int i = 0; i < element.getTimeOfDay().size(); i++)
985      composeTime(t, "Timing", "timeOfDay", element.getTimeOfDay().get(i), i);
986    for (int i = 0; i < element.getWhen().size(); i++)
987      composeEnum(t, "Timing", "when", element.getWhen().get(i), i);
988    if (element.hasOffsetElement())
989      composeUnsignedInt(t, "Timing", "offset", element.getOffsetElement(), -1);
990  }
991
992  protected void composeCodeableConcept(Complex parent, String parentType, String name, CodeableConcept element, int index) {
993    if (element == null) 
994      return;
995    Complex t;
996    if (Utilities.noString(parentType))
997      t = parent;
998    else {
999      t = parent.predicate("fhir:"+parentType+'.'+name);
1000    }
1001    composeElement(t, "CodeableConcept", name, element, index);
1002    decorateCodeableConcept(t, element);
1003    for (int i = 0; i < element.getCoding().size(); i++)
1004      composeCoding(t, "CodeableConcept", "coding", element.getCoding().get(i), i);
1005    if (element.hasTextElement())
1006      composeString(t, "CodeableConcept", "text", element.getTextElement(), -1);
1007  }
1008
1009  protected void composeParameterDefinition(Complex parent, String parentType, String name, ParameterDefinition element, int index) {
1010    if (element == null) 
1011      return;
1012    Complex t;
1013    if (Utilities.noString(parentType))
1014      t = parent;
1015    else {
1016      t = parent.predicate("fhir:"+parentType+'.'+name);
1017    }
1018    composeElement(t, "ParameterDefinition", name, element, index);
1019    if (element.hasNameElement())
1020      composeCode(t, "ParameterDefinition", "name", element.getNameElement(), -1);
1021    if (element.hasUseElement())
1022      composeEnum(t, "ParameterDefinition", "use", element.getUseElement(), -1);
1023    if (element.hasMinElement())
1024      composeInteger(t, "ParameterDefinition", "min", element.getMinElement(), -1);
1025    if (element.hasMaxElement())
1026      composeString(t, "ParameterDefinition", "max", element.getMaxElement(), -1);
1027    if (element.hasDocumentationElement())
1028      composeString(t, "ParameterDefinition", "documentation", element.getDocumentationElement(), -1);
1029    if (element.hasTypeElement())
1030      composeCode(t, "ParameterDefinition", "type", element.getTypeElement(), -1);
1031    if (element.hasProfileElement())
1032      composeCanonical(t, "ParameterDefinition", "profile", element.getProfileElement(), -1);
1033  }
1034
1035  protected void composeMarketingStatus(Complex parent, String parentType, String name, MarketingStatus element, int index) {
1036    if (element == null) 
1037      return;
1038    Complex t;
1039    if (Utilities.noString(parentType))
1040      t = parent;
1041    else {
1042      t = parent.predicate("fhir:"+parentType+'.'+name);
1043    }
1044    composeElement(t, "MarketingStatus", name, element, index);
1045    if (element.hasCountry())
1046      composeCodeableConcept(t, "MarketingStatus", "country", element.getCountry(), -1);
1047    if (element.hasJurisdiction())
1048      composeCodeableConcept(t, "MarketingStatus", "jurisdiction", element.getJurisdiction(), -1);
1049    if (element.hasStatus())
1050      composeCodeableConcept(t, "MarketingStatus", "status", element.getStatus(), -1);
1051    if (element.hasDateRange())
1052      composePeriod(t, "MarketingStatus", "dateRange", element.getDateRange(), -1);
1053    if (element.hasRestoreDateElement())
1054      composeDateTime(t, "MarketingStatus", "restoreDate", element.getRestoreDateElement(), -1);
1055  }
1056
1057  protected void composeSubstanceAmount(Complex parent, String parentType, String name, SubstanceAmount element, int index) {
1058    if (element == null) 
1059      return;
1060    Complex t;
1061    if (Utilities.noString(parentType))
1062      t = parent;
1063    else {
1064      t = parent.predicate("fhir:"+parentType+'.'+name);
1065    }
1066    composeElement(t, "SubstanceAmount", name, element, index);
1067    if (element.hasAmount())
1068      composeType(t, "SubstanceAmount", "amount", element.getAmount(), -1);
1069    if (element.hasAmountType())
1070      composeCodeableConcept(t, "SubstanceAmount", "amountType", element.getAmountType(), -1);
1071    if (element.hasAmountTextElement())
1072      composeString(t, "SubstanceAmount", "amountText", element.getAmountTextElement(), -1);
1073    if (element.hasReferenceRange())
1074      composeSubstanceAmountSubstanceAmountReferenceRangeComponent(t, "SubstanceAmount", "referenceRange", element.getReferenceRange(), -1);
1075  }
1076
1077  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponent(Complex parent, String parentType, String name, SubstanceAmount.SubstanceAmountReferenceRangeComponent element, int index) {
1078    if (element == null) 
1079      return;
1080    Complex t;
1081    if (Utilities.noString(parentType))
1082      t = parent;
1083    else {
1084      t = parent.predicate("fhir:"+parentType+'.'+name);
1085    }
1086    composeElement(t, "referenceRange", name, element, index);
1087    if (element.hasLowLimit())
1088      composeQuantity(t, "SubstanceAmount", "lowLimit", element.getLowLimit(), -1);
1089    if (element.hasHighLimit())
1090      composeQuantity(t, "SubstanceAmount", "highLimit", element.getHighLimit(), -1);
1091  }
1092
1093  protected void composeElementDefinition(Complex parent, String parentType, String name, ElementDefinition element, int index) {
1094    if (element == null) 
1095      return;
1096    Complex t;
1097    if (Utilities.noString(parentType))
1098      t = parent;
1099    else {
1100      t = parent.predicate("fhir:"+parentType+'.'+name);
1101    }
1102    composeElement(t, "ElementDefinition", name, element, index);
1103    if (element.hasPathElement())
1104      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1105    for (int i = 0; i < element.getRepresentation().size(); i++)
1106      composeEnum(t, "ElementDefinition", "representation", element.getRepresentation().get(i), i);
1107    if (element.hasSliceNameElement())
1108      composeString(t, "ElementDefinition", "sliceName", element.getSliceNameElement(), -1);
1109    if (element.hasLabelElement())
1110      composeString(t, "ElementDefinition", "label", element.getLabelElement(), -1);
1111    for (int i = 0; i < element.getCode().size(); i++)
1112      composeCoding(t, "ElementDefinition", "code", element.getCode().get(i), i);
1113    if (element.hasSlicing())
1114      composeElementDefinitionElementDefinitionSlicingComponent(t, "ElementDefinition", "slicing", element.getSlicing(), -1);
1115    if (element.hasShortElement())
1116      composeString(t, "ElementDefinition", "short", element.getShortElement(), -1);
1117    if (element.hasDefinitionElement())
1118      composeMarkdown(t, "ElementDefinition", "definition", element.getDefinitionElement(), -1);
1119    if (element.hasCommentElement())
1120      composeMarkdown(t, "ElementDefinition", "comment", element.getCommentElement(), -1);
1121    if (element.hasRequirementsElement())
1122      composeMarkdown(t, "ElementDefinition", "requirements", element.getRequirementsElement(), -1);
1123    for (int i = 0; i < element.getAlias().size(); i++)
1124      composeString(t, "ElementDefinition", "alias", element.getAlias().get(i), i);
1125    if (element.hasMinElement())
1126      composeUnsignedInt(t, "ElementDefinition", "min", element.getMinElement(), -1);
1127    if (element.hasMaxElement())
1128      composeString(t, "ElementDefinition", "max", element.getMaxElement(), -1);
1129    if (element.hasBase())
1130      composeElementDefinitionElementDefinitionBaseComponent(t, "ElementDefinition", "base", element.getBase(), -1);
1131    if (element.hasContentReferenceElement())
1132      composeUri(t, "ElementDefinition", "contentReference", element.getContentReferenceElement(), -1);
1133    for (int i = 0; i < element.getType().size(); i++)
1134      composeElementDefinitionTypeRefComponent(t, "ElementDefinition", "type", element.getType().get(i), i);
1135    if (element.hasDefaultValue())
1136      composeType(t, "ElementDefinition", "defaultValue", element.getDefaultValue(), -1);
1137    if (element.hasMeaningWhenMissingElement())
1138      composeMarkdown(t, "ElementDefinition", "meaningWhenMissing", element.getMeaningWhenMissingElement(), -1);
1139    if (element.hasOrderMeaningElement())
1140      composeString(t, "ElementDefinition", "orderMeaning", element.getOrderMeaningElement(), -1);
1141    if (element.hasFixed())
1142      composeType(t, "ElementDefinition", "fixed", element.getFixed(), -1);
1143    if (element.hasPattern())
1144      composeType(t, "ElementDefinition", "pattern", element.getPattern(), -1);
1145    for (int i = 0; i < element.getExample().size(); i++)
1146      composeElementDefinitionElementDefinitionExampleComponent(t, "ElementDefinition", "example", element.getExample().get(i), i);
1147    if (element.hasMinValue())
1148      composeType(t, "ElementDefinition", "minValue", element.getMinValue(), -1);
1149    if (element.hasMaxValue())
1150      composeType(t, "ElementDefinition", "maxValue", element.getMaxValue(), -1);
1151    if (element.hasMaxLengthElement())
1152      composeInteger(t, "ElementDefinition", "maxLength", element.getMaxLengthElement(), -1);
1153    for (int i = 0; i < element.getCondition().size(); i++)
1154      composeId(t, "ElementDefinition", "condition", element.getCondition().get(i), i);
1155    for (int i = 0; i < element.getConstraint().size(); i++)
1156      composeElementDefinitionElementDefinitionConstraintComponent(t, "ElementDefinition", "constraint", element.getConstraint().get(i), i);
1157    if (element.hasMustSupportElement())
1158      composeBoolean(t, "ElementDefinition", "mustSupport", element.getMustSupportElement(), -1);
1159    if (element.hasIsModifierElement())
1160      composeBoolean(t, "ElementDefinition", "isModifier", element.getIsModifierElement(), -1);
1161    if (element.hasIsModifierReasonElement())
1162      composeString(t, "ElementDefinition", "isModifierReason", element.getIsModifierReasonElement(), -1);
1163    if (element.hasIsSummaryElement())
1164      composeBoolean(t, "ElementDefinition", "isSummary", element.getIsSummaryElement(), -1);
1165    if (element.hasBinding())
1166      composeElementDefinitionElementDefinitionBindingComponent(t, "ElementDefinition", "binding", element.getBinding(), -1);
1167    for (int i = 0; i < element.getMapping().size(); i++)
1168      composeElementDefinitionElementDefinitionMappingComponent(t, "ElementDefinition", "mapping", element.getMapping().get(i), i);
1169  }
1170
1171  protected void composeElementDefinitionElementDefinitionSlicingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionSlicingComponent element, int index) {
1172    if (element == null) 
1173      return;
1174    Complex t;
1175    if (Utilities.noString(parentType))
1176      t = parent;
1177    else {
1178      t = parent.predicate("fhir:"+parentType+'.'+name);
1179    }
1180    composeElement(t, "slicing", name, element, index);
1181    for (int i = 0; i < element.getDiscriminator().size(); i++)
1182      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(t, "ElementDefinition", "discriminator", element.getDiscriminator().get(i), i);
1183    if (element.hasDescriptionElement())
1184      composeString(t, "ElementDefinition", "description", element.getDescriptionElement(), -1);
1185    if (element.hasOrderedElement())
1186      composeBoolean(t, "ElementDefinition", "ordered", element.getOrderedElement(), -1);
1187    if (element.hasRulesElement())
1188      composeEnum(t, "ElementDefinition", "rules", element.getRulesElement(), -1);
1189  }
1190
1191  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element, int index) {
1192    if (element == null) 
1193      return;
1194    Complex t;
1195    if (Utilities.noString(parentType))
1196      t = parent;
1197    else {
1198      t = parent.predicate("fhir:"+parentType+'.'+name);
1199    }
1200    composeElement(t, "discriminator", name, element, index);
1201    if (element.hasTypeElement())
1202      composeEnum(t, "ElementDefinition", "type", element.getTypeElement(), -1);
1203    if (element.hasPathElement())
1204      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1205  }
1206
1207  protected void composeElementDefinitionElementDefinitionBaseComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionBaseComponent element, int index) {
1208    if (element == null) 
1209      return;
1210    Complex t;
1211    if (Utilities.noString(parentType))
1212      t = parent;
1213    else {
1214      t = parent.predicate("fhir:"+parentType+'.'+name);
1215    }
1216    composeElement(t, "base", name, element, index);
1217    if (element.hasPathElement())
1218      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1219    if (element.hasMinElement())
1220      composeUnsignedInt(t, "ElementDefinition", "min", element.getMinElement(), -1);
1221    if (element.hasMaxElement())
1222      composeString(t, "ElementDefinition", "max", element.getMaxElement(), -1);
1223  }
1224
1225  protected void composeElementDefinitionTypeRefComponent(Complex parent, String parentType, String name, ElementDefinition.TypeRefComponent element, int index) {
1226    if (element == null) 
1227      return;
1228    Complex t;
1229    if (Utilities.noString(parentType))
1230      t = parent;
1231    else {
1232      t = parent.predicate("fhir:"+parentType+'.'+name);
1233    }
1234    composeElement(t, "type", name, element, index);
1235    if (element.hasCodeElement())
1236      composeUri(t, "ElementDefinition", "code", element.getCodeElement(), -1);
1237    for (int i = 0; i < element.getProfile().size(); i++)
1238      composeCanonical(t, "ElementDefinition", "profile", element.getProfile().get(i), i);
1239    for (int i = 0; i < element.getTargetProfile().size(); i++)
1240      composeCanonical(t, "ElementDefinition", "targetProfile", element.getTargetProfile().get(i), i);
1241    for (int i = 0; i < element.getAggregation().size(); i++)
1242      composeEnum(t, "ElementDefinition", "aggregation", element.getAggregation().get(i), i);
1243    if (element.hasVersioningElement())
1244      composeEnum(t, "ElementDefinition", "versioning", element.getVersioningElement(), -1);
1245  }
1246
1247  protected void composeElementDefinitionElementDefinitionExampleComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionExampleComponent element, int index) {
1248    if (element == null) 
1249      return;
1250    Complex t;
1251    if (Utilities.noString(parentType))
1252      t = parent;
1253    else {
1254      t = parent.predicate("fhir:"+parentType+'.'+name);
1255    }
1256    composeElement(t, "example", name, element, index);
1257    if (element.hasLabelElement())
1258      composeString(t, "ElementDefinition", "label", element.getLabelElement(), -1);
1259    if (element.hasValue())
1260      composeType(t, "ElementDefinition", "value", element.getValue(), -1);
1261  }
1262
1263  protected void composeElementDefinitionElementDefinitionConstraintComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionConstraintComponent element, int index) {
1264    if (element == null) 
1265      return;
1266    Complex t;
1267    if (Utilities.noString(parentType))
1268      t = parent;
1269    else {
1270      t = parent.predicate("fhir:"+parentType+'.'+name);
1271    }
1272    composeElement(t, "constraint", name, element, index);
1273    if (element.hasKeyElement())
1274      composeId(t, "ElementDefinition", "key", element.getKeyElement(), -1);
1275    if (element.hasRequirementsElement())
1276      composeString(t, "ElementDefinition", "requirements", element.getRequirementsElement(), -1);
1277    if (element.hasSeverityElement())
1278      composeEnum(t, "ElementDefinition", "severity", element.getSeverityElement(), -1);
1279    if (element.hasHumanElement())
1280      composeString(t, "ElementDefinition", "human", element.getHumanElement(), -1);
1281    if (element.hasExpressionElement())
1282      composeString(t, "ElementDefinition", "expression", element.getExpressionElement(), -1);
1283    if (element.hasXpathElement())
1284      composeString(t, "ElementDefinition", "xpath", element.getXpathElement(), -1);
1285    if (element.hasSourceElement())
1286      composeCanonical(t, "ElementDefinition", "source", element.getSourceElement(), -1);
1287  }
1288
1289  protected void composeElementDefinitionElementDefinitionBindingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionBindingComponent element, int index) {
1290    if (element == null) 
1291      return;
1292    Complex t;
1293    if (Utilities.noString(parentType))
1294      t = parent;
1295    else {
1296      t = parent.predicate("fhir:"+parentType+'.'+name);
1297    }
1298    composeElement(t, "binding", name, element, index);
1299    if (element.hasStrengthElement())
1300      composeEnum(t, "ElementDefinition", "strength", element.getStrengthElement(), -1);
1301    if (element.hasDescriptionElement())
1302      composeString(t, "ElementDefinition", "description", element.getDescriptionElement(), -1);
1303    if (element.hasValueSet())
1304      composeType(t, "ElementDefinition", "valueSet", element.getValueSet(), -1);
1305  }
1306
1307  protected void composeElementDefinitionElementDefinitionMappingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionMappingComponent element, int index) {
1308    if (element == null) 
1309      return;
1310    Complex t;
1311    if (Utilities.noString(parentType))
1312      t = parent;
1313    else {
1314      t = parent.predicate("fhir:"+parentType+'.'+name);
1315    }
1316    composeElement(t, "mapping", name, element, index);
1317    if (element.hasIdentityElement())
1318      composeId(t, "ElementDefinition", "identity", element.getIdentityElement(), -1);
1319    if (element.hasLanguageElement())
1320      composeCode(t, "ElementDefinition", "language", element.getLanguageElement(), -1);
1321    if (element.hasMapElement())
1322      composeString(t, "ElementDefinition", "map", element.getMapElement(), -1);
1323    if (element.hasCommentElement())
1324      composeString(t, "ElementDefinition", "comment", element.getCommentElement(), -1);
1325  }
1326
1327  protected void composeSubstanceMoiety(Complex parent, String parentType, String name, SubstanceMoiety element, int index) {
1328    if (element == null) 
1329      return;
1330    Complex t;
1331    if (Utilities.noString(parentType))
1332      t = parent;
1333    else {
1334      t = parent.predicate("fhir:"+parentType+'.'+name);
1335    }
1336    composeElement(t, "SubstanceMoiety", name, element, index);
1337    if (element.hasRole())
1338      composeCodeableConcept(t, "SubstanceMoiety", "role", element.getRole(), -1);
1339    if (element.hasIdentifier())
1340      composeIdentifier(t, "SubstanceMoiety", "identifier", element.getIdentifier(), -1);
1341    if (element.hasNameElement())
1342      composeString(t, "SubstanceMoiety", "name", element.getNameElement(), -1);
1343    if (element.hasStereochemistry())
1344      composeCodeableConcept(t, "SubstanceMoiety", "stereochemistry", element.getStereochemistry(), -1);
1345    if (element.hasOpticalActivity())
1346      composeCodeableConcept(t, "SubstanceMoiety", "opticalActivity", element.getOpticalActivity(), -1);
1347    if (element.hasMolecularFormulaElement())
1348      composeString(t, "SubstanceMoiety", "molecularFormula", element.getMolecularFormulaElement(), -1);
1349    if (element.hasAmount())
1350      composeSubstanceAmount(t, "SubstanceMoiety", "amount", element.getAmount(), -1);
1351  }
1352
1353  protected void composeProductShelfLife(Complex parent, String parentType, String name, ProductShelfLife element, int index) {
1354    if (element == null) 
1355      return;
1356    Complex t;
1357    if (Utilities.noString(parentType))
1358      t = parent;
1359    else {
1360      t = parent.predicate("fhir:"+parentType+'.'+name);
1361    }
1362    composeElement(t, "ProductShelfLife", name, element, index);
1363    if (element.hasIdentifier())
1364      composeIdentifier(t, "ProductShelfLife", "identifier", element.getIdentifier(), -1);
1365    if (element.hasType())
1366      composeCodeableConcept(t, "ProductShelfLife", "type", element.getType(), -1);
1367    if (element.hasPeriod())
1368      composeQuantity(t, "ProductShelfLife", "period", element.getPeriod(), -1);
1369    for (int i = 0; i < element.getSpecialPrecautionsForStorage().size(); i++)
1370      composeCodeableConcept(t, "ProductShelfLife", "specialPrecautionsForStorage", element.getSpecialPrecautionsForStorage().get(i), i);
1371  }
1372
1373  protected void composeProdCharacteristic(Complex parent, String parentType, String name, ProdCharacteristic element, int index) {
1374    if (element == null) 
1375      return;
1376    Complex t;
1377    if (Utilities.noString(parentType))
1378      t = parent;
1379    else {
1380      t = parent.predicate("fhir:"+parentType+'.'+name);
1381    }
1382    composeElement(t, "ProdCharacteristic", name, element, index);
1383    if (element.hasHeight())
1384      composeQuantity(t, "ProdCharacteristic", "height", element.getHeight(), -1);
1385    if (element.hasWidth())
1386      composeQuantity(t, "ProdCharacteristic", "width", element.getWidth(), -1);
1387    if (element.hasDepth())
1388      composeQuantity(t, "ProdCharacteristic", "depth", element.getDepth(), -1);
1389    if (element.hasWeight())
1390      composeQuantity(t, "ProdCharacteristic", "weight", element.getWeight(), -1);
1391    if (element.hasNominalVolume())
1392      composeQuantity(t, "ProdCharacteristic", "nominalVolume", element.getNominalVolume(), -1);
1393    if (element.hasExternalDiameter())
1394      composeQuantity(t, "ProdCharacteristic", "externalDiameter", element.getExternalDiameter(), -1);
1395    if (element.hasShapeElement())
1396      composeString(t, "ProdCharacteristic", "shape", element.getShapeElement(), -1);
1397    for (int i = 0; i < element.getColor().size(); i++)
1398      composeString(t, "ProdCharacteristic", "color", element.getColor().get(i), i);
1399    for (int i = 0; i < element.getImprint().size(); i++)
1400      composeString(t, "ProdCharacteristic", "imprint", element.getImprint().get(i), i);
1401    for (int i = 0; i < element.getImage().size(); i++)
1402      composeAttachment(t, "ProdCharacteristic", "image", element.getImage().get(i), i);
1403    if (element.hasScoring())
1404      composeCodeableConcept(t, "ProdCharacteristic", "scoring", element.getScoring(), -1);
1405  }
1406
1407  protected void composeDomainResource(Complex t, String parentType, String name, DomainResource element, int index) {
1408    composeResource(t, parentType, name, element, index);
1409    if (element.hasText())
1410      composeNarrative(t, "DomainResource", "text", element.getText(), -1);
1411    for (int i = 0; i < element.getContained().size(); i++)
1412      composeResource(t, "DomainResource", "contained", element.getContained().get(i), i);
1413    for (int i = 0; i < element.getExtension().size(); i++)
1414      composeExtension(t, "DomainResource", "extension", element.getExtension().get(i), i);
1415    for (int i = 0; i < element.getModifierExtension().size(); i++)
1416      composeExtension(t, "DomainResource", "modifierExtension", element.getModifierExtension().get(i), i);
1417  }
1418
1419  protected void composeParameters(Complex parent, String parentType, String name, Parameters element, int index) {
1420    if (element == null) 
1421      return;
1422    Complex t;
1423    if (Utilities.noString(parentType))
1424      t = parent;
1425    else {
1426      t = parent.predicate("fhir:"+parentType+'.'+name);
1427    }
1428    composeResource(t, "Parameters", name, element, index);
1429    for (int i = 0; i < element.getParameter().size(); i++)
1430      composeParametersParametersParameterComponent(t, "Parameters", "parameter", element.getParameter().get(i), i);
1431  }
1432
1433  protected void composeParametersParametersParameterComponent(Complex parent, String parentType, String name, Parameters.ParametersParameterComponent element, int index) {
1434    if (element == null) 
1435      return;
1436    Complex t;
1437    if (Utilities.noString(parentType))
1438      t = parent;
1439    else {
1440      t = parent.predicate("fhir:"+parentType+'.'+name);
1441    }
1442    composeBackboneElement(t, "parameter", name, element, index);
1443    if (element.hasNameElement())
1444      composeString(t, "Parameters", "name", element.getNameElement(), -1);
1445    if (element.hasValue())
1446      composeType(t, "Parameters", "value", element.getValue(), -1);
1447    if (element.hasResource())
1448      composeResource(t, "Parameters", "resource", element.getResource(), -1);
1449    for (int i = 0; i < element.getPart().size(); i++)
1450      composeParametersParametersParameterComponent(t, "Parameters", "part", element.getPart().get(i), i);
1451  }
1452
1453  protected void composeResource(Complex t, String parentType, String name, Resource element, int index) {
1454    if (element.hasIdElement())
1455      composeId(t, "Resource", "id", element.getIdElement(), -1);
1456    if (element.hasMeta())
1457      composeMeta(t, "Resource", "meta", element.getMeta(), -1);
1458    if (element.hasImplicitRulesElement())
1459      composeUri(t, "Resource", "implicitRules", element.getImplicitRulesElement(), -1);
1460    if (element.hasLanguageElement())
1461      composeCode(t, "Resource", "language", element.getLanguageElement(), -1);
1462  }
1463
1464  protected void composeAccount(Complex parent, String parentType, String name, Account element, int index) {
1465    if (element == null) 
1466      return;
1467    Complex t;
1468    if (Utilities.noString(parentType))
1469      t = parent;
1470    else {
1471      t = parent.predicate("fhir:"+parentType+'.'+name);
1472    }
1473    composeDomainResource(t, "Account", name, element, index);
1474    for (int i = 0; i < element.getIdentifier().size(); i++)
1475      composeIdentifier(t, "Account", "identifier", element.getIdentifier().get(i), i);
1476    if (element.hasStatusElement())
1477      composeEnum(t, "Account", "status", element.getStatusElement(), -1);
1478    if (element.hasType())
1479      composeCodeableConcept(t, "Account", "type", element.getType(), -1);
1480    if (element.hasNameElement())
1481      composeString(t, "Account", "name", element.getNameElement(), -1);
1482    if (element.hasSubject())
1483      composeReference(t, "Account", "subject", element.getSubject(), -1);
1484    if (element.hasServicePeriod())
1485      composePeriod(t, "Account", "servicePeriod", element.getServicePeriod(), -1);
1486    for (int i = 0; i < element.getCoverage().size(); i++)
1487      composeAccountCoverageComponent(t, "Account", "coverage", element.getCoverage().get(i), i);
1488    if (element.hasOwner())
1489      composeReference(t, "Account", "owner", element.getOwner(), -1);
1490    if (element.hasDescriptionElement())
1491      composeString(t, "Account", "description", element.getDescriptionElement(), -1);
1492    for (int i = 0; i < element.getGuarantor().size(); i++)
1493      composeAccountGuarantorComponent(t, "Account", "guarantor", element.getGuarantor().get(i), i);
1494    if (element.hasPartOf())
1495      composeReference(t, "Account", "partOf", element.getPartOf(), -1);
1496  }
1497
1498  protected void composeAccountCoverageComponent(Complex parent, String parentType, String name, Account.CoverageComponent element, int index) {
1499    if (element == null) 
1500      return;
1501    Complex t;
1502    if (Utilities.noString(parentType))
1503      t = parent;
1504    else {
1505      t = parent.predicate("fhir:"+parentType+'.'+name);
1506    }
1507    composeBackboneElement(t, "coverage", name, element, index);
1508    if (element.hasCoverage())
1509      composeReference(t, "Account", "coverage", element.getCoverage(), -1);
1510    if (element.hasPriorityElement())
1511      composePositiveInt(t, "Account", "priority", element.getPriorityElement(), -1);
1512  }
1513
1514  protected void composeAccountGuarantorComponent(Complex parent, String parentType, String name, Account.GuarantorComponent element, int index) {
1515    if (element == null) 
1516      return;
1517    Complex t;
1518    if (Utilities.noString(parentType))
1519      t = parent;
1520    else {
1521      t = parent.predicate("fhir:"+parentType+'.'+name);
1522    }
1523    composeBackboneElement(t, "guarantor", name, element, index);
1524    if (element.hasParty())
1525      composeReference(t, "Account", "party", element.getParty(), -1);
1526    if (element.hasOnHoldElement())
1527      composeBoolean(t, "Account", "onHold", element.getOnHoldElement(), -1);
1528    if (element.hasPeriod())
1529      composePeriod(t, "Account", "period", element.getPeriod(), -1);
1530  }
1531
1532  protected void composeActivityDefinition(Complex parent, String parentType, String name, ActivityDefinition element, int index) {
1533    if (element == null) 
1534      return;
1535    Complex t;
1536    if (Utilities.noString(parentType))
1537      t = parent;
1538    else {
1539      t = parent.predicate("fhir:"+parentType+'.'+name);
1540    }
1541    composeDomainResource(t, "ActivityDefinition", name, element, index);
1542    if (element.hasUrlElement())
1543      composeUri(t, "ActivityDefinition", "url", element.getUrlElement(), -1);
1544    for (int i = 0; i < element.getIdentifier().size(); i++)
1545      composeIdentifier(t, "ActivityDefinition", "identifier", element.getIdentifier().get(i), i);
1546    if (element.hasVersionElement())
1547      composeString(t, "ActivityDefinition", "version", element.getVersionElement(), -1);
1548    if (element.hasNameElement())
1549      composeString(t, "ActivityDefinition", "name", element.getNameElement(), -1);
1550    if (element.hasTitleElement())
1551      composeString(t, "ActivityDefinition", "title", element.getTitleElement(), -1);
1552    if (element.hasSubtitleElement())
1553      composeString(t, "ActivityDefinition", "subtitle", element.getSubtitleElement(), -1);
1554    if (element.hasStatusElement())
1555      composeEnum(t, "ActivityDefinition", "status", element.getStatusElement(), -1);
1556    if (element.hasExperimentalElement())
1557      composeBoolean(t, "ActivityDefinition", "experimental", element.getExperimentalElement(), -1);
1558    if (element.hasSubject())
1559      composeType(t, "ActivityDefinition", "subject", element.getSubject(), -1);
1560    if (element.hasDateElement())
1561      composeDateTime(t, "ActivityDefinition", "date", element.getDateElement(), -1);
1562    if (element.hasPublisherElement())
1563      composeString(t, "ActivityDefinition", "publisher", element.getPublisherElement(), -1);
1564    for (int i = 0; i < element.getContact().size(); i++)
1565      composeContactDetail(t, "ActivityDefinition", "contact", element.getContact().get(i), i);
1566    if (element.hasDescriptionElement())
1567      composeMarkdown(t, "ActivityDefinition", "description", element.getDescriptionElement(), -1);
1568    for (int i = 0; i < element.getUseContext().size(); i++)
1569      composeUsageContext(t, "ActivityDefinition", "useContext", element.getUseContext().get(i), i);
1570    for (int i = 0; i < element.getJurisdiction().size(); i++)
1571      composeCodeableConcept(t, "ActivityDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
1572    if (element.hasPurposeElement())
1573      composeMarkdown(t, "ActivityDefinition", "purpose", element.getPurposeElement(), -1);
1574    if (element.hasUsageElement())
1575      composeString(t, "ActivityDefinition", "usage", element.getUsageElement(), -1);
1576    if (element.hasCopyrightElement())
1577      composeMarkdown(t, "ActivityDefinition", "copyright", element.getCopyrightElement(), -1);
1578    if (element.hasApprovalDateElement())
1579      composeDate(t, "ActivityDefinition", "approvalDate", element.getApprovalDateElement(), -1);
1580    if (element.hasLastReviewDateElement())
1581      composeDate(t, "ActivityDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
1582    if (element.hasEffectivePeriod())
1583      composePeriod(t, "ActivityDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
1584    for (int i = 0; i < element.getTopic().size(); i++)
1585      composeCodeableConcept(t, "ActivityDefinition", "topic", element.getTopic().get(i), i);
1586    for (int i = 0; i < element.getContributor().size(); i++)
1587      composeContributor(t, "ActivityDefinition", "contributor", element.getContributor().get(i), i);
1588    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
1589      composeRelatedArtifact(t, "ActivityDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
1590    for (int i = 0; i < element.getLibrary().size(); i++)
1591      composeCanonical(t, "ActivityDefinition", "library", element.getLibrary().get(i), i);
1592    if (element.hasKindElement())
1593      composeEnum(t, "ActivityDefinition", "kind", element.getKindElement(), -1);
1594    if (element.hasCode())
1595      composeCodeableConcept(t, "ActivityDefinition", "code", element.getCode(), -1);
1596    if (element.hasDoNotPerformElement())
1597      composeBoolean(t, "ActivityDefinition", "doNotPerform", element.getDoNotPerformElement(), -1);
1598    if (element.hasTiming())
1599      composeType(t, "ActivityDefinition", "timing", element.getTiming(), -1);
1600    if (element.hasLocation())
1601      composeReference(t, "ActivityDefinition", "location", element.getLocation(), -1);
1602    for (int i = 0; i < element.getParticipant().size(); i++)
1603      composeActivityDefinitionActivityDefinitionParticipantComponent(t, "ActivityDefinition", "participant", element.getParticipant().get(i), i);
1604    if (element.hasProduct())
1605      composeType(t, "ActivityDefinition", "product", element.getProduct(), -1);
1606    if (element.hasQuantity())
1607      composeQuantity(t, "ActivityDefinition", "quantity", element.getQuantity(), -1);
1608    for (int i = 0; i < element.getDosage().size(); i++)
1609      composeDosage(t, "ActivityDefinition", "dosage", element.getDosage().get(i), i);
1610    for (int i = 0; i < element.getBodySite().size(); i++)
1611      composeCodeableConcept(t, "ActivityDefinition", "bodySite", element.getBodySite().get(i), i);
1612    for (int i = 0; i < element.getSpecimenRequirement().size(); i++)
1613      composeReference(t, "ActivityDefinition", "specimenRequirement", element.getSpecimenRequirement().get(i), i);
1614    if (element.hasTransformElement())
1615      composeCanonical(t, "ActivityDefinition", "transform", element.getTransformElement(), -1);
1616    for (int i = 0; i < element.getDynamicValue().size(); i++)
1617      composeActivityDefinitionActivityDefinitionDynamicValueComponent(t, "ActivityDefinition", "dynamicValue", element.getDynamicValue().get(i), i);
1618  }
1619
1620  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(Complex parent, String parentType, String name, ActivityDefinition.ActivityDefinitionParticipantComponent element, int index) {
1621    if (element == null) 
1622      return;
1623    Complex t;
1624    if (Utilities.noString(parentType))
1625      t = parent;
1626    else {
1627      t = parent.predicate("fhir:"+parentType+'.'+name);
1628    }
1629    composeBackboneElement(t, "participant", name, element, index);
1630    if (element.hasTypeElement())
1631      composeEnum(t, "ActivityDefinition", "type", element.getTypeElement(), -1);
1632    if (element.hasRole())
1633      composeCodeableConcept(t, "ActivityDefinition", "role", element.getRole(), -1);
1634  }
1635
1636  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(Complex parent, String parentType, String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element, int index) {
1637    if (element == null) 
1638      return;
1639    Complex t;
1640    if (Utilities.noString(parentType))
1641      t = parent;
1642    else {
1643      t = parent.predicate("fhir:"+parentType+'.'+name);
1644    }
1645    composeBackboneElement(t, "dynamicValue", name, element, index);
1646    if (element.hasDescriptionElement())
1647      composeString(t, "ActivityDefinition", "description", element.getDescriptionElement(), -1);
1648    if (element.hasPathElement())
1649      composeString(t, "ActivityDefinition", "path", element.getPathElement(), -1);
1650    if (element.hasLanguageElement())
1651      composeString(t, "ActivityDefinition", "language", element.getLanguageElement(), -1);
1652    if (element.hasExpressionElement())
1653      composeString(t, "ActivityDefinition", "expression", element.getExpressionElement(), -1);
1654  }
1655
1656  protected void composeAdverseEvent(Complex parent, String parentType, String name, AdverseEvent element, int index) {
1657    if (element == null) 
1658      return;
1659    Complex t;
1660    if (Utilities.noString(parentType))
1661      t = parent;
1662    else {
1663      t = parent.predicate("fhir:"+parentType+'.'+name);
1664    }
1665    composeDomainResource(t, "AdverseEvent", name, element, index);
1666    if (element.hasIdentifier())
1667      composeIdentifier(t, "AdverseEvent", "identifier", element.getIdentifier(), -1);
1668    if (element.hasActualityElement())
1669      composeEnum(t, "AdverseEvent", "actuality", element.getActualityElement(), -1);
1670    for (int i = 0; i < element.getCategory().size(); i++)
1671      composeCodeableConcept(t, "AdverseEvent", "category", element.getCategory().get(i), i);
1672    if (element.hasEvent())
1673      composeCodeableConcept(t, "AdverseEvent", "event", element.getEvent(), -1);
1674    if (element.hasSubject())
1675      composeReference(t, "AdverseEvent", "subject", element.getSubject(), -1);
1676    if (element.hasContext())
1677      composeReference(t, "AdverseEvent", "context", element.getContext(), -1);
1678    if (element.hasDateElement())
1679      composeDateTime(t, "AdverseEvent", "date", element.getDateElement(), -1);
1680    for (int i = 0; i < element.getResultingCondition().size(); i++)
1681      composeReference(t, "AdverseEvent", "resultingCondition", element.getResultingCondition().get(i), i);
1682    if (element.hasLocation())
1683      composeReference(t, "AdverseEvent", "location", element.getLocation(), -1);
1684    if (element.hasSeriousness())
1685      composeCodeableConcept(t, "AdverseEvent", "seriousness", element.getSeriousness(), -1);
1686    if (element.hasSeverity())
1687      composeCodeableConcept(t, "AdverseEvent", "severity", element.getSeverity(), -1);
1688    if (element.hasOutcome())
1689      composeCodeableConcept(t, "AdverseEvent", "outcome", element.getOutcome(), -1);
1690    if (element.hasRecorder())
1691      composeReference(t, "AdverseEvent", "recorder", element.getRecorder(), -1);
1692    for (int i = 0; i < element.getContributor().size(); i++)
1693      composeReference(t, "AdverseEvent", "contributor", element.getContributor().get(i), i);
1694    for (int i = 0; i < element.getSuspectEntity().size(); i++)
1695      composeAdverseEventAdverseEventSuspectEntityComponent(t, "AdverseEvent", "suspectEntity", element.getSuspectEntity().get(i), i);
1696    for (int i = 0; i < element.getSubjectMedicalHistory().size(); i++)
1697      composeReference(t, "AdverseEvent", "subjectMedicalHistory", element.getSubjectMedicalHistory().get(i), i);
1698    for (int i = 0; i < element.getReferenceDocument().size(); i++)
1699      composeReference(t, "AdverseEvent", "referenceDocument", element.getReferenceDocument().get(i), i);
1700    for (int i = 0; i < element.getStudy().size(); i++)
1701      composeReference(t, "AdverseEvent", "study", element.getStudy().get(i), i);
1702  }
1703
1704  protected void composeAdverseEventAdverseEventSuspectEntityComponent(Complex parent, String parentType, String name, AdverseEvent.AdverseEventSuspectEntityComponent element, int index) {
1705    if (element == null) 
1706      return;
1707    Complex t;
1708    if (Utilities.noString(parentType))
1709      t = parent;
1710    else {
1711      t = parent.predicate("fhir:"+parentType+'.'+name);
1712    }
1713    composeBackboneElement(t, "suspectEntity", name, element, index);
1714    if (element.hasInstance())
1715      composeReference(t, "AdverseEvent", "instance", element.getInstance(), -1);
1716    for (int i = 0; i < element.getCausality().size(); i++)
1717      composeAdverseEventAdverseEventSuspectEntityCausalityComponent(t, "AdverseEvent", "causality", element.getCausality().get(i), i);
1718  }
1719
1720  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponent(Complex parent, String parentType, String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element, int index) {
1721    if (element == null) 
1722      return;
1723    Complex t;
1724    if (Utilities.noString(parentType))
1725      t = parent;
1726    else {
1727      t = parent.predicate("fhir:"+parentType+'.'+name);
1728    }
1729    composeBackboneElement(t, "causality", name, element, index);
1730    if (element.hasAssessment())
1731      composeCodeableConcept(t, "AdverseEvent", "assessment", element.getAssessment(), -1);
1732    if (element.hasProductRelatednessElement())
1733      composeString(t, "AdverseEvent", "productRelatedness", element.getProductRelatednessElement(), -1);
1734    if (element.hasAuthor())
1735      composeReference(t, "AdverseEvent", "author", element.getAuthor(), -1);
1736    if (element.hasMethod())
1737      composeCodeableConcept(t, "AdverseEvent", "method", element.getMethod(), -1);
1738  }
1739
1740  protected void composeAllergyIntolerance(Complex parent, String parentType, String name, AllergyIntolerance element, int index) {
1741    if (element == null) 
1742      return;
1743    Complex t;
1744    if (Utilities.noString(parentType))
1745      t = parent;
1746    else {
1747      t = parent.predicate("fhir:"+parentType+'.'+name);
1748    }
1749    composeDomainResource(t, "AllergyIntolerance", name, element, index);
1750    for (int i = 0; i < element.getIdentifier().size(); i++)
1751      composeIdentifier(t, "AllergyIntolerance", "identifier", element.getIdentifier().get(i), i);
1752    if (element.hasClinicalStatusElement())
1753      composeEnum(t, "AllergyIntolerance", "clinicalStatus", element.getClinicalStatusElement(), -1);
1754    if (element.hasVerificationStatusElement())
1755      composeEnum(t, "AllergyIntolerance", "verificationStatus", element.getVerificationStatusElement(), -1);
1756    if (element.hasTypeElement())
1757      composeEnum(t, "AllergyIntolerance", "type", element.getTypeElement(), -1);
1758    for (int i = 0; i < element.getCategory().size(); i++)
1759      composeEnum(t, "AllergyIntolerance", "category", element.getCategory().get(i), i);
1760    if (element.hasCriticalityElement())
1761      composeEnum(t, "AllergyIntolerance", "criticality", element.getCriticalityElement(), -1);
1762    if (element.hasCode())
1763      composeCodeableConcept(t, "AllergyIntolerance", "code", element.getCode(), -1);
1764    if (element.hasPatient())
1765      composeReference(t, "AllergyIntolerance", "patient", element.getPatient(), -1);
1766    if (element.hasEncounter())
1767      composeReference(t, "AllergyIntolerance", "encounter", element.getEncounter(), -1);
1768    if (element.hasOnset())
1769      composeType(t, "AllergyIntolerance", "onset", element.getOnset(), -1);
1770    if (element.hasAssertedDateElement())
1771      composeDateTime(t, "AllergyIntolerance", "assertedDate", element.getAssertedDateElement(), -1);
1772    if (element.hasRecorder())
1773      composeReference(t, "AllergyIntolerance", "recorder", element.getRecorder(), -1);
1774    if (element.hasAsserter())
1775      composeReference(t, "AllergyIntolerance", "asserter", element.getAsserter(), -1);
1776    if (element.hasLastOccurrenceElement())
1777      composeDateTime(t, "AllergyIntolerance", "lastOccurrence", element.getLastOccurrenceElement(), -1);
1778    for (int i = 0; i < element.getNote().size(); i++)
1779      composeAnnotation(t, "AllergyIntolerance", "note", element.getNote().get(i), i);
1780    for (int i = 0; i < element.getReaction().size(); i++)
1781      composeAllergyIntoleranceAllergyIntoleranceReactionComponent(t, "AllergyIntolerance", "reaction", element.getReaction().get(i), i);
1782  }
1783
1784  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(Complex parent, String parentType, String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element, int index) {
1785    if (element == null) 
1786      return;
1787    Complex t;
1788    if (Utilities.noString(parentType))
1789      t = parent;
1790    else {
1791      t = parent.predicate("fhir:"+parentType+'.'+name);
1792    }
1793    composeBackboneElement(t, "reaction", name, element, index);
1794    if (element.hasSubstance())
1795      composeCodeableConcept(t, "AllergyIntolerance", "substance", element.getSubstance(), -1);
1796    for (int i = 0; i < element.getManifestation().size(); i++)
1797      composeCodeableConcept(t, "AllergyIntolerance", "manifestation", element.getManifestation().get(i), i);
1798    if (element.hasDescriptionElement())
1799      composeString(t, "AllergyIntolerance", "description", element.getDescriptionElement(), -1);
1800    if (element.hasOnsetElement())
1801      composeDateTime(t, "AllergyIntolerance", "onset", element.getOnsetElement(), -1);
1802    if (element.hasSeverityElement())
1803      composeEnum(t, "AllergyIntolerance", "severity", element.getSeverityElement(), -1);
1804    if (element.hasExposureRoute())
1805      composeCodeableConcept(t, "AllergyIntolerance", "exposureRoute", element.getExposureRoute(), -1);
1806    for (int i = 0; i < element.getNote().size(); i++)
1807      composeAnnotation(t, "AllergyIntolerance", "note", element.getNote().get(i), i);
1808  }
1809
1810  protected void composeAppointment(Complex parent, String parentType, String name, Appointment element, int index) {
1811    if (element == null) 
1812      return;
1813    Complex t;
1814    if (Utilities.noString(parentType))
1815      t = parent;
1816    else {
1817      t = parent.predicate("fhir:"+parentType+'.'+name);
1818    }
1819    composeDomainResource(t, "Appointment", name, element, index);
1820    for (int i = 0; i < element.getIdentifier().size(); i++)
1821      composeIdentifier(t, "Appointment", "identifier", element.getIdentifier().get(i), i);
1822    if (element.hasStatusElement())
1823      composeEnum(t, "Appointment", "status", element.getStatusElement(), -1);
1824    for (int i = 0; i < element.getServiceCategory().size(); i++)
1825      composeCodeableConcept(t, "Appointment", "serviceCategory", element.getServiceCategory().get(i), i);
1826    for (int i = 0; i < element.getServiceType().size(); i++)
1827      composeCodeableConcept(t, "Appointment", "serviceType", element.getServiceType().get(i), i);
1828    for (int i = 0; i < element.getSpecialty().size(); i++)
1829      composeCodeableConcept(t, "Appointment", "specialty", element.getSpecialty().get(i), i);
1830    if (element.hasAppointmentType())
1831      composeCodeableConcept(t, "Appointment", "appointmentType", element.getAppointmentType(), -1);
1832    for (int i = 0; i < element.getReason().size(); i++)
1833      composeCodeableConcept(t, "Appointment", "reason", element.getReason().get(i), i);
1834    for (int i = 0; i < element.getIndication().size(); i++)
1835      composeReference(t, "Appointment", "indication", element.getIndication().get(i), i);
1836    if (element.hasPriorityElement())
1837      composeUnsignedInt(t, "Appointment", "priority", element.getPriorityElement(), -1);
1838    if (element.hasDescriptionElement())
1839      composeString(t, "Appointment", "description", element.getDescriptionElement(), -1);
1840    for (int i = 0; i < element.getSupportingInformation().size(); i++)
1841      composeReference(t, "Appointment", "supportingInformation", element.getSupportingInformation().get(i), i);
1842    if (element.hasStartElement())
1843      composeInstant(t, "Appointment", "start", element.getStartElement(), -1);
1844    if (element.hasEndElement())
1845      composeInstant(t, "Appointment", "end", element.getEndElement(), -1);
1846    if (element.hasMinutesDurationElement())
1847      composePositiveInt(t, "Appointment", "minutesDuration", element.getMinutesDurationElement(), -1);
1848    for (int i = 0; i < element.getSlot().size(); i++)
1849      composeReference(t, "Appointment", "slot", element.getSlot().get(i), i);
1850    if (element.hasCreatedElement())
1851      composeDateTime(t, "Appointment", "created", element.getCreatedElement(), -1);
1852    if (element.hasCommentElement())
1853      composeString(t, "Appointment", "comment", element.getCommentElement(), -1);
1854    if (element.hasPatientInstructionElement())
1855      composeString(t, "Appointment", "patientInstruction", element.getPatientInstructionElement(), -1);
1856    for (int i = 0; i < element.getBasedOn().size(); i++)
1857      composeReference(t, "Appointment", "basedOn", element.getBasedOn().get(i), i);
1858    for (int i = 0; i < element.getParticipant().size(); i++)
1859      composeAppointmentAppointmentParticipantComponent(t, "Appointment", "participant", element.getParticipant().get(i), i);
1860    for (int i = 0; i < element.getRequestedPeriod().size(); i++)
1861      composePeriod(t, "Appointment", "requestedPeriod", element.getRequestedPeriod().get(i), i);
1862  }
1863
1864  protected void composeAppointmentAppointmentParticipantComponent(Complex parent, String parentType, String name, Appointment.AppointmentParticipantComponent element, int index) {
1865    if (element == null) 
1866      return;
1867    Complex t;
1868    if (Utilities.noString(parentType))
1869      t = parent;
1870    else {
1871      t = parent.predicate("fhir:"+parentType+'.'+name);
1872    }
1873    composeBackboneElement(t, "participant", name, element, index);
1874    for (int i = 0; i < element.getType().size(); i++)
1875      composeCodeableConcept(t, "Appointment", "type", element.getType().get(i), i);
1876    if (element.hasActor())
1877      composeReference(t, "Appointment", "actor", element.getActor(), -1);
1878    if (element.hasRequiredElement())
1879      composeEnum(t, "Appointment", "required", element.getRequiredElement(), -1);
1880    if (element.hasStatusElement())
1881      composeEnum(t, "Appointment", "status", element.getStatusElement(), -1);
1882    if (element.hasPeriod())
1883      composePeriod(t, "Appointment", "period", element.getPeriod(), -1);
1884  }
1885
1886  protected void composeAppointmentResponse(Complex parent, String parentType, String name, AppointmentResponse element, int index) {
1887    if (element == null) 
1888      return;
1889    Complex t;
1890    if (Utilities.noString(parentType))
1891      t = parent;
1892    else {
1893      t = parent.predicate("fhir:"+parentType+'.'+name);
1894    }
1895    composeDomainResource(t, "AppointmentResponse", name, element, index);
1896    for (int i = 0; i < element.getIdentifier().size(); i++)
1897      composeIdentifier(t, "AppointmentResponse", "identifier", element.getIdentifier().get(i), i);
1898    if (element.hasAppointment())
1899      composeReference(t, "AppointmentResponse", "appointment", element.getAppointment(), -1);
1900    if (element.hasStartElement())
1901      composeInstant(t, "AppointmentResponse", "start", element.getStartElement(), -1);
1902    if (element.hasEndElement())
1903      composeInstant(t, "AppointmentResponse", "end", element.getEndElement(), -1);
1904    for (int i = 0; i < element.getParticipantType().size(); i++)
1905      composeCodeableConcept(t, "AppointmentResponse", "participantType", element.getParticipantType().get(i), i);
1906    if (element.hasActor())
1907      composeReference(t, "AppointmentResponse", "actor", element.getActor(), -1);
1908    if (element.hasParticipantStatusElement())
1909      composeEnum(t, "AppointmentResponse", "participantStatus", element.getParticipantStatusElement(), -1);
1910    if (element.hasCommentElement())
1911      composeString(t, "AppointmentResponse", "comment", element.getCommentElement(), -1);
1912  }
1913
1914  protected void composeAuditEvent(Complex parent, String parentType, String name, AuditEvent element, int index) {
1915    if (element == null) 
1916      return;
1917    Complex t;
1918    if (Utilities.noString(parentType))
1919      t = parent;
1920    else {
1921      t = parent.predicate("fhir:"+parentType+'.'+name);
1922    }
1923    composeDomainResource(t, "AuditEvent", name, element, index);
1924    if (element.hasType())
1925      composeCoding(t, "AuditEvent", "type", element.getType(), -1);
1926    for (int i = 0; i < element.getSubtype().size(); i++)
1927      composeCoding(t, "AuditEvent", "subtype", element.getSubtype().get(i), i);
1928    if (element.hasActionElement())
1929      composeEnum(t, "AuditEvent", "action", element.getActionElement(), -1);
1930    if (element.hasPeriod())
1931      composePeriod(t, "AuditEvent", "period", element.getPeriod(), -1);
1932    if (element.hasRecordedElement())
1933      composeInstant(t, "AuditEvent", "recorded", element.getRecordedElement(), -1);
1934    if (element.hasOutcomeElement())
1935      composeEnum(t, "AuditEvent", "outcome", element.getOutcomeElement(), -1);
1936    if (element.hasOutcomeDescElement())
1937      composeString(t, "AuditEvent", "outcomeDesc", element.getOutcomeDescElement(), -1);
1938    for (int i = 0; i < element.getPurposeOfEvent().size(); i++)
1939      composeCodeableConcept(t, "AuditEvent", "purposeOfEvent", element.getPurposeOfEvent().get(i), i);
1940    for (int i = 0; i < element.getAgent().size(); i++)
1941      composeAuditEventAuditEventAgentComponent(t, "AuditEvent", "agent", element.getAgent().get(i), i);
1942    if (element.hasSource())
1943      composeAuditEventAuditEventSourceComponent(t, "AuditEvent", "source", element.getSource(), -1);
1944    for (int i = 0; i < element.getEntity().size(); i++)
1945      composeAuditEventAuditEventEntityComponent(t, "AuditEvent", "entity", element.getEntity().get(i), i);
1946  }
1947
1948  protected void composeAuditEventAuditEventAgentComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventAgentComponent element, int index) {
1949    if (element == null) 
1950      return;
1951    Complex t;
1952    if (Utilities.noString(parentType))
1953      t = parent;
1954    else {
1955      t = parent.predicate("fhir:"+parentType+'.'+name);
1956    }
1957    composeBackboneElement(t, "agent", name, element, index);
1958    if (element.hasType())
1959      composeCodeableConcept(t, "AuditEvent", "type", element.getType(), -1);
1960    for (int i = 0; i < element.getRole().size(); i++)
1961      composeCodeableConcept(t, "AuditEvent", "role", element.getRole().get(i), i);
1962    if (element.hasReference())
1963      composeReference(t, "AuditEvent", "reference", element.getReference(), -1);
1964    if (element.hasUserId())
1965      composeIdentifier(t, "AuditEvent", "userId", element.getUserId(), -1);
1966    if (element.hasAltIdElement())
1967      composeString(t, "AuditEvent", "altId", element.getAltIdElement(), -1);
1968    if (element.hasNameElement())
1969      composeString(t, "AuditEvent", "name", element.getNameElement(), -1);
1970    if (element.hasRequestorElement())
1971      composeBoolean(t, "AuditEvent", "requestor", element.getRequestorElement(), -1);
1972    if (element.hasLocation())
1973      composeReference(t, "AuditEvent", "location", element.getLocation(), -1);
1974    for (int i = 0; i < element.getPolicy().size(); i++)
1975      composeUri(t, "AuditEvent", "policy", element.getPolicy().get(i), i);
1976    if (element.hasMedia())
1977      composeCoding(t, "AuditEvent", "media", element.getMedia(), -1);
1978    if (element.hasNetwork())
1979      composeAuditEventAuditEventAgentNetworkComponent(t, "AuditEvent", "network", element.getNetwork(), -1);
1980    for (int i = 0; i < element.getPurposeOfUse().size(); i++)
1981      composeCodeableConcept(t, "AuditEvent", "purposeOfUse", element.getPurposeOfUse().get(i), i);
1982  }
1983
1984  protected void composeAuditEventAuditEventAgentNetworkComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventAgentNetworkComponent element, int index) {
1985    if (element == null) 
1986      return;
1987    Complex t;
1988    if (Utilities.noString(parentType))
1989      t = parent;
1990    else {
1991      t = parent.predicate("fhir:"+parentType+'.'+name);
1992    }
1993    composeBackboneElement(t, "network", name, element, index);
1994    if (element.hasAddressElement())
1995      composeString(t, "AuditEvent", "address", element.getAddressElement(), -1);
1996    if (element.hasTypeElement())
1997      composeEnum(t, "AuditEvent", "type", element.getTypeElement(), -1);
1998  }
1999
2000  protected void composeAuditEventAuditEventSourceComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventSourceComponent element, int index) {
2001    if (element == null) 
2002      return;
2003    Complex t;
2004    if (Utilities.noString(parentType))
2005      t = parent;
2006    else {
2007      t = parent.predicate("fhir:"+parentType+'.'+name);
2008    }
2009    composeBackboneElement(t, "source", name, element, index);
2010    if (element.hasSiteElement())
2011      composeString(t, "AuditEvent", "site", element.getSiteElement(), -1);
2012    if (element.hasIdentifier())
2013      composeIdentifier(t, "AuditEvent", "identifier", element.getIdentifier(), -1);
2014    for (int i = 0; i < element.getType().size(); i++)
2015      composeCoding(t, "AuditEvent", "type", element.getType().get(i), i);
2016  }
2017
2018  protected void composeAuditEventAuditEventEntityComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventEntityComponent element, int index) {
2019    if (element == null) 
2020      return;
2021    Complex t;
2022    if (Utilities.noString(parentType))
2023      t = parent;
2024    else {
2025      t = parent.predicate("fhir:"+parentType+'.'+name);
2026    }
2027    composeBackboneElement(t, "entity", name, element, index);
2028    if (element.hasIdentifier())
2029      composeIdentifier(t, "AuditEvent", "identifier", element.getIdentifier(), -1);
2030    if (element.hasReference())
2031      composeReference(t, "AuditEvent", "reference", element.getReference(), -1);
2032    if (element.hasType())
2033      composeCoding(t, "AuditEvent", "type", element.getType(), -1);
2034    if (element.hasRole())
2035      composeCoding(t, "AuditEvent", "role", element.getRole(), -1);
2036    if (element.hasLifecycle())
2037      composeCoding(t, "AuditEvent", "lifecycle", element.getLifecycle(), -1);
2038    for (int i = 0; i < element.getSecurityLabel().size(); i++)
2039      composeCoding(t, "AuditEvent", "securityLabel", element.getSecurityLabel().get(i), i);
2040    if (element.hasNameElement())
2041      composeString(t, "AuditEvent", "name", element.getNameElement(), -1);
2042    if (element.hasDescriptionElement())
2043      composeString(t, "AuditEvent", "description", element.getDescriptionElement(), -1);
2044    if (element.hasQueryElement())
2045      composeBase64Binary(t, "AuditEvent", "query", element.getQueryElement(), -1);
2046    for (int i = 0; i < element.getDetail().size(); i++)
2047      composeAuditEventAuditEventEntityDetailComponent(t, "AuditEvent", "detail", element.getDetail().get(i), i);
2048  }
2049
2050  protected void composeAuditEventAuditEventEntityDetailComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventEntityDetailComponent element, int index) {
2051    if (element == null) 
2052      return;
2053    Complex t;
2054    if (Utilities.noString(parentType))
2055      t = parent;
2056    else {
2057      t = parent.predicate("fhir:"+parentType+'.'+name);
2058    }
2059    composeBackboneElement(t, "detail", name, element, index);
2060    if (element.hasTypeElement())
2061      composeString(t, "AuditEvent", "type", element.getTypeElement(), -1);
2062    if (element.hasValue())
2063      composeType(t, "AuditEvent", "value", element.getValue(), -1);
2064  }
2065
2066  protected void composeBasic(Complex parent, String parentType, String name, Basic element, int index) {
2067    if (element == null) 
2068      return;
2069    Complex t;
2070    if (Utilities.noString(parentType))
2071      t = parent;
2072    else {
2073      t = parent.predicate("fhir:"+parentType+'.'+name);
2074    }
2075    composeDomainResource(t, "Basic", name, element, index);
2076    for (int i = 0; i < element.getIdentifier().size(); i++)
2077      composeIdentifier(t, "Basic", "identifier", element.getIdentifier().get(i), i);
2078    if (element.hasCode())
2079      composeCodeableConcept(t, "Basic", "code", element.getCode(), -1);
2080    if (element.hasSubject())
2081      composeReference(t, "Basic", "subject", element.getSubject(), -1);
2082    if (element.hasCreatedElement())
2083      composeDate(t, "Basic", "created", element.getCreatedElement(), -1);
2084    if (element.hasAuthor())
2085      composeReference(t, "Basic", "author", element.getAuthor(), -1);
2086  }
2087
2088  protected void composeBinary(Complex parent, String parentType, String name, Binary element, int index) {
2089    if (element == null) 
2090      return;
2091    Complex t;
2092    if (Utilities.noString(parentType))
2093      t = parent;
2094    else {
2095      t = parent.predicate("fhir:"+parentType+'.'+name);
2096    }
2097    composeResource(t, "Binary", name, element, index);
2098    if (element.hasContentTypeElement())
2099      composeCode(t, "Binary", "contentType", element.getContentTypeElement(), -1);
2100    if (element.hasSecurityContext())
2101      composeReference(t, "Binary", "securityContext", element.getSecurityContext(), -1);
2102    if (element.hasContentElement())
2103      composeBase64Binary(t, "Binary", "content", element.getContentElement(), -1);
2104  }
2105
2106  protected void composeBiologicallyDerivedProduct(Complex parent, String parentType, String name, BiologicallyDerivedProduct element, int index) {
2107    if (element == null) 
2108      return;
2109    Complex t;
2110    if (Utilities.noString(parentType))
2111      t = parent;
2112    else {
2113      t = parent.predicate("fhir:"+parentType+'.'+name);
2114    }
2115    composeDomainResource(t, "BiologicallyDerivedProduct", name, element, index);
2116    for (int i = 0; i < element.getIdentifier().size(); i++)
2117      composeIdentifier(t, "BiologicallyDerivedProduct", "identifier", element.getIdentifier().get(i), i);
2118    if (element.hasProductCategoryElement())
2119      composeEnum(t, "BiologicallyDerivedProduct", "productCategory", element.getProductCategoryElement(), -1);
2120    if (element.hasProductCode())
2121      composeCodeableConcept(t, "BiologicallyDerivedProduct", "productCode", element.getProductCode(), -1);
2122    if (element.hasStatusElement())
2123      composeEnum(t, "BiologicallyDerivedProduct", "status", element.getStatusElement(), -1);
2124    for (int i = 0; i < element.getRequest().size(); i++)
2125      composeReference(t, "BiologicallyDerivedProduct", "request", element.getRequest().get(i), i);
2126    if (element.hasQuantityElement())
2127      composeInteger(t, "BiologicallyDerivedProduct", "quantity", element.getQuantityElement(), -1);
2128    if (element.hasParent())
2129      composeReference(t, "BiologicallyDerivedProduct", "parent", element.getParent(), -1);
2130    if (element.hasCollection())
2131      composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(t, "BiologicallyDerivedProduct", "collection", element.getCollection(), -1);
2132    for (int i = 0; i < element.getProcessing().size(); i++)
2133      composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(t, "BiologicallyDerivedProduct", "processing", element.getProcessing().get(i), i);
2134    if (element.hasManipulation())
2135      composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(t, "BiologicallyDerivedProduct", "manipulation", element.getManipulation(), -1);
2136    for (int i = 0; i < element.getStorage().size(); i++)
2137      composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(t, "BiologicallyDerivedProduct", "storage", element.getStorage().get(i), i);
2138  }
2139
2140  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element, int index) {
2141    if (element == null) 
2142      return;
2143    Complex t;
2144    if (Utilities.noString(parentType))
2145      t = parent;
2146    else {
2147      t = parent.predicate("fhir:"+parentType+'.'+name);
2148    }
2149    composeBackboneElement(t, "collection", name, element, index);
2150    if (element.hasCollector())
2151      composeReference(t, "BiologicallyDerivedProduct", "collector", element.getCollector(), -1);
2152    if (element.hasSource())
2153      composeReference(t, "BiologicallyDerivedProduct", "source", element.getSource(), -1);
2154    if (element.hasCollected())
2155      composeType(t, "BiologicallyDerivedProduct", "collected", element.getCollected(), -1);
2156  }
2157
2158  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element, int index) {
2159    if (element == null) 
2160      return;
2161    Complex t;
2162    if (Utilities.noString(parentType))
2163      t = parent;
2164    else {
2165      t = parent.predicate("fhir:"+parentType+'.'+name);
2166    }
2167    composeBackboneElement(t, "processing", name, element, index);
2168    if (element.hasDescriptionElement())
2169      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2170    if (element.hasProcedure())
2171      composeCodeableConcept(t, "BiologicallyDerivedProduct", "procedure", element.getProcedure(), -1);
2172    if (element.hasAdditive())
2173      composeReference(t, "BiologicallyDerivedProduct", "additive", element.getAdditive(), -1);
2174    if (element.hasTime())
2175      composeType(t, "BiologicallyDerivedProduct", "time", element.getTime(), -1);
2176  }
2177
2178  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element, int index) {
2179    if (element == null) 
2180      return;
2181    Complex t;
2182    if (Utilities.noString(parentType))
2183      t = parent;
2184    else {
2185      t = parent.predicate("fhir:"+parentType+'.'+name);
2186    }
2187    composeBackboneElement(t, "manipulation", name, element, index);
2188    if (element.hasDescriptionElement())
2189      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2190    if (element.hasTime())
2191      composeType(t, "BiologicallyDerivedProduct", "time", element.getTime(), -1);
2192  }
2193
2194  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element, int index) {
2195    if (element == null) 
2196      return;
2197    Complex t;
2198    if (Utilities.noString(parentType))
2199      t = parent;
2200    else {
2201      t = parent.predicate("fhir:"+parentType+'.'+name);
2202    }
2203    composeBackboneElement(t, "storage", name, element, index);
2204    if (element.hasDescriptionElement())
2205      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2206    if (element.hasTemperatureElement())
2207      composeDecimal(t, "BiologicallyDerivedProduct", "temperature", element.getTemperatureElement(), -1);
2208    if (element.hasScaleElement())
2209      composeEnum(t, "BiologicallyDerivedProduct", "scale", element.getScaleElement(), -1);
2210    if (element.hasDuration())
2211      composePeriod(t, "BiologicallyDerivedProduct", "duration", element.getDuration(), -1);
2212  }
2213
2214  protected void composeBodyStructure(Complex parent, String parentType, String name, BodyStructure element, int index) {
2215    if (element == null) 
2216      return;
2217    Complex t;
2218    if (Utilities.noString(parentType))
2219      t = parent;
2220    else {
2221      t = parent.predicate("fhir:"+parentType+'.'+name);
2222    }
2223    composeDomainResource(t, "BodyStructure", name, element, index);
2224    for (int i = 0; i < element.getIdentifier().size(); i++)
2225      composeIdentifier(t, "BodyStructure", "identifier", element.getIdentifier().get(i), i);
2226    if (element.hasActiveElement())
2227      composeBoolean(t, "BodyStructure", "active", element.getActiveElement(), -1);
2228    if (element.hasMorphology())
2229      composeCodeableConcept(t, "BodyStructure", "morphology", element.getMorphology(), -1);
2230    if (element.hasLocation())
2231      composeCodeableConcept(t, "BodyStructure", "location", element.getLocation(), -1);
2232    for (int i = 0; i < element.getLocationQualifier().size(); i++)
2233      composeCodeableConcept(t, "BodyStructure", "locationQualifier", element.getLocationQualifier().get(i), i);
2234    if (element.hasDescriptionElement())
2235      composeString(t, "BodyStructure", "description", element.getDescriptionElement(), -1);
2236    for (int i = 0; i < element.getImage().size(); i++)
2237      composeAttachment(t, "BodyStructure", "image", element.getImage().get(i), i);
2238    if (element.hasPatient())
2239      composeReference(t, "BodyStructure", "patient", element.getPatient(), -1);
2240  }
2241
2242  protected void composeBundle(Complex parent, String parentType, String name, Bundle element, int index) {
2243    if (element == null) 
2244      return;
2245    Complex t;
2246    if (Utilities.noString(parentType))
2247      t = parent;
2248    else {
2249      t = parent.predicate("fhir:"+parentType+'.'+name);
2250    }
2251    composeResource(t, "Bundle", name, element, index);
2252    if (element.hasIdentifier())
2253      composeIdentifier(t, "Bundle", "identifier", element.getIdentifier(), -1);
2254    if (element.hasTypeElement())
2255      composeEnum(t, "Bundle", "type", element.getTypeElement(), -1);
2256    if (element.hasTimestampElement())
2257      composeInstant(t, "Bundle", "timestamp", element.getTimestampElement(), -1);
2258    if (element.hasTotalElement())
2259      composeUnsignedInt(t, "Bundle", "total", element.getTotalElement(), -1);
2260    for (int i = 0; i < element.getLink().size(); i++)
2261      composeBundleBundleLinkComponent(t, "Bundle", "link", element.getLink().get(i), i);
2262    for (int i = 0; i < element.getEntry().size(); i++)
2263      composeBundleBundleEntryComponent(t, "Bundle", "entry", element.getEntry().get(i), i);
2264    if (element.hasSignature())
2265      composeSignature(t, "Bundle", "signature", element.getSignature(), -1);
2266  }
2267
2268  protected void composeBundleBundleLinkComponent(Complex parent, String parentType, String name, Bundle.BundleLinkComponent element, int index) {
2269    if (element == null) 
2270      return;
2271    Complex t;
2272    if (Utilities.noString(parentType))
2273      t = parent;
2274    else {
2275      t = parent.predicate("fhir:"+parentType+'.'+name);
2276    }
2277    composeBackboneElement(t, "link", name, element, index);
2278    if (element.hasRelationElement())
2279      composeString(t, "Bundle", "relation", element.getRelationElement(), -1);
2280    if (element.hasUrlElement())
2281      composeUri(t, "Bundle", "url", element.getUrlElement(), -1);
2282  }
2283
2284  protected void composeBundleBundleEntryComponent(Complex parent, String parentType, String name, Bundle.BundleEntryComponent element, int index) {
2285    if (element == null) 
2286      return;
2287    Complex t;
2288    if (Utilities.noString(parentType))
2289      t = parent;
2290    else {
2291      t = parent.predicate("fhir:"+parentType+'.'+name);
2292    }
2293    composeBackboneElement(t, "entry", name, element, index);
2294    for (int i = 0; i < element.getLink().size(); i++)
2295      composeBundleBundleLinkComponent(t, "Bundle", "link", element.getLink().get(i), i);
2296    if (element.hasFullUrlElement())
2297      composeUri(t, "Bundle", "fullUrl", element.getFullUrlElement(), -1);
2298    if (element.hasResource())
2299      composeResource(t, "Bundle", "resource", element.getResource(), -1);
2300    if (element.hasSearch())
2301      composeBundleBundleEntrySearchComponent(t, "Bundle", "search", element.getSearch(), -1);
2302    if (element.hasRequest())
2303      composeBundleBundleEntryRequestComponent(t, "Bundle", "request", element.getRequest(), -1);
2304    if (element.hasResponse())
2305      composeBundleBundleEntryResponseComponent(t, "Bundle", "response", element.getResponse(), -1);
2306  }
2307
2308  protected void composeBundleBundleEntrySearchComponent(Complex parent, String parentType, String name, Bundle.BundleEntrySearchComponent element, int index) {
2309    if (element == null) 
2310      return;
2311    Complex t;
2312    if (Utilities.noString(parentType))
2313      t = parent;
2314    else {
2315      t = parent.predicate("fhir:"+parentType+'.'+name);
2316    }
2317    composeBackboneElement(t, "search", name, element, index);
2318    if (element.hasModeElement())
2319      composeEnum(t, "Bundle", "mode", element.getModeElement(), -1);
2320    if (element.hasScoreElement())
2321      composeDecimal(t, "Bundle", "score", element.getScoreElement(), -1);
2322  }
2323
2324  protected void composeBundleBundleEntryRequestComponent(Complex parent, String parentType, String name, Bundle.BundleEntryRequestComponent element, int index) {
2325    if (element == null) 
2326      return;
2327    Complex t;
2328    if (Utilities.noString(parentType))
2329      t = parent;
2330    else {
2331      t = parent.predicate("fhir:"+parentType+'.'+name);
2332    }
2333    composeBackboneElement(t, "request", name, element, index);
2334    if (element.hasMethodElement())
2335      composeEnum(t, "Bundle", "method", element.getMethodElement(), -1);
2336    if (element.hasUrlElement())
2337      composeUri(t, "Bundle", "url", element.getUrlElement(), -1);
2338    if (element.hasIfNoneMatchElement())
2339      composeString(t, "Bundle", "ifNoneMatch", element.getIfNoneMatchElement(), -1);
2340    if (element.hasIfModifiedSinceElement())
2341      composeInstant(t, "Bundle", "ifModifiedSince", element.getIfModifiedSinceElement(), -1);
2342    if (element.hasIfMatchElement())
2343      composeString(t, "Bundle", "ifMatch", element.getIfMatchElement(), -1);
2344    if (element.hasIfNoneExistElement())
2345      composeString(t, "Bundle", "ifNoneExist", element.getIfNoneExistElement(), -1);
2346  }
2347
2348  protected void composeBundleBundleEntryResponseComponent(Complex parent, String parentType, String name, Bundle.BundleEntryResponseComponent element, int index) {
2349    if (element == null) 
2350      return;
2351    Complex t;
2352    if (Utilities.noString(parentType))
2353      t = parent;
2354    else {
2355      t = parent.predicate("fhir:"+parentType+'.'+name);
2356    }
2357    composeBackboneElement(t, "response", name, element, index);
2358    if (element.hasStatusElement())
2359      composeString(t, "Bundle", "status", element.getStatusElement(), -1);
2360    if (element.hasLocationElement())
2361      composeUri(t, "Bundle", "location", element.getLocationElement(), -1);
2362    if (element.hasEtagElement())
2363      composeString(t, "Bundle", "etag", element.getEtagElement(), -1);
2364    if (element.hasLastModifiedElement())
2365      composeInstant(t, "Bundle", "lastModified", element.getLastModifiedElement(), -1);
2366    if (element.hasOutcome())
2367      composeResource(t, "Bundle", "outcome", element.getOutcome(), -1);
2368  }
2369
2370  protected void composeCapabilityStatement(Complex parent, String parentType, String name, CapabilityStatement element, int index) {
2371    if (element == null) 
2372      return;
2373    Complex t;
2374    if (Utilities.noString(parentType))
2375      t = parent;
2376    else {
2377      t = parent.predicate("fhir:"+parentType+'.'+name);
2378    }
2379    composeDomainResource(t, "CapabilityStatement", name, element, index);
2380    if (element.hasUrlElement())
2381      composeUri(t, "CapabilityStatement", "url", element.getUrlElement(), -1);
2382    if (element.hasVersionElement())
2383      composeString(t, "CapabilityStatement", "version", element.getVersionElement(), -1);
2384    if (element.hasNameElement())
2385      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2386    if (element.hasTitleElement())
2387      composeString(t, "CapabilityStatement", "title", element.getTitleElement(), -1);
2388    if (element.hasStatusElement())
2389      composeEnum(t, "CapabilityStatement", "status", element.getStatusElement(), -1);
2390    if (element.hasExperimentalElement())
2391      composeBoolean(t, "CapabilityStatement", "experimental", element.getExperimentalElement(), -1);
2392    if (element.hasDateElement())
2393      composeDateTime(t, "CapabilityStatement", "date", element.getDateElement(), -1);
2394    if (element.hasPublisherElement())
2395      composeString(t, "CapabilityStatement", "publisher", element.getPublisherElement(), -1);
2396    for (int i = 0; i < element.getContact().size(); i++)
2397      composeContactDetail(t, "CapabilityStatement", "contact", element.getContact().get(i), i);
2398    if (element.hasDescriptionElement())
2399      composeMarkdown(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2400    for (int i = 0; i < element.getUseContext().size(); i++)
2401      composeUsageContext(t, "CapabilityStatement", "useContext", element.getUseContext().get(i), i);
2402    for (int i = 0; i < element.getJurisdiction().size(); i++)
2403      composeCodeableConcept(t, "CapabilityStatement", "jurisdiction", element.getJurisdiction().get(i), i);
2404    if (element.hasPurposeElement())
2405      composeMarkdown(t, "CapabilityStatement", "purpose", element.getPurposeElement(), -1);
2406    if (element.hasCopyrightElement())
2407      composeMarkdown(t, "CapabilityStatement", "copyright", element.getCopyrightElement(), -1);
2408    if (element.hasKindElement())
2409      composeEnum(t, "CapabilityStatement", "kind", element.getKindElement(), -1);
2410    for (int i = 0; i < element.getInstantiates().size(); i++)
2411      composeCanonical(t, "CapabilityStatement", "instantiates", element.getInstantiates().get(i), i);
2412    if (element.hasSoftware())
2413      composeCapabilityStatementCapabilityStatementSoftwareComponent(t, "CapabilityStatement", "software", element.getSoftware(), -1);
2414    if (element.hasImplementation())
2415      composeCapabilityStatementCapabilityStatementImplementationComponent(t, "CapabilityStatement", "implementation", element.getImplementation(), -1);
2416    if (element.hasFhirVersionElement())
2417      composeId(t, "CapabilityStatement", "fhirVersion", element.getFhirVersionElement(), -1);
2418    for (int i = 0; i < element.getFormat().size(); i++)
2419      composeCode(t, "CapabilityStatement", "format", element.getFormat().get(i), i);
2420    for (int i = 0; i < element.getPatchFormat().size(); i++)
2421      composeCode(t, "CapabilityStatement", "patchFormat", element.getPatchFormat().get(i), i);
2422    for (int i = 0; i < element.getImplementationGuide().size(); i++)
2423      composeCanonical(t, "CapabilityStatement", "implementationGuide", element.getImplementationGuide().get(i), i);
2424    for (int i = 0; i < element.getRest().size(); i++)
2425      composeCapabilityStatementCapabilityStatementRestComponent(t, "CapabilityStatement", "rest", element.getRest().get(i), i);
2426    for (int i = 0; i < element.getMessaging().size(); i++)
2427      composeCapabilityStatementCapabilityStatementMessagingComponent(t, "CapabilityStatement", "messaging", element.getMessaging().get(i), i);
2428    for (int i = 0; i < element.getDocument().size(); i++)
2429      composeCapabilityStatementCapabilityStatementDocumentComponent(t, "CapabilityStatement", "document", element.getDocument().get(i), i);
2430  }
2431
2432  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementSoftwareComponent element, int index) {
2433    if (element == null) 
2434      return;
2435    Complex t;
2436    if (Utilities.noString(parentType))
2437      t = parent;
2438    else {
2439      t = parent.predicate("fhir:"+parentType+'.'+name);
2440    }
2441    composeBackboneElement(t, "software", name, element, index);
2442    if (element.hasNameElement())
2443      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2444    if (element.hasVersionElement())
2445      composeString(t, "CapabilityStatement", "version", element.getVersionElement(), -1);
2446    if (element.hasReleaseDateElement())
2447      composeDateTime(t, "CapabilityStatement", "releaseDate", element.getReleaseDateElement(), -1);
2448  }
2449
2450  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementImplementationComponent element, int index) {
2451    if (element == null) 
2452      return;
2453    Complex t;
2454    if (Utilities.noString(parentType))
2455      t = parent;
2456    else {
2457      t = parent.predicate("fhir:"+parentType+'.'+name);
2458    }
2459    composeBackboneElement(t, "implementation", name, element, index);
2460    if (element.hasDescriptionElement())
2461      composeString(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2462    if (element.hasUrlElement())
2463      composeUrl(t, "CapabilityStatement", "url", element.getUrlElement(), -1);
2464  }
2465
2466  protected void composeCapabilityStatementCapabilityStatementRestComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestComponent element, int index) {
2467    if (element == null) 
2468      return;
2469    Complex t;
2470    if (Utilities.noString(parentType))
2471      t = parent;
2472    else {
2473      t = parent.predicate("fhir:"+parentType+'.'+name);
2474    }
2475    composeBackboneElement(t, "rest", name, element, index);
2476    if (element.hasModeElement())
2477      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2478    if (element.hasDocumentationElement())
2479      composeString(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2480    if (element.hasSecurity())
2481      composeCapabilityStatementCapabilityStatementRestSecurityComponent(t, "CapabilityStatement", "security", element.getSecurity(), -1);
2482    for (int i = 0; i < element.getResource().size(); i++)
2483      composeCapabilityStatementCapabilityStatementRestResourceComponent(t, "CapabilityStatement", "resource", element.getResource().get(i), i);
2484    for (int i = 0; i < element.getInteraction().size(); i++)
2485      composeCapabilityStatementSystemInteractionComponent(t, "CapabilityStatement", "interaction", element.getInteraction().get(i), i);
2486    for (int i = 0; i < element.getSearchParam().size(); i++)
2487      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(t, "CapabilityStatement", "searchParam", element.getSearchParam().get(i), i);
2488    for (int i = 0; i < element.getOperation().size(); i++)
2489      composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(t, "CapabilityStatement", "operation", element.getOperation().get(i), i);
2490    for (int i = 0; i < element.getCompartment().size(); i++)
2491      composeCanonical(t, "CapabilityStatement", "compartment", element.getCompartment().get(i), i);
2492  }
2493
2494  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element, int index) {
2495    if (element == null) 
2496      return;
2497    Complex t;
2498    if (Utilities.noString(parentType))
2499      t = parent;
2500    else {
2501      t = parent.predicate("fhir:"+parentType+'.'+name);
2502    }
2503    composeBackboneElement(t, "security", name, element, index);
2504    if (element.hasCorsElement())
2505      composeBoolean(t, "CapabilityStatement", "cors", element.getCorsElement(), -1);
2506    for (int i = 0; i < element.getService().size(); i++)
2507      composeCodeableConcept(t, "CapabilityStatement", "service", element.getService().get(i), i);
2508    if (element.hasDescriptionElement())
2509      composeString(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2510  }
2511
2512  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceComponent element, int index) {
2513    if (element == null) 
2514      return;
2515    Complex t;
2516    if (Utilities.noString(parentType))
2517      t = parent;
2518    else {
2519      t = parent.predicate("fhir:"+parentType+'.'+name);
2520    }
2521    composeBackboneElement(t, "resource", name, element, index);
2522    if (element.hasTypeElement())
2523      composeCode(t, "CapabilityStatement", "type", element.getTypeElement(), -1);
2524    if (element.hasProfileElement())
2525      composeCanonical(t, "CapabilityStatement", "profile", element.getProfileElement(), -1);
2526    for (int i = 0; i < element.getSupportedProfile().size(); i++)
2527      composeCanonical(t, "CapabilityStatement", "supportedProfile", element.getSupportedProfile().get(i), i);
2528    if (element.hasDocumentationElement())
2529      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2530    for (int i = 0; i < element.getInteraction().size(); i++)
2531      composeCapabilityStatementResourceInteractionComponent(t, "CapabilityStatement", "interaction", element.getInteraction().get(i), i);
2532    if (element.hasVersioningElement())
2533      composeEnum(t, "CapabilityStatement", "versioning", element.getVersioningElement(), -1);
2534    if (element.hasReadHistoryElement())
2535      composeBoolean(t, "CapabilityStatement", "readHistory", element.getReadHistoryElement(), -1);
2536    if (element.hasUpdateCreateElement())
2537      composeBoolean(t, "CapabilityStatement", "updateCreate", element.getUpdateCreateElement(), -1);
2538    if (element.hasConditionalCreateElement())
2539      composeBoolean(t, "CapabilityStatement", "conditionalCreate", element.getConditionalCreateElement(), -1);
2540    if (element.hasConditionalReadElement())
2541      composeEnum(t, "CapabilityStatement", "conditionalRead", element.getConditionalReadElement(), -1);
2542    if (element.hasConditionalUpdateElement())
2543      composeBoolean(t, "CapabilityStatement", "conditionalUpdate", element.getConditionalUpdateElement(), -1);
2544    if (element.hasConditionalDeleteElement())
2545      composeEnum(t, "CapabilityStatement", "conditionalDelete", element.getConditionalDeleteElement(), -1);
2546    for (int i = 0; i < element.getReferencePolicy().size(); i++)
2547      composeEnum(t, "CapabilityStatement", "referencePolicy", element.getReferencePolicy().get(i), i);
2548    for (int i = 0; i < element.getSearchInclude().size(); i++)
2549      composeString(t, "CapabilityStatement", "searchInclude", element.getSearchInclude().get(i), i);
2550    for (int i = 0; i < element.getSearchRevInclude().size(); i++)
2551      composeString(t, "CapabilityStatement", "searchRevInclude", element.getSearchRevInclude().get(i), i);
2552    for (int i = 0; i < element.getSearchParam().size(); i++)
2553      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(t, "CapabilityStatement", "searchParam", element.getSearchParam().get(i), i);
2554    for (int i = 0; i < element.getOperation().size(); i++)
2555      composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(t, "CapabilityStatement", "operation", element.getOperation().get(i), i);
2556  }
2557
2558  protected void composeCapabilityStatementResourceInteractionComponent(Complex parent, String parentType, String name, CapabilityStatement.ResourceInteractionComponent element, int index) {
2559    if (element == null) 
2560      return;
2561    Complex t;
2562    if (Utilities.noString(parentType))
2563      t = parent;
2564    else {
2565      t = parent.predicate("fhir:"+parentType+'.'+name);
2566    }
2567    composeBackboneElement(t, "interaction", name, element, index);
2568    if (element.hasCodeElement())
2569      composeEnum(t, "CapabilityStatement", "code", element.getCodeElement(), -1);
2570    if (element.hasDocumentationElement())
2571      composeString(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2572  }
2573
2574  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element, int index) {
2575    if (element == null) 
2576      return;
2577    Complex t;
2578    if (Utilities.noString(parentType))
2579      t = parent;
2580    else {
2581      t = parent.predicate("fhir:"+parentType+'.'+name);
2582    }
2583    composeBackboneElement(t, "searchParam", name, element, index);
2584    if (element.hasNameElement())
2585      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2586    if (element.hasDefinitionElement())
2587      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2588    if (element.hasTypeElement())
2589      composeEnum(t, "CapabilityStatement", "type", element.getTypeElement(), -1);
2590    if (element.hasDocumentationElement())
2591      composeString(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2592  }
2593
2594  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element, int index) {
2595    if (element == null) 
2596      return;
2597    Complex t;
2598    if (Utilities.noString(parentType))
2599      t = parent;
2600    else {
2601      t = parent.predicate("fhir:"+parentType+'.'+name);
2602    }
2603    composeBackboneElement(t, "operation", name, element, index);
2604    if (element.hasNameElement())
2605      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2606    if (element.hasDefinitionElement())
2607      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2608    if (element.hasDocumentationElement())
2609      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2610  }
2611
2612  protected void composeCapabilityStatementSystemInteractionComponent(Complex parent, String parentType, String name, CapabilityStatement.SystemInteractionComponent element, int index) {
2613    if (element == null) 
2614      return;
2615    Complex t;
2616    if (Utilities.noString(parentType))
2617      t = parent;
2618    else {
2619      t = parent.predicate("fhir:"+parentType+'.'+name);
2620    }
2621    composeBackboneElement(t, "interaction", name, element, index);
2622    if (element.hasCodeElement())
2623      composeEnum(t, "CapabilityStatement", "code", element.getCodeElement(), -1);
2624    if (element.hasDocumentationElement())
2625      composeString(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2626  }
2627
2628  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingComponent element, int index) {
2629    if (element == null) 
2630      return;
2631    Complex t;
2632    if (Utilities.noString(parentType))
2633      t = parent;
2634    else {
2635      t = parent.predicate("fhir:"+parentType+'.'+name);
2636    }
2637    composeBackboneElement(t, "messaging", name, element, index);
2638    for (int i = 0; i < element.getEndpoint().size(); i++)
2639      composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(t, "CapabilityStatement", "endpoint", element.getEndpoint().get(i), i);
2640    if (element.hasReliableCacheElement())
2641      composeUnsignedInt(t, "CapabilityStatement", "reliableCache", element.getReliableCacheElement(), -1);
2642    if (element.hasDocumentationElement())
2643      composeString(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2644    for (int i = 0; i < element.getSupportedMessage().size(); i++)
2645      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(t, "CapabilityStatement", "supportedMessage", element.getSupportedMessage().get(i), i);
2646  }
2647
2648  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element, int index) {
2649    if (element == null) 
2650      return;
2651    Complex t;
2652    if (Utilities.noString(parentType))
2653      t = parent;
2654    else {
2655      t = parent.predicate("fhir:"+parentType+'.'+name);
2656    }
2657    composeBackboneElement(t, "endpoint", name, element, index);
2658    if (element.hasProtocol())
2659      composeCoding(t, "CapabilityStatement", "protocol", element.getProtocol(), -1);
2660    if (element.hasAddressElement())
2661      composeUrl(t, "CapabilityStatement", "address", element.getAddressElement(), -1);
2662  }
2663
2664  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element, int index) {
2665    if (element == null) 
2666      return;
2667    Complex t;
2668    if (Utilities.noString(parentType))
2669      t = parent;
2670    else {
2671      t = parent.predicate("fhir:"+parentType+'.'+name);
2672    }
2673    composeBackboneElement(t, "supportedMessage", name, element, index);
2674    if (element.hasModeElement())
2675      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2676    if (element.hasDefinitionElement())
2677      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2678  }
2679
2680  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementDocumentComponent element, int index) {
2681    if (element == null) 
2682      return;
2683    Complex t;
2684    if (Utilities.noString(parentType))
2685      t = parent;
2686    else {
2687      t = parent.predicate("fhir:"+parentType+'.'+name);
2688    }
2689    composeBackboneElement(t, "document", name, element, index);
2690    if (element.hasModeElement())
2691      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2692    if (element.hasDocumentationElement())
2693      composeString(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2694    if (element.hasProfileElement())
2695      composeCanonical(t, "CapabilityStatement", "profile", element.getProfileElement(), -1);
2696  }
2697
2698  protected void composeCarePlan(Complex parent, String parentType, String name, CarePlan element, int index) {
2699    if (element == null) 
2700      return;
2701    Complex t;
2702    if (Utilities.noString(parentType))
2703      t = parent;
2704    else {
2705      t = parent.predicate("fhir:"+parentType+'.'+name);
2706    }
2707    composeDomainResource(t, "CarePlan", name, element, index);
2708    for (int i = 0; i < element.getIdentifier().size(); i++)
2709      composeIdentifier(t, "CarePlan", "identifier", element.getIdentifier().get(i), i);
2710    for (int i = 0; i < element.getInstantiates().size(); i++)
2711      composeUri(t, "CarePlan", "instantiates", element.getInstantiates().get(i), i);
2712    for (int i = 0; i < element.getBasedOn().size(); i++)
2713      composeReference(t, "CarePlan", "basedOn", element.getBasedOn().get(i), i);
2714    for (int i = 0; i < element.getReplaces().size(); i++)
2715      composeReference(t, "CarePlan", "replaces", element.getReplaces().get(i), i);
2716    for (int i = 0; i < element.getPartOf().size(); i++)
2717      composeReference(t, "CarePlan", "partOf", element.getPartOf().get(i), i);
2718    if (element.hasStatusElement())
2719      composeEnum(t, "CarePlan", "status", element.getStatusElement(), -1);
2720    if (element.hasIntentElement())
2721      composeEnum(t, "CarePlan", "intent", element.getIntentElement(), -1);
2722    for (int i = 0; i < element.getCategory().size(); i++)
2723      composeCodeableConcept(t, "CarePlan", "category", element.getCategory().get(i), i);
2724    if (element.hasTitleElement())
2725      composeString(t, "CarePlan", "title", element.getTitleElement(), -1);
2726    if (element.hasDescriptionElement())
2727      composeString(t, "CarePlan", "description", element.getDescriptionElement(), -1);
2728    if (element.hasSubject())
2729      composeReference(t, "CarePlan", "subject", element.getSubject(), -1);
2730    if (element.hasContext())
2731      composeReference(t, "CarePlan", "context", element.getContext(), -1);
2732    if (element.hasPeriod())
2733      composePeriod(t, "CarePlan", "period", element.getPeriod(), -1);
2734    for (int i = 0; i < element.getAuthor().size(); i++)
2735      composeReference(t, "CarePlan", "author", element.getAuthor().get(i), i);
2736    for (int i = 0; i < element.getCareTeam().size(); i++)
2737      composeReference(t, "CarePlan", "careTeam", element.getCareTeam().get(i), i);
2738    for (int i = 0; i < element.getAddresses().size(); i++)
2739      composeReference(t, "CarePlan", "addresses", element.getAddresses().get(i), i);
2740    for (int i = 0; i < element.getSupportingInfo().size(); i++)
2741      composeReference(t, "CarePlan", "supportingInfo", element.getSupportingInfo().get(i), i);
2742    for (int i = 0; i < element.getGoal().size(); i++)
2743      composeReference(t, "CarePlan", "goal", element.getGoal().get(i), i);
2744    for (int i = 0; i < element.getActivity().size(); i++)
2745      composeCarePlanCarePlanActivityComponent(t, "CarePlan", "activity", element.getActivity().get(i), i);
2746    for (int i = 0; i < element.getNote().size(); i++)
2747      composeAnnotation(t, "CarePlan", "note", element.getNote().get(i), i);
2748  }
2749
2750  protected void composeCarePlanCarePlanActivityComponent(Complex parent, String parentType, String name, CarePlan.CarePlanActivityComponent element, int index) {
2751    if (element == null) 
2752      return;
2753    Complex t;
2754    if (Utilities.noString(parentType))
2755      t = parent;
2756    else {
2757      t = parent.predicate("fhir:"+parentType+'.'+name);
2758    }
2759    composeBackboneElement(t, "activity", name, element, index);
2760    for (int i = 0; i < element.getOutcomeCodeableConcept().size(); i++)
2761      composeCodeableConcept(t, "CarePlan", "outcomeCodeableConcept", element.getOutcomeCodeableConcept().get(i), i);
2762    for (int i = 0; i < element.getOutcomeReference().size(); i++)
2763      composeReference(t, "CarePlan", "outcomeReference", element.getOutcomeReference().get(i), i);
2764    for (int i = 0; i < element.getProgress().size(); i++)
2765      composeAnnotation(t, "CarePlan", "progress", element.getProgress().get(i), i);
2766    if (element.hasReference())
2767      composeReference(t, "CarePlan", "reference", element.getReference(), -1);
2768    if (element.hasDetail())
2769      composeCarePlanCarePlanActivityDetailComponent(t, "CarePlan", "detail", element.getDetail(), -1);
2770  }
2771
2772  protected void composeCarePlanCarePlanActivityDetailComponent(Complex parent, String parentType, String name, CarePlan.CarePlanActivityDetailComponent element, int index) {
2773    if (element == null) 
2774      return;
2775    Complex t;
2776    if (Utilities.noString(parentType))
2777      t = parent;
2778    else {
2779      t = parent.predicate("fhir:"+parentType+'.'+name);
2780    }
2781    composeBackboneElement(t, "detail", name, element, index);
2782    if (element.hasKindElement())
2783      composeEnum(t, "CarePlan", "kind", element.getKindElement(), -1);
2784    if (element.hasInstantiatesElement())
2785      composeUri(t, "CarePlan", "instantiates", element.getInstantiatesElement(), -1);
2786    if (element.hasCode())
2787      composeCodeableConcept(t, "CarePlan", "code", element.getCode(), -1);
2788    for (int i = 0; i < element.getReasonCode().size(); i++)
2789      composeCodeableConcept(t, "CarePlan", "reasonCode", element.getReasonCode().get(i), i);
2790    for (int i = 0; i < element.getReasonReference().size(); i++)
2791      composeReference(t, "CarePlan", "reasonReference", element.getReasonReference().get(i), i);
2792    for (int i = 0; i < element.getGoal().size(); i++)
2793      composeReference(t, "CarePlan", "goal", element.getGoal().get(i), i);
2794    if (element.hasStatusElement())
2795      composeEnum(t, "CarePlan", "status", element.getStatusElement(), -1);
2796    if (element.hasStatusReasonElement())
2797      composeString(t, "CarePlan", "statusReason", element.getStatusReasonElement(), -1);
2798    if (element.hasDoNotPerformElement())
2799      composeBoolean(t, "CarePlan", "doNotPerform", element.getDoNotPerformElement(), -1);
2800    if (element.hasScheduled())
2801      composeType(t, "CarePlan", "scheduled", element.getScheduled(), -1);
2802    if (element.hasLocation())
2803      composeReference(t, "CarePlan", "location", element.getLocation(), -1);
2804    for (int i = 0; i < element.getPerformer().size(); i++)
2805      composeReference(t, "CarePlan", "performer", element.getPerformer().get(i), i);
2806    if (element.hasProduct())
2807      composeType(t, "CarePlan", "product", element.getProduct(), -1);
2808    if (element.hasDailyAmount())
2809      composeQuantity(t, "CarePlan", "dailyAmount", element.getDailyAmount(), -1);
2810    if (element.hasQuantity())
2811      composeQuantity(t, "CarePlan", "quantity", element.getQuantity(), -1);
2812    if (element.hasDescriptionElement())
2813      composeString(t, "CarePlan", "description", element.getDescriptionElement(), -1);
2814  }
2815
2816  protected void composeCareTeam(Complex parent, String parentType, String name, CareTeam element, int index) {
2817    if (element == null) 
2818      return;
2819    Complex t;
2820    if (Utilities.noString(parentType))
2821      t = parent;
2822    else {
2823      t = parent.predicate("fhir:"+parentType+'.'+name);
2824    }
2825    composeDomainResource(t, "CareTeam", name, element, index);
2826    for (int i = 0; i < element.getIdentifier().size(); i++)
2827      composeIdentifier(t, "CareTeam", "identifier", element.getIdentifier().get(i), i);
2828    if (element.hasStatusElement())
2829      composeEnum(t, "CareTeam", "status", element.getStatusElement(), -1);
2830    for (int i = 0; i < element.getCategory().size(); i++)
2831      composeCodeableConcept(t, "CareTeam", "category", element.getCategory().get(i), i);
2832    if (element.hasNameElement())
2833      composeString(t, "CareTeam", "name", element.getNameElement(), -1);
2834    if (element.hasSubject())
2835      composeReference(t, "CareTeam", "subject", element.getSubject(), -1);
2836    if (element.hasContext())
2837      composeReference(t, "CareTeam", "context", element.getContext(), -1);
2838    if (element.hasPeriod())
2839      composePeriod(t, "CareTeam", "period", element.getPeriod(), -1);
2840    for (int i = 0; i < element.getParticipant().size(); i++)
2841      composeCareTeamCareTeamParticipantComponent(t, "CareTeam", "participant", element.getParticipant().get(i), i);
2842    for (int i = 0; i < element.getReasonCode().size(); i++)
2843      composeCodeableConcept(t, "CareTeam", "reasonCode", element.getReasonCode().get(i), i);
2844    for (int i = 0; i < element.getReasonReference().size(); i++)
2845      composeReference(t, "CareTeam", "reasonReference", element.getReasonReference().get(i), i);
2846    for (int i = 0; i < element.getManagingOrganization().size(); i++)
2847      composeReference(t, "CareTeam", "managingOrganization", element.getManagingOrganization().get(i), i);
2848    for (int i = 0; i < element.getTelecom().size(); i++)
2849      composeContactPoint(t, "CareTeam", "telecom", element.getTelecom().get(i), i);
2850    for (int i = 0; i < element.getNote().size(); i++)
2851      composeAnnotation(t, "CareTeam", "note", element.getNote().get(i), i);
2852  }
2853
2854  protected void composeCareTeamCareTeamParticipantComponent(Complex parent, String parentType, String name, CareTeam.CareTeamParticipantComponent element, int index) {
2855    if (element == null) 
2856      return;
2857    Complex t;
2858    if (Utilities.noString(parentType))
2859      t = parent;
2860    else {
2861      t = parent.predicate("fhir:"+parentType+'.'+name);
2862    }
2863    composeBackboneElement(t, "participant", name, element, index);
2864    if (element.hasRole())
2865      composeCodeableConcept(t, "CareTeam", "role", element.getRole(), -1);
2866    if (element.hasMember())
2867      composeReference(t, "CareTeam", "member", element.getMember(), -1);
2868    if (element.hasOnBehalfOf())
2869      composeReference(t, "CareTeam", "onBehalfOf", element.getOnBehalfOf(), -1);
2870    if (element.hasPeriod())
2871      composePeriod(t, "CareTeam", "period", element.getPeriod(), -1);
2872  }
2873
2874  protected void composeChargeItem(Complex parent, String parentType, String name, ChargeItem element, int index) {
2875    if (element == null) 
2876      return;
2877    Complex t;
2878    if (Utilities.noString(parentType))
2879      t = parent;
2880    else {
2881      t = parent.predicate("fhir:"+parentType+'.'+name);
2882    }
2883    composeDomainResource(t, "ChargeItem", name, element, index);
2884    for (int i = 0; i < element.getIdentifier().size(); i++)
2885      composeIdentifier(t, "ChargeItem", "identifier", element.getIdentifier().get(i), i);
2886    for (int i = 0; i < element.getDefinition().size(); i++)
2887      composeUri(t, "ChargeItem", "definition", element.getDefinition().get(i), i);
2888    if (element.hasStatusElement())
2889      composeEnum(t, "ChargeItem", "status", element.getStatusElement(), -1);
2890    for (int i = 0; i < element.getPartOf().size(); i++)
2891      composeReference(t, "ChargeItem", "partOf", element.getPartOf().get(i), i);
2892    if (element.hasCode())
2893      composeCodeableConcept(t, "ChargeItem", "code", element.getCode(), -1);
2894    if (element.hasSubject())
2895      composeReference(t, "ChargeItem", "subject", element.getSubject(), -1);
2896    if (element.hasContext())
2897      composeReference(t, "ChargeItem", "context", element.getContext(), -1);
2898    if (element.hasOccurrence())
2899      composeType(t, "ChargeItem", "occurrence", element.getOccurrence(), -1);
2900    for (int i = 0; i < element.getParticipant().size(); i++)
2901      composeChargeItemChargeItemParticipantComponent(t, "ChargeItem", "participant", element.getParticipant().get(i), i);
2902    if (element.hasPerformingOrganization())
2903      composeReference(t, "ChargeItem", "performingOrganization", element.getPerformingOrganization(), -1);
2904    if (element.hasRequestingOrganization())
2905      composeReference(t, "ChargeItem", "requestingOrganization", element.getRequestingOrganization(), -1);
2906    if (element.hasCostCenter())
2907      composeReference(t, "ChargeItem", "costCenter", element.getCostCenter(), -1);
2908    if (element.hasQuantity())
2909      composeQuantity(t, "ChargeItem", "quantity", element.getQuantity(), -1);
2910    for (int i = 0; i < element.getBodysite().size(); i++)
2911      composeCodeableConcept(t, "ChargeItem", "bodysite", element.getBodysite().get(i), i);
2912    if (element.hasFactorOverrideElement())
2913      composeDecimal(t, "ChargeItem", "factorOverride", element.getFactorOverrideElement(), -1);
2914    if (element.hasPriceOverride())
2915      composeMoney(t, "ChargeItem", "priceOverride", element.getPriceOverride(), -1);
2916    if (element.hasOverrideReasonElement())
2917      composeString(t, "ChargeItem", "overrideReason", element.getOverrideReasonElement(), -1);
2918    if (element.hasEnterer())
2919      composeReference(t, "ChargeItem", "enterer", element.getEnterer(), -1);
2920    if (element.hasEnteredDateElement())
2921      composeDateTime(t, "ChargeItem", "enteredDate", element.getEnteredDateElement(), -1);
2922    for (int i = 0; i < element.getReason().size(); i++)
2923      composeCodeableConcept(t, "ChargeItem", "reason", element.getReason().get(i), i);
2924    for (int i = 0; i < element.getService().size(); i++)
2925      composeReference(t, "ChargeItem", "service", element.getService().get(i), i);
2926    for (int i = 0; i < element.getAccount().size(); i++)
2927      composeReference(t, "ChargeItem", "account", element.getAccount().get(i), i);
2928    for (int i = 0; i < element.getNote().size(); i++)
2929      composeAnnotation(t, "ChargeItem", "note", element.getNote().get(i), i);
2930    for (int i = 0; i < element.getSupportingInformation().size(); i++)
2931      composeReference(t, "ChargeItem", "supportingInformation", element.getSupportingInformation().get(i), i);
2932  }
2933
2934  protected void composeChargeItemChargeItemParticipantComponent(Complex parent, String parentType, String name, ChargeItem.ChargeItemParticipantComponent element, int index) {
2935    if (element == null) 
2936      return;
2937    Complex t;
2938    if (Utilities.noString(parentType))
2939      t = parent;
2940    else {
2941      t = parent.predicate("fhir:"+parentType+'.'+name);
2942    }
2943    composeBackboneElement(t, "participant", name, element, index);
2944    if (element.hasRole())
2945      composeCodeableConcept(t, "ChargeItem", "role", element.getRole(), -1);
2946    if (element.hasActor())
2947      composeReference(t, "ChargeItem", "actor", element.getActor(), -1);
2948  }
2949
2950  protected void composeClaim(Complex parent, String parentType, String name, Claim element, int index) {
2951    if (element == null) 
2952      return;
2953    Complex t;
2954    if (Utilities.noString(parentType))
2955      t = parent;
2956    else {
2957      t = parent.predicate("fhir:"+parentType+'.'+name);
2958    }
2959    composeDomainResource(t, "Claim", name, element, index);
2960    for (int i = 0; i < element.getIdentifier().size(); i++)
2961      composeIdentifier(t, "Claim", "identifier", element.getIdentifier().get(i), i);
2962    if (element.hasStatusElement())
2963      composeEnum(t, "Claim", "status", element.getStatusElement(), -1);
2964    if (element.hasType())
2965      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
2966    for (int i = 0; i < element.getSubType().size(); i++)
2967      composeCodeableConcept(t, "Claim", "subType", element.getSubType().get(i), i);
2968    if (element.hasUseElement())
2969      composeEnum(t, "Claim", "use", element.getUseElement(), -1);
2970    if (element.hasPatient())
2971      composeReference(t, "Claim", "patient", element.getPatient(), -1);
2972    if (element.hasBillablePeriod())
2973      composePeriod(t, "Claim", "billablePeriod", element.getBillablePeriod(), -1);
2974    if (element.hasCreatedElement())
2975      composeDateTime(t, "Claim", "created", element.getCreatedElement(), -1);
2976    if (element.hasEnterer())
2977      composeReference(t, "Claim", "enterer", element.getEnterer(), -1);
2978    if (element.hasInsurer())
2979      composeReference(t, "Claim", "insurer", element.getInsurer(), -1);
2980    if (element.hasProvider())
2981      composeReference(t, "Claim", "provider", element.getProvider(), -1);
2982    if (element.hasPriority())
2983      composeCodeableConcept(t, "Claim", "priority", element.getPriority(), -1);
2984    if (element.hasFundsReserve())
2985      composeCodeableConcept(t, "Claim", "fundsReserve", element.getFundsReserve(), -1);
2986    for (int i = 0; i < element.getRelated().size(); i++)
2987      composeClaimRelatedClaimComponent(t, "Claim", "related", element.getRelated().get(i), i);
2988    if (element.hasPrescription())
2989      composeReference(t, "Claim", "prescription", element.getPrescription(), -1);
2990    if (element.hasOriginalPrescription())
2991      composeReference(t, "Claim", "originalPrescription", element.getOriginalPrescription(), -1);
2992    if (element.hasPayee())
2993      composeClaimPayeeComponent(t, "Claim", "payee", element.getPayee(), -1);
2994    if (element.hasReferral())
2995      composeReference(t, "Claim", "referral", element.getReferral(), -1);
2996    if (element.hasFacility())
2997      composeReference(t, "Claim", "facility", element.getFacility(), -1);
2998    for (int i = 0; i < element.getCareTeam().size(); i++)
2999      composeClaimCareTeamComponent(t, "Claim", "careTeam", element.getCareTeam().get(i), i);
3000    for (int i = 0; i < element.getInformation().size(); i++)
3001      composeClaimSpecialConditionComponent(t, "Claim", "information", element.getInformation().get(i), i);
3002    for (int i = 0; i < element.getDiagnosis().size(); i++)
3003      composeClaimDiagnosisComponent(t, "Claim", "diagnosis", element.getDiagnosis().get(i), i);
3004    for (int i = 0; i < element.getProcedure().size(); i++)
3005      composeClaimProcedureComponent(t, "Claim", "procedure", element.getProcedure().get(i), i);
3006    for (int i = 0; i < element.getInsurance().size(); i++)
3007      composeClaimInsuranceComponent(t, "Claim", "insurance", element.getInsurance().get(i), i);
3008    if (element.hasAccident())
3009      composeClaimAccidentComponent(t, "Claim", "accident", element.getAccident(), -1);
3010    for (int i = 0; i < element.getItem().size(); i++)
3011      composeClaimItemComponent(t, "Claim", "item", element.getItem().get(i), i);
3012    if (element.hasTotal())
3013      composeMoney(t, "Claim", "total", element.getTotal(), -1);
3014  }
3015
3016  protected void composeClaimRelatedClaimComponent(Complex parent, String parentType, String name, Claim.RelatedClaimComponent element, int index) {
3017    if (element == null) 
3018      return;
3019    Complex t;
3020    if (Utilities.noString(parentType))
3021      t = parent;
3022    else {
3023      t = parent.predicate("fhir:"+parentType+'.'+name);
3024    }
3025    composeBackboneElement(t, "related", name, element, index);
3026    if (element.hasClaim())
3027      composeReference(t, "Claim", "claim", element.getClaim(), -1);
3028    if (element.hasRelationship())
3029      composeCodeableConcept(t, "Claim", "relationship", element.getRelationship(), -1);
3030    if (element.hasReference())
3031      composeIdentifier(t, "Claim", "reference", element.getReference(), -1);
3032  }
3033
3034  protected void composeClaimPayeeComponent(Complex parent, String parentType, String name, Claim.PayeeComponent element, int index) {
3035    if (element == null) 
3036      return;
3037    Complex t;
3038    if (Utilities.noString(parentType))
3039      t = parent;
3040    else {
3041      t = parent.predicate("fhir:"+parentType+'.'+name);
3042    }
3043    composeBackboneElement(t, "payee", name, element, index);
3044    if (element.hasType())
3045      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
3046    if (element.hasResource())
3047      composeCoding(t, "Claim", "resource", element.getResource(), -1);
3048    if (element.hasParty())
3049      composeReference(t, "Claim", "party", element.getParty(), -1);
3050  }
3051
3052  protected void composeClaimCareTeamComponent(Complex parent, String parentType, String name, Claim.CareTeamComponent element, int index) {
3053    if (element == null) 
3054      return;
3055    Complex t;
3056    if (Utilities.noString(parentType))
3057      t = parent;
3058    else {
3059      t = parent.predicate("fhir:"+parentType+'.'+name);
3060    }
3061    composeBackboneElement(t, "careTeam", name, element, index);
3062    if (element.hasSequenceElement())
3063      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3064    if (element.hasProvider())
3065      composeReference(t, "Claim", "provider", element.getProvider(), -1);
3066    if (element.hasResponsibleElement())
3067      composeBoolean(t, "Claim", "responsible", element.getResponsibleElement(), -1);
3068    if (element.hasRole())
3069      composeCodeableConcept(t, "Claim", "role", element.getRole(), -1);
3070    if (element.hasQualification())
3071      composeCodeableConcept(t, "Claim", "qualification", element.getQualification(), -1);
3072  }
3073
3074  protected void composeClaimSpecialConditionComponent(Complex parent, String parentType, String name, Claim.SpecialConditionComponent element, int index) {
3075    if (element == null) 
3076      return;
3077    Complex t;
3078    if (Utilities.noString(parentType))
3079      t = parent;
3080    else {
3081      t = parent.predicate("fhir:"+parentType+'.'+name);
3082    }
3083    composeBackboneElement(t, "information", name, element, index);
3084    if (element.hasSequenceElement())
3085      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3086    if (element.hasCategory())
3087      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3088    if (element.hasCode())
3089      composeCodeableConcept(t, "Claim", "code", element.getCode(), -1);
3090    if (element.hasTiming())
3091      composeType(t, "Claim", "timing", element.getTiming(), -1);
3092    if (element.hasValue())
3093      composeType(t, "Claim", "value", element.getValue(), -1);
3094    if (element.hasReason())
3095      composeCodeableConcept(t, "Claim", "reason", element.getReason(), -1);
3096  }
3097
3098  protected void composeClaimDiagnosisComponent(Complex parent, String parentType, String name, Claim.DiagnosisComponent element, int index) {
3099    if (element == null) 
3100      return;
3101    Complex t;
3102    if (Utilities.noString(parentType))
3103      t = parent;
3104    else {
3105      t = parent.predicate("fhir:"+parentType+'.'+name);
3106    }
3107    composeBackboneElement(t, "diagnosis", name, element, index);
3108    if (element.hasSequenceElement())
3109      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3110    if (element.hasDiagnosis())
3111      composeType(t, "Claim", "diagnosis", element.getDiagnosis(), -1);
3112    for (int i = 0; i < element.getType().size(); i++)
3113      composeCodeableConcept(t, "Claim", "type", element.getType().get(i), i);
3114    if (element.hasPackageCode())
3115      composeCodeableConcept(t, "Claim", "packageCode", element.getPackageCode(), -1);
3116  }
3117
3118  protected void composeClaimProcedureComponent(Complex parent, String parentType, String name, Claim.ProcedureComponent element, int index) {
3119    if (element == null) 
3120      return;
3121    Complex t;
3122    if (Utilities.noString(parentType))
3123      t = parent;
3124    else {
3125      t = parent.predicate("fhir:"+parentType+'.'+name);
3126    }
3127    composeBackboneElement(t, "procedure", name, element, index);
3128    if (element.hasSequenceElement())
3129      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3130    if (element.hasDateElement())
3131      composeDateTime(t, "Claim", "date", element.getDateElement(), -1);
3132    if (element.hasProcedure())
3133      composeType(t, "Claim", "procedure", element.getProcedure(), -1);
3134  }
3135
3136  protected void composeClaimInsuranceComponent(Complex parent, String parentType, String name, Claim.InsuranceComponent element, int index) {
3137    if (element == null) 
3138      return;
3139    Complex t;
3140    if (Utilities.noString(parentType))
3141      t = parent;
3142    else {
3143      t = parent.predicate("fhir:"+parentType+'.'+name);
3144    }
3145    composeBackboneElement(t, "insurance", name, element, index);
3146    if (element.hasSequenceElement())
3147      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3148    if (element.hasFocalElement())
3149      composeBoolean(t, "Claim", "focal", element.getFocalElement(), -1);
3150    if (element.hasIdentifier())
3151      composeIdentifier(t, "Claim", "identifier", element.getIdentifier(), -1);
3152    if (element.hasCoverage())
3153      composeReference(t, "Claim", "coverage", element.getCoverage(), -1);
3154    if (element.hasBusinessArrangementElement())
3155      composeString(t, "Claim", "businessArrangement", element.getBusinessArrangementElement(), -1);
3156    for (int i = 0; i < element.getPreAuthRef().size(); i++)
3157      composeString(t, "Claim", "preAuthRef", element.getPreAuthRef().get(i), i);
3158    if (element.hasClaimResponse())
3159      composeReference(t, "Claim", "claimResponse", element.getClaimResponse(), -1);
3160  }
3161
3162  protected void composeClaimAccidentComponent(Complex parent, String parentType, String name, Claim.AccidentComponent element, int index) {
3163    if (element == null) 
3164      return;
3165    Complex t;
3166    if (Utilities.noString(parentType))
3167      t = parent;
3168    else {
3169      t = parent.predicate("fhir:"+parentType+'.'+name);
3170    }
3171    composeBackboneElement(t, "accident", name, element, index);
3172    if (element.hasDateElement())
3173      composeDate(t, "Claim", "date", element.getDateElement(), -1);
3174    if (element.hasType())
3175      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
3176    if (element.hasLocation())
3177      composeType(t, "Claim", "location", element.getLocation(), -1);
3178  }
3179
3180  protected void composeClaimItemComponent(Complex parent, String parentType, String name, Claim.ItemComponent element, int index) {
3181    if (element == null) 
3182      return;
3183    Complex t;
3184    if (Utilities.noString(parentType))
3185      t = parent;
3186    else {
3187      t = parent.predicate("fhir:"+parentType+'.'+name);
3188    }
3189    composeBackboneElement(t, "item", name, element, index);
3190    if (element.hasSequenceElement())
3191      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3192    for (int i = 0; i < element.getCareTeamSequence().size(); i++)
3193      composePositiveInt(t, "Claim", "careTeamSequence", element.getCareTeamSequence().get(i), i);
3194    for (int i = 0; i < element.getDiagnosisSequence().size(); i++)
3195      composePositiveInt(t, "Claim", "diagnosisSequence", element.getDiagnosisSequence().get(i), i);
3196    for (int i = 0; i < element.getProcedureSequence().size(); i++)
3197      composePositiveInt(t, "Claim", "procedureSequence", element.getProcedureSequence().get(i), i);
3198    for (int i = 0; i < element.getInformationSequence().size(); i++)
3199      composePositiveInt(t, "Claim", "informationSequence", element.getInformationSequence().get(i), i);
3200    if (element.hasRevenue())
3201      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3202    if (element.hasCategory())
3203      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3204    if (element.hasService())
3205      composeCodeableConcept(t, "Claim", "service", element.getService(), -1);
3206    for (int i = 0; i < element.getModifier().size(); i++)
3207      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3208    for (int i = 0; i < element.getProgramCode().size(); i++)
3209      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3210    if (element.hasServiced())
3211      composeType(t, "Claim", "serviced", element.getServiced(), -1);
3212    if (element.hasLocation())
3213      composeType(t, "Claim", "location", element.getLocation(), -1);
3214    if (element.hasQuantity())
3215      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3216    if (element.hasUnitPrice())
3217      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3218    if (element.hasFactorElement())
3219      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3220    if (element.hasNet())
3221      composeMoney(t, "Claim", "net", element.getNet(), -1);
3222    for (int i = 0; i < element.getUdi().size(); i++)
3223      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3224    if (element.hasBodySite())
3225      composeCodeableConcept(t, "Claim", "bodySite", element.getBodySite(), -1);
3226    for (int i = 0; i < element.getSubSite().size(); i++)
3227      composeCodeableConcept(t, "Claim", "subSite", element.getSubSite().get(i), i);
3228    for (int i = 0; i < element.getEncounter().size(); i++)
3229      composeReference(t, "Claim", "encounter", element.getEncounter().get(i), i);
3230    for (int i = 0; i < element.getDetail().size(); i++)
3231      composeClaimDetailComponent(t, "Claim", "detail", element.getDetail().get(i), i);
3232  }
3233
3234  protected void composeClaimDetailComponent(Complex parent, String parentType, String name, Claim.DetailComponent element, int index) {
3235    if (element == null) 
3236      return;
3237    Complex t;
3238    if (Utilities.noString(parentType))
3239      t = parent;
3240    else {
3241      t = parent.predicate("fhir:"+parentType+'.'+name);
3242    }
3243    composeBackboneElement(t, "detail", name, element, index);
3244    if (element.hasSequenceElement())
3245      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3246    if (element.hasRevenue())
3247      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3248    if (element.hasCategory())
3249      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3250    if (element.hasService())
3251      composeCodeableConcept(t, "Claim", "service", element.getService(), -1);
3252    for (int i = 0; i < element.getModifier().size(); i++)
3253      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3254    for (int i = 0; i < element.getProgramCode().size(); i++)
3255      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3256    if (element.hasQuantity())
3257      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3258    if (element.hasUnitPrice())
3259      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3260    if (element.hasFactorElement())
3261      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3262    if (element.hasNet())
3263      composeMoney(t, "Claim", "net", element.getNet(), -1);
3264    for (int i = 0; i < element.getUdi().size(); i++)
3265      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3266    for (int i = 0; i < element.getSubDetail().size(); i++)
3267      composeClaimSubDetailComponent(t, "Claim", "subDetail", element.getSubDetail().get(i), i);
3268  }
3269
3270  protected void composeClaimSubDetailComponent(Complex parent, String parentType, String name, Claim.SubDetailComponent element, int index) {
3271    if (element == null) 
3272      return;
3273    Complex t;
3274    if (Utilities.noString(parentType))
3275      t = parent;
3276    else {
3277      t = parent.predicate("fhir:"+parentType+'.'+name);
3278    }
3279    composeBackboneElement(t, "subDetail", name, element, index);
3280    if (element.hasSequenceElement())
3281      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3282    if (element.hasRevenue())
3283      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3284    if (element.hasCategory())
3285      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3286    if (element.hasService())
3287      composeCodeableConcept(t, "Claim", "service", element.getService(), -1);
3288    for (int i = 0; i < element.getModifier().size(); i++)
3289      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3290    for (int i = 0; i < element.getProgramCode().size(); i++)
3291      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3292    if (element.hasQuantity())
3293      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3294    if (element.hasUnitPrice())
3295      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3296    if (element.hasFactorElement())
3297      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3298    if (element.hasNet())
3299      composeMoney(t, "Claim", "net", element.getNet(), -1);
3300    for (int i = 0; i < element.getUdi().size(); i++)
3301      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3302  }
3303
3304  protected void composeClaimResponse(Complex parent, String parentType, String name, ClaimResponse element, int index) {
3305    if (element == null) 
3306      return;
3307    Complex t;
3308    if (Utilities.noString(parentType))
3309      t = parent;
3310    else {
3311      t = parent.predicate("fhir:"+parentType+'.'+name);
3312    }
3313    composeDomainResource(t, "ClaimResponse", name, element, index);
3314    for (int i = 0; i < element.getIdentifier().size(); i++)
3315      composeIdentifier(t, "ClaimResponse", "identifier", element.getIdentifier().get(i), i);
3316    if (element.hasStatusElement())
3317      composeEnum(t, "ClaimResponse", "status", element.getStatusElement(), -1);
3318    if (element.hasType())
3319      composeCodeableConcept(t, "ClaimResponse", "type", element.getType(), -1);
3320    for (int i = 0; i < element.getSubType().size(); i++)
3321      composeCodeableConcept(t, "ClaimResponse", "subType", element.getSubType().get(i), i);
3322    if (element.hasUseElement())
3323      composeEnum(t, "ClaimResponse", "use", element.getUseElement(), -1);
3324    if (element.hasPatient())
3325      composeReference(t, "ClaimResponse", "patient", element.getPatient(), -1);
3326    if (element.hasCreatedElement())
3327      composeDateTime(t, "ClaimResponse", "created", element.getCreatedElement(), -1);
3328    if (element.hasInsurer())
3329      composeReference(t, "ClaimResponse", "insurer", element.getInsurer(), -1);
3330    if (element.hasRequestProvider())
3331      composeReference(t, "ClaimResponse", "requestProvider", element.getRequestProvider(), -1);
3332    if (element.hasRequest())
3333      composeReference(t, "ClaimResponse", "request", element.getRequest(), -1);
3334    if (element.hasOutcomeElement())
3335      composeEnum(t, "ClaimResponse", "outcome", element.getOutcomeElement(), -1);
3336    if (element.hasDispositionElement())
3337      composeString(t, "ClaimResponse", "disposition", element.getDispositionElement(), -1);
3338    if (element.hasPayeeType())
3339      composeCodeableConcept(t, "ClaimResponse", "payeeType", element.getPayeeType(), -1);
3340    for (int i = 0; i < element.getItem().size(); i++)
3341      composeClaimResponseItemComponent(t, "ClaimResponse", "item", element.getItem().get(i), i);
3342    for (int i = 0; i < element.getAddItem().size(); i++)
3343      composeClaimResponseAddedItemComponent(t, "ClaimResponse", "addItem", element.getAddItem().get(i), i);
3344    for (int i = 0; i < element.getError().size(); i++)
3345      composeClaimResponseErrorComponent(t, "ClaimResponse", "error", element.getError().get(i), i);
3346    for (int i = 0; i < element.getTotal().size(); i++)
3347      composeClaimResponseTotalComponent(t, "ClaimResponse", "total", element.getTotal().get(i), i);
3348    if (element.hasPayment())
3349      composeClaimResponsePaymentComponent(t, "ClaimResponse", "payment", element.getPayment(), -1);
3350    if (element.hasReserved())
3351      composeCoding(t, "ClaimResponse", "reserved", element.getReserved(), -1);
3352    if (element.hasForm())
3353      composeCodeableConcept(t, "ClaimResponse", "form", element.getForm(), -1);
3354    for (int i = 0; i < element.getProcessNote().size(); i++)
3355      composeClaimResponseNoteComponent(t, "ClaimResponse", "processNote", element.getProcessNote().get(i), i);
3356    for (int i = 0; i < element.getCommunicationRequest().size(); i++)
3357      composeReference(t, "ClaimResponse", "communicationRequest", element.getCommunicationRequest().get(i), i);
3358    for (int i = 0; i < element.getInsurance().size(); i++)
3359      composeClaimResponseInsuranceComponent(t, "ClaimResponse", "insurance", element.getInsurance().get(i), i);
3360  }
3361
3362  protected void composeClaimResponseItemComponent(Complex parent, String parentType, String name, ClaimResponse.ItemComponent element, int index) {
3363    if (element == null) 
3364      return;
3365    Complex t;
3366    if (Utilities.noString(parentType))
3367      t = parent;
3368    else {
3369      t = parent.predicate("fhir:"+parentType+'.'+name);
3370    }
3371    composeBackboneElement(t, "item", name, element, index);
3372    if (element.hasItemSequenceElement())
3373      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequenceElement(), -1);
3374    for (int i = 0; i < element.getNoteNumber().size(); i++)
3375      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3376    for (int i = 0; i < element.getAdjudication().size(); i++)
3377      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3378    for (int i = 0; i < element.getDetail().size(); i++)
3379      composeClaimResponseItemDetailComponent(t, "ClaimResponse", "detail", element.getDetail().get(i), i);
3380  }
3381
3382  protected void composeClaimResponseAdjudicationComponent(Complex parent, String parentType, String name, ClaimResponse.AdjudicationComponent element, int index) {
3383    if (element == null) 
3384      return;
3385    Complex t;
3386    if (Utilities.noString(parentType))
3387      t = parent;
3388    else {
3389      t = parent.predicate("fhir:"+parentType+'.'+name);
3390    }
3391    composeBackboneElement(t, "adjudication", name, element, index);
3392    if (element.hasCategory())
3393      composeCodeableConcept(t, "ClaimResponse", "category", element.getCategory(), -1);
3394    if (element.hasReason())
3395      composeCodeableConcept(t, "ClaimResponse", "reason", element.getReason(), -1);
3396    if (element.hasAmount())
3397      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3398    if (element.hasValueElement())
3399      composeDecimal(t, "ClaimResponse", "value", element.getValueElement(), -1);
3400  }
3401
3402  protected void composeClaimResponseItemDetailComponent(Complex parent, String parentType, String name, ClaimResponse.ItemDetailComponent element, int index) {
3403    if (element == null) 
3404      return;
3405    Complex t;
3406    if (Utilities.noString(parentType))
3407      t = parent;
3408    else {
3409      t = parent.predicate("fhir:"+parentType+'.'+name);
3410    }
3411    composeBackboneElement(t, "detail", name, element, index);
3412    if (element.hasDetailSequenceElement())
3413      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequenceElement(), -1);
3414    for (int i = 0; i < element.getNoteNumber().size(); i++)
3415      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3416    for (int i = 0; i < element.getAdjudication().size(); i++)
3417      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3418    for (int i = 0; i < element.getSubDetail().size(); i++)
3419      composeClaimResponseSubDetailComponent(t, "ClaimResponse", "subDetail", element.getSubDetail().get(i), i);
3420  }
3421
3422  protected void composeClaimResponseSubDetailComponent(Complex parent, String parentType, String name, ClaimResponse.SubDetailComponent element, int index) {
3423    if (element == null) 
3424      return;
3425    Complex t;
3426    if (Utilities.noString(parentType))
3427      t = parent;
3428    else {
3429      t = parent.predicate("fhir:"+parentType+'.'+name);
3430    }
3431    composeBackboneElement(t, "subDetail", name, element, index);
3432    if (element.hasSubDetailSequenceElement())
3433      composePositiveInt(t, "ClaimResponse", "subDetailSequence", element.getSubDetailSequenceElement(), -1);
3434    for (int i = 0; i < element.getNoteNumber().size(); i++)
3435      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3436    for (int i = 0; i < element.getAdjudication().size(); i++)
3437      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3438  }
3439
3440  protected void composeClaimResponseAddedItemComponent(Complex parent, String parentType, String name, ClaimResponse.AddedItemComponent element, int index) {
3441    if (element == null) 
3442      return;
3443    Complex t;
3444    if (Utilities.noString(parentType))
3445      t = parent;
3446    else {
3447      t = parent.predicate("fhir:"+parentType+'.'+name);
3448    }
3449    composeBackboneElement(t, "addItem", name, element, index);
3450    for (int i = 0; i < element.getItemSequence().size(); i++)
3451      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequence().get(i), i);
3452    for (int i = 0; i < element.getDetailSequence().size(); i++)
3453      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequence().get(i), i);
3454    for (int i = 0; i < element.getSubdetailSequence().size(); i++)
3455      composePositiveInt(t, "ClaimResponse", "subdetailSequence", element.getSubdetailSequence().get(i), i);
3456    if (element.hasService())
3457      composeCodeableConcept(t, "ClaimResponse", "service", element.getService(), -1);
3458    for (int i = 0; i < element.getModifier().size(); i++)
3459      composeCodeableConcept(t, "ClaimResponse", "modifier", element.getModifier().get(i), i);
3460    if (element.hasFee())
3461      composeMoney(t, "ClaimResponse", "fee", element.getFee(), -1);
3462    for (int i = 0; i < element.getNoteNumber().size(); i++)
3463      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3464    for (int i = 0; i < element.getAdjudication().size(); i++)
3465      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3466  }
3467
3468  protected void composeClaimResponseErrorComponent(Complex parent, String parentType, String name, ClaimResponse.ErrorComponent element, int index) {
3469    if (element == null) 
3470      return;
3471    Complex t;
3472    if (Utilities.noString(parentType))
3473      t = parent;
3474    else {
3475      t = parent.predicate("fhir:"+parentType+'.'+name);
3476    }
3477    composeBackboneElement(t, "error", name, element, index);
3478    if (element.hasItemSequenceElement())
3479      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequenceElement(), -1);
3480    if (element.hasDetailSequenceElement())
3481      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequenceElement(), -1);
3482    if (element.hasSubDetailSequenceElement())
3483      composePositiveInt(t, "ClaimResponse", "subDetailSequence", element.getSubDetailSequenceElement(), -1);
3484    if (element.hasCode())
3485      composeCodeableConcept(t, "ClaimResponse", "code", element.getCode(), -1);
3486  }
3487
3488  protected void composeClaimResponseTotalComponent(Complex parent, String parentType, String name, ClaimResponse.TotalComponent element, int index) {
3489    if (element == null) 
3490      return;
3491    Complex t;
3492    if (Utilities.noString(parentType))
3493      t = parent;
3494    else {
3495      t = parent.predicate("fhir:"+parentType+'.'+name);
3496    }
3497    composeBackboneElement(t, "total", name, element, index);
3498    if (element.hasCategory())
3499      composeCodeableConcept(t, "ClaimResponse", "category", element.getCategory(), -1);
3500    if (element.hasAmount())
3501      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3502  }
3503
3504  protected void composeClaimResponsePaymentComponent(Complex parent, String parentType, String name, ClaimResponse.PaymentComponent element, int index) {
3505    if (element == null) 
3506      return;
3507    Complex t;
3508    if (Utilities.noString(parentType))
3509      t = parent;
3510    else {
3511      t = parent.predicate("fhir:"+parentType+'.'+name);
3512    }
3513    composeBackboneElement(t, "payment", name, element, index);
3514    if (element.hasType())
3515      composeCodeableConcept(t, "ClaimResponse", "type", element.getType(), -1);
3516    if (element.hasAdjustment())
3517      composeMoney(t, "ClaimResponse", "adjustment", element.getAdjustment(), -1);
3518    if (element.hasAdjustmentReason())
3519      composeCodeableConcept(t, "ClaimResponse", "adjustmentReason", element.getAdjustmentReason(), -1);
3520    if (element.hasDateElement())
3521      composeDate(t, "ClaimResponse", "date", element.getDateElement(), -1);
3522    if (element.hasAmount())
3523      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3524    if (element.hasIdentifier())
3525      composeIdentifier(t, "ClaimResponse", "identifier", element.getIdentifier(), -1);
3526  }
3527
3528  protected void composeClaimResponseNoteComponent(Complex parent, String parentType, String name, ClaimResponse.NoteComponent element, int index) {
3529    if (element == null) 
3530      return;
3531    Complex t;
3532    if (Utilities.noString(parentType))
3533      t = parent;
3534    else {
3535      t = parent.predicate("fhir:"+parentType+'.'+name);
3536    }
3537    composeBackboneElement(t, "processNote", name, element, index);
3538    if (element.hasNumberElement())
3539      composePositiveInt(t, "ClaimResponse", "number", element.getNumberElement(), -1);
3540    if (element.hasTypeElement())
3541      composeEnum(t, "ClaimResponse", "type", element.getTypeElement(), -1);
3542    if (element.hasTextElement())
3543      composeString(t, "ClaimResponse", "text", element.getTextElement(), -1);
3544    if (element.hasLanguage())
3545      composeCodeableConcept(t, "ClaimResponse", "language", element.getLanguage(), -1);
3546  }
3547
3548  protected void composeClaimResponseInsuranceComponent(Complex parent, String parentType, String name, ClaimResponse.InsuranceComponent element, int index) {
3549    if (element == null) 
3550      return;
3551    Complex t;
3552    if (Utilities.noString(parentType))
3553      t = parent;
3554    else {
3555      t = parent.predicate("fhir:"+parentType+'.'+name);
3556    }
3557    composeBackboneElement(t, "insurance", name, element, index);
3558    if (element.hasSequenceElement())
3559      composePositiveInt(t, "ClaimResponse", "sequence", element.getSequenceElement(), -1);
3560    if (element.hasFocalElement())
3561      composeBoolean(t, "ClaimResponse", "focal", element.getFocalElement(), -1);
3562    if (element.hasCoverage())
3563      composeReference(t, "ClaimResponse", "coverage", element.getCoverage(), -1);
3564    if (element.hasBusinessArrangementElement())
3565      composeString(t, "ClaimResponse", "businessArrangement", element.getBusinessArrangementElement(), -1);
3566    for (int i = 0; i < element.getPreAuthRef().size(); i++)
3567      composeString(t, "ClaimResponse", "preAuthRef", element.getPreAuthRef().get(i), i);
3568    if (element.hasClaimResponse())
3569      composeReference(t, "ClaimResponse", "claimResponse", element.getClaimResponse(), -1);
3570  }
3571
3572  protected void composeClinicalImpression(Complex parent, String parentType, String name, ClinicalImpression element, int index) {
3573    if (element == null) 
3574      return;
3575    Complex t;
3576    if (Utilities.noString(parentType))
3577      t = parent;
3578    else {
3579      t = parent.predicate("fhir:"+parentType+'.'+name);
3580    }
3581    composeDomainResource(t, "ClinicalImpression", name, element, index);
3582    for (int i = 0; i < element.getIdentifier().size(); i++)
3583      composeIdentifier(t, "ClinicalImpression", "identifier", element.getIdentifier().get(i), i);
3584    if (element.hasStatusElement())
3585      composeEnum(t, "ClinicalImpression", "status", element.getStatusElement(), -1);
3586    if (element.hasCode())
3587      composeCodeableConcept(t, "ClinicalImpression", "code", element.getCode(), -1);
3588    if (element.hasDescriptionElement())
3589      composeString(t, "ClinicalImpression", "description", element.getDescriptionElement(), -1);
3590    if (element.hasSubject())
3591      composeReference(t, "ClinicalImpression", "subject", element.getSubject(), -1);
3592    if (element.hasContext())
3593      composeReference(t, "ClinicalImpression", "context", element.getContext(), -1);
3594    if (element.hasEffective())
3595      composeType(t, "ClinicalImpression", "effective", element.getEffective(), -1);
3596    if (element.hasDateElement())
3597      composeDateTime(t, "ClinicalImpression", "date", element.getDateElement(), -1);
3598    if (element.hasAssessor())
3599      composeReference(t, "ClinicalImpression", "assessor", element.getAssessor(), -1);
3600    if (element.hasPrevious())
3601      composeReference(t, "ClinicalImpression", "previous", element.getPrevious(), -1);
3602    for (int i = 0; i < element.getProblem().size(); i++)
3603      composeReference(t, "ClinicalImpression", "problem", element.getProblem().get(i), i);
3604    for (int i = 0; i < element.getInvestigation().size(); i++)
3605      composeClinicalImpressionClinicalImpressionInvestigationComponent(t, "ClinicalImpression", "investigation", element.getInvestigation().get(i), i);
3606    for (int i = 0; i < element.getProtocol().size(); i++)
3607      composeUri(t, "ClinicalImpression", "protocol", element.getProtocol().get(i), i);
3608    if (element.hasSummaryElement())
3609      composeString(t, "ClinicalImpression", "summary", element.getSummaryElement(), -1);
3610    for (int i = 0; i < element.getFinding().size(); i++)
3611      composeClinicalImpressionClinicalImpressionFindingComponent(t, "ClinicalImpression", "finding", element.getFinding().get(i), i);
3612    for (int i = 0; i < element.getPrognosisCodeableConcept().size(); i++)
3613      composeCodeableConcept(t, "ClinicalImpression", "prognosisCodeableConcept", element.getPrognosisCodeableConcept().get(i), i);
3614    for (int i = 0; i < element.getPrognosisReference().size(); i++)
3615      composeReference(t, "ClinicalImpression", "prognosisReference", element.getPrognosisReference().get(i), i);
3616    for (int i = 0; i < element.getAction().size(); i++)
3617      composeReference(t, "ClinicalImpression", "action", element.getAction().get(i), i);
3618    for (int i = 0; i < element.getNote().size(); i++)
3619      composeAnnotation(t, "ClinicalImpression", "note", element.getNote().get(i), i);
3620  }
3621
3622  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(Complex parent, String parentType, String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element, int index) {
3623    if (element == null) 
3624      return;
3625    Complex t;
3626    if (Utilities.noString(parentType))
3627      t = parent;
3628    else {
3629      t = parent.predicate("fhir:"+parentType+'.'+name);
3630    }
3631    composeBackboneElement(t, "investigation", name, element, index);
3632    if (element.hasCode())
3633      composeCodeableConcept(t, "ClinicalImpression", "code", element.getCode(), -1);
3634    for (int i = 0; i < element.getItem().size(); i++)
3635      composeReference(t, "ClinicalImpression", "item", element.getItem().get(i), i);
3636  }
3637
3638  protected void composeClinicalImpressionClinicalImpressionFindingComponent(Complex parent, String parentType, String name, ClinicalImpression.ClinicalImpressionFindingComponent element, int index) {
3639    if (element == null) 
3640      return;
3641    Complex t;
3642    if (Utilities.noString(parentType))
3643      t = parent;
3644    else {
3645      t = parent.predicate("fhir:"+parentType+'.'+name);
3646    }
3647    composeBackboneElement(t, "finding", name, element, index);
3648    if (element.hasItemCodeableConcept())
3649      composeCodeableConcept(t, "ClinicalImpression", "itemCodeableConcept", element.getItemCodeableConcept(), -1);
3650    if (element.hasItemReference())
3651      composeReference(t, "ClinicalImpression", "itemReference", element.getItemReference(), -1);
3652    if (element.hasBasisElement())
3653      composeString(t, "ClinicalImpression", "basis", element.getBasisElement(), -1);
3654  }
3655
3656  protected void composeCodeSystem(Complex parent, String parentType, String name, CodeSystem element, int index) {
3657    if (element == null) 
3658      return;
3659    Complex t;
3660    if (Utilities.noString(parentType))
3661      t = parent;
3662    else {
3663      t = parent.predicate("fhir:"+parentType+'.'+name);
3664    }
3665    composeDomainResource(t, "CodeSystem", name, element, index);
3666    if (element.hasUrlElement())
3667      composeUri(t, "CodeSystem", "url", element.getUrlElement(), -1);
3668    if (element.hasIdentifier())
3669      composeIdentifier(t, "CodeSystem", "identifier", element.getIdentifier(), -1);
3670    if (element.hasVersionElement())
3671      composeString(t, "CodeSystem", "version", element.getVersionElement(), -1);
3672    if (element.hasNameElement())
3673      composeString(t, "CodeSystem", "name", element.getNameElement(), -1);
3674    if (element.hasTitleElement())
3675      composeString(t, "CodeSystem", "title", element.getTitleElement(), -1);
3676    if (element.hasStatusElement())
3677      composeEnum(t, "CodeSystem", "status", element.getStatusElement(), -1);
3678    if (element.hasExperimentalElement())
3679      composeBoolean(t, "CodeSystem", "experimental", element.getExperimentalElement(), -1);
3680    if (element.hasDateElement())
3681      composeDateTime(t, "CodeSystem", "date", element.getDateElement(), -1);
3682    if (element.hasPublisherElement())
3683      composeString(t, "CodeSystem", "publisher", element.getPublisherElement(), -1);
3684    for (int i = 0; i < element.getContact().size(); i++)
3685      composeContactDetail(t, "CodeSystem", "contact", element.getContact().get(i), i);
3686    if (element.hasDescriptionElement())
3687      composeMarkdown(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
3688    for (int i = 0; i < element.getUseContext().size(); i++)
3689      composeUsageContext(t, "CodeSystem", "useContext", element.getUseContext().get(i), i);
3690    for (int i = 0; i < element.getJurisdiction().size(); i++)
3691      composeCodeableConcept(t, "CodeSystem", "jurisdiction", element.getJurisdiction().get(i), i);
3692    if (element.hasPurposeElement())
3693      composeMarkdown(t, "CodeSystem", "purpose", element.getPurposeElement(), -1);
3694    if (element.hasCopyrightElement())
3695      composeMarkdown(t, "CodeSystem", "copyright", element.getCopyrightElement(), -1);
3696    if (element.hasCaseSensitiveElement())
3697      composeBoolean(t, "CodeSystem", "caseSensitive", element.getCaseSensitiveElement(), -1);
3698    if (element.hasValueSetElement())
3699      composeCanonical(t, "CodeSystem", "valueSet", element.getValueSetElement(), -1);
3700    if (element.hasHierarchyMeaningElement())
3701      composeEnum(t, "CodeSystem", "hierarchyMeaning", element.getHierarchyMeaningElement(), -1);
3702    if (element.hasCompositionalElement())
3703      composeBoolean(t, "CodeSystem", "compositional", element.getCompositionalElement(), -1);
3704    if (element.hasVersionNeededElement())
3705      composeBoolean(t, "CodeSystem", "versionNeeded", element.getVersionNeededElement(), -1);
3706    if (element.hasContentElement())
3707      composeEnum(t, "CodeSystem", "content", element.getContentElement(), -1);
3708    if (element.hasSupplementsElement())
3709      composeCanonical(t, "CodeSystem", "supplements", element.getSupplementsElement(), -1);
3710    if (element.hasCountElement())
3711      composeUnsignedInt(t, "CodeSystem", "count", element.getCountElement(), -1);
3712    for (int i = 0; i < element.getFilter().size(); i++)
3713      composeCodeSystemCodeSystemFilterComponent(t, "CodeSystem", "filter", element.getFilter().get(i), i);
3714    for (int i = 0; i < element.getProperty().size(); i++)
3715      composeCodeSystemPropertyComponent(t, "CodeSystem", "property", element.getProperty().get(i), i);
3716    for (int i = 0; i < element.getConcept().size(); i++)
3717      composeCodeSystemConceptDefinitionComponent(t, "CodeSystem", "concept", element.getConcept().get(i), i);
3718  }
3719
3720  protected void composeCodeSystemCodeSystemFilterComponent(Complex parent, String parentType, String name, CodeSystem.CodeSystemFilterComponent element, int index) {
3721    if (element == null) 
3722      return;
3723    Complex t;
3724    if (Utilities.noString(parentType))
3725      t = parent;
3726    else {
3727      t = parent.predicate("fhir:"+parentType+'.'+name);
3728    }
3729    composeBackboneElement(t, "filter", name, element, index);
3730    if (element.hasCodeElement())
3731      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
3732    if (element.hasDescriptionElement())
3733      composeString(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
3734    for (int i = 0; i < element.getOperator().size(); i++)
3735      composeEnum(t, "CodeSystem", "operator", element.getOperator().get(i), i);
3736    if (element.hasValueElement())
3737      composeString(t, "CodeSystem", "value", element.getValueElement(), -1);
3738  }
3739
3740  protected void composeCodeSystemPropertyComponent(Complex parent, String parentType, String name, CodeSystem.PropertyComponent element, int index) {
3741    if (element == null) 
3742      return;
3743    Complex t;
3744    if (Utilities.noString(parentType))
3745      t = parent;
3746    else {
3747      t = parent.predicate("fhir:"+parentType+'.'+name);
3748    }
3749    composeBackboneElement(t, "property", name, element, index);
3750    if (element.hasCodeElement())
3751      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
3752    if (element.hasUriElement())
3753      composeUri(t, "CodeSystem", "uri", element.getUriElement(), -1);
3754    if (element.hasDescriptionElement())
3755      composeString(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
3756    if (element.hasTypeElement())
3757      composeEnum(t, "CodeSystem", "type", element.getTypeElement(), -1);
3758  }
3759
3760  protected void composeCodeSystemConceptDefinitionComponent(Complex parent, String parentType, String name, CodeSystem.ConceptDefinitionComponent element, int index) {
3761    if (element == null) 
3762      return;
3763    Complex t;
3764    if (Utilities.noString(parentType))
3765      t = parent;
3766    else {
3767      t = parent.predicate("fhir:"+parentType+'.'+name);
3768    }
3769    composeBackboneElement(t, "concept", name, element, index);
3770    if (element.hasCodeElement())
3771      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
3772    if (element.hasDisplayElement())
3773      composeString(t, "CodeSystem", "display", element.getDisplayElement(), -1);
3774    if (element.hasDefinitionElement())
3775      composeString(t, "CodeSystem", "definition", element.getDefinitionElement(), -1);
3776    for (int i = 0; i < element.getDesignation().size(); i++)
3777      composeCodeSystemConceptDefinitionDesignationComponent(t, "CodeSystem", "designation", element.getDesignation().get(i), i);
3778    for (int i = 0; i < element.getProperty().size(); i++)
3779      composeCodeSystemConceptPropertyComponent(t, "CodeSystem", "property", element.getProperty().get(i), i);
3780    for (int i = 0; i < element.getConcept().size(); i++)
3781      composeCodeSystemConceptDefinitionComponent(t, "CodeSystem", "concept", element.getConcept().get(i), i);
3782  }
3783
3784  protected void composeCodeSystemConceptDefinitionDesignationComponent(Complex parent, String parentType, String name, CodeSystem.ConceptDefinitionDesignationComponent element, int index) {
3785    if (element == null) 
3786      return;
3787    Complex t;
3788    if (Utilities.noString(parentType))
3789      t = parent;
3790    else {
3791      t = parent.predicate("fhir:"+parentType+'.'+name);
3792    }
3793    composeBackboneElement(t, "designation", name, element, index);
3794    if (element.hasLanguageElement())
3795      composeCode(t, "CodeSystem", "language", element.getLanguageElement(), -1);
3796    if (element.hasUse())
3797      composeCoding(t, "CodeSystem", "use", element.getUse(), -1);
3798    if (element.hasValueElement())
3799      composeString(t, "CodeSystem", "value", element.getValueElement(), -1);
3800  }
3801
3802  protected void composeCodeSystemConceptPropertyComponent(Complex parent, String parentType, String name, CodeSystem.ConceptPropertyComponent element, int index) {
3803    if (element == null) 
3804      return;
3805    Complex t;
3806    if (Utilities.noString(parentType))
3807      t = parent;
3808    else {
3809      t = parent.predicate("fhir:"+parentType+'.'+name);
3810    }
3811    composeBackboneElement(t, "property", name, element, index);
3812    if (element.hasCodeElement())
3813      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
3814    if (element.hasValue())
3815      composeType(t, "CodeSystem", "value", element.getValue(), -1);
3816  }
3817
3818  protected void composeCommunication(Complex parent, String parentType, String name, Communication element, int index) {
3819    if (element == null) 
3820      return;
3821    Complex t;
3822    if (Utilities.noString(parentType))
3823      t = parent;
3824    else {
3825      t = parent.predicate("fhir:"+parentType+'.'+name);
3826    }
3827    composeDomainResource(t, "Communication", name, element, index);
3828    for (int i = 0; i < element.getIdentifier().size(); i++)
3829      composeIdentifier(t, "Communication", "identifier", element.getIdentifier().get(i), i);
3830    for (int i = 0; i < element.getInstantiates().size(); i++)
3831      composeUri(t, "Communication", "instantiates", element.getInstantiates().get(i), i);
3832    for (int i = 0; i < element.getBasedOn().size(); i++)
3833      composeReference(t, "Communication", "basedOn", element.getBasedOn().get(i), i);
3834    for (int i = 0; i < element.getPartOf().size(); i++)
3835      composeReference(t, "Communication", "partOf", element.getPartOf().get(i), i);
3836    for (int i = 0; i < element.getInResponseTo().size(); i++)
3837      composeReference(t, "Communication", "inResponseTo", element.getInResponseTo().get(i), i);
3838    if (element.hasStatusElement())
3839      composeEnum(t, "Communication", "status", element.getStatusElement(), -1);
3840    if (element.hasStatusReason())
3841      composeCodeableConcept(t, "Communication", "statusReason", element.getStatusReason(), -1);
3842    for (int i = 0; i < element.getCategory().size(); i++)
3843      composeCodeableConcept(t, "Communication", "category", element.getCategory().get(i), i);
3844    if (element.hasPriorityElement())
3845      composeEnum(t, "Communication", "priority", element.getPriorityElement(), -1);
3846    for (int i = 0; i < element.getMedium().size(); i++)
3847      composeCodeableConcept(t, "Communication", "medium", element.getMedium().get(i), i);
3848    if (element.hasSubject())
3849      composeReference(t, "Communication", "subject", element.getSubject(), -1);
3850    for (int i = 0; i < element.getRecipient().size(); i++)
3851      composeReference(t, "Communication", "recipient", element.getRecipient().get(i), i);
3852    if (element.hasTopic())
3853      composeCodeableConcept(t, "Communication", "topic", element.getTopic(), -1);
3854    for (int i = 0; i < element.getAbout().size(); i++)
3855      composeReference(t, "Communication", "about", element.getAbout().get(i), i);
3856    if (element.hasContext())
3857      composeReference(t, "Communication", "context", element.getContext(), -1);
3858    if (element.hasSentElement())
3859      composeDateTime(t, "Communication", "sent", element.getSentElement(), -1);
3860    if (element.hasReceivedElement())
3861      composeDateTime(t, "Communication", "received", element.getReceivedElement(), -1);
3862    if (element.hasSender())
3863      composeReference(t, "Communication", "sender", element.getSender(), -1);
3864    for (int i = 0; i < element.getReasonCode().size(); i++)
3865      composeCodeableConcept(t, "Communication", "reasonCode", element.getReasonCode().get(i), i);
3866    for (int i = 0; i < element.getReasonReference().size(); i++)
3867      composeReference(t, "Communication", "reasonReference", element.getReasonReference().get(i), i);
3868    for (int i = 0; i < element.getPayload().size(); i++)
3869      composeCommunicationCommunicationPayloadComponent(t, "Communication", "payload", element.getPayload().get(i), i);
3870    for (int i = 0; i < element.getNote().size(); i++)
3871      composeAnnotation(t, "Communication", "note", element.getNote().get(i), i);
3872  }
3873
3874  protected void composeCommunicationCommunicationPayloadComponent(Complex parent, String parentType, String name, Communication.CommunicationPayloadComponent element, int index) {
3875    if (element == null) 
3876      return;
3877    Complex t;
3878    if (Utilities.noString(parentType))
3879      t = parent;
3880    else {
3881      t = parent.predicate("fhir:"+parentType+'.'+name);
3882    }
3883    composeBackboneElement(t, "payload", name, element, index);
3884    if (element.hasContent())
3885      composeType(t, "Communication", "content", element.getContent(), -1);
3886  }
3887
3888  protected void composeCommunicationRequest(Complex parent, String parentType, String name, CommunicationRequest element, int index) {
3889    if (element == null) 
3890      return;
3891    Complex t;
3892    if (Utilities.noString(parentType))
3893      t = parent;
3894    else {
3895      t = parent.predicate("fhir:"+parentType+'.'+name);
3896    }
3897    composeDomainResource(t, "CommunicationRequest", name, element, index);
3898    for (int i = 0; i < element.getIdentifier().size(); i++)
3899      composeIdentifier(t, "CommunicationRequest", "identifier", element.getIdentifier().get(i), i);
3900    for (int i = 0; i < element.getBasedOn().size(); i++)
3901      composeReference(t, "CommunicationRequest", "basedOn", element.getBasedOn().get(i), i);
3902    for (int i = 0; i < element.getReplaces().size(); i++)
3903      composeReference(t, "CommunicationRequest", "replaces", element.getReplaces().get(i), i);
3904    if (element.hasGroupIdentifier())
3905      composeIdentifier(t, "CommunicationRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
3906    if (element.hasStatusElement())
3907      composeEnum(t, "CommunicationRequest", "status", element.getStatusElement(), -1);
3908    for (int i = 0; i < element.getCategory().size(); i++)
3909      composeCodeableConcept(t, "CommunicationRequest", "category", element.getCategory().get(i), i);
3910    if (element.hasPriorityElement())
3911      composeEnum(t, "CommunicationRequest", "priority", element.getPriorityElement(), -1);
3912    for (int i = 0; i < element.getMedium().size(); i++)
3913      composeCodeableConcept(t, "CommunicationRequest", "medium", element.getMedium().get(i), i);
3914    if (element.hasSubject())
3915      composeReference(t, "CommunicationRequest", "subject", element.getSubject(), -1);
3916    for (int i = 0; i < element.getRecipient().size(); i++)
3917      composeReference(t, "CommunicationRequest", "recipient", element.getRecipient().get(i), i);
3918    for (int i = 0; i < element.getAbout().size(); i++)
3919      composeReference(t, "CommunicationRequest", "about", element.getAbout().get(i), i);
3920    if (element.hasContext())
3921      composeReference(t, "CommunicationRequest", "context", element.getContext(), -1);
3922    for (int i = 0; i < element.getPayload().size(); i++)
3923      composeCommunicationRequestCommunicationRequestPayloadComponent(t, "CommunicationRequest", "payload", element.getPayload().get(i), i);
3924    if (element.hasOccurrence())
3925      composeType(t, "CommunicationRequest", "occurrence", element.getOccurrence(), -1);
3926    if (element.hasAuthoredOnElement())
3927      composeDateTime(t, "CommunicationRequest", "authoredOn", element.getAuthoredOnElement(), -1);
3928    if (element.hasRequester())
3929      composeReference(t, "CommunicationRequest", "requester", element.getRequester(), -1);
3930    if (element.hasSender())
3931      composeReference(t, "CommunicationRequest", "sender", element.getSender(), -1);
3932    for (int i = 0; i < element.getReasonCode().size(); i++)
3933      composeCodeableConcept(t, "CommunicationRequest", "reasonCode", element.getReasonCode().get(i), i);
3934    for (int i = 0; i < element.getReasonReference().size(); i++)
3935      composeReference(t, "CommunicationRequest", "reasonReference", element.getReasonReference().get(i), i);
3936    for (int i = 0; i < element.getNote().size(); i++)
3937      composeAnnotation(t, "CommunicationRequest", "note", element.getNote().get(i), i);
3938  }
3939
3940  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(Complex parent, String parentType, String name, CommunicationRequest.CommunicationRequestPayloadComponent element, int index) {
3941    if (element == null) 
3942      return;
3943    Complex t;
3944    if (Utilities.noString(parentType))
3945      t = parent;
3946    else {
3947      t = parent.predicate("fhir:"+parentType+'.'+name);
3948    }
3949    composeBackboneElement(t, "payload", name, element, index);
3950    if (element.hasContent())
3951      composeType(t, "CommunicationRequest", "content", element.getContent(), -1);
3952  }
3953
3954  protected void composeCompartmentDefinition(Complex parent, String parentType, String name, CompartmentDefinition element, int index) {
3955    if (element == null) 
3956      return;
3957    Complex t;
3958    if (Utilities.noString(parentType))
3959      t = parent;
3960    else {
3961      t = parent.predicate("fhir:"+parentType+'.'+name);
3962    }
3963    composeDomainResource(t, "CompartmentDefinition", name, element, index);
3964    if (element.hasUrlElement())
3965      composeUri(t, "CompartmentDefinition", "url", element.getUrlElement(), -1);
3966    if (element.hasNameElement())
3967      composeString(t, "CompartmentDefinition", "name", element.getNameElement(), -1);
3968    if (element.hasTitleElement())
3969      composeString(t, "CompartmentDefinition", "title", element.getTitleElement(), -1);
3970    if (element.hasStatusElement())
3971      composeEnum(t, "CompartmentDefinition", "status", element.getStatusElement(), -1);
3972    if (element.hasExperimentalElement())
3973      composeBoolean(t, "CompartmentDefinition", "experimental", element.getExperimentalElement(), -1);
3974    if (element.hasDateElement())
3975      composeDateTime(t, "CompartmentDefinition", "date", element.getDateElement(), -1);
3976    if (element.hasPublisherElement())
3977      composeString(t, "CompartmentDefinition", "publisher", element.getPublisherElement(), -1);
3978    for (int i = 0; i < element.getContact().size(); i++)
3979      composeContactDetail(t, "CompartmentDefinition", "contact", element.getContact().get(i), i);
3980    if (element.hasDescriptionElement())
3981      composeMarkdown(t, "CompartmentDefinition", "description", element.getDescriptionElement(), -1);
3982    for (int i = 0; i < element.getUseContext().size(); i++)
3983      composeUsageContext(t, "CompartmentDefinition", "useContext", element.getUseContext().get(i), i);
3984    for (int i = 0; i < element.getJurisdiction().size(); i++)
3985      composeCodeableConcept(t, "CompartmentDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
3986    if (element.hasPurposeElement())
3987      composeMarkdown(t, "CompartmentDefinition", "purpose", element.getPurposeElement(), -1);
3988    if (element.hasCodeElement())
3989      composeEnum(t, "CompartmentDefinition", "code", element.getCodeElement(), -1);
3990    if (element.hasSearchElement())
3991      composeBoolean(t, "CompartmentDefinition", "search", element.getSearchElement(), -1);
3992    for (int i = 0; i < element.getResource().size(); i++)
3993      composeCompartmentDefinitionCompartmentDefinitionResourceComponent(t, "CompartmentDefinition", "resource", element.getResource().get(i), i);
3994  }
3995
3996  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(Complex parent, String parentType, String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element, int index) {
3997    if (element == null) 
3998      return;
3999    Complex t;
4000    if (Utilities.noString(parentType))
4001      t = parent;
4002    else {
4003      t = parent.predicate("fhir:"+parentType+'.'+name);
4004    }
4005    composeBackboneElement(t, "resource", name, element, index);
4006    if (element.hasCodeElement())
4007      composeCode(t, "CompartmentDefinition", "code", element.getCodeElement(), -1);
4008    for (int i = 0; i < element.getParam().size(); i++)
4009      composeString(t, "CompartmentDefinition", "param", element.getParam().get(i), i);
4010    if (element.hasDocumentationElement())
4011      composeString(t, "CompartmentDefinition", "documentation", element.getDocumentationElement(), -1);
4012  }
4013
4014  protected void composeComposition(Complex parent, String parentType, String name, Composition element, int index) {
4015    if (element == null) 
4016      return;
4017    Complex t;
4018    if (Utilities.noString(parentType))
4019      t = parent;
4020    else {
4021      t = parent.predicate("fhir:"+parentType+'.'+name);
4022    }
4023    composeDomainResource(t, "Composition", name, element, index);
4024    if (element.hasIdentifier())
4025      composeIdentifier(t, "Composition", "identifier", element.getIdentifier(), -1);
4026    if (element.hasStatusElement())
4027      composeEnum(t, "Composition", "status", element.getStatusElement(), -1);
4028    if (element.hasType())
4029      composeCodeableConcept(t, "Composition", "type", element.getType(), -1);
4030    if (element.hasClass_())
4031      composeCodeableConcept(t, "Composition", "class", element.getClass_(), -1);
4032    if (element.hasSubject())
4033      composeReference(t, "Composition", "subject", element.getSubject(), -1);
4034    if (element.hasEncounter())
4035      composeReference(t, "Composition", "encounter", element.getEncounter(), -1);
4036    if (element.hasDateElement())
4037      composeDateTime(t, "Composition", "date", element.getDateElement(), -1);
4038    for (int i = 0; i < element.getAuthor().size(); i++)
4039      composeReference(t, "Composition", "author", element.getAuthor().get(i), i);
4040    if (element.hasTitleElement())
4041      composeString(t, "Composition", "title", element.getTitleElement(), -1);
4042    if (element.hasConfidentialityElement())
4043      composeEnum(t, "Composition", "confidentiality", element.getConfidentialityElement(), -1);
4044    for (int i = 0; i < element.getAttester().size(); i++)
4045      composeCompositionCompositionAttesterComponent(t, "Composition", "attester", element.getAttester().get(i), i);
4046    if (element.hasCustodian())
4047      composeReference(t, "Composition", "custodian", element.getCustodian(), -1);
4048    for (int i = 0; i < element.getRelatesTo().size(); i++)
4049      composeCompositionCompositionRelatesToComponent(t, "Composition", "relatesTo", element.getRelatesTo().get(i), i);
4050    for (int i = 0; i < element.getEvent().size(); i++)
4051      composeCompositionCompositionEventComponent(t, "Composition", "event", element.getEvent().get(i), i);
4052    for (int i = 0; i < element.getSection().size(); i++)
4053      composeCompositionSectionComponent(t, "Composition", "section", element.getSection().get(i), i);
4054  }
4055
4056  protected void composeCompositionCompositionAttesterComponent(Complex parent, String parentType, String name, Composition.CompositionAttesterComponent element, int index) {
4057    if (element == null) 
4058      return;
4059    Complex t;
4060    if (Utilities.noString(parentType))
4061      t = parent;
4062    else {
4063      t = parent.predicate("fhir:"+parentType+'.'+name);
4064    }
4065    composeBackboneElement(t, "attester", name, element, index);
4066    if (element.hasModeElement())
4067      composeEnum(t, "Composition", "mode", element.getModeElement(), -1);
4068    if (element.hasTimeElement())
4069      composeDateTime(t, "Composition", "time", element.getTimeElement(), -1);
4070    if (element.hasParty())
4071      composeReference(t, "Composition", "party", element.getParty(), -1);
4072  }
4073
4074  protected void composeCompositionCompositionRelatesToComponent(Complex parent, String parentType, String name, Composition.CompositionRelatesToComponent element, int index) {
4075    if (element == null) 
4076      return;
4077    Complex t;
4078    if (Utilities.noString(parentType))
4079      t = parent;
4080    else {
4081      t = parent.predicate("fhir:"+parentType+'.'+name);
4082    }
4083    composeBackboneElement(t, "relatesTo", name, element, index);
4084    if (element.hasCodeElement())
4085      composeEnum(t, "Composition", "code", element.getCodeElement(), -1);
4086    if (element.hasTarget())
4087      composeType(t, "Composition", "target", element.getTarget(), -1);
4088  }
4089
4090  protected void composeCompositionCompositionEventComponent(Complex parent, String parentType, String name, Composition.CompositionEventComponent element, int index) {
4091    if (element == null) 
4092      return;
4093    Complex t;
4094    if (Utilities.noString(parentType))
4095      t = parent;
4096    else {
4097      t = parent.predicate("fhir:"+parentType+'.'+name);
4098    }
4099    composeBackboneElement(t, "event", name, element, index);
4100    for (int i = 0; i < element.getCode().size(); i++)
4101      composeCodeableConcept(t, "Composition", "code", element.getCode().get(i), i);
4102    if (element.hasPeriod())
4103      composePeriod(t, "Composition", "period", element.getPeriod(), -1);
4104    for (int i = 0; i < element.getDetail().size(); i++)
4105      composeReference(t, "Composition", "detail", element.getDetail().get(i), i);
4106  }
4107
4108  protected void composeCompositionSectionComponent(Complex parent, String parentType, String name, Composition.SectionComponent element, int index) {
4109    if (element == null) 
4110      return;
4111    Complex t;
4112    if (Utilities.noString(parentType))
4113      t = parent;
4114    else {
4115      t = parent.predicate("fhir:"+parentType+'.'+name);
4116    }
4117    composeBackboneElement(t, "section", name, element, index);
4118    if (element.hasTitleElement())
4119      composeString(t, "Composition", "title", element.getTitleElement(), -1);
4120    if (element.hasCode())
4121      composeCodeableConcept(t, "Composition", "code", element.getCode(), -1);
4122    for (int i = 0; i < element.getAuthor().size(); i++)
4123      composeReference(t, "Composition", "author", element.getAuthor().get(i), i);
4124    if (element.hasText())
4125      composeNarrative(t, "Composition", "text", element.getText(), -1);
4126    if (element.hasModeElement())
4127      composeEnum(t, "Composition", "mode", element.getModeElement(), -1);
4128    if (element.hasOrderedBy())
4129      composeCodeableConcept(t, "Composition", "orderedBy", element.getOrderedBy(), -1);
4130    for (int i = 0; i < element.getEntry().size(); i++)
4131      composeReference(t, "Composition", "entry", element.getEntry().get(i), i);
4132    if (element.hasEmptyReason())
4133      composeCodeableConcept(t, "Composition", "emptyReason", element.getEmptyReason(), -1);
4134    for (int i = 0; i < element.getSection().size(); i++)
4135      composeCompositionSectionComponent(t, "Composition", "section", element.getSection().get(i), i);
4136  }
4137
4138  protected void composeConceptMap(Complex parent, String parentType, String name, ConceptMap element, int index) {
4139    if (element == null) 
4140      return;
4141    Complex t;
4142    if (Utilities.noString(parentType))
4143      t = parent;
4144    else {
4145      t = parent.predicate("fhir:"+parentType+'.'+name);
4146    }
4147    composeDomainResource(t, "ConceptMap", name, element, index);
4148    if (element.hasUrlElement())
4149      composeUri(t, "ConceptMap", "url", element.getUrlElement(), -1);
4150    if (element.hasIdentifier())
4151      composeIdentifier(t, "ConceptMap", "identifier", element.getIdentifier(), -1);
4152    if (element.hasVersionElement())
4153      composeString(t, "ConceptMap", "version", element.getVersionElement(), -1);
4154    if (element.hasNameElement())
4155      composeString(t, "ConceptMap", "name", element.getNameElement(), -1);
4156    if (element.hasTitleElement())
4157      composeString(t, "ConceptMap", "title", element.getTitleElement(), -1);
4158    if (element.hasStatusElement())
4159      composeEnum(t, "ConceptMap", "status", element.getStatusElement(), -1);
4160    if (element.hasExperimentalElement())
4161      composeBoolean(t, "ConceptMap", "experimental", element.getExperimentalElement(), -1);
4162    if (element.hasDateElement())
4163      composeDateTime(t, "ConceptMap", "date", element.getDateElement(), -1);
4164    if (element.hasPublisherElement())
4165      composeString(t, "ConceptMap", "publisher", element.getPublisherElement(), -1);
4166    for (int i = 0; i < element.getContact().size(); i++)
4167      composeContactDetail(t, "ConceptMap", "contact", element.getContact().get(i), i);
4168    if (element.hasDescriptionElement())
4169      composeMarkdown(t, "ConceptMap", "description", element.getDescriptionElement(), -1);
4170    for (int i = 0; i < element.getUseContext().size(); i++)
4171      composeUsageContext(t, "ConceptMap", "useContext", element.getUseContext().get(i), i);
4172    for (int i = 0; i < element.getJurisdiction().size(); i++)
4173      composeCodeableConcept(t, "ConceptMap", "jurisdiction", element.getJurisdiction().get(i), i);
4174    if (element.hasPurposeElement())
4175      composeMarkdown(t, "ConceptMap", "purpose", element.getPurposeElement(), -1);
4176    if (element.hasCopyrightElement())
4177      composeMarkdown(t, "ConceptMap", "copyright", element.getCopyrightElement(), -1);
4178    if (element.hasSource())
4179      composeType(t, "ConceptMap", "source", element.getSource(), -1);
4180    if (element.hasTarget())
4181      composeType(t, "ConceptMap", "target", element.getTarget(), -1);
4182    for (int i = 0; i < element.getGroup().size(); i++)
4183      composeConceptMapConceptMapGroupComponent(t, "ConceptMap", "group", element.getGroup().get(i), i);
4184  }
4185
4186  protected void composeConceptMapConceptMapGroupComponent(Complex parent, String parentType, String name, ConceptMap.ConceptMapGroupComponent element, int index) {
4187    if (element == null) 
4188      return;
4189    Complex t;
4190    if (Utilities.noString(parentType))
4191      t = parent;
4192    else {
4193      t = parent.predicate("fhir:"+parentType+'.'+name);
4194    }
4195    composeBackboneElement(t, "group", name, element, index);
4196    if (element.hasSourceElement())
4197      composeUri(t, "ConceptMap", "source", element.getSourceElement(), -1);
4198    if (element.hasSourceVersionElement())
4199      composeString(t, "ConceptMap", "sourceVersion", element.getSourceVersionElement(), -1);
4200    if (element.hasTargetElement())
4201      composeUri(t, "ConceptMap", "target", element.getTargetElement(), -1);
4202    if (element.hasTargetVersionElement())
4203      composeString(t, "ConceptMap", "targetVersion", element.getTargetVersionElement(), -1);
4204    for (int i = 0; i < element.getElement().size(); i++)
4205      composeConceptMapSourceElementComponent(t, "ConceptMap", "element", element.getElement().get(i), i);
4206    if (element.hasUnmapped())
4207      composeConceptMapConceptMapGroupUnmappedComponent(t, "ConceptMap", "unmapped", element.getUnmapped(), -1);
4208  }
4209
4210  protected void composeConceptMapSourceElementComponent(Complex parent, String parentType, String name, ConceptMap.SourceElementComponent element, int index) {
4211    if (element == null) 
4212      return;
4213    Complex t;
4214    if (Utilities.noString(parentType))
4215      t = parent;
4216    else {
4217      t = parent.predicate("fhir:"+parentType+'.'+name);
4218    }
4219    composeBackboneElement(t, "element", name, element, index);
4220    if (element.hasCodeElement())
4221      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4222    if (element.hasDisplayElement())
4223      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4224    for (int i = 0; i < element.getTarget().size(); i++)
4225      composeConceptMapTargetElementComponent(t, "ConceptMap", "target", element.getTarget().get(i), i);
4226  }
4227
4228  protected void composeConceptMapTargetElementComponent(Complex parent, String parentType, String name, ConceptMap.TargetElementComponent element, int index) {
4229    if (element == null) 
4230      return;
4231    Complex t;
4232    if (Utilities.noString(parentType))
4233      t = parent;
4234    else {
4235      t = parent.predicate("fhir:"+parentType+'.'+name);
4236    }
4237    composeBackboneElement(t, "target", name, element, index);
4238    if (element.hasCodeElement())
4239      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4240    if (element.hasDisplayElement())
4241      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4242    if (element.hasEquivalenceElement())
4243      composeEnum(t, "ConceptMap", "equivalence", element.getEquivalenceElement(), -1);
4244    if (element.hasCommentElement())
4245      composeString(t, "ConceptMap", "comment", element.getCommentElement(), -1);
4246    for (int i = 0; i < element.getDependsOn().size(); i++)
4247      composeConceptMapOtherElementComponent(t, "ConceptMap", "dependsOn", element.getDependsOn().get(i), i);
4248    for (int i = 0; i < element.getProduct().size(); i++)
4249      composeConceptMapOtherElementComponent(t, "ConceptMap", "product", element.getProduct().get(i), i);
4250  }
4251
4252  protected void composeConceptMapOtherElementComponent(Complex parent, String parentType, String name, ConceptMap.OtherElementComponent element, int index) {
4253    if (element == null) 
4254      return;
4255    Complex t;
4256    if (Utilities.noString(parentType))
4257      t = parent;
4258    else {
4259      t = parent.predicate("fhir:"+parentType+'.'+name);
4260    }
4261    composeBackboneElement(t, "dependsOn", name, element, index);
4262    if (element.hasPropertyElement())
4263      composeUri(t, "ConceptMap", "property", element.getPropertyElement(), -1);
4264    if (element.hasSystemElement())
4265      composeCanonical(t, "ConceptMap", "system", element.getSystemElement(), -1);
4266    if (element.hasValueElement())
4267      composeString(t, "ConceptMap", "value", element.getValueElement(), -1);
4268    if (element.hasDisplayElement())
4269      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4270  }
4271
4272  protected void composeConceptMapConceptMapGroupUnmappedComponent(Complex parent, String parentType, String name, ConceptMap.ConceptMapGroupUnmappedComponent element, int index) {
4273    if (element == null) 
4274      return;
4275    Complex t;
4276    if (Utilities.noString(parentType))
4277      t = parent;
4278    else {
4279      t = parent.predicate("fhir:"+parentType+'.'+name);
4280    }
4281    composeBackboneElement(t, "unmapped", name, element, index);
4282    if (element.hasModeElement())
4283      composeEnum(t, "ConceptMap", "mode", element.getModeElement(), -1);
4284    if (element.hasCodeElement())
4285      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4286    if (element.hasDisplayElement())
4287      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4288    if (element.hasUrlElement())
4289      composeCanonical(t, "ConceptMap", "url", element.getUrlElement(), -1);
4290  }
4291
4292  protected void composeCondition(Complex parent, String parentType, String name, Condition element, int index) {
4293    if (element == null) 
4294      return;
4295    Complex t;
4296    if (Utilities.noString(parentType))
4297      t = parent;
4298    else {
4299      t = parent.predicate("fhir:"+parentType+'.'+name);
4300    }
4301    composeDomainResource(t, "Condition", name, element, index);
4302    for (int i = 0; i < element.getIdentifier().size(); i++)
4303      composeIdentifier(t, "Condition", "identifier", element.getIdentifier().get(i), i);
4304    if (element.hasClinicalStatusElement())
4305      composeEnum(t, "Condition", "clinicalStatus", element.getClinicalStatusElement(), -1);
4306    if (element.hasVerificationStatusElement())
4307      composeEnum(t, "Condition", "verificationStatus", element.getVerificationStatusElement(), -1);
4308    for (int i = 0; i < element.getCategory().size(); i++)
4309      composeCodeableConcept(t, "Condition", "category", element.getCategory().get(i), i);
4310    if (element.hasSeverity())
4311      composeCodeableConcept(t, "Condition", "severity", element.getSeverity(), -1);
4312    if (element.hasCode())
4313      composeCodeableConcept(t, "Condition", "code", element.getCode(), -1);
4314    for (int i = 0; i < element.getBodySite().size(); i++)
4315      composeCodeableConcept(t, "Condition", "bodySite", element.getBodySite().get(i), i);
4316    if (element.hasSubject())
4317      composeReference(t, "Condition", "subject", element.getSubject(), -1);
4318    if (element.hasContext())
4319      composeReference(t, "Condition", "context", element.getContext(), -1);
4320    if (element.hasOnset())
4321      composeType(t, "Condition", "onset", element.getOnset(), -1);
4322    if (element.hasAbatement())
4323      composeType(t, "Condition", "abatement", element.getAbatement(), -1);
4324    if (element.hasAssertedDateElement())
4325      composeDateTime(t, "Condition", "assertedDate", element.getAssertedDateElement(), -1);
4326    if (element.hasRecorder())
4327      composeReference(t, "Condition", "recorder", element.getRecorder(), -1);
4328    if (element.hasAsserter())
4329      composeReference(t, "Condition", "asserter", element.getAsserter(), -1);
4330    for (int i = 0; i < element.getStage().size(); i++)
4331      composeConditionConditionStageComponent(t, "Condition", "stage", element.getStage().get(i), i);
4332    for (int i = 0; i < element.getEvidence().size(); i++)
4333      composeConditionConditionEvidenceComponent(t, "Condition", "evidence", element.getEvidence().get(i), i);
4334    for (int i = 0; i < element.getNote().size(); i++)
4335      composeAnnotation(t, "Condition", "note", element.getNote().get(i), i);
4336  }
4337
4338  protected void composeConditionConditionStageComponent(Complex parent, String parentType, String name, Condition.ConditionStageComponent element, int index) {
4339    if (element == null) 
4340      return;
4341    Complex t;
4342    if (Utilities.noString(parentType))
4343      t = parent;
4344    else {
4345      t = parent.predicate("fhir:"+parentType+'.'+name);
4346    }
4347    composeBackboneElement(t, "stage", name, element, index);
4348    if (element.hasSummary())
4349      composeCodeableConcept(t, "Condition", "summary", element.getSummary(), -1);
4350    for (int i = 0; i < element.getAssessment().size(); i++)
4351      composeReference(t, "Condition", "assessment", element.getAssessment().get(i), i);
4352    if (element.hasType())
4353      composeCodeableConcept(t, "Condition", "type", element.getType(), -1);
4354  }
4355
4356  protected void composeConditionConditionEvidenceComponent(Complex parent, String parentType, String name, Condition.ConditionEvidenceComponent element, int index) {
4357    if (element == null) 
4358      return;
4359    Complex t;
4360    if (Utilities.noString(parentType))
4361      t = parent;
4362    else {
4363      t = parent.predicate("fhir:"+parentType+'.'+name);
4364    }
4365    composeBackboneElement(t, "evidence", name, element, index);
4366    for (int i = 0; i < element.getCode().size(); i++)
4367      composeCodeableConcept(t, "Condition", "code", element.getCode().get(i), i);
4368    for (int i = 0; i < element.getDetail().size(); i++)
4369      composeReference(t, "Condition", "detail", element.getDetail().get(i), i);
4370  }
4371
4372  protected void composeConsent(Complex parent, String parentType, String name, Consent element, int index) {
4373    if (element == null) 
4374      return;
4375    Complex t;
4376    if (Utilities.noString(parentType))
4377      t = parent;
4378    else {
4379      t = parent.predicate("fhir:"+parentType+'.'+name);
4380    }
4381    composeDomainResource(t, "Consent", name, element, index);
4382    for (int i = 0; i < element.getIdentifier().size(); i++)
4383      composeIdentifier(t, "Consent", "identifier", element.getIdentifier().get(i), i);
4384    if (element.hasStatusElement())
4385      composeEnum(t, "Consent", "status", element.getStatusElement(), -1);
4386    if (element.hasScope())
4387      composeCodeableConcept(t, "Consent", "scope", element.getScope(), -1);
4388    for (int i = 0; i < element.getCategory().size(); i++)
4389      composeCodeableConcept(t, "Consent", "category", element.getCategory().get(i), i);
4390    if (element.hasPatient())
4391      composeReference(t, "Consent", "patient", element.getPatient(), -1);
4392    if (element.hasDateTimeElement())
4393      composeDateTime(t, "Consent", "dateTime", element.getDateTimeElement(), -1);
4394    for (int i = 0; i < element.getPerformer().size(); i++)
4395      composeReference(t, "Consent", "performer", element.getPerformer().get(i), i);
4396    for (int i = 0; i < element.getOrganization().size(); i++)
4397      composeReference(t, "Consent", "organization", element.getOrganization().get(i), i);
4398    if (element.hasSource())
4399      composeType(t, "Consent", "source", element.getSource(), -1);
4400    for (int i = 0; i < element.getPolicy().size(); i++)
4401      composeConsentConsentPolicyComponent(t, "Consent", "policy", element.getPolicy().get(i), i);
4402    if (element.hasPolicyRule())
4403      composeCodeableConcept(t, "Consent", "policyRule", element.getPolicyRule(), -1);
4404    for (int i = 0; i < element.getVerification().size(); i++)
4405      composeConsentConsentVerificationComponent(t, "Consent", "verification", element.getVerification().get(i), i);
4406    if (element.hasProvision())
4407      composeConsentprovisionComponent(t, "Consent", "provision", element.getProvision(), -1);
4408  }
4409
4410  protected void composeConsentConsentPolicyComponent(Complex parent, String parentType, String name, Consent.ConsentPolicyComponent element, int index) {
4411    if (element == null) 
4412      return;
4413    Complex t;
4414    if (Utilities.noString(parentType))
4415      t = parent;
4416    else {
4417      t = parent.predicate("fhir:"+parentType+'.'+name);
4418    }
4419    composeBackboneElement(t, "policy", name, element, index);
4420    if (element.hasAuthorityElement())
4421      composeUri(t, "Consent", "authority", element.getAuthorityElement(), -1);
4422    if (element.hasUriElement())
4423      composeUri(t, "Consent", "uri", element.getUriElement(), -1);
4424  }
4425
4426  protected void composeConsentConsentVerificationComponent(Complex parent, String parentType, String name, Consent.ConsentVerificationComponent element, int index) {
4427    if (element == null) 
4428      return;
4429    Complex t;
4430    if (Utilities.noString(parentType))
4431      t = parent;
4432    else {
4433      t = parent.predicate("fhir:"+parentType+'.'+name);
4434    }
4435    composeBackboneElement(t, "verification", name, element, index);
4436    if (element.hasVerifiedElement())
4437      composeBoolean(t, "Consent", "verified", element.getVerifiedElement(), -1);
4438    if (element.hasVerifiedWith())
4439      composeReference(t, "Consent", "verifiedWith", element.getVerifiedWith(), -1);
4440    if (element.hasVerificationDateElement())
4441      composeDateTime(t, "Consent", "verificationDate", element.getVerificationDateElement(), -1);
4442  }
4443
4444  protected void composeConsentprovisionComponent(Complex parent, String parentType, String name, Consent.provisionComponent element, int index) {
4445    if (element == null) 
4446      return;
4447    Complex t;
4448    if (Utilities.noString(parentType))
4449      t = parent;
4450    else {
4451      t = parent.predicate("fhir:"+parentType+'.'+name);
4452    }
4453    composeBackboneElement(t, "provision", name, element, index);
4454    if (element.hasTypeElement())
4455      composeEnum(t, "Consent", "type", element.getTypeElement(), -1);
4456    if (element.hasPeriod())
4457      composePeriod(t, "Consent", "period", element.getPeriod(), -1);
4458    for (int i = 0; i < element.getActor().size(); i++)
4459      composeConsentprovisionActorComponent(t, "Consent", "actor", element.getActor().get(i), i);
4460    for (int i = 0; i < element.getAction().size(); i++)
4461      composeCodeableConcept(t, "Consent", "action", element.getAction().get(i), i);
4462    for (int i = 0; i < element.getSecurityLabel().size(); i++)
4463      composeCoding(t, "Consent", "securityLabel", element.getSecurityLabel().get(i), i);
4464    for (int i = 0; i < element.getPurpose().size(); i++)
4465      composeCoding(t, "Consent", "purpose", element.getPurpose().get(i), i);
4466    for (int i = 0; i < element.getClass_().size(); i++)
4467      composeCoding(t, "Consent", "class", element.getClass_().get(i), i);
4468    for (int i = 0; i < element.getCode().size(); i++)
4469      composeCodeableConcept(t, "Consent", "code", element.getCode().get(i), i);
4470    if (element.hasDataPeriod())
4471      composePeriod(t, "Consent", "dataPeriod", element.getDataPeriod(), -1);
4472    for (int i = 0; i < element.getData().size(); i++)
4473      composeConsentprovisionDataComponent(t, "Consent", "data", element.getData().get(i), i);
4474    for (int i = 0; i < element.getProvision().size(); i++)
4475      composeConsentprovisionComponent(t, "Consent", "provision", element.getProvision().get(i), i);
4476  }
4477
4478  protected void composeConsentprovisionActorComponent(Complex parent, String parentType, String name, Consent.provisionActorComponent element, int index) {
4479    if (element == null) 
4480      return;
4481    Complex t;
4482    if (Utilities.noString(parentType))
4483      t = parent;
4484    else {
4485      t = parent.predicate("fhir:"+parentType+'.'+name);
4486    }
4487    composeBackboneElement(t, "actor", name, element, index);
4488    if (element.hasRole())
4489      composeCodeableConcept(t, "Consent", "role", element.getRole(), -1);
4490    if (element.hasReference())
4491      composeReference(t, "Consent", "reference", element.getReference(), -1);
4492  }
4493
4494  protected void composeConsentprovisionDataComponent(Complex parent, String parentType, String name, Consent.provisionDataComponent element, int index) {
4495    if (element == null) 
4496      return;
4497    Complex t;
4498    if (Utilities.noString(parentType))
4499      t = parent;
4500    else {
4501      t = parent.predicate("fhir:"+parentType+'.'+name);
4502    }
4503    composeBackboneElement(t, "data", name, element, index);
4504    if (element.hasMeaningElement())
4505      composeEnum(t, "Consent", "meaning", element.getMeaningElement(), -1);
4506    if (element.hasReference())
4507      composeReference(t, "Consent", "reference", element.getReference(), -1);
4508  }
4509
4510  protected void composeContract(Complex parent, String parentType, String name, Contract element, int index) {
4511    if (element == null) 
4512      return;
4513    Complex t;
4514    if (Utilities.noString(parentType))
4515      t = parent;
4516    else {
4517      t = parent.predicate("fhir:"+parentType+'.'+name);
4518    }
4519    composeDomainResource(t, "Contract", name, element, index);
4520    for (int i = 0; i < element.getIdentifier().size(); i++)
4521      composeIdentifier(t, "Contract", "identifier", element.getIdentifier().get(i), i);
4522    if (element.hasStatusElement())
4523      composeEnum(t, "Contract", "status", element.getStatusElement(), -1);
4524    if (element.hasContentDerivative())
4525      composeCodeableConcept(t, "Contract", "contentDerivative", element.getContentDerivative(), -1);
4526    if (element.hasIssuedElement())
4527      composeDateTime(t, "Contract", "issued", element.getIssuedElement(), -1);
4528    if (element.hasApplies())
4529      composePeriod(t, "Contract", "applies", element.getApplies(), -1);
4530    for (int i = 0; i < element.getSubject().size(); i++)
4531      composeReference(t, "Contract", "subject", element.getSubject().get(i), i);
4532    for (int i = 0; i < element.getAuthority().size(); i++)
4533      composeReference(t, "Contract", "authority", element.getAuthority().get(i), i);
4534    for (int i = 0; i < element.getDomain().size(); i++)
4535      composeReference(t, "Contract", "domain", element.getDomain().get(i), i);
4536    if (element.hasType())
4537      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4538    for (int i = 0; i < element.getSubType().size(); i++)
4539      composeCodeableConcept(t, "Contract", "subType", element.getSubType().get(i), i);
4540    for (int i = 0; i < element.getTerm().size(); i++)
4541      composeContractTermComponent(t, "Contract", "term", element.getTerm().get(i), i);
4542    for (int i = 0; i < element.getSigner().size(); i++)
4543      composeContractSignatoryComponent(t, "Contract", "signer", element.getSigner().get(i), i);
4544    for (int i = 0; i < element.getFriendly().size(); i++)
4545      composeContractFriendlyLanguageComponent(t, "Contract", "friendly", element.getFriendly().get(i), i);
4546    for (int i = 0; i < element.getLegal().size(); i++)
4547      composeContractLegalLanguageComponent(t, "Contract", "legal", element.getLegal().get(i), i);
4548    if (element.hasRule())
4549      composeContractComputableLanguageComponent(t, "Contract", "rule", element.getRule(), -1);
4550    if (element.hasLegallyBinding())
4551      composeType(t, "Contract", "legallyBinding", element.getLegallyBinding(), -1);
4552  }
4553
4554  protected void composeContractTermComponent(Complex parent, String parentType, String name, Contract.TermComponent element, int index) {
4555    if (element == null) 
4556      return;
4557    Complex t;
4558    if (Utilities.noString(parentType))
4559      t = parent;
4560    else {
4561      t = parent.predicate("fhir:"+parentType+'.'+name);
4562    }
4563    composeBackboneElement(t, "term", name, element, index);
4564    if (element.hasIdentifier())
4565      composeIdentifier(t, "Contract", "identifier", element.getIdentifier(), -1);
4566    if (element.hasIssuedElement())
4567      composeDateTime(t, "Contract", "issued", element.getIssuedElement(), -1);
4568    if (element.hasApplies())
4569      composePeriod(t, "Contract", "applies", element.getApplies(), -1);
4570    if (element.hasType())
4571      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4572    if (element.hasSubType())
4573      composeCodeableConcept(t, "Contract", "subType", element.getSubType(), -1);
4574    if (element.hasOffer())
4575      composeContractContractOfferComponent(t, "Contract", "offer", element.getOffer(), -1);
4576    for (int i = 0; i < element.getAsset().size(); i++)
4577      composeContractContractAssetComponent(t, "Contract", "asset", element.getAsset().get(i), i);
4578    for (int i = 0; i < element.getAgent().size(); i++)
4579      composeContractAgentComponent(t, "Contract", "agent", element.getAgent().get(i), i);
4580    for (int i = 0; i < element.getAction().size(); i++)
4581      composeCodeableConcept(t, "Contract", "action", element.getAction().get(i), i);
4582    for (int i = 0; i < element.getActionReason().size(); i++)
4583      composeCodeableConcept(t, "Contract", "actionReason", element.getActionReason().get(i), i);
4584    for (int i = 0; i < element.getGroup().size(); i++)
4585      composeContractTermComponent(t, "Contract", "group", element.getGroup().get(i), i);
4586  }
4587
4588  protected void composeContractContractOfferComponent(Complex parent, String parentType, String name, Contract.ContractOfferComponent element, int index) {
4589    if (element == null) 
4590      return;
4591    Complex t;
4592    if (Utilities.noString(parentType))
4593      t = parent;
4594    else {
4595      t = parent.predicate("fhir:"+parentType+'.'+name);
4596    }
4597    composeBackboneElement(t, "offer", name, element, index);
4598    if (element.hasTopic())
4599      composeReference(t, "Contract", "topic", element.getTopic(), -1);
4600    if (element.hasType())
4601      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4602    if (element.hasDecision())
4603      composeCodeableConcept(t, "Contract", "decision", element.getDecision(), -1);
4604    if (element.hasTextElement())
4605      composeString(t, "Contract", "text", element.getTextElement(), -1);
4606    if (element.hasLinkIdElement())
4607      composeString(t, "Contract", "linkId", element.getLinkIdElement(), -1);
4608  }
4609
4610  protected void composeContractContractAssetComponent(Complex parent, String parentType, String name, Contract.ContractAssetComponent element, int index) {
4611    if (element == null) 
4612      return;
4613    Complex t;
4614    if (Utilities.noString(parentType))
4615      t = parent;
4616    else {
4617      t = parent.predicate("fhir:"+parentType+'.'+name);
4618    }
4619    composeBackboneElement(t, "asset", name, element, index);
4620    if (element.hasClass_())
4621      composeCoding(t, "Contract", "class", element.getClass_(), -1);
4622    if (element.hasCode())
4623      composeCoding(t, "Contract", "code", element.getCode(), -1);
4624    if (element.hasPeriod())
4625      composePeriod(t, "Contract", "period", element.getPeriod(), -1);
4626    if (element.hasDataPeriod())
4627      composePeriod(t, "Contract", "dataPeriod", element.getDataPeriod(), -1);
4628    for (int i = 0; i < element.getData().size(); i++)
4629      composeContractAssetDataComponent(t, "Contract", "data", element.getData().get(i), i);
4630    for (int i = 0; i < element.getValuedItem().size(); i++)
4631      composeContractValuedItemComponent(t, "Contract", "valuedItem", element.getValuedItem().get(i), i);
4632    for (int i = 0; i < element.getSecurityLabel().size(); i++)
4633      composeCoding(t, "Contract", "securityLabel", element.getSecurityLabel().get(i), i);
4634  }
4635
4636  protected void composeContractAssetDataComponent(Complex parent, String parentType, String name, Contract.AssetDataComponent element, int index) {
4637    if (element == null) 
4638      return;
4639    Complex t;
4640    if (Utilities.noString(parentType))
4641      t = parent;
4642    else {
4643      t = parent.predicate("fhir:"+parentType+'.'+name);
4644    }
4645    composeBackboneElement(t, "data", name, element, index);
4646    if (element.hasMeaningElement())
4647      composeEnum(t, "Contract", "meaning", element.getMeaningElement(), -1);
4648    if (element.hasReference())
4649      composeReference(t, "Contract", "reference", element.getReference(), -1);
4650  }
4651
4652  protected void composeContractValuedItemComponent(Complex parent, String parentType, String name, Contract.ValuedItemComponent element, int index) {
4653    if (element == null) 
4654      return;
4655    Complex t;
4656    if (Utilities.noString(parentType))
4657      t = parent;
4658    else {
4659      t = parent.predicate("fhir:"+parentType+'.'+name);
4660    }
4661    composeBackboneElement(t, "valuedItem", name, element, index);
4662    if (element.hasEntity())
4663      composeType(t, "Contract", "entity", element.getEntity(), -1);
4664    if (element.hasIdentifier())
4665      composeIdentifier(t, "Contract", "identifier", element.getIdentifier(), -1);
4666    if (element.hasEffectiveTimeElement())
4667      composeDateTime(t, "Contract", "effectiveTime", element.getEffectiveTimeElement(), -1);
4668    if (element.hasQuantity())
4669      composeQuantity(t, "Contract", "quantity", element.getQuantity(), -1);
4670    if (element.hasUnitPrice())
4671      composeMoney(t, "Contract", "unitPrice", element.getUnitPrice(), -1);
4672    if (element.hasFactorElement())
4673      composeDecimal(t, "Contract", "factor", element.getFactorElement(), -1);
4674    if (element.hasPointsElement())
4675      composeDecimal(t, "Contract", "points", element.getPointsElement(), -1);
4676    if (element.hasNet())
4677      composeMoney(t, "Contract", "net", element.getNet(), -1);
4678  }
4679
4680  protected void composeContractAgentComponent(Complex parent, String parentType, String name, Contract.AgentComponent element, int index) {
4681    if (element == null) 
4682      return;
4683    Complex t;
4684    if (Utilities.noString(parentType))
4685      t = parent;
4686    else {
4687      t = parent.predicate("fhir:"+parentType+'.'+name);
4688    }
4689    composeBackboneElement(t, "agent", name, element, index);
4690    if (element.hasActor())
4691      composeReference(t, "Contract", "actor", element.getActor(), -1);
4692    for (int i = 0; i < element.getRole().size(); i++)
4693      composeCodeableConcept(t, "Contract", "role", element.getRole().get(i), i);
4694  }
4695
4696  protected void composeContractSignatoryComponent(Complex parent, String parentType, String name, Contract.SignatoryComponent element, int index) {
4697    if (element == null) 
4698      return;
4699    Complex t;
4700    if (Utilities.noString(parentType))
4701      t = parent;
4702    else {
4703      t = parent.predicate("fhir:"+parentType+'.'+name);
4704    }
4705    composeBackboneElement(t, "signer", name, element, index);
4706    if (element.hasType())
4707      composeCoding(t, "Contract", "type", element.getType(), -1);
4708    if (element.hasParty())
4709      composeReference(t, "Contract", "party", element.getParty(), -1);
4710    for (int i = 0; i < element.getSignature().size(); i++)
4711      composeSignature(t, "Contract", "signature", element.getSignature().get(i), i);
4712  }
4713
4714  protected void composeContractFriendlyLanguageComponent(Complex parent, String parentType, String name, Contract.FriendlyLanguageComponent element, int index) {
4715    if (element == null) 
4716      return;
4717    Complex t;
4718    if (Utilities.noString(parentType))
4719      t = parent;
4720    else {
4721      t = parent.predicate("fhir:"+parentType+'.'+name);
4722    }
4723    composeBackboneElement(t, "friendly", name, element, index);
4724    if (element.hasContent())
4725      composeType(t, "Contract", "content", element.getContent(), -1);
4726  }
4727
4728  protected void composeContractLegalLanguageComponent(Complex parent, String parentType, String name, Contract.LegalLanguageComponent element, int index) {
4729    if (element == null) 
4730      return;
4731    Complex t;
4732    if (Utilities.noString(parentType))
4733      t = parent;
4734    else {
4735      t = parent.predicate("fhir:"+parentType+'.'+name);
4736    }
4737    composeBackboneElement(t, "legal", name, element, index);
4738    if (element.hasContent())
4739      composeType(t, "Contract", "content", element.getContent(), -1);
4740  }
4741
4742  protected void composeContractComputableLanguageComponent(Complex parent, String parentType, String name, Contract.ComputableLanguageComponent element, int index) {
4743    if (element == null) 
4744      return;
4745    Complex t;
4746    if (Utilities.noString(parentType))
4747      t = parent;
4748    else {
4749      t = parent.predicate("fhir:"+parentType+'.'+name);
4750    }
4751    composeBackboneElement(t, "rule", name, element, index);
4752    if (element.hasContent())
4753      composeType(t, "Contract", "content", element.getContent(), -1);
4754  }
4755
4756  protected void composeCoverage(Complex parent, String parentType, String name, Coverage element, int index) {
4757    if (element == null) 
4758      return;
4759    Complex t;
4760    if (Utilities.noString(parentType))
4761      t = parent;
4762    else {
4763      t = parent.predicate("fhir:"+parentType+'.'+name);
4764    }
4765    composeDomainResource(t, "Coverage", name, element, index);
4766    for (int i = 0; i < element.getIdentifier().size(); i++)
4767      composeIdentifier(t, "Coverage", "identifier", element.getIdentifier().get(i), i);
4768    if (element.hasStatusElement())
4769      composeEnum(t, "Coverage", "status", element.getStatusElement(), -1);
4770    if (element.hasType())
4771      composeCodeableConcept(t, "Coverage", "type", element.getType(), -1);
4772    if (element.hasPolicyHolder())
4773      composeReference(t, "Coverage", "policyHolder", element.getPolicyHolder(), -1);
4774    if (element.hasSubscriber())
4775      composeReference(t, "Coverage", "subscriber", element.getSubscriber(), -1);
4776    if (element.hasSubscriberIdElement())
4777      composeString(t, "Coverage", "subscriberId", element.getSubscriberIdElement(), -1);
4778    if (element.hasBeneficiary())
4779      composeReference(t, "Coverage", "beneficiary", element.getBeneficiary(), -1);
4780    if (element.hasDependentElement())
4781      composeString(t, "Coverage", "dependent", element.getDependentElement(), -1);
4782    if (element.hasRelationship())
4783      composeCodeableConcept(t, "Coverage", "relationship", element.getRelationship(), -1);
4784    if (element.hasPeriod())
4785      composePeriod(t, "Coverage", "period", element.getPeriod(), -1);
4786    for (int i = 0; i < element.getPayor().size(); i++)
4787      composeReference(t, "Coverage", "payor", element.getPayor().get(i), i);
4788    for (int i = 0; i < element.getClass_().size(); i++)
4789      composeCoverageClassComponent(t, "Coverage", "class", element.getClass_().get(i), i);
4790    if (element.hasOrderElement())
4791      composePositiveInt(t, "Coverage", "order", element.getOrderElement(), -1);
4792    if (element.hasNetworkElement())
4793      composeString(t, "Coverage", "network", element.getNetworkElement(), -1);
4794    for (int i = 0; i < element.getCopay().size(); i++)
4795      composeCoverageCoPayComponent(t, "Coverage", "copay", element.getCopay().get(i), i);
4796    for (int i = 0; i < element.getContract().size(); i++)
4797      composeReference(t, "Coverage", "contract", element.getContract().get(i), i);
4798  }
4799
4800  protected void composeCoverageClassComponent(Complex parent, String parentType, String name, Coverage.ClassComponent element, int index) {
4801    if (element == null) 
4802      return;
4803    Complex t;
4804    if (Utilities.noString(parentType))
4805      t = parent;
4806    else {
4807      t = parent.predicate("fhir:"+parentType+'.'+name);
4808    }
4809    composeBackboneElement(t, "class", name, element, index);
4810    if (element.hasType())
4811      composeCoding(t, "Coverage", "type", element.getType(), -1);
4812    if (element.hasValueElement())
4813      composeString(t, "Coverage", "value", element.getValueElement(), -1);
4814    if (element.hasNameElement())
4815      composeString(t, "Coverage", "name", element.getNameElement(), -1);
4816  }
4817
4818  protected void composeCoverageCoPayComponent(Complex parent, String parentType, String name, Coverage.CoPayComponent element, int index) {
4819    if (element == null) 
4820      return;
4821    Complex t;
4822    if (Utilities.noString(parentType))
4823      t = parent;
4824    else {
4825      t = parent.predicate("fhir:"+parentType+'.'+name);
4826    }
4827    composeBackboneElement(t, "copay", name, element, index);
4828    if (element.hasType())
4829      composeCoding(t, "Coverage", "type", element.getType(), -1);
4830    if (element.hasValue())
4831      composeQuantity(t, "Coverage", "value", element.getValue(), -1);
4832  }
4833
4834  protected void composeDetectedIssue(Complex parent, String parentType, String name, DetectedIssue element, int index) {
4835    if (element == null) 
4836      return;
4837    Complex t;
4838    if (Utilities.noString(parentType))
4839      t = parent;
4840    else {
4841      t = parent.predicate("fhir:"+parentType+'.'+name);
4842    }
4843    composeDomainResource(t, "DetectedIssue", name, element, index);
4844    for (int i = 0; i < element.getIdentifier().size(); i++)
4845      composeIdentifier(t, "DetectedIssue", "identifier", element.getIdentifier().get(i), i);
4846    if (element.hasStatusElement())
4847      composeEnum(t, "DetectedIssue", "status", element.getStatusElement(), -1);
4848    if (element.hasCategory())
4849      composeCodeableConcept(t, "DetectedIssue", "category", element.getCategory(), -1);
4850    if (element.hasSeverityElement())
4851      composeEnum(t, "DetectedIssue", "severity", element.getSeverityElement(), -1);
4852    if (element.hasPatient())
4853      composeReference(t, "DetectedIssue", "patient", element.getPatient(), -1);
4854    if (element.hasDateElement())
4855      composeDateTime(t, "DetectedIssue", "date", element.getDateElement(), -1);
4856    if (element.hasAuthor())
4857      composeReference(t, "DetectedIssue", "author", element.getAuthor(), -1);
4858    for (int i = 0; i < element.getImplicated().size(); i++)
4859      composeReference(t, "DetectedIssue", "implicated", element.getImplicated().get(i), i);
4860    if (element.hasDetailElement())
4861      composeString(t, "DetectedIssue", "detail", element.getDetailElement(), -1);
4862    if (element.hasReferenceElement())
4863      composeUri(t, "DetectedIssue", "reference", element.getReferenceElement(), -1);
4864    for (int i = 0; i < element.getMitigation().size(); i++)
4865      composeDetectedIssueDetectedIssueMitigationComponent(t, "DetectedIssue", "mitigation", element.getMitigation().get(i), i);
4866  }
4867
4868  protected void composeDetectedIssueDetectedIssueMitigationComponent(Complex parent, String parentType, String name, DetectedIssue.DetectedIssueMitigationComponent element, int index) {
4869    if (element == null) 
4870      return;
4871    Complex t;
4872    if (Utilities.noString(parentType))
4873      t = parent;
4874    else {
4875      t = parent.predicate("fhir:"+parentType+'.'+name);
4876    }
4877    composeBackboneElement(t, "mitigation", name, element, index);
4878    if (element.hasAction())
4879      composeCodeableConcept(t, "DetectedIssue", "action", element.getAction(), -1);
4880    if (element.hasDateElement())
4881      composeDateTime(t, "DetectedIssue", "date", element.getDateElement(), -1);
4882    if (element.hasAuthor())
4883      composeReference(t, "DetectedIssue", "author", element.getAuthor(), -1);
4884  }
4885
4886  protected void composeDevice(Complex parent, String parentType, String name, Device element, int index) {
4887    if (element == null) 
4888      return;
4889    Complex t;
4890    if (Utilities.noString(parentType))
4891      t = parent;
4892    else {
4893      t = parent.predicate("fhir:"+parentType+'.'+name);
4894    }
4895    composeDomainResource(t, "Device", name, element, index);
4896    for (int i = 0; i < element.getIdentifier().size(); i++)
4897      composeIdentifier(t, "Device", "identifier", element.getIdentifier().get(i), i);
4898    if (element.hasUdi())
4899      composeDeviceDeviceUdiComponent(t, "Device", "udi", element.getUdi(), -1);
4900    if (element.hasStatusElement())
4901      composeEnum(t, "Device", "status", element.getStatusElement(), -1);
4902    if (element.hasType())
4903      composeCodeableConcept(t, "Device", "type", element.getType(), -1);
4904    if (element.hasLotNumberElement())
4905      composeString(t, "Device", "lotNumber", element.getLotNumberElement(), -1);
4906    if (element.hasManufacturerElement())
4907      composeString(t, "Device", "manufacturer", element.getManufacturerElement(), -1);
4908    if (element.hasManufactureDateElement())
4909      composeDateTime(t, "Device", "manufactureDate", element.getManufactureDateElement(), -1);
4910    if (element.hasExpirationDateElement())
4911      composeDateTime(t, "Device", "expirationDate", element.getExpirationDateElement(), -1);
4912    if (element.hasModelElement())
4913      composeString(t, "Device", "model", element.getModelElement(), -1);
4914    if (element.hasVersionElement())
4915      composeString(t, "Device", "version", element.getVersionElement(), -1);
4916    if (element.hasPatient())
4917      composeReference(t, "Device", "patient", element.getPatient(), -1);
4918    if (element.hasOwner())
4919      composeReference(t, "Device", "owner", element.getOwner(), -1);
4920    for (int i = 0; i < element.getContact().size(); i++)
4921      composeContactPoint(t, "Device", "contact", element.getContact().get(i), i);
4922    if (element.hasLocation())
4923      composeReference(t, "Device", "location", element.getLocation(), -1);
4924    if (element.hasUrlElement())
4925      composeUri(t, "Device", "url", element.getUrlElement(), -1);
4926    for (int i = 0; i < element.getNote().size(); i++)
4927      composeAnnotation(t, "Device", "note", element.getNote().get(i), i);
4928    for (int i = 0; i < element.getSafety().size(); i++)
4929      composeCodeableConcept(t, "Device", "safety", element.getSafety().get(i), i);
4930  }
4931
4932  protected void composeDeviceDeviceUdiComponent(Complex parent, String parentType, String name, Device.DeviceUdiComponent element, int index) {
4933    if (element == null) 
4934      return;
4935    Complex t;
4936    if (Utilities.noString(parentType))
4937      t = parent;
4938    else {
4939      t = parent.predicate("fhir:"+parentType+'.'+name);
4940    }
4941    composeBackboneElement(t, "udi", name, element, index);
4942    if (element.hasDeviceIdentifierElement())
4943      composeString(t, "Device", "deviceIdentifier", element.getDeviceIdentifierElement(), -1);
4944    if (element.hasNameElement())
4945      composeString(t, "Device", "name", element.getNameElement(), -1);
4946    if (element.hasJurisdictionElement())
4947      composeUri(t, "Device", "jurisdiction", element.getJurisdictionElement(), -1);
4948    if (element.hasCarrierHRFElement())
4949      composeString(t, "Device", "carrierHRF", element.getCarrierHRFElement(), -1);
4950    if (element.hasCarrierAIDCElement())
4951      composeBase64Binary(t, "Device", "carrierAIDC", element.getCarrierAIDCElement(), -1);
4952    if (element.hasIssuerElement())
4953      composeUri(t, "Device", "issuer", element.getIssuerElement(), -1);
4954    if (element.hasEntryTypeElement())
4955      composeEnum(t, "Device", "entryType", element.getEntryTypeElement(), -1);
4956  }
4957
4958  protected void composeDeviceComponent(Complex parent, String parentType, String name, DeviceComponent element, int index) {
4959    if (element == null) 
4960      return;
4961    Complex t;
4962    if (Utilities.noString(parentType))
4963      t = parent;
4964    else {
4965      t = parent.predicate("fhir:"+parentType+'.'+name);
4966    }
4967    composeDomainResource(t, "DeviceComponent", name, element, index);
4968    for (int i = 0; i < element.getIdentifier().size(); i++)
4969      composeIdentifier(t, "DeviceComponent", "identifier", element.getIdentifier().get(i), i);
4970    if (element.hasType())
4971      composeCodeableConcept(t, "DeviceComponent", "type", element.getType(), -1);
4972    if (element.hasLastSystemChangeElement())
4973      composeInstant(t, "DeviceComponent", "lastSystemChange", element.getLastSystemChangeElement(), -1);
4974    if (element.hasSource())
4975      composeReference(t, "DeviceComponent", "source", element.getSource(), -1);
4976    if (element.hasParent())
4977      composeReference(t, "DeviceComponent", "parent", element.getParent(), -1);
4978    for (int i = 0; i < element.getOperationalStatus().size(); i++)
4979      composeCodeableConcept(t, "DeviceComponent", "operationalStatus", element.getOperationalStatus().get(i), i);
4980    if (element.hasParameterGroup())
4981      composeCodeableConcept(t, "DeviceComponent", "parameterGroup", element.getParameterGroup(), -1);
4982    if (element.hasMeasurementPrincipleElement())
4983      composeEnum(t, "DeviceComponent", "measurementPrinciple", element.getMeasurementPrincipleElement(), -1);
4984    for (int i = 0; i < element.getProductionSpecification().size(); i++)
4985      composeDeviceComponentDeviceComponentProductionSpecificationComponent(t, "DeviceComponent", "productionSpecification", element.getProductionSpecification().get(i), i);
4986    if (element.hasLanguageCode())
4987      composeCodeableConcept(t, "DeviceComponent", "languageCode", element.getLanguageCode(), -1);
4988    for (int i = 0; i < element.getProperty().size(); i++)
4989      composeDeviceComponentDeviceComponentPropertyComponent(t, "DeviceComponent", "property", element.getProperty().get(i), i);
4990  }
4991
4992  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponent(Complex parent, String parentType, String name, DeviceComponent.DeviceComponentProductionSpecificationComponent element, int index) {
4993    if (element == null) 
4994      return;
4995    Complex t;
4996    if (Utilities.noString(parentType))
4997      t = parent;
4998    else {
4999      t = parent.predicate("fhir:"+parentType+'.'+name);
5000    }
5001    composeBackboneElement(t, "productionSpecification", name, element, index);
5002    if (element.hasSpecType())
5003      composeCodeableConcept(t, "DeviceComponent", "specType", element.getSpecType(), -1);
5004    if (element.hasComponentId())
5005      composeIdentifier(t, "DeviceComponent", "componentId", element.getComponentId(), -1);
5006    if (element.hasProductionSpecElement())
5007      composeString(t, "DeviceComponent", "productionSpec", element.getProductionSpecElement(), -1);
5008  }
5009
5010  protected void composeDeviceComponentDeviceComponentPropertyComponent(Complex parent, String parentType, String name, DeviceComponent.DeviceComponentPropertyComponent element, int index) {
5011    if (element == null) 
5012      return;
5013    Complex t;
5014    if (Utilities.noString(parentType))
5015      t = parent;
5016    else {
5017      t = parent.predicate("fhir:"+parentType+'.'+name);
5018    }
5019    composeBackboneElement(t, "property", name, element, index);
5020    if (element.hasType())
5021      composeCodeableConcept(t, "DeviceComponent", "type", element.getType(), -1);
5022    for (int i = 0; i < element.getValueQuantity().size(); i++)
5023      composeQuantity(t, "DeviceComponent", "valueQuantity", element.getValueQuantity().get(i), i);
5024    for (int i = 0; i < element.getValueCode().size(); i++)
5025      composeCodeableConcept(t, "DeviceComponent", "valueCode", element.getValueCode().get(i), i);
5026  }
5027
5028  protected void composeDeviceMetric(Complex parent, String parentType, String name, DeviceMetric element, int index) {
5029    if (element == null) 
5030      return;
5031    Complex t;
5032    if (Utilities.noString(parentType))
5033      t = parent;
5034    else {
5035      t = parent.predicate("fhir:"+parentType+'.'+name);
5036    }
5037    composeDomainResource(t, "DeviceMetric", name, element, index);
5038    for (int i = 0; i < element.getIdentifier().size(); i++)
5039      composeIdentifier(t, "DeviceMetric", "identifier", element.getIdentifier().get(i), i);
5040    if (element.hasType())
5041      composeCodeableConcept(t, "DeviceMetric", "type", element.getType(), -1);
5042    if (element.hasUnit())
5043      composeCodeableConcept(t, "DeviceMetric", "unit", element.getUnit(), -1);
5044    if (element.hasSource())
5045      composeReference(t, "DeviceMetric", "source", element.getSource(), -1);
5046    if (element.hasParent())
5047      composeReference(t, "DeviceMetric", "parent", element.getParent(), -1);
5048    if (element.hasOperationalStatusElement())
5049      composeEnum(t, "DeviceMetric", "operationalStatus", element.getOperationalStatusElement(), -1);
5050    if (element.hasColorElement())
5051      composeEnum(t, "DeviceMetric", "color", element.getColorElement(), -1);
5052    if (element.hasCategoryElement())
5053      composeEnum(t, "DeviceMetric", "category", element.getCategoryElement(), -1);
5054    if (element.hasMeasurementPeriod())
5055      composeTiming(t, "DeviceMetric", "measurementPeriod", element.getMeasurementPeriod(), -1);
5056    for (int i = 0; i < element.getCalibration().size(); i++)
5057      composeDeviceMetricDeviceMetricCalibrationComponent(t, "DeviceMetric", "calibration", element.getCalibration().get(i), i);
5058  }
5059
5060  protected void composeDeviceMetricDeviceMetricCalibrationComponent(Complex parent, String parentType, String name, DeviceMetric.DeviceMetricCalibrationComponent element, int index) {
5061    if (element == null) 
5062      return;
5063    Complex t;
5064    if (Utilities.noString(parentType))
5065      t = parent;
5066    else {
5067      t = parent.predicate("fhir:"+parentType+'.'+name);
5068    }
5069    composeBackboneElement(t, "calibration", name, element, index);
5070    if (element.hasTypeElement())
5071      composeEnum(t, "DeviceMetric", "type", element.getTypeElement(), -1);
5072    if (element.hasStateElement())
5073      composeEnum(t, "DeviceMetric", "state", element.getStateElement(), -1);
5074    if (element.hasTimeElement())
5075      composeInstant(t, "DeviceMetric", "time", element.getTimeElement(), -1);
5076  }
5077
5078  protected void composeDeviceRequest(Complex parent, String parentType, String name, DeviceRequest element, int index) {
5079    if (element == null) 
5080      return;
5081    Complex t;
5082    if (Utilities.noString(parentType))
5083      t = parent;
5084    else {
5085      t = parent.predicate("fhir:"+parentType+'.'+name);
5086    }
5087    composeDomainResource(t, "DeviceRequest", name, element, index);
5088    for (int i = 0; i < element.getIdentifier().size(); i++)
5089      composeIdentifier(t, "DeviceRequest", "identifier", element.getIdentifier().get(i), i);
5090    for (int i = 0; i < element.getInstantiates().size(); i++)
5091      composeUri(t, "DeviceRequest", "instantiates", element.getInstantiates().get(i), i);
5092    for (int i = 0; i < element.getBasedOn().size(); i++)
5093      composeReference(t, "DeviceRequest", "basedOn", element.getBasedOn().get(i), i);
5094    for (int i = 0; i < element.getPriorRequest().size(); i++)
5095      composeReference(t, "DeviceRequest", "priorRequest", element.getPriorRequest().get(i), i);
5096    if (element.hasGroupIdentifier())
5097      composeIdentifier(t, "DeviceRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
5098    if (element.hasStatusElement())
5099      composeEnum(t, "DeviceRequest", "status", element.getStatusElement(), -1);
5100    if (element.hasIntent())
5101      composeCodeableConcept(t, "DeviceRequest", "intent", element.getIntent(), -1);
5102    if (element.hasPriorityElement())
5103      composeEnum(t, "DeviceRequest", "priority", element.getPriorityElement(), -1);
5104    if (element.hasCode())
5105      composeType(t, "DeviceRequest", "code", element.getCode(), -1);
5106    for (int i = 0; i < element.getParameter().size(); i++)
5107      composeDeviceRequestDeviceRequestParameterComponent(t, "DeviceRequest", "parameter", element.getParameter().get(i), i);
5108    if (element.hasSubject())
5109      composeReference(t, "DeviceRequest", "subject", element.getSubject(), -1);
5110    if (element.hasContext())
5111      composeReference(t, "DeviceRequest", "context", element.getContext(), -1);
5112    if (element.hasOccurrence())
5113      composeType(t, "DeviceRequest", "occurrence", element.getOccurrence(), -1);
5114    if (element.hasAuthoredOnElement())
5115      composeDateTime(t, "DeviceRequest", "authoredOn", element.getAuthoredOnElement(), -1);
5116    if (element.hasRequester())
5117      composeReference(t, "DeviceRequest", "requester", element.getRequester(), -1);
5118    if (element.hasPerformerType())
5119      composeCodeableConcept(t, "DeviceRequest", "performerType", element.getPerformerType(), -1);
5120    if (element.hasPerformer())
5121      composeReference(t, "DeviceRequest", "performer", element.getPerformer(), -1);
5122    for (int i = 0; i < element.getReasonCode().size(); i++)
5123      composeCodeableConcept(t, "DeviceRequest", "reasonCode", element.getReasonCode().get(i), i);
5124    for (int i = 0; i < element.getReasonReference().size(); i++)
5125      composeReference(t, "DeviceRequest", "reasonReference", element.getReasonReference().get(i), i);
5126    for (int i = 0; i < element.getInsurance().size(); i++)
5127      composeReference(t, "DeviceRequest", "insurance", element.getInsurance().get(i), i);
5128    for (int i = 0; i < element.getSupportingInfo().size(); i++)
5129      composeReference(t, "DeviceRequest", "supportingInfo", element.getSupportingInfo().get(i), i);
5130    for (int i = 0; i < element.getNote().size(); i++)
5131      composeAnnotation(t, "DeviceRequest", "note", element.getNote().get(i), i);
5132    for (int i = 0; i < element.getRelevantHistory().size(); i++)
5133      composeReference(t, "DeviceRequest", "relevantHistory", element.getRelevantHistory().get(i), i);
5134  }
5135
5136  protected void composeDeviceRequestDeviceRequestParameterComponent(Complex parent, String parentType, String name, DeviceRequest.DeviceRequestParameterComponent element, int index) {
5137    if (element == null) 
5138      return;
5139    Complex t;
5140    if (Utilities.noString(parentType))
5141      t = parent;
5142    else {
5143      t = parent.predicate("fhir:"+parentType+'.'+name);
5144    }
5145    composeBackboneElement(t, "parameter", name, element, index);
5146    if (element.hasCode())
5147      composeCodeableConcept(t, "DeviceRequest", "code", element.getCode(), -1);
5148    if (element.hasValue())
5149      composeType(t, "DeviceRequest", "value", element.getValue(), -1);
5150  }
5151
5152  protected void composeDeviceUseStatement(Complex parent, String parentType, String name, DeviceUseStatement element, int index) {
5153    if (element == null) 
5154      return;
5155    Complex t;
5156    if (Utilities.noString(parentType))
5157      t = parent;
5158    else {
5159      t = parent.predicate("fhir:"+parentType+'.'+name);
5160    }
5161    composeDomainResource(t, "DeviceUseStatement", name, element, index);
5162    for (int i = 0; i < element.getIdentifier().size(); i++)
5163      composeIdentifier(t, "DeviceUseStatement", "identifier", element.getIdentifier().get(i), i);
5164    for (int i = 0; i < element.getBasedOn().size(); i++)
5165      composeReference(t, "DeviceUseStatement", "basedOn", element.getBasedOn().get(i), i);
5166    if (element.hasStatusElement())
5167      composeEnum(t, "DeviceUseStatement", "status", element.getStatusElement(), -1);
5168    if (element.hasSubject())
5169      composeReference(t, "DeviceUseStatement", "subject", element.getSubject(), -1);
5170    for (int i = 0; i < element.getDerivedFrom().size(); i++)
5171      composeReference(t, "DeviceUseStatement", "derivedFrom", element.getDerivedFrom().get(i), i);
5172    if (element.hasTiming())
5173      composeType(t, "DeviceUseStatement", "timing", element.getTiming(), -1);
5174    if (element.hasRecordedOnElement())
5175      composeDateTime(t, "DeviceUseStatement", "recordedOn", element.getRecordedOnElement(), -1);
5176    if (element.hasSource())
5177      composeReference(t, "DeviceUseStatement", "source", element.getSource(), -1);
5178    if (element.hasDevice())
5179      composeReference(t, "DeviceUseStatement", "device", element.getDevice(), -1);
5180    for (int i = 0; i < element.getReasonCode().size(); i++)
5181      composeCodeableConcept(t, "DeviceUseStatement", "reasonCode", element.getReasonCode().get(i), i);
5182    for (int i = 0; i < element.getReasonReference().size(); i++)
5183      composeReference(t, "DeviceUseStatement", "reasonReference", element.getReasonReference().get(i), i);
5184    if (element.hasBodySite())
5185      composeCodeableConcept(t, "DeviceUseStatement", "bodySite", element.getBodySite(), -1);
5186    for (int i = 0; i < element.getNote().size(); i++)
5187      composeAnnotation(t, "DeviceUseStatement", "note", element.getNote().get(i), i);
5188  }
5189
5190  protected void composeDiagnosticReport(Complex parent, String parentType, String name, DiagnosticReport element, int index) {
5191    if (element == null) 
5192      return;
5193    Complex t;
5194    if (Utilities.noString(parentType))
5195      t = parent;
5196    else {
5197      t = parent.predicate("fhir:"+parentType+'.'+name);
5198    }
5199    composeDomainResource(t, "DiagnosticReport", name, element, index);
5200    for (int i = 0; i < element.getIdentifier().size(); i++)
5201      composeIdentifier(t, "DiagnosticReport", "identifier", element.getIdentifier().get(i), i);
5202    for (int i = 0; i < element.getBasedOn().size(); i++)
5203      composeReference(t, "DiagnosticReport", "basedOn", element.getBasedOn().get(i), i);
5204    if (element.hasStatusElement())
5205      composeEnum(t, "DiagnosticReport", "status", element.getStatusElement(), -1);
5206    if (element.hasCategory())
5207      composeCodeableConcept(t, "DiagnosticReport", "category", element.getCategory(), -1);
5208    if (element.hasCode())
5209      composeCodeableConcept(t, "DiagnosticReport", "code", element.getCode(), -1);
5210    if (element.hasSubject())
5211      composeReference(t, "DiagnosticReport", "subject", element.getSubject(), -1);
5212    if (element.hasContext())
5213      composeReference(t, "DiagnosticReport", "context", element.getContext(), -1);
5214    if (element.hasEffective())
5215      composeType(t, "DiagnosticReport", "effective", element.getEffective(), -1);
5216    if (element.hasIssuedElement())
5217      composeInstant(t, "DiagnosticReport", "issued", element.getIssuedElement(), -1);
5218    for (int i = 0; i < element.getPerformer().size(); i++)
5219      composeReference(t, "DiagnosticReport", "performer", element.getPerformer().get(i), i);
5220    for (int i = 0; i < element.getResultsInterpreter().size(); i++)
5221      composeReference(t, "DiagnosticReport", "resultsInterpreter", element.getResultsInterpreter().get(i), i);
5222    for (int i = 0; i < element.getSpecimen().size(); i++)
5223      composeReference(t, "DiagnosticReport", "specimen", element.getSpecimen().get(i), i);
5224    for (int i = 0; i < element.getResult().size(); i++)
5225      composeReference(t, "DiagnosticReport", "result", element.getResult().get(i), i);
5226    for (int i = 0; i < element.getImagingStudy().size(); i++)
5227      composeReference(t, "DiagnosticReport", "imagingStudy", element.getImagingStudy().get(i), i);
5228    for (int i = 0; i < element.getMedia().size(); i++)
5229      composeDiagnosticReportDiagnosticReportMediaComponent(t, "DiagnosticReport", "media", element.getMedia().get(i), i);
5230    if (element.hasConclusionElement())
5231      composeString(t, "DiagnosticReport", "conclusion", element.getConclusionElement(), -1);
5232    for (int i = 0; i < element.getCodedDiagnosis().size(); i++)
5233      composeCodeableConcept(t, "DiagnosticReport", "codedDiagnosis", element.getCodedDiagnosis().get(i), i);
5234    for (int i = 0; i < element.getPresentedForm().size(); i++)
5235      composeAttachment(t, "DiagnosticReport", "presentedForm", element.getPresentedForm().get(i), i);
5236  }
5237
5238  protected void composeDiagnosticReportDiagnosticReportMediaComponent(Complex parent, String parentType, String name, DiagnosticReport.DiagnosticReportMediaComponent element, int index) {
5239    if (element == null) 
5240      return;
5241    Complex t;
5242    if (Utilities.noString(parentType))
5243      t = parent;
5244    else {
5245      t = parent.predicate("fhir:"+parentType+'.'+name);
5246    }
5247    composeBackboneElement(t, "media", name, element, index);
5248    if (element.hasCommentElement())
5249      composeString(t, "DiagnosticReport", "comment", element.getCommentElement(), -1);
5250    if (element.hasLink())
5251      composeReference(t, "DiagnosticReport", "link", element.getLink(), -1);
5252  }
5253
5254  protected void composeDocumentManifest(Complex parent, String parentType, String name, DocumentManifest element, int index) {
5255    if (element == null) 
5256      return;
5257    Complex t;
5258    if (Utilities.noString(parentType))
5259      t = parent;
5260    else {
5261      t = parent.predicate("fhir:"+parentType+'.'+name);
5262    }
5263    composeDomainResource(t, "DocumentManifest", name, element, index);
5264    if (element.hasMasterIdentifier())
5265      composeIdentifier(t, "DocumentManifest", "masterIdentifier", element.getMasterIdentifier(), -1);
5266    for (int i = 0; i < element.getIdentifier().size(); i++)
5267      composeIdentifier(t, "DocumentManifest", "identifier", element.getIdentifier().get(i), i);
5268    if (element.hasStatusElement())
5269      composeEnum(t, "DocumentManifest", "status", element.getStatusElement(), -1);
5270    if (element.hasType())
5271      composeCodeableConcept(t, "DocumentManifest", "type", element.getType(), -1);
5272    if (element.hasSubject())
5273      composeReference(t, "DocumentManifest", "subject", element.getSubject(), -1);
5274    if (element.hasCreatedElement())
5275      composeDateTime(t, "DocumentManifest", "created", element.getCreatedElement(), -1);
5276    for (int i = 0; i < element.getAgent().size(); i++)
5277      composeDocumentManifestDocumentManifestAgentComponent(t, "DocumentManifest", "agent", element.getAgent().get(i), i);
5278    for (int i = 0; i < element.getRecipient().size(); i++)
5279      composeReference(t, "DocumentManifest", "recipient", element.getRecipient().get(i), i);
5280    if (element.hasSourceElement())
5281      composeUri(t, "DocumentManifest", "source", element.getSourceElement(), -1);
5282    if (element.hasDescriptionElement())
5283      composeString(t, "DocumentManifest", "description", element.getDescriptionElement(), -1);
5284    for (int i = 0; i < element.getContent().size(); i++)
5285      composeReference(t, "DocumentManifest", "content", element.getContent().get(i), i);
5286    for (int i = 0; i < element.getRelated().size(); i++)
5287      composeDocumentManifestDocumentManifestRelatedComponent(t, "DocumentManifest", "related", element.getRelated().get(i), i);
5288  }
5289
5290  protected void composeDocumentManifestDocumentManifestAgentComponent(Complex parent, String parentType, String name, DocumentManifest.DocumentManifestAgentComponent element, int index) {
5291    if (element == null) 
5292      return;
5293    Complex t;
5294    if (Utilities.noString(parentType))
5295      t = parent;
5296    else {
5297      t = parent.predicate("fhir:"+parentType+'.'+name);
5298    }
5299    composeBackboneElement(t, "agent", name, element, index);
5300    if (element.hasType())
5301      composeCodeableConcept(t, "DocumentManifest", "type", element.getType(), -1);
5302    if (element.hasWho())
5303      composeReference(t, "DocumentManifest", "who", element.getWho(), -1);
5304  }
5305
5306  protected void composeDocumentManifestDocumentManifestRelatedComponent(Complex parent, String parentType, String name, DocumentManifest.DocumentManifestRelatedComponent element, int index) {
5307    if (element == null) 
5308      return;
5309    Complex t;
5310    if (Utilities.noString(parentType))
5311      t = parent;
5312    else {
5313      t = parent.predicate("fhir:"+parentType+'.'+name);
5314    }
5315    composeBackboneElement(t, "related", name, element, index);
5316    if (element.hasIdentifier())
5317      composeIdentifier(t, "DocumentManifest", "identifier", element.getIdentifier(), -1);
5318    if (element.hasRef())
5319      composeReference(t, "DocumentManifest", "ref", element.getRef(), -1);
5320  }
5321
5322  protected void composeDocumentReference(Complex parent, String parentType, String name, DocumentReference element, int index) {
5323    if (element == null) 
5324      return;
5325    Complex t;
5326    if (Utilities.noString(parentType))
5327      t = parent;
5328    else {
5329      t = parent.predicate("fhir:"+parentType+'.'+name);
5330    }
5331    composeDomainResource(t, "DocumentReference", name, element, index);
5332    if (element.hasMasterIdentifier())
5333      composeIdentifier(t, "DocumentReference", "masterIdentifier", element.getMasterIdentifier(), -1);
5334    for (int i = 0; i < element.getIdentifier().size(); i++)
5335      composeIdentifier(t, "DocumentReference", "identifier", element.getIdentifier().get(i), i);
5336    if (element.hasStatusElement())
5337      composeEnum(t, "DocumentReference", "status", element.getStatusElement(), -1);
5338    if (element.hasDocStatusElement())
5339      composeEnum(t, "DocumentReference", "docStatus", element.getDocStatusElement(), -1);
5340    if (element.hasType())
5341      composeCodeableConcept(t, "DocumentReference", "type", element.getType(), -1);
5342    if (element.hasClass_())
5343      composeCodeableConcept(t, "DocumentReference", "class", element.getClass_(), -1);
5344    if (element.hasSubject())
5345      composeReference(t, "DocumentReference", "subject", element.getSubject(), -1);
5346    if (element.hasCreatedElement())
5347      composeDateTime(t, "DocumentReference", "created", element.getCreatedElement(), -1);
5348    if (element.hasDateElement())
5349      composeInstant(t, "DocumentReference", "date", element.getDateElement(), -1);
5350    for (int i = 0; i < element.getAgent().size(); i++)
5351      composeDocumentReferenceDocumentReferenceAgentComponent(t, "DocumentReference", "agent", element.getAgent().get(i), i);
5352    if (element.hasAuthenticator())
5353      composeReference(t, "DocumentReference", "authenticator", element.getAuthenticator(), -1);
5354    if (element.hasCustodian())
5355      composeReference(t, "DocumentReference", "custodian", element.getCustodian(), -1);
5356    for (int i = 0; i < element.getRelatesTo().size(); i++)
5357      composeDocumentReferenceDocumentReferenceRelatesToComponent(t, "DocumentReference", "relatesTo", element.getRelatesTo().get(i), i);
5358    if (element.hasDescriptionElement())
5359      composeString(t, "DocumentReference", "description", element.getDescriptionElement(), -1);
5360    for (int i = 0; i < element.getSecurityLabel().size(); i++)
5361      composeCodeableConcept(t, "DocumentReference", "securityLabel", element.getSecurityLabel().get(i), i);
5362    for (int i = 0; i < element.getContent().size(); i++)
5363      composeDocumentReferenceDocumentReferenceContentComponent(t, "DocumentReference", "content", element.getContent().get(i), i);
5364    if (element.hasContext())
5365      composeDocumentReferenceDocumentReferenceContextComponent(t, "DocumentReference", "context", element.getContext(), -1);
5366  }
5367
5368  protected void composeDocumentReferenceDocumentReferenceAgentComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceAgentComponent element, int index) {
5369    if (element == null) 
5370      return;
5371    Complex t;
5372    if (Utilities.noString(parentType))
5373      t = parent;
5374    else {
5375      t = parent.predicate("fhir:"+parentType+'.'+name);
5376    }
5377    composeBackboneElement(t, "agent", name, element, index);
5378    if (element.hasType())
5379      composeCodeableConcept(t, "DocumentReference", "type", element.getType(), -1);
5380    if (element.hasWho())
5381      composeReference(t, "DocumentReference", "who", element.getWho(), -1);
5382  }
5383
5384  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceRelatesToComponent element, int index) {
5385    if (element == null) 
5386      return;
5387    Complex t;
5388    if (Utilities.noString(parentType))
5389      t = parent;
5390    else {
5391      t = parent.predicate("fhir:"+parentType+'.'+name);
5392    }
5393    composeBackboneElement(t, "relatesTo", name, element, index);
5394    if (element.hasCodeElement())
5395      composeEnum(t, "DocumentReference", "code", element.getCodeElement(), -1);
5396    if (element.hasTarget())
5397      composeReference(t, "DocumentReference", "target", element.getTarget(), -1);
5398  }
5399
5400  protected void composeDocumentReferenceDocumentReferenceContentComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceContentComponent element, int index) {
5401    if (element == null) 
5402      return;
5403    Complex t;
5404    if (Utilities.noString(parentType))
5405      t = parent;
5406    else {
5407      t = parent.predicate("fhir:"+parentType+'.'+name);
5408    }
5409    composeBackboneElement(t, "content", name, element, index);
5410    if (element.hasAttachment())
5411      composeAttachment(t, "DocumentReference", "attachment", element.getAttachment(), -1);
5412    if (element.hasFormat())
5413      composeCoding(t, "DocumentReference", "format", element.getFormat(), -1);
5414  }
5415
5416  protected void composeDocumentReferenceDocumentReferenceContextComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceContextComponent element, int index) {
5417    if (element == null) 
5418      return;
5419    Complex t;
5420    if (Utilities.noString(parentType))
5421      t = parent;
5422    else {
5423      t = parent.predicate("fhir:"+parentType+'.'+name);
5424    }
5425    composeBackboneElement(t, "context", name, element, index);
5426    if (element.hasEncounter())
5427      composeReference(t, "DocumentReference", "encounter", element.getEncounter(), -1);
5428    for (int i = 0; i < element.getEvent().size(); i++)
5429      composeCodeableConcept(t, "DocumentReference", "event", element.getEvent().get(i), i);
5430    if (element.hasPeriod())
5431      composePeriod(t, "DocumentReference", "period", element.getPeriod(), -1);
5432    if (element.hasFacilityType())
5433      composeCodeableConcept(t, "DocumentReference", "facilityType", element.getFacilityType(), -1);
5434    if (element.hasPracticeSetting())
5435      composeCodeableConcept(t, "DocumentReference", "practiceSetting", element.getPracticeSetting(), -1);
5436    if (element.hasSourcePatientInfo())
5437      composeReference(t, "DocumentReference", "sourcePatientInfo", element.getSourcePatientInfo(), -1);
5438    for (int i = 0; i < element.getRelated().size(); i++)
5439      composeDocumentReferenceDocumentReferenceContextRelatedComponent(t, "DocumentReference", "related", element.getRelated().get(i), i);
5440  }
5441
5442  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceContextRelatedComponent element, int index) {
5443    if (element == null) 
5444      return;
5445    Complex t;
5446    if (Utilities.noString(parentType))
5447      t = parent;
5448    else {
5449      t = parent.predicate("fhir:"+parentType+'.'+name);
5450    }
5451    composeBackboneElement(t, "related", name, element, index);
5452    if (element.hasIdentifier())
5453      composeIdentifier(t, "DocumentReference", "identifier", element.getIdentifier(), -1);
5454    if (element.hasRef())
5455      composeReference(t, "DocumentReference", "ref", element.getRef(), -1);
5456  }
5457
5458  protected void composeEligibilityRequest(Complex parent, String parentType, String name, EligibilityRequest element, int index) {
5459    if (element == null) 
5460      return;
5461    Complex t;
5462    if (Utilities.noString(parentType))
5463      t = parent;
5464    else {
5465      t = parent.predicate("fhir:"+parentType+'.'+name);
5466    }
5467    composeDomainResource(t, "EligibilityRequest", name, element, index);
5468    for (int i = 0; i < element.getIdentifier().size(); i++)
5469      composeIdentifier(t, "EligibilityRequest", "identifier", element.getIdentifier().get(i), i);
5470    if (element.hasStatusElement())
5471      composeEnum(t, "EligibilityRequest", "status", element.getStatusElement(), -1);
5472    if (element.hasPriority())
5473      composeCodeableConcept(t, "EligibilityRequest", "priority", element.getPriority(), -1);
5474    if (element.hasPatient())
5475      composeReference(t, "EligibilityRequest", "patient", element.getPatient(), -1);
5476    if (element.hasServiced())
5477      composeType(t, "EligibilityRequest", "serviced", element.getServiced(), -1);
5478    if (element.hasCreatedElement())
5479      composeDateTime(t, "EligibilityRequest", "created", element.getCreatedElement(), -1);
5480    if (element.hasEnterer())
5481      composeReference(t, "EligibilityRequest", "enterer", element.getEnterer(), -1);
5482    if (element.hasProvider())
5483      composeReference(t, "EligibilityRequest", "provider", element.getProvider(), -1);
5484    if (element.hasInsurer())
5485      composeReference(t, "EligibilityRequest", "insurer", element.getInsurer(), -1);
5486    if (element.hasFacility())
5487      composeReference(t, "EligibilityRequest", "facility", element.getFacility(), -1);
5488    if (element.hasCoverage())
5489      composeReference(t, "EligibilityRequest", "coverage", element.getCoverage(), -1);
5490    if (element.hasBusinessArrangementElement())
5491      composeString(t, "EligibilityRequest", "businessArrangement", element.getBusinessArrangementElement(), -1);
5492    if (element.hasBenefitCategory())
5493      composeCodeableConcept(t, "EligibilityRequest", "benefitCategory", element.getBenefitCategory(), -1);
5494    if (element.hasBenefitSubCategory())
5495      composeCodeableConcept(t, "EligibilityRequest", "benefitSubCategory", element.getBenefitSubCategory(), -1);
5496    for (int i = 0; i < element.getAuthorization().size(); i++)
5497      composeEligibilityRequestAuthorizationComponent(t, "EligibilityRequest", "authorization", element.getAuthorization().get(i), i);
5498  }
5499
5500  protected void composeEligibilityRequestAuthorizationComponent(Complex parent, String parentType, String name, EligibilityRequest.AuthorizationComponent element, int index) {
5501    if (element == null) 
5502      return;
5503    Complex t;
5504    if (Utilities.noString(parentType))
5505      t = parent;
5506    else {
5507      t = parent.predicate("fhir:"+parentType+'.'+name);
5508    }
5509    composeBackboneElement(t, "authorization", name, element, index);
5510    if (element.hasSequenceElement())
5511      composePositiveInt(t, "EligibilityRequest", "sequence", element.getSequenceElement(), -1);
5512    if (element.hasService())
5513      composeCodeableConcept(t, "EligibilityRequest", "service", element.getService(), -1);
5514    for (int i = 0; i < element.getModifier().size(); i++)
5515      composeCodeableConcept(t, "EligibilityRequest", "modifier", element.getModifier().get(i), i);
5516    if (element.hasQuantity())
5517      composeQuantity(t, "EligibilityRequest", "quantity", element.getQuantity(), -1);
5518    if (element.hasUnitPrice())
5519      composeMoney(t, "EligibilityRequest", "unitPrice", element.getUnitPrice(), -1);
5520    if (element.hasFacility())
5521      composeReference(t, "EligibilityRequest", "facility", element.getFacility(), -1);
5522    for (int i = 0; i < element.getDiagnosis().size(); i++)
5523      composeEligibilityRequestDiagnosisComponent(t, "EligibilityRequest", "diagnosis", element.getDiagnosis().get(i), i);
5524  }
5525
5526  protected void composeEligibilityRequestDiagnosisComponent(Complex parent, String parentType, String name, EligibilityRequest.DiagnosisComponent element, int index) {
5527    if (element == null) 
5528      return;
5529    Complex t;
5530    if (Utilities.noString(parentType))
5531      t = parent;
5532    else {
5533      t = parent.predicate("fhir:"+parentType+'.'+name);
5534    }
5535    composeBackboneElement(t, "diagnosis", name, element, index);
5536    if (element.hasDiagnosis())
5537      composeType(t, "EligibilityRequest", "diagnosis", element.getDiagnosis(), -1);
5538  }
5539
5540  protected void composeEligibilityResponse(Complex parent, String parentType, String name, EligibilityResponse element, int index) {
5541    if (element == null) 
5542      return;
5543    Complex t;
5544    if (Utilities.noString(parentType))
5545      t = parent;
5546    else {
5547      t = parent.predicate("fhir:"+parentType+'.'+name);
5548    }
5549    composeDomainResource(t, "EligibilityResponse", name, element, index);
5550    for (int i = 0; i < element.getIdentifier().size(); i++)
5551      composeIdentifier(t, "EligibilityResponse", "identifier", element.getIdentifier().get(i), i);
5552    if (element.hasStatusElement())
5553      composeEnum(t, "EligibilityResponse", "status", element.getStatusElement(), -1);
5554    if (element.hasCreatedElement())
5555      composeDateTime(t, "EligibilityResponse", "created", element.getCreatedElement(), -1);
5556    if (element.hasRequestProvider())
5557      composeReference(t, "EligibilityResponse", "requestProvider", element.getRequestProvider(), -1);
5558    if (element.hasRequest())
5559      composeReference(t, "EligibilityResponse", "request", element.getRequest(), -1);
5560    if (element.hasOutcomeElement())
5561      composeEnum(t, "EligibilityResponse", "outcome", element.getOutcomeElement(), -1);
5562    if (element.hasDispositionElement())
5563      composeString(t, "EligibilityResponse", "disposition", element.getDispositionElement(), -1);
5564    if (element.hasInsurer())
5565      composeReference(t, "EligibilityResponse", "insurer", element.getInsurer(), -1);
5566    if (element.hasInforceElement())
5567      composeBoolean(t, "EligibilityResponse", "inforce", element.getInforceElement(), -1);
5568    for (int i = 0; i < element.getInsurance().size(); i++)
5569      composeEligibilityResponseInsuranceComponent(t, "EligibilityResponse", "insurance", element.getInsurance().get(i), i);
5570    if (element.hasPreAuthRefElement())
5571      composeString(t, "EligibilityResponse", "preAuthRef", element.getPreAuthRefElement(), -1);
5572    for (int i = 0; i < element.getAuthorization().size(); i++)
5573      composeEligibilityResponseAuthorizationComponent(t, "EligibilityResponse", "authorization", element.getAuthorization().get(i), i);
5574    if (element.hasForm())
5575      composeCodeableConcept(t, "EligibilityResponse", "form", element.getForm(), -1);
5576    for (int i = 0; i < element.getError().size(); i++)
5577      composeEligibilityResponseErrorsComponent(t, "EligibilityResponse", "error", element.getError().get(i), i);
5578  }
5579
5580  protected void composeEligibilityResponseInsuranceComponent(Complex parent, String parentType, String name, EligibilityResponse.InsuranceComponent element, int index) {
5581    if (element == null) 
5582      return;
5583    Complex t;
5584    if (Utilities.noString(parentType))
5585      t = parent;
5586    else {
5587      t = parent.predicate("fhir:"+parentType+'.'+name);
5588    }
5589    composeBackboneElement(t, "insurance", name, element, index);
5590    if (element.hasCoverage())
5591      composeReference(t, "EligibilityResponse", "coverage", element.getCoverage(), -1);
5592    if (element.hasContract())
5593      composeReference(t, "EligibilityResponse", "contract", element.getContract(), -1);
5594    for (int i = 0; i < element.getBenefitBalance().size(); i++)
5595      composeEligibilityResponseBenefitsComponent(t, "EligibilityResponse", "benefitBalance", element.getBenefitBalance().get(i), i);
5596  }
5597
5598  protected void composeEligibilityResponseBenefitsComponent(Complex parent, String parentType, String name, EligibilityResponse.BenefitsComponent element, int index) {
5599    if (element == null) 
5600      return;
5601    Complex t;
5602    if (Utilities.noString(parentType))
5603      t = parent;
5604    else {
5605      t = parent.predicate("fhir:"+parentType+'.'+name);
5606    }
5607    composeBackboneElement(t, "benefitBalance", name, element, index);
5608    if (element.hasCategory())
5609      composeCodeableConcept(t, "EligibilityResponse", "category", element.getCategory(), -1);
5610    if (element.hasSubCategory())
5611      composeCodeableConcept(t, "EligibilityResponse", "subCategory", element.getSubCategory(), -1);
5612    if (element.hasExcludedElement())
5613      composeBoolean(t, "EligibilityResponse", "excluded", element.getExcludedElement(), -1);
5614    if (element.hasNameElement())
5615      composeString(t, "EligibilityResponse", "name", element.getNameElement(), -1);
5616    if (element.hasDescriptionElement())
5617      composeString(t, "EligibilityResponse", "description", element.getDescriptionElement(), -1);
5618    if (element.hasNetwork())
5619      composeCodeableConcept(t, "EligibilityResponse", "network", element.getNetwork(), -1);
5620    if (element.hasUnit())
5621      composeCodeableConcept(t, "EligibilityResponse", "unit", element.getUnit(), -1);
5622    if (element.hasTerm())
5623      composeCodeableConcept(t, "EligibilityResponse", "term", element.getTerm(), -1);
5624    for (int i = 0; i < element.getFinancial().size(); i++)
5625      composeEligibilityResponseBenefitComponent(t, "EligibilityResponse", "financial", element.getFinancial().get(i), i);
5626  }
5627
5628  protected void composeEligibilityResponseBenefitComponent(Complex parent, String parentType, String name, EligibilityResponse.BenefitComponent element, int index) {
5629    if (element == null) 
5630      return;
5631    Complex t;
5632    if (Utilities.noString(parentType))
5633      t = parent;
5634    else {
5635      t = parent.predicate("fhir:"+parentType+'.'+name);
5636    }
5637    composeBackboneElement(t, "financial", name, element, index);
5638    if (element.hasType())
5639      composeCodeableConcept(t, "EligibilityResponse", "type", element.getType(), -1);
5640    if (element.hasAllowed())
5641      composeType(t, "EligibilityResponse", "allowed", element.getAllowed(), -1);
5642    if (element.hasUsed())
5643      composeType(t, "EligibilityResponse", "used", element.getUsed(), -1);
5644  }
5645
5646  protected void composeEligibilityResponseAuthorizationComponent(Complex parent, String parentType, String name, EligibilityResponse.AuthorizationComponent element, int index) {
5647    if (element == null) 
5648      return;
5649    Complex t;
5650    if (Utilities.noString(parentType))
5651      t = parent;
5652    else {
5653      t = parent.predicate("fhir:"+parentType+'.'+name);
5654    }
5655    composeBackboneElement(t, "authorization", name, element, index);
5656    if (element.hasAuthorizationSequenceElement())
5657      composePositiveInt(t, "EligibilityResponse", "authorizationSequence", element.getAuthorizationSequenceElement(), -1);
5658    if (element.hasRequiredElement())
5659      composeBoolean(t, "EligibilityResponse", "required", element.getRequiredElement(), -1);
5660    for (int i = 0; i < element.getNote().size(); i++)
5661      composeAnnotation(t, "EligibilityResponse", "note", element.getNote().get(i), i);
5662  }
5663
5664  protected void composeEligibilityResponseErrorsComponent(Complex parent, String parentType, String name, EligibilityResponse.ErrorsComponent element, int index) {
5665    if (element == null) 
5666      return;
5667    Complex t;
5668    if (Utilities.noString(parentType))
5669      t = parent;
5670    else {
5671      t = parent.predicate("fhir:"+parentType+'.'+name);
5672    }
5673    composeBackboneElement(t, "error", name, element, index);
5674    if (element.hasCode())
5675      composeCodeableConcept(t, "EligibilityResponse", "code", element.getCode(), -1);
5676  }
5677
5678  protected void composeEncounter(Complex parent, String parentType, String name, Encounter element, int index) {
5679    if (element == null) 
5680      return;
5681    Complex t;
5682    if (Utilities.noString(parentType))
5683      t = parent;
5684    else {
5685      t = parent.predicate("fhir:"+parentType+'.'+name);
5686    }
5687    composeDomainResource(t, "Encounter", name, element, index);
5688    for (int i = 0; i < element.getIdentifier().size(); i++)
5689      composeIdentifier(t, "Encounter", "identifier", element.getIdentifier().get(i), i);
5690    if (element.hasStatusElement())
5691      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
5692    for (int i = 0; i < element.getStatusHistory().size(); i++)
5693      composeEncounterStatusHistoryComponent(t, "Encounter", "statusHistory", element.getStatusHistory().get(i), i);
5694    if (element.hasClass_())
5695      composeCoding(t, "Encounter", "class", element.getClass_(), -1);
5696    for (int i = 0; i < element.getClassHistory().size(); i++)
5697      composeEncounterClassHistoryComponent(t, "Encounter", "classHistory", element.getClassHistory().get(i), i);
5698    for (int i = 0; i < element.getType().size(); i++)
5699      composeCodeableConcept(t, "Encounter", "type", element.getType().get(i), i);
5700    if (element.hasServiceType())
5701      composeCodeableConcept(t, "Encounter", "serviceType", element.getServiceType(), -1);
5702    if (element.hasPriority())
5703      composeCodeableConcept(t, "Encounter", "priority", element.getPriority(), -1);
5704    if (element.hasSubject())
5705      composeReference(t, "Encounter", "subject", element.getSubject(), -1);
5706    for (int i = 0; i < element.getEpisodeOfCare().size(); i++)
5707      composeReference(t, "Encounter", "episodeOfCare", element.getEpisodeOfCare().get(i), i);
5708    for (int i = 0; i < element.getBasedOn().size(); i++)
5709      composeReference(t, "Encounter", "basedOn", element.getBasedOn().get(i), i);
5710    for (int i = 0; i < element.getParticipant().size(); i++)
5711      composeEncounterEncounterParticipantComponent(t, "Encounter", "participant", element.getParticipant().get(i), i);
5712    if (element.hasAppointment())
5713      composeReference(t, "Encounter", "appointment", element.getAppointment(), -1);
5714    if (element.hasPeriod())
5715      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
5716    if (element.hasLength())
5717      composeDuration(t, "Encounter", "length", element.getLength(), -1);
5718    for (int i = 0; i < element.getReason().size(); i++)
5719      composeCodeableConcept(t, "Encounter", "reason", element.getReason().get(i), i);
5720    for (int i = 0; i < element.getDiagnosis().size(); i++)
5721      composeEncounterDiagnosisComponent(t, "Encounter", "diagnosis", element.getDiagnosis().get(i), i);
5722    for (int i = 0; i < element.getAccount().size(); i++)
5723      composeReference(t, "Encounter", "account", element.getAccount().get(i), i);
5724    if (element.hasHospitalization())
5725      composeEncounterEncounterHospitalizationComponent(t, "Encounter", "hospitalization", element.getHospitalization(), -1);
5726    for (int i = 0; i < element.getLocation().size(); i++)
5727      composeEncounterEncounterLocationComponent(t, "Encounter", "location", element.getLocation().get(i), i);
5728    if (element.hasServiceProvider())
5729      composeReference(t, "Encounter", "serviceProvider", element.getServiceProvider(), -1);
5730    if (element.hasPartOf())
5731      composeReference(t, "Encounter", "partOf", element.getPartOf(), -1);
5732  }
5733
5734  protected void composeEncounterStatusHistoryComponent(Complex parent, String parentType, String name, Encounter.StatusHistoryComponent element, int index) {
5735    if (element == null) 
5736      return;
5737    Complex t;
5738    if (Utilities.noString(parentType))
5739      t = parent;
5740    else {
5741      t = parent.predicate("fhir:"+parentType+'.'+name);
5742    }
5743    composeBackboneElement(t, "statusHistory", name, element, index);
5744    if (element.hasStatusElement())
5745      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
5746    if (element.hasPeriod())
5747      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
5748  }
5749
5750  protected void composeEncounterClassHistoryComponent(Complex parent, String parentType, String name, Encounter.ClassHistoryComponent element, int index) {
5751    if (element == null) 
5752      return;
5753    Complex t;
5754    if (Utilities.noString(parentType))
5755      t = parent;
5756    else {
5757      t = parent.predicate("fhir:"+parentType+'.'+name);
5758    }
5759    composeBackboneElement(t, "classHistory", name, element, index);
5760    if (element.hasClass_())
5761      composeCoding(t, "Encounter", "class", element.getClass_(), -1);
5762    if (element.hasPeriod())
5763      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
5764  }
5765
5766  protected void composeEncounterEncounterParticipantComponent(Complex parent, String parentType, String name, Encounter.EncounterParticipantComponent element, int index) {
5767    if (element == null) 
5768      return;
5769    Complex t;
5770    if (Utilities.noString(parentType))
5771      t = parent;
5772    else {
5773      t = parent.predicate("fhir:"+parentType+'.'+name);
5774    }
5775    composeBackboneElement(t, "participant", name, element, index);
5776    for (int i = 0; i < element.getType().size(); i++)
5777      composeCodeableConcept(t, "Encounter", "type", element.getType().get(i), i);
5778    if (element.hasPeriod())
5779      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
5780    if (element.hasIndividual())
5781      composeReference(t, "Encounter", "individual", element.getIndividual(), -1);
5782  }
5783
5784  protected void composeEncounterDiagnosisComponent(Complex parent, String parentType, String name, Encounter.DiagnosisComponent element, int index) {
5785    if (element == null) 
5786      return;
5787    Complex t;
5788    if (Utilities.noString(parentType))
5789      t = parent;
5790    else {
5791      t = parent.predicate("fhir:"+parentType+'.'+name);
5792    }
5793    composeBackboneElement(t, "diagnosis", name, element, index);
5794    if (element.hasCondition())
5795      composeReference(t, "Encounter", "condition", element.getCondition(), -1);
5796    if (element.hasRole())
5797      composeCodeableConcept(t, "Encounter", "role", element.getRole(), -1);
5798    if (element.hasRankElement())
5799      composePositiveInt(t, "Encounter", "rank", element.getRankElement(), -1);
5800  }
5801
5802  protected void composeEncounterEncounterHospitalizationComponent(Complex parent, String parentType, String name, Encounter.EncounterHospitalizationComponent element, int index) {
5803    if (element == null) 
5804      return;
5805    Complex t;
5806    if (Utilities.noString(parentType))
5807      t = parent;
5808    else {
5809      t = parent.predicate("fhir:"+parentType+'.'+name);
5810    }
5811    composeBackboneElement(t, "hospitalization", name, element, index);
5812    if (element.hasPreAdmissionIdentifier())
5813      composeIdentifier(t, "Encounter", "preAdmissionIdentifier", element.getPreAdmissionIdentifier(), -1);
5814    if (element.hasOrigin())
5815      composeReference(t, "Encounter", "origin", element.getOrigin(), -1);
5816    if (element.hasAdmitSource())
5817      composeCodeableConcept(t, "Encounter", "admitSource", element.getAdmitSource(), -1);
5818    if (element.hasReAdmission())
5819      composeCodeableConcept(t, "Encounter", "reAdmission", element.getReAdmission(), -1);
5820    for (int i = 0; i < element.getDietPreference().size(); i++)
5821      composeCodeableConcept(t, "Encounter", "dietPreference", element.getDietPreference().get(i), i);
5822    for (int i = 0; i < element.getSpecialCourtesy().size(); i++)
5823      composeCodeableConcept(t, "Encounter", "specialCourtesy", element.getSpecialCourtesy().get(i), i);
5824    for (int i = 0; i < element.getSpecialArrangement().size(); i++)
5825      composeCodeableConcept(t, "Encounter", "specialArrangement", element.getSpecialArrangement().get(i), i);
5826    if (element.hasDestination())
5827      composeReference(t, "Encounter", "destination", element.getDestination(), -1);
5828    if (element.hasDischargeDisposition())
5829      composeCodeableConcept(t, "Encounter", "dischargeDisposition", element.getDischargeDisposition(), -1);
5830  }
5831
5832  protected void composeEncounterEncounterLocationComponent(Complex parent, String parentType, String name, Encounter.EncounterLocationComponent element, int index) {
5833    if (element == null) 
5834      return;
5835    Complex t;
5836    if (Utilities.noString(parentType))
5837      t = parent;
5838    else {
5839      t = parent.predicate("fhir:"+parentType+'.'+name);
5840    }
5841    composeBackboneElement(t, "location", name, element, index);
5842    if (element.hasLocation())
5843      composeReference(t, "Encounter", "location", element.getLocation(), -1);
5844    if (element.hasStatusElement())
5845      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
5846    if (element.hasPeriod())
5847      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
5848  }
5849
5850  protected void composeEndpoint(Complex parent, String parentType, String name, Endpoint element, int index) {
5851    if (element == null) 
5852      return;
5853    Complex t;
5854    if (Utilities.noString(parentType))
5855      t = parent;
5856    else {
5857      t = parent.predicate("fhir:"+parentType+'.'+name);
5858    }
5859    composeDomainResource(t, "Endpoint", name, element, index);
5860    for (int i = 0; i < element.getIdentifier().size(); i++)
5861      composeIdentifier(t, "Endpoint", "identifier", element.getIdentifier().get(i), i);
5862    if (element.hasStatusElement())
5863      composeEnum(t, "Endpoint", "status", element.getStatusElement(), -1);
5864    if (element.hasConnectionType())
5865      composeCoding(t, "Endpoint", "connectionType", element.getConnectionType(), -1);
5866    if (element.hasNameElement())
5867      composeString(t, "Endpoint", "name", element.getNameElement(), -1);
5868    if (element.hasManagingOrganization())
5869      composeReference(t, "Endpoint", "managingOrganization", element.getManagingOrganization(), -1);
5870    for (int i = 0; i < element.getContact().size(); i++)
5871      composeContactPoint(t, "Endpoint", "contact", element.getContact().get(i), i);
5872    if (element.hasPeriod())
5873      composePeriod(t, "Endpoint", "period", element.getPeriod(), -1);
5874    for (int i = 0; i < element.getPayloadType().size(); i++)
5875      composeCodeableConcept(t, "Endpoint", "payloadType", element.getPayloadType().get(i), i);
5876    for (int i = 0; i < element.getPayloadMimeType().size(); i++)
5877      composeCode(t, "Endpoint", "payloadMimeType", element.getPayloadMimeType().get(i), i);
5878    if (element.hasAddressElement())
5879      composeUrl(t, "Endpoint", "address", element.getAddressElement(), -1);
5880    for (int i = 0; i < element.getHeader().size(); i++)
5881      composeString(t, "Endpoint", "header", element.getHeader().get(i), i);
5882  }
5883
5884  protected void composeEnrollmentRequest(Complex parent, String parentType, String name, EnrollmentRequest element, int index) {
5885    if (element == null) 
5886      return;
5887    Complex t;
5888    if (Utilities.noString(parentType))
5889      t = parent;
5890    else {
5891      t = parent.predicate("fhir:"+parentType+'.'+name);
5892    }
5893    composeDomainResource(t, "EnrollmentRequest", name, element, index);
5894    for (int i = 0; i < element.getIdentifier().size(); i++)
5895      composeIdentifier(t, "EnrollmentRequest", "identifier", element.getIdentifier().get(i), i);
5896    if (element.hasStatusElement())
5897      composeEnum(t, "EnrollmentRequest", "status", element.getStatusElement(), -1);
5898    if (element.hasCreatedElement())
5899      composeDateTime(t, "EnrollmentRequest", "created", element.getCreatedElement(), -1);
5900    if (element.hasInsurer())
5901      composeReference(t, "EnrollmentRequest", "insurer", element.getInsurer(), -1);
5902    if (element.hasProvider())
5903      composeReference(t, "EnrollmentRequest", "provider", element.getProvider(), -1);
5904    if (element.hasCandidate())
5905      composeReference(t, "EnrollmentRequest", "candidate", element.getCandidate(), -1);
5906    if (element.hasCoverage())
5907      composeReference(t, "EnrollmentRequest", "coverage", element.getCoverage(), -1);
5908  }
5909
5910  protected void composeEnrollmentResponse(Complex parent, String parentType, String name, EnrollmentResponse element, int index) {
5911    if (element == null) 
5912      return;
5913    Complex t;
5914    if (Utilities.noString(parentType))
5915      t = parent;
5916    else {
5917      t = parent.predicate("fhir:"+parentType+'.'+name);
5918    }
5919    composeDomainResource(t, "EnrollmentResponse", name, element, index);
5920    for (int i = 0; i < element.getIdentifier().size(); i++)
5921      composeIdentifier(t, "EnrollmentResponse", "identifier", element.getIdentifier().get(i), i);
5922    if (element.hasStatusElement())
5923      composeEnum(t, "EnrollmentResponse", "status", element.getStatusElement(), -1);
5924    if (element.hasRequest())
5925      composeReference(t, "EnrollmentResponse", "request", element.getRequest(), -1);
5926    if (element.hasOutcomeElement())
5927      composeEnum(t, "EnrollmentResponse", "outcome", element.getOutcomeElement(), -1);
5928    if (element.hasDispositionElement())
5929      composeString(t, "EnrollmentResponse", "disposition", element.getDispositionElement(), -1);
5930    if (element.hasCreatedElement())
5931      composeDateTime(t, "EnrollmentResponse", "created", element.getCreatedElement(), -1);
5932    if (element.hasOrganization())
5933      composeReference(t, "EnrollmentResponse", "organization", element.getOrganization(), -1);
5934    if (element.hasRequestProvider())
5935      composeReference(t, "EnrollmentResponse", "requestProvider", element.getRequestProvider(), -1);
5936  }
5937
5938  protected void composeEntryDefinition(Complex parent, String parentType, String name, EntryDefinition element, int index) {
5939    if (element == null) 
5940      return;
5941    Complex t;
5942    if (Utilities.noString(parentType))
5943      t = parent;
5944    else {
5945      t = parent.predicate("fhir:"+parentType+'.'+name);
5946    }
5947    composeDomainResource(t, "EntryDefinition", name, element, index);
5948    if (element.hasType())
5949      composeCodeableConcept(t, "EntryDefinition", "type", element.getType(), -1);
5950    if (element.hasPurpose())
5951      composeCodeableConcept(t, "EntryDefinition", "purpose", element.getPurpose(), -1);
5952    if (element.hasReferencedItem())
5953      composeReference(t, "EntryDefinition", "referencedItem", element.getReferencedItem(), -1);
5954    if (element.hasIdentifier())
5955      composeIdentifier(t, "EntryDefinition", "identifier", element.getIdentifier(), -1);
5956    for (int i = 0; i < element.getAdditionalIdentifier().size(); i++)
5957      composeIdentifier(t, "EntryDefinition", "additionalIdentifier", element.getAdditionalIdentifier().get(i), i);
5958    for (int i = 0; i < element.getClassification().size(); i++)
5959      composeCodeableConcept(t, "EntryDefinition", "classification", element.getClassification().get(i), i);
5960    if (element.hasStatus())
5961      composeCodeableConcept(t, "EntryDefinition", "status", element.getStatus(), -1);
5962    if (element.hasValidityPeriod())
5963      composePeriod(t, "EntryDefinition", "validityPeriod", element.getValidityPeriod(), -1);
5964    if (element.hasLastUpdatedElement())
5965      composeDateTime(t, "EntryDefinition", "lastUpdated", element.getLastUpdatedElement(), -1);
5966    for (int i = 0; i < element.getAdditionalCharacteristic().size(); i++)
5967      composeCodeableConcept(t, "EntryDefinition", "additionalCharacteristic", element.getAdditionalCharacteristic().get(i), i);
5968    for (int i = 0; i < element.getAdditionalClassification().size(); i++)
5969      composeCodeableConcept(t, "EntryDefinition", "additionalClassification", element.getAdditionalClassification().get(i), i);
5970    for (int i = 0; i < element.getRelatedEntry().size(); i++)
5971      composeEntryDefinitionEntryDefinitionRelatedEntryComponent(t, "EntryDefinition", "relatedEntry", element.getRelatedEntry().get(i), i);
5972  }
5973
5974  protected void composeEntryDefinitionEntryDefinitionRelatedEntryComponent(Complex parent, String parentType, String name, EntryDefinition.EntryDefinitionRelatedEntryComponent element, int index) {
5975    if (element == null) 
5976      return;
5977    Complex t;
5978    if (Utilities.noString(parentType))
5979      t = parent;
5980    else {
5981      t = parent.predicate("fhir:"+parentType+'.'+name);
5982    }
5983    composeBackboneElement(t, "relatedEntry", name, element, index);
5984    if (element.hasRelationtype())
5985      composeCodeableConcept(t, "EntryDefinition", "relationtype", element.getRelationtype(), -1);
5986    if (element.hasItem())
5987      composeReference(t, "EntryDefinition", "item", element.getItem(), -1);
5988  }
5989
5990  protected void composeEpisodeOfCare(Complex parent, String parentType, String name, EpisodeOfCare element, int index) {
5991    if (element == null) 
5992      return;
5993    Complex t;
5994    if (Utilities.noString(parentType))
5995      t = parent;
5996    else {
5997      t = parent.predicate("fhir:"+parentType+'.'+name);
5998    }
5999    composeDomainResource(t, "EpisodeOfCare", name, element, index);
6000    for (int i = 0; i < element.getIdentifier().size(); i++)
6001      composeIdentifier(t, "EpisodeOfCare", "identifier", element.getIdentifier().get(i), i);
6002    if (element.hasStatusElement())
6003      composeEnum(t, "EpisodeOfCare", "status", element.getStatusElement(), -1);
6004    for (int i = 0; i < element.getStatusHistory().size(); i++)
6005      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(t, "EpisodeOfCare", "statusHistory", element.getStatusHistory().get(i), i);
6006    for (int i = 0; i < element.getType().size(); i++)
6007      composeCodeableConcept(t, "EpisodeOfCare", "type", element.getType().get(i), i);
6008    for (int i = 0; i < element.getDiagnosis().size(); i++)
6009      composeEpisodeOfCareDiagnosisComponent(t, "EpisodeOfCare", "diagnosis", element.getDiagnosis().get(i), i);
6010    if (element.hasPatient())
6011      composeReference(t, "EpisodeOfCare", "patient", element.getPatient(), -1);
6012    if (element.hasManagingOrganization())
6013      composeReference(t, "EpisodeOfCare", "managingOrganization", element.getManagingOrganization(), -1);
6014    if (element.hasPeriod())
6015      composePeriod(t, "EpisodeOfCare", "period", element.getPeriod(), -1);
6016    for (int i = 0; i < element.getReferralRequest().size(); i++)
6017      composeReference(t, "EpisodeOfCare", "referralRequest", element.getReferralRequest().get(i), i);
6018    if (element.hasCareManager())
6019      composeReference(t, "EpisodeOfCare", "careManager", element.getCareManager(), -1);
6020    for (int i = 0; i < element.getTeam().size(); i++)
6021      composeReference(t, "EpisodeOfCare", "team", element.getTeam().get(i), i);
6022    for (int i = 0; i < element.getAccount().size(); i++)
6023      composeReference(t, "EpisodeOfCare", "account", element.getAccount().get(i), i);
6024  }
6025
6026  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(Complex parent, String parentType, String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element, int index) {
6027    if (element == null) 
6028      return;
6029    Complex t;
6030    if (Utilities.noString(parentType))
6031      t = parent;
6032    else {
6033      t = parent.predicate("fhir:"+parentType+'.'+name);
6034    }
6035    composeBackboneElement(t, "statusHistory", name, element, index);
6036    if (element.hasStatusElement())
6037      composeEnum(t, "EpisodeOfCare", "status", element.getStatusElement(), -1);
6038    if (element.hasPeriod())
6039      composePeriod(t, "EpisodeOfCare", "period", element.getPeriod(), -1);
6040  }
6041
6042  protected void composeEpisodeOfCareDiagnosisComponent(Complex parent, String parentType, String name, EpisodeOfCare.DiagnosisComponent element, int index) {
6043    if (element == null) 
6044      return;
6045    Complex t;
6046    if (Utilities.noString(parentType))
6047      t = parent;
6048    else {
6049      t = parent.predicate("fhir:"+parentType+'.'+name);
6050    }
6051    composeBackboneElement(t, "diagnosis", name, element, index);
6052    if (element.hasCondition())
6053      composeReference(t, "EpisodeOfCare", "condition", element.getCondition(), -1);
6054    if (element.hasRole())
6055      composeCodeableConcept(t, "EpisodeOfCare", "role", element.getRole(), -1);
6056    if (element.hasRankElement())
6057      composePositiveInt(t, "EpisodeOfCare", "rank", element.getRankElement(), -1);
6058  }
6059
6060  protected void composeEventDefinition(Complex parent, String parentType, String name, EventDefinition element, int index) {
6061    if (element == null) 
6062      return;
6063    Complex t;
6064    if (Utilities.noString(parentType))
6065      t = parent;
6066    else {
6067      t = parent.predicate("fhir:"+parentType+'.'+name);
6068    }
6069    composeDomainResource(t, "EventDefinition", name, element, index);
6070    if (element.hasUrlElement())
6071      composeUri(t, "EventDefinition", "url", element.getUrlElement(), -1);
6072    for (int i = 0; i < element.getIdentifier().size(); i++)
6073      composeIdentifier(t, "EventDefinition", "identifier", element.getIdentifier().get(i), i);
6074    if (element.hasVersionElement())
6075      composeString(t, "EventDefinition", "version", element.getVersionElement(), -1);
6076    if (element.hasNameElement())
6077      composeString(t, "EventDefinition", "name", element.getNameElement(), -1);
6078    if (element.hasTitleElement())
6079      composeString(t, "EventDefinition", "title", element.getTitleElement(), -1);
6080    if (element.hasSubtitleElement())
6081      composeString(t, "EventDefinition", "subtitle", element.getSubtitleElement(), -1);
6082    if (element.hasStatusElement())
6083      composeEnum(t, "EventDefinition", "status", element.getStatusElement(), -1);
6084    if (element.hasExperimentalElement())
6085      composeBoolean(t, "EventDefinition", "experimental", element.getExperimentalElement(), -1);
6086    if (element.hasSubject())
6087      composeType(t, "EventDefinition", "subject", element.getSubject(), -1);
6088    if (element.hasDateElement())
6089      composeDateTime(t, "EventDefinition", "date", element.getDateElement(), -1);
6090    if (element.hasPublisherElement())
6091      composeString(t, "EventDefinition", "publisher", element.getPublisherElement(), -1);
6092    for (int i = 0; i < element.getContact().size(); i++)
6093      composeContactDetail(t, "EventDefinition", "contact", element.getContact().get(i), i);
6094    if (element.hasDescriptionElement())
6095      composeMarkdown(t, "EventDefinition", "description", element.getDescriptionElement(), -1);
6096    for (int i = 0; i < element.getUseContext().size(); i++)
6097      composeUsageContext(t, "EventDefinition", "useContext", element.getUseContext().get(i), i);
6098    for (int i = 0; i < element.getJurisdiction().size(); i++)
6099      composeCodeableConcept(t, "EventDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
6100    if (element.hasPurposeElement())
6101      composeMarkdown(t, "EventDefinition", "purpose", element.getPurposeElement(), -1);
6102    if (element.hasUsageElement())
6103      composeString(t, "EventDefinition", "usage", element.getUsageElement(), -1);
6104    if (element.hasCopyrightElement())
6105      composeMarkdown(t, "EventDefinition", "copyright", element.getCopyrightElement(), -1);
6106    if (element.hasApprovalDateElement())
6107      composeDate(t, "EventDefinition", "approvalDate", element.getApprovalDateElement(), -1);
6108    if (element.hasLastReviewDateElement())
6109      composeDate(t, "EventDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
6110    if (element.hasEffectivePeriod())
6111      composePeriod(t, "EventDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
6112    for (int i = 0; i < element.getTopic().size(); i++)
6113      composeCodeableConcept(t, "EventDefinition", "topic", element.getTopic().get(i), i);
6114    for (int i = 0; i < element.getContributor().size(); i++)
6115      composeContributor(t, "EventDefinition", "contributor", element.getContributor().get(i), i);
6116    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
6117      composeRelatedArtifact(t, "EventDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
6118    if (element.hasTrigger())
6119      composeTriggerDefinition(t, "EventDefinition", "trigger", element.getTrigger(), -1);
6120  }
6121
6122  protected void composeExampleScenario(Complex parent, String parentType, String name, ExampleScenario element, int index) {
6123    if (element == null) 
6124      return;
6125    Complex t;
6126    if (Utilities.noString(parentType))
6127      t = parent;
6128    else {
6129      t = parent.predicate("fhir:"+parentType+'.'+name);
6130    }
6131    composeDomainResource(t, "ExampleScenario", name, element, index);
6132    if (element.hasUrlElement())
6133      composeUri(t, "ExampleScenario", "url", element.getUrlElement(), -1);
6134    for (int i = 0; i < element.getIdentifier().size(); i++)
6135      composeIdentifier(t, "ExampleScenario", "identifier", element.getIdentifier().get(i), i);
6136    if (element.hasVersionElement())
6137      composeString(t, "ExampleScenario", "version", element.getVersionElement(), -1);
6138    if (element.hasNameElement())
6139      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6140    if (element.hasStatusElement())
6141      composeEnum(t, "ExampleScenario", "status", element.getStatusElement(), -1);
6142    if (element.hasExperimentalElement())
6143      composeBoolean(t, "ExampleScenario", "experimental", element.getExperimentalElement(), -1);
6144    if (element.hasDateElement())
6145      composeDateTime(t, "ExampleScenario", "date", element.getDateElement(), -1);
6146    if (element.hasPublisherElement())
6147      composeString(t, "ExampleScenario", "publisher", element.getPublisherElement(), -1);
6148    for (int i = 0; i < element.getContact().size(); i++)
6149      composeContactDetail(t, "ExampleScenario", "contact", element.getContact().get(i), i);
6150    for (int i = 0; i < element.getUseContext().size(); i++)
6151      composeUsageContext(t, "ExampleScenario", "useContext", element.getUseContext().get(i), i);
6152    for (int i = 0; i < element.getJurisdiction().size(); i++)
6153      composeCodeableConcept(t, "ExampleScenario", "jurisdiction", element.getJurisdiction().get(i), i);
6154    if (element.hasCopyrightElement())
6155      composeMarkdown(t, "ExampleScenario", "copyright", element.getCopyrightElement(), -1);
6156    if (element.hasPurposeElement())
6157      composeMarkdown(t, "ExampleScenario", "purpose", element.getPurposeElement(), -1);
6158    for (int i = 0; i < element.getActor().size(); i++)
6159      composeExampleScenarioExampleScenarioActorComponent(t, "ExampleScenario", "actor", element.getActor().get(i), i);
6160    for (int i = 0; i < element.getInstance().size(); i++)
6161      composeExampleScenarioExampleScenarioInstanceComponent(t, "ExampleScenario", "instance", element.getInstance().get(i), i);
6162    for (int i = 0; i < element.getProcess().size(); i++)
6163      composeExampleScenarioExampleScenarioProcessComponent(t, "ExampleScenario", "process", element.getProcess().get(i), i);
6164    for (int i = 0; i < element.getWorkflow().size(); i++)
6165      composeCanonical(t, "ExampleScenario", "workflow", element.getWorkflow().get(i), i);
6166  }
6167
6168  protected void composeExampleScenarioExampleScenarioActorComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioActorComponent element, int index) {
6169    if (element == null) 
6170      return;
6171    Complex t;
6172    if (Utilities.noString(parentType))
6173      t = parent;
6174    else {
6175      t = parent.predicate("fhir:"+parentType+'.'+name);
6176    }
6177    composeBackboneElement(t, "actor", name, element, index);
6178    if (element.hasActorIdElement())
6179      composeString(t, "ExampleScenario", "actorId", element.getActorIdElement(), -1);
6180    if (element.hasTypeElement())
6181      composeEnum(t, "ExampleScenario", "type", element.getTypeElement(), -1);
6182    if (element.hasNameElement())
6183      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6184    if (element.hasDescriptionElement())
6185      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6186  }
6187
6188  protected void composeExampleScenarioExampleScenarioInstanceComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceComponent element, int index) {
6189    if (element == null) 
6190      return;
6191    Complex t;
6192    if (Utilities.noString(parentType))
6193      t = parent;
6194    else {
6195      t = parent.predicate("fhir:"+parentType+'.'+name);
6196    }
6197    composeBackboneElement(t, "instance", name, element, index);
6198    if (element.hasResourceIdElement())
6199      composeString(t, "ExampleScenario", "resourceId", element.getResourceIdElement(), -1);
6200    if (element.hasResourceTypeElement())
6201      composeEnum(t, "ExampleScenario", "resourceType", element.getResourceTypeElement(), -1);
6202    if (element.hasNameElement())
6203      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6204    if (element.hasDescriptionElement())
6205      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6206    for (int i = 0; i < element.getVersion().size(); i++)
6207      composeExampleScenarioExampleScenarioInstanceVersionComponent(t, "ExampleScenario", "version", element.getVersion().get(i), i);
6208    for (int i = 0; i < element.getContainedInstance().size(); i++)
6209      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "containedInstance", element.getContainedInstance().get(i), i);
6210  }
6211
6212  protected void composeExampleScenarioExampleScenarioInstanceVersionComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element, int index) {
6213    if (element == null) 
6214      return;
6215    Complex t;
6216    if (Utilities.noString(parentType))
6217      t = parent;
6218    else {
6219      t = parent.predicate("fhir:"+parentType+'.'+name);
6220    }
6221    composeBackboneElement(t, "version", name, element, index);
6222    if (element.hasVersionIdElement())
6223      composeString(t, "ExampleScenario", "versionId", element.getVersionIdElement(), -1);
6224    if (element.hasDescriptionElement())
6225      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6226  }
6227
6228  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element, int index) {
6229    if (element == null) 
6230      return;
6231    Complex t;
6232    if (Utilities.noString(parentType))
6233      t = parent;
6234    else {
6235      t = parent.predicate("fhir:"+parentType+'.'+name);
6236    }
6237    composeBackboneElement(t, "containedInstance", name, element, index);
6238    if (element.hasResourceIdElement())
6239      composeString(t, "ExampleScenario", "resourceId", element.getResourceIdElement(), -1);
6240    if (element.hasVersionIdElement())
6241      composeString(t, "ExampleScenario", "versionId", element.getVersionIdElement(), -1);
6242  }
6243
6244  protected void composeExampleScenarioExampleScenarioProcessComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessComponent element, int index) {
6245    if (element == null) 
6246      return;
6247    Complex t;
6248    if (Utilities.noString(parentType))
6249      t = parent;
6250    else {
6251      t = parent.predicate("fhir:"+parentType+'.'+name);
6252    }
6253    composeBackboneElement(t, "process", name, element, index);
6254    if (element.hasTitleElement())
6255      composeString(t, "ExampleScenario", "title", element.getTitleElement(), -1);
6256    if (element.hasDescriptionElement())
6257      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6258    if (element.hasPreConditionsElement())
6259      composeMarkdown(t, "ExampleScenario", "preConditions", element.getPreConditionsElement(), -1);
6260    if (element.hasPostConditionsElement())
6261      composeMarkdown(t, "ExampleScenario", "postConditions", element.getPostConditionsElement(), -1);
6262    for (int i = 0; i < element.getStep().size(); i++)
6263      composeExampleScenarioExampleScenarioProcessStepComponent(t, "ExampleScenario", "step", element.getStep().get(i), i);
6264  }
6265
6266  protected void composeExampleScenarioExampleScenarioProcessStepComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepComponent element, int index) {
6267    if (element == null) 
6268      return;
6269    Complex t;
6270    if (Utilities.noString(parentType))
6271      t = parent;
6272    else {
6273      t = parent.predicate("fhir:"+parentType+'.'+name);
6274    }
6275    composeBackboneElement(t, "step", name, element, index);
6276    for (int i = 0; i < element.getProcess().size(); i++)
6277      composeExampleScenarioExampleScenarioProcessComponent(t, "ExampleScenario", "process", element.getProcess().get(i), i);
6278    if (element.hasPauseElement())
6279      composeBoolean(t, "ExampleScenario", "pause", element.getPauseElement(), -1);
6280    if (element.hasOperation())
6281      composeExampleScenarioExampleScenarioProcessStepOperationComponent(t, "ExampleScenario", "operation", element.getOperation(), -1);
6282    if (element.hasAlternative())
6283      composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(t, "ExampleScenario", "alternative", element.getAlternative(), -1);
6284  }
6285
6286  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element, int index) {
6287    if (element == null) 
6288      return;
6289    Complex t;
6290    if (Utilities.noString(parentType))
6291      t = parent;
6292    else {
6293      t = parent.predicate("fhir:"+parentType+'.'+name);
6294    }
6295    composeBackboneElement(t, "operation", name, element, index);
6296    if (element.hasNumberElement())
6297      composeString(t, "ExampleScenario", "number", element.getNumberElement(), -1);
6298    if (element.hasTypeElement())
6299      composeString(t, "ExampleScenario", "type", element.getTypeElement(), -1);
6300    if (element.hasNameElement())
6301      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6302    if (element.hasInitiatorElement())
6303      composeString(t, "ExampleScenario", "initiator", element.getInitiatorElement(), -1);
6304    if (element.hasReceiverElement())
6305      composeString(t, "ExampleScenario", "receiver", element.getReceiverElement(), -1);
6306    if (element.hasDescriptionElement())
6307      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6308    if (element.hasInitiatorActiveElement())
6309      composeBoolean(t, "ExampleScenario", "initiatorActive", element.getInitiatorActiveElement(), -1);
6310    if (element.hasReceiverActiveElement())
6311      composeBoolean(t, "ExampleScenario", "receiverActive", element.getReceiverActiveElement(), -1);
6312    if (element.hasRequest())
6313      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "request", element.getRequest(), -1);
6314    if (element.hasResponse())
6315      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "response", element.getResponse(), -1);
6316  }
6317
6318  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element, int index) {
6319    if (element == null) 
6320      return;
6321    Complex t;
6322    if (Utilities.noString(parentType))
6323      t = parent;
6324    else {
6325      t = parent.predicate("fhir:"+parentType+'.'+name);
6326    }
6327    composeBackboneElement(t, "alternative", name, element, index);
6328    if (element.hasNameElement())
6329      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6330    for (int i = 0; i < element.getOption().size(); i++)
6331      composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(t, "ExampleScenario", "option", element.getOption().get(i), i);
6332  }
6333
6334  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent element, int index) {
6335    if (element == null) 
6336      return;
6337    Complex t;
6338    if (Utilities.noString(parentType))
6339      t = parent;
6340    else {
6341      t = parent.predicate("fhir:"+parentType+'.'+name);
6342    }
6343    composeBackboneElement(t, "option", name, element, index);
6344    if (element.hasDescriptionElement())
6345      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6346    for (int i = 0; i < element.getStep().size(); i++)
6347      composeExampleScenarioExampleScenarioProcessStepComponent(t, "ExampleScenario", "step", element.getStep().get(i), i);
6348    for (int i = 0; i < element.getPause().size(); i++)
6349      composeBoolean(t, "ExampleScenario", "pause", element.getPause().get(i), i);
6350  }
6351
6352  protected void composeExpansionProfile(Complex parent, String parentType, String name, ExpansionProfile element, int index) {
6353    if (element == null) 
6354      return;
6355    Complex t;
6356    if (Utilities.noString(parentType))
6357      t = parent;
6358    else {
6359      t = parent.predicate("fhir:"+parentType+'.'+name);
6360    }
6361    composeDomainResource(t, "ExpansionProfile", name, element, index);
6362    if (element.hasUrlElement())
6363      composeUri(t, "ExpansionProfile", "url", element.getUrlElement(), -1);
6364    if (element.hasIdentifier())
6365      composeIdentifier(t, "ExpansionProfile", "identifier", element.getIdentifier(), -1);
6366    if (element.hasVersionElement())
6367      composeString(t, "ExpansionProfile", "version", element.getVersionElement(), -1);
6368    if (element.hasNameElement())
6369      composeString(t, "ExpansionProfile", "name", element.getNameElement(), -1);
6370    if (element.hasStatusElement())
6371      composeEnum(t, "ExpansionProfile", "status", element.getStatusElement(), -1);
6372    if (element.hasExperimentalElement())
6373      composeBoolean(t, "ExpansionProfile", "experimental", element.getExperimentalElement(), -1);
6374    if (element.hasDateElement())
6375      composeDateTime(t, "ExpansionProfile", "date", element.getDateElement(), -1);
6376    if (element.hasPublisherElement())
6377      composeString(t, "ExpansionProfile", "publisher", element.getPublisherElement(), -1);
6378    for (int i = 0; i < element.getContact().size(); i++)
6379      composeContactDetail(t, "ExpansionProfile", "contact", element.getContact().get(i), i);
6380    if (element.hasDescriptionElement())
6381      composeMarkdown(t, "ExpansionProfile", "description", element.getDescriptionElement(), -1);
6382    for (int i = 0; i < element.getUseContext().size(); i++)
6383      composeUsageContext(t, "ExpansionProfile", "useContext", element.getUseContext().get(i), i);
6384    for (int i = 0; i < element.getJurisdiction().size(); i++)
6385      composeCodeableConcept(t, "ExpansionProfile", "jurisdiction", element.getJurisdiction().get(i), i);
6386    for (int i = 0; i < element.getFixedVersion().size(); i++)
6387      composeExpansionProfileExpansionProfileFixedVersionComponent(t, "ExpansionProfile", "fixedVersion", element.getFixedVersion().get(i), i);
6388    if (element.hasExcludedSystem())
6389      composeExpansionProfileExpansionProfileExcludedSystemComponent(t, "ExpansionProfile", "excludedSystem", element.getExcludedSystem(), -1);
6390    if (element.hasIncludeDesignationsElement())
6391      composeBoolean(t, "ExpansionProfile", "includeDesignations", element.getIncludeDesignationsElement(), -1);
6392    if (element.hasDesignation())
6393      composeExpansionProfileExpansionProfileDesignationComponent(t, "ExpansionProfile", "designation", element.getDesignation(), -1);
6394    if (element.hasIncludeDefinitionElement())
6395      composeBoolean(t, "ExpansionProfile", "includeDefinition", element.getIncludeDefinitionElement(), -1);
6396    if (element.hasActiveOnlyElement())
6397      composeBoolean(t, "ExpansionProfile", "activeOnly", element.getActiveOnlyElement(), -1);
6398    if (element.hasExcludeNestedElement())
6399      composeBoolean(t, "ExpansionProfile", "excludeNested", element.getExcludeNestedElement(), -1);
6400    if (element.hasExcludeNotForUIElement())
6401      composeBoolean(t, "ExpansionProfile", "excludeNotForUI", element.getExcludeNotForUIElement(), -1);
6402    if (element.hasExcludePostCoordinatedElement())
6403      composeBoolean(t, "ExpansionProfile", "excludePostCoordinated", element.getExcludePostCoordinatedElement(), -1);
6404    if (element.hasDisplayLanguageElement())
6405      composeCode(t, "ExpansionProfile", "displayLanguage", element.getDisplayLanguageElement(), -1);
6406    if (element.hasLimitedExpansionElement())
6407      composeBoolean(t, "ExpansionProfile", "limitedExpansion", element.getLimitedExpansionElement(), -1);
6408  }
6409
6410  protected void composeExpansionProfileExpansionProfileFixedVersionComponent(Complex parent, String parentType, String name, ExpansionProfile.ExpansionProfileFixedVersionComponent element, int index) {
6411    if (element == null) 
6412      return;
6413    Complex t;
6414    if (Utilities.noString(parentType))
6415      t = parent;
6416    else {
6417      t = parent.predicate("fhir:"+parentType+'.'+name);
6418    }
6419    composeBackboneElement(t, "fixedVersion", name, element, index);
6420    if (element.hasSystemElement())
6421      composeUri(t, "ExpansionProfile", "system", element.getSystemElement(), -1);
6422    if (element.hasVersionElement())
6423      composeString(t, "ExpansionProfile", "version", element.getVersionElement(), -1);
6424    if (element.hasModeElement())
6425      composeEnum(t, "ExpansionProfile", "mode", element.getModeElement(), -1);
6426  }
6427
6428  protected void composeExpansionProfileExpansionProfileExcludedSystemComponent(Complex parent, String parentType, String name, ExpansionProfile.ExpansionProfileExcludedSystemComponent element, int index) {
6429    if (element == null) 
6430      return;
6431    Complex t;
6432    if (Utilities.noString(parentType))
6433      t = parent;
6434    else {
6435      t = parent.predicate("fhir:"+parentType+'.'+name);
6436    }
6437    composeBackboneElement(t, "excludedSystem", name, element, index);
6438    if (element.hasSystemElement())
6439      composeUri(t, "ExpansionProfile", "system", element.getSystemElement(), -1);
6440    if (element.hasVersionElement())
6441      composeString(t, "ExpansionProfile", "version", element.getVersionElement(), -1);
6442  }
6443
6444  protected void composeExpansionProfileExpansionProfileDesignationComponent(Complex parent, String parentType, String name, ExpansionProfile.ExpansionProfileDesignationComponent element, int index) {
6445    if (element == null) 
6446      return;
6447    Complex t;
6448    if (Utilities.noString(parentType))
6449      t = parent;
6450    else {
6451      t = parent.predicate("fhir:"+parentType+'.'+name);
6452    }
6453    composeBackboneElement(t, "designation", name, element, index);
6454    if (element.hasInclude())
6455      composeExpansionProfileDesignationIncludeComponent(t, "ExpansionProfile", "include", element.getInclude(), -1);
6456    if (element.hasExclude())
6457      composeExpansionProfileDesignationExcludeComponent(t, "ExpansionProfile", "exclude", element.getExclude(), -1);
6458  }
6459
6460  protected void composeExpansionProfileDesignationIncludeComponent(Complex parent, String parentType, String name, ExpansionProfile.DesignationIncludeComponent element, int index) {
6461    if (element == null) 
6462      return;
6463    Complex t;
6464    if (Utilities.noString(parentType))
6465      t = parent;
6466    else {
6467      t = parent.predicate("fhir:"+parentType+'.'+name);
6468    }
6469    composeBackboneElement(t, "include", name, element, index);
6470    for (int i = 0; i < element.getDesignation().size(); i++)
6471      composeExpansionProfileDesignationIncludeDesignationComponent(t, "ExpansionProfile", "designation", element.getDesignation().get(i), i);
6472  }
6473
6474  protected void composeExpansionProfileDesignationIncludeDesignationComponent(Complex parent, String parentType, String name, ExpansionProfile.DesignationIncludeDesignationComponent element, int index) {
6475    if (element == null) 
6476      return;
6477    Complex t;
6478    if (Utilities.noString(parentType))
6479      t = parent;
6480    else {
6481      t = parent.predicate("fhir:"+parentType+'.'+name);
6482    }
6483    composeBackboneElement(t, "designation", name, element, index);
6484    if (element.hasLanguageElement())
6485      composeCode(t, "ExpansionProfile", "language", element.getLanguageElement(), -1);
6486    if (element.hasUse())
6487      composeCoding(t, "ExpansionProfile", "use", element.getUse(), -1);
6488  }
6489
6490  protected void composeExpansionProfileDesignationExcludeComponent(Complex parent, String parentType, String name, ExpansionProfile.DesignationExcludeComponent element, int index) {
6491    if (element == null) 
6492      return;
6493    Complex t;
6494    if (Utilities.noString(parentType))
6495      t = parent;
6496    else {
6497      t = parent.predicate("fhir:"+parentType+'.'+name);
6498    }
6499    composeBackboneElement(t, "exclude", name, element, index);
6500    for (int i = 0; i < element.getDesignation().size(); i++)
6501      composeExpansionProfileDesignationExcludeDesignationComponent(t, "ExpansionProfile", "designation", element.getDesignation().get(i), i);
6502  }
6503
6504  protected void composeExpansionProfileDesignationExcludeDesignationComponent(Complex parent, String parentType, String name, ExpansionProfile.DesignationExcludeDesignationComponent element, int index) {
6505    if (element == null) 
6506      return;
6507    Complex t;
6508    if (Utilities.noString(parentType))
6509      t = parent;
6510    else {
6511      t = parent.predicate("fhir:"+parentType+'.'+name);
6512    }
6513    composeBackboneElement(t, "designation", name, element, index);
6514    if (element.hasLanguageElement())
6515      composeCode(t, "ExpansionProfile", "language", element.getLanguageElement(), -1);
6516    if (element.hasUse())
6517      composeCoding(t, "ExpansionProfile", "use", element.getUse(), -1);
6518  }
6519
6520  protected void composeExplanationOfBenefit(Complex parent, String parentType, String name, ExplanationOfBenefit element, int index) {
6521    if (element == null) 
6522      return;
6523    Complex t;
6524    if (Utilities.noString(parentType))
6525      t = parent;
6526    else {
6527      t = parent.predicate("fhir:"+parentType+'.'+name);
6528    }
6529    composeDomainResource(t, "ExplanationOfBenefit", name, element, index);
6530    for (int i = 0; i < element.getIdentifier().size(); i++)
6531      composeIdentifier(t, "ExplanationOfBenefit", "identifier", element.getIdentifier().get(i), i);
6532    if (element.hasStatusElement())
6533      composeEnum(t, "ExplanationOfBenefit", "status", element.getStatusElement(), -1);
6534    if (element.hasType())
6535      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
6536    for (int i = 0; i < element.getSubType().size(); i++)
6537      composeCodeableConcept(t, "ExplanationOfBenefit", "subType", element.getSubType().get(i), i);
6538    if (element.hasUseElement())
6539      composeEnum(t, "ExplanationOfBenefit", "use", element.getUseElement(), -1);
6540    if (element.hasPatient())
6541      composeReference(t, "ExplanationOfBenefit", "patient", element.getPatient(), -1);
6542    if (element.hasBillablePeriod())
6543      composePeriod(t, "ExplanationOfBenefit", "billablePeriod", element.getBillablePeriod(), -1);
6544    if (element.hasCreatedElement())
6545      composeDateTime(t, "ExplanationOfBenefit", "created", element.getCreatedElement(), -1);
6546    if (element.hasEnterer())
6547      composeReference(t, "ExplanationOfBenefit", "enterer", element.getEnterer(), -1);
6548    if (element.hasInsurer())
6549      composeReference(t, "ExplanationOfBenefit", "insurer", element.getInsurer(), -1);
6550    if (element.hasProvider())
6551      composeReference(t, "ExplanationOfBenefit", "provider", element.getProvider(), -1);
6552    if (element.hasReferral())
6553      composeReference(t, "ExplanationOfBenefit", "referral", element.getReferral(), -1);
6554    if (element.hasFacility())
6555      composeReference(t, "ExplanationOfBenefit", "facility", element.getFacility(), -1);
6556    if (element.hasClaim())
6557      composeReference(t, "ExplanationOfBenefit", "claim", element.getClaim(), -1);
6558    if (element.hasClaimResponse())
6559      composeReference(t, "ExplanationOfBenefit", "claimResponse", element.getClaimResponse(), -1);
6560    if (element.hasOutcomeElement())
6561      composeEnum(t, "ExplanationOfBenefit", "outcome", element.getOutcomeElement(), -1);
6562    if (element.hasDispositionElement())
6563      composeString(t, "ExplanationOfBenefit", "disposition", element.getDispositionElement(), -1);
6564    for (int i = 0; i < element.getRelated().size(); i++)
6565      composeExplanationOfBenefitRelatedClaimComponent(t, "ExplanationOfBenefit", "related", element.getRelated().get(i), i);
6566    if (element.hasPrescription())
6567      composeReference(t, "ExplanationOfBenefit", "prescription", element.getPrescription(), -1);
6568    if (element.hasOriginalPrescription())
6569      composeReference(t, "ExplanationOfBenefit", "originalPrescription", element.getOriginalPrescription(), -1);
6570    if (element.hasPayee())
6571      composeExplanationOfBenefitPayeeComponent(t, "ExplanationOfBenefit", "payee", element.getPayee(), -1);
6572    for (int i = 0; i < element.getInformation().size(); i++)
6573      composeExplanationOfBenefitSupportingInformationComponent(t, "ExplanationOfBenefit", "information", element.getInformation().get(i), i);
6574    for (int i = 0; i < element.getCareTeam().size(); i++)
6575      composeExplanationOfBenefitCareTeamComponent(t, "ExplanationOfBenefit", "careTeam", element.getCareTeam().get(i), i);
6576    for (int i = 0; i < element.getDiagnosis().size(); i++)
6577      composeExplanationOfBenefitDiagnosisComponent(t, "ExplanationOfBenefit", "diagnosis", element.getDiagnosis().get(i), i);
6578    for (int i = 0; i < element.getProcedure().size(); i++)
6579      composeExplanationOfBenefitProcedureComponent(t, "ExplanationOfBenefit", "procedure", element.getProcedure().get(i), i);
6580    if (element.hasPrecedenceElement())
6581      composePositiveInt(t, "ExplanationOfBenefit", "precedence", element.getPrecedenceElement(), -1);
6582    if (element.hasInsurance())
6583      composeExplanationOfBenefitInsuranceComponent(t, "ExplanationOfBenefit", "insurance", element.getInsurance(), -1);
6584    if (element.hasAccident())
6585      composeExplanationOfBenefitAccidentComponent(t, "ExplanationOfBenefit", "accident", element.getAccident(), -1);
6586    for (int i = 0; i < element.getItem().size(); i++)
6587      composeExplanationOfBenefitItemComponent(t, "ExplanationOfBenefit", "item", element.getItem().get(i), i);
6588    for (int i = 0; i < element.getAddItem().size(); i++)
6589      composeExplanationOfBenefitAddedItemComponent(t, "ExplanationOfBenefit", "addItem", element.getAddItem().get(i), i);
6590    for (int i = 0; i < element.getTotal().size(); i++)
6591      composeExplanationOfBenefitTotalComponent(t, "ExplanationOfBenefit", "total", element.getTotal().get(i), i);
6592    if (element.hasPayment())
6593      composeExplanationOfBenefitPaymentComponent(t, "ExplanationOfBenefit", "payment", element.getPayment(), -1);
6594    if (element.hasForm())
6595      composeCodeableConcept(t, "ExplanationOfBenefit", "form", element.getForm(), -1);
6596    for (int i = 0; i < element.getProcessNote().size(); i++)
6597      composeExplanationOfBenefitNoteComponent(t, "ExplanationOfBenefit", "processNote", element.getProcessNote().get(i), i);
6598    for (int i = 0; i < element.getBenefitBalance().size(); i++)
6599      composeExplanationOfBenefitBenefitBalanceComponent(t, "ExplanationOfBenefit", "benefitBalance", element.getBenefitBalance().get(i), i);
6600  }
6601
6602  protected void composeExplanationOfBenefitRelatedClaimComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.RelatedClaimComponent element, int index) {
6603    if (element == null) 
6604      return;
6605    Complex t;
6606    if (Utilities.noString(parentType))
6607      t = parent;
6608    else {
6609      t = parent.predicate("fhir:"+parentType+'.'+name);
6610    }
6611    composeBackboneElement(t, "related", name, element, index);
6612    if (element.hasClaim())
6613      composeReference(t, "ExplanationOfBenefit", "claim", element.getClaim(), -1);
6614    if (element.hasRelationship())
6615      composeCodeableConcept(t, "ExplanationOfBenefit", "relationship", element.getRelationship(), -1);
6616    if (element.hasReference())
6617      composeIdentifier(t, "ExplanationOfBenefit", "reference", element.getReference(), -1);
6618  }
6619
6620  protected void composeExplanationOfBenefitPayeeComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.PayeeComponent element, int index) {
6621    if (element == null) 
6622      return;
6623    Complex t;
6624    if (Utilities.noString(parentType))
6625      t = parent;
6626    else {
6627      t = parent.predicate("fhir:"+parentType+'.'+name);
6628    }
6629    composeBackboneElement(t, "payee", name, element, index);
6630    if (element.hasType())
6631      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
6632    if (element.hasResource())
6633      composeCoding(t, "ExplanationOfBenefit", "resource", element.getResource(), -1);
6634    if (element.hasParty())
6635      composeReference(t, "ExplanationOfBenefit", "party", element.getParty(), -1);
6636  }
6637
6638  protected void composeExplanationOfBenefitSupportingInformationComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.SupportingInformationComponent element, int index) {
6639    if (element == null) 
6640      return;
6641    Complex t;
6642    if (Utilities.noString(parentType))
6643      t = parent;
6644    else {
6645      t = parent.predicate("fhir:"+parentType+'.'+name);
6646    }
6647    composeBackboneElement(t, "information", name, element, index);
6648    if (element.hasSequenceElement())
6649      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
6650    if (element.hasCategory())
6651      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
6652    if (element.hasCode())
6653      composeCodeableConcept(t, "ExplanationOfBenefit", "code", element.getCode(), -1);
6654    if (element.hasTiming())
6655      composeType(t, "ExplanationOfBenefit", "timing", element.getTiming(), -1);
6656    if (element.hasValue())
6657      composeType(t, "ExplanationOfBenefit", "value", element.getValue(), -1);
6658    if (element.hasReason())
6659      composeCoding(t, "ExplanationOfBenefit", "reason", element.getReason(), -1);
6660  }
6661
6662  protected void composeExplanationOfBenefitCareTeamComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.CareTeamComponent element, int index) {
6663    if (element == null) 
6664      return;
6665    Complex t;
6666    if (Utilities.noString(parentType))
6667      t = parent;
6668    else {
6669      t = parent.predicate("fhir:"+parentType+'.'+name);
6670    }
6671    composeBackboneElement(t, "careTeam", name, element, index);
6672    if (element.hasSequenceElement())
6673      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
6674    if (element.hasProvider())
6675      composeReference(t, "ExplanationOfBenefit", "provider", element.getProvider(), -1);
6676    if (element.hasResponsibleElement())
6677      composeBoolean(t, "ExplanationOfBenefit", "responsible", element.getResponsibleElement(), -1);
6678    if (element.hasRole())
6679      composeCodeableConcept(t, "ExplanationOfBenefit", "role", element.getRole(), -1);
6680    if (element.hasQualification())
6681      composeCodeableConcept(t, "ExplanationOfBenefit", "qualification", element.getQualification(), -1);
6682  }
6683
6684  protected void composeExplanationOfBenefitDiagnosisComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.DiagnosisComponent element, int index) {
6685    if (element == null) 
6686      return;
6687    Complex t;
6688    if (Utilities.noString(parentType))
6689      t = parent;
6690    else {
6691      t = parent.predicate("fhir:"+parentType+'.'+name);
6692    }
6693    composeBackboneElement(t, "diagnosis", name, element, index);
6694    if (element.hasSequenceElement())
6695      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
6696    if (element.hasDiagnosis())
6697      composeType(t, "ExplanationOfBenefit", "diagnosis", element.getDiagnosis(), -1);
6698    for (int i = 0; i < element.getType().size(); i++)
6699      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType().get(i), i);
6700    if (element.hasPackageCode())
6701      composeCodeableConcept(t, "ExplanationOfBenefit", "packageCode", element.getPackageCode(), -1);
6702  }
6703
6704  protected void composeExplanationOfBenefitProcedureComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.ProcedureComponent element, int index) {
6705    if (element == null) 
6706      return;
6707    Complex t;
6708    if (Utilities.noString(parentType))
6709      t = parent;
6710    else {
6711      t = parent.predicate("fhir:"+parentType+'.'+name);
6712    }
6713    composeBackboneElement(t, "procedure", name, element, index);
6714    if (element.hasSequenceElement())
6715      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
6716    if (element.hasDateElement())
6717      composeDateTime(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
6718    if (element.hasProcedure())
6719      composeType(t, "ExplanationOfBenefit", "procedure", element.getProcedure(), -1);
6720  }
6721
6722  protected void composeExplanationOfBenefitInsuranceComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.InsuranceComponent element, int index) {
6723    if (element == null) 
6724      return;
6725    Complex t;
6726    if (Utilities.noString(parentType))
6727      t = parent;
6728    else {
6729      t = parent.predicate("fhir:"+parentType+'.'+name);
6730    }
6731    composeBackboneElement(t, "insurance", name, element, index);
6732    if (element.hasCoverage())
6733      composeReference(t, "ExplanationOfBenefit", "coverage", element.getCoverage(), -1);
6734    for (int i = 0; i < element.getPreAuthRef().size(); i++)
6735      composeString(t, "ExplanationOfBenefit", "preAuthRef", element.getPreAuthRef().get(i), i);
6736  }
6737
6738  protected void composeExplanationOfBenefitAccidentComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AccidentComponent element, int index) {
6739    if (element == null) 
6740      return;
6741    Complex t;
6742    if (Utilities.noString(parentType))
6743      t = parent;
6744    else {
6745      t = parent.predicate("fhir:"+parentType+'.'+name);
6746    }
6747    composeBackboneElement(t, "accident", name, element, index);
6748    if (element.hasDateElement())
6749      composeDate(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
6750    if (element.hasType())
6751      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
6752    if (element.hasLocation())
6753      composeType(t, "ExplanationOfBenefit", "location", element.getLocation(), -1);
6754  }
6755
6756  protected void composeExplanationOfBenefitItemComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.ItemComponent element, int index) {
6757    if (element == null) 
6758      return;
6759    Complex t;
6760    if (Utilities.noString(parentType))
6761      t = parent;
6762    else {
6763      t = parent.predicate("fhir:"+parentType+'.'+name);
6764    }
6765    composeBackboneElement(t, "item", name, element, index);
6766    if (element.hasSequenceElement())
6767      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
6768    for (int i = 0; i < element.getCareTeamSequence().size(); i++)
6769      composePositiveInt(t, "ExplanationOfBenefit", "careTeamSequence", element.getCareTeamSequence().get(i), i);
6770    for (int i = 0; i < element.getDiagnosisSequence().size(); i++)
6771      composePositiveInt(t, "ExplanationOfBenefit", "diagnosisSequence", element.getDiagnosisSequence().get(i), i);
6772    for (int i = 0; i < element.getProcedureSequence().size(); i++)
6773      composePositiveInt(t, "ExplanationOfBenefit", "procedureSequence", element.getProcedureSequence().get(i), i);
6774    for (int i = 0; i < element.getInformationSequence().size(); i++)
6775      composePositiveInt(t, "ExplanationOfBenefit", "informationSequence", element.getInformationSequence().get(i), i);
6776    if (element.hasRevenue())
6777      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
6778    if (element.hasCategory())
6779      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
6780    if (element.hasService())
6781      composeCodeableConcept(t, "ExplanationOfBenefit", "service", element.getService(), -1);
6782    for (int i = 0; i < element.getModifier().size(); i++)
6783      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
6784    for (int i = 0; i < element.getProgramCode().size(); i++)
6785      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
6786    if (element.hasServiced())
6787      composeType(t, "ExplanationOfBenefit", "serviced", element.getServiced(), -1);
6788    if (element.hasLocation())
6789      composeType(t, "ExplanationOfBenefit", "location", element.getLocation(), -1);
6790    if (element.hasQuantity())
6791      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
6792    if (element.hasUnitPrice())
6793      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
6794    if (element.hasFactorElement())
6795      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
6796    if (element.hasNet())
6797      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
6798    for (int i = 0; i < element.getUdi().size(); i++)
6799      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
6800    if (element.hasBodySite())
6801      composeCodeableConcept(t, "ExplanationOfBenefit", "bodySite", element.getBodySite(), -1);
6802    for (int i = 0; i < element.getSubSite().size(); i++)
6803      composeCodeableConcept(t, "ExplanationOfBenefit", "subSite", element.getSubSite().get(i), i);
6804    for (int i = 0; i < element.getEncounter().size(); i++)
6805      composeReference(t, "ExplanationOfBenefit", "encounter", element.getEncounter().get(i), i);
6806    for (int i = 0; i < element.getNoteNumber().size(); i++)
6807      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
6808    for (int i = 0; i < element.getAdjudication().size(); i++)
6809      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
6810    for (int i = 0; i < element.getDetail().size(); i++)
6811      composeExplanationOfBenefitDetailComponent(t, "ExplanationOfBenefit", "detail", element.getDetail().get(i), i);
6812  }
6813
6814  protected void composeExplanationOfBenefitAdjudicationComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AdjudicationComponent element, int index) {
6815    if (element == null) 
6816      return;
6817    Complex t;
6818    if (Utilities.noString(parentType))
6819      t = parent;
6820    else {
6821      t = parent.predicate("fhir:"+parentType+'.'+name);
6822    }
6823    composeBackboneElement(t, "adjudication", name, element, index);
6824    if (element.hasCategory())
6825      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
6826    if (element.hasReason())
6827      composeCodeableConcept(t, "ExplanationOfBenefit", "reason", element.getReason(), -1);
6828    if (element.hasAmount())
6829      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
6830    if (element.hasValueElement())
6831      composeDecimal(t, "ExplanationOfBenefit", "value", element.getValueElement(), -1);
6832  }
6833
6834  protected void composeExplanationOfBenefitDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.DetailComponent element, int index) {
6835    if (element == null) 
6836      return;
6837    Complex t;
6838    if (Utilities.noString(parentType))
6839      t = parent;
6840    else {
6841      t = parent.predicate("fhir:"+parentType+'.'+name);
6842    }
6843    composeBackboneElement(t, "detail", name, element, index);
6844    if (element.hasSequenceElement())
6845      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
6846    if (element.hasRevenue())
6847      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
6848    if (element.hasCategory())
6849      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
6850    if (element.hasService())
6851      composeCodeableConcept(t, "ExplanationOfBenefit", "service", element.getService(), -1);
6852    for (int i = 0; i < element.getModifier().size(); i++)
6853      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
6854    for (int i = 0; i < element.getProgramCode().size(); i++)
6855      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
6856    if (element.hasQuantity())
6857      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
6858    if (element.hasUnitPrice())
6859      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
6860    if (element.hasFactorElement())
6861      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
6862    if (element.hasNet())
6863      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
6864    for (int i = 0; i < element.getUdi().size(); i++)
6865      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
6866    for (int i = 0; i < element.getNoteNumber().size(); i++)
6867      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
6868    for (int i = 0; i < element.getAdjudication().size(); i++)
6869      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
6870    for (int i = 0; i < element.getSubDetail().size(); i++)
6871      composeExplanationOfBenefitSubDetailComponent(t, "ExplanationOfBenefit", "subDetail", element.getSubDetail().get(i), i);
6872  }
6873
6874  protected void composeExplanationOfBenefitSubDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.SubDetailComponent element, int index) {
6875    if (element == null) 
6876      return;
6877    Complex t;
6878    if (Utilities.noString(parentType))
6879      t = parent;
6880    else {
6881      t = parent.predicate("fhir:"+parentType+'.'+name);
6882    }
6883    composeBackboneElement(t, "subDetail", name, element, index);
6884    if (element.hasSequenceElement())
6885      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
6886    if (element.hasRevenue())
6887      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
6888    if (element.hasCategory())
6889      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
6890    if (element.hasService())
6891      composeCodeableConcept(t, "ExplanationOfBenefit", "service", element.getService(), -1);
6892    for (int i = 0; i < element.getModifier().size(); i++)
6893      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
6894    for (int i = 0; i < element.getProgramCode().size(); i++)
6895      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
6896    if (element.hasQuantity())
6897      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
6898    if (element.hasUnitPrice())
6899      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
6900    if (element.hasFactorElement())
6901      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
6902    if (element.hasNet())
6903      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
6904    for (int i = 0; i < element.getUdi().size(); i++)
6905      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
6906    for (int i = 0; i < element.getNoteNumber().size(); i++)
6907      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
6908    for (int i = 0; i < element.getAdjudication().size(); i++)
6909      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
6910  }
6911
6912  protected void composeExplanationOfBenefitAddedItemComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AddedItemComponent element, int index) {
6913    if (element == null) 
6914      return;
6915    Complex t;
6916    if (Utilities.noString(parentType))
6917      t = parent;
6918    else {
6919      t = parent.predicate("fhir:"+parentType+'.'+name);
6920    }
6921    composeBackboneElement(t, "addItem", name, element, index);
6922    for (int i = 0; i < element.getItemSequence().size(); i++)
6923      composePositiveInt(t, "ExplanationOfBenefit", "itemSequence", element.getItemSequence().get(i), i);
6924    for (int i = 0; i < element.getDetailSequence().size(); i++)
6925      composePositiveInt(t, "ExplanationOfBenefit", "detailSequence", element.getDetailSequence().get(i), i);
6926    for (int i = 0; i < element.getSubDetailSequence().size(); i++)
6927      composePositiveInt(t, "ExplanationOfBenefit", "subDetailSequence", element.getSubDetailSequence().get(i), i);
6928    if (element.hasService())
6929      composeCodeableConcept(t, "ExplanationOfBenefit", "service", element.getService(), -1);
6930    for (int i = 0; i < element.getModifier().size(); i++)
6931      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
6932    if (element.hasFee())
6933      composeMoney(t, "ExplanationOfBenefit", "fee", element.getFee(), -1);
6934    for (int i = 0; i < element.getNoteNumber().size(); i++)
6935      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
6936    for (int i = 0; i < element.getAdjudication().size(); i++)
6937      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
6938  }
6939
6940  protected void composeExplanationOfBenefitTotalComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.TotalComponent element, int index) {
6941    if (element == null) 
6942      return;
6943    Complex t;
6944    if (Utilities.noString(parentType))
6945      t = parent;
6946    else {
6947      t = parent.predicate("fhir:"+parentType+'.'+name);
6948    }
6949    composeBackboneElement(t, "total", name, element, index);
6950    if (element.hasCategory())
6951      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
6952    if (element.hasAmount())
6953      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
6954  }
6955
6956  protected void composeExplanationOfBenefitPaymentComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.PaymentComponent element, int index) {
6957    if (element == null) 
6958      return;
6959    Complex t;
6960    if (Utilities.noString(parentType))
6961      t = parent;
6962    else {
6963      t = parent.predicate("fhir:"+parentType+'.'+name);
6964    }
6965    composeBackboneElement(t, "payment", name, element, index);
6966    if (element.hasType())
6967      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
6968    if (element.hasAdjustment())
6969      composeMoney(t, "ExplanationOfBenefit", "adjustment", element.getAdjustment(), -1);
6970    if (element.hasAdjustmentReason())
6971      composeCodeableConcept(t, "ExplanationOfBenefit", "adjustmentReason", element.getAdjustmentReason(), -1);
6972    if (element.hasDateElement())
6973      composeDate(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
6974    if (element.hasAmount())
6975      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
6976    if (element.hasIdentifier())
6977      composeIdentifier(t, "ExplanationOfBenefit", "identifier", element.getIdentifier(), -1);
6978  }
6979
6980  protected void composeExplanationOfBenefitNoteComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.NoteComponent element, int index) {
6981    if (element == null) 
6982      return;
6983    Complex t;
6984    if (Utilities.noString(parentType))
6985      t = parent;
6986    else {
6987      t = parent.predicate("fhir:"+parentType+'.'+name);
6988    }
6989    composeBackboneElement(t, "processNote", name, element, index);
6990    if (element.hasNumberElement())
6991      composePositiveInt(t, "ExplanationOfBenefit", "number", element.getNumberElement(), -1);
6992    if (element.hasTypeElement())
6993      composeEnum(t, "ExplanationOfBenefit", "type", element.getTypeElement(), -1);
6994    if (element.hasTextElement())
6995      composeString(t, "ExplanationOfBenefit", "text", element.getTextElement(), -1);
6996    if (element.hasLanguage())
6997      composeCodeableConcept(t, "ExplanationOfBenefit", "language", element.getLanguage(), -1);
6998  }
6999
7000  protected void composeExplanationOfBenefitBenefitBalanceComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.BenefitBalanceComponent element, int index) {
7001    if (element == null) 
7002      return;
7003    Complex t;
7004    if (Utilities.noString(parentType))
7005      t = parent;
7006    else {
7007      t = parent.predicate("fhir:"+parentType+'.'+name);
7008    }
7009    composeBackboneElement(t, "benefitBalance", name, element, index);
7010    if (element.hasCategory())
7011      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7012    if (element.hasSubCategory())
7013      composeCodeableConcept(t, "ExplanationOfBenefit", "subCategory", element.getSubCategory(), -1);
7014    if (element.hasExcludedElement())
7015      composeBoolean(t, "ExplanationOfBenefit", "excluded", element.getExcludedElement(), -1);
7016    if (element.hasNameElement())
7017      composeString(t, "ExplanationOfBenefit", "name", element.getNameElement(), -1);
7018    if (element.hasDescriptionElement())
7019      composeString(t, "ExplanationOfBenefit", "description", element.getDescriptionElement(), -1);
7020    if (element.hasNetwork())
7021      composeCodeableConcept(t, "ExplanationOfBenefit", "network", element.getNetwork(), -1);
7022    if (element.hasUnit())
7023      composeCodeableConcept(t, "ExplanationOfBenefit", "unit", element.getUnit(), -1);
7024    if (element.hasTerm())
7025      composeCodeableConcept(t, "ExplanationOfBenefit", "term", element.getTerm(), -1);
7026    for (int i = 0; i < element.getFinancial().size(); i++)
7027      composeExplanationOfBenefitBenefitComponent(t, "ExplanationOfBenefit", "financial", element.getFinancial().get(i), i);
7028  }
7029
7030  protected void composeExplanationOfBenefitBenefitComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.BenefitComponent element, int index) {
7031    if (element == null) 
7032      return;
7033    Complex t;
7034    if (Utilities.noString(parentType))
7035      t = parent;
7036    else {
7037      t = parent.predicate("fhir:"+parentType+'.'+name);
7038    }
7039    composeBackboneElement(t, "financial", name, element, index);
7040    if (element.hasType())
7041      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7042    if (element.hasAllowed())
7043      composeType(t, "ExplanationOfBenefit", "allowed", element.getAllowed(), -1);
7044    if (element.hasUsed())
7045      composeType(t, "ExplanationOfBenefit", "used", element.getUsed(), -1);
7046  }
7047
7048  protected void composeFamilyMemberHistory(Complex parent, String parentType, String name, FamilyMemberHistory element, int index) {
7049    if (element == null) 
7050      return;
7051    Complex t;
7052    if (Utilities.noString(parentType))
7053      t = parent;
7054    else {
7055      t = parent.predicate("fhir:"+parentType+'.'+name);
7056    }
7057    composeDomainResource(t, "FamilyMemberHistory", name, element, index);
7058    for (int i = 0; i < element.getIdentifier().size(); i++)
7059      composeIdentifier(t, "FamilyMemberHistory", "identifier", element.getIdentifier().get(i), i);
7060    for (int i = 0; i < element.getInstantiates().size(); i++)
7061      composeUri(t, "FamilyMemberHistory", "instantiates", element.getInstantiates().get(i), i);
7062    if (element.hasStatusElement())
7063      composeEnum(t, "FamilyMemberHistory", "status", element.getStatusElement(), -1);
7064    if (element.hasDataAbsentReason())
7065      composeCodeableConcept(t, "FamilyMemberHistory", "dataAbsentReason", element.getDataAbsentReason(), -1);
7066    if (element.hasPatient())
7067      composeReference(t, "FamilyMemberHistory", "patient", element.getPatient(), -1);
7068    if (element.hasDateElement())
7069      composeDateTime(t, "FamilyMemberHistory", "date", element.getDateElement(), -1);
7070    if (element.hasNameElement())
7071      composeString(t, "FamilyMemberHistory", "name", element.getNameElement(), -1);
7072    if (element.hasRelationship())
7073      composeCodeableConcept(t, "FamilyMemberHistory", "relationship", element.getRelationship(), -1);
7074    if (element.hasGenderElement())
7075      composeEnum(t, "FamilyMemberHistory", "gender", element.getGenderElement(), -1);
7076    if (element.hasBorn())
7077      composeType(t, "FamilyMemberHistory", "born", element.getBorn(), -1);
7078    if (element.hasAge())
7079      composeType(t, "FamilyMemberHistory", "age", element.getAge(), -1);
7080    if (element.hasEstimatedAgeElement())
7081      composeBoolean(t, "FamilyMemberHistory", "estimatedAge", element.getEstimatedAgeElement(), -1);
7082    if (element.hasDeceased())
7083      composeType(t, "FamilyMemberHistory", "deceased", element.getDeceased(), -1);
7084    for (int i = 0; i < element.getReasonCode().size(); i++)
7085      composeCodeableConcept(t, "FamilyMemberHistory", "reasonCode", element.getReasonCode().get(i), i);
7086    for (int i = 0; i < element.getReasonReference().size(); i++)
7087      composeReference(t, "FamilyMemberHistory", "reasonReference", element.getReasonReference().get(i), i);
7088    for (int i = 0; i < element.getNote().size(); i++)
7089      composeAnnotation(t, "FamilyMemberHistory", "note", element.getNote().get(i), i);
7090    for (int i = 0; i < element.getCondition().size(); i++)
7091      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(t, "FamilyMemberHistory", "condition", element.getCondition().get(i), i);
7092  }
7093
7094  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(Complex parent, String parentType, String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element, int index) {
7095    if (element == null) 
7096      return;
7097    Complex t;
7098    if (Utilities.noString(parentType))
7099      t = parent;
7100    else {
7101      t = parent.predicate("fhir:"+parentType+'.'+name);
7102    }
7103    composeBackboneElement(t, "condition", name, element, index);
7104    if (element.hasCode())
7105      composeCodeableConcept(t, "FamilyMemberHistory", "code", element.getCode(), -1);
7106    if (element.hasOutcome())
7107      composeCodeableConcept(t, "FamilyMemberHistory", "outcome", element.getOutcome(), -1);
7108    if (element.hasOnset())
7109      composeType(t, "FamilyMemberHistory", "onset", element.getOnset(), -1);
7110    for (int i = 0; i < element.getNote().size(); i++)
7111      composeAnnotation(t, "FamilyMemberHistory", "note", element.getNote().get(i), i);
7112  }
7113
7114  protected void composeFlag(Complex parent, String parentType, String name, Flag element, int index) {
7115    if (element == null) 
7116      return;
7117    Complex t;
7118    if (Utilities.noString(parentType))
7119      t = parent;
7120    else {
7121      t = parent.predicate("fhir:"+parentType+'.'+name);
7122    }
7123    composeDomainResource(t, "Flag", name, element, index);
7124    for (int i = 0; i < element.getIdentifier().size(); i++)
7125      composeIdentifier(t, "Flag", "identifier", element.getIdentifier().get(i), i);
7126    if (element.hasStatusElement())
7127      composeEnum(t, "Flag", "status", element.getStatusElement(), -1);
7128    for (int i = 0; i < element.getCategory().size(); i++)
7129      composeCodeableConcept(t, "Flag", "category", element.getCategory().get(i), i);
7130    if (element.hasCode())
7131      composeCodeableConcept(t, "Flag", "code", element.getCode(), -1);
7132    if (element.hasSubject())
7133      composeReference(t, "Flag", "subject", element.getSubject(), -1);
7134    if (element.hasPeriod())
7135      composePeriod(t, "Flag", "period", element.getPeriod(), -1);
7136    if (element.hasEncounter())
7137      composeReference(t, "Flag", "encounter", element.getEncounter(), -1);
7138    if (element.hasAuthor())
7139      composeReference(t, "Flag", "author", element.getAuthor(), -1);
7140  }
7141
7142  protected void composeGoal(Complex parent, String parentType, String name, Goal element, int index) {
7143    if (element == null) 
7144      return;
7145    Complex t;
7146    if (Utilities.noString(parentType))
7147      t = parent;
7148    else {
7149      t = parent.predicate("fhir:"+parentType+'.'+name);
7150    }
7151    composeDomainResource(t, "Goal", name, element, index);
7152    for (int i = 0; i < element.getIdentifier().size(); i++)
7153      composeIdentifier(t, "Goal", "identifier", element.getIdentifier().get(i), i);
7154    if (element.hasStatusElement())
7155      composeEnum(t, "Goal", "status", element.getStatusElement(), -1);
7156    for (int i = 0; i < element.getCategory().size(); i++)
7157      composeCodeableConcept(t, "Goal", "category", element.getCategory().get(i), i);
7158    if (element.hasPriority())
7159      composeCodeableConcept(t, "Goal", "priority", element.getPriority(), -1);
7160    if (element.hasDescription())
7161      composeCodeableConcept(t, "Goal", "description", element.getDescription(), -1);
7162    if (element.hasSubject())
7163      composeReference(t, "Goal", "subject", element.getSubject(), -1);
7164    if (element.hasStart())
7165      composeType(t, "Goal", "start", element.getStart(), -1);
7166    if (element.hasTarget())
7167      composeGoalGoalTargetComponent(t, "Goal", "target", element.getTarget(), -1);
7168    if (element.hasStatusDateElement())
7169      composeDate(t, "Goal", "statusDate", element.getStatusDateElement(), -1);
7170    if (element.hasStatusReasonElement())
7171      composeString(t, "Goal", "statusReason", element.getStatusReasonElement(), -1);
7172    if (element.hasExpressedBy())
7173      composeReference(t, "Goal", "expressedBy", element.getExpressedBy(), -1);
7174    for (int i = 0; i < element.getAddresses().size(); i++)
7175      composeReference(t, "Goal", "addresses", element.getAddresses().get(i), i);
7176    for (int i = 0; i < element.getNote().size(); i++)
7177      composeAnnotation(t, "Goal", "note", element.getNote().get(i), i);
7178    for (int i = 0; i < element.getOutcomeCode().size(); i++)
7179      composeCodeableConcept(t, "Goal", "outcomeCode", element.getOutcomeCode().get(i), i);
7180    for (int i = 0; i < element.getOutcomeReference().size(); i++)
7181      composeReference(t, "Goal", "outcomeReference", element.getOutcomeReference().get(i), i);
7182  }
7183
7184  protected void composeGoalGoalTargetComponent(Complex parent, String parentType, String name, Goal.GoalTargetComponent element, int index) {
7185    if (element == null) 
7186      return;
7187    Complex t;
7188    if (Utilities.noString(parentType))
7189      t = parent;
7190    else {
7191      t = parent.predicate("fhir:"+parentType+'.'+name);
7192    }
7193    composeBackboneElement(t, "target", name, element, index);
7194    if (element.hasMeasure())
7195      composeCodeableConcept(t, "Goal", "measure", element.getMeasure(), -1);
7196    if (element.hasDetail())
7197      composeType(t, "Goal", "detail", element.getDetail(), -1);
7198    if (element.hasDue())
7199      composeType(t, "Goal", "due", element.getDue(), -1);
7200  }
7201
7202  protected void composeGraphDefinition(Complex parent, String parentType, String name, GraphDefinition element, int index) {
7203    if (element == null) 
7204      return;
7205    Complex t;
7206    if (Utilities.noString(parentType))
7207      t = parent;
7208    else {
7209      t = parent.predicate("fhir:"+parentType+'.'+name);
7210    }
7211    composeDomainResource(t, "GraphDefinition", name, element, index);
7212    if (element.hasUrlElement())
7213      composeUri(t, "GraphDefinition", "url", element.getUrlElement(), -1);
7214    if (element.hasVersionElement())
7215      composeString(t, "GraphDefinition", "version", element.getVersionElement(), -1);
7216    if (element.hasNameElement())
7217      composeString(t, "GraphDefinition", "name", element.getNameElement(), -1);
7218    if (element.hasStatusElement())
7219      composeEnum(t, "GraphDefinition", "status", element.getStatusElement(), -1);
7220    if (element.hasExperimentalElement())
7221      composeBoolean(t, "GraphDefinition", "experimental", element.getExperimentalElement(), -1);
7222    if (element.hasDateElement())
7223      composeDateTime(t, "GraphDefinition", "date", element.getDateElement(), -1);
7224    if (element.hasPublisherElement())
7225      composeString(t, "GraphDefinition", "publisher", element.getPublisherElement(), -1);
7226    for (int i = 0; i < element.getContact().size(); i++)
7227      composeContactDetail(t, "GraphDefinition", "contact", element.getContact().get(i), i);
7228    if (element.hasDescriptionElement())
7229      composeMarkdown(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
7230    for (int i = 0; i < element.getUseContext().size(); i++)
7231      composeUsageContext(t, "GraphDefinition", "useContext", element.getUseContext().get(i), i);
7232    for (int i = 0; i < element.getJurisdiction().size(); i++)
7233      composeCodeableConcept(t, "GraphDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
7234    if (element.hasPurposeElement())
7235      composeMarkdown(t, "GraphDefinition", "purpose", element.getPurposeElement(), -1);
7236    if (element.hasStartElement())
7237      composeCode(t, "GraphDefinition", "start", element.getStartElement(), -1);
7238    if (element.hasProfileElement())
7239      composeCanonical(t, "GraphDefinition", "profile", element.getProfileElement(), -1);
7240    for (int i = 0; i < element.getLink().size(); i++)
7241      composeGraphDefinitionGraphDefinitionLinkComponent(t, "GraphDefinition", "link", element.getLink().get(i), i);
7242  }
7243
7244  protected void composeGraphDefinitionGraphDefinitionLinkComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkComponent element, int index) {
7245    if (element == null) 
7246      return;
7247    Complex t;
7248    if (Utilities.noString(parentType))
7249      t = parent;
7250    else {
7251      t = parent.predicate("fhir:"+parentType+'.'+name);
7252    }
7253    composeBackboneElement(t, "link", name, element, index);
7254    if (element.hasPathElement())
7255      composeString(t, "GraphDefinition", "path", element.getPathElement(), -1);
7256    if (element.hasSliceNameElement())
7257      composeString(t, "GraphDefinition", "sliceName", element.getSliceNameElement(), -1);
7258    if (element.hasMinElement())
7259      composeInteger(t, "GraphDefinition", "min", element.getMinElement(), -1);
7260    if (element.hasMaxElement())
7261      composeString(t, "GraphDefinition", "max", element.getMaxElement(), -1);
7262    if (element.hasDescriptionElement())
7263      composeString(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
7264    for (int i = 0; i < element.getTarget().size(); i++)
7265      composeGraphDefinitionGraphDefinitionLinkTargetComponent(t, "GraphDefinition", "target", element.getTarget().get(i), i);
7266  }
7267
7268  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkTargetComponent element, int index) {
7269    if (element == null) 
7270      return;
7271    Complex t;
7272    if (Utilities.noString(parentType))
7273      t = parent;
7274    else {
7275      t = parent.predicate("fhir:"+parentType+'.'+name);
7276    }
7277    composeBackboneElement(t, "target", name, element, index);
7278    if (element.hasTypeElement())
7279      composeCode(t, "GraphDefinition", "type", element.getTypeElement(), -1);
7280    if (element.hasParamsElement())
7281      composeString(t, "GraphDefinition", "params", element.getParamsElement(), -1);
7282    if (element.hasProfileElement())
7283      composeCanonical(t, "GraphDefinition", "profile", element.getProfileElement(), -1);
7284    for (int i = 0; i < element.getCompartment().size(); i++)
7285      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(t, "GraphDefinition", "compartment", element.getCompartment().get(i), i);
7286    for (int i = 0; i < element.getLink().size(); i++)
7287      composeGraphDefinitionGraphDefinitionLinkComponent(t, "GraphDefinition", "link", element.getLink().get(i), i);
7288  }
7289
7290  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element, int index) {
7291    if (element == null) 
7292      return;
7293    Complex t;
7294    if (Utilities.noString(parentType))
7295      t = parent;
7296    else {
7297      t = parent.predicate("fhir:"+parentType+'.'+name);
7298    }
7299    composeBackboneElement(t, "compartment", name, element, index);
7300    if (element.hasUseElement())
7301      composeEnum(t, "GraphDefinition", "use", element.getUseElement(), -1);
7302    if (element.hasCodeElement())
7303      composeEnum(t, "GraphDefinition", "code", element.getCodeElement(), -1);
7304    if (element.hasRuleElement())
7305      composeEnum(t, "GraphDefinition", "rule", element.getRuleElement(), -1);
7306    if (element.hasExpressionElement())
7307      composeString(t, "GraphDefinition", "expression", element.getExpressionElement(), -1);
7308    if (element.hasDescriptionElement())
7309      composeString(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
7310  }
7311
7312  protected void composeGroup(Complex parent, String parentType, String name, Group element, int index) {
7313    if (element == null) 
7314      return;
7315    Complex t;
7316    if (Utilities.noString(parentType))
7317      t = parent;
7318    else {
7319      t = parent.predicate("fhir:"+parentType+'.'+name);
7320    }
7321    composeDomainResource(t, "Group", name, element, index);
7322    for (int i = 0; i < element.getIdentifier().size(); i++)
7323      composeIdentifier(t, "Group", "identifier", element.getIdentifier().get(i), i);
7324    if (element.hasActiveElement())
7325      composeBoolean(t, "Group", "active", element.getActiveElement(), -1);
7326    if (element.hasTypeElement())
7327      composeEnum(t, "Group", "type", element.getTypeElement(), -1);
7328    if (element.hasActualElement())
7329      composeBoolean(t, "Group", "actual", element.getActualElement(), -1);
7330    if (element.hasCode())
7331      composeCodeableConcept(t, "Group", "code", element.getCode(), -1);
7332    if (element.hasNameElement())
7333      composeString(t, "Group", "name", element.getNameElement(), -1);
7334    if (element.hasQuantityElement())
7335      composeUnsignedInt(t, "Group", "quantity", element.getQuantityElement(), -1);
7336    for (int i = 0; i < element.getCharacteristic().size(); i++)
7337      composeGroupGroupCharacteristicComponent(t, "Group", "characteristic", element.getCharacteristic().get(i), i);
7338    for (int i = 0; i < element.getMember().size(); i++)
7339      composeGroupGroupMemberComponent(t, "Group", "member", element.getMember().get(i), i);
7340  }
7341
7342  protected void composeGroupGroupCharacteristicComponent(Complex parent, String parentType, String name, Group.GroupCharacteristicComponent element, int index) {
7343    if (element == null) 
7344      return;
7345    Complex t;
7346    if (Utilities.noString(parentType))
7347      t = parent;
7348    else {
7349      t = parent.predicate("fhir:"+parentType+'.'+name);
7350    }
7351    composeBackboneElement(t, "characteristic", name, element, index);
7352    if (element.hasCode())
7353      composeCodeableConcept(t, "Group", "code", element.getCode(), -1);
7354    if (element.hasValue())
7355      composeType(t, "Group", "value", element.getValue(), -1);
7356    if (element.hasExcludeElement())
7357      composeBoolean(t, "Group", "exclude", element.getExcludeElement(), -1);
7358    if (element.hasPeriod())
7359      composePeriod(t, "Group", "period", element.getPeriod(), -1);
7360  }
7361
7362  protected void composeGroupGroupMemberComponent(Complex parent, String parentType, String name, Group.GroupMemberComponent element, int index) {
7363    if (element == null) 
7364      return;
7365    Complex t;
7366    if (Utilities.noString(parentType))
7367      t = parent;
7368    else {
7369      t = parent.predicate("fhir:"+parentType+'.'+name);
7370    }
7371    composeBackboneElement(t, "member", name, element, index);
7372    if (element.hasEntity())
7373      composeReference(t, "Group", "entity", element.getEntity(), -1);
7374    if (element.hasPeriod())
7375      composePeriod(t, "Group", "period", element.getPeriod(), -1);
7376    if (element.hasInactiveElement())
7377      composeBoolean(t, "Group", "inactive", element.getInactiveElement(), -1);
7378  }
7379
7380  protected void composeGuidanceResponse(Complex parent, String parentType, String name, GuidanceResponse element, int index) {
7381    if (element == null) 
7382      return;
7383    Complex t;
7384    if (Utilities.noString(parentType))
7385      t = parent;
7386    else {
7387      t = parent.predicate("fhir:"+parentType+'.'+name);
7388    }
7389    composeDomainResource(t, "GuidanceResponse", name, element, index);
7390    if (element.hasRequestIdElement())
7391      composeId(t, "GuidanceResponse", "requestId", element.getRequestIdElement(), -1);
7392    for (int i = 0; i < element.getIdentifier().size(); i++)
7393      composeIdentifier(t, "GuidanceResponse", "identifier", element.getIdentifier().get(i), i);
7394    if (element.hasModule())
7395      composeType(t, "GuidanceResponse", "module", element.getModule(), -1);
7396    if (element.hasStatusElement())
7397      composeEnum(t, "GuidanceResponse", "status", element.getStatusElement(), -1);
7398    if (element.hasSubject())
7399      composeReference(t, "GuidanceResponse", "subject", element.getSubject(), -1);
7400    if (element.hasContext())
7401      composeReference(t, "GuidanceResponse", "context", element.getContext(), -1);
7402    if (element.hasOccurrenceDateTimeElement())
7403      composeDateTime(t, "GuidanceResponse", "occurrenceDateTime", element.getOccurrenceDateTimeElement(), -1);
7404    if (element.hasPerformer())
7405      composeReference(t, "GuidanceResponse", "performer", element.getPerformer(), -1);
7406    for (int i = 0; i < element.getReasonCode().size(); i++)
7407      composeCodeableConcept(t, "GuidanceResponse", "reasonCode", element.getReasonCode().get(i), i);
7408    for (int i = 0; i < element.getReasonReference().size(); i++)
7409      composeReference(t, "GuidanceResponse", "reasonReference", element.getReasonReference().get(i), i);
7410    for (int i = 0; i < element.getNote().size(); i++)
7411      composeAnnotation(t, "GuidanceResponse", "note", element.getNote().get(i), i);
7412    for (int i = 0; i < element.getEvaluationMessage().size(); i++)
7413      composeReference(t, "GuidanceResponse", "evaluationMessage", element.getEvaluationMessage().get(i), i);
7414    if (element.hasOutputParameters())
7415      composeReference(t, "GuidanceResponse", "outputParameters", element.getOutputParameters(), -1);
7416    if (element.hasResult())
7417      composeReference(t, "GuidanceResponse", "result", element.getResult(), -1);
7418    for (int i = 0; i < element.getDataRequirement().size(); i++)
7419      composeDataRequirement(t, "GuidanceResponse", "dataRequirement", element.getDataRequirement().get(i), i);
7420  }
7421
7422  protected void composeHealthcareService(Complex parent, String parentType, String name, HealthcareService element, int index) {
7423    if (element == null) 
7424      return;
7425    Complex t;
7426    if (Utilities.noString(parentType))
7427      t = parent;
7428    else {
7429      t = parent.predicate("fhir:"+parentType+'.'+name);
7430    }
7431    composeDomainResource(t, "HealthcareService", name, element, index);
7432    for (int i = 0; i < element.getIdentifier().size(); i++)
7433      composeIdentifier(t, "HealthcareService", "identifier", element.getIdentifier().get(i), i);
7434    if (element.hasActiveElement())
7435      composeBoolean(t, "HealthcareService", "active", element.getActiveElement(), -1);
7436    if (element.hasProvidedBy())
7437      composeReference(t, "HealthcareService", "providedBy", element.getProvidedBy(), -1);
7438    for (int i = 0; i < element.getCategory().size(); i++)
7439      composeCodeableConcept(t, "HealthcareService", "category", element.getCategory().get(i), i);
7440    for (int i = 0; i < element.getType().size(); i++)
7441      composeCodeableConcept(t, "HealthcareService", "type", element.getType().get(i), i);
7442    for (int i = 0; i < element.getSpecialty().size(); i++)
7443      composeCodeableConcept(t, "HealthcareService", "specialty", element.getSpecialty().get(i), i);
7444    for (int i = 0; i < element.getLocation().size(); i++)
7445      composeReference(t, "HealthcareService", "location", element.getLocation().get(i), i);
7446    if (element.hasNameElement())
7447      composeString(t, "HealthcareService", "name", element.getNameElement(), -1);
7448    if (element.hasCommentElement())
7449      composeString(t, "HealthcareService", "comment", element.getCommentElement(), -1);
7450    if (element.hasExtraDetailsElement())
7451      composeString(t, "HealthcareService", "extraDetails", element.getExtraDetailsElement(), -1);
7452    if (element.hasPhoto())
7453      composeAttachment(t, "HealthcareService", "photo", element.getPhoto(), -1);
7454    for (int i = 0; i < element.getTelecom().size(); i++)
7455      composeContactPoint(t, "HealthcareService", "telecom", element.getTelecom().get(i), i);
7456    for (int i = 0; i < element.getCoverageArea().size(); i++)
7457      composeReference(t, "HealthcareService", "coverageArea", element.getCoverageArea().get(i), i);
7458    for (int i = 0; i < element.getServiceProvisionCode().size(); i++)
7459      composeCodeableConcept(t, "HealthcareService", "serviceProvisionCode", element.getServiceProvisionCode().get(i), i);
7460    if (element.hasEligibility())
7461      composeCodeableConcept(t, "HealthcareService", "eligibility", element.getEligibility(), -1);
7462    if (element.hasEligibilityNoteElement())
7463      composeString(t, "HealthcareService", "eligibilityNote", element.getEligibilityNoteElement(), -1);
7464    for (int i = 0; i < element.getProgramName().size(); i++)
7465      composeString(t, "HealthcareService", "programName", element.getProgramName().get(i), i);
7466    for (int i = 0; i < element.getCharacteristic().size(); i++)
7467      composeCodeableConcept(t, "HealthcareService", "characteristic", element.getCharacteristic().get(i), i);
7468    for (int i = 0; i < element.getReferralMethod().size(); i++)
7469      composeCodeableConcept(t, "HealthcareService", "referralMethod", element.getReferralMethod().get(i), i);
7470    if (element.hasAppointmentRequiredElement())
7471      composeBoolean(t, "HealthcareService", "appointmentRequired", element.getAppointmentRequiredElement(), -1);
7472    for (int i = 0; i < element.getAvailableTime().size(); i++)
7473      composeHealthcareServiceHealthcareServiceAvailableTimeComponent(t, "HealthcareService", "availableTime", element.getAvailableTime().get(i), i);
7474    for (int i = 0; i < element.getNotAvailable().size(); i++)
7475      composeHealthcareServiceHealthcareServiceNotAvailableComponent(t, "HealthcareService", "notAvailable", element.getNotAvailable().get(i), i);
7476    if (element.hasAvailabilityExceptionsElement())
7477      composeString(t, "HealthcareService", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
7478    for (int i = 0; i < element.getEndpoint().size(); i++)
7479      composeReference(t, "HealthcareService", "endpoint", element.getEndpoint().get(i), i);
7480  }
7481
7482  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(Complex parent, String parentType, String name, HealthcareService.HealthcareServiceAvailableTimeComponent element, int index) {
7483    if (element == null) 
7484      return;
7485    Complex t;
7486    if (Utilities.noString(parentType))
7487      t = parent;
7488    else {
7489      t = parent.predicate("fhir:"+parentType+'.'+name);
7490    }
7491    composeBackboneElement(t, "availableTime", name, element, index);
7492    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
7493      composeEnum(t, "HealthcareService", "daysOfWeek", element.getDaysOfWeek().get(i), i);
7494    if (element.hasAllDayElement())
7495      composeBoolean(t, "HealthcareService", "allDay", element.getAllDayElement(), -1);
7496    if (element.hasAvailableStartTimeElement())
7497      composeTime(t, "HealthcareService", "availableStartTime", element.getAvailableStartTimeElement(), -1);
7498    if (element.hasAvailableEndTimeElement())
7499      composeTime(t, "HealthcareService", "availableEndTime", element.getAvailableEndTimeElement(), -1);
7500  }
7501
7502  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(Complex parent, String parentType, String name, HealthcareService.HealthcareServiceNotAvailableComponent element, int index) {
7503    if (element == null) 
7504      return;
7505    Complex t;
7506    if (Utilities.noString(parentType))
7507      t = parent;
7508    else {
7509      t = parent.predicate("fhir:"+parentType+'.'+name);
7510    }
7511    composeBackboneElement(t, "notAvailable", name, element, index);
7512    if (element.hasDescriptionElement())
7513      composeString(t, "HealthcareService", "description", element.getDescriptionElement(), -1);
7514    if (element.hasDuring())
7515      composePeriod(t, "HealthcareService", "during", element.getDuring(), -1);
7516  }
7517
7518  protected void composeImagingStudy(Complex parent, String parentType, String name, ImagingStudy element, int index) {
7519    if (element == null) 
7520      return;
7521    Complex t;
7522    if (Utilities.noString(parentType))
7523      t = parent;
7524    else {
7525      t = parent.predicate("fhir:"+parentType+'.'+name);
7526    }
7527    composeDomainResource(t, "ImagingStudy", name, element, index);
7528    for (int i = 0; i < element.getIdentifier().size(); i++)
7529      composeIdentifier(t, "ImagingStudy", "identifier", element.getIdentifier().get(i), i);
7530    if (element.hasStatusElement())
7531      composeEnum(t, "ImagingStudy", "status", element.getStatusElement(), -1);
7532    for (int i = 0; i < element.getModality().size(); i++)
7533      composeCoding(t, "ImagingStudy", "modality", element.getModality().get(i), i);
7534    if (element.hasSubject())
7535      composeReference(t, "ImagingStudy", "subject", element.getSubject(), -1);
7536    if (element.hasContext())
7537      composeReference(t, "ImagingStudy", "context", element.getContext(), -1);
7538    if (element.hasStartedElement())
7539      composeDateTime(t, "ImagingStudy", "started", element.getStartedElement(), -1);
7540    for (int i = 0; i < element.getBasedOn().size(); i++)
7541      composeReference(t, "ImagingStudy", "basedOn", element.getBasedOn().get(i), i);
7542    if (element.hasReferrer())
7543      composeReference(t, "ImagingStudy", "referrer", element.getReferrer(), -1);
7544    for (int i = 0; i < element.getInterpreter().size(); i++)
7545      composeReference(t, "ImagingStudy", "interpreter", element.getInterpreter().get(i), i);
7546    for (int i = 0; i < element.getEndpoint().size(); i++)
7547      composeReference(t, "ImagingStudy", "endpoint", element.getEndpoint().get(i), i);
7548    if (element.hasNumberOfSeriesElement())
7549      composeUnsignedInt(t, "ImagingStudy", "numberOfSeries", element.getNumberOfSeriesElement(), -1);
7550    if (element.hasNumberOfInstancesElement())
7551      composeUnsignedInt(t, "ImagingStudy", "numberOfInstances", element.getNumberOfInstancesElement(), -1);
7552    if (element.hasProcedureReference())
7553      composeReference(t, "ImagingStudy", "procedureReference", element.getProcedureReference(), -1);
7554    for (int i = 0; i < element.getProcedureCode().size(); i++)
7555      composeCodeableConcept(t, "ImagingStudy", "procedureCode", element.getProcedureCode().get(i), i);
7556    if (element.hasLocation())
7557      composeReference(t, "ImagingStudy", "location", element.getLocation(), -1);
7558    for (int i = 0; i < element.getReasonCode().size(); i++)
7559      composeCodeableConcept(t, "ImagingStudy", "reasonCode", element.getReasonCode().get(i), i);
7560    for (int i = 0; i < element.getReasonReference().size(); i++)
7561      composeReference(t, "ImagingStudy", "reasonReference", element.getReasonReference().get(i), i);
7562    for (int i = 0; i < element.getNote().size(); i++)
7563      composeAnnotation(t, "ImagingStudy", "note", element.getNote().get(i), i);
7564    for (int i = 0; i < element.getSeries().size(); i++)
7565      composeImagingStudyImagingStudySeriesComponent(t, "ImagingStudy", "series", element.getSeries().get(i), i);
7566  }
7567
7568  protected void composeImagingStudyImagingStudySeriesComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesComponent element, int index) {
7569    if (element == null) 
7570      return;
7571    Complex t;
7572    if (Utilities.noString(parentType))
7573      t = parent;
7574    else {
7575      t = parent.predicate("fhir:"+parentType+'.'+name);
7576    }
7577    composeBackboneElement(t, "series", name, element, index);
7578    if (element.hasIdentifier())
7579      composeIdentifier(t, "ImagingStudy", "identifier", element.getIdentifier(), -1);
7580    if (element.hasNumberElement())
7581      composeUnsignedInt(t, "ImagingStudy", "number", element.getNumberElement(), -1);
7582    if (element.hasModality())
7583      composeCoding(t, "ImagingStudy", "modality", element.getModality(), -1);
7584    if (element.hasDescriptionElement())
7585      composeString(t, "ImagingStudy", "description", element.getDescriptionElement(), -1);
7586    if (element.hasNumberOfInstancesElement())
7587      composeUnsignedInt(t, "ImagingStudy", "numberOfInstances", element.getNumberOfInstancesElement(), -1);
7588    for (int i = 0; i < element.getEndpoint().size(); i++)
7589      composeReference(t, "ImagingStudy", "endpoint", element.getEndpoint().get(i), i);
7590    if (element.hasBodySite())
7591      composeCoding(t, "ImagingStudy", "bodySite", element.getBodySite(), -1);
7592    if (element.hasLaterality())
7593      composeCoding(t, "ImagingStudy", "laterality", element.getLaterality(), -1);
7594    for (int i = 0; i < element.getSpecimen().size(); i++)
7595      composeReference(t, "ImagingStudy", "specimen", element.getSpecimen().get(i), i);
7596    if (element.hasStartedElement())
7597      composeDateTime(t, "ImagingStudy", "started", element.getStartedElement(), -1);
7598    for (int i = 0; i < element.getPerformer().size(); i++)
7599      composeImagingStudyImagingStudySeriesPerformerComponent(t, "ImagingStudy", "performer", element.getPerformer().get(i), i);
7600    for (int i = 0; i < element.getInstance().size(); i++)
7601      composeImagingStudyImagingStudySeriesInstanceComponent(t, "ImagingStudy", "instance", element.getInstance().get(i), i);
7602  }
7603
7604  protected void composeImagingStudyImagingStudySeriesPerformerComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesPerformerComponent element, int index) {
7605    if (element == null) 
7606      return;
7607    Complex t;
7608    if (Utilities.noString(parentType))
7609      t = parent;
7610    else {
7611      t = parent.predicate("fhir:"+parentType+'.'+name);
7612    }
7613    composeBackboneElement(t, "performer", name, element, index);
7614    if (element.hasFunction())
7615      composeCodeableConcept(t, "ImagingStudy", "function", element.getFunction(), -1);
7616    if (element.hasActor())
7617      composeReference(t, "ImagingStudy", "actor", element.getActor(), -1);
7618  }
7619
7620  protected void composeImagingStudyImagingStudySeriesInstanceComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesInstanceComponent element, int index) {
7621    if (element == null) 
7622      return;
7623    Complex t;
7624    if (Utilities.noString(parentType))
7625      t = parent;
7626    else {
7627      t = parent.predicate("fhir:"+parentType+'.'+name);
7628    }
7629    composeBackboneElement(t, "instance", name, element, index);
7630    if (element.hasIdentifier())
7631      composeIdentifier(t, "ImagingStudy", "identifier", element.getIdentifier(), -1);
7632    if (element.hasNumberElement())
7633      composeUnsignedInt(t, "ImagingStudy", "number", element.getNumberElement(), -1);
7634    if (element.hasSopClass())
7635      composeCoding(t, "ImagingStudy", "sopClass", element.getSopClass(), -1);
7636    if (element.hasTitleElement())
7637      composeString(t, "ImagingStudy", "title", element.getTitleElement(), -1);
7638  }
7639
7640  protected void composeImmunization(Complex parent, String parentType, String name, Immunization element, int index) {
7641    if (element == null) 
7642      return;
7643    Complex t;
7644    if (Utilities.noString(parentType))
7645      t = parent;
7646    else {
7647      t = parent.predicate("fhir:"+parentType+'.'+name);
7648    }
7649    composeDomainResource(t, "Immunization", name, element, index);
7650    for (int i = 0; i < element.getIdentifier().size(); i++)
7651      composeIdentifier(t, "Immunization", "identifier", element.getIdentifier().get(i), i);
7652    if (element.hasStatusElement())
7653      composeEnum(t, "Immunization", "status", element.getStatusElement(), -1);
7654    if (element.hasStatusReason())
7655      composeCodeableConcept(t, "Immunization", "statusReason", element.getStatusReason(), -1);
7656    if (element.hasVaccineCode())
7657      composeCodeableConcept(t, "Immunization", "vaccineCode", element.getVaccineCode(), -1);
7658    if (element.hasPatient())
7659      composeReference(t, "Immunization", "patient", element.getPatient(), -1);
7660    if (element.hasEncounter())
7661      composeReference(t, "Immunization", "encounter", element.getEncounter(), -1);
7662    if (element.hasDateElement())
7663      composeDateTime(t, "Immunization", "date", element.getDateElement(), -1);
7664    if (element.hasPrimarySourceElement())
7665      composeBoolean(t, "Immunization", "primarySource", element.getPrimarySourceElement(), -1);
7666    if (element.hasReportOrigin())
7667      composeCodeableConcept(t, "Immunization", "reportOrigin", element.getReportOrigin(), -1);
7668    if (element.hasLocation())
7669      composeReference(t, "Immunization", "location", element.getLocation(), -1);
7670    if (element.hasManufacturer())
7671      composeReference(t, "Immunization", "manufacturer", element.getManufacturer(), -1);
7672    if (element.hasLotNumberElement())
7673      composeString(t, "Immunization", "lotNumber", element.getLotNumberElement(), -1);
7674    if (element.hasExpirationDateElement())
7675      composeDate(t, "Immunization", "expirationDate", element.getExpirationDateElement(), -1);
7676    if (element.hasSite())
7677      composeCodeableConcept(t, "Immunization", "site", element.getSite(), -1);
7678    if (element.hasRoute())
7679      composeCodeableConcept(t, "Immunization", "route", element.getRoute(), -1);
7680    if (element.hasDoseQuantity())
7681      composeQuantity(t, "Immunization", "doseQuantity", element.getDoseQuantity(), -1);
7682    for (int i = 0; i < element.getPerformer().size(); i++)
7683      composeImmunizationImmunizationPerformerComponent(t, "Immunization", "performer", element.getPerformer().get(i), i);
7684    for (int i = 0; i < element.getNote().size(); i++)
7685      composeAnnotation(t, "Immunization", "note", element.getNote().get(i), i);
7686    for (int i = 0; i < element.getReasonCode().size(); i++)
7687      composeCodeableConcept(t, "Immunization", "reasonCode", element.getReasonCode().get(i), i);
7688    for (int i = 0; i < element.getReasonReference().size(); i++)
7689      composeReference(t, "Immunization", "reasonReference", element.getReasonReference().get(i), i);
7690    if (element.hasIsPotentElement())
7691      composeBoolean(t, "Immunization", "isPotent", element.getIsPotentElement(), -1);
7692    for (int i = 0; i < element.getSubpotentReason().size(); i++)
7693      composeCodeableConcept(t, "Immunization", "subpotentReason", element.getSubpotentReason().get(i), i);
7694    for (int i = 0; i < element.getEducation().size(); i++)
7695      composeImmunizationImmunizationEducationComponent(t, "Immunization", "education", element.getEducation().get(i), i);
7696    for (int i = 0; i < element.getProgramEligibility().size(); i++)
7697      composeCodeableConcept(t, "Immunization", "programEligibility", element.getProgramEligibility().get(i), i);
7698    if (element.hasFundingSource())
7699      composeCodeableConcept(t, "Immunization", "fundingSource", element.getFundingSource(), -1);
7700  }
7701
7702  protected void composeImmunizationImmunizationPerformerComponent(Complex parent, String parentType, String name, Immunization.ImmunizationPerformerComponent element, int index) {
7703    if (element == null) 
7704      return;
7705    Complex t;
7706    if (Utilities.noString(parentType))
7707      t = parent;
7708    else {
7709      t = parent.predicate("fhir:"+parentType+'.'+name);
7710    }
7711    composeBackboneElement(t, "performer", name, element, index);
7712    if (element.hasFunction())
7713      composeCodeableConcept(t, "Immunization", "function", element.getFunction(), -1);
7714    if (element.hasActor())
7715      composeReference(t, "Immunization", "actor", element.getActor(), -1);
7716  }
7717
7718  protected void composeImmunizationImmunizationEducationComponent(Complex parent, String parentType, String name, Immunization.ImmunizationEducationComponent element, int index) {
7719    if (element == null) 
7720      return;
7721    Complex t;
7722    if (Utilities.noString(parentType))
7723      t = parent;
7724    else {
7725      t = parent.predicate("fhir:"+parentType+'.'+name);
7726    }
7727    composeBackboneElement(t, "education", name, element, index);
7728    if (element.hasDocumentTypeElement())
7729      composeString(t, "Immunization", "documentType", element.getDocumentTypeElement(), -1);
7730    if (element.hasReferenceElement())
7731      composeUri(t, "Immunization", "reference", element.getReferenceElement(), -1);
7732    if (element.hasPublicationDateElement())
7733      composeDateTime(t, "Immunization", "publicationDate", element.getPublicationDateElement(), -1);
7734    if (element.hasPresentationDateElement())
7735      composeDateTime(t, "Immunization", "presentationDate", element.getPresentationDateElement(), -1);
7736  }
7737
7738  protected void composeImmunizationEvaluation(Complex parent, String parentType, String name, ImmunizationEvaluation element, int index) {
7739    if (element == null) 
7740      return;
7741    Complex t;
7742    if (Utilities.noString(parentType))
7743      t = parent;
7744    else {
7745      t = parent.predicate("fhir:"+parentType+'.'+name);
7746    }
7747    composeDomainResource(t, "ImmunizationEvaluation", name, element, index);
7748    for (int i = 0; i < element.getIdentifier().size(); i++)
7749      composeIdentifier(t, "ImmunizationEvaluation", "identifier", element.getIdentifier().get(i), i);
7750    if (element.hasStatusElement())
7751      composeEnum(t, "ImmunizationEvaluation", "status", element.getStatusElement(), -1);
7752    if (element.hasPatient())
7753      composeReference(t, "ImmunizationEvaluation", "patient", element.getPatient(), -1);
7754    if (element.hasDateElement())
7755      composeDateTime(t, "ImmunizationEvaluation", "date", element.getDateElement(), -1);
7756    if (element.hasAuthority())
7757      composeReference(t, "ImmunizationEvaluation", "authority", element.getAuthority(), -1);
7758    for (int i = 0; i < element.getTargetDisease().size(); i++)
7759      composeCodeableConcept(t, "ImmunizationEvaluation", "targetDisease", element.getTargetDisease().get(i), i);
7760    if (element.hasImmunizationEvent())
7761      composeReference(t, "ImmunizationEvaluation", "immunizationEvent", element.getImmunizationEvent(), -1);
7762    if (element.hasDoseStatus())
7763      composeCodeableConcept(t, "ImmunizationEvaluation", "doseStatus", element.getDoseStatus(), -1);
7764    for (int i = 0; i < element.getDoseStatusReason().size(); i++)
7765      composeCodeableConcept(t, "ImmunizationEvaluation", "doseStatusReason", element.getDoseStatusReason().get(i), i);
7766    if (element.hasDescriptionElement())
7767      composeString(t, "ImmunizationEvaluation", "description", element.getDescriptionElement(), -1);
7768    if (element.hasSeriesElement())
7769      composeString(t, "ImmunizationEvaluation", "series", element.getSeriesElement(), -1);
7770    if (element.hasDoseNumber())
7771      composeType(t, "ImmunizationEvaluation", "doseNumber", element.getDoseNumber(), -1);
7772    if (element.hasSeriesDoses())
7773      composeType(t, "ImmunizationEvaluation", "seriesDoses", element.getSeriesDoses(), -1);
7774  }
7775
7776  protected void composeImmunizationRecommendation(Complex parent, String parentType, String name, ImmunizationRecommendation element, int index) {
7777    if (element == null) 
7778      return;
7779    Complex t;
7780    if (Utilities.noString(parentType))
7781      t = parent;
7782    else {
7783      t = parent.predicate("fhir:"+parentType+'.'+name);
7784    }
7785    composeDomainResource(t, "ImmunizationRecommendation", name, element, index);
7786    for (int i = 0; i < element.getIdentifier().size(); i++)
7787      composeIdentifier(t, "ImmunizationRecommendation", "identifier", element.getIdentifier().get(i), i);
7788    if (element.hasPatient())
7789      composeReference(t, "ImmunizationRecommendation", "patient", element.getPatient(), -1);
7790    if (element.hasDateElement())
7791      composeDateTime(t, "ImmunizationRecommendation", "date", element.getDateElement(), -1);
7792    if (element.hasAuthority())
7793      composeReference(t, "ImmunizationRecommendation", "authority", element.getAuthority(), -1);
7794    for (int i = 0; i < element.getRecommendation().size(); i++)
7795      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(t, "ImmunizationRecommendation", "recommendation", element.getRecommendation().get(i), i);
7796  }
7797
7798  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(Complex parent, String parentType, String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element, int index) {
7799    if (element == null) 
7800      return;
7801    Complex t;
7802    if (Utilities.noString(parentType))
7803      t = parent;
7804    else {
7805      t = parent.predicate("fhir:"+parentType+'.'+name);
7806    }
7807    composeBackboneElement(t, "recommendation", name, element, index);
7808    for (int i = 0; i < element.getVaccineCode().size(); i++)
7809      composeCodeableConcept(t, "ImmunizationRecommendation", "vaccineCode", element.getVaccineCode().get(i), i);
7810    if (element.hasTargetDisease())
7811      composeCodeableConcept(t, "ImmunizationRecommendation", "targetDisease", element.getTargetDisease(), -1);
7812    for (int i = 0; i < element.getContraindicatedVaccineCode().size(); i++)
7813      composeCodeableConcept(t, "ImmunizationRecommendation", "contraindicatedVaccineCode", element.getContraindicatedVaccineCode().get(i), i);
7814    if (element.hasForecastStatus())
7815      composeCodeableConcept(t, "ImmunizationRecommendation", "forecastStatus", element.getForecastStatus(), -1);
7816    for (int i = 0; i < element.getForecastReason().size(); i++)
7817      composeCodeableConcept(t, "ImmunizationRecommendation", "forecastReason", element.getForecastReason().get(i), i);
7818    for (int i = 0; i < element.getDateCriterion().size(); i++)
7819      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(t, "ImmunizationRecommendation", "dateCriterion", element.getDateCriterion().get(i), i);
7820    if (element.hasDescriptionElement())
7821      composeString(t, "ImmunizationRecommendation", "description", element.getDescriptionElement(), -1);
7822    if (element.hasSeriesElement())
7823      composeString(t, "ImmunizationRecommendation", "series", element.getSeriesElement(), -1);
7824    if (element.hasDoseNumber())
7825      composeType(t, "ImmunizationRecommendation", "doseNumber", element.getDoseNumber(), -1);
7826    if (element.hasSeriesDoses())
7827      composeType(t, "ImmunizationRecommendation", "seriesDoses", element.getSeriesDoses(), -1);
7828    for (int i = 0; i < element.getSupportingImmunization().size(); i++)
7829      composeReference(t, "ImmunizationRecommendation", "supportingImmunization", element.getSupportingImmunization().get(i), i);
7830    for (int i = 0; i < element.getSupportingPatientInformation().size(); i++)
7831      composeReference(t, "ImmunizationRecommendation", "supportingPatientInformation", element.getSupportingPatientInformation().get(i), i);
7832  }
7833
7834  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(Complex parent, String parentType, String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element, int index) {
7835    if (element == null) 
7836      return;
7837    Complex t;
7838    if (Utilities.noString(parentType))
7839      t = parent;
7840    else {
7841      t = parent.predicate("fhir:"+parentType+'.'+name);
7842    }
7843    composeBackboneElement(t, "dateCriterion", name, element, index);
7844    if (element.hasCode())
7845      composeCodeableConcept(t, "ImmunizationRecommendation", "code", element.getCode(), -1);
7846    if (element.hasValueElement())
7847      composeDateTime(t, "ImmunizationRecommendation", "value", element.getValueElement(), -1);
7848  }
7849
7850  protected void composeImplementationGuide(Complex parent, String parentType, String name, ImplementationGuide element, int index) {
7851    if (element == null) 
7852      return;
7853    Complex t;
7854    if (Utilities.noString(parentType))
7855      t = parent;
7856    else {
7857      t = parent.predicate("fhir:"+parentType+'.'+name);
7858    }
7859    composeDomainResource(t, "ImplementationGuide", name, element, index);
7860    if (element.hasUrlElement())
7861      composeUri(t, "ImplementationGuide", "url", element.getUrlElement(), -1);
7862    if (element.hasVersionElement())
7863      composeString(t, "ImplementationGuide", "version", element.getVersionElement(), -1);
7864    if (element.hasNameElement())
7865      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
7866    if (element.hasStatusElement())
7867      composeEnum(t, "ImplementationGuide", "status", element.getStatusElement(), -1);
7868    if (element.hasExperimentalElement())
7869      composeBoolean(t, "ImplementationGuide", "experimental", element.getExperimentalElement(), -1);
7870    if (element.hasDateElement())
7871      composeDateTime(t, "ImplementationGuide", "date", element.getDateElement(), -1);
7872    if (element.hasPublisherElement())
7873      composeString(t, "ImplementationGuide", "publisher", element.getPublisherElement(), -1);
7874    for (int i = 0; i < element.getContact().size(); i++)
7875      composeContactDetail(t, "ImplementationGuide", "contact", element.getContact().get(i), i);
7876    if (element.hasDescriptionElement())
7877      composeMarkdown(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
7878    for (int i = 0; i < element.getUseContext().size(); i++)
7879      composeUsageContext(t, "ImplementationGuide", "useContext", element.getUseContext().get(i), i);
7880    for (int i = 0; i < element.getJurisdiction().size(); i++)
7881      composeCodeableConcept(t, "ImplementationGuide", "jurisdiction", element.getJurisdiction().get(i), i);
7882    if (element.hasCopyrightElement())
7883      composeMarkdown(t, "ImplementationGuide", "copyright", element.getCopyrightElement(), -1);
7884    if (element.hasFhirVersionElement())
7885      composeId(t, "ImplementationGuide", "fhirVersion", element.getFhirVersionElement(), -1);
7886    for (int i = 0; i < element.getDependsOn().size(); i++)
7887      composeImplementationGuideImplementationGuideDependsOnComponent(t, "ImplementationGuide", "dependsOn", element.getDependsOn().get(i), i);
7888    for (int i = 0; i < element.getGlobal().size(); i++)
7889      composeImplementationGuideImplementationGuideGlobalComponent(t, "ImplementationGuide", "global", element.getGlobal().get(i), i);
7890    if (element.hasDefinition())
7891      composeImplementationGuideImplementationGuideDefinitionComponent(t, "ImplementationGuide", "definition", element.getDefinition(), -1);
7892    if (element.hasManifest())
7893      composeImplementationGuideImplementationGuideManifestComponent(t, "ImplementationGuide", "manifest", element.getManifest(), -1);
7894  }
7895
7896  protected void composeImplementationGuideImplementationGuideDependsOnComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDependsOnComponent element, int index) {
7897    if (element == null) 
7898      return;
7899    Complex t;
7900    if (Utilities.noString(parentType))
7901      t = parent;
7902    else {
7903      t = parent.predicate("fhir:"+parentType+'.'+name);
7904    }
7905    composeBackboneElement(t, "dependsOn", name, element, index);
7906    if (element.hasUriElement())
7907      composeCanonical(t, "ImplementationGuide", "uri", element.getUriElement(), -1);
7908    if (element.hasVersionElement())
7909      composeString(t, "ImplementationGuide", "version", element.getVersionElement(), -1);
7910  }
7911
7912  protected void composeImplementationGuideImplementationGuideGlobalComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideGlobalComponent element, int index) {
7913    if (element == null) 
7914      return;
7915    Complex t;
7916    if (Utilities.noString(parentType))
7917      t = parent;
7918    else {
7919      t = parent.predicate("fhir:"+parentType+'.'+name);
7920    }
7921    composeBackboneElement(t, "global", name, element, index);
7922    if (element.hasTypeElement())
7923      composeCode(t, "ImplementationGuide", "type", element.getTypeElement(), -1);
7924    if (element.hasProfileElement())
7925      composeCanonical(t, "ImplementationGuide", "profile", element.getProfileElement(), -1);
7926  }
7927
7928  protected void composeImplementationGuideImplementationGuideDefinitionComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionComponent element, int index) {
7929    if (element == null) 
7930      return;
7931    Complex t;
7932    if (Utilities.noString(parentType))
7933      t = parent;
7934    else {
7935      t = parent.predicate("fhir:"+parentType+'.'+name);
7936    }
7937    composeBackboneElement(t, "definition", name, element, index);
7938    for (int i = 0; i < element.getPackage().size(); i++)
7939      composeImplementationGuideImplementationGuideDefinitionPackageComponent(t, "ImplementationGuide", "package", element.getPackage().get(i), i);
7940    for (int i = 0; i < element.getResource().size(); i++)
7941      composeImplementationGuideImplementationGuideDefinitionResourceComponent(t, "ImplementationGuide", "resource", element.getResource().get(i), i);
7942    if (element.hasPage())
7943      composeImplementationGuideImplementationGuideDefinitionPageComponent(t, "ImplementationGuide", "page", element.getPage(), -1);
7944    for (int i = 0; i < element.getParameter().size(); i++)
7945      composeImplementationGuideImplementationGuideDefinitionParameterComponent(t, "ImplementationGuide", "parameter", element.getParameter().get(i), i);
7946    for (int i = 0; i < element.getTemplate().size(); i++)
7947      composeImplementationGuideImplementationGuideDefinitionTemplateComponent(t, "ImplementationGuide", "template", element.getTemplate().get(i), i);
7948  }
7949
7950  protected void composeImplementationGuideImplementationGuideDefinitionPackageComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionPackageComponent element, int index) {
7951    if (element == null) 
7952      return;
7953    Complex t;
7954    if (Utilities.noString(parentType))
7955      t = parent;
7956    else {
7957      t = parent.predicate("fhir:"+parentType+'.'+name);
7958    }
7959    composeBackboneElement(t, "package", name, element, index);
7960    if (element.hasNameElement())
7961      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
7962    if (element.hasDescriptionElement())
7963      composeString(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
7964  }
7965
7966  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element, int index) {
7967    if (element == null) 
7968      return;
7969    Complex t;
7970    if (Utilities.noString(parentType))
7971      t = parent;
7972    else {
7973      t = parent.predicate("fhir:"+parentType+'.'+name);
7974    }
7975    composeBackboneElement(t, "resource", name, element, index);
7976    if (element.hasReference())
7977      composeReference(t, "ImplementationGuide", "reference", element.getReference(), -1);
7978    if (element.hasNameElement())
7979      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
7980    if (element.hasDescriptionElement())
7981      composeString(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
7982    if (element.hasExample())
7983      composeType(t, "ImplementationGuide", "example", element.getExample(), -1);
7984    if (element.hasPackageElement())
7985      composeId(t, "ImplementationGuide", "package", element.getPackageElement(), -1);
7986  }
7987
7988  protected void composeImplementationGuideImplementationGuideDefinitionPageComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element, int index) {
7989    if (element == null) 
7990      return;
7991    Complex t;
7992    if (Utilities.noString(parentType))
7993      t = parent;
7994    else {
7995      t = parent.predicate("fhir:"+parentType+'.'+name);
7996    }
7997    composeBackboneElement(t, "page", name, element, index);
7998    if (element.hasName())
7999      composeType(t, "ImplementationGuide", "name", element.getName(), -1);
8000    if (element.hasTitleElement())
8001      composeString(t, "ImplementationGuide", "title", element.getTitleElement(), -1);
8002    if (element.hasGenerationElement())
8003      composeEnum(t, "ImplementationGuide", "generation", element.getGenerationElement(), -1);
8004    for (int i = 0; i < element.getPage().size(); i++)
8005      composeImplementationGuideImplementationGuideDefinitionPageComponent(t, "ImplementationGuide", "page", element.getPage().get(i), i);
8006  }
8007
8008  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element, int index) {
8009    if (element == null) 
8010      return;
8011    Complex t;
8012    if (Utilities.noString(parentType))
8013      t = parent;
8014    else {
8015      t = parent.predicate("fhir:"+parentType+'.'+name);
8016    }
8017    composeBackboneElement(t, "parameter", name, element, index);
8018    if (element.hasCodeElement())
8019      composeEnum(t, "ImplementationGuide", "code", element.getCodeElement(), -1);
8020    if (element.hasValueElement())
8021      composeString(t, "ImplementationGuide", "value", element.getValueElement(), -1);
8022  }
8023
8024  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element, int index) {
8025    if (element == null) 
8026      return;
8027    Complex t;
8028    if (Utilities.noString(parentType))
8029      t = parent;
8030    else {
8031      t = parent.predicate("fhir:"+parentType+'.'+name);
8032    }
8033    composeBackboneElement(t, "template", name, element, index);
8034    if (element.hasCodeElement())
8035      composeCode(t, "ImplementationGuide", "code", element.getCodeElement(), -1);
8036    if (element.hasSourceElement())
8037      composeString(t, "ImplementationGuide", "source", element.getSourceElement(), -1);
8038    if (element.hasScopeElement())
8039      composeString(t, "ImplementationGuide", "scope", element.getScopeElement(), -1);
8040  }
8041
8042  protected void composeImplementationGuideImplementationGuideManifestComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideManifestComponent element, int index) {
8043    if (element == null) 
8044      return;
8045    Complex t;
8046    if (Utilities.noString(parentType))
8047      t = parent;
8048    else {
8049      t = parent.predicate("fhir:"+parentType+'.'+name);
8050    }
8051    composeBackboneElement(t, "manifest", name, element, index);
8052    if (element.hasRenderingElement())
8053      composeUrl(t, "ImplementationGuide", "rendering", element.getRenderingElement(), -1);
8054    for (int i = 0; i < element.getResource().size(); i++)
8055      composeImplementationGuideImplementationGuideManifestResourceComponent(t, "ImplementationGuide", "resource", element.getResource().get(i), i);
8056    for (int i = 0; i < element.getPage().size(); i++)
8057      composeImplementationGuideImplementationGuideManifestPageComponent(t, "ImplementationGuide", "page", element.getPage().get(i), i);
8058    for (int i = 0; i < element.getImage().size(); i++)
8059      composeString(t, "ImplementationGuide", "image", element.getImage().get(i), i);
8060    for (int i = 0; i < element.getOther().size(); i++)
8061      composeString(t, "ImplementationGuide", "other", element.getOther().get(i), i);
8062  }
8063
8064  protected void composeImplementationGuideImplementationGuideManifestResourceComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideManifestResourceComponent element, int index) {
8065    if (element == null) 
8066      return;
8067    Complex t;
8068    if (Utilities.noString(parentType))
8069      t = parent;
8070    else {
8071      t = parent.predicate("fhir:"+parentType+'.'+name);
8072    }
8073    composeBackboneElement(t, "resource", name, element, index);
8074    if (element.hasReference())
8075      composeReference(t, "ImplementationGuide", "reference", element.getReference(), -1);
8076    if (element.hasExample())
8077      composeType(t, "ImplementationGuide", "example", element.getExample(), -1);
8078    if (element.hasRelativePathElement())
8079      composeUrl(t, "ImplementationGuide", "relativePath", element.getRelativePathElement(), -1);
8080  }
8081
8082  protected void composeImplementationGuideImplementationGuideManifestPageComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideManifestPageComponent element, int index) {
8083    if (element == null) 
8084      return;
8085    Complex t;
8086    if (Utilities.noString(parentType))
8087      t = parent;
8088    else {
8089      t = parent.predicate("fhir:"+parentType+'.'+name);
8090    }
8091    composeBackboneElement(t, "page", name, element, index);
8092    if (element.hasNameElement())
8093      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
8094    if (element.hasTitleElement())
8095      composeString(t, "ImplementationGuide", "title", element.getTitleElement(), -1);
8096    for (int i = 0; i < element.getAnchor().size(); i++)
8097      composeString(t, "ImplementationGuide", "anchor", element.getAnchor().get(i), i);
8098  }
8099
8100  protected void composeInvoice(Complex parent, String parentType, String name, Invoice element, int index) {
8101    if (element == null) 
8102      return;
8103    Complex t;
8104    if (Utilities.noString(parentType))
8105      t = parent;
8106    else {
8107      t = parent.predicate("fhir:"+parentType+'.'+name);
8108    }
8109    composeDomainResource(t, "Invoice", name, element, index);
8110    for (int i = 0; i < element.getIdentifier().size(); i++)
8111      composeIdentifier(t, "Invoice", "identifier", element.getIdentifier().get(i), i);
8112    if (element.hasStatusElement())
8113      composeEnum(t, "Invoice", "status", element.getStatusElement(), -1);
8114    if (element.hasCancelledReasonElement())
8115      composeString(t, "Invoice", "cancelledReason", element.getCancelledReasonElement(), -1);
8116    if (element.hasType())
8117      composeCodeableConcept(t, "Invoice", "type", element.getType(), -1);
8118    if (element.hasSubject())
8119      composeReference(t, "Invoice", "subject", element.getSubject(), -1);
8120    if (element.hasRecipient())
8121      composeReference(t, "Invoice", "recipient", element.getRecipient(), -1);
8122    if (element.hasDateElement())
8123      composeDateTime(t, "Invoice", "date", element.getDateElement(), -1);
8124    for (int i = 0; i < element.getParticipant().size(); i++)
8125      composeInvoiceInvoiceParticipantComponent(t, "Invoice", "participant", element.getParticipant().get(i), i);
8126    if (element.hasIssuer())
8127      composeReference(t, "Invoice", "issuer", element.getIssuer(), -1);
8128    if (element.hasAccount())
8129      composeReference(t, "Invoice", "account", element.getAccount(), -1);
8130    for (int i = 0; i < element.getLineItem().size(); i++)
8131      composeInvoiceInvoiceLineItemComponent(t, "Invoice", "lineItem", element.getLineItem().get(i), i);
8132    for (int i = 0; i < element.getTotalPriceComponent().size(); i++)
8133      composeInvoiceInvoiceLineItemPriceComponentComponent(t, "Invoice", "totalPriceComponent", element.getTotalPriceComponent().get(i), i);
8134    if (element.hasTotalNet())
8135      composeMoney(t, "Invoice", "totalNet", element.getTotalNet(), -1);
8136    if (element.hasTotalGross())
8137      composeMoney(t, "Invoice", "totalGross", element.getTotalGross(), -1);
8138    if (element.hasPaymentTermsElement())
8139      composeMarkdown(t, "Invoice", "paymentTerms", element.getPaymentTermsElement(), -1);
8140    for (int i = 0; i < element.getNote().size(); i++)
8141      composeAnnotation(t, "Invoice", "note", element.getNote().get(i), i);
8142  }
8143
8144  protected void composeInvoiceInvoiceParticipantComponent(Complex parent, String parentType, String name, Invoice.InvoiceParticipantComponent element, int index) {
8145    if (element == null) 
8146      return;
8147    Complex t;
8148    if (Utilities.noString(parentType))
8149      t = parent;
8150    else {
8151      t = parent.predicate("fhir:"+parentType+'.'+name);
8152    }
8153    composeBackboneElement(t, "participant", name, element, index);
8154    if (element.hasRole())
8155      composeCodeableConcept(t, "Invoice", "role", element.getRole(), -1);
8156    if (element.hasActor())
8157      composeReference(t, "Invoice", "actor", element.getActor(), -1);
8158  }
8159
8160  protected void composeInvoiceInvoiceLineItemComponent(Complex parent, String parentType, String name, Invoice.InvoiceLineItemComponent element, int index) {
8161    if (element == null) 
8162      return;
8163    Complex t;
8164    if (Utilities.noString(parentType))
8165      t = parent;
8166    else {
8167      t = parent.predicate("fhir:"+parentType+'.'+name);
8168    }
8169    composeBackboneElement(t, "lineItem", name, element, index);
8170    if (element.hasSequenceElement())
8171      composePositiveInt(t, "Invoice", "sequence", element.getSequenceElement(), -1);
8172    if (element.hasChargeItem())
8173      composeReference(t, "Invoice", "chargeItem", element.getChargeItem(), -1);
8174    for (int i = 0; i < element.getPriceComponent().size(); i++)
8175      composeInvoiceInvoiceLineItemPriceComponentComponent(t, "Invoice", "priceComponent", element.getPriceComponent().get(i), i);
8176  }
8177
8178  protected void composeInvoiceInvoiceLineItemPriceComponentComponent(Complex parent, String parentType, String name, Invoice.InvoiceLineItemPriceComponentComponent element, int index) {
8179    if (element == null) 
8180      return;
8181    Complex t;
8182    if (Utilities.noString(parentType))
8183      t = parent;
8184    else {
8185      t = parent.predicate("fhir:"+parentType+'.'+name);
8186    }
8187    composeBackboneElement(t, "priceComponent", name, element, index);
8188    if (element.hasTypeElement())
8189      composeEnum(t, "Invoice", "type", element.getTypeElement(), -1);
8190    if (element.hasCode())
8191      composeCodeableConcept(t, "Invoice", "code", element.getCode(), -1);
8192    if (element.hasFactor())
8193      composeMoney(t, "Invoice", "factor", element.getFactor(), -1);
8194    if (element.hasAmountElement())
8195      composeDecimal(t, "Invoice", "amount", element.getAmountElement(), -1);
8196  }
8197
8198  protected void composeItemInstance(Complex parent, String parentType, String name, ItemInstance element, int index) {
8199    if (element == null) 
8200      return;
8201    Complex t;
8202    if (Utilities.noString(parentType))
8203      t = parent;
8204    else {
8205      t = parent.predicate("fhir:"+parentType+'.'+name);
8206    }
8207    composeDomainResource(t, "ItemInstance", name, element, index);
8208    if (element.hasCountElement())
8209      composeInteger(t, "ItemInstance", "count", element.getCountElement(), -1);
8210    if (element.hasLocation())
8211      composeReference(t, "ItemInstance", "location", element.getLocation(), -1);
8212    if (element.hasSubject())
8213      composeReference(t, "ItemInstance", "subject", element.getSubject(), -1);
8214    if (element.hasManufactureDateElement())
8215      composeDateTime(t, "ItemInstance", "manufactureDate", element.getManufactureDateElement(), -1);
8216    if (element.hasExpiryDateElement())
8217      composeDateTime(t, "ItemInstance", "expiryDate", element.getExpiryDateElement(), -1);
8218    if (element.hasCurrentSWVersionElement())
8219      composeString(t, "ItemInstance", "currentSWVersion", element.getCurrentSWVersionElement(), -1);
8220    if (element.hasLotNumberElement())
8221      composeString(t, "ItemInstance", "lotNumber", element.getLotNumberElement(), -1);
8222    if (element.hasSerialNumberElement())
8223      composeString(t, "ItemInstance", "serialNumber", element.getSerialNumberElement(), -1);
8224    if (element.hasCarrierAIDCElement())
8225      composeString(t, "ItemInstance", "carrierAIDC", element.getCarrierAIDCElement(), -1);
8226    if (element.hasCarrierHRFElement())
8227      composeString(t, "ItemInstance", "carrierHRF", element.getCarrierHRFElement(), -1);
8228  }
8229
8230  protected void composeLibrary(Complex parent, String parentType, String name, Library element, int index) {
8231    if (element == null) 
8232      return;
8233    Complex t;
8234    if (Utilities.noString(parentType))
8235      t = parent;
8236    else {
8237      t = parent.predicate("fhir:"+parentType+'.'+name);
8238    }
8239    composeDomainResource(t, "Library", name, element, index);
8240    if (element.hasUrlElement())
8241      composeUri(t, "Library", "url", element.getUrlElement(), -1);
8242    for (int i = 0; i < element.getIdentifier().size(); i++)
8243      composeIdentifier(t, "Library", "identifier", element.getIdentifier().get(i), i);
8244    if (element.hasVersionElement())
8245      composeString(t, "Library", "version", element.getVersionElement(), -1);
8246    if (element.hasNameElement())
8247      composeString(t, "Library", "name", element.getNameElement(), -1);
8248    if (element.hasTitleElement())
8249      composeString(t, "Library", "title", element.getTitleElement(), -1);
8250    if (element.hasSubtitleElement())
8251      composeString(t, "Library", "subtitle", element.getSubtitleElement(), -1);
8252    if (element.hasStatusElement())
8253      composeEnum(t, "Library", "status", element.getStatusElement(), -1);
8254    if (element.hasExperimentalElement())
8255      composeBoolean(t, "Library", "experimental", element.getExperimentalElement(), -1);
8256    if (element.hasType())
8257      composeCodeableConcept(t, "Library", "type", element.getType(), -1);
8258    if (element.hasSubject())
8259      composeType(t, "Library", "subject", element.getSubject(), -1);
8260    if (element.hasDateElement())
8261      composeDateTime(t, "Library", "date", element.getDateElement(), -1);
8262    if (element.hasPublisherElement())
8263      composeString(t, "Library", "publisher", element.getPublisherElement(), -1);
8264    for (int i = 0; i < element.getContact().size(); i++)
8265      composeContactDetail(t, "Library", "contact", element.getContact().get(i), i);
8266    if (element.hasDescriptionElement())
8267      composeMarkdown(t, "Library", "description", element.getDescriptionElement(), -1);
8268    for (int i = 0; i < element.getUseContext().size(); i++)
8269      composeUsageContext(t, "Library", "useContext", element.getUseContext().get(i), i);
8270    for (int i = 0; i < element.getJurisdiction().size(); i++)
8271      composeCodeableConcept(t, "Library", "jurisdiction", element.getJurisdiction().get(i), i);
8272    if (element.hasPurposeElement())
8273      composeMarkdown(t, "Library", "purpose", element.getPurposeElement(), -1);
8274    if (element.hasUsageElement())
8275      composeString(t, "Library", "usage", element.getUsageElement(), -1);
8276    if (element.hasCopyrightElement())
8277      composeMarkdown(t, "Library", "copyright", element.getCopyrightElement(), -1);
8278    if (element.hasApprovalDateElement())
8279      composeDate(t, "Library", "approvalDate", element.getApprovalDateElement(), -1);
8280    if (element.hasLastReviewDateElement())
8281      composeDate(t, "Library", "lastReviewDate", element.getLastReviewDateElement(), -1);
8282    if (element.hasEffectivePeriod())
8283      composePeriod(t, "Library", "effectivePeriod", element.getEffectivePeriod(), -1);
8284    for (int i = 0; i < element.getTopic().size(); i++)
8285      composeCodeableConcept(t, "Library", "topic", element.getTopic().get(i), i);
8286    for (int i = 0; i < element.getContributor().size(); i++)
8287      composeContributor(t, "Library", "contributor", element.getContributor().get(i), i);
8288    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
8289      composeRelatedArtifact(t, "Library", "relatedArtifact", element.getRelatedArtifact().get(i), i);
8290    for (int i = 0; i < element.getParameter().size(); i++)
8291      composeParameterDefinition(t, "Library", "parameter", element.getParameter().get(i), i);
8292    for (int i = 0; i < element.getDataRequirement().size(); i++)
8293      composeDataRequirement(t, "Library", "dataRequirement", element.getDataRequirement().get(i), i);
8294    for (int i = 0; i < element.getContent().size(); i++)
8295      composeAttachment(t, "Library", "content", element.getContent().get(i), i);
8296  }
8297
8298  protected void composeLinkage(Complex parent, String parentType, String name, Linkage element, int index) {
8299    if (element == null) 
8300      return;
8301    Complex t;
8302    if (Utilities.noString(parentType))
8303      t = parent;
8304    else {
8305      t = parent.predicate("fhir:"+parentType+'.'+name);
8306    }
8307    composeDomainResource(t, "Linkage", name, element, index);
8308    if (element.hasActiveElement())
8309      composeBoolean(t, "Linkage", "active", element.getActiveElement(), -1);
8310    if (element.hasAuthor())
8311      composeReference(t, "Linkage", "author", element.getAuthor(), -1);
8312    for (int i = 0; i < element.getItem().size(); i++)
8313      composeLinkageLinkageItemComponent(t, "Linkage", "item", element.getItem().get(i), i);
8314  }
8315
8316  protected void composeLinkageLinkageItemComponent(Complex parent, String parentType, String name, Linkage.LinkageItemComponent element, int index) {
8317    if (element == null) 
8318      return;
8319    Complex t;
8320    if (Utilities.noString(parentType))
8321      t = parent;
8322    else {
8323      t = parent.predicate("fhir:"+parentType+'.'+name);
8324    }
8325    composeBackboneElement(t, "item", name, element, index);
8326    if (element.hasTypeElement())
8327      composeEnum(t, "Linkage", "type", element.getTypeElement(), -1);
8328    if (element.hasResource())
8329      composeReference(t, "Linkage", "resource", element.getResource(), -1);
8330  }
8331
8332  protected void composeListResource(Complex parent, String parentType, String name, ListResource element, int index) {
8333    if (element == null) 
8334      return;
8335    Complex t;
8336    if (Utilities.noString(parentType))
8337      t = parent;
8338    else {
8339      t = parent.predicate("fhir:"+parentType+'.'+name);
8340    }
8341    composeDomainResource(t, "List", name, element, index);
8342    for (int i = 0; i < element.getIdentifier().size(); i++)
8343      composeIdentifier(t, "List", "identifier", element.getIdentifier().get(i), i);
8344    if (element.hasStatusElement())
8345      composeEnum(t, "List", "status", element.getStatusElement(), -1);
8346    if (element.hasModeElement())
8347      composeEnum(t, "List", "mode", element.getModeElement(), -1);
8348    if (element.hasTitleElement())
8349      composeString(t, "List", "title", element.getTitleElement(), -1);
8350    if (element.hasCode())
8351      composeCodeableConcept(t, "List", "code", element.getCode(), -1);
8352    if (element.hasSubject())
8353      composeReference(t, "List", "subject", element.getSubject(), -1);
8354    if (element.hasEncounter())
8355      composeReference(t, "List", "encounter", element.getEncounter(), -1);
8356    if (element.hasDateElement())
8357      composeDateTime(t, "List", "date", element.getDateElement(), -1);
8358    if (element.hasSource())
8359      composeReference(t, "List", "source", element.getSource(), -1);
8360    if (element.hasOrderedBy())
8361      composeCodeableConcept(t, "List", "orderedBy", element.getOrderedBy(), -1);
8362    for (int i = 0; i < element.getNote().size(); i++)
8363      composeAnnotation(t, "List", "note", element.getNote().get(i), i);
8364    for (int i = 0; i < element.getEntry().size(); i++)
8365      composeListResourceListEntryComponent(t, "List", "entry", element.getEntry().get(i), i);
8366    if (element.hasEmptyReason())
8367      composeCodeableConcept(t, "List", "emptyReason", element.getEmptyReason(), -1);
8368  }
8369
8370  protected void composeListResourceListEntryComponent(Complex parent, String parentType, String name, ListResource.ListEntryComponent element, int index) {
8371    if (element == null) 
8372      return;
8373    Complex t;
8374    if (Utilities.noString(parentType))
8375      t = parent;
8376    else {
8377      t = parent.predicate("fhir:"+parentType+'.'+name);
8378    }
8379    composeBackboneElement(t, "entry", name, element, index);
8380    if (element.hasFlag())
8381      composeCodeableConcept(t, "List", "flag", element.getFlag(), -1);
8382    if (element.hasDeletedElement())
8383      composeBoolean(t, "List", "deleted", element.getDeletedElement(), -1);
8384    if (element.hasDateElement())
8385      composeDateTime(t, "List", "date", element.getDateElement(), -1);
8386    if (element.hasItem())
8387      composeReference(t, "List", "item", element.getItem(), -1);
8388  }
8389
8390  protected void composeLocation(Complex parent, String parentType, String name, Location element, int index) {
8391    if (element == null) 
8392      return;
8393    Complex t;
8394    if (Utilities.noString(parentType))
8395      t = parent;
8396    else {
8397      t = parent.predicate("fhir:"+parentType+'.'+name);
8398    }
8399    composeDomainResource(t, "Location", name, element, index);
8400    for (int i = 0; i < element.getIdentifier().size(); i++)
8401      composeIdentifier(t, "Location", "identifier", element.getIdentifier().get(i), i);
8402    if (element.hasStatusElement())
8403      composeEnum(t, "Location", "status", element.getStatusElement(), -1);
8404    if (element.hasOperationalStatus())
8405      composeCoding(t, "Location", "operationalStatus", element.getOperationalStatus(), -1);
8406    if (element.hasNameElement())
8407      composeString(t, "Location", "name", element.getNameElement(), -1);
8408    for (int i = 0; i < element.getAlias().size(); i++)
8409      composeString(t, "Location", "alias", element.getAlias().get(i), i);
8410    if (element.hasDescriptionElement())
8411      composeString(t, "Location", "description", element.getDescriptionElement(), -1);
8412    if (element.hasModeElement())
8413      composeEnum(t, "Location", "mode", element.getModeElement(), -1);
8414    for (int i = 0; i < element.getType().size(); i++)
8415      composeCodeableConcept(t, "Location", "type", element.getType().get(i), i);
8416    for (int i = 0; i < element.getTelecom().size(); i++)
8417      composeContactPoint(t, "Location", "telecom", element.getTelecom().get(i), i);
8418    if (element.hasAddress())
8419      composeAddress(t, "Location", "address", element.getAddress(), -1);
8420    if (element.hasPhysicalType())
8421      composeCodeableConcept(t, "Location", "physicalType", element.getPhysicalType(), -1);
8422    if (element.hasPosition())
8423      composeLocationLocationPositionComponent(t, "Location", "position", element.getPosition(), -1);
8424    if (element.hasManagingOrganization())
8425      composeReference(t, "Location", "managingOrganization", element.getManagingOrganization(), -1);
8426    if (element.hasPartOf())
8427      composeReference(t, "Location", "partOf", element.getPartOf(), -1);
8428    for (int i = 0; i < element.getHoursOfOperation().size(); i++)
8429      composeLocationLocationHoursOfOperationComponent(t, "Location", "hoursOfOperation", element.getHoursOfOperation().get(i), i);
8430    if (element.hasAvailabilityExceptionsElement())
8431      composeString(t, "Location", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
8432    for (int i = 0; i < element.getEndpoint().size(); i++)
8433      composeReference(t, "Location", "endpoint", element.getEndpoint().get(i), i);
8434  }
8435
8436  protected void composeLocationLocationPositionComponent(Complex parent, String parentType, String name, Location.LocationPositionComponent element, int index) {
8437    if (element == null) 
8438      return;
8439    Complex t;
8440    if (Utilities.noString(parentType))
8441      t = parent;
8442    else {
8443      t = parent.predicate("fhir:"+parentType+'.'+name);
8444    }
8445    composeBackboneElement(t, "position", name, element, index);
8446    if (element.hasLongitudeElement())
8447      composeDecimal(t, "Location", "longitude", element.getLongitudeElement(), -1);
8448    if (element.hasLatitudeElement())
8449      composeDecimal(t, "Location", "latitude", element.getLatitudeElement(), -1);
8450    if (element.hasAltitudeElement())
8451      composeDecimal(t, "Location", "altitude", element.getAltitudeElement(), -1);
8452  }
8453
8454  protected void composeLocationLocationHoursOfOperationComponent(Complex parent, String parentType, String name, Location.LocationHoursOfOperationComponent element, int index) {
8455    if (element == null) 
8456      return;
8457    Complex t;
8458    if (Utilities.noString(parentType))
8459      t = parent;
8460    else {
8461      t = parent.predicate("fhir:"+parentType+'.'+name);
8462    }
8463    composeBackboneElement(t, "hoursOfOperation", name, element, index);
8464    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
8465      composeEnum(t, "Location", "daysOfWeek", element.getDaysOfWeek().get(i), i);
8466    if (element.hasAllDayElement())
8467      composeBoolean(t, "Location", "allDay", element.getAllDayElement(), -1);
8468    if (element.hasOpeningTimeElement())
8469      composeTime(t, "Location", "openingTime", element.getOpeningTimeElement(), -1);
8470    if (element.hasClosingTimeElement())
8471      composeTime(t, "Location", "closingTime", element.getClosingTimeElement(), -1);
8472  }
8473
8474  protected void composeMeasure(Complex parent, String parentType, String name, Measure element, int index) {
8475    if (element == null) 
8476      return;
8477    Complex t;
8478    if (Utilities.noString(parentType))
8479      t = parent;
8480    else {
8481      t = parent.predicate("fhir:"+parentType+'.'+name);
8482    }
8483    composeDomainResource(t, "Measure", name, element, index);
8484    if (element.hasUrlElement())
8485      composeUri(t, "Measure", "url", element.getUrlElement(), -1);
8486    for (int i = 0; i < element.getIdentifier().size(); i++)
8487      composeIdentifier(t, "Measure", "identifier", element.getIdentifier().get(i), i);
8488    if (element.hasVersionElement())
8489      composeString(t, "Measure", "version", element.getVersionElement(), -1);
8490    if (element.hasNameElement())
8491      composeString(t, "Measure", "name", element.getNameElement(), -1);
8492    if (element.hasTitleElement())
8493      composeString(t, "Measure", "title", element.getTitleElement(), -1);
8494    if (element.hasSubtitleElement())
8495      composeString(t, "Measure", "subtitle", element.getSubtitleElement(), -1);
8496    if (element.hasStatusElement())
8497      composeEnum(t, "Measure", "status", element.getStatusElement(), -1);
8498    if (element.hasExperimentalElement())
8499      composeBoolean(t, "Measure", "experimental", element.getExperimentalElement(), -1);
8500    if (element.hasSubject())
8501      composeType(t, "Measure", "subject", element.getSubject(), -1);
8502    if (element.hasDateElement())
8503      composeDateTime(t, "Measure", "date", element.getDateElement(), -1);
8504    if (element.hasPublisherElement())
8505      composeString(t, "Measure", "publisher", element.getPublisherElement(), -1);
8506    for (int i = 0; i < element.getContact().size(); i++)
8507      composeContactDetail(t, "Measure", "contact", element.getContact().get(i), i);
8508    if (element.hasDescriptionElement())
8509      composeMarkdown(t, "Measure", "description", element.getDescriptionElement(), -1);
8510    for (int i = 0; i < element.getUseContext().size(); i++)
8511      composeUsageContext(t, "Measure", "useContext", element.getUseContext().get(i), i);
8512    for (int i = 0; i < element.getJurisdiction().size(); i++)
8513      composeCodeableConcept(t, "Measure", "jurisdiction", element.getJurisdiction().get(i), i);
8514    if (element.hasPurposeElement())
8515      composeMarkdown(t, "Measure", "purpose", element.getPurposeElement(), -1);
8516    if (element.hasUsageElement())
8517      composeString(t, "Measure", "usage", element.getUsageElement(), -1);
8518    if (element.hasCopyrightElement())
8519      composeMarkdown(t, "Measure", "copyright", element.getCopyrightElement(), -1);
8520    if (element.hasApprovalDateElement())
8521      composeDate(t, "Measure", "approvalDate", element.getApprovalDateElement(), -1);
8522    if (element.hasLastReviewDateElement())
8523      composeDate(t, "Measure", "lastReviewDate", element.getLastReviewDateElement(), -1);
8524    if (element.hasEffectivePeriod())
8525      composePeriod(t, "Measure", "effectivePeriod", element.getEffectivePeriod(), -1);
8526    for (int i = 0; i < element.getTopic().size(); i++)
8527      composeCodeableConcept(t, "Measure", "topic", element.getTopic().get(i), i);
8528    for (int i = 0; i < element.getContributor().size(); i++)
8529      composeContributor(t, "Measure", "contributor", element.getContributor().get(i), i);
8530    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
8531      composeRelatedArtifact(t, "Measure", "relatedArtifact", element.getRelatedArtifact().get(i), i);
8532    for (int i = 0; i < element.getLibrary().size(); i++)
8533      composeCanonical(t, "Measure", "library", element.getLibrary().get(i), i);
8534    if (element.hasDisclaimerElement())
8535      composeMarkdown(t, "Measure", "disclaimer", element.getDisclaimerElement(), -1);
8536    if (element.hasScoring())
8537      composeCodeableConcept(t, "Measure", "scoring", element.getScoring(), -1);
8538    if (element.hasCompositeScoring())
8539      composeCodeableConcept(t, "Measure", "compositeScoring", element.getCompositeScoring(), -1);
8540    for (int i = 0; i < element.getType().size(); i++)
8541      composeCodeableConcept(t, "Measure", "type", element.getType().get(i), i);
8542    if (element.hasRiskAdjustmentElement())
8543      composeString(t, "Measure", "riskAdjustment", element.getRiskAdjustmentElement(), -1);
8544    if (element.hasRateAggregationElement())
8545      composeString(t, "Measure", "rateAggregation", element.getRateAggregationElement(), -1);
8546    if (element.hasRationaleElement())
8547      composeMarkdown(t, "Measure", "rationale", element.getRationaleElement(), -1);
8548    if (element.hasClinicalRecommendationStatementElement())
8549      composeMarkdown(t, "Measure", "clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement(), -1);
8550    if (element.hasImprovementNotationElement())
8551      composeString(t, "Measure", "improvementNotation", element.getImprovementNotationElement(), -1);
8552    for (int i = 0; i < element.getDefinition().size(); i++)
8553      composeMarkdown(t, "Measure", "definition", element.getDefinition().get(i), i);
8554    if (element.hasGuidanceElement())
8555      composeMarkdown(t, "Measure", "guidance", element.getGuidanceElement(), -1);
8556    if (element.hasSetElement())
8557      composeString(t, "Measure", "set", element.getSetElement(), -1);
8558    for (int i = 0; i < element.getGroup().size(); i++)
8559      composeMeasureMeasureGroupComponent(t, "Measure", "group", element.getGroup().get(i), i);
8560    for (int i = 0; i < element.getSupplementalData().size(); i++)
8561      composeMeasureMeasureSupplementalDataComponent(t, "Measure", "supplementalData", element.getSupplementalData().get(i), i);
8562  }
8563
8564  protected void composeMeasureMeasureGroupComponent(Complex parent, String parentType, String name, Measure.MeasureGroupComponent element, int index) {
8565    if (element == null) 
8566      return;
8567    Complex t;
8568    if (Utilities.noString(parentType))
8569      t = parent;
8570    else {
8571      t = parent.predicate("fhir:"+parentType+'.'+name);
8572    }
8573    composeBackboneElement(t, "group", name, element, index);
8574    if (element.hasCode())
8575      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
8576    if (element.hasDescriptionElement())
8577      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
8578    for (int i = 0; i < element.getPopulation().size(); i++)
8579      composeMeasureMeasureGroupPopulationComponent(t, "Measure", "population", element.getPopulation().get(i), i);
8580    for (int i = 0; i < element.getStratifier().size(); i++)
8581      composeMeasureMeasureGroupStratifierComponent(t, "Measure", "stratifier", element.getStratifier().get(i), i);
8582  }
8583
8584  protected void composeMeasureMeasureGroupPopulationComponent(Complex parent, String parentType, String name, Measure.MeasureGroupPopulationComponent element, int index) {
8585    if (element == null) 
8586      return;
8587    Complex t;
8588    if (Utilities.noString(parentType))
8589      t = parent;
8590    else {
8591      t = parent.predicate("fhir:"+parentType+'.'+name);
8592    }
8593    composeBackboneElement(t, "population", name, element, index);
8594    if (element.hasCode())
8595      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
8596    if (element.hasDescriptionElement())
8597      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
8598    if (element.hasCriteriaElement())
8599      composeString(t, "Measure", "criteria", element.getCriteriaElement(), -1);
8600  }
8601
8602  protected void composeMeasureMeasureGroupStratifierComponent(Complex parent, String parentType, String name, Measure.MeasureGroupStratifierComponent element, int index) {
8603    if (element == null) 
8604      return;
8605    Complex t;
8606    if (Utilities.noString(parentType))
8607      t = parent;
8608    else {
8609      t = parent.predicate("fhir:"+parentType+'.'+name);
8610    }
8611    composeBackboneElement(t, "stratifier", name, element, index);
8612    if (element.hasCode())
8613      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
8614    if (element.hasDescriptionElement())
8615      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
8616    if (element.hasCriteriaElement())
8617      composeString(t, "Measure", "criteria", element.getCriteriaElement(), -1);
8618    if (element.hasPathElement())
8619      composeString(t, "Measure", "path", element.getPathElement(), -1);
8620  }
8621
8622  protected void composeMeasureMeasureSupplementalDataComponent(Complex parent, String parentType, String name, Measure.MeasureSupplementalDataComponent element, int index) {
8623    if (element == null) 
8624      return;
8625    Complex t;
8626    if (Utilities.noString(parentType))
8627      t = parent;
8628    else {
8629      t = parent.predicate("fhir:"+parentType+'.'+name);
8630    }
8631    composeBackboneElement(t, "supplementalData", name, element, index);
8632    if (element.hasCode())
8633      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
8634    for (int i = 0; i < element.getUsage().size(); i++)
8635      composeCodeableConcept(t, "Measure", "usage", element.getUsage().get(i), i);
8636    if (element.hasDescriptionElement())
8637      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
8638    if (element.hasCriteriaElement())
8639      composeString(t, "Measure", "criteria", element.getCriteriaElement(), -1);
8640    if (element.hasPathElement())
8641      composeString(t, "Measure", "path", element.getPathElement(), -1);
8642  }
8643
8644  protected void composeMeasureReport(Complex parent, String parentType, String name, MeasureReport element, int index) {
8645    if (element == null) 
8646      return;
8647    Complex t;
8648    if (Utilities.noString(parentType))
8649      t = parent;
8650    else {
8651      t = parent.predicate("fhir:"+parentType+'.'+name);
8652    }
8653    composeDomainResource(t, "MeasureReport", name, element, index);
8654    for (int i = 0; i < element.getIdentifier().size(); i++)
8655      composeIdentifier(t, "MeasureReport", "identifier", element.getIdentifier().get(i), i);
8656    if (element.hasStatusElement())
8657      composeEnum(t, "MeasureReport", "status", element.getStatusElement(), -1);
8658    if (element.hasTypeElement())
8659      composeEnum(t, "MeasureReport", "type", element.getTypeElement(), -1);
8660    if (element.hasMeasureElement())
8661      composeCanonical(t, "MeasureReport", "measure", element.getMeasureElement(), -1);
8662    if (element.hasSubject())
8663      composeReference(t, "MeasureReport", "subject", element.getSubject(), -1);
8664    if (element.hasDateElement())
8665      composeDateTime(t, "MeasureReport", "date", element.getDateElement(), -1);
8666    if (element.hasReporter())
8667      composeReference(t, "MeasureReport", "reporter", element.getReporter(), -1);
8668    if (element.hasPeriod())
8669      composePeriod(t, "MeasureReport", "period", element.getPeriod(), -1);
8670    for (int i = 0; i < element.getGroup().size(); i++)
8671      composeMeasureReportMeasureReportGroupComponent(t, "MeasureReport", "group", element.getGroup().get(i), i);
8672    if (element.hasEvaluatedResources())
8673      composeReference(t, "MeasureReport", "evaluatedResources", element.getEvaluatedResources(), -1);
8674  }
8675
8676  protected void composeMeasureReportMeasureReportGroupComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupComponent element, int index) {
8677    if (element == null) 
8678      return;
8679    Complex t;
8680    if (Utilities.noString(parentType))
8681      t = parent;
8682    else {
8683      t = parent.predicate("fhir:"+parentType+'.'+name);
8684    }
8685    composeBackboneElement(t, "group", name, element, index);
8686    if (element.hasCode())
8687      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
8688    for (int i = 0; i < element.getPopulation().size(); i++)
8689      composeMeasureReportMeasureReportGroupPopulationComponent(t, "MeasureReport", "population", element.getPopulation().get(i), i);
8690    if (element.hasMeasureScore())
8691      composeQuantity(t, "MeasureReport", "measureScore", element.getMeasureScore(), -1);
8692    for (int i = 0; i < element.getStratifier().size(); i++)
8693      composeMeasureReportMeasureReportGroupStratifierComponent(t, "MeasureReport", "stratifier", element.getStratifier().get(i), i);
8694  }
8695
8696  protected void composeMeasureReportMeasureReportGroupPopulationComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupPopulationComponent element, int index) {
8697    if (element == null) 
8698      return;
8699    Complex t;
8700    if (Utilities.noString(parentType))
8701      t = parent;
8702    else {
8703      t = parent.predicate("fhir:"+parentType+'.'+name);
8704    }
8705    composeBackboneElement(t, "population", name, element, index);
8706    if (element.hasCode())
8707      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
8708    if (element.hasCountElement())
8709      composeInteger(t, "MeasureReport", "count", element.getCountElement(), -1);
8710    if (element.hasSubjects())
8711      composeReference(t, "MeasureReport", "subjects", element.getSubjects(), -1);
8712  }
8713
8714  protected void composeMeasureReportMeasureReportGroupStratifierComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupStratifierComponent element, int index) {
8715    if (element == null) 
8716      return;
8717    Complex t;
8718    if (Utilities.noString(parentType))
8719      t = parent;
8720    else {
8721      t = parent.predicate("fhir:"+parentType+'.'+name);
8722    }
8723    composeBackboneElement(t, "stratifier", name, element, index);
8724    if (element.hasCode())
8725      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
8726    for (int i = 0; i < element.getStratum().size(); i++)
8727      composeMeasureReportStratifierGroupComponent(t, "MeasureReport", "stratum", element.getStratum().get(i), i);
8728  }
8729
8730  protected void composeMeasureReportStratifierGroupComponent(Complex parent, String parentType, String name, MeasureReport.StratifierGroupComponent element, int index) {
8731    if (element == null) 
8732      return;
8733    Complex t;
8734    if (Utilities.noString(parentType))
8735      t = parent;
8736    else {
8737      t = parent.predicate("fhir:"+parentType+'.'+name);
8738    }
8739    composeBackboneElement(t, "stratum", name, element, index);
8740    if (element.hasValue())
8741      composeCodeableConcept(t, "MeasureReport", "value", element.getValue(), -1);
8742    for (int i = 0; i < element.getPopulation().size(); i++)
8743      composeMeasureReportStratifierGroupPopulationComponent(t, "MeasureReport", "population", element.getPopulation().get(i), i);
8744    if (element.hasMeasureScore())
8745      composeQuantity(t, "MeasureReport", "measureScore", element.getMeasureScore(), -1);
8746  }
8747
8748  protected void composeMeasureReportStratifierGroupPopulationComponent(Complex parent, String parentType, String name, MeasureReport.StratifierGroupPopulationComponent element, int index) {
8749    if (element == null) 
8750      return;
8751    Complex t;
8752    if (Utilities.noString(parentType))
8753      t = parent;
8754    else {
8755      t = parent.predicate("fhir:"+parentType+'.'+name);
8756    }
8757    composeBackboneElement(t, "population", name, element, index);
8758    if (element.hasCode())
8759      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
8760    if (element.hasCountElement())
8761      composeInteger(t, "MeasureReport", "count", element.getCountElement(), -1);
8762    if (element.hasSubjects())
8763      composeReference(t, "MeasureReport", "subjects", element.getSubjects(), -1);
8764  }
8765
8766  protected void composeMedia(Complex parent, String parentType, String name, Media element, int index) {
8767    if (element == null) 
8768      return;
8769    Complex t;
8770    if (Utilities.noString(parentType))
8771      t = parent;
8772    else {
8773      t = parent.predicate("fhir:"+parentType+'.'+name);
8774    }
8775    composeDomainResource(t, "Media", name, element, index);
8776    for (int i = 0; i < element.getIdentifier().size(); i++)
8777      composeIdentifier(t, "Media", "identifier", element.getIdentifier().get(i), i);
8778    for (int i = 0; i < element.getBasedOn().size(); i++)
8779      composeReference(t, "Media", "basedOn", element.getBasedOn().get(i), i);
8780    for (int i = 0; i < element.getPartOf().size(); i++)
8781      composeReference(t, "Media", "partOf", element.getPartOf().get(i), i);
8782    if (element.hasStatusElement())
8783      composeEnum(t, "Media", "status", element.getStatusElement(), -1);
8784    if (element.hasType())
8785      composeCodeableConcept(t, "Media", "type", element.getType(), -1);
8786    if (element.hasModality())
8787      composeCodeableConcept(t, "Media", "modality", element.getModality(), -1);
8788    if (element.hasView())
8789      composeCodeableConcept(t, "Media", "view", element.getView(), -1);
8790    if (element.hasSubject())
8791      composeReference(t, "Media", "subject", element.getSubject(), -1);
8792    if (element.hasContext())
8793      composeReference(t, "Media", "context", element.getContext(), -1);
8794    if (element.hasCreated())
8795      composeType(t, "Media", "created", element.getCreated(), -1);
8796    if (element.hasIssuedElement())
8797      composeInstant(t, "Media", "issued", element.getIssuedElement(), -1);
8798    if (element.hasOperator())
8799      composeReference(t, "Media", "operator", element.getOperator(), -1);
8800    for (int i = 0; i < element.getReasonCode().size(); i++)
8801      composeCodeableConcept(t, "Media", "reasonCode", element.getReasonCode().get(i), i);
8802    if (element.hasBodySite())
8803      composeCodeableConcept(t, "Media", "bodySite", element.getBodySite(), -1);
8804    if (element.hasDeviceNameElement())
8805      composeString(t, "Media", "deviceName", element.getDeviceNameElement(), -1);
8806    if (element.hasDevice())
8807      composeReference(t, "Media", "device", element.getDevice(), -1);
8808    if (element.hasHeightElement())
8809      composePositiveInt(t, "Media", "height", element.getHeightElement(), -1);
8810    if (element.hasWidthElement())
8811      composePositiveInt(t, "Media", "width", element.getWidthElement(), -1);
8812    if (element.hasFramesElement())
8813      composePositiveInt(t, "Media", "frames", element.getFramesElement(), -1);
8814    if (element.hasDurationElement())
8815      composeDecimal(t, "Media", "duration", element.getDurationElement(), -1);
8816    if (element.hasContent())
8817      composeAttachment(t, "Media", "content", element.getContent(), -1);
8818    for (int i = 0; i < element.getNote().size(); i++)
8819      composeAnnotation(t, "Media", "note", element.getNote().get(i), i);
8820  }
8821
8822  protected void composeMedication(Complex parent, String parentType, String name, Medication element, int index) {
8823    if (element == null) 
8824      return;
8825    Complex t;
8826    if (Utilities.noString(parentType))
8827      t = parent;
8828    else {
8829      t = parent.predicate("fhir:"+parentType+'.'+name);
8830    }
8831    composeDomainResource(t, "Medication", name, element, index);
8832    if (element.hasCode())
8833      composeCodeableConcept(t, "Medication", "code", element.getCode(), -1);
8834    if (element.hasStatusElement())
8835      composeEnum(t, "Medication", "status", element.getStatusElement(), -1);
8836    if (element.hasManufacturer())
8837      composeReference(t, "Medication", "manufacturer", element.getManufacturer(), -1);
8838    if (element.hasForm())
8839      composeCodeableConcept(t, "Medication", "form", element.getForm(), -1);
8840    if (element.hasAmount())
8841      composeQuantity(t, "Medication", "amount", element.getAmount(), -1);
8842    for (int i = 0; i < element.getIngredient().size(); i++)
8843      composeMedicationMedicationIngredientComponent(t, "Medication", "ingredient", element.getIngredient().get(i), i);
8844    if (element.hasBatch())
8845      composeMedicationMedicationBatchComponent(t, "Medication", "batch", element.getBatch(), -1);
8846  }
8847
8848  protected void composeMedicationMedicationIngredientComponent(Complex parent, String parentType, String name, Medication.MedicationIngredientComponent element, int index) {
8849    if (element == null) 
8850      return;
8851    Complex t;
8852    if (Utilities.noString(parentType))
8853      t = parent;
8854    else {
8855      t = parent.predicate("fhir:"+parentType+'.'+name);
8856    }
8857    composeBackboneElement(t, "ingredient", name, element, index);
8858    if (element.hasItem())
8859      composeType(t, "Medication", "item", element.getItem(), -1);
8860    if (element.hasIsActiveElement())
8861      composeBoolean(t, "Medication", "isActive", element.getIsActiveElement(), -1);
8862    if (element.hasAmount())
8863      composeRatio(t, "Medication", "amount", element.getAmount(), -1);
8864  }
8865
8866  protected void composeMedicationMedicationBatchComponent(Complex parent, String parentType, String name, Medication.MedicationBatchComponent element, int index) {
8867    if (element == null) 
8868      return;
8869    Complex t;
8870    if (Utilities.noString(parentType))
8871      t = parent;
8872    else {
8873      t = parent.predicate("fhir:"+parentType+'.'+name);
8874    }
8875    composeBackboneElement(t, "batch", name, element, index);
8876    if (element.hasLotNumberElement())
8877      composeString(t, "Medication", "lotNumber", element.getLotNumberElement(), -1);
8878    if (element.hasExpirationDateElement())
8879      composeDateTime(t, "Medication", "expirationDate", element.getExpirationDateElement(), -1);
8880    if (element.hasSerialNumberElement())
8881      composeString(t, "Medication", "serialNumber", element.getSerialNumberElement(), -1);
8882  }
8883
8884  protected void composeMedicationAdministration(Complex parent, String parentType, String name, MedicationAdministration element, int index) {
8885    if (element == null) 
8886      return;
8887    Complex t;
8888    if (Utilities.noString(parentType))
8889      t = parent;
8890    else {
8891      t = parent.predicate("fhir:"+parentType+'.'+name);
8892    }
8893    composeDomainResource(t, "MedicationAdministration", name, element, index);
8894    for (int i = 0; i < element.getIdentifier().size(); i++)
8895      composeIdentifier(t, "MedicationAdministration", "identifier", element.getIdentifier().get(i), i);
8896    for (int i = 0; i < element.getInstantiates().size(); i++)
8897      composeUri(t, "MedicationAdministration", "instantiates", element.getInstantiates().get(i), i);
8898    for (int i = 0; i < element.getPartOf().size(); i++)
8899      composeReference(t, "MedicationAdministration", "partOf", element.getPartOf().get(i), i);
8900    if (element.hasStatusElement())
8901      composeEnum(t, "MedicationAdministration", "status", element.getStatusElement(), -1);
8902    if (element.hasCategory())
8903      composeCodeableConcept(t, "MedicationAdministration", "category", element.getCategory(), -1);
8904    if (element.hasMedication())
8905      composeType(t, "MedicationAdministration", "medication", element.getMedication(), -1);
8906    if (element.hasSubject())
8907      composeReference(t, "MedicationAdministration", "subject", element.getSubject(), -1);
8908    if (element.hasContext())
8909      composeReference(t, "MedicationAdministration", "context", element.getContext(), -1);
8910    for (int i = 0; i < element.getSupportingInformation().size(); i++)
8911      composeReference(t, "MedicationAdministration", "supportingInformation", element.getSupportingInformation().get(i), i);
8912    if (element.hasEffective())
8913      composeType(t, "MedicationAdministration", "effective", element.getEffective(), -1);
8914    for (int i = 0; i < element.getPerformer().size(); i++)
8915      composeMedicationAdministrationMedicationAdministrationPerformerComponent(t, "MedicationAdministration", "performer", element.getPerformer().get(i), i);
8916    for (int i = 0; i < element.getStatusReason().size(); i++)
8917      composeCodeableConcept(t, "MedicationAdministration", "statusReason", element.getStatusReason().get(i), i);
8918    for (int i = 0; i < element.getReasonCode().size(); i++)
8919      composeCodeableConcept(t, "MedicationAdministration", "reasonCode", element.getReasonCode().get(i), i);
8920    for (int i = 0; i < element.getReasonReference().size(); i++)
8921      composeReference(t, "MedicationAdministration", "reasonReference", element.getReasonReference().get(i), i);
8922    if (element.hasRequest())
8923      composeReference(t, "MedicationAdministration", "request", element.getRequest(), -1);
8924    for (int i = 0; i < element.getDevice().size(); i++)
8925      composeReference(t, "MedicationAdministration", "device", element.getDevice().get(i), i);
8926    for (int i = 0; i < element.getNote().size(); i++)
8927      composeAnnotation(t, "MedicationAdministration", "note", element.getNote().get(i), i);
8928    if (element.hasDosage())
8929      composeMedicationAdministrationMedicationAdministrationDosageComponent(t, "MedicationAdministration", "dosage", element.getDosage(), -1);
8930    for (int i = 0; i < element.getEventHistory().size(); i++)
8931      composeReference(t, "MedicationAdministration", "eventHistory", element.getEventHistory().get(i), i);
8932  }
8933
8934  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(Complex parent, String parentType, String name, MedicationAdministration.MedicationAdministrationPerformerComponent element, int index) {
8935    if (element == null) 
8936      return;
8937    Complex t;
8938    if (Utilities.noString(parentType))
8939      t = parent;
8940    else {
8941      t = parent.predicate("fhir:"+parentType+'.'+name);
8942    }
8943    composeBackboneElement(t, "performer", name, element, index);
8944    if (element.hasFunction())
8945      composeCodeableConcept(t, "MedicationAdministration", "function", element.getFunction(), -1);
8946    if (element.hasActor())
8947      composeReference(t, "MedicationAdministration", "actor", element.getActor(), -1);
8948  }
8949
8950  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(Complex parent, String parentType, String name, MedicationAdministration.MedicationAdministrationDosageComponent element, int index) {
8951    if (element == null) 
8952      return;
8953    Complex t;
8954    if (Utilities.noString(parentType))
8955      t = parent;
8956    else {
8957      t = parent.predicate("fhir:"+parentType+'.'+name);
8958    }
8959    composeBackboneElement(t, "dosage", name, element, index);
8960    if (element.hasTextElement())
8961      composeString(t, "MedicationAdministration", "text", element.getTextElement(), -1);
8962    if (element.hasSite())
8963      composeCodeableConcept(t, "MedicationAdministration", "site", element.getSite(), -1);
8964    if (element.hasRoute())
8965      composeCodeableConcept(t, "MedicationAdministration", "route", element.getRoute(), -1);
8966    if (element.hasMethod())
8967      composeCodeableConcept(t, "MedicationAdministration", "method", element.getMethod(), -1);
8968    if (element.hasDose())
8969      composeQuantity(t, "MedicationAdministration", "dose", element.getDose(), -1);
8970    if (element.hasRate())
8971      composeType(t, "MedicationAdministration", "rate", element.getRate(), -1);
8972  }
8973
8974  protected void composeMedicationDispense(Complex parent, String parentType, String name, MedicationDispense element, int index) {
8975    if (element == null) 
8976      return;
8977    Complex t;
8978    if (Utilities.noString(parentType))
8979      t = parent;
8980    else {
8981      t = parent.predicate("fhir:"+parentType+'.'+name);
8982    }
8983    composeDomainResource(t, "MedicationDispense", name, element, index);
8984    for (int i = 0; i < element.getIdentifier().size(); i++)
8985      composeIdentifier(t, "MedicationDispense", "identifier", element.getIdentifier().get(i), i);
8986    for (int i = 0; i < element.getPartOf().size(); i++)
8987      composeReference(t, "MedicationDispense", "partOf", element.getPartOf().get(i), i);
8988    if (element.hasStatusElement())
8989      composeEnum(t, "MedicationDispense", "status", element.getStatusElement(), -1);
8990    if (element.hasCategory())
8991      composeCodeableConcept(t, "MedicationDispense", "category", element.getCategory(), -1);
8992    if (element.hasMedication())
8993      composeType(t, "MedicationDispense", "medication", element.getMedication(), -1);
8994    if (element.hasSubject())
8995      composeReference(t, "MedicationDispense", "subject", element.getSubject(), -1);
8996    if (element.hasContext())
8997      composeReference(t, "MedicationDispense", "context", element.getContext(), -1);
8998    for (int i = 0; i < element.getSupportingInformation().size(); i++)
8999      composeReference(t, "MedicationDispense", "supportingInformation", element.getSupportingInformation().get(i), i);
9000    for (int i = 0; i < element.getPerformer().size(); i++)
9001      composeMedicationDispenseMedicationDispensePerformerComponent(t, "MedicationDispense", "performer", element.getPerformer().get(i), i);
9002    if (element.hasLocation())
9003      composeReference(t, "MedicationDispense", "location", element.getLocation(), -1);
9004    for (int i = 0; i < element.getAuthorizingPrescription().size(); i++)
9005      composeReference(t, "MedicationDispense", "authorizingPrescription", element.getAuthorizingPrescription().get(i), i);
9006    if (element.hasType())
9007      composeCodeableConcept(t, "MedicationDispense", "type", element.getType(), -1);
9008    if (element.hasQuantity())
9009      composeQuantity(t, "MedicationDispense", "quantity", element.getQuantity(), -1);
9010    if (element.hasDaysSupply())
9011      composeQuantity(t, "MedicationDispense", "daysSupply", element.getDaysSupply(), -1);
9012    if (element.hasWhenPreparedElement())
9013      composeDateTime(t, "MedicationDispense", "whenPrepared", element.getWhenPreparedElement(), -1);
9014    if (element.hasWhenHandedOverElement())
9015      composeDateTime(t, "MedicationDispense", "whenHandedOver", element.getWhenHandedOverElement(), -1);
9016    if (element.hasDestination())
9017      composeReference(t, "MedicationDispense", "destination", element.getDestination(), -1);
9018    for (int i = 0; i < element.getReceiver().size(); i++)
9019      composeReference(t, "MedicationDispense", "receiver", element.getReceiver().get(i), i);
9020    for (int i = 0; i < element.getNote().size(); i++)
9021      composeAnnotation(t, "MedicationDispense", "note", element.getNote().get(i), i);
9022    for (int i = 0; i < element.getDosageInstruction().size(); i++)
9023      composeDosage(t, "MedicationDispense", "dosageInstruction", element.getDosageInstruction().get(i), i);
9024    if (element.hasSubstitution())
9025      composeMedicationDispenseMedicationDispenseSubstitutionComponent(t, "MedicationDispense", "substitution", element.getSubstitution(), -1);
9026    for (int i = 0; i < element.getDetectedIssue().size(); i++)
9027      composeReference(t, "MedicationDispense", "detectedIssue", element.getDetectedIssue().get(i), i);
9028    if (element.hasStatusReason())
9029      composeType(t, "MedicationDispense", "statusReason", element.getStatusReason(), -1);
9030    for (int i = 0; i < element.getEventHistory().size(); i++)
9031      composeReference(t, "MedicationDispense", "eventHistory", element.getEventHistory().get(i), i);
9032  }
9033
9034  protected void composeMedicationDispenseMedicationDispensePerformerComponent(Complex parent, String parentType, String name, MedicationDispense.MedicationDispensePerformerComponent element, int index) {
9035    if (element == null) 
9036      return;
9037    Complex t;
9038    if (Utilities.noString(parentType))
9039      t = parent;
9040    else {
9041      t = parent.predicate("fhir:"+parentType+'.'+name);
9042    }
9043    composeBackboneElement(t, "performer", name, element, index);
9044    if (element.hasFunction())
9045      composeCodeableConcept(t, "MedicationDispense", "function", element.getFunction(), -1);
9046    if (element.hasActor())
9047      composeReference(t, "MedicationDispense", "actor", element.getActor(), -1);
9048  }
9049
9050  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(Complex parent, String parentType, String name, MedicationDispense.MedicationDispenseSubstitutionComponent element, int index) {
9051    if (element == null) 
9052      return;
9053    Complex t;
9054    if (Utilities.noString(parentType))
9055      t = parent;
9056    else {
9057      t = parent.predicate("fhir:"+parentType+'.'+name);
9058    }
9059    composeBackboneElement(t, "substitution", name, element, index);
9060    if (element.hasWasSubstitutedElement())
9061      composeBoolean(t, "MedicationDispense", "wasSubstituted", element.getWasSubstitutedElement(), -1);
9062    if (element.hasType())
9063      composeCodeableConcept(t, "MedicationDispense", "type", element.getType(), -1);
9064    for (int i = 0; i < element.getReason().size(); i++)
9065      composeCodeableConcept(t, "MedicationDispense", "reason", element.getReason().get(i), i);
9066    for (int i = 0; i < element.getResponsibleParty().size(); i++)
9067      composeReference(t, "MedicationDispense", "responsibleParty", element.getResponsibleParty().get(i), i);
9068  }
9069
9070
9071  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element, int index) {
9072    if (element == null) 
9073      return;
9074    Complex t;
9075    if (Utilities.noString(parentType))
9076      t = parent;
9077    else {
9078      t = parent.predicate("fhir:"+parentType+'.'+name);
9079    }
9080    composeBackboneElement(t, "monitoringProgram", name, element, index);
9081    if (element.hasType())
9082      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
9083    if (element.hasNameElement())
9084      composeString(t, "MedicationKnowledge", "name", element.getNameElement(), -1);
9085  }
9086
9087
9088
9089
9090  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element, int index) {
9091    if (element == null) 
9092      return;
9093    Complex t;
9094    if (Utilities.noString(parentType))
9095      t = parent;
9096    else {
9097      t = parent.predicate("fhir:"+parentType+'.'+name);
9098    }
9099    composeBackboneElement(t, "packaging", name, element, index);
9100    if (element.hasType())
9101      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
9102    if (element.hasQuantity())
9103      composeQuantity(t, "MedicationKnowledge", "quantity", element.getQuantity(), -1);
9104  }
9105
9106
9107  protected void composeMedicationRequest(Complex parent, String parentType, String name, MedicationRequest element, int index) {
9108    if (element == null) 
9109      return;
9110    Complex t;
9111    if (Utilities.noString(parentType))
9112      t = parent;
9113    else {
9114      t = parent.predicate("fhir:"+parentType+'.'+name);
9115    }
9116    composeDomainResource(t, "MedicationRequest", name, element, index);
9117    for (int i = 0; i < element.getIdentifier().size(); i++)
9118      composeIdentifier(t, "MedicationRequest", "identifier", element.getIdentifier().get(i), i);
9119    if (element.hasStatusElement())
9120      composeEnum(t, "MedicationRequest", "status", element.getStatusElement(), -1);
9121    if (element.hasIntentElement())
9122      composeEnum(t, "MedicationRequest", "intent", element.getIntentElement(), -1);
9123    for (int i = 0; i < element.getCategory().size(); i++)
9124      composeCodeableConcept(t, "MedicationRequest", "category", element.getCategory().get(i), i);
9125    if (element.hasPriorityElement())
9126      composeEnum(t, "MedicationRequest", "priority", element.getPriorityElement(), -1);
9127    if (element.hasMedication())
9128      composeType(t, "MedicationRequest", "medication", element.getMedication(), -1);
9129    if (element.hasSubject())
9130      composeReference(t, "MedicationRequest", "subject", element.getSubject(), -1);
9131    if (element.hasContext())
9132      composeReference(t, "MedicationRequest", "context", element.getContext(), -1);
9133    for (int i = 0; i < element.getSupportingInformation().size(); i++)
9134      composeReference(t, "MedicationRequest", "supportingInformation", element.getSupportingInformation().get(i), i);
9135    if (element.hasAuthoredOnElement())
9136      composeDateTime(t, "MedicationRequest", "authoredOn", element.getAuthoredOnElement(), -1);
9137    if (element.hasRequester())
9138      composeReference(t, "MedicationRequest", "requester", element.getRequester(), -1);
9139    if (element.hasPerformer())
9140      composeReference(t, "MedicationRequest", "performer", element.getPerformer(), -1);
9141    if (element.hasPerformerType())
9142      composeCodeableConcept(t, "MedicationRequest", "performerType", element.getPerformerType(), -1);
9143    if (element.hasRecorder())
9144      composeReference(t, "MedicationRequest", "recorder", element.getRecorder(), -1);
9145    for (int i = 0; i < element.getReasonCode().size(); i++)
9146      composeCodeableConcept(t, "MedicationRequest", "reasonCode", element.getReasonCode().get(i), i);
9147    for (int i = 0; i < element.getReasonReference().size(); i++)
9148      composeReference(t, "MedicationRequest", "reasonReference", element.getReasonReference().get(i), i);
9149    for (int i = 0; i < element.getInstantiates().size(); i++)
9150      composeUri(t, "MedicationRequest", "instantiates", element.getInstantiates().get(i), i);
9151    for (int i = 0; i < element.getBasedOn().size(); i++)
9152      composeReference(t, "MedicationRequest", "basedOn", element.getBasedOn().get(i), i);
9153    if (element.hasGroupIdentifier())
9154      composeIdentifier(t, "MedicationRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
9155    if (element.hasStatusReason())
9156      composeCodeableConcept(t, "MedicationRequest", "statusReason", element.getStatusReason(), -1);
9157    for (int i = 0; i < element.getInsurance().size(); i++)
9158      composeReference(t, "MedicationRequest", "insurance", element.getInsurance().get(i), i);
9159    for (int i = 0; i < element.getNote().size(); i++)
9160      composeAnnotation(t, "MedicationRequest", "note", element.getNote().get(i), i);
9161    for (int i = 0; i < element.getDosageInstruction().size(); i++)
9162      composeDosage(t, "MedicationRequest", "dosageInstruction", element.getDosageInstruction().get(i), i);
9163    if (element.hasDispenseRequest())
9164      composeMedicationRequestMedicationRequestDispenseRequestComponent(t, "MedicationRequest", "dispenseRequest", element.getDispenseRequest(), -1);
9165    if (element.hasSubstitution())
9166      composeMedicationRequestMedicationRequestSubstitutionComponent(t, "MedicationRequest", "substitution", element.getSubstitution(), -1);
9167    if (element.hasPriorPrescription())
9168      composeReference(t, "MedicationRequest", "priorPrescription", element.getPriorPrescription(), -1);
9169    for (int i = 0; i < element.getDetectedIssue().size(); i++)
9170      composeReference(t, "MedicationRequest", "detectedIssue", element.getDetectedIssue().get(i), i);
9171    for (int i = 0; i < element.getEventHistory().size(); i++)
9172      composeReference(t, "MedicationRequest", "eventHistory", element.getEventHistory().get(i), i);
9173  }
9174
9175  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(Complex parent, String parentType, String name, MedicationRequest.MedicationRequestDispenseRequestComponent element, int index) {
9176    if (element == null) 
9177      return;
9178    Complex t;
9179    if (Utilities.noString(parentType))
9180      t = parent;
9181    else {
9182      t = parent.predicate("fhir:"+parentType+'.'+name);
9183    }
9184    composeBackboneElement(t, "dispenseRequest", name, element, index);
9185    if (element.hasValidityPeriod())
9186      composePeriod(t, "MedicationRequest", "validityPeriod", element.getValidityPeriod(), -1);
9187    if (element.hasNumberOfRepeatsAllowedElement())
9188      composeUnsignedInt(t, "MedicationRequest", "numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement(), -1);
9189    if (element.hasQuantity())
9190      composeQuantity(t, "MedicationRequest", "quantity", element.getQuantity(), -1);
9191    if (element.hasExpectedSupplyDuration())
9192      composeDuration(t, "MedicationRequest", "expectedSupplyDuration", element.getExpectedSupplyDuration(), -1);
9193    if (element.hasPerformer())
9194      composeReference(t, "MedicationRequest", "performer", element.getPerformer(), -1);
9195  }
9196
9197  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(Complex parent, String parentType, String name, MedicationRequest.MedicationRequestSubstitutionComponent element, int index) {
9198    if (element == null) 
9199      return;
9200    Complex t;
9201    if (Utilities.noString(parentType))
9202      t = parent;
9203    else {
9204      t = parent.predicate("fhir:"+parentType+'.'+name);
9205    }
9206    composeBackboneElement(t, "substitution", name, element, index);
9207    if (element.hasAllowedElement())
9208      composeBoolean(t, "MedicationRequest", "allowed", element.getAllowedElement(), -1);
9209    if (element.hasReason())
9210      composeCodeableConcept(t, "MedicationRequest", "reason", element.getReason(), -1);
9211  }
9212
9213  protected void composeMedicationStatement(Complex parent, String parentType, String name, MedicationStatement element, int index) {
9214    if (element == null) 
9215      return;
9216    Complex t;
9217    if (Utilities.noString(parentType))
9218      t = parent;
9219    else {
9220      t = parent.predicate("fhir:"+parentType+'.'+name);
9221    }
9222    composeDomainResource(t, "MedicationStatement", name, element, index);
9223    for (int i = 0; i < element.getIdentifier().size(); i++)
9224      composeIdentifier(t, "MedicationStatement", "identifier", element.getIdentifier().get(i), i);
9225    for (int i = 0; i < element.getBasedOn().size(); i++)
9226      composeReference(t, "MedicationStatement", "basedOn", element.getBasedOn().get(i), i);
9227    for (int i = 0; i < element.getPartOf().size(); i++)
9228      composeReference(t, "MedicationStatement", "partOf", element.getPartOf().get(i), i);
9229    if (element.hasStatusElement())
9230      composeEnum(t, "MedicationStatement", "status", element.getStatusElement(), -1);
9231    for (int i = 0; i < element.getStatusReason().size(); i++)
9232      composeCodeableConcept(t, "MedicationStatement", "statusReason", element.getStatusReason().get(i), i);
9233    if (element.hasCategory())
9234      composeCodeableConcept(t, "MedicationStatement", "category", element.getCategory(), -1);
9235    if (element.hasMedication())
9236      composeType(t, "MedicationStatement", "medication", element.getMedication(), -1);
9237    if (element.hasSubject())
9238      composeReference(t, "MedicationStatement", "subject", element.getSubject(), -1);
9239    if (element.hasContext())
9240      composeReference(t, "MedicationStatement", "context", element.getContext(), -1);
9241    if (element.hasEffective())
9242      composeType(t, "MedicationStatement", "effective", element.getEffective(), -1);
9243    if (element.hasDateAssertedElement())
9244      composeDateTime(t, "MedicationStatement", "dateAsserted", element.getDateAssertedElement(), -1);
9245    if (element.hasInformationSource())
9246      composeReference(t, "MedicationStatement", "informationSource", element.getInformationSource(), -1);
9247    for (int i = 0; i < element.getDerivedFrom().size(); i++)
9248      composeReference(t, "MedicationStatement", "derivedFrom", element.getDerivedFrom().get(i), i);
9249    for (int i = 0; i < element.getReasonCode().size(); i++)
9250      composeCodeableConcept(t, "MedicationStatement", "reasonCode", element.getReasonCode().get(i), i);
9251    for (int i = 0; i < element.getReasonReference().size(); i++)
9252      composeReference(t, "MedicationStatement", "reasonReference", element.getReasonReference().get(i), i);
9253    for (int i = 0; i < element.getNote().size(); i++)
9254      composeAnnotation(t, "MedicationStatement", "note", element.getNote().get(i), i);
9255    for (int i = 0; i < element.getDosage().size(); i++)
9256      composeDosage(t, "MedicationStatement", "dosage", element.getDosage().get(i), i);
9257  }
9258
9259  protected void composeMedicinalProduct(Complex parent, String parentType, String name, MedicinalProduct element, int index) {
9260    if (element == null) 
9261      return;
9262    Complex t;
9263    if (Utilities.noString(parentType))
9264      t = parent;
9265    else {
9266      t = parent.predicate("fhir:"+parentType+'.'+name);
9267    }
9268    composeDomainResource(t, "MedicinalProduct", name, element, index);
9269    if (element.hasIdentifier())
9270      composeIdentifier(t, "MedicinalProduct", "identifier", element.getIdentifier(), -1);
9271    if (element.hasType())
9272      composeCodeableConcept(t, "MedicinalProduct", "type", element.getType(), -1);
9273    if (element.hasCombinedPharmaceuticalDoseForm())
9274      composeCodeableConcept(t, "MedicinalProduct", "combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm(), -1);
9275    if (element.hasAdditionalMonitoringIndicator())
9276      composeCodeableConcept(t, "MedicinalProduct", "additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator(), -1);
9277    for (int i = 0; i < element.getSpecialMeasures().size(); i++)
9278      composeString(t, "MedicinalProduct", "specialMeasures", element.getSpecialMeasures().get(i), i);
9279    if (element.hasPaediatricUseIndicator())
9280      composeCodeableConcept(t, "MedicinalProduct", "paediatricUseIndicator", element.getPaediatricUseIndicator(), -1);
9281    if (element.hasOrphanDesignationStatus())
9282      composeCodeableConcept(t, "MedicinalProduct", "orphanDesignationStatus", element.getOrphanDesignationStatus(), -1);
9283    for (int i = 0; i < element.getProductClassification().size(); i++)
9284      composeCodeableConcept(t, "MedicinalProduct", "productClassification", element.getProductClassification().get(i), i);
9285    if (element.hasMarketingAuthorization())
9286      composeReference(t, "MedicinalProduct", "marketingAuthorization", element.getMarketingAuthorization(), -1);
9287    for (int i = 0; i < element.getPackagedMedicinalProduct().size(); i++)
9288      composeReference(t, "MedicinalProduct", "packagedMedicinalProduct", element.getPackagedMedicinalProduct().get(i), i);
9289    for (int i = 0; i < element.getPharmaceuticalProduct().size(); i++)
9290      composeReference(t, "MedicinalProduct", "pharmaceuticalProduct", element.getPharmaceuticalProduct().get(i), i);
9291    for (int i = 0; i < element.getClinicalParticulars().size(); i++)
9292      composeReference(t, "MedicinalProduct", "clinicalParticulars", element.getClinicalParticulars().get(i), i);
9293    for (int i = 0; i < element.getAttachedDocument().size(); i++)
9294      composeReference(t, "MedicinalProduct", "attachedDocument", element.getAttachedDocument().get(i), i);
9295    for (int i = 0; i < element.getMasterFile().size(); i++)
9296      composeReference(t, "MedicinalProduct", "masterFile", element.getMasterFile().get(i), i);
9297    for (int i = 0; i < element.getName().size(); i++)
9298      composeMedicinalProductMedicinalProductNameComponent(t, "MedicinalProduct", "name", element.getName().get(i), i);
9299    for (int i = 0; i < element.getCrossReference().size(); i++)
9300      composeIdentifier(t, "MedicinalProduct", "crossReference", element.getCrossReference().get(i), i);
9301    for (int i = 0; i < element.getManufacturingBusinessOperation().size(); i++)
9302      composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(t, "MedicinalProduct", "manufacturingBusinessOperation", element.getManufacturingBusinessOperation().get(i), i);
9303  }
9304
9305  protected void composeMedicinalProductMedicinalProductNameComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameComponent element, int index) {
9306    if (element == null) 
9307      return;
9308    Complex t;
9309    if (Utilities.noString(parentType))
9310      t = parent;
9311    else {
9312      t = parent.predicate("fhir:"+parentType+'.'+name);
9313    }
9314    composeBackboneElement(t, "name", name, element, index);
9315    if (element.hasFullNameElement())
9316      composeString(t, "MedicinalProduct", "fullName", element.getFullNameElement(), -1);
9317    for (int i = 0; i < element.getNamePart().size(); i++)
9318      composeMedicinalProductMedicinalProductNameNamePartComponent(t, "MedicinalProduct", "namePart", element.getNamePart().get(i), i);
9319    for (int i = 0; i < element.getCountryLanguage().size(); i++)
9320      composeMedicinalProductMedicinalProductNameCountryLanguageComponent(t, "MedicinalProduct", "countryLanguage", element.getCountryLanguage().get(i), i);
9321  }
9322
9323  protected void composeMedicinalProductMedicinalProductNameNamePartComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameNamePartComponent element, int index) {
9324    if (element == null) 
9325      return;
9326    Complex t;
9327    if (Utilities.noString(parentType))
9328      t = parent;
9329    else {
9330      t = parent.predicate("fhir:"+parentType+'.'+name);
9331    }
9332    composeBackboneElement(t, "namePart", name, element, index);
9333    if (element.hasPartElement())
9334      composeString(t, "MedicinalProduct", "part", element.getPartElement(), -1);
9335    if (element.hasType())
9336      composeCoding(t, "MedicinalProduct", "type", element.getType(), -1);
9337  }
9338
9339  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameCountryLanguageComponent element, int index) {
9340    if (element == null) 
9341      return;
9342    Complex t;
9343    if (Utilities.noString(parentType))
9344      t = parent;
9345    else {
9346      t = parent.predicate("fhir:"+parentType+'.'+name);
9347    }
9348    composeBackboneElement(t, "countryLanguage", name, element, index);
9349    if (element.hasCountry())
9350      composeCodeableConcept(t, "MedicinalProduct", "country", element.getCountry(), -1);
9351    if (element.hasJurisdiction())
9352      composeCodeableConcept(t, "MedicinalProduct", "jurisdiction", element.getJurisdiction(), -1);
9353    if (element.hasLanguage())
9354      composeCodeableConcept(t, "MedicinalProduct", "language", element.getLanguage(), -1);
9355  }
9356
9357  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element, int index) {
9358    if (element == null) 
9359      return;
9360    Complex t;
9361    if (Utilities.noString(parentType))
9362      t = parent;
9363    else {
9364      t = parent.predicate("fhir:"+parentType+'.'+name);
9365    }
9366    composeBackboneElement(t, "manufacturingBusinessOperation", name, element, index);
9367    if (element.hasOperationType())
9368      composeCodeableConcept(t, "MedicinalProduct", "operationType", element.getOperationType(), -1);
9369    if (element.hasAuthorisationReferenceNumber())
9370      composeIdentifier(t, "MedicinalProduct", "authorisationReferenceNumber", element.getAuthorisationReferenceNumber(), -1);
9371    if (element.hasEffectiveDateElement())
9372      composeDateTime(t, "MedicinalProduct", "effectiveDate", element.getEffectiveDateElement(), -1);
9373    if (element.hasConfidentialityIndicator())
9374      composeCodeableConcept(t, "MedicinalProduct", "confidentialityIndicator", element.getConfidentialityIndicator(), -1);
9375    for (int i = 0; i < element.getManufacturer().size(); i++)
9376      composeReference(t, "MedicinalProduct", "manufacturer", element.getManufacturer().get(i), i);
9377    if (element.hasRegulator())
9378      composeReference(t, "MedicinalProduct", "regulator", element.getRegulator(), -1);
9379  }
9380
9381  protected void composeMedicinalProductAuthorization(Complex parent, String parentType, String name, MedicinalProductAuthorization element, int index) {
9382    if (element == null) 
9383      return;
9384    Complex t;
9385    if (Utilities.noString(parentType))
9386      t = parent;
9387    else {
9388      t = parent.predicate("fhir:"+parentType+'.'+name);
9389    }
9390    composeDomainResource(t, "MedicinalProductAuthorization", name, element, index);
9391    if (element.hasIdentifier())
9392      composeIdentifier(t, "MedicinalProductAuthorization", "identifier", element.getIdentifier(), -1);
9393    for (int i = 0; i < element.getCountry().size(); i++)
9394      composeCodeableConcept(t, "MedicinalProductAuthorization", "country", element.getCountry().get(i), i);
9395    if (element.hasLegalStatusOfSupply())
9396      composeCodeableConcept(t, "MedicinalProductAuthorization", "legalStatusOfSupply", element.getLegalStatusOfSupply(), -1);
9397    if (element.hasStatus())
9398      composeCodeableConcept(t, "MedicinalProductAuthorization", "status", element.getStatus(), -1);
9399    if (element.hasStatusDateElement())
9400      composeDateTime(t, "MedicinalProductAuthorization", "statusDate", element.getStatusDateElement(), -1);
9401    if (element.hasRestoreDateElement())
9402      composeDateTime(t, "MedicinalProductAuthorization", "restoreDate", element.getRestoreDateElement(), -1);
9403    if (element.hasValidityPeriod())
9404      composePeriod(t, "MedicinalProductAuthorization", "validityPeriod", element.getValidityPeriod(), -1);
9405    if (element.hasDataExclusivityPeriod())
9406      composePeriod(t, "MedicinalProductAuthorization", "dataExclusivityPeriod", element.getDataExclusivityPeriod(), -1);
9407    if (element.hasDateOfFirstAuthorizationElement())
9408      composeDateTime(t, "MedicinalProductAuthorization", "dateOfFirstAuthorization", element.getDateOfFirstAuthorizationElement(), -1);
9409    if (element.hasInternationalBirthDateElement())
9410      composeDateTime(t, "MedicinalProductAuthorization", "internationalBirthDate", element.getInternationalBirthDateElement(), -1);
9411    for (int i = 0; i < element.getJurisdictionalAuthorization().size(); i++)
9412      composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(t, "MedicinalProductAuthorization", "jurisdictionalAuthorization", element.getJurisdictionalAuthorization().get(i), i);
9413    if (element.hasHolder())
9414      composeReference(t, "MedicinalProductAuthorization", "holder", element.getHolder(), -1);
9415    if (element.hasRegulator())
9416      composeReference(t, "MedicinalProductAuthorization", "regulator", element.getRegulator(), -1);
9417    if (element.hasProcedure())
9418      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(t, "MedicinalProductAuthorization", "procedure", element.getProcedure(), -1);
9419    for (int i = 0; i < element.getMarketingStatus().size(); i++)
9420      composeMarketingStatus(t, "MedicinalProductAuthorization", "marketingStatus", element.getMarketingStatus().get(i), i);
9421  }
9422
9423  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(Complex parent, String parentType, String name, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element, int index) {
9424    if (element == null) 
9425      return;
9426    Complex t;
9427    if (Utilities.noString(parentType))
9428      t = parent;
9429    else {
9430      t = parent.predicate("fhir:"+parentType+'.'+name);
9431    }
9432    composeBackboneElement(t, "jurisdictionalAuthorization", name, element, index);
9433    if (element.hasCountry())
9434      composeCodeableConcept(t, "MedicinalProductAuthorization", "country", element.getCountry(), -1);
9435    if (element.hasJurisdiction())
9436      composeCodeableConcept(t, "MedicinalProductAuthorization", "jurisdiction", element.getJurisdiction(), -1);
9437    if (element.hasNumber())
9438      composeIdentifier(t, "MedicinalProductAuthorization", "number", element.getNumber(), -1);
9439    if (element.hasLegalStatusOfSupply())
9440      composeCodeableConcept(t, "MedicinalProductAuthorization", "legalStatusOfSupply", element.getLegalStatusOfSupply(), -1);
9441  }
9442
9443  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(Complex parent, String parentType, String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element, int index) {
9444    if (element == null) 
9445      return;
9446    Complex t;
9447    if (Utilities.noString(parentType))
9448      t = parent;
9449    else {
9450      t = parent.predicate("fhir:"+parentType+'.'+name);
9451    }
9452    composeBackboneElement(t, "procedure", name, element, index);
9453    if (element.hasNumber())
9454      composeIdentifier(t, "MedicinalProductAuthorization", "number", element.getNumber(), -1);
9455    if (element.hasType())
9456      composeCodeableConcept(t, "MedicinalProductAuthorization", "type", element.getType(), -1);
9457    if (element.hasDate())
9458      composePeriod(t, "MedicinalProductAuthorization", "date", element.getDate(), -1);
9459    for (int i = 0; i < element.getApplication().size(); i++)
9460      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponent(t, "MedicinalProductAuthorization", "application", element.getApplication().get(i), i);
9461  }
9462
9463  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponent(Complex parent, String parentType, String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureApplicationComponent element, int index) {
9464    if (element == null) 
9465      return;
9466    Complex t;
9467    if (Utilities.noString(parentType))
9468      t = parent;
9469    else {
9470      t = parent.predicate("fhir:"+parentType+'.'+name);
9471    }
9472    composeBackboneElement(t, "application", name, element, index);
9473    if (element.hasNumber())
9474      composeIdentifier(t, "MedicinalProductAuthorization", "number", element.getNumber(), -1);
9475    if (element.hasType())
9476      composeCodeableConcept(t, "MedicinalProductAuthorization", "type", element.getType(), -1);
9477    if (element.hasDateElement())
9478      composeDateTime(t, "MedicinalProductAuthorization", "date", element.getDateElement(), -1);
9479  }
9480
9481  protected void composeMedicinalProductClinicals(Complex parent, String parentType, String name, MedicinalProductClinicals element, int index) {
9482    if (element == null) 
9483      return;
9484    Complex t;
9485    if (Utilities.noString(parentType))
9486      t = parent;
9487    else {
9488      t = parent.predicate("fhir:"+parentType+'.'+name);
9489    }
9490    composeDomainResource(t, "MedicinalProductClinicals", name, element, index);
9491    for (int i = 0; i < element.getUndesirableEffects().size(); i++)
9492      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(t, "MedicinalProductClinicals", "undesirableEffects", element.getUndesirableEffects().get(i), i);
9493    for (int i = 0; i < element.getTherapeuticIndication().size(); i++)
9494      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(t, "MedicinalProductClinicals", "therapeuticIndication", element.getTherapeuticIndication().get(i), i);
9495    for (int i = 0; i < element.getContraindication().size(); i++)
9496      composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(t, "MedicinalProductClinicals", "contraindication", element.getContraindication().get(i), i);
9497    for (int i = 0; i < element.getInteractions().size(); i++)
9498      composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(t, "MedicinalProductClinicals", "interactions", element.getInteractions().get(i), i);
9499  }
9500
9501  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent element, int index) {
9502    if (element == null) 
9503      return;
9504    Complex t;
9505    if (Utilities.noString(parentType))
9506      t = parent;
9507    else {
9508      t = parent.predicate("fhir:"+parentType+'.'+name);
9509    }
9510    composeBackboneElement(t, "undesirableEffects", name, element, index);
9511    if (element.hasSymptomConditionEffect())
9512      composeCodeableConcept(t, "MedicinalProductClinicals", "symptomConditionEffect", element.getSymptomConditionEffect(), -1);
9513    if (element.hasClassification())
9514      composeCodeableConcept(t, "MedicinalProductClinicals", "classification", element.getClassification(), -1);
9515    if (element.hasFrequencyOfOccurrence())
9516      composeCodeableConcept(t, "MedicinalProductClinicals", "frequencyOfOccurrence", element.getFrequencyOfOccurrence(), -1);
9517    for (int i = 0; i < element.getPopulation().size(); i++)
9518      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(t, "MedicinalProductClinicals", "population", element.getPopulation().get(i), i);
9519  }
9520
9521  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent element, int index) {
9522    if (element == null) 
9523      return;
9524    Complex t;
9525    if (Utilities.noString(parentType))
9526      t = parent;
9527    else {
9528      t = parent.predicate("fhir:"+parentType+'.'+name);
9529    }
9530    composeBackboneElement(t, "population", name, element, index);
9531    if (element.hasAge())
9532      composeType(t, "MedicinalProductClinicals", "age", element.getAge(), -1);
9533    if (element.hasGender())
9534      composeCodeableConcept(t, "MedicinalProductClinicals", "gender", element.getGender(), -1);
9535    if (element.hasRace())
9536      composeCodeableConcept(t, "MedicinalProductClinicals", "race", element.getRace(), -1);
9537    if (element.hasPhysiologicalCondition())
9538      composeCodeableConcept(t, "MedicinalProductClinicals", "physiologicalCondition", element.getPhysiologicalCondition(), -1);
9539  }
9540
9541  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent element, int index) {
9542    if (element == null) 
9543      return;
9544    Complex t;
9545    if (Utilities.noString(parentType))
9546      t = parent;
9547    else {
9548      t = parent.predicate("fhir:"+parentType+'.'+name);
9549    }
9550    composeBackboneElement(t, "therapeuticIndication", name, element, index);
9551    if (element.hasDiseaseSymptomProcedure())
9552      composeCodeableConcept(t, "MedicinalProductClinicals", "diseaseSymptomProcedure", element.getDiseaseSymptomProcedure(), -1);
9553    if (element.hasDiseaseStatus())
9554      composeCodeableConcept(t, "MedicinalProductClinicals", "diseaseStatus", element.getDiseaseStatus(), -1);
9555    for (int i = 0; i < element.getComorbidity().size(); i++)
9556      composeCodeableConcept(t, "MedicinalProductClinicals", "comorbidity", element.getComorbidity().get(i), i);
9557    if (element.hasIntendedEffect())
9558      composeCodeableConcept(t, "MedicinalProductClinicals", "intendedEffect", element.getIntendedEffect(), -1);
9559    if (element.hasDuration())
9560      composeQuantity(t, "MedicinalProductClinicals", "duration", element.getDuration(), -1);
9561    for (int i = 0; i < element.getUndesirableEffects().size(); i++)
9562      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(t, "MedicinalProductClinicals", "undesirableEffects", element.getUndesirableEffects().get(i), i);
9563    for (int i = 0; i < element.getOtherTherapy().size(); i++)
9564      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(t, "MedicinalProductClinicals", "otherTherapy", element.getOtherTherapy().get(i), i);
9565    for (int i = 0; i < element.getPopulation().size(); i++)
9566      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(t, "MedicinalProductClinicals", "population", element.getPopulation().get(i), i);
9567  }
9568
9569  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent element, int index) {
9570    if (element == null) 
9571      return;
9572    Complex t;
9573    if (Utilities.noString(parentType))
9574      t = parent;
9575    else {
9576      t = parent.predicate("fhir:"+parentType+'.'+name);
9577    }
9578    composeBackboneElement(t, "otherTherapy", name, element, index);
9579    if (element.hasTherapyRelationshipType())
9580      composeCodeableConcept(t, "MedicinalProductClinicals", "therapyRelationshipType", element.getTherapyRelationshipType(), -1);
9581    if (element.hasMedication())
9582      composeType(t, "MedicinalProductClinicals", "medication", element.getMedication(), -1);
9583  }
9584
9585  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent element, int index) {
9586    if (element == null) 
9587      return;
9588    Complex t;
9589    if (Utilities.noString(parentType))
9590      t = parent;
9591    else {
9592      t = parent.predicate("fhir:"+parentType+'.'+name);
9593    }
9594    composeBackboneElement(t, "contraindication", name, element, index);
9595    if (element.hasDisease())
9596      composeCodeableConcept(t, "MedicinalProductClinicals", "disease", element.getDisease(), -1);
9597    if (element.hasDiseaseStatus())
9598      composeCodeableConcept(t, "MedicinalProductClinicals", "diseaseStatus", element.getDiseaseStatus(), -1);
9599    for (int i = 0; i < element.getComorbidity().size(); i++)
9600      composeCodeableConcept(t, "MedicinalProductClinicals", "comorbidity", element.getComorbidity().get(i), i);
9601    for (int i = 0; i < element.getTherapeuticIndication().size(); i++)
9602      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(t, "MedicinalProductClinicals", "therapeuticIndication", element.getTherapeuticIndication().get(i), i);
9603    for (int i = 0; i < element.getOtherTherapy().size(); i++)
9604      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(t, "MedicinalProductClinicals", "otherTherapy", element.getOtherTherapy().get(i), i);
9605    for (int i = 0; i < element.getPopulation().size(); i++)
9606      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(t, "MedicinalProductClinicals", "population", element.getPopulation().get(i), i);
9607  }
9608
9609  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent element, int index) {
9610    if (element == null) 
9611      return;
9612    Complex t;
9613    if (Utilities.noString(parentType))
9614      t = parent;
9615    else {
9616      t = parent.predicate("fhir:"+parentType+'.'+name);
9617    }
9618    composeBackboneElement(t, "interactions", name, element, index);
9619    for (int i = 0; i < element.getInteractant().size(); i++)
9620      composeCodeableConcept(t, "MedicinalProductClinicals", "interactant", element.getInteractant().get(i), i);
9621    if (element.hasType())
9622      composeCodeableConcept(t, "MedicinalProductClinicals", "type", element.getType(), -1);
9623    if (element.hasEffect())
9624      composeCodeableConcept(t, "MedicinalProductClinicals", "effect", element.getEffect(), -1);
9625    if (element.hasIncidence())
9626      composeCodeableConcept(t, "MedicinalProductClinicals", "incidence", element.getIncidence(), -1);
9627    if (element.hasManagement())
9628      composeCodeableConcept(t, "MedicinalProductClinicals", "management", element.getManagement(), -1);
9629  }
9630
9631  protected void composeMedicinalProductDeviceSpec(Complex parent, String parentType, String name, MedicinalProductDeviceSpec element, int index) {
9632    if (element == null) 
9633      return;
9634    Complex t;
9635    if (Utilities.noString(parentType))
9636      t = parent;
9637    else {
9638      t = parent.predicate("fhir:"+parentType+'.'+name);
9639    }
9640    composeDomainResource(t, "MedicinalProductDeviceSpec", name, element, index);
9641    if (element.hasIdentifier())
9642      composeIdentifier(t, "MedicinalProductDeviceSpec", "identifier", element.getIdentifier(), -1);
9643    if (element.hasType())
9644      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "type", element.getType(), -1);
9645    if (element.hasTradeNameElement())
9646      composeString(t, "MedicinalProductDeviceSpec", "tradeName", element.getTradeNameElement(), -1);
9647    if (element.hasQuantity())
9648      composeQuantity(t, "MedicinalProductDeviceSpec", "quantity", element.getQuantity(), -1);
9649    if (element.hasListingNumberElement())
9650      composeString(t, "MedicinalProductDeviceSpec", "listingNumber", element.getListingNumberElement(), -1);
9651    if (element.hasModelNumberElement())
9652      composeString(t, "MedicinalProductDeviceSpec", "modelNumber", element.getModelNumberElement(), -1);
9653    if (element.hasSterilityIndicator())
9654      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "sterilityIndicator", element.getSterilityIndicator(), -1);
9655    if (element.hasSterilisationRequirement())
9656      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "sterilisationRequirement", element.getSterilisationRequirement(), -1);
9657    if (element.hasUsage())
9658      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "usage", element.getUsage(), -1);
9659    for (int i = 0; i < element.getNomenclature().size(); i++)
9660      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "nomenclature", element.getNomenclature().get(i), i);
9661    for (int i = 0; i < element.getShelfLife().size(); i++)
9662      composeProductShelfLife(t, "MedicinalProductDeviceSpec", "shelfLife", element.getShelfLife().get(i), i);
9663    if (element.hasPhysicalCharacteristics())
9664      composeProdCharacteristic(t, "MedicinalProductDeviceSpec", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
9665    for (int i = 0; i < element.getOtherCharacteristics().size(); i++)
9666      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "otherCharacteristics", element.getOtherCharacteristics().get(i), i);
9667    for (int i = 0; i < element.getBatchIdentifier().size(); i++)
9668      composeIdentifier(t, "MedicinalProductDeviceSpec", "batchIdentifier", element.getBatchIdentifier().get(i), i);
9669    for (int i = 0; i < element.getManufacturer().size(); i++)
9670      composeReference(t, "MedicinalProductDeviceSpec", "manufacturer", element.getManufacturer().get(i), i);
9671    for (int i = 0; i < element.getMaterial().size(); i++)
9672      composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(t, "MedicinalProductDeviceSpec", "material", element.getMaterial().get(i), i);
9673  }
9674
9675  protected void composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(Complex parent, String parentType, String name, MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent element, int index) {
9676    if (element == null) 
9677      return;
9678    Complex t;
9679    if (Utilities.noString(parentType))
9680      t = parent;
9681    else {
9682      t = parent.predicate("fhir:"+parentType+'.'+name);
9683    }
9684    composeBackboneElement(t, "material", name, element, index);
9685    if (element.hasSubstance())
9686      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "substance", element.getSubstance(), -1);
9687    if (element.hasAlternateElement())
9688      composeBoolean(t, "MedicinalProductDeviceSpec", "alternate", element.getAlternateElement(), -1);
9689    if (element.hasAllergenicIndicatorElement())
9690      composeBoolean(t, "MedicinalProductDeviceSpec", "allergenicIndicator", element.getAllergenicIndicatorElement(), -1);
9691  }
9692
9693  protected void composeMedicinalProductIngredient(Complex parent, String parentType, String name, MedicinalProductIngredient element, int index) {
9694    if (element == null) 
9695      return;
9696    Complex t;
9697    if (Utilities.noString(parentType))
9698      t = parent;
9699    else {
9700      t = parent.predicate("fhir:"+parentType+'.'+name);
9701    }
9702    composeDomainResource(t, "MedicinalProductIngredient", name, element, index);
9703    if (element.hasIdentifier())
9704      composeIdentifier(t, "MedicinalProductIngredient", "identifier", element.getIdentifier(), -1);
9705    if (element.hasRole())
9706      composeCodeableConcept(t, "MedicinalProductIngredient", "role", element.getRole(), -1);
9707    if (element.hasAllergenicIndicatorElement())
9708      composeBoolean(t, "MedicinalProductIngredient", "allergenicIndicator", element.getAllergenicIndicatorElement(), -1);
9709    for (int i = 0; i < element.getManufacturer().size(); i++)
9710      composeReference(t, "MedicinalProductIngredient", "manufacturer", element.getManufacturer().get(i), i);
9711    for (int i = 0; i < element.getSpecifiedSubstance().size(); i++)
9712      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(t, "MedicinalProductIngredient", "specifiedSubstance", element.getSpecifiedSubstance().get(i), i);
9713    if (element.hasSubstance())
9714      composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(t, "MedicinalProductIngredient", "substance", element.getSubstance(), -1);
9715  }
9716
9717  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element, int index) {
9718    if (element == null) 
9719      return;
9720    Complex t;
9721    if (Utilities.noString(parentType))
9722      t = parent;
9723    else {
9724      t = parent.predicate("fhir:"+parentType+'.'+name);
9725    }
9726    composeBackboneElement(t, "specifiedSubstance", name, element, index);
9727    if (element.hasCode())
9728      composeCodeableConcept(t, "MedicinalProductIngredient", "code", element.getCode(), -1);
9729    if (element.hasGroup())
9730      composeCodeableConcept(t, "MedicinalProductIngredient", "group", element.getGroup(), -1);
9731    if (element.hasConfidentiality())
9732      composeCodeableConcept(t, "MedicinalProductIngredient", "confidentiality", element.getConfidentiality(), -1);
9733    for (int i = 0; i < element.getStrength().size(); i++)
9734      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(t, "MedicinalProductIngredient", "strength", element.getStrength().get(i), i);
9735  }
9736
9737  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element, int index) {
9738    if (element == null) 
9739      return;
9740    Complex t;
9741    if (Utilities.noString(parentType))
9742      t = parent;
9743    else {
9744      t = parent.predicate("fhir:"+parentType+'.'+name);
9745    }
9746    composeBackboneElement(t, "strength", name, element, index);
9747    if (element.hasPresentation())
9748      composeRatio(t, "MedicinalProductIngredient", "presentation", element.getPresentation(), -1);
9749    if (element.hasConcentration())
9750      composeRatio(t, "MedicinalProductIngredient", "concentration", element.getConcentration(), -1);
9751    if (element.hasMeasurementPointElement())
9752      composeString(t, "MedicinalProductIngredient", "measurementPoint", element.getMeasurementPointElement(), -1);
9753    for (int i = 0; i < element.getCountry().size(); i++)
9754      composeCodeableConcept(t, "MedicinalProductIngredient", "country", element.getCountry().get(i), i);
9755    for (int i = 0; i < element.getReferenceStrength().size(); i++)
9756      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(t, "MedicinalProductIngredient", "referenceStrength", element.getReferenceStrength().get(i), i);
9757  }
9758
9759  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element, int index) {
9760    if (element == null) 
9761      return;
9762    Complex t;
9763    if (Utilities.noString(parentType))
9764      t = parent;
9765    else {
9766      t = parent.predicate("fhir:"+parentType+'.'+name);
9767    }
9768    composeBackboneElement(t, "referenceStrength", name, element, index);
9769    if (element.hasSubstance())
9770      composeCodeableConcept(t, "MedicinalProductIngredient", "substance", element.getSubstance(), -1);
9771  }
9772
9773  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element, int index) {
9774    if (element == null) 
9775      return;
9776    Complex t;
9777    if (Utilities.noString(parentType))
9778      t = parent;
9779    else {
9780      t = parent.predicate("fhir:"+parentType+'.'+name);
9781    }
9782    composeBackboneElement(t, "substance", name, element, index);
9783    if (element.hasCode())
9784      composeCodeableConcept(t, "MedicinalProductIngredient", "code", element.getCode(), -1);
9785    for (int i = 0; i < element.getStrength().size(); i++)
9786      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(t, "MedicinalProductIngredient", "strength", element.getStrength().get(i), i);
9787  }
9788
9789  protected void composeMedicinalProductPackaged(Complex parent, String parentType, String name, MedicinalProductPackaged element, int index) {
9790    if (element == null) 
9791      return;
9792    Complex t;
9793    if (Utilities.noString(parentType))
9794      t = parent;
9795    else {
9796      t = parent.predicate("fhir:"+parentType+'.'+name);
9797    }
9798    composeDomainResource(t, "MedicinalProductPackaged", name, element, index);
9799    if (element.hasIdentifier())
9800      composeIdentifier(t, "MedicinalProductPackaged", "identifier", element.getIdentifier(), -1);
9801    if (element.hasDescriptionElement())
9802      composeString(t, "MedicinalProductPackaged", "description", element.getDescriptionElement(), -1);
9803    for (int i = 0; i < element.getMarketingStatus().size(); i++)
9804      composeMarketingStatus(t, "MedicinalProductPackaged", "marketingStatus", element.getMarketingStatus().get(i), i);
9805    for (int i = 0; i < element.getBatchIdentifier().size(); i++)
9806      composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(t, "MedicinalProductPackaged", "batchIdentifier", element.getBatchIdentifier().get(i), i);
9807    for (int i = 0; i < element.getPackageItem().size(); i++)
9808      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(t, "MedicinalProductPackaged", "packageItem", element.getPackageItem().get(i), i);
9809  }
9810
9811  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(Complex parent, String parentType, String name, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element, int index) {
9812    if (element == null) 
9813      return;
9814    Complex t;
9815    if (Utilities.noString(parentType))
9816      t = parent;
9817    else {
9818      t = parent.predicate("fhir:"+parentType+'.'+name);
9819    }
9820    composeBackboneElement(t, "batchIdentifier", name, element, index);
9821    if (element.hasOuterPackaging())
9822      composeIdentifier(t, "MedicinalProductPackaged", "outerPackaging", element.getOuterPackaging(), -1);
9823    if (element.hasImmediatePackaging())
9824      composeIdentifier(t, "MedicinalProductPackaged", "immediatePackaging", element.getImmediatePackaging(), -1);
9825  }
9826
9827  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(Complex parent, String parentType, String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element, int index) {
9828    if (element == null) 
9829      return;
9830    Complex t;
9831    if (Utilities.noString(parentType))
9832      t = parent;
9833    else {
9834      t = parent.predicate("fhir:"+parentType+'.'+name);
9835    }
9836    composeBackboneElement(t, "packageItem", name, element, index);
9837    for (int i = 0; i < element.getIdentifier().size(); i++)
9838      composeIdentifier(t, "MedicinalProductPackaged", "identifier", element.getIdentifier().get(i), i);
9839    if (element.hasType())
9840      composeCodeableConcept(t, "MedicinalProductPackaged", "type", element.getType(), -1);
9841    if (element.hasQuantity())
9842      composeQuantity(t, "MedicinalProductPackaged", "quantity", element.getQuantity(), -1);
9843    for (int i = 0; i < element.getMaterial().size(); i++)
9844      composeCodeableConcept(t, "MedicinalProductPackaged", "material", element.getMaterial().get(i), i);
9845    for (int i = 0; i < element.getAlternateMaterial().size(); i++)
9846      composeCodeableConcept(t, "MedicinalProductPackaged", "alternateMaterial", element.getAlternateMaterial().get(i), i);
9847    for (int i = 0; i < element.getManufacturer().size(); i++)
9848      composeReference(t, "MedicinalProductPackaged", "manufacturer", element.getManufacturer().get(i), i);
9849    for (int i = 0; i < element.getDevice().size(); i++)
9850      composeReference(t, "MedicinalProductPackaged", "device", element.getDevice().get(i), i);
9851    for (int i = 0; i < element.getManufacturedItem().size(); i++)
9852      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponent(t, "MedicinalProductPackaged", "manufacturedItem", element.getManufacturedItem().get(i), i);
9853    for (int i = 0; i < element.getOtherCharacteristics().size(); i++)
9854      composeCodeableConcept(t, "MedicinalProductPackaged", "otherCharacteristics", element.getOtherCharacteristics().get(i), i);
9855    for (int i = 0; i < element.getPackageItem().size(); i++)
9856      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(t, "MedicinalProductPackaged", "packageItem", element.getPackageItem().get(i), i);
9857    if (element.hasPhysicalCharacteristics())
9858      composeProdCharacteristic(t, "MedicinalProductPackaged", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
9859    for (int i = 0; i < element.getShelfLifeStorage().size(); i++)
9860      composeProductShelfLife(t, "MedicinalProductPackaged", "shelfLifeStorage", element.getShelfLifeStorage().get(i), i);
9861  }
9862
9863  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponent(Complex parent, String parentType, String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemManufacturedItemComponent element, int index) {
9864    if (element == null) 
9865      return;
9866    Complex t;
9867    if (Utilities.noString(parentType))
9868      t = parent;
9869    else {
9870      t = parent.predicate("fhir:"+parentType+'.'+name);
9871    }
9872    composeBackboneElement(t, "manufacturedItem", name, element, index);
9873    if (element.hasManufacturedDoseForm())
9874      composeCodeableConcept(t, "MedicinalProductPackaged", "manufacturedDoseForm", element.getManufacturedDoseForm(), -1);
9875    if (element.hasUnitOfPresentation())
9876      composeCodeableConcept(t, "MedicinalProductPackaged", "unitOfPresentation", element.getUnitOfPresentation(), -1);
9877    if (element.hasQuantity())
9878      composeQuantity(t, "MedicinalProductPackaged", "quantity", element.getQuantity(), -1);
9879    for (int i = 0; i < element.getXManufacturer().size(); i++)
9880      composeReference(t, "MedicinalProductPackaged", "xManufacturer", element.getXManufacturer().get(i), i);
9881    for (int i = 0; i < element.getIngredient().size(); i++)
9882      composeReference(t, "MedicinalProductPackaged", "ingredient", element.getIngredient().get(i), i);
9883    if (element.hasPhysicalCharacteristics())
9884      composeProdCharacteristic(t, "MedicinalProductPackaged", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
9885  }
9886
9887  protected void composeMedicinalProductPharmaceutical(Complex parent, String parentType, String name, MedicinalProductPharmaceutical element, int index) {
9888    if (element == null) 
9889      return;
9890    Complex t;
9891    if (Utilities.noString(parentType))
9892      t = parent;
9893    else {
9894      t = parent.predicate("fhir:"+parentType+'.'+name);
9895    }
9896    composeDomainResource(t, "MedicinalProductPharmaceutical", name, element, index);
9897    for (int i = 0; i < element.getIdentifier().size(); i++)
9898      composeIdentifier(t, "MedicinalProductPharmaceutical", "identifier", element.getIdentifier().get(i), i);
9899    if (element.hasAdministrableDoseForm())
9900      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "administrableDoseForm", element.getAdministrableDoseForm(), -1);
9901    if (element.hasUnitOfPresentation())
9902      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "unitOfPresentation", element.getUnitOfPresentation(), -1);
9903    for (int i = 0; i < element.getRouteOfAdministration().size(); i++)
9904      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "routeOfAdministration", element.getRouteOfAdministration().get(i), i);
9905    for (int i = 0; i < element.getIngredient().size(); i++)
9906      composeReference(t, "MedicinalProductPharmaceutical", "ingredient", element.getIngredient().get(i), i);
9907    for (int i = 0; i < element.getDevice().size(); i++)
9908      composeString(t, "MedicinalProductPharmaceutical", "device", element.getDevice().get(i), i);
9909    for (int i = 0; i < element.getCharacteristics().size(); i++)
9910      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(t, "MedicinalProductPharmaceutical", "characteristics", element.getCharacteristics().get(i), i);
9911  }
9912
9913  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element, int index) {
9914    if (element == null) 
9915      return;
9916    Complex t;
9917    if (Utilities.noString(parentType))
9918      t = parent;
9919    else {
9920      t = parent.predicate("fhir:"+parentType+'.'+name);
9921    }
9922    composeBackboneElement(t, "characteristics", name, element, index);
9923    if (element.hasCode())
9924      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "code", element.getCode(), -1);
9925    if (element.hasStatus())
9926      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "status", element.getStatus(), -1);
9927  }
9928
9929  protected void composeMessageDefinition(Complex parent, String parentType, String name, MessageDefinition element, int index) {
9930    if (element == null) 
9931      return;
9932    Complex t;
9933    if (Utilities.noString(parentType))
9934      t = parent;
9935    else {
9936      t = parent.predicate("fhir:"+parentType+'.'+name);
9937    }
9938    composeDomainResource(t, "MessageDefinition", name, element, index);
9939    if (element.hasUrlElement())
9940      composeUri(t, "MessageDefinition", "url", element.getUrlElement(), -1);
9941    if (element.hasIdentifier())
9942      composeIdentifier(t, "MessageDefinition", "identifier", element.getIdentifier(), -1);
9943    if (element.hasVersionElement())
9944      composeString(t, "MessageDefinition", "version", element.getVersionElement(), -1);
9945    if (element.hasNameElement())
9946      composeString(t, "MessageDefinition", "name", element.getNameElement(), -1);
9947    if (element.hasTitleElement())
9948      composeString(t, "MessageDefinition", "title", element.getTitleElement(), -1);
9949    for (int i = 0; i < element.getReplaces().size(); i++)
9950      composeCanonical(t, "MessageDefinition", "replaces", element.getReplaces().get(i), i);
9951    if (element.hasStatusElement())
9952      composeEnum(t, "MessageDefinition", "status", element.getStatusElement(), -1);
9953    if (element.hasExperimentalElement())
9954      composeBoolean(t, "MessageDefinition", "experimental", element.getExperimentalElement(), -1);
9955    if (element.hasDateElement())
9956      composeDateTime(t, "MessageDefinition", "date", element.getDateElement(), -1);
9957    if (element.hasPublisherElement())
9958      composeString(t, "MessageDefinition", "publisher", element.getPublisherElement(), -1);
9959    for (int i = 0; i < element.getContact().size(); i++)
9960      composeContactDetail(t, "MessageDefinition", "contact", element.getContact().get(i), i);
9961    if (element.hasDescriptionElement())
9962      composeMarkdown(t, "MessageDefinition", "description", element.getDescriptionElement(), -1);
9963    for (int i = 0; i < element.getUseContext().size(); i++)
9964      composeUsageContext(t, "MessageDefinition", "useContext", element.getUseContext().get(i), i);
9965    for (int i = 0; i < element.getJurisdiction().size(); i++)
9966      composeCodeableConcept(t, "MessageDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
9967    if (element.hasPurposeElement())
9968      composeMarkdown(t, "MessageDefinition", "purpose", element.getPurposeElement(), -1);
9969    if (element.hasCopyrightElement())
9970      composeMarkdown(t, "MessageDefinition", "copyright", element.getCopyrightElement(), -1);
9971    if (element.hasBaseElement())
9972      composeCanonical(t, "MessageDefinition", "base", element.getBaseElement(), -1);
9973    for (int i = 0; i < element.getParent().size(); i++)
9974      composeCanonical(t, "MessageDefinition", "parent", element.getParent().get(i), i);
9975    if (element.hasEvent())
9976      composeType(t, "MessageDefinition", "event", element.getEvent(), -1);
9977    if (element.hasCategoryElement())
9978      composeEnum(t, "MessageDefinition", "category", element.getCategoryElement(), -1);
9979    for (int i = 0; i < element.getFocus().size(); i++)
9980      composeMessageDefinitionMessageDefinitionFocusComponent(t, "MessageDefinition", "focus", element.getFocus().get(i), i);
9981    if (element.hasResponseRequiredElement())
9982      composeEnum(t, "MessageDefinition", "responseRequired", element.getResponseRequiredElement(), -1);
9983    for (int i = 0; i < element.getAllowedResponse().size(); i++)
9984      composeMessageDefinitionMessageDefinitionAllowedResponseComponent(t, "MessageDefinition", "allowedResponse", element.getAllowedResponse().get(i), i);
9985  }
9986
9987  protected void composeMessageDefinitionMessageDefinitionFocusComponent(Complex parent, String parentType, String name, MessageDefinition.MessageDefinitionFocusComponent element, int index) {
9988    if (element == null) 
9989      return;
9990    Complex t;
9991    if (Utilities.noString(parentType))
9992      t = parent;
9993    else {
9994      t = parent.predicate("fhir:"+parentType+'.'+name);
9995    }
9996    composeBackboneElement(t, "focus", name, element, index);
9997    if (element.hasCodeElement())
9998      composeCode(t, "MessageDefinition", "code", element.getCodeElement(), -1);
9999    if (element.hasProfileElement())
10000      composeCanonical(t, "MessageDefinition", "profile", element.getProfileElement(), -1);
10001    if (element.hasMinElement())
10002      composeUnsignedInt(t, "MessageDefinition", "min", element.getMinElement(), -1);
10003    if (element.hasMaxElement())
10004      composeString(t, "MessageDefinition", "max", element.getMaxElement(), -1);
10005  }
10006
10007  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(Complex parent, String parentType, String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element, int index) {
10008    if (element == null) 
10009      return;
10010    Complex t;
10011    if (Utilities.noString(parentType))
10012      t = parent;
10013    else {
10014      t = parent.predicate("fhir:"+parentType+'.'+name);
10015    }
10016    composeBackboneElement(t, "allowedResponse", name, element, index);
10017    if (element.hasMessageElement())
10018      composeCanonical(t, "MessageDefinition", "message", element.getMessageElement(), -1);
10019    if (element.hasSituationElement())
10020      composeMarkdown(t, "MessageDefinition", "situation", element.getSituationElement(), -1);
10021  }
10022
10023  protected void composeMessageHeader(Complex parent, String parentType, String name, MessageHeader element, int index) {
10024    if (element == null) 
10025      return;
10026    Complex t;
10027    if (Utilities.noString(parentType))
10028      t = parent;
10029    else {
10030      t = parent.predicate("fhir:"+parentType+'.'+name);
10031    }
10032    composeDomainResource(t, "MessageHeader", name, element, index);
10033    if (element.hasEvent())
10034      composeType(t, "MessageHeader", "event", element.getEvent(), -1);
10035    for (int i = 0; i < element.getDestination().size(); i++)
10036      composeMessageHeaderMessageDestinationComponent(t, "MessageHeader", "destination", element.getDestination().get(i), i);
10037    if (element.hasSender())
10038      composeReference(t, "MessageHeader", "sender", element.getSender(), -1);
10039    if (element.hasEnterer())
10040      composeReference(t, "MessageHeader", "enterer", element.getEnterer(), -1);
10041    if (element.hasAuthor())
10042      composeReference(t, "MessageHeader", "author", element.getAuthor(), -1);
10043    if (element.hasSource())
10044      composeMessageHeaderMessageSourceComponent(t, "MessageHeader", "source", element.getSource(), -1);
10045    if (element.hasResponsible())
10046      composeReference(t, "MessageHeader", "responsible", element.getResponsible(), -1);
10047    if (element.hasReason())
10048      composeCodeableConcept(t, "MessageHeader", "reason", element.getReason(), -1);
10049    if (element.hasResponse())
10050      composeMessageHeaderMessageHeaderResponseComponent(t, "MessageHeader", "response", element.getResponse(), -1);
10051    for (int i = 0; i < element.getFocus().size(); i++)
10052      composeReference(t, "MessageHeader", "focus", element.getFocus().get(i), i);
10053    if (element.hasDefinitionElement())
10054      composeCanonical(t, "MessageHeader", "definition", element.getDefinitionElement(), -1);
10055  }
10056
10057  protected void composeMessageHeaderMessageDestinationComponent(Complex parent, String parentType, String name, MessageHeader.MessageDestinationComponent element, int index) {
10058    if (element == null) 
10059      return;
10060    Complex t;
10061    if (Utilities.noString(parentType))
10062      t = parent;
10063    else {
10064      t = parent.predicate("fhir:"+parentType+'.'+name);
10065    }
10066    composeBackboneElement(t, "destination", name, element, index);
10067    if (element.hasNameElement())
10068      composeString(t, "MessageHeader", "name", element.getNameElement(), -1);
10069    if (element.hasTarget())
10070      composeReference(t, "MessageHeader", "target", element.getTarget(), -1);
10071    if (element.hasEndpointElement())
10072      composeUrl(t, "MessageHeader", "endpoint", element.getEndpointElement(), -1);
10073    if (element.hasReceiver())
10074      composeReference(t, "MessageHeader", "receiver", element.getReceiver(), -1);
10075  }
10076
10077  protected void composeMessageHeaderMessageSourceComponent(Complex parent, String parentType, String name, MessageHeader.MessageSourceComponent element, int index) {
10078    if (element == null) 
10079      return;
10080    Complex t;
10081    if (Utilities.noString(parentType))
10082      t = parent;
10083    else {
10084      t = parent.predicate("fhir:"+parentType+'.'+name);
10085    }
10086    composeBackboneElement(t, "source", name, element, index);
10087    if (element.hasNameElement())
10088      composeString(t, "MessageHeader", "name", element.getNameElement(), -1);
10089    if (element.hasSoftwareElement())
10090      composeString(t, "MessageHeader", "software", element.getSoftwareElement(), -1);
10091    if (element.hasVersionElement())
10092      composeString(t, "MessageHeader", "version", element.getVersionElement(), -1);
10093    if (element.hasContact())
10094      composeContactPoint(t, "MessageHeader", "contact", element.getContact(), -1);
10095    if (element.hasEndpointElement())
10096      composeUrl(t, "MessageHeader", "endpoint", element.getEndpointElement(), -1);
10097  }
10098
10099  protected void composeMessageHeaderMessageHeaderResponseComponent(Complex parent, String parentType, String name, MessageHeader.MessageHeaderResponseComponent element, int index) {
10100    if (element == null) 
10101      return;
10102    Complex t;
10103    if (Utilities.noString(parentType))
10104      t = parent;
10105    else {
10106      t = parent.predicate("fhir:"+parentType+'.'+name);
10107    }
10108    composeBackboneElement(t, "response", name, element, index);
10109    if (element.hasIdentifierElement())
10110      composeId(t, "MessageHeader", "identifier", element.getIdentifierElement(), -1);
10111    if (element.hasCodeElement())
10112      composeEnum(t, "MessageHeader", "code", element.getCodeElement(), -1);
10113    if (element.hasDetails())
10114      composeReference(t, "MessageHeader", "details", element.getDetails(), -1);
10115  }
10116
10117  protected void composeNamingSystem(Complex parent, String parentType, String name, NamingSystem element, int index) {
10118    if (element == null) 
10119      return;
10120    Complex t;
10121    if (Utilities.noString(parentType))
10122      t = parent;
10123    else {
10124      t = parent.predicate("fhir:"+parentType+'.'+name);
10125    }
10126    composeDomainResource(t, "NamingSystem", name, element, index);
10127    if (element.hasNameElement())
10128      composeString(t, "NamingSystem", "name", element.getNameElement(), -1);
10129    if (element.hasStatusElement())
10130      composeEnum(t, "NamingSystem", "status", element.getStatusElement(), -1);
10131    if (element.hasKindElement())
10132      composeEnum(t, "NamingSystem", "kind", element.getKindElement(), -1);
10133    if (element.hasDateElement())
10134      composeDateTime(t, "NamingSystem", "date", element.getDateElement(), -1);
10135    if (element.hasPublisherElement())
10136      composeString(t, "NamingSystem", "publisher", element.getPublisherElement(), -1);
10137    for (int i = 0; i < element.getContact().size(); i++)
10138      composeContactDetail(t, "NamingSystem", "contact", element.getContact().get(i), i);
10139    if (element.hasResponsibleElement())
10140      composeString(t, "NamingSystem", "responsible", element.getResponsibleElement(), -1);
10141    if (element.hasType())
10142      composeCodeableConcept(t, "NamingSystem", "type", element.getType(), -1);
10143    if (element.hasDescriptionElement())
10144      composeMarkdown(t, "NamingSystem", "description", element.getDescriptionElement(), -1);
10145    for (int i = 0; i < element.getUseContext().size(); i++)
10146      composeUsageContext(t, "NamingSystem", "useContext", element.getUseContext().get(i), i);
10147    for (int i = 0; i < element.getJurisdiction().size(); i++)
10148      composeCodeableConcept(t, "NamingSystem", "jurisdiction", element.getJurisdiction().get(i), i);
10149    if (element.hasUsageElement())
10150      composeString(t, "NamingSystem", "usage", element.getUsageElement(), -1);
10151    for (int i = 0; i < element.getUniqueId().size(); i++)
10152      composeNamingSystemNamingSystemUniqueIdComponent(t, "NamingSystem", "uniqueId", element.getUniqueId().get(i), i);
10153  }
10154
10155  protected void composeNamingSystemNamingSystemUniqueIdComponent(Complex parent, String parentType, String name, NamingSystem.NamingSystemUniqueIdComponent element, int index) {
10156    if (element == null) 
10157      return;
10158    Complex t;
10159    if (Utilities.noString(parentType))
10160      t = parent;
10161    else {
10162      t = parent.predicate("fhir:"+parentType+'.'+name);
10163    }
10164    composeBackboneElement(t, "uniqueId", name, element, index);
10165    if (element.hasTypeElement())
10166      composeEnum(t, "NamingSystem", "type", element.getTypeElement(), -1);
10167    if (element.hasValueElement())
10168      composeString(t, "NamingSystem", "value", element.getValueElement(), -1);
10169    if (element.hasPreferredElement())
10170      composeBoolean(t, "NamingSystem", "preferred", element.getPreferredElement(), -1);
10171    if (element.hasCommentElement())
10172      composeString(t, "NamingSystem", "comment", element.getCommentElement(), -1);
10173    if (element.hasPeriod())
10174      composePeriod(t, "NamingSystem", "period", element.getPeriod(), -1);
10175  }
10176
10177  protected void composeNutritionOrder(Complex parent, String parentType, String name, NutritionOrder element, int index) {
10178    if (element == null) 
10179      return;
10180    Complex t;
10181    if (Utilities.noString(parentType))
10182      t = parent;
10183    else {
10184      t = parent.predicate("fhir:"+parentType+'.'+name);
10185    }
10186    composeDomainResource(t, "NutritionOrder", name, element, index);
10187    for (int i = 0; i < element.getIdentifier().size(); i++)
10188      composeIdentifier(t, "NutritionOrder", "identifier", element.getIdentifier().get(i), i);
10189    for (int i = 0; i < element.getInstantiates().size(); i++)
10190      composeUri(t, "NutritionOrder", "instantiates", element.getInstantiates().get(i), i);
10191    if (element.hasStatusElement())
10192      composeEnum(t, "NutritionOrder", "status", element.getStatusElement(), -1);
10193    if (element.hasIntentElement())
10194      composeEnum(t, "NutritionOrder", "intent", element.getIntentElement(), -1);
10195    if (element.hasPatient())
10196      composeReference(t, "NutritionOrder", "patient", element.getPatient(), -1);
10197    if (element.hasContext())
10198      composeReference(t, "NutritionOrder", "context", element.getContext(), -1);
10199    if (element.hasDateTimeElement())
10200      composeDateTime(t, "NutritionOrder", "dateTime", element.getDateTimeElement(), -1);
10201    if (element.hasOrderer())
10202      composeReference(t, "NutritionOrder", "orderer", element.getOrderer(), -1);
10203    for (int i = 0; i < element.getAllergyIntolerance().size(); i++)
10204      composeReference(t, "NutritionOrder", "allergyIntolerance", element.getAllergyIntolerance().get(i), i);
10205    for (int i = 0; i < element.getFoodPreferenceModifier().size(); i++)
10206      composeCodeableConcept(t, "NutritionOrder", "foodPreferenceModifier", element.getFoodPreferenceModifier().get(i), i);
10207    for (int i = 0; i < element.getExcludeFoodModifier().size(); i++)
10208      composeCodeableConcept(t, "NutritionOrder", "excludeFoodModifier", element.getExcludeFoodModifier().get(i), i);
10209    if (element.hasOralDiet())
10210      composeNutritionOrderNutritionOrderOralDietComponent(t, "NutritionOrder", "oralDiet", element.getOralDiet(), -1);
10211    for (int i = 0; i < element.getSupplement().size(); i++)
10212      composeNutritionOrderNutritionOrderSupplementComponent(t, "NutritionOrder", "supplement", element.getSupplement().get(i), i);
10213    if (element.hasEnteralFormula())
10214      composeNutritionOrderNutritionOrderEnteralFormulaComponent(t, "NutritionOrder", "enteralFormula", element.getEnteralFormula(), -1);
10215    for (int i = 0; i < element.getNote().size(); i++)
10216      composeAnnotation(t, "NutritionOrder", "note", element.getNote().get(i), i);
10217  }
10218
10219  protected void composeNutritionOrderNutritionOrderOralDietComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietComponent element, int index) {
10220    if (element == null) 
10221      return;
10222    Complex t;
10223    if (Utilities.noString(parentType))
10224      t = parent;
10225    else {
10226      t = parent.predicate("fhir:"+parentType+'.'+name);
10227    }
10228    composeBackboneElement(t, "oralDiet", name, element, index);
10229    for (int i = 0; i < element.getType().size(); i++)
10230      composeCodeableConcept(t, "NutritionOrder", "type", element.getType().get(i), i);
10231    for (int i = 0; i < element.getSchedule().size(); i++)
10232      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule().get(i), i);
10233    for (int i = 0; i < element.getNutrient().size(); i++)
10234      composeNutritionOrderNutritionOrderOralDietNutrientComponent(t, "NutritionOrder", "nutrient", element.getNutrient().get(i), i);
10235    for (int i = 0; i < element.getTexture().size(); i++)
10236      composeNutritionOrderNutritionOrderOralDietTextureComponent(t, "NutritionOrder", "texture", element.getTexture().get(i), i);
10237    for (int i = 0; i < element.getFluidConsistencyType().size(); i++)
10238      composeCodeableConcept(t, "NutritionOrder", "fluidConsistencyType", element.getFluidConsistencyType().get(i), i);
10239    if (element.hasInstructionElement())
10240      composeString(t, "NutritionOrder", "instruction", element.getInstructionElement(), -1);
10241  }
10242
10243  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element, int index) {
10244    if (element == null) 
10245      return;
10246    Complex t;
10247    if (Utilities.noString(parentType))
10248      t = parent;
10249    else {
10250      t = parent.predicate("fhir:"+parentType+'.'+name);
10251    }
10252    composeBackboneElement(t, "nutrient", name, element, index);
10253    if (element.hasModifier())
10254      composeCodeableConcept(t, "NutritionOrder", "modifier", element.getModifier(), -1);
10255    if (element.hasAmount())
10256      composeQuantity(t, "NutritionOrder", "amount", element.getAmount(), -1);
10257  }
10258
10259  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietTextureComponent element, int index) {
10260    if (element == null) 
10261      return;
10262    Complex t;
10263    if (Utilities.noString(parentType))
10264      t = parent;
10265    else {
10266      t = parent.predicate("fhir:"+parentType+'.'+name);
10267    }
10268    composeBackboneElement(t, "texture", name, element, index);
10269    if (element.hasModifier())
10270      composeCodeableConcept(t, "NutritionOrder", "modifier", element.getModifier(), -1);
10271    if (element.hasFoodType())
10272      composeCodeableConcept(t, "NutritionOrder", "foodType", element.getFoodType(), -1);
10273  }
10274
10275  protected void composeNutritionOrderNutritionOrderSupplementComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderSupplementComponent element, int index) {
10276    if (element == null) 
10277      return;
10278    Complex t;
10279    if (Utilities.noString(parentType))
10280      t = parent;
10281    else {
10282      t = parent.predicate("fhir:"+parentType+'.'+name);
10283    }
10284    composeBackboneElement(t, "supplement", name, element, index);
10285    if (element.hasType())
10286      composeCodeableConcept(t, "NutritionOrder", "type", element.getType(), -1);
10287    if (element.hasProductNameElement())
10288      composeString(t, "NutritionOrder", "productName", element.getProductNameElement(), -1);
10289    for (int i = 0; i < element.getSchedule().size(); i++)
10290      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule().get(i), i);
10291    if (element.hasQuantity())
10292      composeQuantity(t, "NutritionOrder", "quantity", element.getQuantity(), -1);
10293    if (element.hasInstructionElement())
10294      composeString(t, "NutritionOrder", "instruction", element.getInstructionElement(), -1);
10295  }
10296
10297  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element, int index) {
10298    if (element == null) 
10299      return;
10300    Complex t;
10301    if (Utilities.noString(parentType))
10302      t = parent;
10303    else {
10304      t = parent.predicate("fhir:"+parentType+'.'+name);
10305    }
10306    composeBackboneElement(t, "enteralFormula", name, element, index);
10307    if (element.hasBaseFormulaType())
10308      composeCodeableConcept(t, "NutritionOrder", "baseFormulaType", element.getBaseFormulaType(), -1);
10309    if (element.hasBaseFormulaProductNameElement())
10310      composeString(t, "NutritionOrder", "baseFormulaProductName", element.getBaseFormulaProductNameElement(), -1);
10311    if (element.hasAdditiveType())
10312      composeCodeableConcept(t, "NutritionOrder", "additiveType", element.getAdditiveType(), -1);
10313    if (element.hasAdditiveProductNameElement())
10314      composeString(t, "NutritionOrder", "additiveProductName", element.getAdditiveProductNameElement(), -1);
10315    if (element.hasCaloricDensity())
10316      composeQuantity(t, "NutritionOrder", "caloricDensity", element.getCaloricDensity(), -1);
10317    if (element.hasRouteofAdministration())
10318      composeCodeableConcept(t, "NutritionOrder", "routeofAdministration", element.getRouteofAdministration(), -1);
10319    for (int i = 0; i < element.getAdministration().size(); i++)
10320      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(t, "NutritionOrder", "administration", element.getAdministration().get(i), i);
10321    if (element.hasMaxVolumeToDeliver())
10322      composeQuantity(t, "NutritionOrder", "maxVolumeToDeliver", element.getMaxVolumeToDeliver(), -1);
10323    if (element.hasAdministrationInstructionElement())
10324      composeString(t, "NutritionOrder", "administrationInstruction", element.getAdministrationInstructionElement(), -1);
10325  }
10326
10327  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element, int index) {
10328    if (element == null) 
10329      return;
10330    Complex t;
10331    if (Utilities.noString(parentType))
10332      t = parent;
10333    else {
10334      t = parent.predicate("fhir:"+parentType+'.'+name);
10335    }
10336    composeBackboneElement(t, "administration", name, element, index);
10337    if (element.hasSchedule())
10338      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule(), -1);
10339    if (element.hasQuantity())
10340      composeQuantity(t, "NutritionOrder", "quantity", element.getQuantity(), -1);
10341    if (element.hasRate())
10342      composeType(t, "NutritionOrder", "rate", element.getRate(), -1);
10343  }
10344
10345  protected void composeObservation(Complex parent, String parentType, String name, Observation element, int index) {
10346    if (element == null) 
10347      return;
10348    Complex t;
10349    if (Utilities.noString(parentType))
10350      t = parent;
10351    else {
10352      t = parent.predicate("fhir:"+parentType+'.'+name);
10353    }
10354    composeDomainResource(t, "Observation", name, element, index);
10355    for (int i = 0; i < element.getIdentifier().size(); i++)
10356      composeIdentifier(t, "Observation", "identifier", element.getIdentifier().get(i), i);
10357    for (int i = 0; i < element.getBasedOn().size(); i++)
10358      composeReference(t, "Observation", "basedOn", element.getBasedOn().get(i), i);
10359    for (int i = 0; i < element.getPartOf().size(); i++)
10360      composeReference(t, "Observation", "partOf", element.getPartOf().get(i), i);
10361    if (element.hasStatusElement())
10362      composeEnum(t, "Observation", "status", element.getStatusElement(), -1);
10363    for (int i = 0; i < element.getCategory().size(); i++)
10364      composeCodeableConcept(t, "Observation", "category", element.getCategory().get(i), i);
10365    if (element.hasCode())
10366      composeCodeableConcept(t, "Observation", "code", element.getCode(), -1);
10367    if (element.hasSubject())
10368      composeReference(t, "Observation", "subject", element.getSubject(), -1);
10369    if (element.hasFocus())
10370      composeReference(t, "Observation", "focus", element.getFocus(), -1);
10371    if (element.hasContext())
10372      composeReference(t, "Observation", "context", element.getContext(), -1);
10373    if (element.hasEffective())
10374      composeType(t, "Observation", "effective", element.getEffective(), -1);
10375    if (element.hasIssuedElement())
10376      composeInstant(t, "Observation", "issued", element.getIssuedElement(), -1);
10377    for (int i = 0; i < element.getPerformer().size(); i++)
10378      composeReference(t, "Observation", "performer", element.getPerformer().get(i), i);
10379    if (element.hasValue())
10380      composeType(t, "Observation", "value", element.getValue(), -1);
10381    if (element.hasDataAbsentReason())
10382      composeCodeableConcept(t, "Observation", "dataAbsentReason", element.getDataAbsentReason(), -1);
10383    if (element.hasInterpretation())
10384      composeCodeableConcept(t, "Observation", "interpretation", element.getInterpretation(), -1);
10385    if (element.hasCommentElement())
10386      composeString(t, "Observation", "comment", element.getCommentElement(), -1);
10387    if (element.hasBodySite())
10388      composeCodeableConcept(t, "Observation", "bodySite", element.getBodySite(), -1);
10389    if (element.hasMethod())
10390      composeCodeableConcept(t, "Observation", "method", element.getMethod(), -1);
10391    if (element.hasSpecimen())
10392      composeReference(t, "Observation", "specimen", element.getSpecimen(), -1);
10393    if (element.hasDevice())
10394      composeReference(t, "Observation", "device", element.getDevice(), -1);
10395    for (int i = 0; i < element.getReferenceRange().size(); i++)
10396      composeObservationObservationReferenceRangeComponent(t, "Observation", "referenceRange", element.getReferenceRange().get(i), i);
10397    for (int i = 0; i < element.getHasMember().size(); i++)
10398      composeReference(t, "Observation", "hasMember", element.getHasMember().get(i), i);
10399    for (int i = 0; i < element.getDerivedFrom().size(); i++)
10400      composeReference(t, "Observation", "derivedFrom", element.getDerivedFrom().get(i), i);
10401    for (int i = 0; i < element.getComponent().size(); i++)
10402      composeObservationObservationComponentComponent(t, "Observation", "component", element.getComponent().get(i), i);
10403  }
10404
10405  protected void composeObservationObservationReferenceRangeComponent(Complex parent, String parentType, String name, Observation.ObservationReferenceRangeComponent element, int index) {
10406    if (element == null) 
10407      return;
10408    Complex t;
10409    if (Utilities.noString(parentType))
10410      t = parent;
10411    else {
10412      t = parent.predicate("fhir:"+parentType+'.'+name);
10413    }
10414    composeBackboneElement(t, "referenceRange", name, element, index);
10415    if (element.hasLow())
10416      composeQuantity(t, "Observation", "low", element.getLow(), -1);
10417    if (element.hasHigh())
10418      composeQuantity(t, "Observation", "high", element.getHigh(), -1);
10419    if (element.hasType())
10420      composeCodeableConcept(t, "Observation", "type", element.getType(), -1);
10421    for (int i = 0; i < element.getAppliesTo().size(); i++)
10422      composeCodeableConcept(t, "Observation", "appliesTo", element.getAppliesTo().get(i), i);
10423    if (element.hasAge())
10424      composeRange(t, "Observation", "age", element.getAge(), -1);
10425    if (element.hasTextElement())
10426      composeString(t, "Observation", "text", element.getTextElement(), -1);
10427  }
10428
10429  protected void composeObservationObservationComponentComponent(Complex parent, String parentType, String name, Observation.ObservationComponentComponent element, int index) {
10430    if (element == null) 
10431      return;
10432    Complex t;
10433    if (Utilities.noString(parentType))
10434      t = parent;
10435    else {
10436      t = parent.predicate("fhir:"+parentType+'.'+name);
10437    }
10438    composeBackboneElement(t, "component", name, element, index);
10439    if (element.hasCode())
10440      composeCodeableConcept(t, "Observation", "code", element.getCode(), -1);
10441    if (element.hasValue())
10442      composeType(t, "Observation", "value", element.getValue(), -1);
10443    if (element.hasDataAbsentReason())
10444      composeCodeableConcept(t, "Observation", "dataAbsentReason", element.getDataAbsentReason(), -1);
10445    if (element.hasInterpretation())
10446      composeCodeableConcept(t, "Observation", "interpretation", element.getInterpretation(), -1);
10447    for (int i = 0; i < element.getReferenceRange().size(); i++)
10448      composeObservationObservationReferenceRangeComponent(t, "Observation", "referenceRange", element.getReferenceRange().get(i), i);
10449  }
10450
10451  protected void composeObservationDefinition(Complex parent, String parentType, String name, ObservationDefinition element, int index) {
10452    if (element == null) 
10453      return;
10454    Complex t;
10455    if (Utilities.noString(parentType))
10456      t = parent;
10457    else {
10458      t = parent.predicate("fhir:"+parentType+'.'+name);
10459    }
10460    composeDomainResource(t, "ObservationDefinition", name, element, index);
10461    if (element.hasCategory())
10462      composeCoding(t, "ObservationDefinition", "category", element.getCategory(), -1);
10463    if (element.hasCode())
10464      composeCoding(t, "ObservationDefinition", "code", element.getCode(), -1);
10465    for (int i = 0; i < element.getPermittedDataType().size(); i++)
10466      composeCoding(t, "ObservationDefinition", "permittedDataType", element.getPermittedDataType().get(i), i);
10467    if (element.hasMultipleResultsAllowedElement())
10468      composeBoolean(t, "ObservationDefinition", "multipleResultsAllowed", element.getMultipleResultsAllowedElement(), -1);
10469    if (element.hasMethod())
10470      composeCodeableConcept(t, "ObservationDefinition", "method", element.getMethod(), -1);
10471    if (element.hasPreferredReportNameElement())
10472      composeString(t, "ObservationDefinition", "preferredReportName", element.getPreferredReportNameElement(), -1);
10473    if (element.hasQuantitativeDetails())
10474      composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(t, "ObservationDefinition", "quantitativeDetails", element.getQuantitativeDetails(), -1);
10475    for (int i = 0; i < element.getQualifiedInterval().size(); i++)
10476      composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(t, "ObservationDefinition", "qualifiedInterval", element.getQualifiedInterval().get(i), i);
10477    if (element.hasValidCodedValueSetElement())
10478      composeUri(t, "ObservationDefinition", "validCodedValueSet", element.getValidCodedValueSetElement(), -1);
10479    if (element.hasNormalCodedValueSetElement())
10480      composeUri(t, "ObservationDefinition", "normalCodedValueSet", element.getNormalCodedValueSetElement(), -1);
10481    if (element.hasAbnormalCodedValueSetElement())
10482      composeUri(t, "ObservationDefinition", "abnormalCodedValueSet", element.getAbnormalCodedValueSetElement(), -1);
10483    if (element.hasCriticalCodedValueSetElement())
10484      composeUri(t, "ObservationDefinition", "criticalCodedValueSet", element.getCriticalCodedValueSetElement(), -1);
10485  }
10486
10487  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(Complex parent, String parentType, String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element, int index) {
10488    if (element == null) 
10489      return;
10490    Complex t;
10491    if (Utilities.noString(parentType))
10492      t = parent;
10493    else {
10494      t = parent.predicate("fhir:"+parentType+'.'+name);
10495    }
10496    composeBackboneElement(t, "quantitativeDetails", name, element, index);
10497    if (element.hasCustomaryUnit())
10498      composeCoding(t, "ObservationDefinition", "customaryUnit", element.getCustomaryUnit(), -1);
10499    if (element.hasUnit())
10500      composeCoding(t, "ObservationDefinition", "unit", element.getUnit(), -1);
10501    if (element.hasConversionFactorElement())
10502      composeDecimal(t, "ObservationDefinition", "conversionFactor", element.getConversionFactorElement(), -1);
10503    if (element.hasDecimalPrecisionElement())
10504      composeInteger(t, "ObservationDefinition", "decimalPrecision", element.getDecimalPrecisionElement(), -1);
10505  }
10506
10507  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(Complex parent, String parentType, String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element, int index) {
10508    if (element == null) 
10509      return;
10510    Complex t;
10511    if (Utilities.noString(parentType))
10512      t = parent;
10513    else {
10514      t = parent.predicate("fhir:"+parentType+'.'+name);
10515    }
10516    composeBackboneElement(t, "qualifiedInterval", name, element, index);
10517    if (element.hasCategory())
10518      composeCodeableConcept(t, "ObservationDefinition", "category", element.getCategory(), -1);
10519    if (element.hasRange())
10520      composeRange(t, "ObservationDefinition", "range", element.getRange(), -1);
10521    if (element.hasType())
10522      composeCodeableConcept(t, "ObservationDefinition", "type", element.getType(), -1);
10523    for (int i = 0; i < element.getAppliesTo().size(); i++)
10524      composeCodeableConcept(t, "ObservationDefinition", "appliesTo", element.getAppliesTo().get(i), i);
10525    if (element.hasAge())
10526      composeRange(t, "ObservationDefinition", "age", element.getAge(), -1);
10527    if (element.hasGestationalAge())
10528      composeRange(t, "ObservationDefinition", "gestationalAge", element.getGestationalAge(), -1);
10529    if (element.hasConditionElement())
10530      composeString(t, "ObservationDefinition", "condition", element.getConditionElement(), -1);
10531  }
10532
10533  protected void composeOccupationalData(Complex parent, String parentType, String name, OccupationalData element, int index) {
10534    if (element == null) 
10535      return;
10536    Complex t;
10537    if (Utilities.noString(parentType))
10538      t = parent;
10539    else {
10540      t = parent.predicate("fhir:"+parentType+'.'+name);
10541    }
10542    composeDomainResource(t, "OccupationalData", name, element, index);
10543    if (element.hasIdentifier())
10544      composeIdentifier(t, "OccupationalData", "identifier", element.getIdentifier(), -1);
10545    if (element.hasStatusElement())
10546      composeEnum(t, "OccupationalData", "status", element.getStatusElement(), -1);
10547    if (element.hasSubject())
10548      composeReference(t, "OccupationalData", "subject", element.getSubject(), -1);
10549    if (element.hasDateElement())
10550      composeDateTime(t, "OccupationalData", "date", element.getDateElement(), -1);
10551    for (int i = 0; i < element.getRecorder().size(); i++)
10552      composeReference(t, "OccupationalData", "recorder", element.getRecorder().get(i), i);
10553    for (int i = 0; i < element.getInformant().size(); i++)
10554      composeReference(t, "OccupationalData", "informant", element.getInformant().get(i), i);
10555    for (int i = 0; i < element.getEmploymentStatus().size(); i++)
10556      composeOccupationalDataOccupationalDataEmploymentStatusComponent(t, "OccupationalData", "employmentStatus", element.getEmploymentStatus().get(i), i);
10557    for (int i = 0; i < element.getRetirementDate().size(); i++)
10558      composeDateTime(t, "OccupationalData", "retirementDate", element.getRetirementDate().get(i), i);
10559    for (int i = 0; i < element.getCombatZonePeriod().size(); i++)
10560      composePeriod(t, "OccupationalData", "combatZonePeriod", element.getCombatZonePeriod().get(i), i);
10561    if (element.hasUsualWork())
10562      composeOccupationalDataOccupationalDataUsualWorkComponent(t, "OccupationalData", "usualWork", element.getUsualWork(), -1);
10563    for (int i = 0; i < element.getPastOrPresentJob().size(); i++)
10564      composeOccupationalDataOccupationalDataPastOrPresentJobComponent(t, "OccupationalData", "pastOrPresentJob", element.getPastOrPresentJob().get(i), i);
10565  }
10566
10567  protected void composeOccupationalDataOccupationalDataEmploymentStatusComponent(Complex parent, String parentType, String name, OccupationalData.OccupationalDataEmploymentStatusComponent element, int index) {
10568    if (element == null) 
10569      return;
10570    Complex t;
10571    if (Utilities.noString(parentType))
10572      t = parent;
10573    else {
10574      t = parent.predicate("fhir:"+parentType+'.'+name);
10575    }
10576    composeBackboneElement(t, "employmentStatus", name, element, index);
10577    if (element.hasCode())
10578      composeCodeableConcept(t, "OccupationalData", "code", element.getCode(), -1);
10579    if (element.hasEffective())
10580      composePeriod(t, "OccupationalData", "effective", element.getEffective(), -1);
10581  }
10582
10583  protected void composeOccupationalDataOccupationalDataUsualWorkComponent(Complex parent, String parentType, String name, OccupationalData.OccupationalDataUsualWorkComponent element, int index) {
10584    if (element == null) 
10585      return;
10586    Complex t;
10587    if (Utilities.noString(parentType))
10588      t = parent;
10589    else {
10590      t = parent.predicate("fhir:"+parentType+'.'+name);
10591    }
10592    composeBackboneElement(t, "usualWork", name, element, index);
10593    if (element.hasOccupation())
10594      composeCodeableConcept(t, "OccupationalData", "occupation", element.getOccupation(), -1);
10595    if (element.hasIndustry())
10596      composeCodeableConcept(t, "OccupationalData", "industry", element.getIndustry(), -1);
10597    if (element.hasStartElement())
10598      composeDateTime(t, "OccupationalData", "start", element.getStartElement(), -1);
10599    if (element.hasDuration())
10600      composeDuration(t, "OccupationalData", "duration", element.getDuration(), -1);
10601  }
10602
10603  protected void composeOccupationalDataOccupationalDataPastOrPresentJobComponent(Complex parent, String parentType, String name, OccupationalData.OccupationalDataPastOrPresentJobComponent element, int index) {
10604    if (element == null) 
10605      return;
10606    Complex t;
10607    if (Utilities.noString(parentType))
10608      t = parent;
10609    else {
10610      t = parent.predicate("fhir:"+parentType+'.'+name);
10611    }
10612    composeBackboneElement(t, "pastOrPresentJob", name, element, index);
10613    if (element.hasOccupation())
10614      composeCodeableConcept(t, "OccupationalData", "occupation", element.getOccupation(), -1);
10615    if (element.hasIndustry())
10616      composeCodeableConcept(t, "OccupationalData", "industry", element.getIndustry(), -1);
10617    if (element.hasEffective())
10618      composePeriod(t, "OccupationalData", "effective", element.getEffective(), -1);
10619    if (element.hasEmployer())
10620      composeReference(t, "OccupationalData", "employer", element.getEmployer(), -1);
10621    if (element.hasWorkClassification())
10622      composeCodeableConcept(t, "OccupationalData", "workClassification", element.getWorkClassification(), -1);
10623    if (element.hasSupervisoryLevel())
10624      composeCodeableConcept(t, "OccupationalData", "supervisoryLevel", element.getSupervisoryLevel(), -1);
10625    for (int i = 0; i < element.getJobDuty().size(); i++)
10626      composeString(t, "OccupationalData", "jobDuty", element.getJobDuty().get(i), i);
10627    for (int i = 0; i < element.getOccupationalHazard().size(); i++)
10628      composeString(t, "OccupationalData", "occupationalHazard", element.getOccupationalHazard().get(i), i);
10629    if (element.hasWorkSchedule())
10630      composeOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponent(t, "OccupationalData", "workSchedule", element.getWorkSchedule(), -1);
10631  }
10632
10633  protected void composeOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponent(Complex parent, String parentType, String name, OccupationalData.OccupationalDataPastOrPresentJobWorkScheduleComponent element, int index) {
10634    if (element == null) 
10635      return;
10636    Complex t;
10637    if (Utilities.noString(parentType))
10638      t = parent;
10639    else {
10640      t = parent.predicate("fhir:"+parentType+'.'+name);
10641    }
10642    composeBackboneElement(t, "workSchedule", name, element, index);
10643    if (element.hasCode())
10644      composeCodeableConcept(t, "OccupationalData", "code", element.getCode(), -1);
10645    if (element.hasWeeklyWorkDaysElement())
10646      composeDecimal(t, "OccupationalData", "weeklyWorkDays", element.getWeeklyWorkDaysElement(), -1);
10647    if (element.hasDailyWorkHoursElement())
10648      composeDecimal(t, "OccupationalData", "dailyWorkHours", element.getDailyWorkHoursElement(), -1);
10649  }
10650
10651  protected void composeOperationDefinition(Complex parent, String parentType, String name, OperationDefinition element, int index) {
10652    if (element == null) 
10653      return;
10654    Complex t;
10655    if (Utilities.noString(parentType))
10656      t = parent;
10657    else {
10658      t = parent.predicate("fhir:"+parentType+'.'+name);
10659    }
10660    composeDomainResource(t, "OperationDefinition", name, element, index);
10661    if (element.hasUrlElement())
10662      composeUri(t, "OperationDefinition", "url", element.getUrlElement(), -1);
10663    if (element.hasVersionElement())
10664      composeString(t, "OperationDefinition", "version", element.getVersionElement(), -1);
10665    if (element.hasNameElement())
10666      composeString(t, "OperationDefinition", "name", element.getNameElement(), -1);
10667    if (element.hasStatusElement())
10668      composeEnum(t, "OperationDefinition", "status", element.getStatusElement(), -1);
10669    if (element.hasKindElement())
10670      composeEnum(t, "OperationDefinition", "kind", element.getKindElement(), -1);
10671    if (element.hasExperimentalElement())
10672      composeBoolean(t, "OperationDefinition", "experimental", element.getExperimentalElement(), -1);
10673    if (element.hasDateElement())
10674      composeDateTime(t, "OperationDefinition", "date", element.getDateElement(), -1);
10675    if (element.hasPublisherElement())
10676      composeString(t, "OperationDefinition", "publisher", element.getPublisherElement(), -1);
10677    for (int i = 0; i < element.getContact().size(); i++)
10678      composeContactDetail(t, "OperationDefinition", "contact", element.getContact().get(i), i);
10679    if (element.hasDescriptionElement())
10680      composeMarkdown(t, "OperationDefinition", "description", element.getDescriptionElement(), -1);
10681    for (int i = 0; i < element.getUseContext().size(); i++)
10682      composeUsageContext(t, "OperationDefinition", "useContext", element.getUseContext().get(i), i);
10683    for (int i = 0; i < element.getJurisdiction().size(); i++)
10684      composeCodeableConcept(t, "OperationDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
10685    if (element.hasPurposeElement())
10686      composeMarkdown(t, "OperationDefinition", "purpose", element.getPurposeElement(), -1);
10687    if (element.hasAffectsStateElement())
10688      composeBoolean(t, "OperationDefinition", "affectsState", element.getAffectsStateElement(), -1);
10689    if (element.hasCodeElement())
10690      composeCode(t, "OperationDefinition", "code", element.getCodeElement(), -1);
10691    if (element.hasCommentElement())
10692      composeMarkdown(t, "OperationDefinition", "comment", element.getCommentElement(), -1);
10693    if (element.hasBaseElement())
10694      composeCanonical(t, "OperationDefinition", "base", element.getBaseElement(), -1);
10695    for (int i = 0; i < element.getResource().size(); i++)
10696      composeCode(t, "OperationDefinition", "resource", element.getResource().get(i), i);
10697    if (element.hasSystemElement())
10698      composeBoolean(t, "OperationDefinition", "system", element.getSystemElement(), -1);
10699    if (element.hasTypeElement())
10700      composeBoolean(t, "OperationDefinition", "type", element.getTypeElement(), -1);
10701    if (element.hasInstanceElement())
10702      composeBoolean(t, "OperationDefinition", "instance", element.getInstanceElement(), -1);
10703    if (element.hasInputProfileElement())
10704      composeCanonical(t, "OperationDefinition", "inputProfile", element.getInputProfileElement(), -1);
10705    if (element.hasOutputProfileElement())
10706      composeCanonical(t, "OperationDefinition", "outputProfile", element.getOutputProfileElement(), -1);
10707    for (int i = 0; i < element.getParameter().size(); i++)
10708      composeOperationDefinitionOperationDefinitionParameterComponent(t, "OperationDefinition", "parameter", element.getParameter().get(i), i);
10709    for (int i = 0; i < element.getOverload().size(); i++)
10710      composeOperationDefinitionOperationDefinitionOverloadComponent(t, "OperationDefinition", "overload", element.getOverload().get(i), i);
10711  }
10712
10713  protected void composeOperationDefinitionOperationDefinitionParameterComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionParameterComponent element, int index) {
10714    if (element == null) 
10715      return;
10716    Complex t;
10717    if (Utilities.noString(parentType))
10718      t = parent;
10719    else {
10720      t = parent.predicate("fhir:"+parentType+'.'+name);
10721    }
10722    composeBackboneElement(t, "parameter", name, element, index);
10723    if (element.hasNameElement())
10724      composeCode(t, "OperationDefinition", "name", element.getNameElement(), -1);
10725    if (element.hasUseElement())
10726      composeEnum(t, "OperationDefinition", "use", element.getUseElement(), -1);
10727    if (element.hasMinElement())
10728      composeInteger(t, "OperationDefinition", "min", element.getMinElement(), -1);
10729    if (element.hasMaxElement())
10730      composeString(t, "OperationDefinition", "max", element.getMaxElement(), -1);
10731    if (element.hasDocumentationElement())
10732      composeString(t, "OperationDefinition", "documentation", element.getDocumentationElement(), -1);
10733    if (element.hasTypeElement())
10734      composeCode(t, "OperationDefinition", "type", element.getTypeElement(), -1);
10735    for (int i = 0; i < element.getTargetProfile().size(); i++)
10736      composeCanonical(t, "OperationDefinition", "targetProfile", element.getTargetProfile().get(i), i);
10737    if (element.hasSearchTypeElement())
10738      composeEnum(t, "OperationDefinition", "searchType", element.getSearchTypeElement(), -1);
10739    if (element.hasBinding())
10740      composeOperationDefinitionOperationDefinitionParameterBindingComponent(t, "OperationDefinition", "binding", element.getBinding(), -1);
10741    for (int i = 0; i < element.getPart().size(); i++)
10742      composeOperationDefinitionOperationDefinitionParameterComponent(t, "OperationDefinition", "part", element.getPart().get(i), i);
10743  }
10744
10745  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionParameterBindingComponent element, int index) {
10746    if (element == null) 
10747      return;
10748    Complex t;
10749    if (Utilities.noString(parentType))
10750      t = parent;
10751    else {
10752      t = parent.predicate("fhir:"+parentType+'.'+name);
10753    }
10754    composeBackboneElement(t, "binding", name, element, index);
10755    if (element.hasStrengthElement())
10756      composeEnum(t, "OperationDefinition", "strength", element.getStrengthElement(), -1);
10757    if (element.hasValueSet())
10758      composeType(t, "OperationDefinition", "valueSet", element.getValueSet(), -1);
10759  }
10760
10761  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionOverloadComponent element, int index) {
10762    if (element == null) 
10763      return;
10764    Complex t;
10765    if (Utilities.noString(parentType))
10766      t = parent;
10767    else {
10768      t = parent.predicate("fhir:"+parentType+'.'+name);
10769    }
10770    composeBackboneElement(t, "overload", name, element, index);
10771    for (int i = 0; i < element.getParameterName().size(); i++)
10772      composeString(t, "OperationDefinition", "parameterName", element.getParameterName().get(i), i);
10773    if (element.hasCommentElement())
10774      composeString(t, "OperationDefinition", "comment", element.getCommentElement(), -1);
10775  }
10776
10777  protected void composeOperationOutcome(Complex parent, String parentType, String name, OperationOutcome element, int index) {
10778    if (element == null) 
10779      return;
10780    Complex t;
10781    if (Utilities.noString(parentType))
10782      t = parent;
10783    else {
10784      t = parent.predicate("fhir:"+parentType+'.'+name);
10785    }
10786    composeDomainResource(t, "OperationOutcome", name, element, index);
10787    for (int i = 0; i < element.getIssue().size(); i++)
10788      composeOperationOutcomeOperationOutcomeIssueComponent(t, "OperationOutcome", "issue", element.getIssue().get(i), i);
10789  }
10790
10791  protected void composeOperationOutcomeOperationOutcomeIssueComponent(Complex parent, String parentType, String name, OperationOutcome.OperationOutcomeIssueComponent element, int index) {
10792    if (element == null) 
10793      return;
10794    Complex t;
10795    if (Utilities.noString(parentType))
10796      t = parent;
10797    else {
10798      t = parent.predicate("fhir:"+parentType+'.'+name);
10799    }
10800    composeBackboneElement(t, "issue", name, element, index);
10801    if (element.hasSeverityElement())
10802      composeEnum(t, "OperationOutcome", "severity", element.getSeverityElement(), -1);
10803    if (element.hasCodeElement())
10804      composeEnum(t, "OperationOutcome", "code", element.getCodeElement(), -1);
10805    if (element.hasDetails())
10806      composeCodeableConcept(t, "OperationOutcome", "details", element.getDetails(), -1);
10807    if (element.hasDiagnosticsElement())
10808      composeString(t, "OperationOutcome", "diagnostics", element.getDiagnosticsElement(), -1);
10809    for (int i = 0; i < element.getLocation().size(); i++)
10810      composeString(t, "OperationOutcome", "location", element.getLocation().get(i), i);
10811    for (int i = 0; i < element.getExpression().size(); i++)
10812      composeString(t, "OperationOutcome", "expression", element.getExpression().get(i), i);
10813  }
10814
10815  protected void composeOrganization(Complex parent, String parentType, String name, Organization element, int index) {
10816    if (element == null) 
10817      return;
10818    Complex t;
10819    if (Utilities.noString(parentType))
10820      t = parent;
10821    else {
10822      t = parent.predicate("fhir:"+parentType+'.'+name);
10823    }
10824    composeDomainResource(t, "Organization", name, element, index);
10825    for (int i = 0; i < element.getIdentifier().size(); i++)
10826      composeIdentifier(t, "Organization", "identifier", element.getIdentifier().get(i), i);
10827    if (element.hasActiveElement())
10828      composeBoolean(t, "Organization", "active", element.getActiveElement(), -1);
10829    for (int i = 0; i < element.getType().size(); i++)
10830      composeCodeableConcept(t, "Organization", "type", element.getType().get(i), i);
10831    if (element.hasNameElement())
10832      composeString(t, "Organization", "name", element.getNameElement(), -1);
10833    for (int i = 0; i < element.getAlias().size(); i++)
10834      composeString(t, "Organization", "alias", element.getAlias().get(i), i);
10835    for (int i = 0; i < element.getTelecom().size(); i++)
10836      composeContactPoint(t, "Organization", "telecom", element.getTelecom().get(i), i);
10837    for (int i = 0; i < element.getAddress().size(); i++)
10838      composeAddress(t, "Organization", "address", element.getAddress().get(i), i);
10839    if (element.hasPartOf())
10840      composeReference(t, "Organization", "partOf", element.getPartOf(), -1);
10841    for (int i = 0; i < element.getContact().size(); i++)
10842      composeOrganizationOrganizationContactComponent(t, "Organization", "contact", element.getContact().get(i), i);
10843    for (int i = 0; i < element.getEndpoint().size(); i++)
10844      composeReference(t, "Organization", "endpoint", element.getEndpoint().get(i), i);
10845  }
10846
10847  protected void composeOrganizationOrganizationContactComponent(Complex parent, String parentType, String name, Organization.OrganizationContactComponent element, int index) {
10848    if (element == null) 
10849      return;
10850    Complex t;
10851    if (Utilities.noString(parentType))
10852      t = parent;
10853    else {
10854      t = parent.predicate("fhir:"+parentType+'.'+name);
10855    }
10856    composeBackboneElement(t, "contact", name, element, index);
10857    if (element.hasPurpose())
10858      composeCodeableConcept(t, "Organization", "purpose", element.getPurpose(), -1);
10859    if (element.hasName())
10860      composeHumanName(t, "Organization", "name", element.getName(), -1);
10861    for (int i = 0; i < element.getTelecom().size(); i++)
10862      composeContactPoint(t, "Organization", "telecom", element.getTelecom().get(i), i);
10863    if (element.hasAddress())
10864      composeAddress(t, "Organization", "address", element.getAddress(), -1);
10865  }
10866
10867  protected void composeOrganizationRole(Complex parent, String parentType, String name, OrganizationRole element, int index) {
10868    if (element == null) 
10869      return;
10870    Complex t;
10871    if (Utilities.noString(parentType))
10872      t = parent;
10873    else {
10874      t = parent.predicate("fhir:"+parentType+'.'+name);
10875    }
10876    composeDomainResource(t, "OrganizationRole", name, element, index);
10877    for (int i = 0; i < element.getIdentifier().size(); i++)
10878      composeIdentifier(t, "OrganizationRole", "identifier", element.getIdentifier().get(i), i);
10879    if (element.hasActiveElement())
10880      composeBoolean(t, "OrganizationRole", "active", element.getActiveElement(), -1);
10881    if (element.hasPeriod())
10882      composePeriod(t, "OrganizationRole", "period", element.getPeriod(), -1);
10883    if (element.hasOrganization())
10884      composeReference(t, "OrganizationRole", "organization", element.getOrganization(), -1);
10885    if (element.hasParticipatingOrganization())
10886      composeReference(t, "OrganizationRole", "participatingOrganization", element.getParticipatingOrganization(), -1);
10887    for (int i = 0; i < element.getNetwork().size(); i++)
10888      composeReference(t, "OrganizationRole", "network", element.getNetwork().get(i), i);
10889    for (int i = 0; i < element.getCode().size(); i++)
10890      composeCodeableConcept(t, "OrganizationRole", "code", element.getCode().get(i), i);
10891    for (int i = 0; i < element.getSpecialty().size(); i++)
10892      composeCodeableConcept(t, "OrganizationRole", "specialty", element.getSpecialty().get(i), i);
10893    for (int i = 0; i < element.getLocation().size(); i++)
10894      composeReference(t, "OrganizationRole", "location", element.getLocation().get(i), i);
10895    for (int i = 0; i < element.getHealthcareService().size(); i++)
10896      composeReference(t, "OrganizationRole", "healthcareService", element.getHealthcareService().get(i), i);
10897    for (int i = 0; i < element.getTelecom().size(); i++)
10898      composeContactPoint(t, "OrganizationRole", "telecom", element.getTelecom().get(i), i);
10899    for (int i = 0; i < element.getAvailableTime().size(); i++)
10900      composeOrganizationRoleOrganizationRoleAvailableTimeComponent(t, "OrganizationRole", "availableTime", element.getAvailableTime().get(i), i);
10901    for (int i = 0; i < element.getNotAvailable().size(); i++)
10902      composeOrganizationRoleOrganizationRoleNotAvailableComponent(t, "OrganizationRole", "notAvailable", element.getNotAvailable().get(i), i);
10903    if (element.hasAvailabilityExceptionsElement())
10904      composeString(t, "OrganizationRole", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
10905    for (int i = 0; i < element.getEndpoint().size(); i++)
10906      composeReference(t, "OrganizationRole", "endpoint", element.getEndpoint().get(i), i);
10907  }
10908
10909  protected void composeOrganizationRoleOrganizationRoleAvailableTimeComponent(Complex parent, String parentType, String name, OrganizationRole.OrganizationRoleAvailableTimeComponent element, int index) {
10910    if (element == null) 
10911      return;
10912    Complex t;
10913    if (Utilities.noString(parentType))
10914      t = parent;
10915    else {
10916      t = parent.predicate("fhir:"+parentType+'.'+name);
10917    }
10918    composeBackboneElement(t, "availableTime", name, element, index);
10919    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
10920      composeEnum(t, "OrganizationRole", "daysOfWeek", element.getDaysOfWeek().get(i), i);
10921    if (element.hasAllDayElement())
10922      composeBoolean(t, "OrganizationRole", "allDay", element.getAllDayElement(), -1);
10923    if (element.hasAvailableStartTimeElement())
10924      composeTime(t, "OrganizationRole", "availableStartTime", element.getAvailableStartTimeElement(), -1);
10925    if (element.hasAvailableEndTimeElement())
10926      composeTime(t, "OrganizationRole", "availableEndTime", element.getAvailableEndTimeElement(), -1);
10927  }
10928
10929  protected void composeOrganizationRoleOrganizationRoleNotAvailableComponent(Complex parent, String parentType, String name, OrganizationRole.OrganizationRoleNotAvailableComponent element, int index) {
10930    if (element == null) 
10931      return;
10932    Complex t;
10933    if (Utilities.noString(parentType))
10934      t = parent;
10935    else {
10936      t = parent.predicate("fhir:"+parentType+'.'+name);
10937    }
10938    composeBackboneElement(t, "notAvailable", name, element, index);
10939    if (element.hasDescriptionElement())
10940      composeString(t, "OrganizationRole", "description", element.getDescriptionElement(), -1);
10941    if (element.hasDuring())
10942      composePeriod(t, "OrganizationRole", "during", element.getDuring(), -1);
10943  }
10944
10945  protected void composePatient(Complex parent, String parentType, String name, Patient element, int index) {
10946    if (element == null) 
10947      return;
10948    Complex t;
10949    if (Utilities.noString(parentType))
10950      t = parent;
10951    else {
10952      t = parent.predicate("fhir:"+parentType+'.'+name);
10953    }
10954    composeDomainResource(t, "Patient", name, element, index);
10955    for (int i = 0; i < element.getIdentifier().size(); i++)
10956      composeIdentifier(t, "Patient", "identifier", element.getIdentifier().get(i), i);
10957    if (element.hasActiveElement())
10958      composeBoolean(t, "Patient", "active", element.getActiveElement(), -1);
10959    for (int i = 0; i < element.getName().size(); i++)
10960      composeHumanName(t, "Patient", "name", element.getName().get(i), i);
10961    for (int i = 0; i < element.getTelecom().size(); i++)
10962      composeContactPoint(t, "Patient", "telecom", element.getTelecom().get(i), i);
10963    if (element.hasGenderElement())
10964      composeEnum(t, "Patient", "gender", element.getGenderElement(), -1);
10965    if (element.hasBirthDateElement())
10966      composeDate(t, "Patient", "birthDate", element.getBirthDateElement(), -1);
10967    if (element.hasDeceased())
10968      composeType(t, "Patient", "deceased", element.getDeceased(), -1);
10969    for (int i = 0; i < element.getAddress().size(); i++)
10970      composeAddress(t, "Patient", "address", element.getAddress().get(i), i);
10971    if (element.hasMaritalStatus())
10972      composeCodeableConcept(t, "Patient", "maritalStatus", element.getMaritalStatus(), -1);
10973    if (element.hasMultipleBirth())
10974      composeType(t, "Patient", "multipleBirth", element.getMultipleBirth(), -1);
10975    for (int i = 0; i < element.getPhoto().size(); i++)
10976      composeAttachment(t, "Patient", "photo", element.getPhoto().get(i), i);
10977    for (int i = 0; i < element.getContact().size(); i++)
10978      composePatientContactComponent(t, "Patient", "contact", element.getContact().get(i), i);
10979    for (int i = 0; i < element.getCommunication().size(); i++)
10980      composePatientPatientCommunicationComponent(t, "Patient", "communication", element.getCommunication().get(i), i);
10981    for (int i = 0; i < element.getGeneralPractitioner().size(); i++)
10982      composeReference(t, "Patient", "generalPractitioner", element.getGeneralPractitioner().get(i), i);
10983    if (element.hasManagingOrganization())
10984      composeReference(t, "Patient", "managingOrganization", element.getManagingOrganization(), -1);
10985    for (int i = 0; i < element.getLink().size(); i++)
10986      composePatientPatientLinkComponent(t, "Patient", "link", element.getLink().get(i), i);
10987  }
10988
10989  protected void composePatientContactComponent(Complex parent, String parentType, String name, Patient.ContactComponent element, int index) {
10990    if (element == null) 
10991      return;
10992    Complex t;
10993    if (Utilities.noString(parentType))
10994      t = parent;
10995    else {
10996      t = parent.predicate("fhir:"+parentType+'.'+name);
10997    }
10998    composeBackboneElement(t, "contact", name, element, index);
10999    for (int i = 0; i < element.getRelationship().size(); i++)
11000      composeCodeableConcept(t, "Patient", "relationship", element.getRelationship().get(i), i);
11001    if (element.hasName())
11002      composeHumanName(t, "Patient", "name", element.getName(), -1);
11003    for (int i = 0; i < element.getTelecom().size(); i++)
11004      composeContactPoint(t, "Patient", "telecom", element.getTelecom().get(i), i);
11005    if (element.hasAddress())
11006      composeAddress(t, "Patient", "address", element.getAddress(), -1);
11007    if (element.hasGenderElement())
11008      composeEnum(t, "Patient", "gender", element.getGenderElement(), -1);
11009    if (element.hasOrganization())
11010      composeReference(t, "Patient", "organization", element.getOrganization(), -1);
11011    if (element.hasPeriod())
11012      composePeriod(t, "Patient", "period", element.getPeriod(), -1);
11013  }
11014
11015  protected void composePatientPatientCommunicationComponent(Complex parent, String parentType, String name, Patient.PatientCommunicationComponent element, int index) {
11016    if (element == null) 
11017      return;
11018    Complex t;
11019    if (Utilities.noString(parentType))
11020      t = parent;
11021    else {
11022      t = parent.predicate("fhir:"+parentType+'.'+name);
11023    }
11024    composeBackboneElement(t, "communication", name, element, index);
11025    if (element.hasLanguage())
11026      composeCodeableConcept(t, "Patient", "language", element.getLanguage(), -1);
11027    if (element.hasPreferredElement())
11028      composeBoolean(t, "Patient", "preferred", element.getPreferredElement(), -1);
11029  }
11030
11031  protected void composePatientPatientLinkComponent(Complex parent, String parentType, String name, Patient.PatientLinkComponent element, int index) {
11032    if (element == null) 
11033      return;
11034    Complex t;
11035    if (Utilities.noString(parentType))
11036      t = parent;
11037    else {
11038      t = parent.predicate("fhir:"+parentType+'.'+name);
11039    }
11040    composeBackboneElement(t, "link", name, element, index);
11041    if (element.hasOther())
11042      composeReference(t, "Patient", "other", element.getOther(), -1);
11043    if (element.hasTypeElement())
11044      composeEnum(t, "Patient", "type", element.getTypeElement(), -1);
11045  }
11046
11047  protected void composePaymentNotice(Complex parent, String parentType, String name, PaymentNotice element, int index) {
11048    if (element == null) 
11049      return;
11050    Complex t;
11051    if (Utilities.noString(parentType))
11052      t = parent;
11053    else {
11054      t = parent.predicate("fhir:"+parentType+'.'+name);
11055    }
11056    composeDomainResource(t, "PaymentNotice", name, element, index);
11057    for (int i = 0; i < element.getIdentifier().size(); i++)
11058      composeIdentifier(t, "PaymentNotice", "identifier", element.getIdentifier().get(i), i);
11059    if (element.hasStatusElement())
11060      composeEnum(t, "PaymentNotice", "status", element.getStatusElement(), -1);
11061    if (element.hasRequest())
11062      composeReference(t, "PaymentNotice", "request", element.getRequest(), -1);
11063    if (element.hasResponse())
11064      composeReference(t, "PaymentNotice", "response", element.getResponse(), -1);
11065    if (element.hasStatusDateElement())
11066      composeDate(t, "PaymentNotice", "statusDate", element.getStatusDateElement(), -1);
11067    if (element.hasCreatedElement())
11068      composeDateTime(t, "PaymentNotice", "created", element.getCreatedElement(), -1);
11069    if (element.hasTarget())
11070      composeReference(t, "PaymentNotice", "target", element.getTarget(), -1);
11071    if (element.hasProvider())
11072      composeReference(t, "PaymentNotice", "provider", element.getProvider(), -1);
11073    if (element.hasPaymentStatus())
11074      composeCodeableConcept(t, "PaymentNotice", "paymentStatus", element.getPaymentStatus(), -1);
11075  }
11076
11077  protected void composePaymentReconciliation(Complex parent, String parentType, String name, PaymentReconciliation element, int index) {
11078    if (element == null) 
11079      return;
11080    Complex t;
11081    if (Utilities.noString(parentType))
11082      t = parent;
11083    else {
11084      t = parent.predicate("fhir:"+parentType+'.'+name);
11085    }
11086    composeDomainResource(t, "PaymentReconciliation", name, element, index);
11087    for (int i = 0; i < element.getIdentifier().size(); i++)
11088      composeIdentifier(t, "PaymentReconciliation", "identifier", element.getIdentifier().get(i), i);
11089    if (element.hasStatusElement())
11090      composeEnum(t, "PaymentReconciliation", "status", element.getStatusElement(), -1);
11091    if (element.hasPeriod())
11092      composePeriod(t, "PaymentReconciliation", "period", element.getPeriod(), -1);
11093    if (element.hasCreatedElement())
11094      composeDateTime(t, "PaymentReconciliation", "created", element.getCreatedElement(), -1);
11095    if (element.hasOrganization())
11096      composeReference(t, "PaymentReconciliation", "organization", element.getOrganization(), -1);
11097    if (element.hasRequest())
11098      composeReference(t, "PaymentReconciliation", "request", element.getRequest(), -1);
11099    if (element.hasOutcomeElement())
11100      composeEnum(t, "PaymentReconciliation", "outcome", element.getOutcomeElement(), -1);
11101    if (element.hasDispositionElement())
11102      composeString(t, "PaymentReconciliation", "disposition", element.getDispositionElement(), -1);
11103    if (element.hasRequestProvider())
11104      composeReference(t, "PaymentReconciliation", "requestProvider", element.getRequestProvider(), -1);
11105    for (int i = 0; i < element.getDetail().size(); i++)
11106      composePaymentReconciliationDetailsComponent(t, "PaymentReconciliation", "detail", element.getDetail().get(i), i);
11107    if (element.hasForm())
11108      composeCodeableConcept(t, "PaymentReconciliation", "form", element.getForm(), -1);
11109    if (element.hasTotal())
11110      composeMoney(t, "PaymentReconciliation", "total", element.getTotal(), -1);
11111    for (int i = 0; i < element.getProcessNote().size(); i++)
11112      composePaymentReconciliationNotesComponent(t, "PaymentReconciliation", "processNote", element.getProcessNote().get(i), i);
11113  }
11114
11115  protected void composePaymentReconciliationDetailsComponent(Complex parent, String parentType, String name, PaymentReconciliation.DetailsComponent element, int index) {
11116    if (element == null) 
11117      return;
11118    Complex t;
11119    if (Utilities.noString(parentType))
11120      t = parent;
11121    else {
11122      t = parent.predicate("fhir:"+parentType+'.'+name);
11123    }
11124    composeBackboneElement(t, "detail", name, element, index);
11125    if (element.hasType())
11126      composeCodeableConcept(t, "PaymentReconciliation", "type", element.getType(), -1);
11127    if (element.hasRequest())
11128      composeReference(t, "PaymentReconciliation", "request", element.getRequest(), -1);
11129    if (element.hasResponse())
11130      composeReference(t, "PaymentReconciliation", "response", element.getResponse(), -1);
11131    if (element.hasSubmitter())
11132      composeReference(t, "PaymentReconciliation", "submitter", element.getSubmitter(), -1);
11133    if (element.hasPayee())
11134      composeReference(t, "PaymentReconciliation", "payee", element.getPayee(), -1);
11135    if (element.hasDateElement())
11136      composeDate(t, "PaymentReconciliation", "date", element.getDateElement(), -1);
11137    if (element.hasAmount())
11138      composeMoney(t, "PaymentReconciliation", "amount", element.getAmount(), -1);
11139  }
11140
11141  protected void composePaymentReconciliationNotesComponent(Complex parent, String parentType, String name, PaymentReconciliation.NotesComponent element, int index) {
11142    if (element == null) 
11143      return;
11144    Complex t;
11145    if (Utilities.noString(parentType))
11146      t = parent;
11147    else {
11148      t = parent.predicate("fhir:"+parentType+'.'+name);
11149    }
11150    composeBackboneElement(t, "processNote", name, element, index);
11151    if (element.hasTypeElement())
11152      composeEnum(t, "PaymentReconciliation", "type", element.getTypeElement(), -1);
11153    if (element.hasTextElement())
11154      composeString(t, "PaymentReconciliation", "text", element.getTextElement(), -1);
11155  }
11156
11157  protected void composePerson(Complex parent, String parentType, String name, Person element, int index) {
11158    if (element == null) 
11159      return;
11160    Complex t;
11161    if (Utilities.noString(parentType))
11162      t = parent;
11163    else {
11164      t = parent.predicate("fhir:"+parentType+'.'+name);
11165    }
11166    composeDomainResource(t, "Person", name, element, index);
11167    for (int i = 0; i < element.getIdentifier().size(); i++)
11168      composeIdentifier(t, "Person", "identifier", element.getIdentifier().get(i), i);
11169    for (int i = 0; i < element.getName().size(); i++)
11170      composeHumanName(t, "Person", "name", element.getName().get(i), i);
11171    for (int i = 0; i < element.getTelecom().size(); i++)
11172      composeContactPoint(t, "Person", "telecom", element.getTelecom().get(i), i);
11173    if (element.hasGenderElement())
11174      composeEnum(t, "Person", "gender", element.getGenderElement(), -1);
11175    if (element.hasBirthDateElement())
11176      composeDate(t, "Person", "birthDate", element.getBirthDateElement(), -1);
11177    for (int i = 0; i < element.getAddress().size(); i++)
11178      composeAddress(t, "Person", "address", element.getAddress().get(i), i);
11179    if (element.hasPhoto())
11180      composeAttachment(t, "Person", "photo", element.getPhoto(), -1);
11181    if (element.hasManagingOrganization())
11182      composeReference(t, "Person", "managingOrganization", element.getManagingOrganization(), -1);
11183    if (element.hasActiveElement())
11184      composeBoolean(t, "Person", "active", element.getActiveElement(), -1);
11185    for (int i = 0; i < element.getLink().size(); i++)
11186      composePersonPersonLinkComponent(t, "Person", "link", element.getLink().get(i), i);
11187  }
11188
11189  protected void composePersonPersonLinkComponent(Complex parent, String parentType, String name, Person.PersonLinkComponent element, int index) {
11190    if (element == null) 
11191      return;
11192    Complex t;
11193    if (Utilities.noString(parentType))
11194      t = parent;
11195    else {
11196      t = parent.predicate("fhir:"+parentType+'.'+name);
11197    }
11198    composeBackboneElement(t, "link", name, element, index);
11199    if (element.hasTarget())
11200      composeReference(t, "Person", "target", element.getTarget(), -1);
11201    if (element.hasAssuranceElement())
11202      composeEnum(t, "Person", "assurance", element.getAssuranceElement(), -1);
11203  }
11204
11205  protected void composePlanDefinition(Complex parent, String parentType, String name, PlanDefinition element, int index) {
11206    if (element == null) 
11207      return;
11208    Complex t;
11209    if (Utilities.noString(parentType))
11210      t = parent;
11211    else {
11212      t = parent.predicate("fhir:"+parentType+'.'+name);
11213    }
11214    composeDomainResource(t, "PlanDefinition", name, element, index);
11215    if (element.hasUrlElement())
11216      composeUri(t, "PlanDefinition", "url", element.getUrlElement(), -1);
11217    for (int i = 0; i < element.getIdentifier().size(); i++)
11218      composeIdentifier(t, "PlanDefinition", "identifier", element.getIdentifier().get(i), i);
11219    if (element.hasVersionElement())
11220      composeString(t, "PlanDefinition", "version", element.getVersionElement(), -1);
11221    if (element.hasNameElement())
11222      composeString(t, "PlanDefinition", "name", element.getNameElement(), -1);
11223    if (element.hasTitleElement())
11224      composeString(t, "PlanDefinition", "title", element.getTitleElement(), -1);
11225    if (element.hasSubtitleElement())
11226      composeString(t, "PlanDefinition", "subtitle", element.getSubtitleElement(), -1);
11227    if (element.hasType())
11228      composeCodeableConcept(t, "PlanDefinition", "type", element.getType(), -1);
11229    if (element.hasStatusElement())
11230      composeEnum(t, "PlanDefinition", "status", element.getStatusElement(), -1);
11231    if (element.hasExperimentalElement())
11232      composeBoolean(t, "PlanDefinition", "experimental", element.getExperimentalElement(), -1);
11233    if (element.hasSubject())
11234      composeType(t, "PlanDefinition", "subject", element.getSubject(), -1);
11235    if (element.hasDateElement())
11236      composeDateTime(t, "PlanDefinition", "date", element.getDateElement(), -1);
11237    if (element.hasPublisherElement())
11238      composeString(t, "PlanDefinition", "publisher", element.getPublisherElement(), -1);
11239    for (int i = 0; i < element.getContact().size(); i++)
11240      composeContactDetail(t, "PlanDefinition", "contact", element.getContact().get(i), i);
11241    if (element.hasDescriptionElement())
11242      composeMarkdown(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
11243    for (int i = 0; i < element.getUseContext().size(); i++)
11244      composeUsageContext(t, "PlanDefinition", "useContext", element.getUseContext().get(i), i);
11245    for (int i = 0; i < element.getJurisdiction().size(); i++)
11246      composeCodeableConcept(t, "PlanDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
11247    if (element.hasPurposeElement())
11248      composeMarkdown(t, "PlanDefinition", "purpose", element.getPurposeElement(), -1);
11249    if (element.hasUsageElement())
11250      composeString(t, "PlanDefinition", "usage", element.getUsageElement(), -1);
11251    if (element.hasCopyrightElement())
11252      composeMarkdown(t, "PlanDefinition", "copyright", element.getCopyrightElement(), -1);
11253    if (element.hasApprovalDateElement())
11254      composeDate(t, "PlanDefinition", "approvalDate", element.getApprovalDateElement(), -1);
11255    if (element.hasLastReviewDateElement())
11256      composeDate(t, "PlanDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
11257    if (element.hasEffectivePeriod())
11258      composePeriod(t, "PlanDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
11259    for (int i = 0; i < element.getTopic().size(); i++)
11260      composeCodeableConcept(t, "PlanDefinition", "topic", element.getTopic().get(i), i);
11261    for (int i = 0; i < element.getContributor().size(); i++)
11262      composeContributor(t, "PlanDefinition", "contributor", element.getContributor().get(i), i);
11263    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
11264      composeRelatedArtifact(t, "PlanDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
11265    for (int i = 0; i < element.getLibrary().size(); i++)
11266      composeCanonical(t, "PlanDefinition", "library", element.getLibrary().get(i), i);
11267    for (int i = 0; i < element.getGoal().size(); i++)
11268      composePlanDefinitionPlanDefinitionGoalComponent(t, "PlanDefinition", "goal", element.getGoal().get(i), i);
11269    for (int i = 0; i < element.getAction().size(); i++)
11270      composePlanDefinitionPlanDefinitionActionComponent(t, "PlanDefinition", "action", element.getAction().get(i), i);
11271  }
11272
11273  protected void composePlanDefinitionPlanDefinitionGoalComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionGoalComponent element, int index) {
11274    if (element == null) 
11275      return;
11276    Complex t;
11277    if (Utilities.noString(parentType))
11278      t = parent;
11279    else {
11280      t = parent.predicate("fhir:"+parentType+'.'+name);
11281    }
11282    composeBackboneElement(t, "goal", name, element, index);
11283    if (element.hasCategory())
11284      composeCodeableConcept(t, "PlanDefinition", "category", element.getCategory(), -1);
11285    if (element.hasDescription())
11286      composeCodeableConcept(t, "PlanDefinition", "description", element.getDescription(), -1);
11287    if (element.hasPriority())
11288      composeCodeableConcept(t, "PlanDefinition", "priority", element.getPriority(), -1);
11289    if (element.hasStart())
11290      composeCodeableConcept(t, "PlanDefinition", "start", element.getStart(), -1);
11291    for (int i = 0; i < element.getAddresses().size(); i++)
11292      composeCodeableConcept(t, "PlanDefinition", "addresses", element.getAddresses().get(i), i);
11293    for (int i = 0; i < element.getDocumentation().size(); i++)
11294      composeRelatedArtifact(t, "PlanDefinition", "documentation", element.getDocumentation().get(i), i);
11295    for (int i = 0; i < element.getTarget().size(); i++)
11296      composePlanDefinitionPlanDefinitionGoalTargetComponent(t, "PlanDefinition", "target", element.getTarget().get(i), i);
11297  }
11298
11299  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionGoalTargetComponent element, int index) {
11300    if (element == null) 
11301      return;
11302    Complex t;
11303    if (Utilities.noString(parentType))
11304      t = parent;
11305    else {
11306      t = parent.predicate("fhir:"+parentType+'.'+name);
11307    }
11308    composeBackboneElement(t, "target", name, element, index);
11309    if (element.hasMeasure())
11310      composeCodeableConcept(t, "PlanDefinition", "measure", element.getMeasure(), -1);
11311    if (element.hasDetail())
11312      composeType(t, "PlanDefinition", "detail", element.getDetail(), -1);
11313    if (element.hasDue())
11314      composeDuration(t, "PlanDefinition", "due", element.getDue(), -1);
11315  }
11316
11317  protected void composePlanDefinitionPlanDefinitionActionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionComponent element, int index) {
11318    if (element == null) 
11319      return;
11320    Complex t;
11321    if (Utilities.noString(parentType))
11322      t = parent;
11323    else {
11324      t = parent.predicate("fhir:"+parentType+'.'+name);
11325    }
11326    composeBackboneElement(t, "action", name, element, index);
11327    if (element.hasPrefixElement())
11328      composeString(t, "PlanDefinition", "prefix", element.getPrefixElement(), -1);
11329    if (element.hasTitleElement())
11330      composeString(t, "PlanDefinition", "title", element.getTitleElement(), -1);
11331    if (element.hasDescriptionElement())
11332      composeString(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
11333    if (element.hasTextEquivalentElement())
11334      composeString(t, "PlanDefinition", "textEquivalent", element.getTextEquivalentElement(), -1);
11335    for (int i = 0; i < element.getCode().size(); i++)
11336      composeCodeableConcept(t, "PlanDefinition", "code", element.getCode().get(i), i);
11337    for (int i = 0; i < element.getReason().size(); i++)
11338      composeCodeableConcept(t, "PlanDefinition", "reason", element.getReason().get(i), i);
11339    for (int i = 0; i < element.getDocumentation().size(); i++)
11340      composeRelatedArtifact(t, "PlanDefinition", "documentation", element.getDocumentation().get(i), i);
11341    for (int i = 0; i < element.getGoalId().size(); i++)
11342      composeId(t, "PlanDefinition", "goalId", element.getGoalId().get(i), i);
11343    for (int i = 0; i < element.getTrigger().size(); i++)
11344      composeTriggerDefinition(t, "PlanDefinition", "trigger", element.getTrigger().get(i), i);
11345    for (int i = 0; i < element.getCondition().size(); i++)
11346      composePlanDefinitionPlanDefinitionActionConditionComponent(t, "PlanDefinition", "condition", element.getCondition().get(i), i);
11347    for (int i = 0; i < element.getInput().size(); i++)
11348      composeDataRequirement(t, "PlanDefinition", "input", element.getInput().get(i), i);
11349    for (int i = 0; i < element.getOutput().size(); i++)
11350      composeDataRequirement(t, "PlanDefinition", "output", element.getOutput().get(i), i);
11351    for (int i = 0; i < element.getRelatedAction().size(); i++)
11352      composePlanDefinitionPlanDefinitionActionRelatedActionComponent(t, "PlanDefinition", "relatedAction", element.getRelatedAction().get(i), i);
11353    if (element.hasTiming())
11354      composeType(t, "PlanDefinition", "timing", element.getTiming(), -1);
11355    for (int i = 0; i < element.getParticipant().size(); i++)
11356      composePlanDefinitionPlanDefinitionActionParticipantComponent(t, "PlanDefinition", "participant", element.getParticipant().get(i), i);
11357    if (element.hasType())
11358      composeCodeableConcept(t, "PlanDefinition", "type", element.getType(), -1);
11359    if (element.hasGroupingBehaviorElement())
11360      composeEnum(t, "PlanDefinition", "groupingBehavior", element.getGroupingBehaviorElement(), -1);
11361    if (element.hasSelectionBehaviorElement())
11362      composeEnum(t, "PlanDefinition", "selectionBehavior", element.getSelectionBehaviorElement(), -1);
11363    if (element.hasRequiredBehaviorElement())
11364      composeEnum(t, "PlanDefinition", "requiredBehavior", element.getRequiredBehaviorElement(), -1);
11365    if (element.hasPrecheckBehaviorElement())
11366      composeEnum(t, "PlanDefinition", "precheckBehavior", element.getPrecheckBehaviorElement(), -1);
11367    if (element.hasCardinalityBehaviorElement())
11368      composeEnum(t, "PlanDefinition", "cardinalityBehavior", element.getCardinalityBehaviorElement(), -1);
11369    if (element.hasDefinitionElement())
11370      composeCanonical(t, "PlanDefinition", "definition", element.getDefinitionElement(), -1);
11371    if (element.hasTransformElement())
11372      composeCanonical(t, "PlanDefinition", "transform", element.getTransformElement(), -1);
11373    for (int i = 0; i < element.getDynamicValue().size(); i++)
11374      composePlanDefinitionPlanDefinitionActionDynamicValueComponent(t, "PlanDefinition", "dynamicValue", element.getDynamicValue().get(i), i);
11375    for (int i = 0; i < element.getAction().size(); i++)
11376      composePlanDefinitionPlanDefinitionActionComponent(t, "PlanDefinition", "action", element.getAction().get(i), i);
11377  }
11378
11379  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionConditionComponent element, int index) {
11380    if (element == null) 
11381      return;
11382    Complex t;
11383    if (Utilities.noString(parentType))
11384      t = parent;
11385    else {
11386      t = parent.predicate("fhir:"+parentType+'.'+name);
11387    }
11388    composeBackboneElement(t, "condition", name, element, index);
11389    if (element.hasKindElement())
11390      composeEnum(t, "PlanDefinition", "kind", element.getKindElement(), -1);
11391    if (element.hasDescriptionElement())
11392      composeString(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
11393    if (element.hasLanguageElement())
11394      composeString(t, "PlanDefinition", "language", element.getLanguageElement(), -1);
11395    if (element.hasExpressionElement())
11396      composeString(t, "PlanDefinition", "expression", element.getExpressionElement(), -1);
11397  }
11398
11399  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element, int index) {
11400    if (element == null) 
11401      return;
11402    Complex t;
11403    if (Utilities.noString(parentType))
11404      t = parent;
11405    else {
11406      t = parent.predicate("fhir:"+parentType+'.'+name);
11407    }
11408    composeBackboneElement(t, "relatedAction", name, element, index);
11409    if (element.hasActionIdElement())
11410      composeId(t, "PlanDefinition", "actionId", element.getActionIdElement(), -1);
11411    if (element.hasRelationshipElement())
11412      composeEnum(t, "PlanDefinition", "relationship", element.getRelationshipElement(), -1);
11413    if (element.hasOffset())
11414      composeType(t, "PlanDefinition", "offset", element.getOffset(), -1);
11415  }
11416
11417  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionParticipantComponent element, int index) {
11418    if (element == null) 
11419      return;
11420    Complex t;
11421    if (Utilities.noString(parentType))
11422      t = parent;
11423    else {
11424      t = parent.predicate("fhir:"+parentType+'.'+name);
11425    }
11426    composeBackboneElement(t, "participant", name, element, index);
11427    if (element.hasTypeElement())
11428      composeEnum(t, "PlanDefinition", "type", element.getTypeElement(), -1);
11429    if (element.hasRole())
11430      composeCodeableConcept(t, "PlanDefinition", "role", element.getRole(), -1);
11431  }
11432
11433  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element, int index) {
11434    if (element == null) 
11435      return;
11436    Complex t;
11437    if (Utilities.noString(parentType))
11438      t = parent;
11439    else {
11440      t = parent.predicate("fhir:"+parentType+'.'+name);
11441    }
11442    composeBackboneElement(t, "dynamicValue", name, element, index);
11443    if (element.hasDescriptionElement())
11444      composeString(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
11445    if (element.hasPathElement())
11446      composeString(t, "PlanDefinition", "path", element.getPathElement(), -1);
11447    if (element.hasLanguageElement())
11448      composeString(t, "PlanDefinition", "language", element.getLanguageElement(), -1);
11449    if (element.hasExpressionElement())
11450      composeString(t, "PlanDefinition", "expression", element.getExpressionElement(), -1);
11451  }
11452
11453  protected void composePractitioner(Complex parent, String parentType, String name, Practitioner element, int index) {
11454    if (element == null) 
11455      return;
11456    Complex t;
11457    if (Utilities.noString(parentType))
11458      t = parent;
11459    else {
11460      t = parent.predicate("fhir:"+parentType+'.'+name);
11461    }
11462    composeDomainResource(t, "Practitioner", name, element, index);
11463    for (int i = 0; i < element.getIdentifier().size(); i++)
11464      composeIdentifier(t, "Practitioner", "identifier", element.getIdentifier().get(i), i);
11465    if (element.hasActiveElement())
11466      composeBoolean(t, "Practitioner", "active", element.getActiveElement(), -1);
11467    for (int i = 0; i < element.getName().size(); i++)
11468      composeHumanName(t, "Practitioner", "name", element.getName().get(i), i);
11469    for (int i = 0; i < element.getTelecom().size(); i++)
11470      composeContactPoint(t, "Practitioner", "telecom", element.getTelecom().get(i), i);
11471    for (int i = 0; i < element.getAddress().size(); i++)
11472      composeAddress(t, "Practitioner", "address", element.getAddress().get(i), i);
11473    if (element.hasGenderElement())
11474      composeEnum(t, "Practitioner", "gender", element.getGenderElement(), -1);
11475    if (element.hasBirthDateElement())
11476      composeDate(t, "Practitioner", "birthDate", element.getBirthDateElement(), -1);
11477    for (int i = 0; i < element.getPhoto().size(); i++)
11478      composeAttachment(t, "Practitioner", "photo", element.getPhoto().get(i), i);
11479    for (int i = 0; i < element.getQualification().size(); i++)
11480      composePractitionerPractitionerQualificationComponent(t, "Practitioner", "qualification", element.getQualification().get(i), i);
11481    for (int i = 0; i < element.getCommunication().size(); i++)
11482      composeCodeableConcept(t, "Practitioner", "communication", element.getCommunication().get(i), i);
11483  }
11484
11485  protected void composePractitionerPractitionerQualificationComponent(Complex parent, String parentType, String name, Practitioner.PractitionerQualificationComponent element, int index) {
11486    if (element == null) 
11487      return;
11488    Complex t;
11489    if (Utilities.noString(parentType))
11490      t = parent;
11491    else {
11492      t = parent.predicate("fhir:"+parentType+'.'+name);
11493    }
11494    composeBackboneElement(t, "qualification", name, element, index);
11495    for (int i = 0; i < element.getIdentifier().size(); i++)
11496      composeIdentifier(t, "Practitioner", "identifier", element.getIdentifier().get(i), i);
11497    if (element.hasCode())
11498      composeCodeableConcept(t, "Practitioner", "code", element.getCode(), -1);
11499    if (element.hasPeriod())
11500      composePeriod(t, "Practitioner", "period", element.getPeriod(), -1);
11501    if (element.hasIssuer())
11502      composeReference(t, "Practitioner", "issuer", element.getIssuer(), -1);
11503  }
11504
11505  protected void composePractitionerRole(Complex parent, String parentType, String name, PractitionerRole element, int index) {
11506    if (element == null) 
11507      return;
11508    Complex t;
11509    if (Utilities.noString(parentType))
11510      t = parent;
11511    else {
11512      t = parent.predicate("fhir:"+parentType+'.'+name);
11513    }
11514    composeDomainResource(t, "PractitionerRole", name, element, index);
11515    for (int i = 0; i < element.getIdentifier().size(); i++)
11516      composeIdentifier(t, "PractitionerRole", "identifier", element.getIdentifier().get(i), i);
11517    if (element.hasActiveElement())
11518      composeBoolean(t, "PractitionerRole", "active", element.getActiveElement(), -1);
11519    if (element.hasPeriod())
11520      composePeriod(t, "PractitionerRole", "period", element.getPeriod(), -1);
11521    if (element.hasPractitioner())
11522      composeReference(t, "PractitionerRole", "practitioner", element.getPractitioner(), -1);
11523    if (element.hasOrganization())
11524      composeReference(t, "PractitionerRole", "organization", element.getOrganization(), -1);
11525    for (int i = 0; i < element.getCode().size(); i++)
11526      composeCodeableConcept(t, "PractitionerRole", "code", element.getCode().get(i), i);
11527    for (int i = 0; i < element.getSpecialty().size(); i++)
11528      composeCodeableConcept(t, "PractitionerRole", "specialty", element.getSpecialty().get(i), i);
11529    for (int i = 0; i < element.getLocation().size(); i++)
11530      composeReference(t, "PractitionerRole", "location", element.getLocation().get(i), i);
11531    for (int i = 0; i < element.getHealthcareService().size(); i++)
11532      composeReference(t, "PractitionerRole", "healthcareService", element.getHealthcareService().get(i), i);
11533    for (int i = 0; i < element.getTelecom().size(); i++)
11534      composeContactPoint(t, "PractitionerRole", "telecom", element.getTelecom().get(i), i);
11535    for (int i = 0; i < element.getAvailableTime().size(); i++)
11536      composePractitionerRolePractitionerRoleAvailableTimeComponent(t, "PractitionerRole", "availableTime", element.getAvailableTime().get(i), i);
11537    for (int i = 0; i < element.getNotAvailable().size(); i++)
11538      composePractitionerRolePractitionerRoleNotAvailableComponent(t, "PractitionerRole", "notAvailable", element.getNotAvailable().get(i), i);
11539    if (element.hasAvailabilityExceptionsElement())
11540      composeString(t, "PractitionerRole", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
11541    for (int i = 0; i < element.getEndpoint().size(); i++)
11542      composeReference(t, "PractitionerRole", "endpoint", element.getEndpoint().get(i), i);
11543  }
11544
11545  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(Complex parent, String parentType, String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element, int index) {
11546    if (element == null) 
11547      return;
11548    Complex t;
11549    if (Utilities.noString(parentType))
11550      t = parent;
11551    else {
11552      t = parent.predicate("fhir:"+parentType+'.'+name);
11553    }
11554    composeBackboneElement(t, "availableTime", name, element, index);
11555    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
11556      composeEnum(t, "PractitionerRole", "daysOfWeek", element.getDaysOfWeek().get(i), i);
11557    if (element.hasAllDayElement())
11558      composeBoolean(t, "PractitionerRole", "allDay", element.getAllDayElement(), -1);
11559    if (element.hasAvailableStartTimeElement())
11560      composeTime(t, "PractitionerRole", "availableStartTime", element.getAvailableStartTimeElement(), -1);
11561    if (element.hasAvailableEndTimeElement())
11562      composeTime(t, "PractitionerRole", "availableEndTime", element.getAvailableEndTimeElement(), -1);
11563  }
11564
11565  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(Complex parent, String parentType, String name, PractitionerRole.PractitionerRoleNotAvailableComponent element, int index) {
11566    if (element == null) 
11567      return;
11568    Complex t;
11569    if (Utilities.noString(parentType))
11570      t = parent;
11571    else {
11572      t = parent.predicate("fhir:"+parentType+'.'+name);
11573    }
11574    composeBackboneElement(t, "notAvailable", name, element, index);
11575    if (element.hasDescriptionElement())
11576      composeString(t, "PractitionerRole", "description", element.getDescriptionElement(), -1);
11577    if (element.hasDuring())
11578      composePeriod(t, "PractitionerRole", "during", element.getDuring(), -1);
11579  }
11580
11581  protected void composeProcedure(Complex parent, String parentType, String name, Procedure element, int index) {
11582    if (element == null) 
11583      return;
11584    Complex t;
11585    if (Utilities.noString(parentType))
11586      t = parent;
11587    else {
11588      t = parent.predicate("fhir:"+parentType+'.'+name);
11589    }
11590    composeDomainResource(t, "Procedure", name, element, index);
11591    for (int i = 0; i < element.getIdentifier().size(); i++)
11592      composeIdentifier(t, "Procedure", "identifier", element.getIdentifier().get(i), i);
11593    for (int i = 0; i < element.getInstantiates().size(); i++)
11594      composeUri(t, "Procedure", "instantiates", element.getInstantiates().get(i), i);
11595    for (int i = 0; i < element.getBasedOn().size(); i++)
11596      composeReference(t, "Procedure", "basedOn", element.getBasedOn().get(i), i);
11597    for (int i = 0; i < element.getPartOf().size(); i++)
11598      composeReference(t, "Procedure", "partOf", element.getPartOf().get(i), i);
11599    if (element.hasStatusElement())
11600      composeEnum(t, "Procedure", "status", element.getStatusElement(), -1);
11601    if (element.hasStatusReason())
11602      composeCodeableConcept(t, "Procedure", "statusReason", element.getStatusReason(), -1);
11603    if (element.hasCategory())
11604      composeCodeableConcept(t, "Procedure", "category", element.getCategory(), -1);
11605    if (element.hasCode())
11606      composeCodeableConcept(t, "Procedure", "code", element.getCode(), -1);
11607    if (element.hasSubject())
11608      composeReference(t, "Procedure", "subject", element.getSubject(), -1);
11609    if (element.hasContext())
11610      composeReference(t, "Procedure", "context", element.getContext(), -1);
11611    if (element.hasPerformed())
11612      composeType(t, "Procedure", "performed", element.getPerformed(), -1);
11613    if (element.hasRecorder())
11614      composeReference(t, "Procedure", "recorder", element.getRecorder(), -1);
11615    if (element.hasAsserter())
11616      composeReference(t, "Procedure", "asserter", element.getAsserter(), -1);
11617    for (int i = 0; i < element.getPerformer().size(); i++)
11618      composeProcedureProcedurePerformerComponent(t, "Procedure", "performer", element.getPerformer().get(i), i);
11619    if (element.hasLocation())
11620      composeReference(t, "Procedure", "location", element.getLocation(), -1);
11621    for (int i = 0; i < element.getReasonCode().size(); i++)
11622      composeCodeableConcept(t, "Procedure", "reasonCode", element.getReasonCode().get(i), i);
11623    for (int i = 0; i < element.getReasonReference().size(); i++)
11624      composeReference(t, "Procedure", "reasonReference", element.getReasonReference().get(i), i);
11625    for (int i = 0; i < element.getBodySite().size(); i++)
11626      composeCodeableConcept(t, "Procedure", "bodySite", element.getBodySite().get(i), i);
11627    if (element.hasOutcome())
11628      composeCodeableConcept(t, "Procedure", "outcome", element.getOutcome(), -1);
11629    for (int i = 0; i < element.getReport().size(); i++)
11630      composeReference(t, "Procedure", "report", element.getReport().get(i), i);
11631    for (int i = 0; i < element.getComplication().size(); i++)
11632      composeCodeableConcept(t, "Procedure", "complication", element.getComplication().get(i), i);
11633    for (int i = 0; i < element.getComplicationDetail().size(); i++)
11634      composeReference(t, "Procedure", "complicationDetail", element.getComplicationDetail().get(i), i);
11635    for (int i = 0; i < element.getFollowUp().size(); i++)
11636      composeCodeableConcept(t, "Procedure", "followUp", element.getFollowUp().get(i), i);
11637    for (int i = 0; i < element.getNote().size(); i++)
11638      composeAnnotation(t, "Procedure", "note", element.getNote().get(i), i);
11639    for (int i = 0; i < element.getFocalDevice().size(); i++)
11640      composeProcedureProcedureFocalDeviceComponent(t, "Procedure", "focalDevice", element.getFocalDevice().get(i), i);
11641    for (int i = 0; i < element.getUsedReference().size(); i++)
11642      composeReference(t, "Procedure", "usedReference", element.getUsedReference().get(i), i);
11643    for (int i = 0; i < element.getUsedCode().size(); i++)
11644      composeCodeableConcept(t, "Procedure", "usedCode", element.getUsedCode().get(i), i);
11645  }
11646
11647  protected void composeProcedureProcedurePerformerComponent(Complex parent, String parentType, String name, Procedure.ProcedurePerformerComponent element, int index) {
11648    if (element == null) 
11649      return;
11650    Complex t;
11651    if (Utilities.noString(parentType))
11652      t = parent;
11653    else {
11654      t = parent.predicate("fhir:"+parentType+'.'+name);
11655    }
11656    composeBackboneElement(t, "performer", name, element, index);
11657    if (element.hasRole())
11658      composeCodeableConcept(t, "Procedure", "role", element.getRole(), -1);
11659    if (element.hasActor())
11660      composeReference(t, "Procedure", "actor", element.getActor(), -1);
11661    if (element.hasOnBehalfOf())
11662      composeReference(t, "Procedure", "onBehalfOf", element.getOnBehalfOf(), -1);
11663  }
11664
11665  protected void composeProcedureProcedureFocalDeviceComponent(Complex parent, String parentType, String name, Procedure.ProcedureFocalDeviceComponent element, int index) {
11666    if (element == null) 
11667      return;
11668    Complex t;
11669    if (Utilities.noString(parentType))
11670      t = parent;
11671    else {
11672      t = parent.predicate("fhir:"+parentType+'.'+name);
11673    }
11674    composeBackboneElement(t, "focalDevice", name, element, index);
11675    if (element.hasAction())
11676      composeCodeableConcept(t, "Procedure", "action", element.getAction(), -1);
11677    if (element.hasManipulated())
11678      composeReference(t, "Procedure", "manipulated", element.getManipulated(), -1);
11679  }
11680
11681  protected void composeProcessRequest(Complex parent, String parentType, String name, ProcessRequest element, int index) {
11682    if (element == null) 
11683      return;
11684    Complex t;
11685    if (Utilities.noString(parentType))
11686      t = parent;
11687    else {
11688      t = parent.predicate("fhir:"+parentType+'.'+name);
11689    }
11690    composeDomainResource(t, "ProcessRequest", name, element, index);
11691    for (int i = 0; i < element.getIdentifier().size(); i++)
11692      composeIdentifier(t, "ProcessRequest", "identifier", element.getIdentifier().get(i), i);
11693    if (element.hasStatusElement())
11694      composeEnum(t, "ProcessRequest", "status", element.getStatusElement(), -1);
11695    if (element.hasActionElement())
11696      composeEnum(t, "ProcessRequest", "action", element.getActionElement(), -1);
11697    if (element.hasTarget())
11698      composeReference(t, "ProcessRequest", "target", element.getTarget(), -1);
11699    if (element.hasCreatedElement())
11700      composeDateTime(t, "ProcessRequest", "created", element.getCreatedElement(), -1);
11701    if (element.hasProvider())
11702      composeReference(t, "ProcessRequest", "provider", element.getProvider(), -1);
11703    if (element.hasRequest())
11704      composeReference(t, "ProcessRequest", "request", element.getRequest(), -1);
11705    if (element.hasResponse())
11706      composeReference(t, "ProcessRequest", "response", element.getResponse(), -1);
11707    if (element.hasNullifyElement())
11708      composeBoolean(t, "ProcessRequest", "nullify", element.getNullifyElement(), -1);
11709    if (element.hasReferenceElement())
11710      composeString(t, "ProcessRequest", "reference", element.getReferenceElement(), -1);
11711    for (int i = 0; i < element.getItem().size(); i++)
11712      composeProcessRequestItemsComponent(t, "ProcessRequest", "item", element.getItem().get(i), i);
11713    for (int i = 0; i < element.getInclude().size(); i++)
11714      composeString(t, "ProcessRequest", "include", element.getInclude().get(i), i);
11715    for (int i = 0; i < element.getExclude().size(); i++)
11716      composeString(t, "ProcessRequest", "exclude", element.getExclude().get(i), i);
11717    if (element.hasPeriod())
11718      composePeriod(t, "ProcessRequest", "period", element.getPeriod(), -1);
11719  }
11720
11721  protected void composeProcessRequestItemsComponent(Complex parent, String parentType, String name, ProcessRequest.ItemsComponent element, int index) {
11722    if (element == null) 
11723      return;
11724    Complex t;
11725    if (Utilities.noString(parentType))
11726      t = parent;
11727    else {
11728      t = parent.predicate("fhir:"+parentType+'.'+name);
11729    }
11730    composeBackboneElement(t, "item", name, element, index);
11731    if (element.hasSequenceLinkIdElement())
11732      composeInteger(t, "ProcessRequest", "sequenceLinkId", element.getSequenceLinkIdElement(), -1);
11733  }
11734
11735  protected void composeProcessResponse(Complex parent, String parentType, String name, ProcessResponse element, int index) {
11736    if (element == null) 
11737      return;
11738    Complex t;
11739    if (Utilities.noString(parentType))
11740      t = parent;
11741    else {
11742      t = parent.predicate("fhir:"+parentType+'.'+name);
11743    }
11744    composeDomainResource(t, "ProcessResponse", name, element, index);
11745    for (int i = 0; i < element.getIdentifier().size(); i++)
11746      composeIdentifier(t, "ProcessResponse", "identifier", element.getIdentifier().get(i), i);
11747    if (element.hasStatusElement())
11748      composeEnum(t, "ProcessResponse", "status", element.getStatusElement(), -1);
11749    if (element.hasCreatedElement())
11750      composeDateTime(t, "ProcessResponse", "created", element.getCreatedElement(), -1);
11751    if (element.hasOrganization())
11752      composeReference(t, "ProcessResponse", "organization", element.getOrganization(), -1);
11753    if (element.hasRequest())
11754      composeReference(t, "ProcessResponse", "request", element.getRequest(), -1);
11755    if (element.hasOutcomeElement())
11756      composeEnum(t, "ProcessResponse", "outcome", element.getOutcomeElement(), -1);
11757    if (element.hasDispositionElement())
11758      composeString(t, "ProcessResponse", "disposition", element.getDispositionElement(), -1);
11759    if (element.hasRequestProvider())
11760      composeReference(t, "ProcessResponse", "requestProvider", element.getRequestProvider(), -1);
11761    if (element.hasForm())
11762      composeCodeableConcept(t, "ProcessResponse", "form", element.getForm(), -1);
11763    for (int i = 0; i < element.getProcessNote().size(); i++)
11764      composeProcessResponseProcessResponseProcessNoteComponent(t, "ProcessResponse", "processNote", element.getProcessNote().get(i), i);
11765    for (int i = 0; i < element.getError().size(); i++)
11766      composeCodeableConcept(t, "ProcessResponse", "error", element.getError().get(i), i);
11767    for (int i = 0; i < element.getCommunicationRequest().size(); i++)
11768      composeReference(t, "ProcessResponse", "communicationRequest", element.getCommunicationRequest().get(i), i);
11769  }
11770
11771  protected void composeProcessResponseProcessResponseProcessNoteComponent(Complex parent, String parentType, String name, ProcessResponse.ProcessResponseProcessNoteComponent element, int index) {
11772    if (element == null) 
11773      return;
11774    Complex t;
11775    if (Utilities.noString(parentType))
11776      t = parent;
11777    else {
11778      t = parent.predicate("fhir:"+parentType+'.'+name);
11779    }
11780    composeBackboneElement(t, "processNote", name, element, index);
11781    if (element.hasTypeElement())
11782      composeEnum(t, "ProcessResponse", "type", element.getTypeElement(), -1);
11783    if (element.hasTextElement())
11784      composeString(t, "ProcessResponse", "text", element.getTextElement(), -1);
11785  }
11786
11787
11788  protected void composeProductPlanProductPlanContactComponent(Complex parent, String parentType, String name, ProductPlan.ProductPlanContactComponent element, int index) {
11789    if (element == null) 
11790      return;
11791    Complex t;
11792    if (Utilities.noString(parentType))
11793      t = parent;
11794    else {
11795      t = parent.predicate("fhir:"+parentType+'.'+name);
11796    }
11797    composeBackboneElement(t, "contact", name, element, index);
11798    if (element.hasPurpose())
11799      composeCodeableConcept(t, "ProductPlan", "purpose", element.getPurpose(), -1);
11800    if (element.hasName())
11801      composeHumanName(t, "ProductPlan", "name", element.getName(), -1);
11802    for (int i = 0; i < element.getTelecom().size(); i++)
11803      composeContactPoint(t, "ProductPlan", "telecom", element.getTelecom().get(i), i);
11804    if (element.hasAddress())
11805      composeAddress(t, "ProductPlan", "address", element.getAddress(), -1);
11806  }
11807
11808
11809  protected void composeProvenance(Complex parent, String parentType, String name, Provenance element, int index) {
11810    if (element == null) 
11811      return;
11812    Complex t;
11813    if (Utilities.noString(parentType))
11814      t = parent;
11815    else {
11816      t = parent.predicate("fhir:"+parentType+'.'+name);
11817    }
11818    composeDomainResource(t, "Provenance", name, element, index);
11819    for (int i = 0; i < element.getTarget().size(); i++)
11820      composeReference(t, "Provenance", "target", element.getTarget().get(i), i);
11821    if (element.hasOccurred())
11822      composeType(t, "Provenance", "occurred", element.getOccurred(), -1);
11823    if (element.hasRecordedElement())
11824      composeInstant(t, "Provenance", "recorded", element.getRecordedElement(), -1);
11825    for (int i = 0; i < element.getPolicy().size(); i++)
11826      composeUri(t, "Provenance", "policy", element.getPolicy().get(i), i);
11827    if (element.hasLocation())
11828      composeReference(t, "Provenance", "location", element.getLocation(), -1);
11829    for (int i = 0; i < element.getReason().size(); i++)
11830      composeCodeableConcept(t, "Provenance", "reason", element.getReason().get(i), i);
11831    if (element.hasActivity())
11832      composeCodeableConcept(t, "Provenance", "activity", element.getActivity(), -1);
11833    for (int i = 0; i < element.getAgent().size(); i++)
11834      composeProvenanceProvenanceAgentComponent(t, "Provenance", "agent", element.getAgent().get(i), i);
11835    for (int i = 0; i < element.getEntity().size(); i++)
11836      composeProvenanceProvenanceEntityComponent(t, "Provenance", "entity", element.getEntity().get(i), i);
11837    for (int i = 0; i < element.getSignature().size(); i++)
11838      composeSignature(t, "Provenance", "signature", element.getSignature().get(i), i);
11839  }
11840
11841  protected void composeProvenanceProvenanceAgentComponent(Complex parent, String parentType, String name, Provenance.ProvenanceAgentComponent element, int index) {
11842    if (element == null) 
11843      return;
11844    Complex t;
11845    if (Utilities.noString(parentType))
11846      t = parent;
11847    else {
11848      t = parent.predicate("fhir:"+parentType+'.'+name);
11849    }
11850    composeBackboneElement(t, "agent", name, element, index);
11851    if (element.hasType())
11852      composeCodeableConcept(t, "Provenance", "type", element.getType(), -1);
11853    for (int i = 0; i < element.getRole().size(); i++)
11854      composeCodeableConcept(t, "Provenance", "role", element.getRole().get(i), i);
11855    if (element.hasWho())
11856      composeType(t, "Provenance", "who", element.getWho(), -1);
11857    if (element.hasOnBehalfOf())
11858      composeType(t, "Provenance", "onBehalfOf", element.getOnBehalfOf(), -1);
11859  }
11860
11861  protected void composeProvenanceProvenanceEntityComponent(Complex parent, String parentType, String name, Provenance.ProvenanceEntityComponent element, int index) {
11862    if (element == null) 
11863      return;
11864    Complex t;
11865    if (Utilities.noString(parentType))
11866      t = parent;
11867    else {
11868      t = parent.predicate("fhir:"+parentType+'.'+name);
11869    }
11870    composeBackboneElement(t, "entity", name, element, index);
11871    if (element.hasRoleElement())
11872      composeEnum(t, "Provenance", "role", element.getRoleElement(), -1);
11873    if (element.hasWhat())
11874      composeType(t, "Provenance", "what", element.getWhat(), -1);
11875    for (int i = 0; i < element.getAgent().size(); i++)
11876      composeProvenanceProvenanceAgentComponent(t, "Provenance", "agent", element.getAgent().get(i), i);
11877  }
11878
11879  protected void composeQuestionnaire(Complex parent, String parentType, String name, Questionnaire element, int index) {
11880    if (element == null) 
11881      return;
11882    Complex t;
11883    if (Utilities.noString(parentType))
11884      t = parent;
11885    else {
11886      t = parent.predicate("fhir:"+parentType+'.'+name);
11887    }
11888    composeDomainResource(t, "Questionnaire", name, element, index);
11889    if (element.hasUrlElement())
11890      composeUri(t, "Questionnaire", "url", element.getUrlElement(), -1);
11891    for (int i = 0; i < element.getIdentifier().size(); i++)
11892      composeIdentifier(t, "Questionnaire", "identifier", element.getIdentifier().get(i), i);
11893    if (element.hasVersionElement())
11894      composeString(t, "Questionnaire", "version", element.getVersionElement(), -1);
11895    if (element.hasNameElement())
11896      composeString(t, "Questionnaire", "name", element.getNameElement(), -1);
11897    if (element.hasTitleElement())
11898      composeString(t, "Questionnaire", "title", element.getTitleElement(), -1);
11899    for (int i = 0; i < element.getDerivedFrom().size(); i++)
11900      composeCanonical(t, "Questionnaire", "derivedFrom", element.getDerivedFrom().get(i), i);
11901    if (element.hasStatusElement())
11902      composeEnum(t, "Questionnaire", "status", element.getStatusElement(), -1);
11903    if (element.hasExperimentalElement())
11904      composeBoolean(t, "Questionnaire", "experimental", element.getExperimentalElement(), -1);
11905    for (int i = 0; i < element.getSubjectType().size(); i++)
11906      composeCode(t, "Questionnaire", "subjectType", element.getSubjectType().get(i), i);
11907    if (element.hasDateElement())
11908      composeDateTime(t, "Questionnaire", "date", element.getDateElement(), -1);
11909    if (element.hasPublisherElement())
11910      composeString(t, "Questionnaire", "publisher", element.getPublisherElement(), -1);
11911    for (int i = 0; i < element.getContact().size(); i++)
11912      composeContactDetail(t, "Questionnaire", "contact", element.getContact().get(i), i);
11913    if (element.hasDescriptionElement())
11914      composeMarkdown(t, "Questionnaire", "description", element.getDescriptionElement(), -1);
11915    for (int i = 0; i < element.getUseContext().size(); i++)
11916      composeUsageContext(t, "Questionnaire", "useContext", element.getUseContext().get(i), i);
11917    for (int i = 0; i < element.getJurisdiction().size(); i++)
11918      composeCodeableConcept(t, "Questionnaire", "jurisdiction", element.getJurisdiction().get(i), i);
11919    if (element.hasPurposeElement())
11920      composeMarkdown(t, "Questionnaire", "purpose", element.getPurposeElement(), -1);
11921    if (element.hasCopyrightElement())
11922      composeMarkdown(t, "Questionnaire", "copyright", element.getCopyrightElement(), -1);
11923    if (element.hasApprovalDateElement())
11924      composeDate(t, "Questionnaire", "approvalDate", element.getApprovalDateElement(), -1);
11925    if (element.hasLastReviewDateElement())
11926      composeDate(t, "Questionnaire", "lastReviewDate", element.getLastReviewDateElement(), -1);
11927    if (element.hasEffectivePeriod())
11928      composePeriod(t, "Questionnaire", "effectivePeriod", element.getEffectivePeriod(), -1);
11929    for (int i = 0; i < element.getCode().size(); i++)
11930      composeCoding(t, "Questionnaire", "code", element.getCode().get(i), i);
11931    for (int i = 0; i < element.getItem().size(); i++)
11932      composeQuestionnaireQuestionnaireItemComponent(t, "Questionnaire", "item", element.getItem().get(i), i);
11933  }
11934
11935  protected void composeQuestionnaireQuestionnaireItemComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemComponent element, int index) {
11936    if (element == null) 
11937      return;
11938    Complex t;
11939    if (Utilities.noString(parentType))
11940      t = parent;
11941    else {
11942      t = parent.predicate("fhir:"+parentType+'.'+name);
11943    }
11944    composeBackboneElement(t, "item", name, element, index);
11945    if (element.hasLinkIdElement())
11946      composeString(t, "Questionnaire", "linkId", element.getLinkIdElement(), -1);
11947    if (element.hasDefinitionElement())
11948      composeUri(t, "Questionnaire", "definition", element.getDefinitionElement(), -1);
11949    for (int i = 0; i < element.getCode().size(); i++)
11950      composeCoding(t, "Questionnaire", "code", element.getCode().get(i), i);
11951    if (element.hasPrefixElement())
11952      composeString(t, "Questionnaire", "prefix", element.getPrefixElement(), -1);
11953    if (element.hasTextElement())
11954      composeString(t, "Questionnaire", "text", element.getTextElement(), -1);
11955    if (element.hasTypeElement())
11956      composeEnum(t, "Questionnaire", "type", element.getTypeElement(), -1);
11957    for (int i = 0; i < element.getEnableWhen().size(); i++)
11958      composeQuestionnaireQuestionnaireItemEnableWhenComponent(t, "Questionnaire", "enableWhen", element.getEnableWhen().get(i), i);
11959    if (element.hasEnableBehaviorElement())
11960      composeEnum(t, "Questionnaire", "enableBehavior", element.getEnableBehaviorElement(), -1);
11961    if (element.hasRequiredElement())
11962      composeBoolean(t, "Questionnaire", "required", element.getRequiredElement(), -1);
11963    if (element.hasRepeatsElement())
11964      composeBoolean(t, "Questionnaire", "repeats", element.getRepeatsElement(), -1);
11965    if (element.hasReadOnlyElement())
11966      composeBoolean(t, "Questionnaire", "readOnly", element.getReadOnlyElement(), -1);
11967    if (element.hasMaxLengthElement())
11968      composeInteger(t, "Questionnaire", "maxLength", element.getMaxLengthElement(), -1);
11969    if (element.hasOptionsElement())
11970      composeCanonical(t, "Questionnaire", "options", element.getOptionsElement(), -1);
11971    for (int i = 0; i < element.getOption().size(); i++)
11972      composeQuestionnaireQuestionnaireItemOptionComponent(t, "Questionnaire", "option", element.getOption().get(i), i);
11973    for (int i = 0; i < element.getInitial().size(); i++)
11974      composeQuestionnaireQuestionnaireItemInitialComponent(t, "Questionnaire", "initial", element.getInitial().get(i), i);
11975    for (int i = 0; i < element.getItem().size(); i++)
11976      composeQuestionnaireQuestionnaireItemComponent(t, "Questionnaire", "item", element.getItem().get(i), i);
11977  }
11978
11979  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemEnableWhenComponent element, int index) {
11980    if (element == null) 
11981      return;
11982    Complex t;
11983    if (Utilities.noString(parentType))
11984      t = parent;
11985    else {
11986      t = parent.predicate("fhir:"+parentType+'.'+name);
11987    }
11988    composeBackboneElement(t, "enableWhen", name, element, index);
11989    if (element.hasQuestionElement())
11990      composeString(t, "Questionnaire", "question", element.getQuestionElement(), -1);
11991    if (element.hasOperatorElement())
11992      composeEnum(t, "Questionnaire", "operator", element.getOperatorElement(), -1);
11993    if (element.hasAnswer())
11994      composeType(t, "Questionnaire", "answer", element.getAnswer(), -1);
11995  }
11996
11997  protected void composeQuestionnaireQuestionnaireItemOptionComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemOptionComponent element, int index) {
11998    if (element == null) 
11999      return;
12000    Complex t;
12001    if (Utilities.noString(parentType))
12002      t = parent;
12003    else {
12004      t = parent.predicate("fhir:"+parentType+'.'+name);
12005    }
12006    composeBackboneElement(t, "option", name, element, index);
12007    if (element.hasValue())
12008      composeType(t, "Questionnaire", "value", element.getValue(), -1);
12009    if (element.hasInitialSelectedElement())
12010      composeBoolean(t, "Questionnaire", "initialSelected", element.getInitialSelectedElement(), -1);
12011  }
12012
12013  protected void composeQuestionnaireQuestionnaireItemInitialComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemInitialComponent element, int index) {
12014    if (element == null) 
12015      return;
12016    Complex t;
12017    if (Utilities.noString(parentType))
12018      t = parent;
12019    else {
12020      t = parent.predicate("fhir:"+parentType+'.'+name);
12021    }
12022    composeBackboneElement(t, "initial", name, element, index);
12023    if (element.hasValue())
12024      composeType(t, "Questionnaire", "value", element.getValue(), -1);
12025  }
12026
12027  protected void composeQuestionnaireResponse(Complex parent, String parentType, String name, QuestionnaireResponse element, int index) {
12028    if (element == null) 
12029      return;
12030    Complex t;
12031    if (Utilities.noString(parentType))
12032      t = parent;
12033    else {
12034      t = parent.predicate("fhir:"+parentType+'.'+name);
12035    }
12036    composeDomainResource(t, "QuestionnaireResponse", name, element, index);
12037    if (element.hasIdentifier())
12038      composeIdentifier(t, "QuestionnaireResponse", "identifier", element.getIdentifier(), -1);
12039    for (int i = 0; i < element.getBasedOn().size(); i++)
12040      composeReference(t, "QuestionnaireResponse", "basedOn", element.getBasedOn().get(i), i);
12041    for (int i = 0; i < element.getPartOf().size(); i++)
12042      composeReference(t, "QuestionnaireResponse", "partOf", element.getPartOf().get(i), i);
12043    if (element.hasQuestionnaireElement())
12044      composeCanonical(t, "QuestionnaireResponse", "questionnaire", element.getQuestionnaireElement(), -1);
12045    if (element.hasStatusElement())
12046      composeEnum(t, "QuestionnaireResponse", "status", element.getStatusElement(), -1);
12047    if (element.hasSubject())
12048      composeReference(t, "QuestionnaireResponse", "subject", element.getSubject(), -1);
12049    if (element.hasContext())
12050      composeReference(t, "QuestionnaireResponse", "context", element.getContext(), -1);
12051    if (element.hasAuthoredElement())
12052      composeDateTime(t, "QuestionnaireResponse", "authored", element.getAuthoredElement(), -1);
12053    if (element.hasAuthor())
12054      composeReference(t, "QuestionnaireResponse", "author", element.getAuthor(), -1);
12055    if (element.hasSource())
12056      composeReference(t, "QuestionnaireResponse", "source", element.getSource(), -1);
12057    for (int i = 0; i < element.getItem().size(); i++)
12058      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
12059  }
12060
12061  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(Complex parent, String parentType, String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element, int index) {
12062    if (element == null) 
12063      return;
12064    Complex t;
12065    if (Utilities.noString(parentType))
12066      t = parent;
12067    else {
12068      t = parent.predicate("fhir:"+parentType+'.'+name);
12069    }
12070    composeBackboneElement(t, "item", name, element, index);
12071    if (element.hasLinkIdElement())
12072      composeString(t, "QuestionnaireResponse", "linkId", element.getLinkIdElement(), -1);
12073    if (element.hasDefinitionElement())
12074      composeUri(t, "QuestionnaireResponse", "definition", element.getDefinitionElement(), -1);
12075    if (element.hasTextElement())
12076      composeString(t, "QuestionnaireResponse", "text", element.getTextElement(), -1);
12077    if (element.hasSubject())
12078      composeReference(t, "QuestionnaireResponse", "subject", element.getSubject(), -1);
12079    for (int i = 0; i < element.getAnswer().size(); i++)
12080      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(t, "QuestionnaireResponse", "answer", element.getAnswer().get(i), i);
12081    for (int i = 0; i < element.getItem().size(); i++)
12082      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
12083  }
12084
12085  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(Complex parent, String parentType, String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element, int index) {
12086    if (element == null) 
12087      return;
12088    Complex t;
12089    if (Utilities.noString(parentType))
12090      t = parent;
12091    else {
12092      t = parent.predicate("fhir:"+parentType+'.'+name);
12093    }
12094    composeBackboneElement(t, "answer", name, element, index);
12095    if (element.hasValue())
12096      composeType(t, "QuestionnaireResponse", "value", element.getValue(), -1);
12097    for (int i = 0; i < element.getItem().size(); i++)
12098      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
12099  }
12100
12101  protected void composeRelatedPerson(Complex parent, String parentType, String name, RelatedPerson element, int index) {
12102    if (element == null) 
12103      return;
12104    Complex t;
12105    if (Utilities.noString(parentType))
12106      t = parent;
12107    else {
12108      t = parent.predicate("fhir:"+parentType+'.'+name);
12109    }
12110    composeDomainResource(t, "RelatedPerson", name, element, index);
12111    for (int i = 0; i < element.getIdentifier().size(); i++)
12112      composeIdentifier(t, "RelatedPerson", "identifier", element.getIdentifier().get(i), i);
12113    if (element.hasActiveElement())
12114      composeBoolean(t, "RelatedPerson", "active", element.getActiveElement(), -1);
12115    if (element.hasPatient())
12116      composeReference(t, "RelatedPerson", "patient", element.getPatient(), -1);
12117    for (int i = 0; i < element.getRelationship().size(); i++)
12118      composeCodeableConcept(t, "RelatedPerson", "relationship", element.getRelationship().get(i), i);
12119    for (int i = 0; i < element.getName().size(); i++)
12120      composeHumanName(t, "RelatedPerson", "name", element.getName().get(i), i);
12121    for (int i = 0; i < element.getTelecom().size(); i++)
12122      composeContactPoint(t, "RelatedPerson", "telecom", element.getTelecom().get(i), i);
12123    if (element.hasGenderElement())
12124      composeEnum(t, "RelatedPerson", "gender", element.getGenderElement(), -1);
12125    if (element.hasBirthDateElement())
12126      composeDate(t, "RelatedPerson", "birthDate", element.getBirthDateElement(), -1);
12127    for (int i = 0; i < element.getAddress().size(); i++)
12128      composeAddress(t, "RelatedPerson", "address", element.getAddress().get(i), i);
12129    for (int i = 0; i < element.getPhoto().size(); i++)
12130      composeAttachment(t, "RelatedPerson", "photo", element.getPhoto().get(i), i);
12131    if (element.hasPeriod())
12132      composePeriod(t, "RelatedPerson", "period", element.getPeriod(), -1);
12133  }
12134
12135  protected void composeRequestGroup(Complex parent, String parentType, String name, RequestGroup element, int index) {
12136    if (element == null) 
12137      return;
12138    Complex t;
12139    if (Utilities.noString(parentType))
12140      t = parent;
12141    else {
12142      t = parent.predicate("fhir:"+parentType+'.'+name);
12143    }
12144    composeDomainResource(t, "RequestGroup", name, element, index);
12145    for (int i = 0; i < element.getIdentifier().size(); i++)
12146      composeIdentifier(t, "RequestGroup", "identifier", element.getIdentifier().get(i), i);
12147    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
12148      composeCanonical(t, "RequestGroup", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
12149    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
12150      composeUri(t, "RequestGroup", "instantiatesUri", element.getInstantiatesUri().get(i), i);
12151    for (int i = 0; i < element.getBasedOn().size(); i++)
12152      composeReference(t, "RequestGroup", "basedOn", element.getBasedOn().get(i), i);
12153    for (int i = 0; i < element.getReplaces().size(); i++)
12154      composeReference(t, "RequestGroup", "replaces", element.getReplaces().get(i), i);
12155    if (element.hasGroupIdentifier())
12156      composeIdentifier(t, "RequestGroup", "groupIdentifier", element.getGroupIdentifier(), -1);
12157    if (element.hasStatusElement())
12158      composeEnum(t, "RequestGroup", "status", element.getStatusElement(), -1);
12159    if (element.hasIntentElement())
12160      composeEnum(t, "RequestGroup", "intent", element.getIntentElement(), -1);
12161    if (element.hasPriorityElement())
12162      composeEnum(t, "RequestGroup", "priority", element.getPriorityElement(), -1);
12163    if (element.hasCode())
12164      composeCodeableConcept(t, "RequestGroup", "code", element.getCode(), -1);
12165    if (element.hasSubject())
12166      composeReference(t, "RequestGroup", "subject", element.getSubject(), -1);
12167    if (element.hasContext())
12168      composeReference(t, "RequestGroup", "context", element.getContext(), -1);
12169    if (element.hasAuthoredOnElement())
12170      composeDateTime(t, "RequestGroup", "authoredOn", element.getAuthoredOnElement(), -1);
12171    if (element.hasAuthor())
12172      composeReference(t, "RequestGroup", "author", element.getAuthor(), -1);
12173    for (int i = 0; i < element.getReasonCode().size(); i++)
12174      composeCodeableConcept(t, "RequestGroup", "reasonCode", element.getReasonCode().get(i), i);
12175    for (int i = 0; i < element.getReasonReference().size(); i++)
12176      composeReference(t, "RequestGroup", "reasonReference", element.getReasonReference().get(i), i);
12177    for (int i = 0; i < element.getNote().size(); i++)
12178      composeAnnotation(t, "RequestGroup", "note", element.getNote().get(i), i);
12179    for (int i = 0; i < element.getAction().size(); i++)
12180      composeRequestGroupRequestGroupActionComponent(t, "RequestGroup", "action", element.getAction().get(i), i);
12181  }
12182
12183  protected void composeRequestGroupRequestGroupActionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionComponent element, int index) {
12184    if (element == null) 
12185      return;
12186    Complex t;
12187    if (Utilities.noString(parentType))
12188      t = parent;
12189    else {
12190      t = parent.predicate("fhir:"+parentType+'.'+name);
12191    }
12192    composeBackboneElement(t, "action", name, element, index);
12193    if (element.hasPrefixElement())
12194      composeString(t, "RequestGroup", "prefix", element.getPrefixElement(), -1);
12195    if (element.hasTitleElement())
12196      composeString(t, "RequestGroup", "title", element.getTitleElement(), -1);
12197    if (element.hasDescriptionElement())
12198      composeString(t, "RequestGroup", "description", element.getDescriptionElement(), -1);
12199    if (element.hasTextEquivalentElement())
12200      composeString(t, "RequestGroup", "textEquivalent", element.getTextEquivalentElement(), -1);
12201    for (int i = 0; i < element.getCode().size(); i++)
12202      composeCodeableConcept(t, "RequestGroup", "code", element.getCode().get(i), i);
12203    for (int i = 0; i < element.getDocumentation().size(); i++)
12204      composeRelatedArtifact(t, "RequestGroup", "documentation", element.getDocumentation().get(i), i);
12205    for (int i = 0; i < element.getCondition().size(); i++)
12206      composeRequestGroupRequestGroupActionConditionComponent(t, "RequestGroup", "condition", element.getCondition().get(i), i);
12207    for (int i = 0; i < element.getRelatedAction().size(); i++)
12208      composeRequestGroupRequestGroupActionRelatedActionComponent(t, "RequestGroup", "relatedAction", element.getRelatedAction().get(i), i);
12209    if (element.hasTiming())
12210      composeType(t, "RequestGroup", "timing", element.getTiming(), -1);
12211    for (int i = 0; i < element.getParticipant().size(); i++)
12212      composeReference(t, "RequestGroup", "participant", element.getParticipant().get(i), i);
12213    if (element.hasType())
12214      composeCodeableConcept(t, "RequestGroup", "type", element.getType(), -1);
12215    if (element.hasGroupingBehaviorElement())
12216      composeEnum(t, "RequestGroup", "groupingBehavior", element.getGroupingBehaviorElement(), -1);
12217    if (element.hasSelectionBehaviorElement())
12218      composeEnum(t, "RequestGroup", "selectionBehavior", element.getSelectionBehaviorElement(), -1);
12219    if (element.hasRequiredBehaviorElement())
12220      composeEnum(t, "RequestGroup", "requiredBehavior", element.getRequiredBehaviorElement(), -1);
12221    if (element.hasPrecheckBehaviorElement())
12222      composeEnum(t, "RequestGroup", "precheckBehavior", element.getPrecheckBehaviorElement(), -1);
12223    if (element.hasCardinalityBehaviorElement())
12224      composeEnum(t, "RequestGroup", "cardinalityBehavior", element.getCardinalityBehaviorElement(), -1);
12225    if (element.hasResource())
12226      composeReference(t, "RequestGroup", "resource", element.getResource(), -1);
12227    for (int i = 0; i < element.getAction().size(); i++)
12228      composeRequestGroupRequestGroupActionComponent(t, "RequestGroup", "action", element.getAction().get(i), i);
12229  }
12230
12231  protected void composeRequestGroupRequestGroupActionConditionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionConditionComponent element, int index) {
12232    if (element == null) 
12233      return;
12234    Complex t;
12235    if (Utilities.noString(parentType))
12236      t = parent;
12237    else {
12238      t = parent.predicate("fhir:"+parentType+'.'+name);
12239    }
12240    composeBackboneElement(t, "condition", name, element, index);
12241    if (element.hasKindElement())
12242      composeEnum(t, "RequestGroup", "kind", element.getKindElement(), -1);
12243    if (element.hasDescriptionElement())
12244      composeString(t, "RequestGroup", "description", element.getDescriptionElement(), -1);
12245    if (element.hasLanguageElement())
12246      composeString(t, "RequestGroup", "language", element.getLanguageElement(), -1);
12247    if (element.hasExpressionElement())
12248      composeString(t, "RequestGroup", "expression", element.getExpressionElement(), -1);
12249  }
12250
12251  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionRelatedActionComponent element, int index) {
12252    if (element == null) 
12253      return;
12254    Complex t;
12255    if (Utilities.noString(parentType))
12256      t = parent;
12257    else {
12258      t = parent.predicate("fhir:"+parentType+'.'+name);
12259    }
12260    composeBackboneElement(t, "relatedAction", name, element, index);
12261    if (element.hasActionIdElement())
12262      composeId(t, "RequestGroup", "actionId", element.getActionIdElement(), -1);
12263    if (element.hasRelationshipElement())
12264      composeEnum(t, "RequestGroup", "relationship", element.getRelationshipElement(), -1);
12265    if (element.hasOffset())
12266      composeType(t, "RequestGroup", "offset", element.getOffset(), -1);
12267  }
12268
12269  protected void composeResearchStudy(Complex parent, String parentType, String name, ResearchStudy element, int index) {
12270    if (element == null) 
12271      return;
12272    Complex t;
12273    if (Utilities.noString(parentType))
12274      t = parent;
12275    else {
12276      t = parent.predicate("fhir:"+parentType+'.'+name);
12277    }
12278    composeDomainResource(t, "ResearchStudy", name, element, index);
12279    for (int i = 0; i < element.getIdentifier().size(); i++)
12280      composeIdentifier(t, "ResearchStudy", "identifier", element.getIdentifier().get(i), i);
12281    if (element.hasTitleElement())
12282      composeString(t, "ResearchStudy", "title", element.getTitleElement(), -1);
12283    for (int i = 0; i < element.getProtocol().size(); i++)
12284      composeReference(t, "ResearchStudy", "protocol", element.getProtocol().get(i), i);
12285    for (int i = 0; i < element.getPartOf().size(); i++)
12286      composeReference(t, "ResearchStudy", "partOf", element.getPartOf().get(i), i);
12287    if (element.hasStatusElement())
12288      composeEnum(t, "ResearchStudy", "status", element.getStatusElement(), -1);
12289    if (element.hasPrimaryPurposeType())
12290      composeCodeableConcept(t, "ResearchStudy", "primaryPurposeType", element.getPrimaryPurposeType(), -1);
12291    if (element.hasPhase())
12292      composeCodeableConcept(t, "ResearchStudy", "phase", element.getPhase(), -1);
12293    for (int i = 0; i < element.getCategory().size(); i++)
12294      composeCodeableConcept(t, "ResearchStudy", "category", element.getCategory().get(i), i);
12295    for (int i = 0; i < element.getFocus().size(); i++)
12296      composeCodeableConcept(t, "ResearchStudy", "focus", element.getFocus().get(i), i);
12297    for (int i = 0; i < element.getCondition().size(); i++)
12298      composeReference(t, "ResearchStudy", "condition", element.getCondition().get(i), i);
12299    for (int i = 0; i < element.getContact().size(); i++)
12300      composeContactDetail(t, "ResearchStudy", "contact", element.getContact().get(i), i);
12301    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
12302      composeRelatedArtifact(t, "ResearchStudy", "relatedArtifact", element.getRelatedArtifact().get(i), i);
12303    for (int i = 0; i < element.getKeyword().size(); i++)
12304      composeCodeableConcept(t, "ResearchStudy", "keyword", element.getKeyword().get(i), i);
12305    for (int i = 0; i < element.getLocation().size(); i++)
12306      composeCodeableConcept(t, "ResearchStudy", "location", element.getLocation().get(i), i);
12307    if (element.hasDescriptionElement())
12308      composeMarkdown(t, "ResearchStudy", "description", element.getDescriptionElement(), -1);
12309    for (int i = 0; i < element.getEnrollment().size(); i++)
12310      composeReference(t, "ResearchStudy", "enrollment", element.getEnrollment().get(i), i);
12311    if (element.hasPeriod())
12312      composePeriod(t, "ResearchStudy", "period", element.getPeriod(), -1);
12313    if (element.hasSponsor())
12314      composeReference(t, "ResearchStudy", "sponsor", element.getSponsor(), -1);
12315    if (element.hasPrincipalInvestigator())
12316      composeReference(t, "ResearchStudy", "principalInvestigator", element.getPrincipalInvestigator(), -1);
12317    for (int i = 0; i < element.getSite().size(); i++)
12318      composeReference(t, "ResearchStudy", "site", element.getSite().get(i), i);
12319    if (element.hasReasonStopped())
12320      composeCodeableConcept(t, "ResearchStudy", "reasonStopped", element.getReasonStopped(), -1);
12321    for (int i = 0; i < element.getNote().size(); i++)
12322      composeAnnotation(t, "ResearchStudy", "note", element.getNote().get(i), i);
12323    for (int i = 0; i < element.getArm().size(); i++)
12324      composeResearchStudyResearchStudyArmComponent(t, "ResearchStudy", "arm", element.getArm().get(i), i);
12325    for (int i = 0; i < element.getObjective().size(); i++)
12326      composeResearchStudyResearchStudyObjectiveComponent(t, "ResearchStudy", "objective", element.getObjective().get(i), i);
12327  }
12328
12329  protected void composeResearchStudyResearchStudyArmComponent(Complex parent, String parentType, String name, ResearchStudy.ResearchStudyArmComponent element, int index) {
12330    if (element == null) 
12331      return;
12332    Complex t;
12333    if (Utilities.noString(parentType))
12334      t = parent;
12335    else {
12336      t = parent.predicate("fhir:"+parentType+'.'+name);
12337    }
12338    composeBackboneElement(t, "arm", name, element, index);
12339    if (element.hasNameElement())
12340      composeString(t, "ResearchStudy", "name", element.getNameElement(), -1);
12341    if (element.hasType())
12342      composeCodeableConcept(t, "ResearchStudy", "type", element.getType(), -1);
12343    if (element.hasDescriptionElement())
12344      composeString(t, "ResearchStudy", "description", element.getDescriptionElement(), -1);
12345  }
12346
12347  protected void composeResearchStudyResearchStudyObjectiveComponent(Complex parent, String parentType, String name, ResearchStudy.ResearchStudyObjectiveComponent element, int index) {
12348    if (element == null) 
12349      return;
12350    Complex t;
12351    if (Utilities.noString(parentType))
12352      t = parent;
12353    else {
12354      t = parent.predicate("fhir:"+parentType+'.'+name);
12355    }
12356    composeBackboneElement(t, "objective", name, element, index);
12357    if (element.hasNameElement())
12358      composeString(t, "ResearchStudy", "name", element.getNameElement(), -1);
12359    if (element.hasType())
12360      composeCodeableConcept(t, "ResearchStudy", "type", element.getType(), -1);
12361  }
12362
12363  protected void composeResearchSubject(Complex parent, String parentType, String name, ResearchSubject element, int index) {
12364    if (element == null) 
12365      return;
12366    Complex t;
12367    if (Utilities.noString(parentType))
12368      t = parent;
12369    else {
12370      t = parent.predicate("fhir:"+parentType+'.'+name);
12371    }
12372    composeDomainResource(t, "ResearchSubject", name, element, index);
12373    for (int i = 0; i < element.getIdentifier().size(); i++)
12374      composeIdentifier(t, "ResearchSubject", "identifier", element.getIdentifier().get(i), i);
12375    if (element.hasStatusElement())
12376      composeEnum(t, "ResearchSubject", "status", element.getStatusElement(), -1);
12377    if (element.hasPeriod())
12378      composePeriod(t, "ResearchSubject", "period", element.getPeriod(), -1);
12379    if (element.hasStudy())
12380      composeReference(t, "ResearchSubject", "study", element.getStudy(), -1);
12381    if (element.hasIndividual())
12382      composeReference(t, "ResearchSubject", "individual", element.getIndividual(), -1);
12383    if (element.hasAssignedArmElement())
12384      composeString(t, "ResearchSubject", "assignedArm", element.getAssignedArmElement(), -1);
12385    if (element.hasActualArmElement())
12386      composeString(t, "ResearchSubject", "actualArm", element.getActualArmElement(), -1);
12387    if (element.hasConsent())
12388      composeReference(t, "ResearchSubject", "consent", element.getConsent(), -1);
12389  }
12390
12391  protected void composeRiskAssessment(Complex parent, String parentType, String name, RiskAssessment element, int index) {
12392    if (element == null) 
12393      return;
12394    Complex t;
12395    if (Utilities.noString(parentType))
12396      t = parent;
12397    else {
12398      t = parent.predicate("fhir:"+parentType+'.'+name);
12399    }
12400    composeDomainResource(t, "RiskAssessment", name, element, index);
12401    for (int i = 0; i < element.getIdentifier().size(); i++)
12402      composeIdentifier(t, "RiskAssessment", "identifier", element.getIdentifier().get(i), i);
12403    if (element.hasBasedOn())
12404      composeReference(t, "RiskAssessment", "basedOn", element.getBasedOn(), -1);
12405    if (element.hasParent())
12406      composeReference(t, "RiskAssessment", "parent", element.getParent(), -1);
12407    if (element.hasStatusElement())
12408      composeEnum(t, "RiskAssessment", "status", element.getStatusElement(), -1);
12409    if (element.hasMethod())
12410      composeCodeableConcept(t, "RiskAssessment", "method", element.getMethod(), -1);
12411    if (element.hasCode())
12412      composeCodeableConcept(t, "RiskAssessment", "code", element.getCode(), -1);
12413    if (element.hasSubject())
12414      composeReference(t, "RiskAssessment", "subject", element.getSubject(), -1);
12415    if (element.hasContext())
12416      composeReference(t, "RiskAssessment", "context", element.getContext(), -1);
12417    if (element.hasOccurrence())
12418      composeType(t, "RiskAssessment", "occurrence", element.getOccurrence(), -1);
12419    if (element.hasCondition())
12420      composeReference(t, "RiskAssessment", "condition", element.getCondition(), -1);
12421    if (element.hasPerformer())
12422      composeReference(t, "RiskAssessment", "performer", element.getPerformer(), -1);
12423    for (int i = 0; i < element.getReasonCode().size(); i++)
12424      composeCodeableConcept(t, "RiskAssessment", "reasonCode", element.getReasonCode().get(i), i);
12425    for (int i = 0; i < element.getReasonReference().size(); i++)
12426      composeReference(t, "RiskAssessment", "reasonReference", element.getReasonReference().get(i), i);
12427    for (int i = 0; i < element.getBasis().size(); i++)
12428      composeReference(t, "RiskAssessment", "basis", element.getBasis().get(i), i);
12429    for (int i = 0; i < element.getPrediction().size(); i++)
12430      composeRiskAssessmentRiskAssessmentPredictionComponent(t, "RiskAssessment", "prediction", element.getPrediction().get(i), i);
12431    if (element.hasMitigationElement())
12432      composeString(t, "RiskAssessment", "mitigation", element.getMitigationElement(), -1);
12433    for (int i = 0; i < element.getNote().size(); i++)
12434      composeAnnotation(t, "RiskAssessment", "note", element.getNote().get(i), i);
12435  }
12436
12437  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(Complex parent, String parentType, String name, RiskAssessment.RiskAssessmentPredictionComponent element, int index) {
12438    if (element == null) 
12439      return;
12440    Complex t;
12441    if (Utilities.noString(parentType))
12442      t = parent;
12443    else {
12444      t = parent.predicate("fhir:"+parentType+'.'+name);
12445    }
12446    composeBackboneElement(t, "prediction", name, element, index);
12447    if (element.hasOutcome())
12448      composeCodeableConcept(t, "RiskAssessment", "outcome", element.getOutcome(), -1);
12449    if (element.hasProbability())
12450      composeType(t, "RiskAssessment", "probability", element.getProbability(), -1);
12451    if (element.hasQualitativeRisk())
12452      composeCodeableConcept(t, "RiskAssessment", "qualitativeRisk", element.getQualitativeRisk(), -1);
12453    if (element.hasRelativeRiskElement())
12454      composeDecimal(t, "RiskAssessment", "relativeRisk", element.getRelativeRiskElement(), -1);
12455    if (element.hasWhen())
12456      composeType(t, "RiskAssessment", "when", element.getWhen(), -1);
12457    if (element.hasRationaleElement())
12458      composeString(t, "RiskAssessment", "rationale", element.getRationaleElement(), -1);
12459  }
12460
12461  protected void composeSchedule(Complex parent, String parentType, String name, Schedule element, int index) {
12462    if (element == null) 
12463      return;
12464    Complex t;
12465    if (Utilities.noString(parentType))
12466      t = parent;
12467    else {
12468      t = parent.predicate("fhir:"+parentType+'.'+name);
12469    }
12470    composeDomainResource(t, "Schedule", name, element, index);
12471    for (int i = 0; i < element.getIdentifier().size(); i++)
12472      composeIdentifier(t, "Schedule", "identifier", element.getIdentifier().get(i), i);
12473    if (element.hasActiveElement())
12474      composeBoolean(t, "Schedule", "active", element.getActiveElement(), -1);
12475    for (int i = 0; i < element.getServiceCategory().size(); i++)
12476      composeCodeableConcept(t, "Schedule", "serviceCategory", element.getServiceCategory().get(i), i);
12477    for (int i = 0; i < element.getServiceType().size(); i++)
12478      composeCodeableConcept(t, "Schedule", "serviceType", element.getServiceType().get(i), i);
12479    for (int i = 0; i < element.getSpecialty().size(); i++)
12480      composeCodeableConcept(t, "Schedule", "specialty", element.getSpecialty().get(i), i);
12481    for (int i = 0; i < element.getActor().size(); i++)
12482      composeReference(t, "Schedule", "actor", element.getActor().get(i), i);
12483    if (element.hasPlanningHorizon())
12484      composePeriod(t, "Schedule", "planningHorizon", element.getPlanningHorizon(), -1);
12485    if (element.hasCommentElement())
12486      composeString(t, "Schedule", "comment", element.getCommentElement(), -1);
12487  }
12488
12489  protected void composeSearchParameter(Complex parent, String parentType, String name, SearchParameter element, int index) {
12490    if (element == null) 
12491      return;
12492    Complex t;
12493    if (Utilities.noString(parentType))
12494      t = parent;
12495    else {
12496      t = parent.predicate("fhir:"+parentType+'.'+name);
12497    }
12498    composeDomainResource(t, "SearchParameter", name, element, index);
12499    if (element.hasUrlElement())
12500      composeUri(t, "SearchParameter", "url", element.getUrlElement(), -1);
12501    if (element.hasVersionElement())
12502      composeString(t, "SearchParameter", "version", element.getVersionElement(), -1);
12503    if (element.hasNameElement())
12504      composeString(t, "SearchParameter", "name", element.getNameElement(), -1);
12505    if (element.hasDerivedFromElement())
12506      composeCanonical(t, "SearchParameter", "derivedFrom", element.getDerivedFromElement(), -1);
12507    if (element.hasStatusElement())
12508      composeEnum(t, "SearchParameter", "status", element.getStatusElement(), -1);
12509    if (element.hasExperimentalElement())
12510      composeBoolean(t, "SearchParameter", "experimental", element.getExperimentalElement(), -1);
12511    if (element.hasDateElement())
12512      composeDateTime(t, "SearchParameter", "date", element.getDateElement(), -1);
12513    if (element.hasPublisherElement())
12514      composeString(t, "SearchParameter", "publisher", element.getPublisherElement(), -1);
12515    for (int i = 0; i < element.getContact().size(); i++)
12516      composeContactDetail(t, "SearchParameter", "contact", element.getContact().get(i), i);
12517    if (element.hasDescriptionElement())
12518      composeMarkdown(t, "SearchParameter", "description", element.getDescriptionElement(), -1);
12519    for (int i = 0; i < element.getUseContext().size(); i++)
12520      composeUsageContext(t, "SearchParameter", "useContext", element.getUseContext().get(i), i);
12521    for (int i = 0; i < element.getJurisdiction().size(); i++)
12522      composeCodeableConcept(t, "SearchParameter", "jurisdiction", element.getJurisdiction().get(i), i);
12523    if (element.hasPurposeElement())
12524      composeMarkdown(t, "SearchParameter", "purpose", element.getPurposeElement(), -1);
12525    if (element.hasCodeElement())
12526      composeCode(t, "SearchParameter", "code", element.getCodeElement(), -1);
12527    for (int i = 0; i < element.getBase().size(); i++)
12528      composeCode(t, "SearchParameter", "base", element.getBase().get(i), i);
12529    if (element.hasTypeElement())
12530      composeEnum(t, "SearchParameter", "type", element.getTypeElement(), -1);
12531    if (element.hasExpressionElement())
12532      composeString(t, "SearchParameter", "expression", element.getExpressionElement(), -1);
12533    if (element.hasXpathElement())
12534      composeString(t, "SearchParameter", "xpath", element.getXpathElement(), -1);
12535    if (element.hasXpathUsageElement())
12536      composeEnum(t, "SearchParameter", "xpathUsage", element.getXpathUsageElement(), -1);
12537    for (int i = 0; i < element.getTarget().size(); i++)
12538      composeCode(t, "SearchParameter", "target", element.getTarget().get(i), i);
12539    if (element.hasMultipleOrElement())
12540      composeBoolean(t, "SearchParameter", "multipleOr", element.getMultipleOrElement(), -1);
12541    if (element.hasMultipleAndElement())
12542      composeBoolean(t, "SearchParameter", "multipleAnd", element.getMultipleAndElement(), -1);
12543    for (int i = 0; i < element.getComparator().size(); i++)
12544      composeEnum(t, "SearchParameter", "comparator", element.getComparator().get(i), i);
12545    for (int i = 0; i < element.getModifier().size(); i++)
12546      composeEnum(t, "SearchParameter", "modifier", element.getModifier().get(i), i);
12547    for (int i = 0; i < element.getChain().size(); i++)
12548      composeString(t, "SearchParameter", "chain", element.getChain().get(i), i);
12549    for (int i = 0; i < element.getComponent().size(); i++)
12550      composeSearchParameterSearchParameterComponentComponent(t, "SearchParameter", "component", element.getComponent().get(i), i);
12551  }
12552
12553  protected void composeSearchParameterSearchParameterComponentComponent(Complex parent, String parentType, String name, SearchParameter.SearchParameterComponentComponent element, int index) {
12554    if (element == null) 
12555      return;
12556    Complex t;
12557    if (Utilities.noString(parentType))
12558      t = parent;
12559    else {
12560      t = parent.predicate("fhir:"+parentType+'.'+name);
12561    }
12562    composeBackboneElement(t, "component", name, element, index);
12563    if (element.hasDefinitionElement())
12564      composeCanonical(t, "SearchParameter", "definition", element.getDefinitionElement(), -1);
12565    if (element.hasExpressionElement())
12566      composeString(t, "SearchParameter", "expression", element.getExpressionElement(), -1);
12567  }
12568
12569  protected void composeSequence(Complex parent, String parentType, String name, Sequence element, int index) {
12570    if (element == null) 
12571      return;
12572    Complex t;
12573    if (Utilities.noString(parentType))
12574      t = parent;
12575    else {
12576      t = parent.predicate("fhir:"+parentType+'.'+name);
12577    }
12578    composeDomainResource(t, "Sequence", name, element, index);
12579    for (int i = 0; i < element.getIdentifier().size(); i++)
12580      composeIdentifier(t, "Sequence", "identifier", element.getIdentifier().get(i), i);
12581    if (element.hasTypeElement())
12582      composeEnum(t, "Sequence", "type", element.getTypeElement(), -1);
12583    if (element.hasCoordinateSystemElement())
12584      composeInteger(t, "Sequence", "coordinateSystem", element.getCoordinateSystemElement(), -1);
12585    if (element.hasPatient())
12586      composeReference(t, "Sequence", "patient", element.getPatient(), -1);
12587    if (element.hasSpecimen())
12588      composeReference(t, "Sequence", "specimen", element.getSpecimen(), -1);
12589    if (element.hasDevice())
12590      composeReference(t, "Sequence", "device", element.getDevice(), -1);
12591    if (element.hasPerformer())
12592      composeReference(t, "Sequence", "performer", element.getPerformer(), -1);
12593    if (element.hasQuantity())
12594      composeQuantity(t, "Sequence", "quantity", element.getQuantity(), -1);
12595    if (element.hasReferenceSeq())
12596      composeSequenceSequenceReferenceSeqComponent(t, "Sequence", "referenceSeq", element.getReferenceSeq(), -1);
12597    for (int i = 0; i < element.getVariant().size(); i++)
12598      composeSequenceSequenceVariantComponent(t, "Sequence", "variant", element.getVariant().get(i), i);
12599    if (element.hasObservedSeqElement())
12600      composeString(t, "Sequence", "observedSeq", element.getObservedSeqElement(), -1);
12601    for (int i = 0; i < element.getQuality().size(); i++)
12602      composeSequenceSequenceQualityComponent(t, "Sequence", "quality", element.getQuality().get(i), i);
12603    if (element.hasReadCoverageElement())
12604      composeInteger(t, "Sequence", "readCoverage", element.getReadCoverageElement(), -1);
12605    for (int i = 0; i < element.getRepository().size(); i++)
12606      composeSequenceSequenceRepositoryComponent(t, "Sequence", "repository", element.getRepository().get(i), i);
12607    for (int i = 0; i < element.getPointer().size(); i++)
12608      composeReference(t, "Sequence", "pointer", element.getPointer().get(i), i);
12609    for (int i = 0; i < element.getStructureVariant().size(); i++)
12610      composeSequenceSequenceStructureVariantComponent(t, "Sequence", "structureVariant", element.getStructureVariant().get(i), i);
12611  }
12612
12613  protected void composeSequenceSequenceReferenceSeqComponent(Complex parent, String parentType, String name, Sequence.SequenceReferenceSeqComponent element, int index) {
12614    if (element == null) 
12615      return;
12616    Complex t;
12617    if (Utilities.noString(parentType))
12618      t = parent;
12619    else {
12620      t = parent.predicate("fhir:"+parentType+'.'+name);
12621    }
12622    composeBackboneElement(t, "referenceSeq", name, element, index);
12623    if (element.hasChromosome())
12624      composeCodeableConcept(t, "Sequence", "chromosome", element.getChromosome(), -1);
12625    if (element.hasGenomeBuildElement())
12626      composeString(t, "Sequence", "genomeBuild", element.getGenomeBuildElement(), -1);
12627    if (element.hasOrientationElement())
12628      composeEnum(t, "Sequence", "orientation", element.getOrientationElement(), -1);
12629    if (element.hasReferenceSeqId())
12630      composeCodeableConcept(t, "Sequence", "referenceSeqId", element.getReferenceSeqId(), -1);
12631    if (element.hasReferenceSeqPointer())
12632      composeReference(t, "Sequence", "referenceSeqPointer", element.getReferenceSeqPointer(), -1);
12633    if (element.hasReferenceSeqStringElement())
12634      composeString(t, "Sequence", "referenceSeqString", element.getReferenceSeqStringElement(), -1);
12635    if (element.hasStrandElement())
12636      composeEnum(t, "Sequence", "strand", element.getStrandElement(), -1);
12637    if (element.hasWindowStartElement())
12638      composeInteger(t, "Sequence", "windowStart", element.getWindowStartElement(), -1);
12639    if (element.hasWindowEndElement())
12640      composeInteger(t, "Sequence", "windowEnd", element.getWindowEndElement(), -1);
12641  }
12642
12643  protected void composeSequenceSequenceVariantComponent(Complex parent, String parentType, String name, Sequence.SequenceVariantComponent element, int index) {
12644    if (element == null) 
12645      return;
12646    Complex t;
12647    if (Utilities.noString(parentType))
12648      t = parent;
12649    else {
12650      t = parent.predicate("fhir:"+parentType+'.'+name);
12651    }
12652    composeBackboneElement(t, "variant", name, element, index);
12653    if (element.hasStartElement())
12654      composeInteger(t, "Sequence", "start", element.getStartElement(), -1);
12655    if (element.hasEndElement())
12656      composeInteger(t, "Sequence", "end", element.getEndElement(), -1);
12657    if (element.hasObservedAlleleElement())
12658      composeString(t, "Sequence", "observedAllele", element.getObservedAlleleElement(), -1);
12659    if (element.hasReferenceAlleleElement())
12660      composeString(t, "Sequence", "referenceAllele", element.getReferenceAlleleElement(), -1);
12661    if (element.hasCigarElement())
12662      composeString(t, "Sequence", "cigar", element.getCigarElement(), -1);
12663    if (element.hasVariantPointer())
12664      composeReference(t, "Sequence", "variantPointer", element.getVariantPointer(), -1);
12665  }
12666
12667  protected void composeSequenceSequenceQualityComponent(Complex parent, String parentType, String name, Sequence.SequenceQualityComponent element, int index) {
12668    if (element == null) 
12669      return;
12670    Complex t;
12671    if (Utilities.noString(parentType))
12672      t = parent;
12673    else {
12674      t = parent.predicate("fhir:"+parentType+'.'+name);
12675    }
12676    composeBackboneElement(t, "quality", name, element, index);
12677    if (element.hasTypeElement())
12678      composeEnum(t, "Sequence", "type", element.getTypeElement(), -1);
12679    if (element.hasStandardSequence())
12680      composeCodeableConcept(t, "Sequence", "standardSequence", element.getStandardSequence(), -1);
12681    if (element.hasStartElement())
12682      composeInteger(t, "Sequence", "start", element.getStartElement(), -1);
12683    if (element.hasEndElement())
12684      composeInteger(t, "Sequence", "end", element.getEndElement(), -1);
12685    if (element.hasScore())
12686      composeQuantity(t, "Sequence", "score", element.getScore(), -1);
12687    if (element.hasMethod())
12688      composeCodeableConcept(t, "Sequence", "method", element.getMethod(), -1);
12689    if (element.hasTruthTPElement())
12690      composeDecimal(t, "Sequence", "truthTP", element.getTruthTPElement(), -1);
12691    if (element.hasQueryTPElement())
12692      composeDecimal(t, "Sequence", "queryTP", element.getQueryTPElement(), -1);
12693    if (element.hasTruthFNElement())
12694      composeDecimal(t, "Sequence", "truthFN", element.getTruthFNElement(), -1);
12695    if (element.hasQueryFPElement())
12696      composeDecimal(t, "Sequence", "queryFP", element.getQueryFPElement(), -1);
12697    if (element.hasGtFPElement())
12698      composeDecimal(t, "Sequence", "gtFP", element.getGtFPElement(), -1);
12699    if (element.hasPrecisionElement())
12700      composeDecimal(t, "Sequence", "precision", element.getPrecisionElement(), -1);
12701    if (element.hasRecallElement())
12702      composeDecimal(t, "Sequence", "recall", element.getRecallElement(), -1);
12703    if (element.hasFScoreElement())
12704      composeDecimal(t, "Sequence", "fScore", element.getFScoreElement(), -1);
12705    if (element.hasRoc())
12706      composeSequenceSequenceQualityRocComponent(t, "Sequence", "roc", element.getRoc(), -1);
12707  }
12708
12709  protected void composeSequenceSequenceQualityRocComponent(Complex parent, String parentType, String name, Sequence.SequenceQualityRocComponent element, int index) {
12710    if (element == null) 
12711      return;
12712    Complex t;
12713    if (Utilities.noString(parentType))
12714      t = parent;
12715    else {
12716      t = parent.predicate("fhir:"+parentType+'.'+name);
12717    }
12718    composeBackboneElement(t, "roc", name, element, index);
12719    for (int i = 0; i < element.getScore().size(); i++)
12720      composeInteger(t, "Sequence", "score", element.getScore().get(i), i);
12721    for (int i = 0; i < element.getNumTP().size(); i++)
12722      composeInteger(t, "Sequence", "numTP", element.getNumTP().get(i), i);
12723    for (int i = 0; i < element.getNumFP().size(); i++)
12724      composeInteger(t, "Sequence", "numFP", element.getNumFP().get(i), i);
12725    for (int i = 0; i < element.getNumFN().size(); i++)
12726      composeInteger(t, "Sequence", "numFN", element.getNumFN().get(i), i);
12727    for (int i = 0; i < element.getPrecision().size(); i++)
12728      composeDecimal(t, "Sequence", "precision", element.getPrecision().get(i), i);
12729    for (int i = 0; i < element.getSensitivity().size(); i++)
12730      composeDecimal(t, "Sequence", "sensitivity", element.getSensitivity().get(i), i);
12731    for (int i = 0; i < element.getFMeasure().size(); i++)
12732      composeDecimal(t, "Sequence", "fMeasure", element.getFMeasure().get(i), i);
12733  }
12734
12735  protected void composeSequenceSequenceRepositoryComponent(Complex parent, String parentType, String name, Sequence.SequenceRepositoryComponent element, int index) {
12736    if (element == null) 
12737      return;
12738    Complex t;
12739    if (Utilities.noString(parentType))
12740      t = parent;
12741    else {
12742      t = parent.predicate("fhir:"+parentType+'.'+name);
12743    }
12744    composeBackboneElement(t, "repository", name, element, index);
12745    if (element.hasTypeElement())
12746      composeEnum(t, "Sequence", "type", element.getTypeElement(), -1);
12747    if (element.hasUrlElement())
12748      composeUri(t, "Sequence", "url", element.getUrlElement(), -1);
12749    if (element.hasNameElement())
12750      composeString(t, "Sequence", "name", element.getNameElement(), -1);
12751    if (element.hasDatasetIdElement())
12752      composeString(t, "Sequence", "datasetId", element.getDatasetIdElement(), -1);
12753    if (element.hasVariantsetIdElement())
12754      composeString(t, "Sequence", "variantsetId", element.getVariantsetIdElement(), -1);
12755    if (element.hasReadsetIdElement())
12756      composeString(t, "Sequence", "readsetId", element.getReadsetIdElement(), -1);
12757  }
12758
12759  protected void composeSequenceSequenceStructureVariantComponent(Complex parent, String parentType, String name, Sequence.SequenceStructureVariantComponent element, int index) {
12760    if (element == null) 
12761      return;
12762    Complex t;
12763    if (Utilities.noString(parentType))
12764      t = parent;
12765    else {
12766      t = parent.predicate("fhir:"+parentType+'.'+name);
12767    }
12768    composeBackboneElement(t, "structureVariant", name, element, index);
12769    if (element.hasPrecisionElement())
12770      composeString(t, "Sequence", "precision", element.getPrecisionElement(), -1);
12771    if (element.hasReportedaCGHRatioElement())
12772      composeDecimal(t, "Sequence", "reportedaCGHRatio", element.getReportedaCGHRatioElement(), -1);
12773    if (element.hasLengthElement())
12774      composeInteger(t, "Sequence", "length", element.getLengthElement(), -1);
12775    if (element.hasOuter())
12776      composeSequenceSequenceStructureVariantOuterComponent(t, "Sequence", "outer", element.getOuter(), -1);
12777    if (element.hasInner())
12778      composeSequenceSequenceStructureVariantInnerComponent(t, "Sequence", "inner", element.getInner(), -1);
12779  }
12780
12781  protected void composeSequenceSequenceStructureVariantOuterComponent(Complex parent, String parentType, String name, Sequence.SequenceStructureVariantOuterComponent element, int index) {
12782    if (element == null) 
12783      return;
12784    Complex t;
12785    if (Utilities.noString(parentType))
12786      t = parent;
12787    else {
12788      t = parent.predicate("fhir:"+parentType+'.'+name);
12789    }
12790    composeBackboneElement(t, "outer", name, element, index);
12791    if (element.hasStartElement())
12792      composeInteger(t, "Sequence", "start", element.getStartElement(), -1);
12793    if (element.hasEndElement())
12794      composeInteger(t, "Sequence", "end", element.getEndElement(), -1);
12795  }
12796
12797  protected void composeSequenceSequenceStructureVariantInnerComponent(Complex parent, String parentType, String name, Sequence.SequenceStructureVariantInnerComponent element, int index) {
12798    if (element == null) 
12799      return;
12800    Complex t;
12801    if (Utilities.noString(parentType))
12802      t = parent;
12803    else {
12804      t = parent.predicate("fhir:"+parentType+'.'+name);
12805    }
12806    composeBackboneElement(t, "inner", name, element, index);
12807    if (element.hasStartElement())
12808      composeInteger(t, "Sequence", "start", element.getStartElement(), -1);
12809    if (element.hasEndElement())
12810      composeInteger(t, "Sequence", "end", element.getEndElement(), -1);
12811  }
12812
12813  protected void composeServiceRequest(Complex parent, String parentType, String name, ServiceRequest element, int index) {
12814    if (element == null) 
12815      return;
12816    Complex t;
12817    if (Utilities.noString(parentType))
12818      t = parent;
12819    else {
12820      t = parent.predicate("fhir:"+parentType+'.'+name);
12821    }
12822    composeDomainResource(t, "ServiceRequest", name, element, index);
12823    for (int i = 0; i < element.getIdentifier().size(); i++)
12824      composeIdentifier(t, "ServiceRequest", "identifier", element.getIdentifier().get(i), i);
12825    for (int i = 0; i < element.getInstantiates().size(); i++)
12826      composeUri(t, "ServiceRequest", "instantiates", element.getInstantiates().get(i), i);
12827    for (int i = 0; i < element.getBasedOn().size(); i++)
12828      composeReference(t, "ServiceRequest", "basedOn", element.getBasedOn().get(i), i);
12829    for (int i = 0; i < element.getReplaces().size(); i++)
12830      composeReference(t, "ServiceRequest", "replaces", element.getReplaces().get(i), i);
12831    if (element.hasRequisition())
12832      composeIdentifier(t, "ServiceRequest", "requisition", element.getRequisition(), -1);
12833    if (element.hasStatusElement())
12834      composeEnum(t, "ServiceRequest", "status", element.getStatusElement(), -1);
12835    if (element.hasIntentElement())
12836      composeEnum(t, "ServiceRequest", "intent", element.getIntentElement(), -1);
12837    for (int i = 0; i < element.getCategory().size(); i++)
12838      composeCodeableConcept(t, "ServiceRequest", "category", element.getCategory().get(i), i);
12839    if (element.hasPriorityElement())
12840      composeEnum(t, "ServiceRequest", "priority", element.getPriorityElement(), -1);
12841    if (element.hasDoNotPerformElement())
12842      composeBoolean(t, "ServiceRequest", "doNotPerform", element.getDoNotPerformElement(), -1);
12843    if (element.hasCode())
12844      composeCodeableConcept(t, "ServiceRequest", "code", element.getCode(), -1);
12845    for (int i = 0; i < element.getOrderDetail().size(); i++)
12846      composeCodeableConcept(t, "ServiceRequest", "orderDetail", element.getOrderDetail().get(i), i);
12847    if (element.hasSubject())
12848      composeReference(t, "ServiceRequest", "subject", element.getSubject(), -1);
12849    if (element.hasContext())
12850      composeReference(t, "ServiceRequest", "context", element.getContext(), -1);
12851    if (element.hasOccurrence())
12852      composeType(t, "ServiceRequest", "occurrence", element.getOccurrence(), -1);
12853    if (element.hasAsNeeded())
12854      composeType(t, "ServiceRequest", "asNeeded", element.getAsNeeded(), -1);
12855    if (element.hasAuthoredOnElement())
12856      composeDateTime(t, "ServiceRequest", "authoredOn", element.getAuthoredOnElement(), -1);
12857    if (element.hasRequester())
12858      composeReference(t, "ServiceRequest", "requester", element.getRequester(), -1);
12859    if (element.hasPerformerType())
12860      composeCodeableConcept(t, "ServiceRequest", "performerType", element.getPerformerType(), -1);
12861    for (int i = 0; i < element.getPerformer().size(); i++)
12862      composeReference(t, "ServiceRequest", "performer", element.getPerformer().get(i), i);
12863    for (int i = 0; i < element.getReasonCode().size(); i++)
12864      composeCodeableConcept(t, "ServiceRequest", "reasonCode", element.getReasonCode().get(i), i);
12865    for (int i = 0; i < element.getReasonReference().size(); i++)
12866      composeReference(t, "ServiceRequest", "reasonReference", element.getReasonReference().get(i), i);
12867    for (int i = 0; i < element.getInsurance().size(); i++)
12868      composeReference(t, "ServiceRequest", "insurance", element.getInsurance().get(i), i);
12869    for (int i = 0; i < element.getSupportingInfo().size(); i++)
12870      composeReference(t, "ServiceRequest", "supportingInfo", element.getSupportingInfo().get(i), i);
12871    for (int i = 0; i < element.getSpecimen().size(); i++)
12872      composeReference(t, "ServiceRequest", "specimen", element.getSpecimen().get(i), i);
12873    for (int i = 0; i < element.getBodySite().size(); i++)
12874      composeCodeableConcept(t, "ServiceRequest", "bodySite", element.getBodySite().get(i), i);
12875    for (int i = 0; i < element.getNote().size(); i++)
12876      composeAnnotation(t, "ServiceRequest", "note", element.getNote().get(i), i);
12877    if (element.hasPatientInstructionElement())
12878      composeString(t, "ServiceRequest", "patientInstruction", element.getPatientInstructionElement(), -1);
12879    for (int i = 0; i < element.getRelevantHistory().size(); i++)
12880      composeReference(t, "ServiceRequest", "relevantHistory", element.getRelevantHistory().get(i), i);
12881  }
12882
12883  protected void composeSlot(Complex parent, String parentType, String name, Slot element, int index) {
12884    if (element == null) 
12885      return;
12886    Complex t;
12887    if (Utilities.noString(parentType))
12888      t = parent;
12889    else {
12890      t = parent.predicate("fhir:"+parentType+'.'+name);
12891    }
12892    composeDomainResource(t, "Slot", name, element, index);
12893    for (int i = 0; i < element.getIdentifier().size(); i++)
12894      composeIdentifier(t, "Slot", "identifier", element.getIdentifier().get(i), i);
12895    for (int i = 0; i < element.getServiceCategory().size(); i++)
12896      composeCodeableConcept(t, "Slot", "serviceCategory", element.getServiceCategory().get(i), i);
12897    for (int i = 0; i < element.getServiceType().size(); i++)
12898      composeCodeableConcept(t, "Slot", "serviceType", element.getServiceType().get(i), i);
12899    for (int i = 0; i < element.getSpecialty().size(); i++)
12900      composeCodeableConcept(t, "Slot", "specialty", element.getSpecialty().get(i), i);
12901    if (element.hasAppointmentType())
12902      composeCodeableConcept(t, "Slot", "appointmentType", element.getAppointmentType(), -1);
12903    if (element.hasSchedule())
12904      composeReference(t, "Slot", "schedule", element.getSchedule(), -1);
12905    if (element.hasStatusElement())
12906      composeEnum(t, "Slot", "status", element.getStatusElement(), -1);
12907    if (element.hasStartElement())
12908      composeInstant(t, "Slot", "start", element.getStartElement(), -1);
12909    if (element.hasEndElement())
12910      composeInstant(t, "Slot", "end", element.getEndElement(), -1);
12911    if (element.hasOverbookedElement())
12912      composeBoolean(t, "Slot", "overbooked", element.getOverbookedElement(), -1);
12913    if (element.hasCommentElement())
12914      composeString(t, "Slot", "comment", element.getCommentElement(), -1);
12915  }
12916
12917  protected void composeSpecimen(Complex parent, String parentType, String name, Specimen element, int index) {
12918    if (element == null) 
12919      return;
12920    Complex t;
12921    if (Utilities.noString(parentType))
12922      t = parent;
12923    else {
12924      t = parent.predicate("fhir:"+parentType+'.'+name);
12925    }
12926    composeDomainResource(t, "Specimen", name, element, index);
12927    for (int i = 0; i < element.getIdentifier().size(); i++)
12928      composeIdentifier(t, "Specimen", "identifier", element.getIdentifier().get(i), i);
12929    if (element.hasAccessionIdentifier())
12930      composeIdentifier(t, "Specimen", "accessionIdentifier", element.getAccessionIdentifier(), -1);
12931    if (element.hasStatusElement())
12932      composeEnum(t, "Specimen", "status", element.getStatusElement(), -1);
12933    if (element.hasType())
12934      composeCodeableConcept(t, "Specimen", "type", element.getType(), -1);
12935    if (element.hasSubject())
12936      composeReference(t, "Specimen", "subject", element.getSubject(), -1);
12937    if (element.hasReceivedTimeElement())
12938      composeDateTime(t, "Specimen", "receivedTime", element.getReceivedTimeElement(), -1);
12939    for (int i = 0; i < element.getParent().size(); i++)
12940      composeReference(t, "Specimen", "parent", element.getParent().get(i), i);
12941    for (int i = 0; i < element.getRequest().size(); i++)
12942      composeReference(t, "Specimen", "request", element.getRequest().get(i), i);
12943    if (element.hasCollection())
12944      composeSpecimenSpecimenCollectionComponent(t, "Specimen", "collection", element.getCollection(), -1);
12945    for (int i = 0; i < element.getProcessing().size(); i++)
12946      composeSpecimenSpecimenProcessingComponent(t, "Specimen", "processing", element.getProcessing().get(i), i);
12947    for (int i = 0; i < element.getContainer().size(); i++)
12948      composeSpecimenSpecimenContainerComponent(t, "Specimen", "container", element.getContainer().get(i), i);
12949    for (int i = 0; i < element.getNote().size(); i++)
12950      composeAnnotation(t, "Specimen", "note", element.getNote().get(i), i);
12951  }
12952
12953  protected void composeSpecimenSpecimenCollectionComponent(Complex parent, String parentType, String name, Specimen.SpecimenCollectionComponent element, int index) {
12954    if (element == null) 
12955      return;
12956    Complex t;
12957    if (Utilities.noString(parentType))
12958      t = parent;
12959    else {
12960      t = parent.predicate("fhir:"+parentType+'.'+name);
12961    }
12962    composeBackboneElement(t, "collection", name, element, index);
12963    if (element.hasCollector())
12964      composeReference(t, "Specimen", "collector", element.getCollector(), -1);
12965    if (element.hasCollected())
12966      composeType(t, "Specimen", "collected", element.getCollected(), -1);
12967    if (element.hasQuantity())
12968      composeQuantity(t, "Specimen", "quantity", element.getQuantity(), -1);
12969    if (element.hasMethod())
12970      composeCodeableConcept(t, "Specimen", "method", element.getMethod(), -1);
12971    if (element.hasBodySite())
12972      composeCodeableConcept(t, "Specimen", "bodySite", element.getBodySite(), -1);
12973  }
12974
12975  protected void composeSpecimenSpecimenProcessingComponent(Complex parent, String parentType, String name, Specimen.SpecimenProcessingComponent element, int index) {
12976    if (element == null) 
12977      return;
12978    Complex t;
12979    if (Utilities.noString(parentType))
12980      t = parent;
12981    else {
12982      t = parent.predicate("fhir:"+parentType+'.'+name);
12983    }
12984    composeBackboneElement(t, "processing", name, element, index);
12985    if (element.hasDescriptionElement())
12986      composeString(t, "Specimen", "description", element.getDescriptionElement(), -1);
12987    if (element.hasProcedure())
12988      composeCodeableConcept(t, "Specimen", "procedure", element.getProcedure(), -1);
12989    for (int i = 0; i < element.getAdditive().size(); i++)
12990      composeReference(t, "Specimen", "additive", element.getAdditive().get(i), i);
12991    if (element.hasTime())
12992      composeType(t, "Specimen", "time", element.getTime(), -1);
12993  }
12994
12995  protected void composeSpecimenSpecimenContainerComponent(Complex parent, String parentType, String name, Specimen.SpecimenContainerComponent element, int index) {
12996    if (element == null) 
12997      return;
12998    Complex t;
12999    if (Utilities.noString(parentType))
13000      t = parent;
13001    else {
13002      t = parent.predicate("fhir:"+parentType+'.'+name);
13003    }
13004    composeBackboneElement(t, "container", name, element, index);
13005    for (int i = 0; i < element.getIdentifier().size(); i++)
13006      composeIdentifier(t, "Specimen", "identifier", element.getIdentifier().get(i), i);
13007    if (element.hasDescriptionElement())
13008      composeString(t, "Specimen", "description", element.getDescriptionElement(), -1);
13009    if (element.hasType())
13010      composeCodeableConcept(t, "Specimen", "type", element.getType(), -1);
13011    if (element.hasCapacity())
13012      composeQuantity(t, "Specimen", "capacity", element.getCapacity(), -1);
13013    if (element.hasSpecimenQuantity())
13014      composeQuantity(t, "Specimen", "specimenQuantity", element.getSpecimenQuantity(), -1);
13015    if (element.hasAdditive())
13016      composeType(t, "Specimen", "additive", element.getAdditive(), -1);
13017  }
13018
13019  protected void composeSpecimenDefinition(Complex parent, String parentType, String name, SpecimenDefinition element, int index) {
13020    if (element == null) 
13021      return;
13022    Complex t;
13023    if (Utilities.noString(parentType))
13024      t = parent;
13025    else {
13026      t = parent.predicate("fhir:"+parentType+'.'+name);
13027    }
13028    composeDomainResource(t, "SpecimenDefinition", name, element, index);
13029    if (element.hasIdentifier())
13030      composeIdentifier(t, "SpecimenDefinition", "identifier", element.getIdentifier(), -1);
13031    if (element.hasTypeCollected())
13032      composeCodeableConcept(t, "SpecimenDefinition", "typeCollected", element.getTypeCollected(), -1);
13033    if (element.hasPatientPreparationElement())
13034      composeString(t, "SpecimenDefinition", "patientPreparation", element.getPatientPreparationElement(), -1);
13035    if (element.hasTimeAspectElement())
13036      composeString(t, "SpecimenDefinition", "timeAspect", element.getTimeAspectElement(), -1);
13037    for (int i = 0; i < element.getCollection().size(); i++)
13038      composeCodeableConcept(t, "SpecimenDefinition", "collection", element.getCollection().get(i), i);
13039    for (int i = 0; i < element.getSpecimenToLab().size(); i++)
13040      composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponent(t, "SpecimenDefinition", "specimenToLab", element.getSpecimenToLab().get(i), i);
13041  }
13042
13043  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionSpecimenToLabComponent element, int index) {
13044    if (element == null) 
13045      return;
13046    Complex t;
13047    if (Utilities.noString(parentType))
13048      t = parent;
13049    else {
13050      t = parent.predicate("fhir:"+parentType+'.'+name);
13051    }
13052    composeBackboneElement(t, "specimenToLab", name, element, index);
13053    if (element.hasIsDerivedElement())
13054      composeBoolean(t, "SpecimenDefinition", "isDerived", element.getIsDerivedElement(), -1);
13055    if (element.hasType())
13056      composeCodeableConcept(t, "SpecimenDefinition", "type", element.getType(), -1);
13057    if (element.hasPreferenceElement())
13058      composeEnum(t, "SpecimenDefinition", "preference", element.getPreferenceElement(), -1);
13059    if (element.hasContainerMaterial())
13060      composeCodeableConcept(t, "SpecimenDefinition", "containerMaterial", element.getContainerMaterial(), -1);
13061    if (element.hasContainerType())
13062      composeCodeableConcept(t, "SpecimenDefinition", "containerType", element.getContainerType(), -1);
13063    if (element.hasContainerCap())
13064      composeCodeableConcept(t, "SpecimenDefinition", "containerCap", element.getContainerCap(), -1);
13065    if (element.hasContainerDescriptionElement())
13066      composeString(t, "SpecimenDefinition", "containerDescription", element.getContainerDescriptionElement(), -1);
13067    if (element.hasContainerCapacity())
13068      composeQuantity(t, "SpecimenDefinition", "containerCapacity", element.getContainerCapacity(), -1);
13069    if (element.hasContainerMinimumVolume())
13070      composeQuantity(t, "SpecimenDefinition", "containerMinimumVolume", element.getContainerMinimumVolume(), -1);
13071    for (int i = 0; i < element.getContainerAdditive().size(); i++)
13072      composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponent(t, "SpecimenDefinition", "containerAdditive", element.getContainerAdditive().get(i), i);
13073    if (element.hasContainerPreparationElement())
13074      composeString(t, "SpecimenDefinition", "containerPreparation", element.getContainerPreparationElement(), -1);
13075    if (element.hasRequirementElement())
13076      composeString(t, "SpecimenDefinition", "requirement", element.getRequirementElement(), -1);
13077    if (element.hasRetentionTime())
13078      composeDuration(t, "SpecimenDefinition", "retentionTime", element.getRetentionTime(), -1);
13079    for (int i = 0; i < element.getRejectionCriterion().size(); i++)
13080      composeCodeableConcept(t, "SpecimenDefinition", "rejectionCriterion", element.getRejectionCriterion().get(i), i);
13081    for (int i = 0; i < element.getHandling().size(); i++)
13082      composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponent(t, "SpecimenDefinition", "handling", element.getHandling().get(i), i);
13083  }
13084
13085  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionSpecimenToLabContainerAdditiveComponent element, int index) {
13086    if (element == null) 
13087      return;
13088    Complex t;
13089    if (Utilities.noString(parentType))
13090      t = parent;
13091    else {
13092      t = parent.predicate("fhir:"+parentType+'.'+name);
13093    }
13094    composeBackboneElement(t, "containerAdditive", name, element, index);
13095    if (element.hasAdditive())
13096      composeType(t, "SpecimenDefinition", "additive", element.getAdditive(), -1);
13097  }
13098
13099  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionSpecimenToLabHandlingComponent element, int index) {
13100    if (element == null) 
13101      return;
13102    Complex t;
13103    if (Utilities.noString(parentType))
13104      t = parent;
13105    else {
13106      t = parent.predicate("fhir:"+parentType+'.'+name);
13107    }
13108    composeBackboneElement(t, "handling", name, element, index);
13109    if (element.hasConditionSet())
13110      composeCodeableConcept(t, "SpecimenDefinition", "conditionSet", element.getConditionSet(), -1);
13111    if (element.hasTempRange())
13112      composeRange(t, "SpecimenDefinition", "tempRange", element.getTempRange(), -1);
13113    if (element.hasMaxDuration())
13114      composeDuration(t, "SpecimenDefinition", "maxDuration", element.getMaxDuration(), -1);
13115    if (element.hasLightExposureElement())
13116      composeString(t, "SpecimenDefinition", "lightExposure", element.getLightExposureElement(), -1);
13117    if (element.hasInstructionElement())
13118      composeString(t, "SpecimenDefinition", "instruction", element.getInstructionElement(), -1);
13119  }
13120
13121  protected void composeStructureDefinition(Complex parent, String parentType, String name, StructureDefinition element, int index) {
13122    if (element == null) 
13123      return;
13124    Complex t;
13125    if (Utilities.noString(parentType))
13126      t = parent;
13127    else {
13128      t = parent.predicate("fhir:"+parentType+'.'+name);
13129    }
13130    composeDomainResource(t, "StructureDefinition", name, element, index);
13131    if (element.hasUrlElement())
13132      composeUri(t, "StructureDefinition", "url", element.getUrlElement(), -1);
13133    for (int i = 0; i < element.getIdentifier().size(); i++)
13134      composeIdentifier(t, "StructureDefinition", "identifier", element.getIdentifier().get(i), i);
13135    if (element.hasVersionElement())
13136      composeString(t, "StructureDefinition", "version", element.getVersionElement(), -1);
13137    if (element.hasNameElement())
13138      composeString(t, "StructureDefinition", "name", element.getNameElement(), -1);
13139    if (element.hasTitleElement())
13140      composeString(t, "StructureDefinition", "title", element.getTitleElement(), -1);
13141    if (element.hasStatusElement())
13142      composeEnum(t, "StructureDefinition", "status", element.getStatusElement(), -1);
13143    if (element.hasExperimentalElement())
13144      composeBoolean(t, "StructureDefinition", "experimental", element.getExperimentalElement(), -1);
13145    if (element.hasDateElement())
13146      composeDateTime(t, "StructureDefinition", "date", element.getDateElement(), -1);
13147    if (element.hasPublisherElement())
13148      composeString(t, "StructureDefinition", "publisher", element.getPublisherElement(), -1);
13149    for (int i = 0; i < element.getContact().size(); i++)
13150      composeContactDetail(t, "StructureDefinition", "contact", element.getContact().get(i), i);
13151    if (element.hasDescriptionElement())
13152      composeMarkdown(t, "StructureDefinition", "description", element.getDescriptionElement(), -1);
13153    for (int i = 0; i < element.getUseContext().size(); i++)
13154      composeUsageContext(t, "StructureDefinition", "useContext", element.getUseContext().get(i), i);
13155    for (int i = 0; i < element.getJurisdiction().size(); i++)
13156      composeCodeableConcept(t, "StructureDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
13157    if (element.hasPurposeElement())
13158      composeMarkdown(t, "StructureDefinition", "purpose", element.getPurposeElement(), -1);
13159    if (element.hasCopyrightElement())
13160      composeMarkdown(t, "StructureDefinition", "copyright", element.getCopyrightElement(), -1);
13161    for (int i = 0; i < element.getKeyword().size(); i++)
13162      composeCoding(t, "StructureDefinition", "keyword", element.getKeyword().get(i), i);
13163    if (element.hasFhirVersionElement())
13164      composeId(t, "StructureDefinition", "fhirVersion", element.getFhirVersionElement(), -1);
13165    for (int i = 0; i < element.getMapping().size(); i++)
13166      composeStructureDefinitionStructureDefinitionMappingComponent(t, "StructureDefinition", "mapping", element.getMapping().get(i), i);
13167    if (element.hasKindElement())
13168      composeEnum(t, "StructureDefinition", "kind", element.getKindElement(), -1);
13169    if (element.hasAbstractElement())
13170      composeBoolean(t, "StructureDefinition", "abstract", element.getAbstractElement(), -1);
13171    for (int i = 0; i < element.getContext().size(); i++)
13172      composeStructureDefinitionStructureDefinitionContextComponent(t, "StructureDefinition", "context", element.getContext().get(i), i);
13173    for (int i = 0; i < element.getContextInvariant().size(); i++)
13174      composeString(t, "StructureDefinition", "contextInvariant", element.getContextInvariant().get(i), i);
13175    if (element.hasTypeElement())
13176      composeUri(t, "StructureDefinition", "type", element.getTypeElement(), -1);
13177    if (element.hasBaseDefinitionElement())
13178      composeCanonical(t, "StructureDefinition", "baseDefinition", element.getBaseDefinitionElement(), -1);
13179    if (element.hasDerivationElement())
13180      composeEnum(t, "StructureDefinition", "derivation", element.getDerivationElement(), -1);
13181    if (element.hasSnapshot())
13182      composeStructureDefinitionStructureDefinitionSnapshotComponent(t, "StructureDefinition", "snapshot", element.getSnapshot(), -1);
13183    if (element.hasDifferential())
13184      composeStructureDefinitionStructureDefinitionDifferentialComponent(t, "StructureDefinition", "differential", element.getDifferential(), -1);
13185  }
13186
13187  protected void composeStructureDefinitionStructureDefinitionMappingComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionMappingComponent element, int index) {
13188    if (element == null) 
13189      return;
13190    Complex t;
13191    if (Utilities.noString(parentType))
13192      t = parent;
13193    else {
13194      t = parent.predicate("fhir:"+parentType+'.'+name);
13195    }
13196    composeBackboneElement(t, "mapping", name, element, index);
13197    if (element.hasIdentityElement())
13198      composeId(t, "StructureDefinition", "identity", element.getIdentityElement(), -1);
13199    if (element.hasUriElement())
13200      composeUri(t, "StructureDefinition", "uri", element.getUriElement(), -1);
13201    if (element.hasNameElement())
13202      composeString(t, "StructureDefinition", "name", element.getNameElement(), -1);
13203    if (element.hasCommentElement())
13204      composeString(t, "StructureDefinition", "comment", element.getCommentElement(), -1);
13205  }
13206
13207  protected void composeStructureDefinitionStructureDefinitionContextComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionContextComponent element, int index) {
13208    if (element == null) 
13209      return;
13210    Complex t;
13211    if (Utilities.noString(parentType))
13212      t = parent;
13213    else {
13214      t = parent.predicate("fhir:"+parentType+'.'+name);
13215    }
13216    composeBackboneElement(t, "context", name, element, index);
13217    if (element.hasTypeElement())
13218      composeEnum(t, "StructureDefinition", "type", element.getTypeElement(), -1);
13219    if (element.hasExpressionElement())
13220      composeString(t, "StructureDefinition", "expression", element.getExpressionElement(), -1);
13221  }
13222
13223  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionSnapshotComponent element, int index) {
13224    if (element == null) 
13225      return;
13226    Complex t;
13227    if (Utilities.noString(parentType))
13228      t = parent;
13229    else {
13230      t = parent.predicate("fhir:"+parentType+'.'+name);
13231    }
13232    composeBackboneElement(t, "snapshot", name, element, index);
13233    for (int i = 0; i < element.getElement().size(); i++)
13234      composeElementDefinition(t, "StructureDefinition", "element", element.getElement().get(i), i);
13235  }
13236
13237  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionDifferentialComponent element, int index) {
13238    if (element == null) 
13239      return;
13240    Complex t;
13241    if (Utilities.noString(parentType))
13242      t = parent;
13243    else {
13244      t = parent.predicate("fhir:"+parentType+'.'+name);
13245    }
13246    composeBackboneElement(t, "differential", name, element, index);
13247    for (int i = 0; i < element.getElement().size(); i++)
13248      composeElementDefinition(t, "StructureDefinition", "element", element.getElement().get(i), i);
13249  }
13250
13251  protected void composeStructureMap(Complex parent, String parentType, String name, StructureMap element, int index) {
13252    if (element == null) 
13253      return;
13254    Complex t;
13255    if (Utilities.noString(parentType))
13256      t = parent;
13257    else {
13258      t = parent.predicate("fhir:"+parentType+'.'+name);
13259    }
13260    composeDomainResource(t, "StructureMap", name, element, index);
13261    if (element.hasUrlElement())
13262      composeUri(t, "StructureMap", "url", element.getUrlElement(), -1);
13263    for (int i = 0; i < element.getIdentifier().size(); i++)
13264      composeIdentifier(t, "StructureMap", "identifier", element.getIdentifier().get(i), i);
13265    if (element.hasVersionElement())
13266      composeString(t, "StructureMap", "version", element.getVersionElement(), -1);
13267    if (element.hasNameElement())
13268      composeString(t, "StructureMap", "name", element.getNameElement(), -1);
13269    if (element.hasTitleElement())
13270      composeString(t, "StructureMap", "title", element.getTitleElement(), -1);
13271    if (element.hasStatusElement())
13272      composeEnum(t, "StructureMap", "status", element.getStatusElement(), -1);
13273    if (element.hasExperimentalElement())
13274      composeBoolean(t, "StructureMap", "experimental", element.getExperimentalElement(), -1);
13275    if (element.hasDateElement())
13276      composeDateTime(t, "StructureMap", "date", element.getDateElement(), -1);
13277    if (element.hasPublisherElement())
13278      composeString(t, "StructureMap", "publisher", element.getPublisherElement(), -1);
13279    for (int i = 0; i < element.getContact().size(); i++)
13280      composeContactDetail(t, "StructureMap", "contact", element.getContact().get(i), i);
13281    if (element.hasDescriptionElement())
13282      composeMarkdown(t, "StructureMap", "description", element.getDescriptionElement(), -1);
13283    for (int i = 0; i < element.getUseContext().size(); i++)
13284      composeUsageContext(t, "StructureMap", "useContext", element.getUseContext().get(i), i);
13285    for (int i = 0; i < element.getJurisdiction().size(); i++)
13286      composeCodeableConcept(t, "StructureMap", "jurisdiction", element.getJurisdiction().get(i), i);
13287    if (element.hasPurposeElement())
13288      composeMarkdown(t, "StructureMap", "purpose", element.getPurposeElement(), -1);
13289    if (element.hasCopyrightElement())
13290      composeMarkdown(t, "StructureMap", "copyright", element.getCopyrightElement(), -1);
13291    for (int i = 0; i < element.getStructure().size(); i++)
13292      composeStructureMapStructureMapStructureComponent(t, "StructureMap", "structure", element.getStructure().get(i), i);
13293    for (int i = 0; i < element.getImport().size(); i++)
13294      composeCanonical(t, "StructureMap", "import", element.getImport().get(i), i);
13295    for (int i = 0; i < element.getGroup().size(); i++)
13296      composeStructureMapStructureMapGroupComponent(t, "StructureMap", "group", element.getGroup().get(i), i);
13297  }
13298
13299  protected void composeStructureMapStructureMapStructureComponent(Complex parent, String parentType, String name, StructureMap.StructureMapStructureComponent element, int index) {
13300    if (element == null) 
13301      return;
13302    Complex t;
13303    if (Utilities.noString(parentType))
13304      t = parent;
13305    else {
13306      t = parent.predicate("fhir:"+parentType+'.'+name);
13307    }
13308    composeBackboneElement(t, "structure", name, element, index);
13309    if (element.hasUrlElement())
13310      composeCanonical(t, "StructureMap", "url", element.getUrlElement(), -1);
13311    if (element.hasModeElement())
13312      composeEnum(t, "StructureMap", "mode", element.getModeElement(), -1);
13313    if (element.hasAliasElement())
13314      composeString(t, "StructureMap", "alias", element.getAliasElement(), -1);
13315    if (element.hasDocumentationElement())
13316      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
13317  }
13318
13319  protected void composeStructureMapStructureMapGroupComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupComponent element, int index) {
13320    if (element == null) 
13321      return;
13322    Complex t;
13323    if (Utilities.noString(parentType))
13324      t = parent;
13325    else {
13326      t = parent.predicate("fhir:"+parentType+'.'+name);
13327    }
13328    composeBackboneElement(t, "group", name, element, index);
13329    if (element.hasNameElement())
13330      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
13331    if (element.hasExtendsElement())
13332      composeId(t, "StructureMap", "extends", element.getExtendsElement(), -1);
13333    if (element.hasTypeModeElement())
13334      composeEnum(t, "StructureMap", "typeMode", element.getTypeModeElement(), -1);
13335    if (element.hasDocumentationElement())
13336      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
13337    for (int i = 0; i < element.getInput().size(); i++)
13338      composeStructureMapStructureMapGroupInputComponent(t, "StructureMap", "input", element.getInput().get(i), i);
13339    for (int i = 0; i < element.getRule().size(); i++)
13340      composeStructureMapStructureMapGroupRuleComponent(t, "StructureMap", "rule", element.getRule().get(i), i);
13341  }
13342
13343  protected void composeStructureMapStructureMapGroupInputComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupInputComponent element, int index) {
13344    if (element == null) 
13345      return;
13346    Complex t;
13347    if (Utilities.noString(parentType))
13348      t = parent;
13349    else {
13350      t = parent.predicate("fhir:"+parentType+'.'+name);
13351    }
13352    composeBackboneElement(t, "input", name, element, index);
13353    if (element.hasNameElement())
13354      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
13355    if (element.hasTypeElement())
13356      composeString(t, "StructureMap", "type", element.getTypeElement(), -1);
13357    if (element.hasModeElement())
13358      composeEnum(t, "StructureMap", "mode", element.getModeElement(), -1);
13359    if (element.hasDocumentationElement())
13360      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
13361  }
13362
13363  protected void composeStructureMapStructureMapGroupRuleComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleComponent element, int index) {
13364    if (element == null) 
13365      return;
13366    Complex t;
13367    if (Utilities.noString(parentType))
13368      t = parent;
13369    else {
13370      t = parent.predicate("fhir:"+parentType+'.'+name);
13371    }
13372    composeBackboneElement(t, "rule", name, element, index);
13373    if (element.hasNameElement())
13374      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
13375    for (int i = 0; i < element.getSource().size(); i++)
13376      composeStructureMapStructureMapGroupRuleSourceComponent(t, "StructureMap", "source", element.getSource().get(i), i);
13377    for (int i = 0; i < element.getTarget().size(); i++)
13378      composeStructureMapStructureMapGroupRuleTargetComponent(t, "StructureMap", "target", element.getTarget().get(i), i);
13379    for (int i = 0; i < element.getRule().size(); i++)
13380      composeStructureMapStructureMapGroupRuleComponent(t, "StructureMap", "rule", element.getRule().get(i), i);
13381    for (int i = 0; i < element.getDependent().size(); i++)
13382      composeStructureMapStructureMapGroupRuleDependentComponent(t, "StructureMap", "dependent", element.getDependent().get(i), i);
13383    if (element.hasDocumentationElement())
13384      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
13385  }
13386
13387  protected void composeStructureMapStructureMapGroupRuleSourceComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleSourceComponent element, int index) {
13388    if (element == null) 
13389      return;
13390    Complex t;
13391    if (Utilities.noString(parentType))
13392      t = parent;
13393    else {
13394      t = parent.predicate("fhir:"+parentType+'.'+name);
13395    }
13396    composeBackboneElement(t, "source", name, element, index);
13397    if (element.hasContextElement())
13398      composeId(t, "StructureMap", "context", element.getContextElement(), -1);
13399    if (element.hasMinElement())
13400      composeInteger(t, "StructureMap", "min", element.getMinElement(), -1);
13401    if (element.hasMaxElement())
13402      composeString(t, "StructureMap", "max", element.getMaxElement(), -1);
13403    if (element.hasTypeElement())
13404      composeString(t, "StructureMap", "type", element.getTypeElement(), -1);
13405    if (element.hasDefaultValue())
13406      composeType(t, "StructureMap", "defaultValue", element.getDefaultValue(), -1);
13407    if (element.hasElementElement())
13408      composeString(t, "StructureMap", "element", element.getElementElement(), -1);
13409    if (element.hasListModeElement())
13410      composeEnum(t, "StructureMap", "listMode", element.getListModeElement(), -1);
13411    if (element.hasVariableElement())
13412      composeId(t, "StructureMap", "variable", element.getVariableElement(), -1);
13413    if (element.hasConditionElement())
13414      composeString(t, "StructureMap", "condition", element.getConditionElement(), -1);
13415    if (element.hasCheckElement())
13416      composeString(t, "StructureMap", "check", element.getCheckElement(), -1);
13417  }
13418
13419  protected void composeStructureMapStructureMapGroupRuleTargetComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleTargetComponent element, int index) {
13420    if (element == null) 
13421      return;
13422    Complex t;
13423    if (Utilities.noString(parentType))
13424      t = parent;
13425    else {
13426      t = parent.predicate("fhir:"+parentType+'.'+name);
13427    }
13428    composeBackboneElement(t, "target", name, element, index);
13429    if (element.hasContextElement())
13430      composeId(t, "StructureMap", "context", element.getContextElement(), -1);
13431    if (element.hasContextTypeElement())
13432      composeEnum(t, "StructureMap", "contextType", element.getContextTypeElement(), -1);
13433    if (element.hasElementElement())
13434      composeString(t, "StructureMap", "element", element.getElementElement(), -1);
13435    if (element.hasVariableElement())
13436      composeId(t, "StructureMap", "variable", element.getVariableElement(), -1);
13437    for (int i = 0; i < element.getListMode().size(); i++)
13438      composeEnum(t, "StructureMap", "listMode", element.getListMode().get(i), i);
13439    if (element.hasListRuleIdElement())
13440      composeId(t, "StructureMap", "listRuleId", element.getListRuleIdElement(), -1);
13441    if (element.hasTransformElement())
13442      composeEnum(t, "StructureMap", "transform", element.getTransformElement(), -1);
13443    for (int i = 0; i < element.getParameter().size(); i++)
13444      composeStructureMapStructureMapGroupRuleTargetParameterComponent(t, "StructureMap", "parameter", element.getParameter().get(i), i);
13445  }
13446
13447  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element, int index) {
13448    if (element == null) 
13449      return;
13450    Complex t;
13451    if (Utilities.noString(parentType))
13452      t = parent;
13453    else {
13454      t = parent.predicate("fhir:"+parentType+'.'+name);
13455    }
13456    composeBackboneElement(t, "parameter", name, element, index);
13457    if (element.hasValue())
13458      composeType(t, "StructureMap", "value", element.getValue(), -1);
13459  }
13460
13461  protected void composeStructureMapStructureMapGroupRuleDependentComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleDependentComponent element, int index) {
13462    if (element == null) 
13463      return;
13464    Complex t;
13465    if (Utilities.noString(parentType))
13466      t = parent;
13467    else {
13468      t = parent.predicate("fhir:"+parentType+'.'+name);
13469    }
13470    composeBackboneElement(t, "dependent", name, element, index);
13471    if (element.hasNameElement())
13472      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
13473    for (int i = 0; i < element.getVariable().size(); i++)
13474      composeString(t, "StructureMap", "variable", element.getVariable().get(i), i);
13475  }
13476
13477  protected void composeSubscription(Complex parent, String parentType, String name, Subscription element, int index) {
13478    if (element == null) 
13479      return;
13480    Complex t;
13481    if (Utilities.noString(parentType))
13482      t = parent;
13483    else {
13484      t = parent.predicate("fhir:"+parentType+'.'+name);
13485    }
13486    composeDomainResource(t, "Subscription", name, element, index);
13487    if (element.hasStatusElement())
13488      composeEnum(t, "Subscription", "status", element.getStatusElement(), -1);
13489    for (int i = 0; i < element.getContact().size(); i++)
13490      composeContactPoint(t, "Subscription", "contact", element.getContact().get(i), i);
13491    if (element.hasEndElement())
13492      composeInstant(t, "Subscription", "end", element.getEndElement(), -1);
13493    if (element.hasReasonElement())
13494      composeString(t, "Subscription", "reason", element.getReasonElement(), -1);
13495    if (element.hasCriteriaElement())
13496      composeString(t, "Subscription", "criteria", element.getCriteriaElement(), -1);
13497    if (element.hasErrorElement())
13498      composeString(t, "Subscription", "error", element.getErrorElement(), -1);
13499    if (element.hasChannel())
13500      composeSubscriptionSubscriptionChannelComponent(t, "Subscription", "channel", element.getChannel(), -1);
13501    for (int i = 0; i < element.getTag().size(); i++)
13502      composeCoding(t, "Subscription", "tag", element.getTag().get(i), i);
13503  }
13504
13505  protected void composeSubscriptionSubscriptionChannelComponent(Complex parent, String parentType, String name, Subscription.SubscriptionChannelComponent element, int index) {
13506    if (element == null) 
13507      return;
13508    Complex t;
13509    if (Utilities.noString(parentType))
13510      t = parent;
13511    else {
13512      t = parent.predicate("fhir:"+parentType+'.'+name);
13513    }
13514    composeBackboneElement(t, "channel", name, element, index);
13515    if (element.hasTypeElement())
13516      composeEnum(t, "Subscription", "type", element.getTypeElement(), -1);
13517    if (element.hasEndpointElement())
13518      composeUrl(t, "Subscription", "endpoint", element.getEndpointElement(), -1);
13519    if (element.hasPayloadElement())
13520      composeString(t, "Subscription", "payload", element.getPayloadElement(), -1);
13521    for (int i = 0; i < element.getHeader().size(); i++)
13522      composeString(t, "Subscription", "header", element.getHeader().get(i), i);
13523  }
13524
13525  protected void composeSubstance(Complex parent, String parentType, String name, Substance element, int index) {
13526    if (element == null) 
13527      return;
13528    Complex t;
13529    if (Utilities.noString(parentType))
13530      t = parent;
13531    else {
13532      t = parent.predicate("fhir:"+parentType+'.'+name);
13533    }
13534    composeDomainResource(t, "Substance", name, element, index);
13535    for (int i = 0; i < element.getIdentifier().size(); i++)
13536      composeIdentifier(t, "Substance", "identifier", element.getIdentifier().get(i), i);
13537    if (element.hasStatusElement())
13538      composeEnum(t, "Substance", "status", element.getStatusElement(), -1);
13539    for (int i = 0; i < element.getCategory().size(); i++)
13540      composeCodeableConcept(t, "Substance", "category", element.getCategory().get(i), i);
13541    if (element.hasCode())
13542      composeCodeableConcept(t, "Substance", "code", element.getCode(), -1);
13543    if (element.hasDescriptionElement())
13544      composeString(t, "Substance", "description", element.getDescriptionElement(), -1);
13545    for (int i = 0; i < element.getInstance().size(); i++)
13546      composeSubstanceSubstanceInstanceComponent(t, "Substance", "instance", element.getInstance().get(i), i);
13547    for (int i = 0; i < element.getIngredient().size(); i++)
13548      composeSubstanceSubstanceIngredientComponent(t, "Substance", "ingredient", element.getIngredient().get(i), i);
13549  }
13550
13551  protected void composeSubstanceSubstanceInstanceComponent(Complex parent, String parentType, String name, Substance.SubstanceInstanceComponent element, int index) {
13552    if (element == null) 
13553      return;
13554    Complex t;
13555    if (Utilities.noString(parentType))
13556      t = parent;
13557    else {
13558      t = parent.predicate("fhir:"+parentType+'.'+name);
13559    }
13560    composeBackboneElement(t, "instance", name, element, index);
13561    if (element.hasIdentifier())
13562      composeIdentifier(t, "Substance", "identifier", element.getIdentifier(), -1);
13563    if (element.hasExpiryElement())
13564      composeDateTime(t, "Substance", "expiry", element.getExpiryElement(), -1);
13565    if (element.hasQuantity())
13566      composeQuantity(t, "Substance", "quantity", element.getQuantity(), -1);
13567  }
13568
13569  protected void composeSubstanceSubstanceIngredientComponent(Complex parent, String parentType, String name, Substance.SubstanceIngredientComponent element, int index) {
13570    if (element == null) 
13571      return;
13572    Complex t;
13573    if (Utilities.noString(parentType))
13574      t = parent;
13575    else {
13576      t = parent.predicate("fhir:"+parentType+'.'+name);
13577    }
13578    composeBackboneElement(t, "ingredient", name, element, index);
13579    if (element.hasQuantity())
13580      composeRatio(t, "Substance", "quantity", element.getQuantity(), -1);
13581    if (element.hasSubstance())
13582      composeType(t, "Substance", "substance", element.getSubstance(), -1);
13583  }
13584
13585  protected void composeSubstancePolymer(Complex parent, String parentType, String name, SubstancePolymer element, int index) {
13586    if (element == null) 
13587      return;
13588    Complex t;
13589    if (Utilities.noString(parentType))
13590      t = parent;
13591    else {
13592      t = parent.predicate("fhir:"+parentType+'.'+name);
13593    }
13594    composeDomainResource(t, "SubstancePolymer", name, element, index);
13595    if (element.hasClass_())
13596      composeCodeableConcept(t, "SubstancePolymer", "class", element.getClass_(), -1);
13597    if (element.hasGeometry())
13598      composeCodeableConcept(t, "SubstancePolymer", "geometry", element.getGeometry(), -1);
13599    for (int i = 0; i < element.getCopolymerConnectivity().size(); i++)
13600      composeCodeableConcept(t, "SubstancePolymer", "copolymerConnectivity", element.getCopolymerConnectivity().get(i), i);
13601    for (int i = 0; i < element.getModification().size(); i++)
13602      composeString(t, "SubstancePolymer", "modification", element.getModification().get(i), i);
13603    for (int i = 0; i < element.getMonomerSet().size(); i++)
13604      composeSubstancePolymerSubstancePolymerMonomerSetComponent(t, "SubstancePolymer", "monomerSet", element.getMonomerSet().get(i), i);
13605    for (int i = 0; i < element.getRepeat().size(); i++)
13606      composeSubstancePolymerSubstancePolymerRepeatComponent(t, "SubstancePolymer", "repeat", element.getRepeat().get(i), i);
13607  }
13608
13609  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element, int index) {
13610    if (element == null) 
13611      return;
13612    Complex t;
13613    if (Utilities.noString(parentType))
13614      t = parent;
13615    else {
13616      t = parent.predicate("fhir:"+parentType+'.'+name);
13617    }
13618    composeBackboneElement(t, "monomerSet", name, element, index);
13619    if (element.hasRatioType())
13620      composeCodeableConcept(t, "SubstancePolymer", "ratioType", element.getRatioType(), -1);
13621    for (int i = 0; i < element.getStartingMaterial().size(); i++)
13622      composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(t, "SubstancePolymer", "startingMaterial", element.getStartingMaterial().get(i), i);
13623  }
13624
13625  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element, int index) {
13626    if (element == null) 
13627      return;
13628    Complex t;
13629    if (Utilities.noString(parentType))
13630      t = parent;
13631    else {
13632      t = parent.predicate("fhir:"+parentType+'.'+name);
13633    }
13634    composeBackboneElement(t, "startingMaterial", name, element, index);
13635    if (element.hasMaterial())
13636      composeCodeableConcept(t, "SubstancePolymer", "material", element.getMaterial(), -1);
13637    if (element.hasType())
13638      composeCodeableConcept(t, "SubstancePolymer", "type", element.getType(), -1);
13639    if (element.hasIsDefiningElement())
13640      composeBoolean(t, "SubstancePolymer", "isDefining", element.getIsDefiningElement(), -1);
13641    if (element.hasAmount())
13642      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
13643  }
13644
13645  protected void composeSubstancePolymerSubstancePolymerRepeatComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatComponent element, int index) {
13646    if (element == null) 
13647      return;
13648    Complex t;
13649    if (Utilities.noString(parentType))
13650      t = parent;
13651    else {
13652      t = parent.predicate("fhir:"+parentType+'.'+name);
13653    }
13654    composeBackboneElement(t, "repeat", name, element, index);
13655    if (element.hasNumberOfUnitsElement())
13656      composeInteger(t, "SubstancePolymer", "numberOfUnits", element.getNumberOfUnitsElement(), -1);
13657    if (element.hasAverageMolecularFormulaElement())
13658      composeString(t, "SubstancePolymer", "averageMolecularFormula", element.getAverageMolecularFormulaElement(), -1);
13659    if (element.hasRepeatUnitAmountType())
13660      composeCodeableConcept(t, "SubstancePolymer", "repeatUnitAmountType", element.getRepeatUnitAmountType(), -1);
13661    for (int i = 0; i < element.getRepeatUnit().size(); i++)
13662      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(t, "SubstancePolymer", "repeatUnit", element.getRepeatUnit().get(i), i);
13663  }
13664
13665  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element, int index) {
13666    if (element == null) 
13667      return;
13668    Complex t;
13669    if (Utilities.noString(parentType))
13670      t = parent;
13671    else {
13672      t = parent.predicate("fhir:"+parentType+'.'+name);
13673    }
13674    composeBackboneElement(t, "repeatUnit", name, element, index);
13675    if (element.hasOrientationOfPolymerisation())
13676      composeCodeableConcept(t, "SubstancePolymer", "orientationOfPolymerisation", element.getOrientationOfPolymerisation(), -1);
13677    if (element.hasRepeatUnitElement())
13678      composeString(t, "SubstancePolymer", "repeatUnit", element.getRepeatUnitElement(), -1);
13679    if (element.hasAmount())
13680      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
13681    for (int i = 0; i < element.getDegreeOfPolymerisation().size(); i++)
13682      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(t, "SubstancePolymer", "degreeOfPolymerisation", element.getDegreeOfPolymerisation().get(i), i);
13683    for (int i = 0; i < element.getStructuralRepresentation().size(); i++)
13684      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(t, "SubstancePolymer", "structuralRepresentation", element.getStructuralRepresentation().get(i), i);
13685  }
13686
13687  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element, int index) {
13688    if (element == null) 
13689      return;
13690    Complex t;
13691    if (Utilities.noString(parentType))
13692      t = parent;
13693    else {
13694      t = parent.predicate("fhir:"+parentType+'.'+name);
13695    }
13696    composeBackboneElement(t, "degreeOfPolymerisation", name, element, index);
13697    if (element.hasDegree())
13698      composeCodeableConcept(t, "SubstancePolymer", "degree", element.getDegree(), -1);
13699    if (element.hasAmount())
13700      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
13701  }
13702
13703  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element, int index) {
13704    if (element == null) 
13705      return;
13706    Complex t;
13707    if (Utilities.noString(parentType))
13708      t = parent;
13709    else {
13710      t = parent.predicate("fhir:"+parentType+'.'+name);
13711    }
13712    composeBackboneElement(t, "structuralRepresentation", name, element, index);
13713    if (element.hasType())
13714      composeCodeableConcept(t, "SubstancePolymer", "type", element.getType(), -1);
13715    if (element.hasRepresentationElement())
13716      composeString(t, "SubstancePolymer", "representation", element.getRepresentationElement(), -1);
13717    if (element.hasAttachment())
13718      composeAttachment(t, "SubstancePolymer", "attachment", element.getAttachment(), -1);
13719  }
13720
13721  protected void composeSubstanceReferenceInformation(Complex parent, String parentType, String name, SubstanceReferenceInformation element, int index) {
13722    if (element == null) 
13723      return;
13724    Complex t;
13725    if (Utilities.noString(parentType))
13726      t = parent;
13727    else {
13728      t = parent.predicate("fhir:"+parentType+'.'+name);
13729    }
13730    composeDomainResource(t, "SubstanceReferenceInformation", name, element, index);
13731    if (element.hasCommentElement())
13732      composeString(t, "SubstanceReferenceInformation", "comment", element.getCommentElement(), -1);
13733    for (int i = 0; i < element.getGene().size(); i++)
13734      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(t, "SubstanceReferenceInformation", "gene", element.getGene().get(i), i);
13735    for (int i = 0; i < element.getGene().size(); i++)
13736      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(t, "SubstanceReferenceInformation", "geneElement", element.getGene().get(i), i);
13737    for (int i = 0; i < element.getClassification().size(); i++)
13738      composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(t, "SubstanceReferenceInformation", "classification", element.getClassification().get(i), i);
13739    for (int i = 0; i < element.getRelationship().size(); i++)
13740      composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(t, "SubstanceReferenceInformation", "relationship", element.getRelationship().get(i), i);
13741    for (int i = 0; i < element.getTarget().size(); i++)
13742      composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(t, "SubstanceReferenceInformation", "target", element.getTarget().get(i), i);
13743  }
13744
13745  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element, int index) {
13746    if (element == null) 
13747      return;
13748    Complex t;
13749    if (Utilities.noString(parentType))
13750      t = parent;
13751    else {
13752      t = parent.predicate("fhir:"+parentType+'.'+name);
13753    }
13754    composeBackboneElement(t, "gene", name, element, index);
13755    if (element.hasGeneSequenceOrigin())
13756      composeCodeableConcept(t, "SubstanceReferenceInformation", "geneSequenceOrigin", element.getGeneSequenceOrigin(), -1);
13757    if (element.hasGene())
13758      composeCodeableConcept(t, "SubstanceReferenceInformation", "gene", element.getGene(), -1);
13759    for (int i = 0; i < element.getSource().size(); i++)
13760      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
13761  }
13762
13763  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element, int index) {
13764    if (element == null) 
13765      return;
13766    Complex t;
13767    if (Utilities.noString(parentType))
13768      t = parent;
13769    else {
13770      t = parent.predicate("fhir:"+parentType+'.'+name);
13771    }
13772    composeBackboneElement(t, "geneElement", name, element, index);
13773    if (element.hasType())
13774      composeCodeableConcept(t, "SubstanceReferenceInformation", "type", element.getType(), -1);
13775    if (element.hasElement())
13776      composeIdentifier(t, "SubstanceReferenceInformation", "element", element.getElement(), -1);
13777    for (int i = 0; i < element.getSource().size(); i++)
13778      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
13779  }
13780
13781  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element, int index) {
13782    if (element == null) 
13783      return;
13784    Complex t;
13785    if (Utilities.noString(parentType))
13786      t = parent;
13787    else {
13788      t = parent.predicate("fhir:"+parentType+'.'+name);
13789    }
13790    composeBackboneElement(t, "classification", name, element, index);
13791    if (element.hasDomain())
13792      composeCodeableConcept(t, "SubstanceReferenceInformation", "domain", element.getDomain(), -1);
13793    if (element.hasClassification())
13794      composeCodeableConcept(t, "SubstanceReferenceInformation", "classification", element.getClassification(), -1);
13795    for (int i = 0; i < element.getSubtype().size(); i++)
13796      composeCodeableConcept(t, "SubstanceReferenceInformation", "subtype", element.getSubtype().get(i), i);
13797    for (int i = 0; i < element.getSource().size(); i++)
13798      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
13799  }
13800
13801  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent element, int index) {
13802    if (element == null) 
13803      return;
13804    Complex t;
13805    if (Utilities.noString(parentType))
13806      t = parent;
13807    else {
13808      t = parent.predicate("fhir:"+parentType+'.'+name);
13809    }
13810    composeBackboneElement(t, "relationship", name, element, index);
13811    if (element.hasSubstance())
13812      composeType(t, "SubstanceReferenceInformation", "substance", element.getSubstance(), -1);
13813    if (element.hasRelationship())
13814      composeCodeableConcept(t, "SubstanceReferenceInformation", "relationship", element.getRelationship(), -1);
13815    if (element.hasInteraction())
13816      composeCodeableConcept(t, "SubstanceReferenceInformation", "interaction", element.getInteraction(), -1);
13817    if (element.hasIsDefiningElement())
13818      composeBoolean(t, "SubstanceReferenceInformation", "isDefining", element.getIsDefiningElement(), -1);
13819    if (element.hasAmount())
13820      composeType(t, "SubstanceReferenceInformation", "amount", element.getAmount(), -1);
13821    if (element.hasAmountType())
13822      composeCodeableConcept(t, "SubstanceReferenceInformation", "amountType", element.getAmountType(), -1);
13823    if (element.hasAmountTextElement())
13824      composeString(t, "SubstanceReferenceInformation", "amountText", element.getAmountTextElement(), -1);
13825    for (int i = 0; i < element.getSource().size(); i++)
13826      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
13827  }
13828
13829  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element, int index) {
13830    if (element == null) 
13831      return;
13832    Complex t;
13833    if (Utilities.noString(parentType))
13834      t = parent;
13835    else {
13836      t = parent.predicate("fhir:"+parentType+'.'+name);
13837    }
13838    composeBackboneElement(t, "target", name, element, index);
13839    if (element.hasTarget())
13840      composeIdentifier(t, "SubstanceReferenceInformation", "target", element.getTarget(), -1);
13841    if (element.hasType())
13842      composeCodeableConcept(t, "SubstanceReferenceInformation", "type", element.getType(), -1);
13843    if (element.hasInteraction())
13844      composeCodeableConcept(t, "SubstanceReferenceInformation", "interaction", element.getInteraction(), -1);
13845    if (element.hasOrganism())
13846      composeCodeableConcept(t, "SubstanceReferenceInformation", "organism", element.getOrganism(), -1);
13847    if (element.hasOrganismType())
13848      composeCodeableConcept(t, "SubstanceReferenceInformation", "organismType", element.getOrganismType(), -1);
13849    for (int i = 0; i < element.getSource().size(); i++)
13850      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
13851    if (element.hasAmount())
13852      composeType(t, "SubstanceReferenceInformation", "amount", element.getAmount(), -1);
13853    if (element.hasAmountType())
13854      composeCodeableConcept(t, "SubstanceReferenceInformation", "amountType", element.getAmountType(), -1);
13855  }
13856
13857  protected void composeSubstanceSpecification(Complex parent, String parentType, String name, SubstanceSpecification element, int index) {
13858    if (element == null) 
13859      return;
13860    Complex t;
13861    if (Utilities.noString(parentType))
13862      t = parent;
13863    else {
13864      t = parent.predicate("fhir:"+parentType+'.'+name);
13865    }
13866    composeDomainResource(t, "SubstanceSpecification", name, element, index);
13867    if (element.hasCommentElement())
13868      composeString(t, "SubstanceSpecification", "comment", element.getCommentElement(), -1);
13869    if (element.hasStoichiometricElement())
13870      composeBoolean(t, "SubstanceSpecification", "stoichiometric", element.getStoichiometricElement(), -1);
13871    if (element.hasIdentifier())
13872      composeIdentifier(t, "SubstanceSpecification", "identifier", element.getIdentifier(), -1);
13873    if (element.hasType())
13874      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
13875    for (int i = 0; i < element.getReferenceSource().size(); i++)
13876      composeString(t, "SubstanceSpecification", "referenceSource", element.getReferenceSource().get(i), i);
13877    for (int i = 0; i < element.getMoiety().size(); i++)
13878      composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(t, "SubstanceSpecification", "moiety", element.getMoiety().get(i), i);
13879    for (int i = 0; i < element.getProperty().size(); i++)
13880      composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(t, "SubstanceSpecification", "property", element.getProperty().get(i), i);
13881    if (element.hasReferenceInformation())
13882      composeReference(t, "SubstanceSpecification", "referenceInformation", element.getReferenceInformation(), -1);
13883    if (element.hasStructure())
13884      composeSubstanceSpecificationSubstanceSpecificationStructureComponent(t, "SubstanceSpecification", "structure", element.getStructure(), -1);
13885    for (int i = 0; i < element.getSubstanceCode().size(); i++)
13886      composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(t, "SubstanceSpecification", "substanceCode", element.getSubstanceCode().get(i), i);
13887    for (int i = 0; i < element.getSubstanceName().size(); i++)
13888      composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(t, "SubstanceSpecification", "substanceName", element.getSubstanceName().get(i), i);
13889    for (int i = 0; i < element.getMolecularWeight().size(); i++)
13890      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight().get(i), i);
13891    if (element.hasPolymer())
13892      composeReference(t, "SubstanceSpecification", "polymer", element.getPolymer(), -1);
13893  }
13894
13895  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationMoietyComponent element, int index) {
13896    if (element == null) 
13897      return;
13898    Complex t;
13899    if (Utilities.noString(parentType))
13900      t = parent;
13901    else {
13902      t = parent.predicate("fhir:"+parentType+'.'+name);
13903    }
13904    composeBackboneElement(t, "moiety", name, element, index);
13905    if (element.hasRole())
13906      composeCodeableConcept(t, "SubstanceSpecification", "role", element.getRole(), -1);
13907    if (element.hasIdentifier())
13908      composeIdentifier(t, "SubstanceSpecification", "identifier", element.getIdentifier(), -1);
13909    if (element.hasNameElement())
13910      composeString(t, "SubstanceSpecification", "name", element.getNameElement(), -1);
13911    if (element.hasStereochemistry())
13912      composeCodeableConcept(t, "SubstanceSpecification", "stereochemistry", element.getStereochemistry(), -1);
13913    if (element.hasOpticalActivity())
13914      composeCodeableConcept(t, "SubstanceSpecification", "opticalActivity", element.getOpticalActivity(), -1);
13915    if (element.hasMolecularFormulaElement())
13916      composeString(t, "SubstanceSpecification", "molecularFormula", element.getMolecularFormulaElement(), -1);
13917    if (element.hasAmountElement())
13918      composeString(t, "SubstanceSpecification", "amount", element.getAmountElement(), -1);
13919  }
13920
13921  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationPropertyComponent element, int index) {
13922    if (element == null) 
13923      return;
13924    Complex t;
13925    if (Utilities.noString(parentType))
13926      t = parent;
13927    else {
13928      t = parent.predicate("fhir:"+parentType+'.'+name);
13929    }
13930    composeBackboneElement(t, "property", name, element, index);
13931    if (element.hasType())
13932      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
13933    if (element.hasName())
13934      composeCodeableConcept(t, "SubstanceSpecification", "name", element.getName(), -1);
13935    if (element.hasParametersElement())
13936      composeString(t, "SubstanceSpecification", "parameters", element.getParametersElement(), -1);
13937    if (element.hasSubstanceId())
13938      composeIdentifier(t, "SubstanceSpecification", "substanceId", element.getSubstanceId(), -1);
13939    if (element.hasSubstanceNameElement())
13940      composeString(t, "SubstanceSpecification", "substanceName", element.getSubstanceNameElement(), -1);
13941    if (element.hasAmountElement())
13942      composeString(t, "SubstanceSpecification", "amount", element.getAmountElement(), -1);
13943  }
13944
13945  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureComponent element, int index) {
13946    if (element == null) 
13947      return;
13948    Complex t;
13949    if (Utilities.noString(parentType))
13950      t = parent;
13951    else {
13952      t = parent.predicate("fhir:"+parentType+'.'+name);
13953    }
13954    composeBackboneElement(t, "structure", name, element, index);
13955    if (element.hasStereochemistry())
13956      composeCodeableConcept(t, "SubstanceSpecification", "stereochemistry", element.getStereochemistry(), -1);
13957    if (element.hasOpticalActivity())
13958      composeCodeableConcept(t, "SubstanceSpecification", "opticalActivity", element.getOpticalActivity(), -1);
13959    if (element.hasMolecularFormulaElement())
13960      composeString(t, "SubstanceSpecification", "molecularFormula", element.getMolecularFormulaElement(), -1);
13961    if (element.hasMolecularFormulaByMoietyElement())
13962      composeString(t, "SubstanceSpecification", "molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement(), -1);
13963    for (int i = 0; i < element.getIsotope().size(); i++)
13964      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(t, "SubstanceSpecification", "isotope", element.getIsotope().get(i), i);
13965    if (element.hasMolecularWeight())
13966      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight(), -1);
13967    for (int i = 0; i < element.getReferenceSource().size(); i++)
13968      composeReference(t, "SubstanceSpecification", "referenceSource", element.getReferenceSource().get(i), i);
13969    for (int i = 0; i < element.getStructuralRepresentation().size(); i++)
13970      composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(t, "SubstanceSpecification", "structuralRepresentation", element.getStructuralRepresentation().get(i), i);
13971  }
13972
13973  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element, int index) {
13974    if (element == null) 
13975      return;
13976    Complex t;
13977    if (Utilities.noString(parentType))
13978      t = parent;
13979    else {
13980      t = parent.predicate("fhir:"+parentType+'.'+name);
13981    }
13982    composeBackboneElement(t, "isotope", name, element, index);
13983    if (element.hasNuclideId())
13984      composeIdentifier(t, "SubstanceSpecification", "nuclideId", element.getNuclideId(), -1);
13985    if (element.hasNuclideName())
13986      composeCodeableConcept(t, "SubstanceSpecification", "nuclideName", element.getNuclideName(), -1);
13987    if (element.hasSubstitutionType())
13988      composeCodeableConcept(t, "SubstanceSpecification", "substitutionType", element.getSubstitutionType(), -1);
13989    if (element.hasNuclideHalfLife())
13990      composeQuantity(t, "SubstanceSpecification", "nuclideHalfLife", element.getNuclideHalfLife(), -1);
13991    if (element.hasAmountElement())
13992      composeString(t, "SubstanceSpecification", "amount", element.getAmountElement(), -1);
13993    if (element.hasMolecularWeight())
13994      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight(), -1);
13995  }
13996
13997  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element, int index) {
13998    if (element == null) 
13999      return;
14000    Complex t;
14001    if (Utilities.noString(parentType))
14002      t = parent;
14003    else {
14004      t = parent.predicate("fhir:"+parentType+'.'+name);
14005    }
14006    composeBackboneElement(t, "molecularWeight", name, element, index);
14007    if (element.hasMethod())
14008      composeCodeableConcept(t, "SubstanceSpecification", "method", element.getMethod(), -1);
14009    if (element.hasType())
14010      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
14011    if (element.hasAmountElement())
14012      composeString(t, "SubstanceSpecification", "amount", element.getAmountElement(), -1);
14013  }
14014
14015  protected void composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent element, int index) {
14016    if (element == null) 
14017      return;
14018    Complex t;
14019    if (Utilities.noString(parentType))
14020      t = parent;
14021    else {
14022      t = parent.predicate("fhir:"+parentType+'.'+name);
14023    }
14024    composeBackboneElement(t, "structuralRepresentation", name, element, index);
14025    if (element.hasType())
14026      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
14027    if (element.hasRepresentationElement())
14028      composeString(t, "SubstanceSpecification", "representation", element.getRepresentationElement(), -1);
14029    if (element.hasAttachment())
14030      composeAttachment(t, "SubstanceSpecification", "attachment", element.getAttachment(), -1);
14031  }
14032
14033  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent element, int index) {
14034    if (element == null) 
14035      return;
14036    Complex t;
14037    if (Utilities.noString(parentType))
14038      t = parent;
14039    else {
14040      t = parent.predicate("fhir:"+parentType+'.'+name);
14041    }
14042    composeBackboneElement(t, "substanceCode", name, element, index);
14043    if (element.hasCode())
14044      composeCodeableConcept(t, "SubstanceSpecification", "code", element.getCode(), -1);
14045    if (element.hasStatus())
14046      composeCodeableConcept(t, "SubstanceSpecification", "status", element.getStatus(), -1);
14047    if (element.hasStatusDateElement())
14048      composeDateTime(t, "SubstanceSpecification", "statusDate", element.getStatusDateElement(), -1);
14049    if (element.hasCommentElement())
14050      composeString(t, "SubstanceSpecification", "comment", element.getCommentElement(), -1);
14051    for (int i = 0; i < element.getReferenceSource().size(); i++)
14052      composeString(t, "SubstanceSpecification", "referenceSource", element.getReferenceSource().get(i), i);
14053  }
14054
14055  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent element, int index) {
14056    if (element == null) 
14057      return;
14058    Complex t;
14059    if (Utilities.noString(parentType))
14060      t = parent;
14061    else {
14062      t = parent.predicate("fhir:"+parentType+'.'+name);
14063    }
14064    composeBackboneElement(t, "substanceName", name, element, index);
14065    if (element.hasNameElement())
14066      composeString(t, "SubstanceSpecification", "name", element.getNameElement(), -1);
14067    if (element.hasType())
14068      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
14069    for (int i = 0; i < element.getLanguage().size(); i++)
14070      composeCodeableConcept(t, "SubstanceSpecification", "language", element.getLanguage().get(i), i);
14071    for (int i = 0; i < element.getDomain().size(); i++)
14072      composeCodeableConcept(t, "SubstanceSpecification", "domain", element.getDomain().get(i), i);
14073    for (int i = 0; i < element.getJurisdiction().size(); i++)
14074      composeCodeableConcept(t, "SubstanceSpecification", "jurisdiction", element.getJurisdiction().get(i), i);
14075    for (int i = 0; i < element.getOfficialName().size(); i++)
14076      composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(t, "SubstanceSpecification", "officialName", element.getOfficialName().get(i), i);
14077    for (int i = 0; i < element.getReferenceSource().size(); i++)
14078      composeString(t, "SubstanceSpecification", "referenceSource", element.getReferenceSource().get(i), i);
14079  }
14080
14081  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent element, int index) {
14082    if (element == null) 
14083      return;
14084    Complex t;
14085    if (Utilities.noString(parentType))
14086      t = parent;
14087    else {
14088      t = parent.predicate("fhir:"+parentType+'.'+name);
14089    }
14090    composeBackboneElement(t, "officialName", name, element, index);
14091    if (element.hasAuthority())
14092      composeCodeableConcept(t, "SubstanceSpecification", "authority", element.getAuthority(), -1);
14093    if (element.hasStatus())
14094      composeCodeableConcept(t, "SubstanceSpecification", "status", element.getStatus(), -1);
14095    if (element.hasDateElement())
14096      composeDateTime(t, "SubstanceSpecification", "date", element.getDateElement(), -1);
14097  }
14098
14099  protected void composeSupplyDelivery(Complex parent, String parentType, String name, SupplyDelivery element, int index) {
14100    if (element == null) 
14101      return;
14102    Complex t;
14103    if (Utilities.noString(parentType))
14104      t = parent;
14105    else {
14106      t = parent.predicate("fhir:"+parentType+'.'+name);
14107    }
14108    composeDomainResource(t, "SupplyDelivery", name, element, index);
14109    for (int i = 0; i < element.getIdentifier().size(); i++)
14110      composeIdentifier(t, "SupplyDelivery", "identifier", element.getIdentifier().get(i), i);
14111    for (int i = 0; i < element.getBasedOn().size(); i++)
14112      composeReference(t, "SupplyDelivery", "basedOn", element.getBasedOn().get(i), i);
14113    for (int i = 0; i < element.getPartOf().size(); i++)
14114      composeReference(t, "SupplyDelivery", "partOf", element.getPartOf().get(i), i);
14115    if (element.hasStatusElement())
14116      composeEnum(t, "SupplyDelivery", "status", element.getStatusElement(), -1);
14117    if (element.hasPatient())
14118      composeReference(t, "SupplyDelivery", "patient", element.getPatient(), -1);
14119    if (element.hasType())
14120      composeCodeableConcept(t, "SupplyDelivery", "type", element.getType(), -1);
14121    if (element.hasSuppliedItem())
14122      composeSupplyDeliverySupplyDeliverySuppliedItemComponent(t, "SupplyDelivery", "suppliedItem", element.getSuppliedItem(), -1);
14123    if (element.hasOccurrence())
14124      composeType(t, "SupplyDelivery", "occurrence", element.getOccurrence(), -1);
14125    if (element.hasSupplier())
14126      composeReference(t, "SupplyDelivery", "supplier", element.getSupplier(), -1);
14127    if (element.hasDestination())
14128      composeReference(t, "SupplyDelivery", "destination", element.getDestination(), -1);
14129    for (int i = 0; i < element.getReceiver().size(); i++)
14130      composeReference(t, "SupplyDelivery", "receiver", element.getReceiver().get(i), i);
14131  }
14132
14133  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(Complex parent, String parentType, String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element, int index) {
14134    if (element == null) 
14135      return;
14136    Complex t;
14137    if (Utilities.noString(parentType))
14138      t = parent;
14139    else {
14140      t = parent.predicate("fhir:"+parentType+'.'+name);
14141    }
14142    composeBackboneElement(t, "suppliedItem", name, element, index);
14143    if (element.hasQuantity())
14144      composeQuantity(t, "SupplyDelivery", "quantity", element.getQuantity(), -1);
14145    if (element.hasItem())
14146      composeType(t, "SupplyDelivery", "item", element.getItem(), -1);
14147  }
14148
14149  protected void composeSupplyRequest(Complex parent, String parentType, String name, SupplyRequest element, int index) {
14150    if (element == null) 
14151      return;
14152    Complex t;
14153    if (Utilities.noString(parentType))
14154      t = parent;
14155    else {
14156      t = parent.predicate("fhir:"+parentType+'.'+name);
14157    }
14158    composeDomainResource(t, "SupplyRequest", name, element, index);
14159    if (element.hasIdentifier())
14160      composeIdentifier(t, "SupplyRequest", "identifier", element.getIdentifier(), -1);
14161    if (element.hasStatusElement())
14162      composeEnum(t, "SupplyRequest", "status", element.getStatusElement(), -1);
14163    if (element.hasCategory())
14164      composeCodeableConcept(t, "SupplyRequest", "category", element.getCategory(), -1);
14165    if (element.hasPriorityElement())
14166      composeEnum(t, "SupplyRequest", "priority", element.getPriorityElement(), -1);
14167    if (element.hasItem())
14168      composeType(t, "SupplyRequest", "item", element.getItem(), -1);
14169    if (element.hasQuantity())
14170      composeQuantity(t, "SupplyRequest", "quantity", element.getQuantity(), -1);
14171    for (int i = 0; i < element.getParameter().size(); i++)
14172      composeSupplyRequestSupplyRequestParameterComponent(t, "SupplyRequest", "parameter", element.getParameter().get(i), i);
14173    if (element.hasOccurrence())
14174      composeType(t, "SupplyRequest", "occurrence", element.getOccurrence(), -1);
14175    if (element.hasAuthoredOnElement())
14176      composeDateTime(t, "SupplyRequest", "authoredOn", element.getAuthoredOnElement(), -1);
14177    if (element.hasRequester())
14178      composeReference(t, "SupplyRequest", "requester", element.getRequester(), -1);
14179    for (int i = 0; i < element.getSupplier().size(); i++)
14180      composeReference(t, "SupplyRequest", "supplier", element.getSupplier().get(i), i);
14181    for (int i = 0; i < element.getReasonCode().size(); i++)
14182      composeCodeableConcept(t, "SupplyRequest", "reasonCode", element.getReasonCode().get(i), i);
14183    for (int i = 0; i < element.getReasonReference().size(); i++)
14184      composeReference(t, "SupplyRequest", "reasonReference", element.getReasonReference().get(i), i);
14185    if (element.hasDeliverFrom())
14186      composeReference(t, "SupplyRequest", "deliverFrom", element.getDeliverFrom(), -1);
14187    if (element.hasDeliverTo())
14188      composeReference(t, "SupplyRequest", "deliverTo", element.getDeliverTo(), -1);
14189  }
14190
14191  protected void composeSupplyRequestSupplyRequestParameterComponent(Complex parent, String parentType, String name, SupplyRequest.SupplyRequestParameterComponent element, int index) {
14192    if (element == null) 
14193      return;
14194    Complex t;
14195    if (Utilities.noString(parentType))
14196      t = parent;
14197    else {
14198      t = parent.predicate("fhir:"+parentType+'.'+name);
14199    }
14200    composeBackboneElement(t, "parameter", name, element, index);
14201    if (element.hasCode())
14202      composeCodeableConcept(t, "SupplyRequest", "code", element.getCode(), -1);
14203    if (element.hasValue())
14204      composeType(t, "SupplyRequest", "value", element.getValue(), -1);
14205  }
14206
14207  protected void composeTask(Complex parent, String parentType, String name, Task element, int index) {
14208    if (element == null) 
14209      return;
14210    Complex t;
14211    if (Utilities.noString(parentType))
14212      t = parent;
14213    else {
14214      t = parent.predicate("fhir:"+parentType+'.'+name);
14215    }
14216    composeDomainResource(t, "Task", name, element, index);
14217    for (int i = 0; i < element.getIdentifier().size(); i++)
14218      composeIdentifier(t, "Task", "identifier", element.getIdentifier().get(i), i);
14219    if (element.hasInstantiates())
14220      composeType(t, "Task", "instantiates", element.getInstantiates(), -1);
14221    for (int i = 0; i < element.getBasedOn().size(); i++)
14222      composeReference(t, "Task", "basedOn", element.getBasedOn().get(i), i);
14223    if (element.hasGroupIdentifier())
14224      composeIdentifier(t, "Task", "groupIdentifier", element.getGroupIdentifier(), -1);
14225    for (int i = 0; i < element.getPartOf().size(); i++)
14226      composeReference(t, "Task", "partOf", element.getPartOf().get(i), i);
14227    if (element.hasStatusElement())
14228      composeEnum(t, "Task", "status", element.getStatusElement(), -1);
14229    if (element.hasStatusReason())
14230      composeCodeableConcept(t, "Task", "statusReason", element.getStatusReason(), -1);
14231    if (element.hasBusinessStatus())
14232      composeCodeableConcept(t, "Task", "businessStatus", element.getBusinessStatus(), -1);
14233    if (element.hasIntentElement())
14234      composeEnum(t, "Task", "intent", element.getIntentElement(), -1);
14235    if (element.hasPriorityElement())
14236      composeEnum(t, "Task", "priority", element.getPriorityElement(), -1);
14237    if (element.hasCode())
14238      composeCodeableConcept(t, "Task", "code", element.getCode(), -1);
14239    if (element.hasDescriptionElement())
14240      composeString(t, "Task", "description", element.getDescriptionElement(), -1);
14241    if (element.hasFocus())
14242      composeReference(t, "Task", "focus", element.getFocus(), -1);
14243    if (element.hasFor())
14244      composeReference(t, "Task", "for", element.getFor(), -1);
14245    if (element.hasContext())
14246      composeReference(t, "Task", "context", element.getContext(), -1);
14247    if (element.hasExecutionPeriod())
14248      composePeriod(t, "Task", "executionPeriod", element.getExecutionPeriod(), -1);
14249    if (element.hasAuthoredOnElement())
14250      composeDateTime(t, "Task", "authoredOn", element.getAuthoredOnElement(), -1);
14251    if (element.hasLastModifiedElement())
14252      composeDateTime(t, "Task", "lastModified", element.getLastModifiedElement(), -1);
14253    if (element.hasRequester())
14254      composeReference(t, "Task", "requester", element.getRequester(), -1);
14255    for (int i = 0; i < element.getPerformerType().size(); i++)
14256      composeCodeableConcept(t, "Task", "performerType", element.getPerformerType().get(i), i);
14257    if (element.hasOwner())
14258      composeReference(t, "Task", "owner", element.getOwner(), -1);
14259    if (element.hasReasonCode())
14260      composeCodeableConcept(t, "Task", "reasonCode", element.getReasonCode(), -1);
14261    if (element.hasReasonReference())
14262      composeReference(t, "Task", "reasonReference", element.getReasonReference(), -1);
14263    for (int i = 0; i < element.getNote().size(); i++)
14264      composeAnnotation(t, "Task", "note", element.getNote().get(i), i);
14265    for (int i = 0; i < element.getRelevantHistory().size(); i++)
14266      composeReference(t, "Task", "relevantHistory", element.getRelevantHistory().get(i), i);
14267    if (element.hasRestriction())
14268      composeTaskTaskRestrictionComponent(t, "Task", "restriction", element.getRestriction(), -1);
14269    for (int i = 0; i < element.getInput().size(); i++)
14270      composeTaskParameterComponent(t, "Task", "input", element.getInput().get(i), i);
14271    for (int i = 0; i < element.getOutput().size(); i++)
14272      composeTaskTaskOutputComponent(t, "Task", "output", element.getOutput().get(i), i);
14273  }
14274
14275  protected void composeTaskTaskRestrictionComponent(Complex parent, String parentType, String name, Task.TaskRestrictionComponent element, int index) {
14276    if (element == null) 
14277      return;
14278    Complex t;
14279    if (Utilities.noString(parentType))
14280      t = parent;
14281    else {
14282      t = parent.predicate("fhir:"+parentType+'.'+name);
14283    }
14284    composeBackboneElement(t, "restriction", name, element, index);
14285    if (element.hasRepetitionsElement())
14286      composePositiveInt(t, "Task", "repetitions", element.getRepetitionsElement(), -1);
14287    if (element.hasPeriod())
14288      composePeriod(t, "Task", "period", element.getPeriod(), -1);
14289    for (int i = 0; i < element.getRecipient().size(); i++)
14290      composeReference(t, "Task", "recipient", element.getRecipient().get(i), i);
14291  }
14292
14293  protected void composeTaskParameterComponent(Complex parent, String parentType, String name, Task.ParameterComponent element, int index) {
14294    if (element == null) 
14295      return;
14296    Complex t;
14297    if (Utilities.noString(parentType))
14298      t = parent;
14299    else {
14300      t = parent.predicate("fhir:"+parentType+'.'+name);
14301    }
14302    composeBackboneElement(t, "input", name, element, index);
14303    if (element.hasType())
14304      composeCodeableConcept(t, "Task", "type", element.getType(), -1);
14305    if (element.hasValue())
14306      composeType(t, "Task", "value", element.getValue(), -1);
14307  }
14308
14309  protected void composeTaskTaskOutputComponent(Complex parent, String parentType, String name, Task.TaskOutputComponent element, int index) {
14310    if (element == null) 
14311      return;
14312    Complex t;
14313    if (Utilities.noString(parentType))
14314      t = parent;
14315    else {
14316      t = parent.predicate("fhir:"+parentType+'.'+name);
14317    }
14318    composeBackboneElement(t, "output", name, element, index);
14319    if (element.hasType())
14320      composeCodeableConcept(t, "Task", "type", element.getType(), -1);
14321    if (element.hasValue())
14322      composeType(t, "Task", "value", element.getValue(), -1);
14323  }
14324
14325  protected void composeTerminologyCapabilities(Complex parent, String parentType, String name, TerminologyCapabilities element, int index) {
14326    if (element == null) 
14327      return;
14328    Complex t;
14329    if (Utilities.noString(parentType))
14330      t = parent;
14331    else {
14332      t = parent.predicate("fhir:"+parentType+'.'+name);
14333    }
14334    composeDomainResource(t, "TerminologyCapabilities", name, element, index);
14335    if (element.hasUrlElement())
14336      composeUri(t, "TerminologyCapabilities", "url", element.getUrlElement(), -1);
14337    if (element.hasVersionElement())
14338      composeString(t, "TerminologyCapabilities", "version", element.getVersionElement(), -1);
14339    if (element.hasNameElement())
14340      composeString(t, "TerminologyCapabilities", "name", element.getNameElement(), -1);
14341    if (element.hasTitleElement())
14342      composeString(t, "TerminologyCapabilities", "title", element.getTitleElement(), -1);
14343    if (element.hasStatusElement())
14344      composeEnum(t, "TerminologyCapabilities", "status", element.getStatusElement(), -1);
14345    if (element.hasExperimentalElement())
14346      composeBoolean(t, "TerminologyCapabilities", "experimental", element.getExperimentalElement(), -1);
14347    if (element.hasDateElement())
14348      composeDateTime(t, "TerminologyCapabilities", "date", element.getDateElement(), -1);
14349    if (element.hasPublisherElement())
14350      composeString(t, "TerminologyCapabilities", "publisher", element.getPublisherElement(), -1);
14351    for (int i = 0; i < element.getContact().size(); i++)
14352      composeContactDetail(t, "TerminologyCapabilities", "contact", element.getContact().get(i), i);
14353    if (element.hasDescriptionElement())
14354      composeMarkdown(t, "TerminologyCapabilities", "description", element.getDescriptionElement(), -1);
14355    for (int i = 0; i < element.getUseContext().size(); i++)
14356      composeUsageContext(t, "TerminologyCapabilities", "useContext", element.getUseContext().get(i), i);
14357    for (int i = 0; i < element.getJurisdiction().size(); i++)
14358      composeCodeableConcept(t, "TerminologyCapabilities", "jurisdiction", element.getJurisdiction().get(i), i);
14359    if (element.hasPurposeElement())
14360      composeMarkdown(t, "TerminologyCapabilities", "purpose", element.getPurposeElement(), -1);
14361    if (element.hasCopyrightElement())
14362      composeMarkdown(t, "TerminologyCapabilities", "copyright", element.getCopyrightElement(), -1);
14363    if (element.hasLockedDateElement())
14364      composeBoolean(t, "TerminologyCapabilities", "lockedDate", element.getLockedDateElement(), -1);
14365    for (int i = 0; i < element.getCodeSystem().size(); i++)
14366      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(t, "TerminologyCapabilities", "codeSystem", element.getCodeSystem().get(i), i);
14367    if (element.hasExpansion())
14368      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(t, "TerminologyCapabilities", "expansion", element.getExpansion(), -1);
14369    if (element.hasCodeSearchElement())
14370      composeEnum(t, "TerminologyCapabilities", "codeSearch", element.getCodeSearchElement(), -1);
14371    if (element.hasValidateCode())
14372      composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(t, "TerminologyCapabilities", "validateCode", element.getValidateCode(), -1);
14373    if (element.hasTranslation())
14374      composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(t, "TerminologyCapabilities", "translation", element.getTranslation(), -1);
14375    if (element.hasClosure())
14376      composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(t, "TerminologyCapabilities", "closure", element.getClosure(), -1);
14377  }
14378
14379  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element, int index) {
14380    if (element == null) 
14381      return;
14382    Complex t;
14383    if (Utilities.noString(parentType))
14384      t = parent;
14385    else {
14386      t = parent.predicate("fhir:"+parentType+'.'+name);
14387    }
14388    composeBackboneElement(t, "codeSystem", name, element, index);
14389    if (element.hasUriElement())
14390      composeCanonical(t, "TerminologyCapabilities", "uri", element.getUriElement(), -1);
14391    for (int i = 0; i < element.getVersion().size(); i++)
14392      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(t, "TerminologyCapabilities", "version", element.getVersion().get(i), i);
14393  }
14394
14395  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element, int index) {
14396    if (element == null) 
14397      return;
14398    Complex t;
14399    if (Utilities.noString(parentType))
14400      t = parent;
14401    else {
14402      t = parent.predicate("fhir:"+parentType+'.'+name);
14403    }
14404    composeBackboneElement(t, "version", name, element, index);
14405    if (element.hasCodeElement())
14406      composeString(t, "TerminologyCapabilities", "code", element.getCodeElement(), -1);
14407    if (element.hasIsDefaultElement())
14408      composeBoolean(t, "TerminologyCapabilities", "isDefault", element.getIsDefaultElement(), -1);
14409    if (element.hasCompositionalElement())
14410      composeBoolean(t, "TerminologyCapabilities", "compositional", element.getCompositionalElement(), -1);
14411    for (int i = 0; i < element.getLanguage().size(); i++)
14412      composeCode(t, "TerminologyCapabilities", "language", element.getLanguage().get(i), i);
14413    for (int i = 0; i < element.getFilter().size(); i++)
14414      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(t, "TerminologyCapabilities", "filter", element.getFilter().get(i), i);
14415    for (int i = 0; i < element.getProperty().size(); i++)
14416      composeCode(t, "TerminologyCapabilities", "property", element.getProperty().get(i), i);
14417  }
14418
14419  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element, int index) {
14420    if (element == null) 
14421      return;
14422    Complex t;
14423    if (Utilities.noString(parentType))
14424      t = parent;
14425    else {
14426      t = parent.predicate("fhir:"+parentType+'.'+name);
14427    }
14428    composeBackboneElement(t, "filter", name, element, index);
14429    if (element.hasCodeElement())
14430      composeCode(t, "TerminologyCapabilities", "code", element.getCodeElement(), -1);
14431    for (int i = 0; i < element.getOp().size(); i++)
14432      composeCode(t, "TerminologyCapabilities", "op", element.getOp().get(i), i);
14433  }
14434
14435  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element, int index) {
14436    if (element == null) 
14437      return;
14438    Complex t;
14439    if (Utilities.noString(parentType))
14440      t = parent;
14441    else {
14442      t = parent.predicate("fhir:"+parentType+'.'+name);
14443    }
14444    composeBackboneElement(t, "expansion", name, element, index);
14445    if (element.hasHierarchicalElement())
14446      composeBoolean(t, "TerminologyCapabilities", "hierarchical", element.getHierarchicalElement(), -1);
14447    if (element.hasPagingElement())
14448      composeBoolean(t, "TerminologyCapabilities", "paging", element.getPagingElement(), -1);
14449    if (element.hasIncompleteElement())
14450      composeBoolean(t, "TerminologyCapabilities", "incomplete", element.getIncompleteElement(), -1);
14451    if (element.hasDefinitionElement())
14452      composeCanonical(t, "TerminologyCapabilities", "definition", element.getDefinitionElement(), -1);
14453    for (int i = 0; i < element.getProfile().size(); i++)
14454      composeCanonical(t, "TerminologyCapabilities", "profile", element.getProfile().get(i), i);
14455    if (element.hasTextFilterElement())
14456      composeMarkdown(t, "TerminologyCapabilities", "textFilter", element.getTextFilterElement(), -1);
14457  }
14458
14459  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element, int index) {
14460    if (element == null) 
14461      return;
14462    Complex t;
14463    if (Utilities.noString(parentType))
14464      t = parent;
14465    else {
14466      t = parent.predicate("fhir:"+parentType+'.'+name);
14467    }
14468    composeBackboneElement(t, "validateCode", name, element, index);
14469    if (element.hasTranslationsElement())
14470      composeBoolean(t, "TerminologyCapabilities", "translations", element.getTranslationsElement(), -1);
14471  }
14472
14473  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element, int index) {
14474    if (element == null) 
14475      return;
14476    Complex t;
14477    if (Utilities.noString(parentType))
14478      t = parent;
14479    else {
14480      t = parent.predicate("fhir:"+parentType+'.'+name);
14481    }
14482    composeBackboneElement(t, "translation", name, element, index);
14483    if (element.hasNeedsMapElement())
14484      composeBoolean(t, "TerminologyCapabilities", "needsMap", element.getNeedsMapElement(), -1);
14485  }
14486
14487  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element, int index) {
14488    if (element == null) 
14489      return;
14490    Complex t;
14491    if (Utilities.noString(parentType))
14492      t = parent;
14493    else {
14494      t = parent.predicate("fhir:"+parentType+'.'+name);
14495    }
14496    composeBackboneElement(t, "closure", name, element, index);
14497    if (element.hasTranslationElement())
14498      composeBoolean(t, "TerminologyCapabilities", "translation", element.getTranslationElement(), -1);
14499  }
14500
14501  protected void composeTestReport(Complex parent, String parentType, String name, TestReport element, int index) {
14502    if (element == null) 
14503      return;
14504    Complex t;
14505    if (Utilities.noString(parentType))
14506      t = parent;
14507    else {
14508      t = parent.predicate("fhir:"+parentType+'.'+name);
14509    }
14510    composeDomainResource(t, "TestReport", name, element, index);
14511    if (element.hasIdentifier())
14512      composeIdentifier(t, "TestReport", "identifier", element.getIdentifier(), -1);
14513    if (element.hasNameElement())
14514      composeString(t, "TestReport", "name", element.getNameElement(), -1);
14515    if (element.hasStatusElement())
14516      composeEnum(t, "TestReport", "status", element.getStatusElement(), -1);
14517    if (element.hasTestScript())
14518      composeReference(t, "TestReport", "testScript", element.getTestScript(), -1);
14519    if (element.hasResultElement())
14520      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
14521    if (element.hasScoreElement())
14522      composeDecimal(t, "TestReport", "score", element.getScoreElement(), -1);
14523    if (element.hasTesterElement())
14524      composeString(t, "TestReport", "tester", element.getTesterElement(), -1);
14525    if (element.hasIssuedElement())
14526      composeDateTime(t, "TestReport", "issued", element.getIssuedElement(), -1);
14527    for (int i = 0; i < element.getParticipant().size(); i++)
14528      composeTestReportTestReportParticipantComponent(t, "TestReport", "participant", element.getParticipant().get(i), i);
14529    if (element.hasSetup())
14530      composeTestReportTestReportSetupComponent(t, "TestReport", "setup", element.getSetup(), -1);
14531    for (int i = 0; i < element.getTest().size(); i++)
14532      composeTestReportTestReportTestComponent(t, "TestReport", "test", element.getTest().get(i), i);
14533    if (element.hasTeardown())
14534      composeTestReportTestReportTeardownComponent(t, "TestReport", "teardown", element.getTeardown(), -1);
14535  }
14536
14537  protected void composeTestReportTestReportParticipantComponent(Complex parent, String parentType, String name, TestReport.TestReportParticipantComponent element, int index) {
14538    if (element == null) 
14539      return;
14540    Complex t;
14541    if (Utilities.noString(parentType))
14542      t = parent;
14543    else {
14544      t = parent.predicate("fhir:"+parentType+'.'+name);
14545    }
14546    composeBackboneElement(t, "participant", name, element, index);
14547    if (element.hasTypeElement())
14548      composeEnum(t, "TestReport", "type", element.getTypeElement(), -1);
14549    if (element.hasUriElement())
14550      composeUri(t, "TestReport", "uri", element.getUriElement(), -1);
14551    if (element.hasDisplayElement())
14552      composeString(t, "TestReport", "display", element.getDisplayElement(), -1);
14553  }
14554
14555  protected void composeTestReportTestReportSetupComponent(Complex parent, String parentType, String name, TestReport.TestReportSetupComponent element, int index) {
14556    if (element == null) 
14557      return;
14558    Complex t;
14559    if (Utilities.noString(parentType))
14560      t = parent;
14561    else {
14562      t = parent.predicate("fhir:"+parentType+'.'+name);
14563    }
14564    composeBackboneElement(t, "setup", name, element, index);
14565    for (int i = 0; i < element.getAction().size(); i++)
14566      composeTestReportSetupActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
14567  }
14568
14569  protected void composeTestReportSetupActionComponent(Complex parent, String parentType, String name, TestReport.SetupActionComponent element, int index) {
14570    if (element == null) 
14571      return;
14572    Complex t;
14573    if (Utilities.noString(parentType))
14574      t = parent;
14575    else {
14576      t = parent.predicate("fhir:"+parentType+'.'+name);
14577    }
14578    composeBackboneElement(t, "action", name, element, index);
14579    if (element.hasOperation())
14580      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
14581    if (element.hasAssert())
14582      composeTestReportSetupActionAssertComponent(t, "TestReport", "assert", element.getAssert(), -1);
14583  }
14584
14585  protected void composeTestReportSetupActionOperationComponent(Complex parent, String parentType, String name, TestReport.SetupActionOperationComponent element, int index) {
14586    if (element == null) 
14587      return;
14588    Complex t;
14589    if (Utilities.noString(parentType))
14590      t = parent;
14591    else {
14592      t = parent.predicate("fhir:"+parentType+'.'+name);
14593    }
14594    composeBackboneElement(t, "operation", name, element, index);
14595    if (element.hasResultElement())
14596      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
14597    if (element.hasMessageElement())
14598      composeMarkdown(t, "TestReport", "message", element.getMessageElement(), -1);
14599    if (element.hasDetailElement())
14600      composeUri(t, "TestReport", "detail", element.getDetailElement(), -1);
14601  }
14602
14603  protected void composeTestReportSetupActionAssertComponent(Complex parent, String parentType, String name, TestReport.SetupActionAssertComponent element, int index) {
14604    if (element == null) 
14605      return;
14606    Complex t;
14607    if (Utilities.noString(parentType))
14608      t = parent;
14609    else {
14610      t = parent.predicate("fhir:"+parentType+'.'+name);
14611    }
14612    composeBackboneElement(t, "assert", name, element, index);
14613    if (element.hasResultElement())
14614      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
14615    if (element.hasMessageElement())
14616      composeMarkdown(t, "TestReport", "message", element.getMessageElement(), -1);
14617    if (element.hasDetailElement())
14618      composeString(t, "TestReport", "detail", element.getDetailElement(), -1);
14619  }
14620
14621  protected void composeTestReportTestReportTestComponent(Complex parent, String parentType, String name, TestReport.TestReportTestComponent element, int index) {
14622    if (element == null) 
14623      return;
14624    Complex t;
14625    if (Utilities.noString(parentType))
14626      t = parent;
14627    else {
14628      t = parent.predicate("fhir:"+parentType+'.'+name);
14629    }
14630    composeBackboneElement(t, "test", name, element, index);
14631    if (element.hasNameElement())
14632      composeString(t, "TestReport", "name", element.getNameElement(), -1);
14633    if (element.hasDescriptionElement())
14634      composeString(t, "TestReport", "description", element.getDescriptionElement(), -1);
14635    for (int i = 0; i < element.getAction().size(); i++)
14636      composeTestReportTestActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
14637  }
14638
14639  protected void composeTestReportTestActionComponent(Complex parent, String parentType, String name, TestReport.TestActionComponent element, int index) {
14640    if (element == null) 
14641      return;
14642    Complex t;
14643    if (Utilities.noString(parentType))
14644      t = parent;
14645    else {
14646      t = parent.predicate("fhir:"+parentType+'.'+name);
14647    }
14648    composeBackboneElement(t, "action", name, element, index);
14649    if (element.hasOperation())
14650      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
14651    if (element.hasAssert())
14652      composeTestReportSetupActionAssertComponent(t, "TestReport", "assert", element.getAssert(), -1);
14653  }
14654
14655  protected void composeTestReportTestReportTeardownComponent(Complex parent, String parentType, String name, TestReport.TestReportTeardownComponent element, int index) {
14656    if (element == null) 
14657      return;
14658    Complex t;
14659    if (Utilities.noString(parentType))
14660      t = parent;
14661    else {
14662      t = parent.predicate("fhir:"+parentType+'.'+name);
14663    }
14664    composeBackboneElement(t, "teardown", name, element, index);
14665    for (int i = 0; i < element.getAction().size(); i++)
14666      composeTestReportTeardownActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
14667  }
14668
14669  protected void composeTestReportTeardownActionComponent(Complex parent, String parentType, String name, TestReport.TeardownActionComponent element, int index) {
14670    if (element == null) 
14671      return;
14672    Complex t;
14673    if (Utilities.noString(parentType))
14674      t = parent;
14675    else {
14676      t = parent.predicate("fhir:"+parentType+'.'+name);
14677    }
14678    composeBackboneElement(t, "action", name, element, index);
14679    if (element.hasOperation())
14680      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
14681  }
14682
14683  protected void composeTestScript(Complex parent, String parentType, String name, TestScript element, int index) {
14684    if (element == null) 
14685      return;
14686    Complex t;
14687    if (Utilities.noString(parentType))
14688      t = parent;
14689    else {
14690      t = parent.predicate("fhir:"+parentType+'.'+name);
14691    }
14692    composeDomainResource(t, "TestScript", name, element, index);
14693    if (element.hasUrlElement())
14694      composeUri(t, "TestScript", "url", element.getUrlElement(), -1);
14695    if (element.hasIdentifier())
14696      composeIdentifier(t, "TestScript", "identifier", element.getIdentifier(), -1);
14697    if (element.hasVersionElement())
14698      composeString(t, "TestScript", "version", element.getVersionElement(), -1);
14699    if (element.hasNameElement())
14700      composeString(t, "TestScript", "name", element.getNameElement(), -1);
14701    if (element.hasTitleElement())
14702      composeString(t, "TestScript", "title", element.getTitleElement(), -1);
14703    if (element.hasStatusElement())
14704      composeEnum(t, "TestScript", "status", element.getStatusElement(), -1);
14705    if (element.hasExperimentalElement())
14706      composeBoolean(t, "TestScript", "experimental", element.getExperimentalElement(), -1);
14707    if (element.hasDateElement())
14708      composeDateTime(t, "TestScript", "date", element.getDateElement(), -1);
14709    if (element.hasPublisherElement())
14710      composeString(t, "TestScript", "publisher", element.getPublisherElement(), -1);
14711    for (int i = 0; i < element.getContact().size(); i++)
14712      composeContactDetail(t, "TestScript", "contact", element.getContact().get(i), i);
14713    if (element.hasDescriptionElement())
14714      composeMarkdown(t, "TestScript", "description", element.getDescriptionElement(), -1);
14715    for (int i = 0; i < element.getUseContext().size(); i++)
14716      composeUsageContext(t, "TestScript", "useContext", element.getUseContext().get(i), i);
14717    for (int i = 0; i < element.getJurisdiction().size(); i++)
14718      composeCodeableConcept(t, "TestScript", "jurisdiction", element.getJurisdiction().get(i), i);
14719    if (element.hasPurposeElement())
14720      composeMarkdown(t, "TestScript", "purpose", element.getPurposeElement(), -1);
14721    if (element.hasCopyrightElement())
14722      composeMarkdown(t, "TestScript", "copyright", element.getCopyrightElement(), -1);
14723    for (int i = 0; i < element.getOrigin().size(); i++)
14724      composeTestScriptTestScriptOriginComponent(t, "TestScript", "origin", element.getOrigin().get(i), i);
14725    for (int i = 0; i < element.getDestination().size(); i++)
14726      composeTestScriptTestScriptDestinationComponent(t, "TestScript", "destination", element.getDestination().get(i), i);
14727    if (element.hasMetadata())
14728      composeTestScriptTestScriptMetadataComponent(t, "TestScript", "metadata", element.getMetadata(), -1);
14729    for (int i = 0; i < element.getFixture().size(); i++)
14730      composeTestScriptTestScriptFixtureComponent(t, "TestScript", "fixture", element.getFixture().get(i), i);
14731    for (int i = 0; i < element.getProfile().size(); i++)
14732      composeReference(t, "TestScript", "profile", element.getProfile().get(i), i);
14733    for (int i = 0; i < element.getVariable().size(); i++)
14734      composeTestScriptTestScriptVariableComponent(t, "TestScript", "variable", element.getVariable().get(i), i);
14735    for (int i = 0; i < element.getRule().size(); i++)
14736      composeTestScriptTestScriptRuleComponent(t, "TestScript", "rule", element.getRule().get(i), i);
14737    for (int i = 0; i < element.getRuleset().size(); i++)
14738      composeTestScriptTestScriptRulesetComponent(t, "TestScript", "ruleset", element.getRuleset().get(i), i);
14739    if (element.hasSetup())
14740      composeTestScriptTestScriptSetupComponent(t, "TestScript", "setup", element.getSetup(), -1);
14741    for (int i = 0; i < element.getTest().size(); i++)
14742      composeTestScriptTestScriptTestComponent(t, "TestScript", "test", element.getTest().get(i), i);
14743    if (element.hasTeardown())
14744      composeTestScriptTestScriptTeardownComponent(t, "TestScript", "teardown", element.getTeardown(), -1);
14745  }
14746
14747  protected void composeTestScriptTestScriptOriginComponent(Complex parent, String parentType, String name, TestScript.TestScriptOriginComponent element, int index) {
14748    if (element == null) 
14749      return;
14750    Complex t;
14751    if (Utilities.noString(parentType))
14752      t = parent;
14753    else {
14754      t = parent.predicate("fhir:"+parentType+'.'+name);
14755    }
14756    composeBackboneElement(t, "origin", name, element, index);
14757    if (element.hasIndexElement())
14758      composeInteger(t, "TestScript", "index", element.getIndexElement(), -1);
14759    if (element.hasProfile())
14760      composeCoding(t, "TestScript", "profile", element.getProfile(), -1);
14761  }
14762
14763  protected void composeTestScriptTestScriptDestinationComponent(Complex parent, String parentType, String name, TestScript.TestScriptDestinationComponent element, int index) {
14764    if (element == null) 
14765      return;
14766    Complex t;
14767    if (Utilities.noString(parentType))
14768      t = parent;
14769    else {
14770      t = parent.predicate("fhir:"+parentType+'.'+name);
14771    }
14772    composeBackboneElement(t, "destination", name, element, index);
14773    if (element.hasIndexElement())
14774      composeInteger(t, "TestScript", "index", element.getIndexElement(), -1);
14775    if (element.hasProfile())
14776      composeCoding(t, "TestScript", "profile", element.getProfile(), -1);
14777  }
14778
14779  protected void composeTestScriptTestScriptMetadataComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataComponent element, int index) {
14780    if (element == null) 
14781      return;
14782    Complex t;
14783    if (Utilities.noString(parentType))
14784      t = parent;
14785    else {
14786      t = parent.predicate("fhir:"+parentType+'.'+name);
14787    }
14788    composeBackboneElement(t, "metadata", name, element, index);
14789    for (int i = 0; i < element.getLink().size(); i++)
14790      composeTestScriptTestScriptMetadataLinkComponent(t, "TestScript", "link", element.getLink().get(i), i);
14791    for (int i = 0; i < element.getCapability().size(); i++)
14792      composeTestScriptTestScriptMetadataCapabilityComponent(t, "TestScript", "capability", element.getCapability().get(i), i);
14793  }
14794
14795  protected void composeTestScriptTestScriptMetadataLinkComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataLinkComponent element, int index) {
14796    if (element == null) 
14797      return;
14798    Complex t;
14799    if (Utilities.noString(parentType))
14800      t = parent;
14801    else {
14802      t = parent.predicate("fhir:"+parentType+'.'+name);
14803    }
14804    composeBackboneElement(t, "link", name, element, index);
14805    if (element.hasUrlElement())
14806      composeUri(t, "TestScript", "url", element.getUrlElement(), -1);
14807    if (element.hasDescriptionElement())
14808      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
14809  }
14810
14811  protected void composeTestScriptTestScriptMetadataCapabilityComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataCapabilityComponent element, int index) {
14812    if (element == null) 
14813      return;
14814    Complex t;
14815    if (Utilities.noString(parentType))
14816      t = parent;
14817    else {
14818      t = parent.predicate("fhir:"+parentType+'.'+name);
14819    }
14820    composeBackboneElement(t, "capability", name, element, index);
14821    if (element.hasRequiredElement())
14822      composeBoolean(t, "TestScript", "required", element.getRequiredElement(), -1);
14823    if (element.hasValidatedElement())
14824      composeBoolean(t, "TestScript", "validated", element.getValidatedElement(), -1);
14825    if (element.hasDescriptionElement())
14826      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
14827    for (int i = 0; i < element.getOrigin().size(); i++)
14828      composeInteger(t, "TestScript", "origin", element.getOrigin().get(i), i);
14829    if (element.hasDestinationElement())
14830      composeInteger(t, "TestScript", "destination", element.getDestinationElement(), -1);
14831    for (int i = 0; i < element.getLink().size(); i++)
14832      composeUri(t, "TestScript", "link", element.getLink().get(i), i);
14833    if (element.hasCapabilitiesElement())
14834      composeCanonical(t, "TestScript", "capabilities", element.getCapabilitiesElement(), -1);
14835  }
14836
14837  protected void composeTestScriptTestScriptFixtureComponent(Complex parent, String parentType, String name, TestScript.TestScriptFixtureComponent element, int index) {
14838    if (element == null) 
14839      return;
14840    Complex t;
14841    if (Utilities.noString(parentType))
14842      t = parent;
14843    else {
14844      t = parent.predicate("fhir:"+parentType+'.'+name);
14845    }
14846    composeBackboneElement(t, "fixture", name, element, index);
14847    if (element.hasAutocreateElement())
14848      composeBoolean(t, "TestScript", "autocreate", element.getAutocreateElement(), -1);
14849    if (element.hasAutodeleteElement())
14850      composeBoolean(t, "TestScript", "autodelete", element.getAutodeleteElement(), -1);
14851    if (element.hasResource())
14852      composeReference(t, "TestScript", "resource", element.getResource(), -1);
14853  }
14854
14855  protected void composeTestScriptTestScriptVariableComponent(Complex parent, String parentType, String name, TestScript.TestScriptVariableComponent element, int index) {
14856    if (element == null) 
14857      return;
14858    Complex t;
14859    if (Utilities.noString(parentType))
14860      t = parent;
14861    else {
14862      t = parent.predicate("fhir:"+parentType+'.'+name);
14863    }
14864    composeBackboneElement(t, "variable", name, element, index);
14865    if (element.hasNameElement())
14866      composeString(t, "TestScript", "name", element.getNameElement(), -1);
14867    if (element.hasDefaultValueElement())
14868      composeString(t, "TestScript", "defaultValue", element.getDefaultValueElement(), -1);
14869    if (element.hasDescriptionElement())
14870      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
14871    if (element.hasExpressionElement())
14872      composeString(t, "TestScript", "expression", element.getExpressionElement(), -1);
14873    if (element.hasHeaderFieldElement())
14874      composeString(t, "TestScript", "headerField", element.getHeaderFieldElement(), -1);
14875    if (element.hasHintElement())
14876      composeString(t, "TestScript", "hint", element.getHintElement(), -1);
14877    if (element.hasPathElement())
14878      composeString(t, "TestScript", "path", element.getPathElement(), -1);
14879    if (element.hasSourceIdElement())
14880      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
14881  }
14882
14883  protected void composeTestScriptTestScriptRuleComponent(Complex parent, String parentType, String name, TestScript.TestScriptRuleComponent element, int index) {
14884    if (element == null) 
14885      return;
14886    Complex t;
14887    if (Utilities.noString(parentType))
14888      t = parent;
14889    else {
14890      t = parent.predicate("fhir:"+parentType+'.'+name);
14891    }
14892    composeBackboneElement(t, "rule", name, element, index);
14893    if (element.hasResource())
14894      composeReference(t, "TestScript", "resource", element.getResource(), -1);
14895    for (int i = 0; i < element.getParam().size(); i++)
14896      composeTestScriptRuleParamComponent(t, "TestScript", "param", element.getParam().get(i), i);
14897  }
14898
14899  protected void composeTestScriptRuleParamComponent(Complex parent, String parentType, String name, TestScript.RuleParamComponent element, int index) {
14900    if (element == null) 
14901      return;
14902    Complex t;
14903    if (Utilities.noString(parentType))
14904      t = parent;
14905    else {
14906      t = parent.predicate("fhir:"+parentType+'.'+name);
14907    }
14908    composeBackboneElement(t, "param", name, element, index);
14909    if (element.hasNameElement())
14910      composeString(t, "TestScript", "name", element.getNameElement(), -1);
14911    if (element.hasValueElement())
14912      composeString(t, "TestScript", "value", element.getValueElement(), -1);
14913  }
14914
14915  protected void composeTestScriptTestScriptRulesetComponent(Complex parent, String parentType, String name, TestScript.TestScriptRulesetComponent element, int index) {
14916    if (element == null) 
14917      return;
14918    Complex t;
14919    if (Utilities.noString(parentType))
14920      t = parent;
14921    else {
14922      t = parent.predicate("fhir:"+parentType+'.'+name);
14923    }
14924    composeBackboneElement(t, "ruleset", name, element, index);
14925    if (element.hasResource())
14926      composeReference(t, "TestScript", "resource", element.getResource(), -1);
14927    for (int i = 0; i < element.getRule().size(); i++)
14928      composeTestScriptRulesetRuleComponent(t, "TestScript", "rule", element.getRule().get(i), i);
14929  }
14930
14931  protected void composeTestScriptRulesetRuleComponent(Complex parent, String parentType, String name, TestScript.RulesetRuleComponent element, int index) {
14932    if (element == null) 
14933      return;
14934    Complex t;
14935    if (Utilities.noString(parentType))
14936      t = parent;
14937    else {
14938      t = parent.predicate("fhir:"+parentType+'.'+name);
14939    }
14940    composeBackboneElement(t, "rule", name, element, index);
14941    if (element.hasRuleIdElement())
14942      composeId(t, "TestScript", "ruleId", element.getRuleIdElement(), -1);
14943    for (int i = 0; i < element.getParam().size(); i++)
14944      composeTestScriptRulesetRuleParamComponent(t, "TestScript", "param", element.getParam().get(i), i);
14945  }
14946
14947  protected void composeTestScriptRulesetRuleParamComponent(Complex parent, String parentType, String name, TestScript.RulesetRuleParamComponent element, int index) {
14948    if (element == null) 
14949      return;
14950    Complex t;
14951    if (Utilities.noString(parentType))
14952      t = parent;
14953    else {
14954      t = parent.predicate("fhir:"+parentType+'.'+name);
14955    }
14956    composeBackboneElement(t, "param", name, element, index);
14957    if (element.hasNameElement())
14958      composeString(t, "TestScript", "name", element.getNameElement(), -1);
14959    if (element.hasValueElement())
14960      composeString(t, "TestScript", "value", element.getValueElement(), -1);
14961  }
14962
14963  protected void composeTestScriptTestScriptSetupComponent(Complex parent, String parentType, String name, TestScript.TestScriptSetupComponent element, int index) {
14964    if (element == null) 
14965      return;
14966    Complex t;
14967    if (Utilities.noString(parentType))
14968      t = parent;
14969    else {
14970      t = parent.predicate("fhir:"+parentType+'.'+name);
14971    }
14972    composeBackboneElement(t, "setup", name, element, index);
14973    for (int i = 0; i < element.getAction().size(); i++)
14974      composeTestScriptSetupActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
14975  }
14976
14977  protected void composeTestScriptSetupActionComponent(Complex parent, String parentType, String name, TestScript.SetupActionComponent element, int index) {
14978    if (element == null) 
14979      return;
14980    Complex t;
14981    if (Utilities.noString(parentType))
14982      t = parent;
14983    else {
14984      t = parent.predicate("fhir:"+parentType+'.'+name);
14985    }
14986    composeBackboneElement(t, "action", name, element, index);
14987    if (element.hasOperation())
14988      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
14989    if (element.hasAssert())
14990      composeTestScriptSetupActionAssertComponent(t, "TestScript", "assert", element.getAssert(), -1);
14991  }
14992
14993  protected void composeTestScriptSetupActionOperationComponent(Complex parent, String parentType, String name, TestScript.SetupActionOperationComponent element, int index) {
14994    if (element == null) 
14995      return;
14996    Complex t;
14997    if (Utilities.noString(parentType))
14998      t = parent;
14999    else {
15000      t = parent.predicate("fhir:"+parentType+'.'+name);
15001    }
15002    composeBackboneElement(t, "operation", name, element, index);
15003    if (element.hasType())
15004      composeCoding(t, "TestScript", "type", element.getType(), -1);
15005    if (element.hasResourceElement())
15006      composeCode(t, "TestScript", "resource", element.getResourceElement(), -1);
15007    if (element.hasLabelElement())
15008      composeString(t, "TestScript", "label", element.getLabelElement(), -1);
15009    if (element.hasDescriptionElement())
15010      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
15011    if (element.hasAcceptElement())
15012      composeCode(t, "TestScript", "accept", element.getAcceptElement(), -1);
15013    if (element.hasContentTypeElement())
15014      composeCode(t, "TestScript", "contentType", element.getContentTypeElement(), -1);
15015    if (element.hasDestinationElement())
15016      composeInteger(t, "TestScript", "destination", element.getDestinationElement(), -1);
15017    if (element.hasEncodeRequestUrlElement())
15018      composeBoolean(t, "TestScript", "encodeRequestUrl", element.getEncodeRequestUrlElement(), -1);
15019    if (element.hasOriginElement())
15020      composeInteger(t, "TestScript", "origin", element.getOriginElement(), -1);
15021    if (element.hasParamsElement())
15022      composeString(t, "TestScript", "params", element.getParamsElement(), -1);
15023    for (int i = 0; i < element.getRequestHeader().size(); i++)
15024      composeTestScriptSetupActionOperationRequestHeaderComponent(t, "TestScript", "requestHeader", element.getRequestHeader().get(i), i);
15025    if (element.hasRequestIdElement())
15026      composeId(t, "TestScript", "requestId", element.getRequestIdElement(), -1);
15027    if (element.hasResponseIdElement())
15028      composeId(t, "TestScript", "responseId", element.getResponseIdElement(), -1);
15029    if (element.hasSourceIdElement())
15030      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
15031    if (element.hasTargetIdElement())
15032      composeId(t, "TestScript", "targetId", element.getTargetIdElement(), -1);
15033    if (element.hasUrlElement())
15034      composeString(t, "TestScript", "url", element.getUrlElement(), -1);
15035  }
15036
15037  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(Complex parent, String parentType, String name, TestScript.SetupActionOperationRequestHeaderComponent element, int index) {
15038    if (element == null) 
15039      return;
15040    Complex t;
15041    if (Utilities.noString(parentType))
15042      t = parent;
15043    else {
15044      t = parent.predicate("fhir:"+parentType+'.'+name);
15045    }
15046    composeBackboneElement(t, "requestHeader", name, element, index);
15047    if (element.hasFieldElement())
15048      composeString(t, "TestScript", "field", element.getFieldElement(), -1);
15049    if (element.hasValueElement())
15050      composeString(t, "TestScript", "value", element.getValueElement(), -1);
15051  }
15052
15053  protected void composeTestScriptSetupActionAssertComponent(Complex parent, String parentType, String name, TestScript.SetupActionAssertComponent element, int index) {
15054    if (element == null) 
15055      return;
15056    Complex t;
15057    if (Utilities.noString(parentType))
15058      t = parent;
15059    else {
15060      t = parent.predicate("fhir:"+parentType+'.'+name);
15061    }
15062    composeBackboneElement(t, "assert", name, element, index);
15063    if (element.hasLabelElement())
15064      composeString(t, "TestScript", "label", element.getLabelElement(), -1);
15065    if (element.hasDescriptionElement())
15066      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
15067    if (element.hasDirectionElement())
15068      composeEnum(t, "TestScript", "direction", element.getDirectionElement(), -1);
15069    if (element.hasCompareToSourceIdElement())
15070      composeString(t, "TestScript", "compareToSourceId", element.getCompareToSourceIdElement(), -1);
15071    if (element.hasCompareToSourceExpressionElement())
15072      composeString(t, "TestScript", "compareToSourceExpression", element.getCompareToSourceExpressionElement(), -1);
15073    if (element.hasCompareToSourcePathElement())
15074      composeString(t, "TestScript", "compareToSourcePath", element.getCompareToSourcePathElement(), -1);
15075    if (element.hasContentTypeElement())
15076      composeCode(t, "TestScript", "contentType", element.getContentTypeElement(), -1);
15077    if (element.hasExpressionElement())
15078      composeString(t, "TestScript", "expression", element.getExpressionElement(), -1);
15079    if (element.hasHeaderFieldElement())
15080      composeString(t, "TestScript", "headerField", element.getHeaderFieldElement(), -1);
15081    if (element.hasMinimumIdElement())
15082      composeString(t, "TestScript", "minimumId", element.getMinimumIdElement(), -1);
15083    if (element.hasNavigationLinksElement())
15084      composeBoolean(t, "TestScript", "navigationLinks", element.getNavigationLinksElement(), -1);
15085    if (element.hasOperatorElement())
15086      composeEnum(t, "TestScript", "operator", element.getOperatorElement(), -1);
15087    if (element.hasPathElement())
15088      composeString(t, "TestScript", "path", element.getPathElement(), -1);
15089    if (element.hasRequestMethodElement())
15090      composeEnum(t, "TestScript", "requestMethod", element.getRequestMethodElement(), -1);
15091    if (element.hasRequestURLElement())
15092      composeString(t, "TestScript", "requestURL", element.getRequestURLElement(), -1);
15093    if (element.hasResourceElement())
15094      composeCode(t, "TestScript", "resource", element.getResourceElement(), -1);
15095    if (element.hasResponseElement())
15096      composeEnum(t, "TestScript", "response", element.getResponseElement(), -1);
15097    if (element.hasResponseCodeElement())
15098      composeString(t, "TestScript", "responseCode", element.getResponseCodeElement(), -1);
15099    if (element.hasRule())
15100      composeTestScriptActionAssertRuleComponent(t, "TestScript", "rule", element.getRule(), -1);
15101    if (element.hasRuleset())
15102      composeTestScriptActionAssertRulesetComponent(t, "TestScript", "ruleset", element.getRuleset(), -1);
15103    if (element.hasSourceIdElement())
15104      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
15105    if (element.hasValidateProfileIdElement())
15106      composeId(t, "TestScript", "validateProfileId", element.getValidateProfileIdElement(), -1);
15107    if (element.hasValueElement())
15108      composeString(t, "TestScript", "value", element.getValueElement(), -1);
15109    if (element.hasWarningOnlyElement())
15110      composeBoolean(t, "TestScript", "warningOnly", element.getWarningOnlyElement(), -1);
15111  }
15112
15113  protected void composeTestScriptActionAssertRuleComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRuleComponent element, int index) {
15114    if (element == null) 
15115      return;
15116    Complex t;
15117    if (Utilities.noString(parentType))
15118      t = parent;
15119    else {
15120      t = parent.predicate("fhir:"+parentType+'.'+name);
15121    }
15122    composeBackboneElement(t, "rule", name, element, index);
15123    if (element.hasRuleIdElement())
15124      composeId(t, "TestScript", "ruleId", element.getRuleIdElement(), -1);
15125    for (int i = 0; i < element.getParam().size(); i++)
15126      composeTestScriptActionAssertRuleParamComponent(t, "TestScript", "param", element.getParam().get(i), i);
15127  }
15128
15129  protected void composeTestScriptActionAssertRuleParamComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRuleParamComponent element, int index) {
15130    if (element == null) 
15131      return;
15132    Complex t;
15133    if (Utilities.noString(parentType))
15134      t = parent;
15135    else {
15136      t = parent.predicate("fhir:"+parentType+'.'+name);
15137    }
15138    composeBackboneElement(t, "param", name, element, index);
15139    if (element.hasNameElement())
15140      composeString(t, "TestScript", "name", element.getNameElement(), -1);
15141    if (element.hasValueElement())
15142      composeString(t, "TestScript", "value", element.getValueElement(), -1);
15143  }
15144
15145  protected void composeTestScriptActionAssertRulesetComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRulesetComponent element, int index) {
15146    if (element == null) 
15147      return;
15148    Complex t;
15149    if (Utilities.noString(parentType))
15150      t = parent;
15151    else {
15152      t = parent.predicate("fhir:"+parentType+'.'+name);
15153    }
15154    composeBackboneElement(t, "ruleset", name, element, index);
15155    if (element.hasRulesetIdElement())
15156      composeId(t, "TestScript", "rulesetId", element.getRulesetIdElement(), -1);
15157    for (int i = 0; i < element.getRule().size(); i++)
15158      composeTestScriptActionAssertRulesetRuleComponent(t, "TestScript", "rule", element.getRule().get(i), i);
15159  }
15160
15161  protected void composeTestScriptActionAssertRulesetRuleComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRulesetRuleComponent element, int index) {
15162    if (element == null) 
15163      return;
15164    Complex t;
15165    if (Utilities.noString(parentType))
15166      t = parent;
15167    else {
15168      t = parent.predicate("fhir:"+parentType+'.'+name);
15169    }
15170    composeBackboneElement(t, "rule", name, element, index);
15171    if (element.hasRuleIdElement())
15172      composeId(t, "TestScript", "ruleId", element.getRuleIdElement(), -1);
15173    for (int i = 0; i < element.getParam().size(); i++)
15174      composeTestScriptActionAssertRulesetRuleParamComponent(t, "TestScript", "param", element.getParam().get(i), i);
15175  }
15176
15177  protected void composeTestScriptActionAssertRulesetRuleParamComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRulesetRuleParamComponent element, int index) {
15178    if (element == null) 
15179      return;
15180    Complex t;
15181    if (Utilities.noString(parentType))
15182      t = parent;
15183    else {
15184      t = parent.predicate("fhir:"+parentType+'.'+name);
15185    }
15186    composeBackboneElement(t, "param", name, element, index);
15187    if (element.hasNameElement())
15188      composeString(t, "TestScript", "name", element.getNameElement(), -1);
15189    if (element.hasValueElement())
15190      composeString(t, "TestScript", "value", element.getValueElement(), -1);
15191  }
15192
15193  protected void composeTestScriptTestScriptTestComponent(Complex parent, String parentType, String name, TestScript.TestScriptTestComponent element, int index) {
15194    if (element == null) 
15195      return;
15196    Complex t;
15197    if (Utilities.noString(parentType))
15198      t = parent;
15199    else {
15200      t = parent.predicate("fhir:"+parentType+'.'+name);
15201    }
15202    composeBackboneElement(t, "test", name, element, index);
15203    if (element.hasNameElement())
15204      composeString(t, "TestScript", "name", element.getNameElement(), -1);
15205    if (element.hasDescriptionElement())
15206      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
15207    for (int i = 0; i < element.getAction().size(); i++)
15208      composeTestScriptTestActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
15209  }
15210
15211  protected void composeTestScriptTestActionComponent(Complex parent, String parentType, String name, TestScript.TestActionComponent element, int index) {
15212    if (element == null) 
15213      return;
15214    Complex t;
15215    if (Utilities.noString(parentType))
15216      t = parent;
15217    else {
15218      t = parent.predicate("fhir:"+parentType+'.'+name);
15219    }
15220    composeBackboneElement(t, "action", name, element, index);
15221    if (element.hasOperation())
15222      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
15223    if (element.hasAssert())
15224      composeTestScriptSetupActionAssertComponent(t, "TestScript", "assert", element.getAssert(), -1);
15225  }
15226
15227  protected void composeTestScriptTestScriptTeardownComponent(Complex parent, String parentType, String name, TestScript.TestScriptTeardownComponent element, int index) {
15228    if (element == null) 
15229      return;
15230    Complex t;
15231    if (Utilities.noString(parentType))
15232      t = parent;
15233    else {
15234      t = parent.predicate("fhir:"+parentType+'.'+name);
15235    }
15236    composeBackboneElement(t, "teardown", name, element, index);
15237    for (int i = 0; i < element.getAction().size(); i++)
15238      composeTestScriptTeardownActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
15239  }
15240
15241  protected void composeTestScriptTeardownActionComponent(Complex parent, String parentType, String name, TestScript.TeardownActionComponent element, int index) {
15242    if (element == null) 
15243      return;
15244    Complex t;
15245    if (Utilities.noString(parentType))
15246      t = parent;
15247    else {
15248      t = parent.predicate("fhir:"+parentType+'.'+name);
15249    }
15250    composeBackboneElement(t, "action", name, element, index);
15251    if (element.hasOperation())
15252      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
15253  }
15254
15255  protected void composeUserSession(Complex parent, String parentType, String name, UserSession element, int index) {
15256    if (element == null) 
15257      return;
15258    Complex t;
15259    if (Utilities.noString(parentType))
15260      t = parent;
15261    else {
15262      t = parent.predicate("fhir:"+parentType+'.'+name);
15263    }
15264    composeDomainResource(t, "UserSession", name, element, index);
15265    if (element.hasIdentifier())
15266      composeIdentifier(t, "UserSession", "identifier", element.getIdentifier(), -1);
15267    if (element.hasUser())
15268      composeReference(t, "UserSession", "user", element.getUser(), -1);
15269    if (element.hasStatus())
15270      composeUserSessionUserSessionStatusComponent(t, "UserSession", "status", element.getStatus(), -1);
15271    if (element.hasWorkstation())
15272      composeIdentifier(t, "UserSession", "workstation", element.getWorkstation(), -1);
15273    for (int i = 0; i < element.getFocus().size(); i++)
15274      composeReference(t, "UserSession", "focus", element.getFocus().get(i), i);
15275    if (element.hasCreatedElement())
15276      composeInstant(t, "UserSession", "created", element.getCreatedElement(), -1);
15277    if (element.hasExpiresElement())
15278      composeInstant(t, "UserSession", "expires", element.getExpiresElement(), -1);
15279    for (int i = 0; i < element.getContext().size(); i++)
15280      composeUserSessionUserSessionContextComponent(t, "UserSession", "context", element.getContext().get(i), i);
15281  }
15282
15283  protected void composeUserSessionUserSessionStatusComponent(Complex parent, String parentType, String name, UserSession.UserSessionStatusComponent element, int index) {
15284    if (element == null) 
15285      return;
15286    Complex t;
15287    if (Utilities.noString(parentType))
15288      t = parent;
15289    else {
15290      t = parent.predicate("fhir:"+parentType+'.'+name);
15291    }
15292    composeBackboneElement(t, "status", name, element, index);
15293    if (element.hasCodeElement())
15294      composeEnum(t, "UserSession", "code", element.getCodeElement(), -1);
15295    if (element.hasSourceElement())
15296      composeEnum(t, "UserSession", "source", element.getSourceElement(), -1);
15297  }
15298
15299  protected void composeUserSessionUserSessionContextComponent(Complex parent, String parentType, String name, UserSession.UserSessionContextComponent element, int index) {
15300    if (element == null) 
15301      return;
15302    Complex t;
15303    if (Utilities.noString(parentType))
15304      t = parent;
15305    else {
15306      t = parent.predicate("fhir:"+parentType+'.'+name);
15307    }
15308    composeBackboneElement(t, "context", name, element, index);
15309    if (element.hasTypeElement())
15310      composeString(t, "UserSession", "type", element.getTypeElement(), -1);
15311    if (element.hasValue())
15312      composeType(t, "UserSession", "value", element.getValue(), -1);
15313  }
15314
15315  protected void composeValueSet(Complex parent, String parentType, String name, ValueSet element, int index) {
15316    if (element == null) 
15317      return;
15318    Complex t;
15319    if (Utilities.noString(parentType))
15320      t = parent;
15321    else {
15322      t = parent.predicate("fhir:"+parentType+'.'+name);
15323    }
15324    composeDomainResource(t, "ValueSet", name, element, index);
15325    if (element.hasUrlElement())
15326      composeUri(t, "ValueSet", "url", element.getUrlElement(), -1);
15327    for (int i = 0; i < element.getIdentifier().size(); i++)
15328      composeIdentifier(t, "ValueSet", "identifier", element.getIdentifier().get(i), i);
15329    if (element.hasVersionElement())
15330      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
15331    if (element.hasNameElement())
15332      composeString(t, "ValueSet", "name", element.getNameElement(), -1);
15333    if (element.hasTitleElement())
15334      composeString(t, "ValueSet", "title", element.getTitleElement(), -1);
15335    if (element.hasStatusElement())
15336      composeEnum(t, "ValueSet", "status", element.getStatusElement(), -1);
15337    if (element.hasExperimentalElement())
15338      composeBoolean(t, "ValueSet", "experimental", element.getExperimentalElement(), -1);
15339    if (element.hasDateElement())
15340      composeDateTime(t, "ValueSet", "date", element.getDateElement(), -1);
15341    if (element.hasPublisherElement())
15342      composeString(t, "ValueSet", "publisher", element.getPublisherElement(), -1);
15343    for (int i = 0; i < element.getContact().size(); i++)
15344      composeContactDetail(t, "ValueSet", "contact", element.getContact().get(i), i);
15345    if (element.hasDescriptionElement())
15346      composeMarkdown(t, "ValueSet", "description", element.getDescriptionElement(), -1);
15347    for (int i = 0; i < element.getUseContext().size(); i++)
15348      composeUsageContext(t, "ValueSet", "useContext", element.getUseContext().get(i), i);
15349    for (int i = 0; i < element.getJurisdiction().size(); i++)
15350      composeCodeableConcept(t, "ValueSet", "jurisdiction", element.getJurisdiction().get(i), i);
15351    if (element.hasImmutableElement())
15352      composeBoolean(t, "ValueSet", "immutable", element.getImmutableElement(), -1);
15353    if (element.hasPurposeElement())
15354      composeMarkdown(t, "ValueSet", "purpose", element.getPurposeElement(), -1);
15355    if (element.hasCopyrightElement())
15356      composeMarkdown(t, "ValueSet", "copyright", element.getCopyrightElement(), -1);
15357    if (element.hasExtensibleElement())
15358      composeBoolean(t, "ValueSet", "extensible", element.getExtensibleElement(), -1);
15359    if (element.hasCompose())
15360      composeValueSetValueSetComposeComponent(t, "ValueSet", "compose", element.getCompose(), -1);
15361    if (element.hasExpansion())
15362      composeValueSetValueSetExpansionComponent(t, "ValueSet", "expansion", element.getExpansion(), -1);
15363  }
15364
15365  protected void composeValueSetValueSetComposeComponent(Complex parent, String parentType, String name, ValueSet.ValueSetComposeComponent element, int index) {
15366    if (element == null) 
15367      return;
15368    Complex t;
15369    if (Utilities.noString(parentType))
15370      t = parent;
15371    else {
15372      t = parent.predicate("fhir:"+parentType+'.'+name);
15373    }
15374    composeBackboneElement(t, "compose", name, element, index);
15375    if (element.hasLockedDateElement())
15376      composeDate(t, "ValueSet", "lockedDate", element.getLockedDateElement(), -1);
15377    if (element.hasInactiveElement())
15378      composeBoolean(t, "ValueSet", "inactive", element.getInactiveElement(), -1);
15379    for (int i = 0; i < element.getInclude().size(); i++)
15380      composeValueSetConceptSetComponent(t, "ValueSet", "include", element.getInclude().get(i), i);
15381    for (int i = 0; i < element.getExclude().size(); i++)
15382      composeValueSetConceptSetComponent(t, "ValueSet", "exclude", element.getExclude().get(i), i);
15383  }
15384
15385  protected void composeValueSetConceptSetComponent(Complex parent, String parentType, String name, ValueSet.ConceptSetComponent element, int index) {
15386    if (element == null) 
15387      return;
15388    Complex t;
15389    if (Utilities.noString(parentType))
15390      t = parent;
15391    else {
15392      t = parent.predicate("fhir:"+parentType+'.'+name);
15393    }
15394    composeBackboneElement(t, "include", name, element, index);
15395    if (element.hasSystemElement())
15396      composeUri(t, "ValueSet", "system", element.getSystemElement(), -1);
15397    if (element.hasVersionElement())
15398      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
15399    for (int i = 0; i < element.getConcept().size(); i++)
15400      composeValueSetConceptReferenceComponent(t, "ValueSet", "concept", element.getConcept().get(i), i);
15401    for (int i = 0; i < element.getFilter().size(); i++)
15402      composeValueSetConceptSetFilterComponent(t, "ValueSet", "filter", element.getFilter().get(i), i);
15403    for (int i = 0; i < element.getValueSet().size(); i++)
15404      composeCanonical(t, "ValueSet", "valueSet", element.getValueSet().get(i), i);
15405  }
15406
15407  protected void composeValueSetConceptReferenceComponent(Complex parent, String parentType, String name, ValueSet.ConceptReferenceComponent element, int index) {
15408    if (element == null) 
15409      return;
15410    Complex t;
15411    if (Utilities.noString(parentType))
15412      t = parent;
15413    else {
15414      t = parent.predicate("fhir:"+parentType+'.'+name);
15415    }
15416    composeBackboneElement(t, "concept", name, element, index);
15417    if (element.hasCodeElement())
15418      composeCode(t, "ValueSet", "code", element.getCodeElement(), -1);
15419    if (element.hasDisplayElement())
15420      composeString(t, "ValueSet", "display", element.getDisplayElement(), -1);
15421    for (int i = 0; i < element.getDesignation().size(); i++)
15422      composeValueSetConceptReferenceDesignationComponent(t, "ValueSet", "designation", element.getDesignation().get(i), i);
15423  }
15424
15425  protected void composeValueSetConceptReferenceDesignationComponent(Complex parent, String parentType, String name, ValueSet.ConceptReferenceDesignationComponent element, int index) {
15426    if (element == null) 
15427      return;
15428    Complex t;
15429    if (Utilities.noString(parentType))
15430      t = parent;
15431    else {
15432      t = parent.predicate("fhir:"+parentType+'.'+name);
15433    }
15434    composeBackboneElement(t, "designation", name, element, index);
15435    if (element.hasLanguageElement())
15436      composeCode(t, "ValueSet", "language", element.getLanguageElement(), -1);
15437    if (element.hasUse())
15438      composeCoding(t, "ValueSet", "use", element.getUse(), -1);
15439    if (element.hasValueElement())
15440      composeString(t, "ValueSet", "value", element.getValueElement(), -1);
15441  }
15442
15443  protected void composeValueSetConceptSetFilterComponent(Complex parent, String parentType, String name, ValueSet.ConceptSetFilterComponent element, int index) {
15444    if (element == null) 
15445      return;
15446    Complex t;
15447    if (Utilities.noString(parentType))
15448      t = parent;
15449    else {
15450      t = parent.predicate("fhir:"+parentType+'.'+name);
15451    }
15452    composeBackboneElement(t, "filter", name, element, index);
15453    if (element.hasPropertyElement())
15454      composeCode(t, "ValueSet", "property", element.getPropertyElement(), -1);
15455    if (element.hasOpElement())
15456      composeEnum(t, "ValueSet", "op", element.getOpElement(), -1);
15457    if (element.hasValueElement())
15458      composeString(t, "ValueSet", "value", element.getValueElement(), -1);
15459  }
15460
15461  protected void composeValueSetValueSetExpansionComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionComponent element, int index) {
15462    if (element == null) 
15463      return;
15464    Complex t;
15465    if (Utilities.noString(parentType))
15466      t = parent;
15467    else {
15468      t = parent.predicate("fhir:"+parentType+'.'+name);
15469    }
15470    composeBackboneElement(t, "expansion", name, element, index);
15471    if (element.hasIdentifierElement())
15472      composeUri(t, "ValueSet", "identifier", element.getIdentifierElement(), -1);
15473    if (element.hasTimestampElement())
15474      composeDateTime(t, "ValueSet", "timestamp", element.getTimestampElement(), -1);
15475    if (element.hasTotalElement())
15476      composeInteger(t, "ValueSet", "total", element.getTotalElement(), -1);
15477    if (element.hasOffsetElement())
15478      composeInteger(t, "ValueSet", "offset", element.getOffsetElement(), -1);
15479    for (int i = 0; i < element.getParameter().size(); i++)
15480      composeValueSetValueSetExpansionParameterComponent(t, "ValueSet", "parameter", element.getParameter().get(i), i);
15481    for (int i = 0; i < element.getContains().size(); i++)
15482      composeValueSetValueSetExpansionContainsComponent(t, "ValueSet", "contains", element.getContains().get(i), i);
15483  }
15484
15485  protected void composeValueSetValueSetExpansionParameterComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionParameterComponent element, int index) {
15486    if (element == null) 
15487      return;
15488    Complex t;
15489    if (Utilities.noString(parentType))
15490      t = parent;
15491    else {
15492      t = parent.predicate("fhir:"+parentType+'.'+name);
15493    }
15494    composeBackboneElement(t, "parameter", name, element, index);
15495    if (element.hasNameElement())
15496      composeString(t, "ValueSet", "name", element.getNameElement(), -1);
15497    if (element.hasValue())
15498      composeType(t, "ValueSet", "value", element.getValue(), -1);
15499  }
15500
15501  protected void composeValueSetValueSetExpansionContainsComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionContainsComponent element, int index) {
15502    if (element == null) 
15503      return;
15504    Complex t;
15505    if (Utilities.noString(parentType))
15506      t = parent;
15507    else {
15508      t = parent.predicate("fhir:"+parentType+'.'+name);
15509    }
15510    composeBackboneElement(t, "contains", name, element, index);
15511    if (element.hasSystemElement())
15512      composeUri(t, "ValueSet", "system", element.getSystemElement(), -1);
15513    if (element.hasAbstractElement())
15514      composeBoolean(t, "ValueSet", "abstract", element.getAbstractElement(), -1);
15515    if (element.hasInactiveElement())
15516      composeBoolean(t, "ValueSet", "inactive", element.getInactiveElement(), -1);
15517    if (element.hasVersionElement())
15518      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
15519    if (element.hasCodeElement())
15520      composeCode(t, "ValueSet", "code", element.getCodeElement(), -1);
15521    if (element.hasDisplayElement())
15522      composeString(t, "ValueSet", "display", element.getDisplayElement(), -1);
15523    for (int i = 0; i < element.getDesignation().size(); i++)
15524      composeValueSetConceptReferenceDesignationComponent(t, "ValueSet", "designation", element.getDesignation().get(i), i);
15525    for (int i = 0; i < element.getContains().size(); i++)
15526      composeValueSetValueSetExpansionContainsComponent(t, "ValueSet", "contains", element.getContains().get(i), i);
15527  }
15528
15529  protected void composeVerificationResult(Complex parent, String parentType, String name, VerificationResult element, int index) {
15530    if (element == null) 
15531      return;
15532    Complex t;
15533    if (Utilities.noString(parentType))
15534      t = parent;
15535    else {
15536      t = parent.predicate("fhir:"+parentType+'.'+name);
15537    }
15538    composeDomainResource(t, "VerificationResult", name, element, index);
15539    for (int i = 0; i < element.getTarget().size(); i++)
15540      composeReference(t, "VerificationResult", "target", element.getTarget().get(i), i);
15541    for (int i = 0; i < element.getTargetLocation().size(); i++)
15542      composeString(t, "VerificationResult", "targetLocation", element.getTargetLocation().get(i), i);
15543    if (element.hasNeedElement())
15544      composeEnum(t, "VerificationResult", "need", element.getNeedElement(), -1);
15545    if (element.hasStatusElement())
15546      composeEnum(t, "VerificationResult", "status", element.getStatusElement(), -1);
15547    if (element.hasStatusDateElement())
15548      composeDateTime(t, "VerificationResult", "statusDate", element.getStatusDateElement(), -1);
15549    if (element.hasValidationTypeElement())
15550      composeEnum(t, "VerificationResult", "validationType", element.getValidationTypeElement(), -1);
15551    for (int i = 0; i < element.getValidationProcess().size(); i++)
15552      composeCodeableConcept(t, "VerificationResult", "validationProcess", element.getValidationProcess().get(i), i);
15553    if (element.hasFrequency())
15554      composeTiming(t, "VerificationResult", "frequency", element.getFrequency(), -1);
15555    if (element.hasLastPerformedElement())
15556      composeDateTime(t, "VerificationResult", "lastPerformed", element.getLastPerformedElement(), -1);
15557    if (element.hasNextScheduledElement())
15558      composeDate(t, "VerificationResult", "nextScheduled", element.getNextScheduledElement(), -1);
15559    if (element.hasFailureActionElement())
15560      composeEnum(t, "VerificationResult", "failureAction", element.getFailureActionElement(), -1);
15561    for (int i = 0; i < element.getPrimarySource().size(); i++)
15562      composeVerificationResultVerificationResultPrimarySourceComponent(t, "VerificationResult", "primarySource", element.getPrimarySource().get(i), i);
15563    if (element.hasAttestation())
15564      composeVerificationResultVerificationResultAttestationComponent(t, "VerificationResult", "attestation", element.getAttestation(), -1);
15565    for (int i = 0; i < element.getValidator().size(); i++)
15566      composeVerificationResultVerificationResultValidatorComponent(t, "VerificationResult", "validator", element.getValidator().get(i), i);
15567  }
15568
15569  protected void composeVerificationResultVerificationResultPrimarySourceComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultPrimarySourceComponent element, int index) {
15570    if (element == null) 
15571      return;
15572    Complex t;
15573    if (Utilities.noString(parentType))
15574      t = parent;
15575    else {
15576      t = parent.predicate("fhir:"+parentType+'.'+name);
15577    }
15578    composeBackboneElement(t, "primarySource", name, element, index);
15579    if (element.hasIdentifier())
15580      composeIdentifier(t, "VerificationResult", "identifier", element.getIdentifier(), -1);
15581    if (element.hasOrganization())
15582      composeReference(t, "VerificationResult", "organization", element.getOrganization(), -1);
15583    for (int i = 0; i < element.getType().size(); i++)
15584      composeCodeableConcept(t, "VerificationResult", "type", element.getType().get(i), i);
15585    for (int i = 0; i < element.getValidationProcess().size(); i++)
15586      composeCodeableConcept(t, "VerificationResult", "validationProcess", element.getValidationProcess().get(i), i);
15587    if (element.hasValidationStatusElement())
15588      composeEnum(t, "VerificationResult", "validationStatus", element.getValidationStatusElement(), -1);
15589    if (element.hasValidationDateElement())
15590      composeDateTime(t, "VerificationResult", "validationDate", element.getValidationDateElement(), -1);
15591    if (element.hasCanPushUpdatesElement())
15592      composeEnum(t, "VerificationResult", "canPushUpdates", element.getCanPushUpdatesElement(), -1);
15593    for (int i = 0; i < element.getPushTypeAvailable().size(); i++)
15594      composeEnum(t, "VerificationResult", "pushTypeAvailable", element.getPushTypeAvailable().get(i), i);
15595  }
15596
15597  protected void composeVerificationResultVerificationResultAttestationComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultAttestationComponent element, int index) {
15598    if (element == null) 
15599      return;
15600    Complex t;
15601    if (Utilities.noString(parentType))
15602      t = parent;
15603    else {
15604      t = parent.predicate("fhir:"+parentType+'.'+name);
15605    }
15606    composeBackboneElement(t, "attestation", name, element, index);
15607    if (element.hasSource())
15608      composeReference(t, "VerificationResult", "source", element.getSource(), -1);
15609    if (element.hasOrganization())
15610      composeReference(t, "VerificationResult", "organization", element.getOrganization(), -1);
15611    if (element.hasMethod())
15612      composeCodeableConcept(t, "VerificationResult", "method", element.getMethod(), -1);
15613    if (element.hasDateElement())
15614      composeDate(t, "VerificationResult", "date", element.getDateElement(), -1);
15615    if (element.hasSourceIdentityCertificateElement())
15616      composeString(t, "VerificationResult", "sourceIdentityCertificate", element.getSourceIdentityCertificateElement(), -1);
15617    if (element.hasProxyIdentityCertificateElement())
15618      composeString(t, "VerificationResult", "proxyIdentityCertificate", element.getProxyIdentityCertificateElement(), -1);
15619  }
15620
15621  protected void composeVerificationResultVerificationResultValidatorComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultValidatorComponent element, int index) {
15622    if (element == null) 
15623      return;
15624    Complex t;
15625    if (Utilities.noString(parentType))
15626      t = parent;
15627    else {
15628      t = parent.predicate("fhir:"+parentType+'.'+name);
15629    }
15630    composeBackboneElement(t, "validator", name, element, index);
15631    if (element.hasIdentifier())
15632      composeIdentifier(t, "VerificationResult", "identifier", element.getIdentifier(), -1);
15633    if (element.hasOrganization())
15634      composeReference(t, "VerificationResult", "organization", element.getOrganization(), -1);
15635    if (element.hasIdentityCertificateElement())
15636      composeString(t, "VerificationResult", "identityCertificate", element.getIdentityCertificateElement(), -1);
15637    if (element.hasDateValidatedElement())
15638      composeDate(t, "VerificationResult", "dateValidated", element.getDateValidatedElement(), -1);
15639  }
15640
15641  protected void composeVisionPrescription(Complex parent, String parentType, String name, VisionPrescription element, int index) {
15642    if (element == null) 
15643      return;
15644    Complex t;
15645    if (Utilities.noString(parentType))
15646      t = parent;
15647    else {
15648      t = parent.predicate("fhir:"+parentType+'.'+name);
15649    }
15650    composeDomainResource(t, "VisionPrescription", name, element, index);
15651    for (int i = 0; i < element.getIdentifier().size(); i++)
15652      composeIdentifier(t, "VisionPrescription", "identifier", element.getIdentifier().get(i), i);
15653    if (element.hasStatusElement())
15654      composeEnum(t, "VisionPrescription", "status", element.getStatusElement(), -1);
15655    if (element.hasPatient())
15656      composeReference(t, "VisionPrescription", "patient", element.getPatient(), -1);
15657    if (element.hasEncounter())
15658      composeReference(t, "VisionPrescription", "encounter", element.getEncounter(), -1);
15659    if (element.hasDateWrittenElement())
15660      composeDateTime(t, "VisionPrescription", "dateWritten", element.getDateWrittenElement(), -1);
15661    if (element.hasPrescriber())
15662      composeReference(t, "VisionPrescription", "prescriber", element.getPrescriber(), -1);
15663    if (element.hasReason())
15664      composeType(t, "VisionPrescription", "reason", element.getReason(), -1);
15665    for (int i = 0; i < element.getDispense().size(); i++)
15666      composeVisionPrescriptionVisionPrescriptionDispenseComponent(t, "VisionPrescription", "dispense", element.getDispense().get(i), i);
15667  }
15668
15669  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(Complex parent, String parentType, String name, VisionPrescription.VisionPrescriptionDispenseComponent element, int index) {
15670    if (element == null) 
15671      return;
15672    Complex t;
15673    if (Utilities.noString(parentType))
15674      t = parent;
15675    else {
15676      t = parent.predicate("fhir:"+parentType+'.'+name);
15677    }
15678    composeBackboneElement(t, "dispense", name, element, index);
15679    if (element.hasProduct())
15680      composeCodeableConcept(t, "VisionPrescription", "product", element.getProduct(), -1);
15681    if (element.hasEyeElement())
15682      composeEnum(t, "VisionPrescription", "eye", element.getEyeElement(), -1);
15683    if (element.hasSphereElement())
15684      composeDecimal(t, "VisionPrescription", "sphere", element.getSphereElement(), -1);
15685    if (element.hasCylinderElement())
15686      composeDecimal(t, "VisionPrescription", "cylinder", element.getCylinderElement(), -1);
15687    if (element.hasAxisElement())
15688      composeInteger(t, "VisionPrescription", "axis", element.getAxisElement(), -1);
15689    for (int i = 0; i < element.getPrism().size(); i++)
15690      composeVisionPrescriptionPrismComponent(t, "VisionPrescription", "prism", element.getPrism().get(i), i);
15691    if (element.hasAddElement())
15692      composeDecimal(t, "VisionPrescription", "add", element.getAddElement(), -1);
15693    if (element.hasPowerElement())
15694      composeDecimal(t, "VisionPrescription", "power", element.getPowerElement(), -1);
15695    if (element.hasBackCurveElement())
15696      composeDecimal(t, "VisionPrescription", "backCurve", element.getBackCurveElement(), -1);
15697    if (element.hasDiameterElement())
15698      composeDecimal(t, "VisionPrescription", "diameter", element.getDiameterElement(), -1);
15699    if (element.hasDuration())
15700      composeQuantity(t, "VisionPrescription", "duration", element.getDuration(), -1);
15701    if (element.hasColorElement())
15702      composeString(t, "VisionPrescription", "color", element.getColorElement(), -1);
15703    if (element.hasBrandElement())
15704      composeString(t, "VisionPrescription", "brand", element.getBrandElement(), -1);
15705    for (int i = 0; i < element.getNote().size(); i++)
15706      composeAnnotation(t, "VisionPrescription", "note", element.getNote().get(i), i);
15707  }
15708
15709  protected void composeVisionPrescriptionPrismComponent(Complex parent, String parentType, String name, VisionPrescription.PrismComponent element, int index) {
15710    if (element == null) 
15711      return;
15712    Complex t;
15713    if (Utilities.noString(parentType))
15714      t = parent;
15715    else {
15716      t = parent.predicate("fhir:"+parentType+'.'+name);
15717    }
15718    composeBackboneElement(t, "prism", name, element, index);
15719    if (element.hasAmountElement())
15720      composeDecimal(t, "VisionPrescription", "amount", element.getAmountElement(), -1);
15721    if (element.hasBaseElement())
15722      composeEnum(t, "VisionPrescription", "base", element.getBaseElement(), -1);
15723  }
15724
15725  @Override
15726  protected void composeResource(Complex parent, Resource resource) {
15727    if (resource instanceof Parameters)
15728      composeParameters(parent, null, "Parameters", (Parameters)resource, -1);
15729    else if (resource instanceof Account)
15730      composeAccount(parent, null, "Account", (Account)resource, -1);
15731    else if (resource instanceof ActivityDefinition)
15732      composeActivityDefinition(parent, null, "ActivityDefinition", (ActivityDefinition)resource, -1);
15733    else if (resource instanceof AdverseEvent)
15734      composeAdverseEvent(parent, null, "AdverseEvent", (AdverseEvent)resource, -1);
15735    else if (resource instanceof AllergyIntolerance)
15736      composeAllergyIntolerance(parent, null, "AllergyIntolerance", (AllergyIntolerance)resource, -1);
15737    else if (resource instanceof Appointment)
15738      composeAppointment(parent, null, "Appointment", (Appointment)resource, -1);
15739    else if (resource instanceof AppointmentResponse)
15740      composeAppointmentResponse(parent, null, "AppointmentResponse", (AppointmentResponse)resource, -1);
15741    else if (resource instanceof AuditEvent)
15742      composeAuditEvent(parent, null, "AuditEvent", (AuditEvent)resource, -1);
15743    else if (resource instanceof Basic)
15744      composeBasic(parent, null, "Basic", (Basic)resource, -1);
15745    else if (resource instanceof Binary)
15746      composeBinary(parent, null, "Binary", (Binary)resource, -1);
15747    else if (resource instanceof BiologicallyDerivedProduct)
15748      composeBiologicallyDerivedProduct(parent, null, "BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource, -1);
15749    else if (resource instanceof BodyStructure)
15750      composeBodyStructure(parent, null, "BodyStructure", (BodyStructure)resource, -1);
15751    else if (resource instanceof Bundle)
15752      composeBundle(parent, null, "Bundle", (Bundle)resource, -1);
15753    else if (resource instanceof CapabilityStatement)
15754      composeCapabilityStatement(parent, null, "CapabilityStatement", (CapabilityStatement)resource, -1);
15755    else if (resource instanceof CarePlan)
15756      composeCarePlan(parent, null, "CarePlan", (CarePlan)resource, -1);
15757    else if (resource instanceof CareTeam)
15758      composeCareTeam(parent, null, "CareTeam", (CareTeam)resource, -1);
15759    else if (resource instanceof ChargeItem)
15760      composeChargeItem(parent, null, "ChargeItem", (ChargeItem)resource, -1);
15761    else if (resource instanceof Claim)
15762      composeClaim(parent, null, "Claim", (Claim)resource, -1);
15763    else if (resource instanceof ClaimResponse)
15764      composeClaimResponse(parent, null, "ClaimResponse", (ClaimResponse)resource, -1);
15765    else if (resource instanceof ClinicalImpression)
15766      composeClinicalImpression(parent, null, "ClinicalImpression", (ClinicalImpression)resource, -1);
15767    else if (resource instanceof CodeSystem)
15768      composeCodeSystem(parent, null, "CodeSystem", (CodeSystem)resource, -1);
15769    else if (resource instanceof Communication)
15770      composeCommunication(parent, null, "Communication", (Communication)resource, -1);
15771    else if (resource instanceof CommunicationRequest)
15772      composeCommunicationRequest(parent, null, "CommunicationRequest", (CommunicationRequest)resource, -1);
15773    else if (resource instanceof CompartmentDefinition)
15774      composeCompartmentDefinition(parent, null, "CompartmentDefinition", (CompartmentDefinition)resource, -1);
15775    else if (resource instanceof Composition)
15776      composeComposition(parent, null, "Composition", (Composition)resource, -1);
15777    else if (resource instanceof ConceptMap)
15778      composeConceptMap(parent, null, "ConceptMap", (ConceptMap)resource, -1);
15779    else if (resource instanceof Condition)
15780      composeCondition(parent, null, "Condition", (Condition)resource, -1);
15781    else if (resource instanceof Consent)
15782      composeConsent(parent, null, "Consent", (Consent)resource, -1);
15783    else if (resource instanceof Contract)
15784      composeContract(parent, null, "Contract", (Contract)resource, -1);
15785    else if (resource instanceof Coverage)
15786      composeCoverage(parent, null, "Coverage", (Coverage)resource, -1);
15787    else if (resource instanceof DetectedIssue)
15788      composeDetectedIssue(parent, null, "DetectedIssue", (DetectedIssue)resource, -1);
15789    else if (resource instanceof Device)
15790      composeDevice(parent, null, "Device", (Device)resource, -1);
15791    else if (resource instanceof DeviceComponent)
15792      composeDeviceComponent(parent, null, "DeviceComponent", (DeviceComponent)resource, -1);
15793    else if (resource instanceof DeviceMetric)
15794      composeDeviceMetric(parent, null, "DeviceMetric", (DeviceMetric)resource, -1);
15795    else if (resource instanceof DeviceRequest)
15796      composeDeviceRequest(parent, null, "DeviceRequest", (DeviceRequest)resource, -1);
15797    else if (resource instanceof DeviceUseStatement)
15798      composeDeviceUseStatement(parent, null, "DeviceUseStatement", (DeviceUseStatement)resource, -1);
15799    else if (resource instanceof DiagnosticReport)
15800      composeDiagnosticReport(parent, null, "DiagnosticReport", (DiagnosticReport)resource, -1);
15801    else if (resource instanceof DocumentManifest)
15802      composeDocumentManifest(parent, null, "DocumentManifest", (DocumentManifest)resource, -1);
15803    else if (resource instanceof DocumentReference)
15804      composeDocumentReference(parent, null, "DocumentReference", (DocumentReference)resource, -1);
15805    else if (resource instanceof EligibilityRequest)
15806      composeEligibilityRequest(parent, null, "EligibilityRequest", (EligibilityRequest)resource, -1);
15807    else if (resource instanceof EligibilityResponse)
15808      composeEligibilityResponse(parent, null, "EligibilityResponse", (EligibilityResponse)resource, -1);
15809    else if (resource instanceof Encounter)
15810      composeEncounter(parent, null, "Encounter", (Encounter)resource, -1);
15811    else if (resource instanceof Endpoint)
15812      composeEndpoint(parent, null, "Endpoint", (Endpoint)resource, -1);
15813    else if (resource instanceof EnrollmentRequest)
15814      composeEnrollmentRequest(parent, null, "EnrollmentRequest", (EnrollmentRequest)resource, -1);
15815    else if (resource instanceof EnrollmentResponse)
15816      composeEnrollmentResponse(parent, null, "EnrollmentResponse", (EnrollmentResponse)resource, -1);
15817    else if (resource instanceof EntryDefinition)
15818      composeEntryDefinition(parent, null, "EntryDefinition", (EntryDefinition)resource, -1);
15819    else if (resource instanceof EpisodeOfCare)
15820      composeEpisodeOfCare(parent, null, "EpisodeOfCare", (EpisodeOfCare)resource, -1);
15821    else if (resource instanceof EventDefinition)
15822      composeEventDefinition(parent, null, "EventDefinition", (EventDefinition)resource, -1);
15823    else if (resource instanceof ExampleScenario)
15824      composeExampleScenario(parent, null, "ExampleScenario", (ExampleScenario)resource, -1);
15825    else if (resource instanceof ExpansionProfile)
15826      composeExpansionProfile(parent, null, "ExpansionProfile", (ExpansionProfile)resource, -1);
15827    else if (resource instanceof ExplanationOfBenefit)
15828      composeExplanationOfBenefit(parent, null, "ExplanationOfBenefit", (ExplanationOfBenefit)resource, -1);
15829    else if (resource instanceof FamilyMemberHistory)
15830      composeFamilyMemberHistory(parent, null, "FamilyMemberHistory", (FamilyMemberHistory)resource, -1);
15831    else if (resource instanceof Flag)
15832      composeFlag(parent, null, "Flag", (Flag)resource, -1);
15833    else if (resource instanceof Goal)
15834      composeGoal(parent, null, "Goal", (Goal)resource, -1);
15835    else if (resource instanceof GraphDefinition)
15836      composeGraphDefinition(parent, null, "GraphDefinition", (GraphDefinition)resource, -1);
15837    else if (resource instanceof Group)
15838      composeGroup(parent, null, "Group", (Group)resource, -1);
15839    else if (resource instanceof GuidanceResponse)
15840      composeGuidanceResponse(parent, null, "GuidanceResponse", (GuidanceResponse)resource, -1);
15841    else if (resource instanceof HealthcareService)
15842      composeHealthcareService(parent, null, "HealthcareService", (HealthcareService)resource, -1);
15843    else if (resource instanceof ImagingStudy)
15844      composeImagingStudy(parent, null, "ImagingStudy", (ImagingStudy)resource, -1);
15845    else if (resource instanceof Immunization)
15846      composeImmunization(parent, null, "Immunization", (Immunization)resource, -1);
15847    else if (resource instanceof ImmunizationEvaluation)
15848      composeImmunizationEvaluation(parent, null, "ImmunizationEvaluation", (ImmunizationEvaluation)resource, -1);
15849    else if (resource instanceof ImmunizationRecommendation)
15850      composeImmunizationRecommendation(parent, null, "ImmunizationRecommendation", (ImmunizationRecommendation)resource, -1);
15851    else if (resource instanceof ImplementationGuide)
15852      composeImplementationGuide(parent, null, "ImplementationGuide", (ImplementationGuide)resource, -1);
15853    else if (resource instanceof Invoice)
15854      composeInvoice(parent, null, "Invoice", (Invoice)resource, -1);
15855    else if (resource instanceof ItemInstance)
15856      composeItemInstance(parent, null, "ItemInstance", (ItemInstance)resource, -1);
15857    else if (resource instanceof Library)
15858      composeLibrary(parent, null, "Library", (Library)resource, -1);
15859    else if (resource instanceof Linkage)
15860      composeLinkage(parent, null, "Linkage", (Linkage)resource, -1);
15861    else if (resource instanceof ListResource)
15862      composeListResource(parent, null, "ListResource", (ListResource)resource, -1);
15863    else if (resource instanceof Location)
15864      composeLocation(parent, null, "Location", (Location)resource, -1);
15865    else if (resource instanceof Measure)
15866      composeMeasure(parent, null, "Measure", (Measure)resource, -1);
15867    else if (resource instanceof MeasureReport)
15868      composeMeasureReport(parent, null, "MeasureReport", (MeasureReport)resource, -1);
15869    else if (resource instanceof Media)
15870      composeMedia(parent, null, "Media", (Media)resource, -1);
15871    else if (resource instanceof Medication)
15872      composeMedication(parent, null, "Medication", (Medication)resource, -1);
15873    else if (resource instanceof MedicationAdministration)
15874      composeMedicationAdministration(parent, null, "MedicationAdministration", (MedicationAdministration)resource, -1);
15875    else if (resource instanceof MedicationDispense)
15876      composeMedicationDispense(parent, null, "MedicationDispense", (MedicationDispense)resource, -1);
15877    else if (resource instanceof MedicationRequest)
15878      composeMedicationRequest(parent, null, "MedicationRequest", (MedicationRequest)resource, -1);
15879    else if (resource instanceof MedicationStatement)
15880      composeMedicationStatement(parent, null, "MedicationStatement", (MedicationStatement)resource, -1);
15881    else if (resource instanceof MedicinalProduct)
15882      composeMedicinalProduct(parent, null, "MedicinalProduct", (MedicinalProduct)resource, -1);
15883    else if (resource instanceof MedicinalProductAuthorization)
15884      composeMedicinalProductAuthorization(parent, null, "MedicinalProductAuthorization", (MedicinalProductAuthorization)resource, -1);
15885    else if (resource instanceof MedicinalProductClinicals)
15886      composeMedicinalProductClinicals(parent, null, "MedicinalProductClinicals", (MedicinalProductClinicals)resource, -1);
15887    else if (resource instanceof MedicinalProductDeviceSpec)
15888      composeMedicinalProductDeviceSpec(parent, null, "MedicinalProductDeviceSpec", (MedicinalProductDeviceSpec)resource, -1);
15889    else if (resource instanceof MedicinalProductIngredient)
15890      composeMedicinalProductIngredient(parent, null, "MedicinalProductIngredient", (MedicinalProductIngredient)resource, -1);
15891    else if (resource instanceof MedicinalProductPackaged)
15892      composeMedicinalProductPackaged(parent, null, "MedicinalProductPackaged", (MedicinalProductPackaged)resource, -1);
15893    else if (resource instanceof MedicinalProductPharmaceutical)
15894      composeMedicinalProductPharmaceutical(parent, null, "MedicinalProductPharmaceutical", (MedicinalProductPharmaceutical)resource, -1);
15895    else if (resource instanceof MessageDefinition)
15896      composeMessageDefinition(parent, null, "MessageDefinition", (MessageDefinition)resource, -1);
15897    else if (resource instanceof MessageHeader)
15898      composeMessageHeader(parent, null, "MessageHeader", (MessageHeader)resource, -1);
15899    else if (resource instanceof NamingSystem)
15900      composeNamingSystem(parent, null, "NamingSystem", (NamingSystem)resource, -1);
15901    else if (resource instanceof NutritionOrder)
15902      composeNutritionOrder(parent, null, "NutritionOrder", (NutritionOrder)resource, -1);
15903    else if (resource instanceof Observation)
15904      composeObservation(parent, null, "Observation", (Observation)resource, -1);
15905    else if (resource instanceof ObservationDefinition)
15906      composeObservationDefinition(parent, null, "ObservationDefinition", (ObservationDefinition)resource, -1);
15907    else if (resource instanceof OccupationalData)
15908      composeOccupationalData(parent, null, "OccupationalData", (OccupationalData)resource, -1);
15909    else if (resource instanceof OperationDefinition)
15910      composeOperationDefinition(parent, null, "OperationDefinition", (OperationDefinition)resource, -1);
15911    else if (resource instanceof OperationOutcome)
15912      composeOperationOutcome(parent, null, "OperationOutcome", (OperationOutcome)resource, -1);
15913    else if (resource instanceof Organization)
15914      composeOrganization(parent, null, "Organization", (Organization)resource, -1);
15915    else if (resource instanceof OrganizationRole)
15916      composeOrganizationRole(parent, null, "OrganizationRole", (OrganizationRole)resource, -1);
15917    else if (resource instanceof Patient)
15918      composePatient(parent, null, "Patient", (Patient)resource, -1);
15919    else if (resource instanceof PaymentNotice)
15920      composePaymentNotice(parent, null, "PaymentNotice", (PaymentNotice)resource, -1);
15921    else if (resource instanceof PaymentReconciliation)
15922      composePaymentReconciliation(parent, null, "PaymentReconciliation", (PaymentReconciliation)resource, -1);
15923    else if (resource instanceof Person)
15924      composePerson(parent, null, "Person", (Person)resource, -1);
15925    else if (resource instanceof PlanDefinition)
15926      composePlanDefinition(parent, null, "PlanDefinition", (PlanDefinition)resource, -1);
15927    else if (resource instanceof Practitioner)
15928      composePractitioner(parent, null, "Practitioner", (Practitioner)resource, -1);
15929    else if (resource instanceof PractitionerRole)
15930      composePractitionerRole(parent, null, "PractitionerRole", (PractitionerRole)resource, -1);
15931    else if (resource instanceof Procedure)
15932      composeProcedure(parent, null, "Procedure", (Procedure)resource, -1);
15933    else if (resource instanceof ProcessRequest)
15934      composeProcessRequest(parent, null, "ProcessRequest", (ProcessRequest)resource, -1);
15935    else if (resource instanceof ProcessResponse)
15936      composeProcessResponse(parent, null, "ProcessResponse", (ProcessResponse)resource, -1);
15937    else if (resource instanceof Provenance)
15938      composeProvenance(parent, null, "Provenance", (Provenance)resource, -1);
15939    else if (resource instanceof Questionnaire)
15940      composeQuestionnaire(parent, null, "Questionnaire", (Questionnaire)resource, -1);
15941    else if (resource instanceof QuestionnaireResponse)
15942      composeQuestionnaireResponse(parent, null, "QuestionnaireResponse", (QuestionnaireResponse)resource, -1);
15943    else if (resource instanceof RelatedPerson)
15944      composeRelatedPerson(parent, null, "RelatedPerson", (RelatedPerson)resource, -1);
15945    else if (resource instanceof RequestGroup)
15946      composeRequestGroup(parent, null, "RequestGroup", (RequestGroup)resource, -1);
15947    else if (resource instanceof ResearchStudy)
15948      composeResearchStudy(parent, null, "ResearchStudy", (ResearchStudy)resource, -1);
15949    else if (resource instanceof ResearchSubject)
15950      composeResearchSubject(parent, null, "ResearchSubject", (ResearchSubject)resource, -1);
15951    else if (resource instanceof RiskAssessment)
15952      composeRiskAssessment(parent, null, "RiskAssessment", (RiskAssessment)resource, -1);
15953    else if (resource instanceof Schedule)
15954      composeSchedule(parent, null, "Schedule", (Schedule)resource, -1);
15955    else if (resource instanceof SearchParameter)
15956      composeSearchParameter(parent, null, "SearchParameter", (SearchParameter)resource, -1);
15957    else if (resource instanceof Sequence)
15958      composeSequence(parent, null, "Sequence", (Sequence)resource, -1);
15959    else if (resource instanceof ServiceRequest)
15960      composeServiceRequest(parent, null, "ServiceRequest", (ServiceRequest)resource, -1);
15961    else if (resource instanceof Slot)
15962      composeSlot(parent, null, "Slot", (Slot)resource, -1);
15963    else if (resource instanceof Specimen)
15964      composeSpecimen(parent, null, "Specimen", (Specimen)resource, -1);
15965    else if (resource instanceof SpecimenDefinition)
15966      composeSpecimenDefinition(parent, null, "SpecimenDefinition", (SpecimenDefinition)resource, -1);
15967    else if (resource instanceof StructureDefinition)
15968      composeStructureDefinition(parent, null, "StructureDefinition", (StructureDefinition)resource, -1);
15969    else if (resource instanceof StructureMap)
15970      composeStructureMap(parent, null, "StructureMap", (StructureMap)resource, -1);
15971    else if (resource instanceof Subscription)
15972      composeSubscription(parent, null, "Subscription", (Subscription)resource, -1);
15973    else if (resource instanceof Substance)
15974      composeSubstance(parent, null, "Substance", (Substance)resource, -1);
15975    else if (resource instanceof SubstancePolymer)
15976      composeSubstancePolymer(parent, null, "SubstancePolymer", (SubstancePolymer)resource, -1);
15977    else if (resource instanceof SubstanceReferenceInformation)
15978      composeSubstanceReferenceInformation(parent, null, "SubstanceReferenceInformation", (SubstanceReferenceInformation)resource, -1);
15979    else if (resource instanceof SubstanceSpecification)
15980      composeSubstanceSpecification(parent, null, "SubstanceSpecification", (SubstanceSpecification)resource, -1);
15981    else if (resource instanceof SupplyDelivery)
15982      composeSupplyDelivery(parent, null, "SupplyDelivery", (SupplyDelivery)resource, -1);
15983    else if (resource instanceof SupplyRequest)
15984      composeSupplyRequest(parent, null, "SupplyRequest", (SupplyRequest)resource, -1);
15985    else if (resource instanceof Task)
15986      composeTask(parent, null, "Task", (Task)resource, -1);
15987    else if (resource instanceof TerminologyCapabilities)
15988      composeTerminologyCapabilities(parent, null, "TerminologyCapabilities", (TerminologyCapabilities)resource, -1);
15989    else if (resource instanceof TestReport)
15990      composeTestReport(parent, null, "TestReport", (TestReport)resource, -1);
15991    else if (resource instanceof TestScript)
15992      composeTestScript(parent, null, "TestScript", (TestScript)resource, -1);
15993    else if (resource instanceof UserSession)
15994      composeUserSession(parent, null, "UserSession", (UserSession)resource, -1);
15995    else if (resource instanceof ValueSet)
15996      composeValueSet(parent, null, "ValueSet", (ValueSet)resource, -1);
15997    else if (resource instanceof VerificationResult)
15998      composeVerificationResult(parent, null, "VerificationResult", (VerificationResult)resource, -1);
15999    else if (resource instanceof VisionPrescription)
16000      composeVisionPrescription(parent, null, "VisionPrescription", (VisionPrescription)resource, -1);
16001    else
16002      throw new Error("Unhandled resource type "+resource.getClass().getName());
16003  }
16004
16005  protected void composeType(Complex parent, String parentType, String name, Type value, int index) {
16006    if (value == null)
16007      return;
16008    else if (value instanceof DateType)
16009      composeDate(parent, parentType, name, (DateType)value, index);
16010    else if (value instanceof DateTimeType)
16011      composeDateTime(parent, parentType, name, (DateTimeType)value, index);
16012    else if (value instanceof CodeType)
16013      composeCode(parent, parentType, name, (CodeType)value, index);
16014    else if (value instanceof StringType)
16015      composeString(parent, parentType, name, (StringType)value, index);
16016    else if (value instanceof IntegerType)
16017      composeInteger(parent, parentType, name, (IntegerType)value, index);
16018    else if (value instanceof OidType)
16019      composeOid(parent, parentType, name, (OidType)value, index);
16020    else if (value instanceof CanonicalType)
16021      composeCanonical(parent, parentType, name, (CanonicalType)value, index);
16022    else if (value instanceof UriType)
16023      composeUri(parent, parentType, name, (UriType)value, index);
16024    else if (value instanceof UuidType)
16025      composeUuid(parent, parentType, name, (UuidType)value, index);
16026    else if (value instanceof UrlType)
16027      composeUrl(parent, parentType, name, (UrlType)value, index);
16028    else if (value instanceof InstantType)
16029      composeInstant(parent, parentType, name, (InstantType)value, index);
16030    else if (value instanceof BooleanType)
16031      composeBoolean(parent, parentType, name, (BooleanType)value, index);
16032    else if (value instanceof Base64BinaryType)
16033      composeBase64Binary(parent, parentType, name, (Base64BinaryType)value, index);
16034    else if (value instanceof UnsignedIntType)
16035      composeUnsignedInt(parent, parentType, name, (UnsignedIntType)value, index);
16036    else if (value instanceof MarkdownType)
16037      composeMarkdown(parent, parentType, name, (MarkdownType)value, index);
16038    else if (value instanceof TimeType)
16039      composeTime(parent, parentType, name, (TimeType)value, index);
16040    else if (value instanceof IdType)
16041      composeId(parent, parentType, name, (IdType)value, index);
16042    else if (value instanceof PositiveIntType)
16043      composePositiveInt(parent, parentType, name, (PositiveIntType)value, index);
16044    else if (value instanceof DecimalType)
16045      composeDecimal(parent, parentType, name, (DecimalType)value, index);
16046    else if (value instanceof Extension)
16047      composeExtension(parent, parentType, name, (Extension)value, index);
16048    else if (value instanceof Narrative)
16049      composeNarrative(parent, parentType, name, (Narrative)value, index);
16050    else if (value instanceof Meta)
16051      composeMeta(parent, parentType, name, (Meta)value, index);
16052    else if (value instanceof Address)
16053      composeAddress(parent, parentType, name, (Address)value, index);
16054    else if (value instanceof Contributor)
16055      composeContributor(parent, parentType, name, (Contributor)value, index);
16056    else if (value instanceof Attachment)
16057      composeAttachment(parent, parentType, name, (Attachment)value, index);
16058    else if (value instanceof Count)
16059      composeCount(parent, parentType, name, (Count)value, index);
16060    else if (value instanceof DataRequirement)
16061      composeDataRequirement(parent, parentType, name, (DataRequirement)value, index);
16062    else if (value instanceof Dosage)
16063      composeDosage(parent, parentType, name, (Dosage)value, index);
16064    else if (value instanceof Money)
16065      composeMoney(parent, parentType, name, (Money)value, index);
16066    else if (value instanceof HumanName)
16067      composeHumanName(parent, parentType, name, (HumanName)value, index);
16068    else if (value instanceof ContactPoint)
16069      composeContactPoint(parent, parentType, name, (ContactPoint)value, index);
16070    else if (value instanceof Identifier)
16071      composeIdentifier(parent, parentType, name, (Identifier)value, index);
16072    else if (value instanceof Coding)
16073      composeCoding(parent, parentType, name, (Coding)value, index);
16074    else if (value instanceof SampledData)
16075      composeSampledData(parent, parentType, name, (SampledData)value, index);
16076    else if (value instanceof Ratio)
16077      composeRatio(parent, parentType, name, (Ratio)value, index);
16078    else if (value instanceof Distance)
16079      composeDistance(parent, parentType, name, (Distance)value, index);
16080    else if (value instanceof Age)
16081      composeAge(parent, parentType, name, (Age)value, index);
16082    else if (value instanceof Reference)
16083      composeReference(parent, parentType, name, (Reference)value, index);
16084    else if (value instanceof TriggerDefinition)
16085      composeTriggerDefinition(parent, parentType, name, (TriggerDefinition)value, index);
16086    else if (value instanceof Quantity)
16087      composeQuantity(parent, parentType, name, (Quantity)value, index);
16088    else if (value instanceof Period)
16089      composePeriod(parent, parentType, name, (Period)value, index);
16090    else if (value instanceof Duration)
16091      composeDuration(parent, parentType, name, (Duration)value, index);
16092    else if (value instanceof Range)
16093      composeRange(parent, parentType, name, (Range)value, index);
16094    else if (value instanceof RelatedArtifact)
16095      composeRelatedArtifact(parent, parentType, name, (RelatedArtifact)value, index);
16096    else if (value instanceof Annotation)
16097      composeAnnotation(parent, parentType, name, (Annotation)value, index);
16098    else if (value instanceof ContactDetail)
16099      composeContactDetail(parent, parentType, name, (ContactDetail)value, index);
16100    else if (value instanceof UsageContext)
16101      composeUsageContext(parent, parentType, name, (UsageContext)value, index);
16102    else if (value instanceof Signature)
16103      composeSignature(parent, parentType, name, (Signature)value, index);
16104    else if (value instanceof Timing)
16105      composeTiming(parent, parentType, name, (Timing)value, index);
16106    else if (value instanceof CodeableConcept)
16107      composeCodeableConcept(parent, parentType, name, (CodeableConcept)value, index);
16108    else if (value instanceof ParameterDefinition)
16109      composeParameterDefinition(parent, parentType, name, (ParameterDefinition)value, index);
16110    else
16111      throw new Error("Unhandled type");
16112  }
16113
16114}
16115