001package org.hl7.fhir.r4.formats;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Thu, Sep 13, 2018 09:04-0400 for FHIR v3.5.0
033
034import org.hl7.fhir.r4.model.DateType;
035import org.hl7.fhir.r4.model.DateTimeType;
036import org.hl7.fhir.r4.model.CodeType;
037import org.hl7.fhir.r4.model.StringType;
038import org.hl7.fhir.r4.model.IntegerType;
039import org.hl7.fhir.r4.model.OidType;
040import org.hl7.fhir.r4.model.CanonicalType;
041import org.hl7.fhir.r4.model.UriType;
042import org.hl7.fhir.r4.model.UuidType;
043import org.hl7.fhir.r4.model.UrlType;
044import org.hl7.fhir.r4.model.InstantType;
045import org.hl7.fhir.r4.model.BooleanType;
046import org.hl7.fhir.r4.model.Base64BinaryType;
047import org.hl7.fhir.r4.model.UnsignedIntType;
048import org.hl7.fhir.r4.model.MarkdownType;
049import org.hl7.fhir.r4.model.TimeType;
050import org.hl7.fhir.r4.model.IdType;
051import org.hl7.fhir.r4.model.PositiveIntType;
052import org.hl7.fhir.r4.model.DecimalType;
053import org.hl7.fhir.r4.model.*;
054import org.xmlpull.v1.*;
055import org.hl7.fhir.utilities.Utilities;
056import org.hl7.fhir.exceptions.FHIRFormatError;
057import org.hl7.fhir.exceptions.FHIRException;
058import 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.hasSearchParamElement())
440      composeString(t, "DataRequirement", "searchParam", element.getSearchParamElement(), -1);
441    if (element.hasValueSetElement())
442      composeCanonical(t, "DataRequirement", "valueSet", element.getValueSetElement(), -1);
443    for (int i = 0; i < element.getCode().size(); i++)
444      composeCoding(t, "DataRequirement", "code", element.getCode().get(i), i);
445  }
446
447  protected void composeDataRequirementDataRequirementDateFilterComponent(Complex parent, String parentType, String name, DataRequirement.DataRequirementDateFilterComponent element, int index) {
448    if (element == null) 
449      return;
450    Complex t;
451    if (Utilities.noString(parentType))
452      t = parent;
453    else {
454      t = parent.predicate("fhir:"+parentType+'.'+name);
455    }
456    composeElement(t, "dateFilter", name, element, index);
457    if (element.hasPathElement())
458      composeString(t, "DataRequirement", "path", element.getPathElement(), -1);
459    if (element.hasSearchParamElement())
460      composeString(t, "DataRequirement", "searchParam", element.getSearchParamElement(), -1);
461    if (element.hasValue())
462      composeType(t, "DataRequirement", "value", element.getValue(), -1);
463  }
464
465  protected void composeDataRequirementDataRequirementSortComponent(Complex parent, String parentType, String name, DataRequirement.DataRequirementSortComponent element, int index) {
466    if (element == null) 
467      return;
468    Complex t;
469    if (Utilities.noString(parentType))
470      t = parent;
471    else {
472      t = parent.predicate("fhir:"+parentType+'.'+name);
473    }
474    composeElement(t, "sort", name, element, index);
475    if (element.hasPathElement())
476      composeString(t, "DataRequirement", "path", element.getPathElement(), -1);
477    if (element.hasDirectionElement())
478      composeEnum(t, "DataRequirement", "direction", element.getDirectionElement(), -1);
479  }
480
481  protected void composeDosage(Complex parent, String parentType, String name, Dosage element, int index) {
482    if (element == null) 
483      return;
484    Complex t;
485    if (Utilities.noString(parentType))
486      t = parent;
487    else {
488      t = parent.predicate("fhir:"+parentType+'.'+name);
489    }
490    composeElement(t, "Dosage", name, element, index);
491    if (element.hasSequenceElement())
492      composeInteger(t, "Dosage", "sequence", element.getSequenceElement(), -1);
493    if (element.hasTextElement())
494      composeString(t, "Dosage", "text", element.getTextElement(), -1);
495    for (int i = 0; i < element.getAdditionalInstruction().size(); i++)
496      composeCodeableConcept(t, "Dosage", "additionalInstruction", element.getAdditionalInstruction().get(i), i);
497    if (element.hasPatientInstructionElement())
498      composeString(t, "Dosage", "patientInstruction", element.getPatientInstructionElement(), -1);
499    if (element.hasTiming())
500      composeTiming(t, "Dosage", "timing", element.getTiming(), -1);
501    if (element.hasAsNeeded())
502      composeType(t, "Dosage", "asNeeded", element.getAsNeeded(), -1);
503    if (element.hasSite())
504      composeCodeableConcept(t, "Dosage", "site", element.getSite(), -1);
505    if (element.hasRoute())
506      composeCodeableConcept(t, "Dosage", "route", element.getRoute(), -1);
507    if (element.hasMethod())
508      composeCodeableConcept(t, "Dosage", "method", element.getMethod(), -1);
509    for (int i = 0; i < element.getDoseAndRate().size(); i++)
510      composeDosageDosageDoseAndRateComponent(t, "Dosage", "doseAndRate", element.getDoseAndRate().get(i), i);
511    if (element.hasMaxDosePerPeriod())
512      composeRatio(t, "Dosage", "maxDosePerPeriod", element.getMaxDosePerPeriod(), -1);
513    if (element.hasMaxDosePerAdministration())
514      composeQuantity(t, "Dosage", "maxDosePerAdministration", element.getMaxDosePerAdministration(), -1);
515    if (element.hasMaxDosePerLifetime())
516      composeQuantity(t, "Dosage", "maxDosePerLifetime", element.getMaxDosePerLifetime(), -1);
517  }
518
519  protected void composeDosageDosageDoseAndRateComponent(Complex parent, String parentType, String name, Dosage.DosageDoseAndRateComponent element, int index) {
520    if (element == null) 
521      return;
522    Complex t;
523    if (Utilities.noString(parentType))
524      t = parent;
525    else {
526      t = parent.predicate("fhir:"+parentType+'.'+name);
527    }
528    composeElement(t, "doseAndRate", name, element, index);
529    if (element.hasType())
530      composeCodeableConcept(t, "Dosage", "type", element.getType(), -1);
531    if (element.hasDose())
532      composeType(t, "Dosage", "dose", element.getDose(), -1);
533    if (element.hasRate())
534      composeType(t, "Dosage", "rate", element.getRate(), -1);
535  }
536
537  protected void composeMoney(Complex parent, String parentType, String name, Money element, int index) {
538    if (element == null) 
539      return;
540    Complex t;
541    if (Utilities.noString(parentType))
542      t = parent;
543    else {
544      t = parent.predicate("fhir:"+parentType+'.'+name);
545    }
546    composeElement(t, "Money", name, element, index);
547    if (element.hasValueElement())
548      composeDecimal(t, "Money", "value", element.getValueElement(), -1);
549    if (element.hasCurrencyElement())
550      composeCode(t, "Money", "currency", element.getCurrencyElement(), -1);
551  }
552
553  protected void composeHumanName(Complex parent, String parentType, String name, HumanName element, int index) {
554    if (element == null) 
555      return;
556    Complex t;
557    if (Utilities.noString(parentType))
558      t = parent;
559    else {
560      t = parent.predicate("fhir:"+parentType+'.'+name);
561    }
562    composeElement(t, "HumanName", name, element, index);
563    if (element.hasUseElement())
564      composeEnum(t, "HumanName", "use", element.getUseElement(), -1);
565    if (element.hasTextElement())
566      composeString(t, "HumanName", "text", element.getTextElement(), -1);
567    if (element.hasFamilyElement())
568      composeString(t, "HumanName", "family", element.getFamilyElement(), -1);
569    for (int i = 0; i < element.getGiven().size(); i++)
570      composeString(t, "HumanName", "given", element.getGiven().get(i), i);
571    for (int i = 0; i < element.getPrefix().size(); i++)
572      composeString(t, "HumanName", "prefix", element.getPrefix().get(i), i);
573    for (int i = 0; i < element.getSuffix().size(); i++)
574      composeString(t, "HumanName", "suffix", element.getSuffix().get(i), i);
575    if (element.hasPeriod())
576      composePeriod(t, "HumanName", "period", element.getPeriod(), -1);
577  }
578
579  protected void composeContactPoint(Complex parent, String parentType, String name, ContactPoint element, int index) {
580    if (element == null) 
581      return;
582    Complex t;
583    if (Utilities.noString(parentType))
584      t = parent;
585    else {
586      t = parent.predicate("fhir:"+parentType+'.'+name);
587    }
588    composeElement(t, "ContactPoint", name, element, index);
589    if (element.hasSystemElement())
590      composeEnum(t, "ContactPoint", "system", element.getSystemElement(), -1);
591    if (element.hasValueElement())
592      composeString(t, "ContactPoint", "value", element.getValueElement(), -1);
593    if (element.hasUseElement())
594      composeEnum(t, "ContactPoint", "use", element.getUseElement(), -1);
595    if (element.hasRankElement())
596      composePositiveInt(t, "ContactPoint", "rank", element.getRankElement(), -1);
597    if (element.hasPeriod())
598      composePeriod(t, "ContactPoint", "period", element.getPeriod(), -1);
599  }
600
601  protected void composeIdentifier(Complex parent, String parentType, String name, Identifier element, int index) {
602    if (element == null) 
603      return;
604    Complex t;
605    if (Utilities.noString(parentType))
606      t = parent;
607    else {
608      t = parent.predicate("fhir:"+parentType+'.'+name);
609    }
610    composeElement(t, "Identifier", name, element, index);
611    if (element.hasUseElement())
612      composeEnum(t, "Identifier", "use", element.getUseElement(), -1);
613    if (element.hasType())
614      composeCodeableConcept(t, "Identifier", "type", element.getType(), -1);
615    if (element.hasSystemElement())
616      composeUri(t, "Identifier", "system", element.getSystemElement(), -1);
617    if (element.hasValueElement())
618      composeString(t, "Identifier", "value", element.getValueElement(), -1);
619    if (element.hasPeriod())
620      composePeriod(t, "Identifier", "period", element.getPeriod(), -1);
621    if (element.hasAssigner())
622      composeReference(t, "Identifier", "assigner", element.getAssigner(), -1);
623  }
624
625  protected void composeCoding(Complex parent, String parentType, String name, Coding element, int index) {
626    if (element == null) 
627      return;
628    Complex t;
629    if (Utilities.noString(parentType))
630      t = parent;
631    else {
632      t = parent.predicate("fhir:"+parentType+'.'+name);
633    }
634    composeElement(t, "Coding", name, element, index);
635    decorateCoding(t, element);
636    if (element.hasSystemElement())
637      composeUri(t, "Coding", "system", element.getSystemElement(), -1);
638    if (element.hasVersionElement())
639      composeString(t, "Coding", "version", element.getVersionElement(), -1);
640    if (element.hasCodeElement())
641      composeCode(t, "Coding", "code", element.getCodeElement(), -1);
642    if (element.hasDisplayElement())
643      composeString(t, "Coding", "display", element.getDisplayElement(), -1);
644    if (element.hasUserSelectedElement())
645      composeBoolean(t, "Coding", "userSelected", element.getUserSelectedElement(), -1);
646  }
647
648  protected void composeSampledData(Complex parent, String parentType, String name, SampledData element, int index) {
649    if (element == null) 
650      return;
651    Complex t;
652    if (Utilities.noString(parentType))
653      t = parent;
654    else {
655      t = parent.predicate("fhir:"+parentType+'.'+name);
656    }
657    composeElement(t, "SampledData", name, element, index);
658    if (element.hasOrigin())
659      composeQuantity(t, "SampledData", "origin", element.getOrigin(), -1);
660    if (element.hasPeriodElement())
661      composeDecimal(t, "SampledData", "period", element.getPeriodElement(), -1);
662    if (element.hasFactorElement())
663      composeDecimal(t, "SampledData", "factor", element.getFactorElement(), -1);
664    if (element.hasLowerLimitElement())
665      composeDecimal(t, "SampledData", "lowerLimit", element.getLowerLimitElement(), -1);
666    if (element.hasUpperLimitElement())
667      composeDecimal(t, "SampledData", "upperLimit", element.getUpperLimitElement(), -1);
668    if (element.hasDimensionsElement())
669      composePositiveInt(t, "SampledData", "dimensions", element.getDimensionsElement(), -1);
670    if (element.hasDataElement())
671      composeString(t, "SampledData", "data", element.getDataElement(), -1);
672  }
673
674  protected void composeRatio(Complex parent, String parentType, String name, Ratio element, int index) {
675    if (element == null) 
676      return;
677    Complex t;
678    if (Utilities.noString(parentType))
679      t = parent;
680    else {
681      t = parent.predicate("fhir:"+parentType+'.'+name);
682    }
683    composeElement(t, "Ratio", name, element, index);
684    if (element.hasNumerator())
685      composeQuantity(t, "Ratio", "numerator", element.getNumerator(), -1);
686    if (element.hasDenominator())
687      composeQuantity(t, "Ratio", "denominator", element.getDenominator(), -1);
688  }
689
690  protected void composeDistance(Complex parent, String parentType, String name, Distance element, int index) {
691    if (element == null) 
692      return;
693    Complex t;
694    if (Utilities.noString(parentType))
695      t = parent;
696    else {
697      t = parent.predicate("fhir:"+parentType+'.'+name);
698    }
699    composeElement(t, "Distance", name, element, index);
700  }
701
702  protected void composeAge(Complex parent, String parentType, String name, Age element, int index) {
703    if (element == null) 
704      return;
705    Complex t;
706    if (Utilities.noString(parentType))
707      t = parent;
708    else {
709      t = parent.predicate("fhir:"+parentType+'.'+name);
710    }
711    composeElement(t, "Age", name, element, index);
712  }
713
714  protected void composeReference(Complex parent, String parentType, String name, Reference element, int index) {
715    if (element == null) 
716      return;
717    Complex t;
718    if (Utilities.noString(parentType))
719      t = parent;
720    else {
721      t = parent.predicate("fhir:"+parentType+'.'+name);
722    }
723    composeElement(t, "Reference", name, element, index);
724    if (element.hasReferenceElement())
725      composeString(t, "Reference", "reference", element.getReferenceElement_(), -1);
726    if (element.hasTypeElement())
727      composeUri(t, "Reference", "type", element.getTypeElement(), -1);
728    if (element.hasIdentifier())
729      composeIdentifier(t, "Reference", "identifier", element.getIdentifier(), -1);
730    if (element.hasDisplayElement())
731      composeString(t, "Reference", "display", element.getDisplayElement(), -1);
732  }
733
734  protected void composeTriggerDefinition(Complex parent, String parentType, String name, TriggerDefinition element, int index) {
735    if (element == null) 
736      return;
737    Complex t;
738    if (Utilities.noString(parentType))
739      t = parent;
740    else {
741      t = parent.predicate("fhir:"+parentType+'.'+name);
742    }
743    composeElement(t, "TriggerDefinition", name, element, index);
744    if (element.hasTypeElement())
745      composeEnum(t, "TriggerDefinition", "type", element.getTypeElement(), -1);
746    if (element.hasNameElement())
747      composeString(t, "TriggerDefinition", "name", element.getNameElement(), -1);
748    if (element.hasTiming())
749      composeType(t, "TriggerDefinition", "timing", element.getTiming(), -1);
750    if (element.hasData())
751      composeDataRequirement(t, "TriggerDefinition", "data", element.getData(), -1);
752    if (element.hasCondition())
753      composeExpression(t, "TriggerDefinition", "condition", element.getCondition(), -1);
754  }
755
756  protected void composeQuantity(Complex parent, String parentType, String name, Quantity element, int index) {
757    if (element == null) 
758      return;
759    Complex t;
760    if (Utilities.noString(parentType))
761      t = parent;
762    else {
763      t = parent.predicate("fhir:"+parentType+'.'+name);
764    }
765    composeElement(t, "Quantity", name, element, index);
766    if (element.hasValueElement())
767      composeDecimal(t, "Quantity", "value", element.getValueElement(), -1);
768    if (element.hasComparatorElement())
769      composeEnum(t, "Quantity", "comparator", element.getComparatorElement(), -1);
770    if (element.hasUnitElement())
771      composeString(t, "Quantity", "unit", element.getUnitElement(), -1);
772    if (element.hasSystemElement())
773      composeUri(t, "Quantity", "system", element.getSystemElement(), -1);
774    if (element.hasCodeElement())
775      composeCode(t, "Quantity", "code", element.getCodeElement(), -1);
776  }
777
778  protected void composePeriod(Complex parent, String parentType, String name, Period element, int index) {
779    if (element == null) 
780      return;
781    Complex t;
782    if (Utilities.noString(parentType))
783      t = parent;
784    else {
785      t = parent.predicate("fhir:"+parentType+'.'+name);
786    }
787    composeElement(t, "Period", name, element, index);
788    if (element.hasStartElement())
789      composeDateTime(t, "Period", "start", element.getStartElement(), -1);
790    if (element.hasEndElement())
791      composeDateTime(t, "Period", "end", element.getEndElement(), -1);
792  }
793
794  protected void composeDuration(Complex parent, String parentType, String name, Duration element, int index) {
795    if (element == null) 
796      return;
797    Complex t;
798    if (Utilities.noString(parentType))
799      t = parent;
800    else {
801      t = parent.predicate("fhir:"+parentType+'.'+name);
802    }
803    composeElement(t, "Duration", name, element, index);
804  }
805
806  protected void composeRange(Complex parent, String parentType, String name, Range element, int index) {
807    if (element == null) 
808      return;
809    Complex t;
810    if (Utilities.noString(parentType))
811      t = parent;
812    else {
813      t = parent.predicate("fhir:"+parentType+'.'+name);
814    }
815    composeElement(t, "Range", name, element, index);
816    if (element.hasLow())
817      composeQuantity(t, "Range", "low", element.getLow(), -1);
818    if (element.hasHigh())
819      composeQuantity(t, "Range", "high", element.getHigh(), -1);
820  }
821
822  protected void composeRelatedArtifact(Complex parent, String parentType, String name, RelatedArtifact element, int index) {
823    if (element == null) 
824      return;
825    Complex t;
826    if (Utilities.noString(parentType))
827      t = parent;
828    else {
829      t = parent.predicate("fhir:"+parentType+'.'+name);
830    }
831    composeElement(t, "RelatedArtifact", name, element, index);
832    if (element.hasTypeElement())
833      composeEnum(t, "RelatedArtifact", "type", element.getTypeElement(), -1);
834    if (element.hasDisplayElement())
835      composeString(t, "RelatedArtifact", "display", element.getDisplayElement(), -1);
836    if (element.hasCitationElement())
837      composeString(t, "RelatedArtifact", "citation", element.getCitationElement(), -1);
838    if (element.hasUrlElement())
839      composeUrl(t, "RelatedArtifact", "url", element.getUrlElement(), -1);
840    if (element.hasDocument())
841      composeAttachment(t, "RelatedArtifact", "document", element.getDocument(), -1);
842    if (element.hasResourceElement())
843      composeCanonical(t, "RelatedArtifact", "resource", element.getResourceElement(), -1);
844  }
845
846  protected void composeAnnotation(Complex parent, String parentType, String name, Annotation element, int index) {
847    if (element == null) 
848      return;
849    Complex t;
850    if (Utilities.noString(parentType))
851      t = parent;
852    else {
853      t = parent.predicate("fhir:"+parentType+'.'+name);
854    }
855    composeElement(t, "Annotation", name, element, index);
856    if (element.hasAuthor())
857      composeType(t, "Annotation", "author", element.getAuthor(), -1);
858    if (element.hasTimeElement())
859      composeDateTime(t, "Annotation", "time", element.getTimeElement(), -1);
860    if (element.hasTextElement())
861      composeMarkdown(t, "Annotation", "text", element.getTextElement(), -1);
862  }
863
864  protected void composeContactDetail(Complex parent, String parentType, String name, ContactDetail element, int index) {
865    if (element == null) 
866      return;
867    Complex t;
868    if (Utilities.noString(parentType))
869      t = parent;
870    else {
871      t = parent.predicate("fhir:"+parentType+'.'+name);
872    }
873    composeElement(t, "ContactDetail", name, element, index);
874    if (element.hasNameElement())
875      composeString(t, "ContactDetail", "name", element.getNameElement(), -1);
876    for (int i = 0; i < element.getTelecom().size(); i++)
877      composeContactPoint(t, "ContactDetail", "telecom", element.getTelecom().get(i), i);
878  }
879
880  protected void composeUsageContext(Complex parent, String parentType, String name, UsageContext element, int index) {
881    if (element == null) 
882      return;
883    Complex t;
884    if (Utilities.noString(parentType))
885      t = parent;
886    else {
887      t = parent.predicate("fhir:"+parentType+'.'+name);
888    }
889    composeElement(t, "UsageContext", name, element, index);
890    if (element.hasCode())
891      composeCoding(t, "UsageContext", "code", element.getCode(), -1);
892    if (element.hasValue())
893      composeType(t, "UsageContext", "value", element.getValue(), -1);
894  }
895
896  protected void composeExpression(Complex parent, String parentType, String name, Expression element, int index) {
897    if (element == null) 
898      return;
899    Complex t;
900    if (Utilities.noString(parentType))
901      t = parent;
902    else {
903      t = parent.predicate("fhir:"+parentType+'.'+name);
904    }
905    composeElement(t, "Expression", name, element, index);
906    if (element.hasDescriptionElement())
907      composeString(t, "Expression", "description", element.getDescriptionElement(), -1);
908    if (element.hasNameElement())
909      composeId(t, "Expression", "name", element.getNameElement(), -1);
910    if (element.hasLanguageElement())
911      composeEnum(t, "Expression", "language", element.getLanguageElement(), -1);
912    if (element.hasExpressionElement())
913      composeString(t, "Expression", "expression", element.getExpressionElement(), -1);
914    if (element.hasReferenceElement())
915      composeUri(t, "Expression", "reference", element.getReferenceElement(), -1);
916  }
917
918  protected void composeSignature(Complex parent, String parentType, String name, Signature element, int index) {
919    if (element == null) 
920      return;
921    Complex t;
922    if (Utilities.noString(parentType))
923      t = parent;
924    else {
925      t = parent.predicate("fhir:"+parentType+'.'+name);
926    }
927    composeElement(t, "Signature", name, element, index);
928    for (int i = 0; i < element.getType().size(); i++)
929      composeCoding(t, "Signature", "type", element.getType().get(i), i);
930    if (element.hasWhenElement())
931      composeInstant(t, "Signature", "when", element.getWhenElement(), -1);
932    if (element.hasWho())
933      composeReference(t, "Signature", "who", element.getWho(), -1);
934    if (element.hasOnBehalfOf())
935      composeReference(t, "Signature", "onBehalfOf", element.getOnBehalfOf(), -1);
936    if (element.hasTargetFormatElement())
937      composeCode(t, "Signature", "targetFormat", element.getTargetFormatElement(), -1);
938    if (element.hasSigFormatElement())
939      composeCode(t, "Signature", "sigFormat", element.getSigFormatElement(), -1);
940    if (element.hasDataElement())
941      composeBase64Binary(t, "Signature", "data", element.getDataElement(), -1);
942  }
943
944  protected void composeTiming(Complex parent, String parentType, String name, Timing element, int index) {
945    if (element == null) 
946      return;
947    Complex t;
948    if (Utilities.noString(parentType))
949      t = parent;
950    else {
951      t = parent.predicate("fhir:"+parentType+'.'+name);
952    }
953    composeElement(t, "Timing", name, element, index);
954    for (int i = 0; i < element.getEvent().size(); i++)
955      composeDateTime(t, "Timing", "event", element.getEvent().get(i), i);
956    if (element.hasRepeat())
957      composeTimingTimingRepeatComponent(t, "Timing", "repeat", element.getRepeat(), -1);
958    if (element.hasCode())
959      composeCodeableConcept(t, "Timing", "code", element.getCode(), -1);
960  }
961
962  protected void composeTimingTimingRepeatComponent(Complex parent, String parentType, String name, Timing.TimingRepeatComponent element, int index) {
963    if (element == null) 
964      return;
965    Complex t;
966    if (Utilities.noString(parentType))
967      t = parent;
968    else {
969      t = parent.predicate("fhir:"+parentType+'.'+name);
970    }
971    composeElement(t, "repeat", name, element, index);
972    if (element.hasBounds())
973      composeType(t, "Timing", "bounds", element.getBounds(), -1);
974    if (element.hasCountElement())
975      composePositiveInt(t, "Timing", "count", element.getCountElement(), -1);
976    if (element.hasCountMaxElement())
977      composePositiveInt(t, "Timing", "countMax", element.getCountMaxElement(), -1);
978    if (element.hasDurationElement())
979      composeDecimal(t, "Timing", "duration", element.getDurationElement(), -1);
980    if (element.hasDurationMaxElement())
981      composeDecimal(t, "Timing", "durationMax", element.getDurationMaxElement(), -1);
982    if (element.hasDurationUnitElement())
983      composeEnum(t, "Timing", "durationUnit", element.getDurationUnitElement(), -1);
984    if (element.hasFrequencyElement())
985      composePositiveInt(t, "Timing", "frequency", element.getFrequencyElement(), -1);
986    if (element.hasFrequencyMaxElement())
987      composePositiveInt(t, "Timing", "frequencyMax", element.getFrequencyMaxElement(), -1);
988    if (element.hasPeriodElement())
989      composeDecimal(t, "Timing", "period", element.getPeriodElement(), -1);
990    if (element.hasPeriodMaxElement())
991      composeDecimal(t, "Timing", "periodMax", element.getPeriodMaxElement(), -1);
992    if (element.hasPeriodUnitElement())
993      composeEnum(t, "Timing", "periodUnit", element.getPeriodUnitElement(), -1);
994    for (int i = 0; i < element.getDayOfWeek().size(); i++)
995      composeEnum(t, "Timing", "dayOfWeek", element.getDayOfWeek().get(i), i);
996    for (int i = 0; i < element.getTimeOfDay().size(); i++)
997      composeTime(t, "Timing", "timeOfDay", element.getTimeOfDay().get(i), i);
998    for (int i = 0; i < element.getWhen().size(); i++)
999      composeEnum(t, "Timing", "when", element.getWhen().get(i), i);
1000    if (element.hasOffsetElement())
1001      composeUnsignedInt(t, "Timing", "offset", element.getOffsetElement(), -1);
1002  }
1003
1004  protected void composeCodeableConcept(Complex parent, String parentType, String name, CodeableConcept element, int index) {
1005    if (element == null) 
1006      return;
1007    Complex t;
1008    if (Utilities.noString(parentType))
1009      t = parent;
1010    else {
1011      t = parent.predicate("fhir:"+parentType+'.'+name);
1012    }
1013    composeElement(t, "CodeableConcept", name, element, index);
1014    decorateCodeableConcept(t, element);
1015    for (int i = 0; i < element.getCoding().size(); i++)
1016      composeCoding(t, "CodeableConcept", "coding", element.getCoding().get(i), i);
1017    if (element.hasTextElement())
1018      composeString(t, "CodeableConcept", "text", element.getTextElement(), -1);
1019  }
1020
1021  protected void composeParameterDefinition(Complex parent, String parentType, String name, ParameterDefinition element, int index) {
1022    if (element == null) 
1023      return;
1024    Complex t;
1025    if (Utilities.noString(parentType))
1026      t = parent;
1027    else {
1028      t = parent.predicate("fhir:"+parentType+'.'+name);
1029    }
1030    composeElement(t, "ParameterDefinition", name, element, index);
1031    if (element.hasNameElement())
1032      composeCode(t, "ParameterDefinition", "name", element.getNameElement(), -1);
1033    if (element.hasUseElement())
1034      composeEnum(t, "ParameterDefinition", "use", element.getUseElement(), -1);
1035    if (element.hasMinElement())
1036      composeInteger(t, "ParameterDefinition", "min", element.getMinElement(), -1);
1037    if (element.hasMaxElement())
1038      composeString(t, "ParameterDefinition", "max", element.getMaxElement(), -1);
1039    if (element.hasDocumentationElement())
1040      composeString(t, "ParameterDefinition", "documentation", element.getDocumentationElement(), -1);
1041    if (element.hasTypeElement())
1042      composeCode(t, "ParameterDefinition", "type", element.getTypeElement(), -1);
1043    if (element.hasProfileElement())
1044      composeCanonical(t, "ParameterDefinition", "profile", element.getProfileElement(), -1);
1045  }
1046
1047  protected void composeMarketingStatus(Complex parent, String parentType, String name, MarketingStatus element, int index) {
1048    if (element == null) 
1049      return;
1050    Complex t;
1051    if (Utilities.noString(parentType))
1052      t = parent;
1053    else {
1054      t = parent.predicate("fhir:"+parentType+'.'+name);
1055    }
1056    composeElement(t, "MarketingStatus", name, element, index);
1057    if (element.hasCountry())
1058      composeCodeableConcept(t, "MarketingStatus", "country", element.getCountry(), -1);
1059    if (element.hasJurisdiction())
1060      composeCodeableConcept(t, "MarketingStatus", "jurisdiction", element.getJurisdiction(), -1);
1061    if (element.hasStatus())
1062      composeCodeableConcept(t, "MarketingStatus", "status", element.getStatus(), -1);
1063    if (element.hasDateRange())
1064      composePeriod(t, "MarketingStatus", "dateRange", element.getDateRange(), -1);
1065    if (element.hasRestoreDateElement())
1066      composeDateTime(t, "MarketingStatus", "restoreDate", element.getRestoreDateElement(), -1);
1067  }
1068
1069  protected void composeSubstanceAmount(Complex parent, String parentType, String name, SubstanceAmount element, int index) {
1070    if (element == null) 
1071      return;
1072    Complex t;
1073    if (Utilities.noString(parentType))
1074      t = parent;
1075    else {
1076      t = parent.predicate("fhir:"+parentType+'.'+name);
1077    }
1078    composeElement(t, "SubstanceAmount", name, element, index);
1079    if (element.hasAmount())
1080      composeType(t, "SubstanceAmount", "amount", element.getAmount(), -1);
1081    if (element.hasAmountType())
1082      composeCodeableConcept(t, "SubstanceAmount", "amountType", element.getAmountType(), -1);
1083    if (element.hasAmountTextElement())
1084      composeString(t, "SubstanceAmount", "amountText", element.getAmountTextElement(), -1);
1085    if (element.hasReferenceRange())
1086      composeSubstanceAmountSubstanceAmountReferenceRangeComponent(t, "SubstanceAmount", "referenceRange", element.getReferenceRange(), -1);
1087  }
1088
1089  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponent(Complex parent, String parentType, String name, SubstanceAmount.SubstanceAmountReferenceRangeComponent element, int index) {
1090    if (element == null) 
1091      return;
1092    Complex t;
1093    if (Utilities.noString(parentType))
1094      t = parent;
1095    else {
1096      t = parent.predicate("fhir:"+parentType+'.'+name);
1097    }
1098    composeElement(t, "referenceRange", name, element, index);
1099    if (element.hasLowLimit())
1100      composeQuantity(t, "SubstanceAmount", "lowLimit", element.getLowLimit(), -1);
1101    if (element.hasHighLimit())
1102      composeQuantity(t, "SubstanceAmount", "highLimit", element.getHighLimit(), -1);
1103  }
1104
1105  protected void composeElementDefinition(Complex parent, String parentType, String name, ElementDefinition element, int index) {
1106    if (element == null) 
1107      return;
1108    Complex t;
1109    if (Utilities.noString(parentType))
1110      t = parent;
1111    else {
1112      t = parent.predicate("fhir:"+parentType+'.'+name);
1113    }
1114    composeElement(t, "ElementDefinition", name, element, index);
1115    if (element.hasPathElement())
1116      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1117    for (int i = 0; i < element.getRepresentation().size(); i++)
1118      composeEnum(t, "ElementDefinition", "representation", element.getRepresentation().get(i), i);
1119    if (element.hasSliceNameElement())
1120      composeString(t, "ElementDefinition", "sliceName", element.getSliceNameElement(), -1);
1121    if (element.hasSliceIsConstrainingElement())
1122      composeBoolean(t, "ElementDefinition", "sliceIsConstraining", element.getSliceIsConstrainingElement(), -1);
1123    if (element.hasLabelElement())
1124      composeString(t, "ElementDefinition", "label", element.getLabelElement(), -1);
1125    for (int i = 0; i < element.getCode().size(); i++)
1126      composeCoding(t, "ElementDefinition", "code", element.getCode().get(i), i);
1127    if (element.hasSlicing())
1128      composeElementDefinitionElementDefinitionSlicingComponent(t, "ElementDefinition", "slicing", element.getSlicing(), -1);
1129    if (element.hasShortElement())
1130      composeString(t, "ElementDefinition", "short", element.getShortElement(), -1);
1131    if (element.hasDefinitionElement())
1132      composeMarkdown(t, "ElementDefinition", "definition", element.getDefinitionElement(), -1);
1133    if (element.hasCommentElement())
1134      composeMarkdown(t, "ElementDefinition", "comment", element.getCommentElement(), -1);
1135    if (element.hasRequirementsElement())
1136      composeMarkdown(t, "ElementDefinition", "requirements", element.getRequirementsElement(), -1);
1137    for (int i = 0; i < element.getAlias().size(); i++)
1138      composeString(t, "ElementDefinition", "alias", element.getAlias().get(i), i);
1139    if (element.hasMinElement())
1140      composeUnsignedInt(t, "ElementDefinition", "min", element.getMinElement(), -1);
1141    if (element.hasMaxElement())
1142      composeString(t, "ElementDefinition", "max", element.getMaxElement(), -1);
1143    if (element.hasBase())
1144      composeElementDefinitionElementDefinitionBaseComponent(t, "ElementDefinition", "base", element.getBase(), -1);
1145    if (element.hasContentReferenceElement())
1146      composeUri(t, "ElementDefinition", "contentReference", element.getContentReferenceElement(), -1);
1147    for (int i = 0; i < element.getType().size(); i++)
1148      composeElementDefinitionTypeRefComponent(t, "ElementDefinition", "type", element.getType().get(i), i);
1149    if (element.hasDefaultValue())
1150      composeType(t, "ElementDefinition", "defaultValue", element.getDefaultValue(), -1);
1151    if (element.hasMeaningWhenMissingElement())
1152      composeMarkdown(t, "ElementDefinition", "meaningWhenMissing", element.getMeaningWhenMissingElement(), -1);
1153    if (element.hasOrderMeaningElement())
1154      composeString(t, "ElementDefinition", "orderMeaning", element.getOrderMeaningElement(), -1);
1155    if (element.hasFixed())
1156      composeType(t, "ElementDefinition", "fixed", element.getFixed(), -1);
1157    if (element.hasPattern())
1158      composeType(t, "ElementDefinition", "pattern", element.getPattern(), -1);
1159    for (int i = 0; i < element.getExample().size(); i++)
1160      composeElementDefinitionElementDefinitionExampleComponent(t, "ElementDefinition", "example", element.getExample().get(i), i);
1161    if (element.hasMinValue())
1162      composeType(t, "ElementDefinition", "minValue", element.getMinValue(), -1);
1163    if (element.hasMaxValue())
1164      composeType(t, "ElementDefinition", "maxValue", element.getMaxValue(), -1);
1165    if (element.hasMaxLengthElement())
1166      composeInteger(t, "ElementDefinition", "maxLength", element.getMaxLengthElement(), -1);
1167    for (int i = 0; i < element.getCondition().size(); i++)
1168      composeId(t, "ElementDefinition", "condition", element.getCondition().get(i), i);
1169    for (int i = 0; i < element.getConstraint().size(); i++)
1170      composeElementDefinitionElementDefinitionConstraintComponent(t, "ElementDefinition", "constraint", element.getConstraint().get(i), i);
1171    if (element.hasMustSupportElement())
1172      composeBoolean(t, "ElementDefinition", "mustSupport", element.getMustSupportElement(), -1);
1173    if (element.hasIsModifierElement())
1174      composeBoolean(t, "ElementDefinition", "isModifier", element.getIsModifierElement(), -1);
1175    if (element.hasIsModifierReasonElement())
1176      composeString(t, "ElementDefinition", "isModifierReason", element.getIsModifierReasonElement(), -1);
1177    if (element.hasIsSummaryElement())
1178      composeBoolean(t, "ElementDefinition", "isSummary", element.getIsSummaryElement(), -1);
1179    if (element.hasBinding())
1180      composeElementDefinitionElementDefinitionBindingComponent(t, "ElementDefinition", "binding", element.getBinding(), -1);
1181    for (int i = 0; i < element.getMapping().size(); i++)
1182      composeElementDefinitionElementDefinitionMappingComponent(t, "ElementDefinition", "mapping", element.getMapping().get(i), i);
1183  }
1184
1185  protected void composeElementDefinitionElementDefinitionSlicingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionSlicingComponent element, int index) {
1186    if (element == null) 
1187      return;
1188    Complex t;
1189    if (Utilities.noString(parentType))
1190      t = parent;
1191    else {
1192      t = parent.predicate("fhir:"+parentType+'.'+name);
1193    }
1194    composeElement(t, "slicing", name, element, index);
1195    for (int i = 0; i < element.getDiscriminator().size(); i++)
1196      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(t, "ElementDefinition", "discriminator", element.getDiscriminator().get(i), i);
1197    if (element.hasDescriptionElement())
1198      composeString(t, "ElementDefinition", "description", element.getDescriptionElement(), -1);
1199    if (element.hasOrderedElement())
1200      composeBoolean(t, "ElementDefinition", "ordered", element.getOrderedElement(), -1);
1201    if (element.hasRulesElement())
1202      composeEnum(t, "ElementDefinition", "rules", element.getRulesElement(), -1);
1203  }
1204
1205  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element, int index) {
1206    if (element == null) 
1207      return;
1208    Complex t;
1209    if (Utilities.noString(parentType))
1210      t = parent;
1211    else {
1212      t = parent.predicate("fhir:"+parentType+'.'+name);
1213    }
1214    composeElement(t, "discriminator", name, element, index);
1215    if (element.hasTypeElement())
1216      composeEnum(t, "ElementDefinition", "type", element.getTypeElement(), -1);
1217    if (element.hasPathElement())
1218      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1219  }
1220
1221  protected void composeElementDefinitionElementDefinitionBaseComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionBaseComponent element, int index) {
1222    if (element == null) 
1223      return;
1224    Complex t;
1225    if (Utilities.noString(parentType))
1226      t = parent;
1227    else {
1228      t = parent.predicate("fhir:"+parentType+'.'+name);
1229    }
1230    composeElement(t, "base", name, element, index);
1231    if (element.hasPathElement())
1232      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1233    if (element.hasMinElement())
1234      composeUnsignedInt(t, "ElementDefinition", "min", element.getMinElement(), -1);
1235    if (element.hasMaxElement())
1236      composeString(t, "ElementDefinition", "max", element.getMaxElement(), -1);
1237  }
1238
1239  protected void composeElementDefinitionTypeRefComponent(Complex parent, String parentType, String name, ElementDefinition.TypeRefComponent element, int index) {
1240    if (element == null) 
1241      return;
1242    Complex t;
1243    if (Utilities.noString(parentType))
1244      t = parent;
1245    else {
1246      t = parent.predicate("fhir:"+parentType+'.'+name);
1247    }
1248    composeElement(t, "type", name, element, index);
1249    if (element.hasCodeElement())
1250      composeUri(t, "ElementDefinition", "code", element.getCodeElement(), -1);
1251    for (int i = 0; i < element.getProfile().size(); i++)
1252      composeCanonical(t, "ElementDefinition", "profile", element.getProfile().get(i), i);
1253    for (int i = 0; i < element.getTargetProfile().size(); i++)
1254      composeCanonical(t, "ElementDefinition", "targetProfile", element.getTargetProfile().get(i), i);
1255    for (int i = 0; i < element.getAggregation().size(); i++)
1256      composeEnum(t, "ElementDefinition", "aggregation", element.getAggregation().get(i), i);
1257    if (element.hasVersioningElement())
1258      composeEnum(t, "ElementDefinition", "versioning", element.getVersioningElement(), -1);
1259  }
1260
1261  protected void composeElementDefinitionElementDefinitionExampleComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionExampleComponent element, int index) {
1262    if (element == null) 
1263      return;
1264    Complex t;
1265    if (Utilities.noString(parentType))
1266      t = parent;
1267    else {
1268      t = parent.predicate("fhir:"+parentType+'.'+name);
1269    }
1270    composeElement(t, "example", name, element, index);
1271    if (element.hasLabelElement())
1272      composeString(t, "ElementDefinition", "label", element.getLabelElement(), -1);
1273    if (element.hasValue())
1274      composeType(t, "ElementDefinition", "value", element.getValue(), -1);
1275  }
1276
1277  protected void composeElementDefinitionElementDefinitionConstraintComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionConstraintComponent element, int index) {
1278    if (element == null) 
1279      return;
1280    Complex t;
1281    if (Utilities.noString(parentType))
1282      t = parent;
1283    else {
1284      t = parent.predicate("fhir:"+parentType+'.'+name);
1285    }
1286    composeElement(t, "constraint", name, element, index);
1287    if (element.hasKeyElement())
1288      composeId(t, "ElementDefinition", "key", element.getKeyElement(), -1);
1289    if (element.hasRequirementsElement())
1290      composeString(t, "ElementDefinition", "requirements", element.getRequirementsElement(), -1);
1291    if (element.hasSeverityElement())
1292      composeEnum(t, "ElementDefinition", "severity", element.getSeverityElement(), -1);
1293    if (element.hasHumanElement())
1294      composeString(t, "ElementDefinition", "human", element.getHumanElement(), -1);
1295    if (element.hasExpressionElement())
1296      composeString(t, "ElementDefinition", "expression", element.getExpressionElement(), -1);
1297    if (element.hasXpathElement())
1298      composeString(t, "ElementDefinition", "xpath", element.getXpathElement(), -1);
1299    if (element.hasSourceElement())
1300      composeCanonical(t, "ElementDefinition", "source", element.getSourceElement(), -1);
1301  }
1302
1303  protected void composeElementDefinitionElementDefinitionBindingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionBindingComponent element, int index) {
1304    if (element == null) 
1305      return;
1306    Complex t;
1307    if (Utilities.noString(parentType))
1308      t = parent;
1309    else {
1310      t = parent.predicate("fhir:"+parentType+'.'+name);
1311    }
1312    composeElement(t, "binding", name, element, index);
1313    if (element.hasStrengthElement())
1314      composeEnum(t, "ElementDefinition", "strength", element.getStrengthElement(), -1);
1315    if (element.hasDescriptionElement())
1316      composeString(t, "ElementDefinition", "description", element.getDescriptionElement(), -1);
1317    if (element.hasValueSetElement())
1318      composeCanonical(t, "ElementDefinition", "valueSet", element.getValueSetElement(), -1);
1319  }
1320
1321  protected void composeElementDefinitionElementDefinitionMappingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionMappingComponent element, int index) {
1322    if (element == null) 
1323      return;
1324    Complex t;
1325    if (Utilities.noString(parentType))
1326      t = parent;
1327    else {
1328      t = parent.predicate("fhir:"+parentType+'.'+name);
1329    }
1330    composeElement(t, "mapping", name, element, index);
1331    if (element.hasIdentityElement())
1332      composeId(t, "ElementDefinition", "identity", element.getIdentityElement(), -1);
1333    if (element.hasLanguageElement())
1334      composeCode(t, "ElementDefinition", "language", element.getLanguageElement(), -1);
1335    if (element.hasMapElement())
1336      composeString(t, "ElementDefinition", "map", element.getMapElement(), -1);
1337    if (element.hasCommentElement())
1338      composeString(t, "ElementDefinition", "comment", element.getCommentElement(), -1);
1339  }
1340
1341  protected void composeSubstanceMoiety(Complex parent, String parentType, String name, SubstanceMoiety element, int index) {
1342    if (element == null) 
1343      return;
1344    Complex t;
1345    if (Utilities.noString(parentType))
1346      t = parent;
1347    else {
1348      t = parent.predicate("fhir:"+parentType+'.'+name);
1349    }
1350    composeElement(t, "SubstanceMoiety", name, element, index);
1351    if (element.hasRole())
1352      composeCodeableConcept(t, "SubstanceMoiety", "role", element.getRole(), -1);
1353    if (element.hasIdentifier())
1354      composeIdentifier(t, "SubstanceMoiety", "identifier", element.getIdentifier(), -1);
1355    if (element.hasNameElement())
1356      composeString(t, "SubstanceMoiety", "name", element.getNameElement(), -1);
1357    if (element.hasStereochemistry())
1358      composeCodeableConcept(t, "SubstanceMoiety", "stereochemistry", element.getStereochemistry(), -1);
1359    if (element.hasOpticalActivity())
1360      composeCodeableConcept(t, "SubstanceMoiety", "opticalActivity", element.getOpticalActivity(), -1);
1361    if (element.hasMolecularFormulaElement())
1362      composeString(t, "SubstanceMoiety", "molecularFormula", element.getMolecularFormulaElement(), -1);
1363    if (element.hasAmount())
1364      composeSubstanceAmount(t, "SubstanceMoiety", "amount", element.getAmount(), -1);
1365  }
1366
1367  protected void composeProductShelfLife(Complex parent, String parentType, String name, ProductShelfLife element, int index) {
1368    if (element == null) 
1369      return;
1370    Complex t;
1371    if (Utilities.noString(parentType))
1372      t = parent;
1373    else {
1374      t = parent.predicate("fhir:"+parentType+'.'+name);
1375    }
1376    composeElement(t, "ProductShelfLife", name, element, index);
1377    if (element.hasIdentifier())
1378      composeIdentifier(t, "ProductShelfLife", "identifier", element.getIdentifier(), -1);
1379    if (element.hasType())
1380      composeCodeableConcept(t, "ProductShelfLife", "type", element.getType(), -1);
1381    if (element.hasPeriod())
1382      composeQuantity(t, "ProductShelfLife", "period", element.getPeriod(), -1);
1383    for (int i = 0; i < element.getSpecialPrecautionsForStorage().size(); i++)
1384      composeCodeableConcept(t, "ProductShelfLife", "specialPrecautionsForStorage", element.getSpecialPrecautionsForStorage().get(i), i);
1385  }
1386
1387  protected void composeProdCharacteristic(Complex parent, String parentType, String name, ProdCharacteristic element, int index) {
1388    if (element == null) 
1389      return;
1390    Complex t;
1391    if (Utilities.noString(parentType))
1392      t = parent;
1393    else {
1394      t = parent.predicate("fhir:"+parentType+'.'+name);
1395    }
1396    composeElement(t, "ProdCharacteristic", name, element, index);
1397    if (element.hasHeight())
1398      composeQuantity(t, "ProdCharacteristic", "height", element.getHeight(), -1);
1399    if (element.hasWidth())
1400      composeQuantity(t, "ProdCharacteristic", "width", element.getWidth(), -1);
1401    if (element.hasDepth())
1402      composeQuantity(t, "ProdCharacteristic", "depth", element.getDepth(), -1);
1403    if (element.hasWeight())
1404      composeQuantity(t, "ProdCharacteristic", "weight", element.getWeight(), -1);
1405    if (element.hasNominalVolume())
1406      composeQuantity(t, "ProdCharacteristic", "nominalVolume", element.getNominalVolume(), -1);
1407    if (element.hasExternalDiameter())
1408      composeQuantity(t, "ProdCharacteristic", "externalDiameter", element.getExternalDiameter(), -1);
1409    if (element.hasShapeElement())
1410      composeString(t, "ProdCharacteristic", "shape", element.getShapeElement(), -1);
1411    for (int i = 0; i < element.getColor().size(); i++)
1412      composeString(t, "ProdCharacteristic", "color", element.getColor().get(i), i);
1413    for (int i = 0; i < element.getImprint().size(); i++)
1414      composeString(t, "ProdCharacteristic", "imprint", element.getImprint().get(i), i);
1415    for (int i = 0; i < element.getImage().size(); i++)
1416      composeAttachment(t, "ProdCharacteristic", "image", element.getImage().get(i), i);
1417    if (element.hasScoring())
1418      composeCodeableConcept(t, "ProdCharacteristic", "scoring", element.getScoring(), -1);
1419  }
1420
1421  protected void composeDomainResource(Complex t, String parentType, String name, DomainResource element, int index) {
1422    composeResource(t, parentType, name, element, index);
1423    if (element.hasText())
1424      composeNarrative(t, "DomainResource", "text", element.getText(), -1);
1425    for (int i = 0; i < element.getContained().size(); i++)
1426      composeResource(t, "DomainResource", "contained", element.getContained().get(i), i);
1427    for (int i = 0; i < element.getExtension().size(); i++)
1428      composeExtension(t, "DomainResource", "extension", element.getExtension().get(i), i);
1429    for (int i = 0; i < element.getModifierExtension().size(); i++)
1430      composeExtension(t, "DomainResource", "modifierExtension", element.getModifierExtension().get(i), i);
1431  }
1432
1433  protected void composeParameters(Complex parent, String parentType, String name, Parameters 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    composeResource(t, "Parameters", name, element, index);
1443    for (int i = 0; i < element.getParameter().size(); i++)
1444      composeParametersParametersParameterComponent(t, "Parameters", "parameter", element.getParameter().get(i), i);
1445  }
1446
1447  protected void composeParametersParametersParameterComponent(Complex parent, String parentType, String name, Parameters.ParametersParameterComponent element, int index) {
1448    if (element == null) 
1449      return;
1450    Complex t;
1451    if (Utilities.noString(parentType))
1452      t = parent;
1453    else {
1454      t = parent.predicate("fhir:"+parentType+'.'+name);
1455    }
1456    composeBackboneElement(t, "parameter", name, element, index);
1457    if (element.hasNameElement())
1458      composeString(t, "Parameters", "name", element.getNameElement(), -1);
1459    if (element.hasValue())
1460      composeType(t, "Parameters", "value", element.getValue(), -1);
1461    if (element.hasResource())
1462      composeResource(t, "Parameters", "resource", element.getResource(), -1);
1463    for (int i = 0; i < element.getPart().size(); i++)
1464      composeParametersParametersParameterComponent(t, "Parameters", "part", element.getPart().get(i), i);
1465  }
1466
1467  protected void composeResource(Complex t, String parentType, String name, Resource element, int index) {
1468    if (element.hasIdElement())
1469      composeId(t, "Resource", "id", element.getIdElement(), -1);
1470    if (element.hasMeta())
1471      composeMeta(t, "Resource", "meta", element.getMeta(), -1);
1472    if (element.hasImplicitRulesElement())
1473      composeUri(t, "Resource", "implicitRules", element.getImplicitRulesElement(), -1);
1474    if (element.hasLanguageElement())
1475      composeCode(t, "Resource", "language", element.getLanguageElement(), -1);
1476  }
1477
1478  protected void composeAccount(Complex parent, String parentType, String name, Account element, int index) {
1479    if (element == null) 
1480      return;
1481    Complex t;
1482    if (Utilities.noString(parentType))
1483      t = parent;
1484    else {
1485      t = parent.predicate("fhir:"+parentType+'.'+name);
1486    }
1487    composeDomainResource(t, "Account", name, element, index);
1488    for (int i = 0; i < element.getIdentifier().size(); i++)
1489      composeIdentifier(t, "Account", "identifier", element.getIdentifier().get(i), i);
1490    if (element.hasStatusElement())
1491      composeEnum(t, "Account", "status", element.getStatusElement(), -1);
1492    if (element.hasType())
1493      composeCodeableConcept(t, "Account", "type", element.getType(), -1);
1494    if (element.hasNameElement())
1495      composeString(t, "Account", "name", element.getNameElement(), -1);
1496    for (int i = 0; i < element.getSubject().size(); i++)
1497      composeReference(t, "Account", "subject", element.getSubject().get(i), i);
1498    if (element.hasServicePeriod())
1499      composePeriod(t, "Account", "servicePeriod", element.getServicePeriod(), -1);
1500    for (int i = 0; i < element.getCoverage().size(); i++)
1501      composeAccountCoverageComponent(t, "Account", "coverage", element.getCoverage().get(i), i);
1502    if (element.hasOwner())
1503      composeReference(t, "Account", "owner", element.getOwner(), -1);
1504    if (element.hasDescriptionElement())
1505      composeString(t, "Account", "description", element.getDescriptionElement(), -1);
1506    for (int i = 0; i < element.getGuarantor().size(); i++)
1507      composeAccountGuarantorComponent(t, "Account", "guarantor", element.getGuarantor().get(i), i);
1508    if (element.hasPartOf())
1509      composeReference(t, "Account", "partOf", element.getPartOf(), -1);
1510  }
1511
1512  protected void composeAccountCoverageComponent(Complex parent, String parentType, String name, Account.CoverageComponent element, int index) {
1513    if (element == null) 
1514      return;
1515    Complex t;
1516    if (Utilities.noString(parentType))
1517      t = parent;
1518    else {
1519      t = parent.predicate("fhir:"+parentType+'.'+name);
1520    }
1521    composeBackboneElement(t, "coverage", name, element, index);
1522    if (element.hasCoverage())
1523      composeReference(t, "Account", "coverage", element.getCoverage(), -1);
1524    if (element.hasPriorityElement())
1525      composePositiveInt(t, "Account", "priority", element.getPriorityElement(), -1);
1526  }
1527
1528  protected void composeAccountGuarantorComponent(Complex parent, String parentType, String name, Account.GuarantorComponent element, int index) {
1529    if (element == null) 
1530      return;
1531    Complex t;
1532    if (Utilities.noString(parentType))
1533      t = parent;
1534    else {
1535      t = parent.predicate("fhir:"+parentType+'.'+name);
1536    }
1537    composeBackboneElement(t, "guarantor", name, element, index);
1538    if (element.hasParty())
1539      composeReference(t, "Account", "party", element.getParty(), -1);
1540    if (element.hasOnHoldElement())
1541      composeBoolean(t, "Account", "onHold", element.getOnHoldElement(), -1);
1542    if (element.hasPeriod())
1543      composePeriod(t, "Account", "period", element.getPeriod(), -1);
1544  }
1545
1546  protected void composeActivityDefinition(Complex parent, String parentType, String name, ActivityDefinition element, int index) {
1547    if (element == null) 
1548      return;
1549    Complex t;
1550    if (Utilities.noString(parentType))
1551      t = parent;
1552    else {
1553      t = parent.predicate("fhir:"+parentType+'.'+name);
1554    }
1555    composeDomainResource(t, "ActivityDefinition", name, element, index);
1556    if (element.hasUrlElement())
1557      composeUri(t, "ActivityDefinition", "url", element.getUrlElement(), -1);
1558    for (int i = 0; i < element.getIdentifier().size(); i++)
1559      composeIdentifier(t, "ActivityDefinition", "identifier", element.getIdentifier().get(i), i);
1560    if (element.hasVersionElement())
1561      composeString(t, "ActivityDefinition", "version", element.getVersionElement(), -1);
1562    if (element.hasNameElement())
1563      composeString(t, "ActivityDefinition", "name", element.getNameElement(), -1);
1564    if (element.hasTitleElement())
1565      composeString(t, "ActivityDefinition", "title", element.getTitleElement(), -1);
1566    if (element.hasSubtitleElement())
1567      composeString(t, "ActivityDefinition", "subtitle", element.getSubtitleElement(), -1);
1568    if (element.hasStatusElement())
1569      composeEnum(t, "ActivityDefinition", "status", element.getStatusElement(), -1);
1570    if (element.hasExperimentalElement())
1571      composeBoolean(t, "ActivityDefinition", "experimental", element.getExperimentalElement(), -1);
1572    if (element.hasSubject())
1573      composeType(t, "ActivityDefinition", "subject", element.getSubject(), -1);
1574    if (element.hasDateElement())
1575      composeDateTime(t, "ActivityDefinition", "date", element.getDateElement(), -1);
1576    if (element.hasPublisherElement())
1577      composeString(t, "ActivityDefinition", "publisher", element.getPublisherElement(), -1);
1578    for (int i = 0; i < element.getContact().size(); i++)
1579      composeContactDetail(t, "ActivityDefinition", "contact", element.getContact().get(i), i);
1580    if (element.hasDescriptionElement())
1581      composeMarkdown(t, "ActivityDefinition", "description", element.getDescriptionElement(), -1);
1582    for (int i = 0; i < element.getUseContext().size(); i++)
1583      composeUsageContext(t, "ActivityDefinition", "useContext", element.getUseContext().get(i), i);
1584    for (int i = 0; i < element.getJurisdiction().size(); i++)
1585      composeCodeableConcept(t, "ActivityDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
1586    if (element.hasPurposeElement())
1587      composeMarkdown(t, "ActivityDefinition", "purpose", element.getPurposeElement(), -1);
1588    if (element.hasUsageElement())
1589      composeString(t, "ActivityDefinition", "usage", element.getUsageElement(), -1);
1590    if (element.hasCopyrightElement())
1591      composeMarkdown(t, "ActivityDefinition", "copyright", element.getCopyrightElement(), -1);
1592    if (element.hasApprovalDateElement())
1593      composeDate(t, "ActivityDefinition", "approvalDate", element.getApprovalDateElement(), -1);
1594    if (element.hasLastReviewDateElement())
1595      composeDate(t, "ActivityDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
1596    if (element.hasEffectivePeriod())
1597      composePeriod(t, "ActivityDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
1598    for (int i = 0; i < element.getTopic().size(); i++)
1599      composeCodeableConcept(t, "ActivityDefinition", "topic", element.getTopic().get(i), i);
1600    for (int i = 0; i < element.getAuthor().size(); i++)
1601      composeContactDetail(t, "ActivityDefinition", "author", element.getAuthor().get(i), i);
1602    for (int i = 0; i < element.getEditor().size(); i++)
1603      composeContactDetail(t, "ActivityDefinition", "editor", element.getEditor().get(i), i);
1604    for (int i = 0; i < element.getReviewer().size(); i++)
1605      composeContactDetail(t, "ActivityDefinition", "reviewer", element.getReviewer().get(i), i);
1606    for (int i = 0; i < element.getEndorser().size(); i++)
1607      composeContactDetail(t, "ActivityDefinition", "endorser", element.getEndorser().get(i), i);
1608    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
1609      composeRelatedArtifact(t, "ActivityDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
1610    for (int i = 0; i < element.getLibrary().size(); i++)
1611      composeCanonical(t, "ActivityDefinition", "library", element.getLibrary().get(i), i);
1612    if (element.hasKindElement())
1613      composeEnum(t, "ActivityDefinition", "kind", element.getKindElement(), -1);
1614    if (element.hasProfileElement())
1615      composeCanonical(t, "ActivityDefinition", "profile", element.getProfileElement(), -1);
1616    if (element.hasCode())
1617      composeCodeableConcept(t, "ActivityDefinition", "code", element.getCode(), -1);
1618    if (element.hasIntentElement())
1619      composeEnum(t, "ActivityDefinition", "intent", element.getIntentElement(), -1);
1620    if (element.hasPriorityElement())
1621      composeEnum(t, "ActivityDefinition", "priority", element.getPriorityElement(), -1);
1622    if (element.hasDoNotPerformElement())
1623      composeBoolean(t, "ActivityDefinition", "doNotPerform", element.getDoNotPerformElement(), -1);
1624    if (element.hasTiming())
1625      composeType(t, "ActivityDefinition", "timing", element.getTiming(), -1);
1626    if (element.hasLocation())
1627      composeReference(t, "ActivityDefinition", "location", element.getLocation(), -1);
1628    for (int i = 0; i < element.getParticipant().size(); i++)
1629      composeActivityDefinitionActivityDefinitionParticipantComponent(t, "ActivityDefinition", "participant", element.getParticipant().get(i), i);
1630    if (element.hasProduct())
1631      composeType(t, "ActivityDefinition", "product", element.getProduct(), -1);
1632    if (element.hasQuantity())
1633      composeQuantity(t, "ActivityDefinition", "quantity", element.getQuantity(), -1);
1634    for (int i = 0; i < element.getDosage().size(); i++)
1635      composeDosage(t, "ActivityDefinition", "dosage", element.getDosage().get(i), i);
1636    for (int i = 0; i < element.getBodySite().size(); i++)
1637      composeCodeableConcept(t, "ActivityDefinition", "bodySite", element.getBodySite().get(i), i);
1638    for (int i = 0; i < element.getSpecimenRequirement().size(); i++)
1639      composeReference(t, "ActivityDefinition", "specimenRequirement", element.getSpecimenRequirement().get(i), i);
1640    for (int i = 0; i < element.getObservationRequirement().size(); i++)
1641      composeReference(t, "ActivityDefinition", "observationRequirement", element.getObservationRequirement().get(i), i);
1642    for (int i = 0; i < element.getObservationResultRequirement().size(); i++)
1643      composeReference(t, "ActivityDefinition", "observationResultRequirement", element.getObservationResultRequirement().get(i), i);
1644    if (element.hasTransformElement())
1645      composeCanonical(t, "ActivityDefinition", "transform", element.getTransformElement(), -1);
1646    for (int i = 0; i < element.getDynamicValue().size(); i++)
1647      composeActivityDefinitionActivityDefinitionDynamicValueComponent(t, "ActivityDefinition", "dynamicValue", element.getDynamicValue().get(i), i);
1648  }
1649
1650  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(Complex parent, String parentType, String name, ActivityDefinition.ActivityDefinitionParticipantComponent element, int index) {
1651    if (element == null) 
1652      return;
1653    Complex t;
1654    if (Utilities.noString(parentType))
1655      t = parent;
1656    else {
1657      t = parent.predicate("fhir:"+parentType+'.'+name);
1658    }
1659    composeBackboneElement(t, "participant", name, element, index);
1660    if (element.hasTypeElement())
1661      composeEnum(t, "ActivityDefinition", "type", element.getTypeElement(), -1);
1662    if (element.hasRole())
1663      composeCodeableConcept(t, "ActivityDefinition", "role", element.getRole(), -1);
1664  }
1665
1666  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(Complex parent, String parentType, String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element, int index) {
1667    if (element == null) 
1668      return;
1669    Complex t;
1670    if (Utilities.noString(parentType))
1671      t = parent;
1672    else {
1673      t = parent.predicate("fhir:"+parentType+'.'+name);
1674    }
1675    composeBackboneElement(t, "dynamicValue", name, element, index);
1676    if (element.hasPathElement())
1677      composeString(t, "ActivityDefinition", "path", element.getPathElement(), -1);
1678    if (element.hasExpression())
1679      composeExpression(t, "ActivityDefinition", "expression", element.getExpression(), -1);
1680  }
1681
1682  protected void composeAdverseEvent(Complex parent, String parentType, String name, AdverseEvent element, int index) {
1683    if (element == null) 
1684      return;
1685    Complex t;
1686    if (Utilities.noString(parentType))
1687      t = parent;
1688    else {
1689      t = parent.predicate("fhir:"+parentType+'.'+name);
1690    }
1691    composeDomainResource(t, "AdverseEvent", name, element, index);
1692    if (element.hasIdentifier())
1693      composeIdentifier(t, "AdverseEvent", "identifier", element.getIdentifier(), -1);
1694    if (element.hasActualityElement())
1695      composeEnum(t, "AdverseEvent", "actuality", element.getActualityElement(), -1);
1696    for (int i = 0; i < element.getCategory().size(); i++)
1697      composeCodeableConcept(t, "AdverseEvent", "category", element.getCategory().get(i), i);
1698    if (element.hasEvent())
1699      composeCodeableConcept(t, "AdverseEvent", "event", element.getEvent(), -1);
1700    if (element.hasSubject())
1701      composeReference(t, "AdverseEvent", "subject", element.getSubject(), -1);
1702    if (element.hasContext())
1703      composeReference(t, "AdverseEvent", "context", element.getContext(), -1);
1704    if (element.hasDateElement())
1705      composeDateTime(t, "AdverseEvent", "date", element.getDateElement(), -1);
1706    if (element.hasDetectedElement())
1707      composeDateTime(t, "AdverseEvent", "detected", element.getDetectedElement(), -1);
1708    if (element.hasRecordedDateElement())
1709      composeDateTime(t, "AdverseEvent", "recordedDate", element.getRecordedDateElement(), -1);
1710    for (int i = 0; i < element.getResultingCondition().size(); i++)
1711      composeReference(t, "AdverseEvent", "resultingCondition", element.getResultingCondition().get(i), i);
1712    if (element.hasLocation())
1713      composeReference(t, "AdverseEvent", "location", element.getLocation(), -1);
1714    if (element.hasSeriousness())
1715      composeCodeableConcept(t, "AdverseEvent", "seriousness", element.getSeriousness(), -1);
1716    if (element.hasSeverity())
1717      composeCodeableConcept(t, "AdverseEvent", "severity", element.getSeverity(), -1);
1718    if (element.hasOutcome())
1719      composeCodeableConcept(t, "AdverseEvent", "outcome", element.getOutcome(), -1);
1720    if (element.hasRecorder())
1721      composeReference(t, "AdverseEvent", "recorder", element.getRecorder(), -1);
1722    for (int i = 0; i < element.getContributor().size(); i++)
1723      composeReference(t, "AdverseEvent", "contributor", element.getContributor().get(i), i);
1724    for (int i = 0; i < element.getSuspectEntity().size(); i++)
1725      composeAdverseEventAdverseEventSuspectEntityComponent(t, "AdverseEvent", "suspectEntity", element.getSuspectEntity().get(i), i);
1726    for (int i = 0; i < element.getSubjectMedicalHistory().size(); i++)
1727      composeReference(t, "AdverseEvent", "subjectMedicalHistory", element.getSubjectMedicalHistory().get(i), i);
1728    for (int i = 0; i < element.getReferenceDocument().size(); i++)
1729      composeReference(t, "AdverseEvent", "referenceDocument", element.getReferenceDocument().get(i), i);
1730    for (int i = 0; i < element.getStudy().size(); i++)
1731      composeReference(t, "AdverseEvent", "study", element.getStudy().get(i), i);
1732  }
1733
1734  protected void composeAdverseEventAdverseEventSuspectEntityComponent(Complex parent, String parentType, String name, AdverseEvent.AdverseEventSuspectEntityComponent element, int index) {
1735    if (element == null) 
1736      return;
1737    Complex t;
1738    if (Utilities.noString(parentType))
1739      t = parent;
1740    else {
1741      t = parent.predicate("fhir:"+parentType+'.'+name);
1742    }
1743    composeBackboneElement(t, "suspectEntity", name, element, index);
1744    if (element.hasInstance())
1745      composeReference(t, "AdverseEvent", "instance", element.getInstance(), -1);
1746    for (int i = 0; i < element.getCausality().size(); i++)
1747      composeAdverseEventAdverseEventSuspectEntityCausalityComponent(t, "AdverseEvent", "causality", element.getCausality().get(i), i);
1748  }
1749
1750  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponent(Complex parent, String parentType, String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element, int index) {
1751    if (element == null) 
1752      return;
1753    Complex t;
1754    if (Utilities.noString(parentType))
1755      t = parent;
1756    else {
1757      t = parent.predicate("fhir:"+parentType+'.'+name);
1758    }
1759    composeBackboneElement(t, "causality", name, element, index);
1760    if (element.hasAssessment())
1761      composeCodeableConcept(t, "AdverseEvent", "assessment", element.getAssessment(), -1);
1762    if (element.hasProductRelatednessElement())
1763      composeString(t, "AdverseEvent", "productRelatedness", element.getProductRelatednessElement(), -1);
1764    if (element.hasAuthor())
1765      composeReference(t, "AdverseEvent", "author", element.getAuthor(), -1);
1766    if (element.hasMethod())
1767      composeCodeableConcept(t, "AdverseEvent", "method", element.getMethod(), -1);
1768  }
1769
1770  protected void composeAllergyIntolerance(Complex parent, String parentType, String name, AllergyIntolerance element, int index) {
1771    if (element == null) 
1772      return;
1773    Complex t;
1774    if (Utilities.noString(parentType))
1775      t = parent;
1776    else {
1777      t = parent.predicate("fhir:"+parentType+'.'+name);
1778    }
1779    composeDomainResource(t, "AllergyIntolerance", name, element, index);
1780    for (int i = 0; i < element.getIdentifier().size(); i++)
1781      composeIdentifier(t, "AllergyIntolerance", "identifier", element.getIdentifier().get(i), i);
1782    if (element.hasClinicalStatusElement())
1783      composeEnum(t, "AllergyIntolerance", "clinicalStatus", element.getClinicalStatusElement(), -1);
1784    if (element.hasVerificationStatusElement())
1785      composeEnum(t, "AllergyIntolerance", "verificationStatus", element.getVerificationStatusElement(), -1);
1786    if (element.hasTypeElement())
1787      composeEnum(t, "AllergyIntolerance", "type", element.getTypeElement(), -1);
1788    for (int i = 0; i < element.getCategory().size(); i++)
1789      composeEnum(t, "AllergyIntolerance", "category", element.getCategory().get(i), i);
1790    if (element.hasCriticalityElement())
1791      composeEnum(t, "AllergyIntolerance", "criticality", element.getCriticalityElement(), -1);
1792    if (element.hasCode())
1793      composeCodeableConcept(t, "AllergyIntolerance", "code", element.getCode(), -1);
1794    if (element.hasPatient())
1795      composeReference(t, "AllergyIntolerance", "patient", element.getPatient(), -1);
1796    if (element.hasEncounter())
1797      composeReference(t, "AllergyIntolerance", "encounter", element.getEncounter(), -1);
1798    if (element.hasOnset())
1799      composeType(t, "AllergyIntolerance", "onset", element.getOnset(), -1);
1800    if (element.hasRecordedDateElement())
1801      composeDateTime(t, "AllergyIntolerance", "recordedDate", element.getRecordedDateElement(), -1);
1802    if (element.hasRecorder())
1803      composeReference(t, "AllergyIntolerance", "recorder", element.getRecorder(), -1);
1804    if (element.hasAsserter())
1805      composeReference(t, "AllergyIntolerance", "asserter", element.getAsserter(), -1);
1806    if (element.hasLastOccurrenceElement())
1807      composeDateTime(t, "AllergyIntolerance", "lastOccurrence", element.getLastOccurrenceElement(), -1);
1808    for (int i = 0; i < element.getNote().size(); i++)
1809      composeAnnotation(t, "AllergyIntolerance", "note", element.getNote().get(i), i);
1810    for (int i = 0; i < element.getReaction().size(); i++)
1811      composeAllergyIntoleranceAllergyIntoleranceReactionComponent(t, "AllergyIntolerance", "reaction", element.getReaction().get(i), i);
1812  }
1813
1814  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(Complex parent, String parentType, String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element, int index) {
1815    if (element == null) 
1816      return;
1817    Complex t;
1818    if (Utilities.noString(parentType))
1819      t = parent;
1820    else {
1821      t = parent.predicate("fhir:"+parentType+'.'+name);
1822    }
1823    composeBackboneElement(t, "reaction", name, element, index);
1824    if (element.hasSubstance())
1825      composeCodeableConcept(t, "AllergyIntolerance", "substance", element.getSubstance(), -1);
1826    for (int i = 0; i < element.getManifestation().size(); i++)
1827      composeCodeableConcept(t, "AllergyIntolerance", "manifestation", element.getManifestation().get(i), i);
1828    if (element.hasDescriptionElement())
1829      composeString(t, "AllergyIntolerance", "description", element.getDescriptionElement(), -1);
1830    if (element.hasOnsetElement())
1831      composeDateTime(t, "AllergyIntolerance", "onset", element.getOnsetElement(), -1);
1832    if (element.hasSeverityElement())
1833      composeEnum(t, "AllergyIntolerance", "severity", element.getSeverityElement(), -1);
1834    if (element.hasExposureRoute())
1835      composeCodeableConcept(t, "AllergyIntolerance", "exposureRoute", element.getExposureRoute(), -1);
1836    for (int i = 0; i < element.getNote().size(); i++)
1837      composeAnnotation(t, "AllergyIntolerance", "note", element.getNote().get(i), i);
1838  }
1839
1840  protected void composeAppointment(Complex parent, String parentType, String name, Appointment element, int index) {
1841    if (element == null) 
1842      return;
1843    Complex t;
1844    if (Utilities.noString(parentType))
1845      t = parent;
1846    else {
1847      t = parent.predicate("fhir:"+parentType+'.'+name);
1848    }
1849    composeDomainResource(t, "Appointment", name, element, index);
1850    for (int i = 0; i < element.getIdentifier().size(); i++)
1851      composeIdentifier(t, "Appointment", "identifier", element.getIdentifier().get(i), i);
1852    if (element.hasStatusElement())
1853      composeEnum(t, "Appointment", "status", element.getStatusElement(), -1);
1854    for (int i = 0; i < element.getServiceCategory().size(); i++)
1855      composeCodeableConcept(t, "Appointment", "serviceCategory", element.getServiceCategory().get(i), i);
1856    for (int i = 0; i < element.getServiceType().size(); i++)
1857      composeCodeableConcept(t, "Appointment", "serviceType", element.getServiceType().get(i), i);
1858    for (int i = 0; i < element.getSpecialty().size(); i++)
1859      composeCodeableConcept(t, "Appointment", "specialty", element.getSpecialty().get(i), i);
1860    if (element.hasAppointmentType())
1861      composeCodeableConcept(t, "Appointment", "appointmentType", element.getAppointmentType(), -1);
1862    for (int i = 0; i < element.getReason().size(); i++)
1863      composeCodeableConcept(t, "Appointment", "reason", element.getReason().get(i), i);
1864    for (int i = 0; i < element.getIndication().size(); i++)
1865      composeReference(t, "Appointment", "indication", element.getIndication().get(i), i);
1866    if (element.hasPriorityElement())
1867      composeUnsignedInt(t, "Appointment", "priority", element.getPriorityElement(), -1);
1868    if (element.hasDescriptionElement())
1869      composeString(t, "Appointment", "description", element.getDescriptionElement(), -1);
1870    for (int i = 0; i < element.getSupportingInformation().size(); i++)
1871      composeReference(t, "Appointment", "supportingInformation", element.getSupportingInformation().get(i), i);
1872    if (element.hasStartElement())
1873      composeInstant(t, "Appointment", "start", element.getStartElement(), -1);
1874    if (element.hasEndElement())
1875      composeInstant(t, "Appointment", "end", element.getEndElement(), -1);
1876    if (element.hasMinutesDurationElement())
1877      composePositiveInt(t, "Appointment", "minutesDuration", element.getMinutesDurationElement(), -1);
1878    for (int i = 0; i < element.getSlot().size(); i++)
1879      composeReference(t, "Appointment", "slot", element.getSlot().get(i), i);
1880    if (element.hasCreatedElement())
1881      composeDateTime(t, "Appointment", "created", element.getCreatedElement(), -1);
1882    if (element.hasCommentElement())
1883      composeString(t, "Appointment", "comment", element.getCommentElement(), -1);
1884    if (element.hasPatientInstructionElement())
1885      composeString(t, "Appointment", "patientInstruction", element.getPatientInstructionElement(), -1);
1886    for (int i = 0; i < element.getBasedOn().size(); i++)
1887      composeReference(t, "Appointment", "basedOn", element.getBasedOn().get(i), i);
1888    for (int i = 0; i < element.getParticipant().size(); i++)
1889      composeAppointmentAppointmentParticipantComponent(t, "Appointment", "participant", element.getParticipant().get(i), i);
1890    for (int i = 0; i < element.getRequestedPeriod().size(); i++)
1891      composePeriod(t, "Appointment", "requestedPeriod", element.getRequestedPeriod().get(i), i);
1892  }
1893
1894  protected void composeAppointmentAppointmentParticipantComponent(Complex parent, String parentType, String name, Appointment.AppointmentParticipantComponent element, int index) {
1895    if (element == null) 
1896      return;
1897    Complex t;
1898    if (Utilities.noString(parentType))
1899      t = parent;
1900    else {
1901      t = parent.predicate("fhir:"+parentType+'.'+name);
1902    }
1903    composeBackboneElement(t, "participant", name, element, index);
1904    for (int i = 0; i < element.getType().size(); i++)
1905      composeCodeableConcept(t, "Appointment", "type", element.getType().get(i), i);
1906    if (element.hasActor())
1907      composeReference(t, "Appointment", "actor", element.getActor(), -1);
1908    if (element.hasRequiredElement())
1909      composeEnum(t, "Appointment", "required", element.getRequiredElement(), -1);
1910    if (element.hasStatusElement())
1911      composeEnum(t, "Appointment", "status", element.getStatusElement(), -1);
1912    if (element.hasPeriod())
1913      composePeriod(t, "Appointment", "period", element.getPeriod(), -1);
1914  }
1915
1916  protected void composeAppointmentResponse(Complex parent, String parentType, String name, AppointmentResponse element, int index) {
1917    if (element == null) 
1918      return;
1919    Complex t;
1920    if (Utilities.noString(parentType))
1921      t = parent;
1922    else {
1923      t = parent.predicate("fhir:"+parentType+'.'+name);
1924    }
1925    composeDomainResource(t, "AppointmentResponse", name, element, index);
1926    for (int i = 0; i < element.getIdentifier().size(); i++)
1927      composeIdentifier(t, "AppointmentResponse", "identifier", element.getIdentifier().get(i), i);
1928    if (element.hasAppointment())
1929      composeReference(t, "AppointmentResponse", "appointment", element.getAppointment(), -1);
1930    if (element.hasStartElement())
1931      composeInstant(t, "AppointmentResponse", "start", element.getStartElement(), -1);
1932    if (element.hasEndElement())
1933      composeInstant(t, "AppointmentResponse", "end", element.getEndElement(), -1);
1934    for (int i = 0; i < element.getParticipantType().size(); i++)
1935      composeCodeableConcept(t, "AppointmentResponse", "participantType", element.getParticipantType().get(i), i);
1936    if (element.hasActor())
1937      composeReference(t, "AppointmentResponse", "actor", element.getActor(), -1);
1938    if (element.hasParticipantStatusElement())
1939      composeEnum(t, "AppointmentResponse", "participantStatus", element.getParticipantStatusElement(), -1);
1940    if (element.hasCommentElement())
1941      composeString(t, "AppointmentResponse", "comment", element.getCommentElement(), -1);
1942  }
1943
1944  protected void composeAuditEvent(Complex parent, String parentType, String name, AuditEvent element, int index) {
1945    if (element == null) 
1946      return;
1947    Complex t;
1948    if (Utilities.noString(parentType))
1949      t = parent;
1950    else {
1951      t = parent.predicate("fhir:"+parentType+'.'+name);
1952    }
1953    composeDomainResource(t, "AuditEvent", name, element, index);
1954    if (element.hasType())
1955      composeCoding(t, "AuditEvent", "type", element.getType(), -1);
1956    for (int i = 0; i < element.getSubtype().size(); i++)
1957      composeCoding(t, "AuditEvent", "subtype", element.getSubtype().get(i), i);
1958    if (element.hasActionElement())
1959      composeEnum(t, "AuditEvent", "action", element.getActionElement(), -1);
1960    if (element.hasPeriod())
1961      composePeriod(t, "AuditEvent", "period", element.getPeriod(), -1);
1962    if (element.hasRecordedElement())
1963      composeInstant(t, "AuditEvent", "recorded", element.getRecordedElement(), -1);
1964    if (element.hasOutcomeElement())
1965      composeEnum(t, "AuditEvent", "outcome", element.getOutcomeElement(), -1);
1966    if (element.hasOutcomeDescElement())
1967      composeString(t, "AuditEvent", "outcomeDesc", element.getOutcomeDescElement(), -1);
1968    for (int i = 0; i < element.getPurposeOfEvent().size(); i++)
1969      composeCodeableConcept(t, "AuditEvent", "purposeOfEvent", element.getPurposeOfEvent().get(i), i);
1970    for (int i = 0; i < element.getAgent().size(); i++)
1971      composeAuditEventAuditEventAgentComponent(t, "AuditEvent", "agent", element.getAgent().get(i), i);
1972    if (element.hasSource())
1973      composeAuditEventAuditEventSourceComponent(t, "AuditEvent", "source", element.getSource(), -1);
1974    for (int i = 0; i < element.getEntity().size(); i++)
1975      composeAuditEventAuditEventEntityComponent(t, "AuditEvent", "entity", element.getEntity().get(i), i);
1976  }
1977
1978  protected void composeAuditEventAuditEventAgentComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventAgentComponent element, int index) {
1979    if (element == null) 
1980      return;
1981    Complex t;
1982    if (Utilities.noString(parentType))
1983      t = parent;
1984    else {
1985      t = parent.predicate("fhir:"+parentType+'.'+name);
1986    }
1987    composeBackboneElement(t, "agent", name, element, index);
1988    if (element.hasType())
1989      composeCodeableConcept(t, "AuditEvent", "type", element.getType(), -1);
1990    for (int i = 0; i < element.getRole().size(); i++)
1991      composeCodeableConcept(t, "AuditEvent", "role", element.getRole().get(i), i);
1992    if (element.hasWho())
1993      composeReference(t, "AuditEvent", "who", element.getWho(), -1);
1994    if (element.hasAltIdElement())
1995      composeString(t, "AuditEvent", "altId", element.getAltIdElement(), -1);
1996    if (element.hasNameElement())
1997      composeString(t, "AuditEvent", "name", element.getNameElement(), -1);
1998    if (element.hasRequestorElement())
1999      composeBoolean(t, "AuditEvent", "requestor", element.getRequestorElement(), -1);
2000    if (element.hasLocation())
2001      composeReference(t, "AuditEvent", "location", element.getLocation(), -1);
2002    for (int i = 0; i < element.getPolicy().size(); i++)
2003      composeUri(t, "AuditEvent", "policy", element.getPolicy().get(i), i);
2004    if (element.hasMedia())
2005      composeCoding(t, "AuditEvent", "media", element.getMedia(), -1);
2006    if (element.hasNetwork())
2007      composeAuditEventAuditEventAgentNetworkComponent(t, "AuditEvent", "network", element.getNetwork(), -1);
2008    for (int i = 0; i < element.getPurposeOfUse().size(); i++)
2009      composeCodeableConcept(t, "AuditEvent", "purposeOfUse", element.getPurposeOfUse().get(i), i);
2010  }
2011
2012  protected void composeAuditEventAuditEventAgentNetworkComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventAgentNetworkComponent element, int index) {
2013    if (element == null) 
2014      return;
2015    Complex t;
2016    if (Utilities.noString(parentType))
2017      t = parent;
2018    else {
2019      t = parent.predicate("fhir:"+parentType+'.'+name);
2020    }
2021    composeBackboneElement(t, "network", name, element, index);
2022    if (element.hasAddressElement())
2023      composeString(t, "AuditEvent", "address", element.getAddressElement(), -1);
2024    if (element.hasTypeElement())
2025      composeEnum(t, "AuditEvent", "type", element.getTypeElement(), -1);
2026  }
2027
2028  protected void composeAuditEventAuditEventSourceComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventSourceComponent element, int index) {
2029    if (element == null) 
2030      return;
2031    Complex t;
2032    if (Utilities.noString(parentType))
2033      t = parent;
2034    else {
2035      t = parent.predicate("fhir:"+parentType+'.'+name);
2036    }
2037    composeBackboneElement(t, "source", name, element, index);
2038    if (element.hasSiteElement())
2039      composeString(t, "AuditEvent", "site", element.getSiteElement(), -1);
2040    if (element.hasObserver())
2041      composeReference(t, "AuditEvent", "observer", element.getObserver(), -1);
2042    for (int i = 0; i < element.getType().size(); i++)
2043      composeCoding(t, "AuditEvent", "type", element.getType().get(i), i);
2044  }
2045
2046  protected void composeAuditEventAuditEventEntityComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventEntityComponent element, int index) {
2047    if (element == null) 
2048      return;
2049    Complex t;
2050    if (Utilities.noString(parentType))
2051      t = parent;
2052    else {
2053      t = parent.predicate("fhir:"+parentType+'.'+name);
2054    }
2055    composeBackboneElement(t, "entity", name, element, index);
2056    if (element.hasWhat())
2057      composeReference(t, "AuditEvent", "what", element.getWhat(), -1);
2058    if (element.hasType())
2059      composeCoding(t, "AuditEvent", "type", element.getType(), -1);
2060    if (element.hasRole())
2061      composeCoding(t, "AuditEvent", "role", element.getRole(), -1);
2062    if (element.hasLifecycle())
2063      composeCoding(t, "AuditEvent", "lifecycle", element.getLifecycle(), -1);
2064    for (int i = 0; i < element.getSecurityLabel().size(); i++)
2065      composeCoding(t, "AuditEvent", "securityLabel", element.getSecurityLabel().get(i), i);
2066    if (element.hasNameElement())
2067      composeString(t, "AuditEvent", "name", element.getNameElement(), -1);
2068    if (element.hasDescriptionElement())
2069      composeString(t, "AuditEvent", "description", element.getDescriptionElement(), -1);
2070    if (element.hasQueryElement())
2071      composeBase64Binary(t, "AuditEvent", "query", element.getQueryElement(), -1);
2072    for (int i = 0; i < element.getDetail().size(); i++)
2073      composeAuditEventAuditEventEntityDetailComponent(t, "AuditEvent", "detail", element.getDetail().get(i), i);
2074  }
2075
2076  protected void composeAuditEventAuditEventEntityDetailComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventEntityDetailComponent element, int index) {
2077    if (element == null) 
2078      return;
2079    Complex t;
2080    if (Utilities.noString(parentType))
2081      t = parent;
2082    else {
2083      t = parent.predicate("fhir:"+parentType+'.'+name);
2084    }
2085    composeBackboneElement(t, "detail", name, element, index);
2086    if (element.hasTypeElement())
2087      composeString(t, "AuditEvent", "type", element.getTypeElement(), -1);
2088    if (element.hasValue())
2089      composeType(t, "AuditEvent", "value", element.getValue(), -1);
2090  }
2091
2092  protected void composeBasic(Complex parent, String parentType, String name, Basic element, int index) {
2093    if (element == null) 
2094      return;
2095    Complex t;
2096    if (Utilities.noString(parentType))
2097      t = parent;
2098    else {
2099      t = parent.predicate("fhir:"+parentType+'.'+name);
2100    }
2101    composeDomainResource(t, "Basic", name, element, index);
2102    for (int i = 0; i < element.getIdentifier().size(); i++)
2103      composeIdentifier(t, "Basic", "identifier", element.getIdentifier().get(i), i);
2104    if (element.hasCode())
2105      composeCodeableConcept(t, "Basic", "code", element.getCode(), -1);
2106    if (element.hasSubject())
2107      composeReference(t, "Basic", "subject", element.getSubject(), -1);
2108    if (element.hasCreatedElement())
2109      composeDate(t, "Basic", "created", element.getCreatedElement(), -1);
2110    if (element.hasAuthor())
2111      composeReference(t, "Basic", "author", element.getAuthor(), -1);
2112  }
2113
2114  protected void composeBinary(Complex parent, String parentType, String name, Binary element, int index) {
2115    if (element == null) 
2116      return;
2117    Complex t;
2118    if (Utilities.noString(parentType))
2119      t = parent;
2120    else {
2121      t = parent.predicate("fhir:"+parentType+'.'+name);
2122    }
2123    composeResource(t, "Binary", name, element, index);
2124    if (element.hasContentTypeElement())
2125      composeCode(t, "Binary", "contentType", element.getContentTypeElement(), -1);
2126    if (element.hasSecurityContext())
2127      composeReference(t, "Binary", "securityContext", element.getSecurityContext(), -1);
2128    if (element.hasDataElement())
2129      composeBase64Binary(t, "Binary", "data", element.getDataElement(), -1);
2130  }
2131
2132  protected void composeBiologicallyDerivedProduct(Complex parent, String parentType, String name, BiologicallyDerivedProduct element, int index) {
2133    if (element == null) 
2134      return;
2135    Complex t;
2136    if (Utilities.noString(parentType))
2137      t = parent;
2138    else {
2139      t = parent.predicate("fhir:"+parentType+'.'+name);
2140    }
2141    composeDomainResource(t, "BiologicallyDerivedProduct", name, element, index);
2142    for (int i = 0; i < element.getIdentifier().size(); i++)
2143      composeIdentifier(t, "BiologicallyDerivedProduct", "identifier", element.getIdentifier().get(i), i);
2144    if (element.hasProductCategoryElement())
2145      composeEnum(t, "BiologicallyDerivedProduct", "productCategory", element.getProductCategoryElement(), -1);
2146    if (element.hasProductCode())
2147      composeCodeableConcept(t, "BiologicallyDerivedProduct", "productCode", element.getProductCode(), -1);
2148    if (element.hasStatusElement())
2149      composeEnum(t, "BiologicallyDerivedProduct", "status", element.getStatusElement(), -1);
2150    for (int i = 0; i < element.getRequest().size(); i++)
2151      composeReference(t, "BiologicallyDerivedProduct", "request", element.getRequest().get(i), i);
2152    if (element.hasQuantityElement())
2153      composeInteger(t, "BiologicallyDerivedProduct", "quantity", element.getQuantityElement(), -1);
2154    if (element.hasParent())
2155      composeReference(t, "BiologicallyDerivedProduct", "parent", element.getParent(), -1);
2156    if (element.hasCollection())
2157      composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(t, "BiologicallyDerivedProduct", "collection", element.getCollection(), -1);
2158    for (int i = 0; i < element.getProcessing().size(); i++)
2159      composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(t, "BiologicallyDerivedProduct", "processing", element.getProcessing().get(i), i);
2160    if (element.hasManipulation())
2161      composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(t, "BiologicallyDerivedProduct", "manipulation", element.getManipulation(), -1);
2162    for (int i = 0; i < element.getStorage().size(); i++)
2163      composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(t, "BiologicallyDerivedProduct", "storage", element.getStorage().get(i), i);
2164  }
2165
2166  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element, int index) {
2167    if (element == null) 
2168      return;
2169    Complex t;
2170    if (Utilities.noString(parentType))
2171      t = parent;
2172    else {
2173      t = parent.predicate("fhir:"+parentType+'.'+name);
2174    }
2175    composeBackboneElement(t, "collection", name, element, index);
2176    if (element.hasCollector())
2177      composeReference(t, "BiologicallyDerivedProduct", "collector", element.getCollector(), -1);
2178    if (element.hasSource())
2179      composeReference(t, "BiologicallyDerivedProduct", "source", element.getSource(), -1);
2180    if (element.hasCollected())
2181      composeType(t, "BiologicallyDerivedProduct", "collected", element.getCollected(), -1);
2182  }
2183
2184  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element, int index) {
2185    if (element == null) 
2186      return;
2187    Complex t;
2188    if (Utilities.noString(parentType))
2189      t = parent;
2190    else {
2191      t = parent.predicate("fhir:"+parentType+'.'+name);
2192    }
2193    composeBackboneElement(t, "processing", name, element, index);
2194    if (element.hasDescriptionElement())
2195      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2196    if (element.hasProcedure())
2197      composeCodeableConcept(t, "BiologicallyDerivedProduct", "procedure", element.getProcedure(), -1);
2198    if (element.hasAdditive())
2199      composeReference(t, "BiologicallyDerivedProduct", "additive", element.getAdditive(), -1);
2200    if (element.hasTime())
2201      composeType(t, "BiologicallyDerivedProduct", "time", element.getTime(), -1);
2202  }
2203
2204  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element, int index) {
2205    if (element == null) 
2206      return;
2207    Complex t;
2208    if (Utilities.noString(parentType))
2209      t = parent;
2210    else {
2211      t = parent.predicate("fhir:"+parentType+'.'+name);
2212    }
2213    composeBackboneElement(t, "manipulation", name, element, index);
2214    if (element.hasDescriptionElement())
2215      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2216    if (element.hasTime())
2217      composeType(t, "BiologicallyDerivedProduct", "time", element.getTime(), -1);
2218  }
2219
2220  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element, int index) {
2221    if (element == null) 
2222      return;
2223    Complex t;
2224    if (Utilities.noString(parentType))
2225      t = parent;
2226    else {
2227      t = parent.predicate("fhir:"+parentType+'.'+name);
2228    }
2229    composeBackboneElement(t, "storage", name, element, index);
2230    if (element.hasDescriptionElement())
2231      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2232    if (element.hasTemperatureElement())
2233      composeDecimal(t, "BiologicallyDerivedProduct", "temperature", element.getTemperatureElement(), -1);
2234    if (element.hasScaleElement())
2235      composeEnum(t, "BiologicallyDerivedProduct", "scale", element.getScaleElement(), -1);
2236    if (element.hasDuration())
2237      composePeriod(t, "BiologicallyDerivedProduct", "duration", element.getDuration(), -1);
2238  }
2239
2240  protected void composeBodyStructure(Complex parent, String parentType, String name, BodyStructure element, int index) {
2241    if (element == null) 
2242      return;
2243    Complex t;
2244    if (Utilities.noString(parentType))
2245      t = parent;
2246    else {
2247      t = parent.predicate("fhir:"+parentType+'.'+name);
2248    }
2249    composeDomainResource(t, "BodyStructure", name, element, index);
2250    for (int i = 0; i < element.getIdentifier().size(); i++)
2251      composeIdentifier(t, "BodyStructure", "identifier", element.getIdentifier().get(i), i);
2252    if (element.hasActiveElement())
2253      composeBoolean(t, "BodyStructure", "active", element.getActiveElement(), -1);
2254    if (element.hasMorphology())
2255      composeCodeableConcept(t, "BodyStructure", "morphology", element.getMorphology(), -1);
2256    if (element.hasLocation())
2257      composeCodeableConcept(t, "BodyStructure", "location", element.getLocation(), -1);
2258    for (int i = 0; i < element.getLocationQualifier().size(); i++)
2259      composeCodeableConcept(t, "BodyStructure", "locationQualifier", element.getLocationQualifier().get(i), i);
2260    if (element.hasDescriptionElement())
2261      composeString(t, "BodyStructure", "description", element.getDescriptionElement(), -1);
2262    for (int i = 0; i < element.getImage().size(); i++)
2263      composeAttachment(t, "BodyStructure", "image", element.getImage().get(i), i);
2264    if (element.hasPatient())
2265      composeReference(t, "BodyStructure", "patient", element.getPatient(), -1);
2266  }
2267
2268  protected void composeBundle(Complex parent, String parentType, String name, Bundle 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    composeResource(t, "Bundle", name, element, index);
2278    if (element.hasIdentifier())
2279      composeIdentifier(t, "Bundle", "identifier", element.getIdentifier(), -1);
2280    if (element.hasTypeElement())
2281      composeEnum(t, "Bundle", "type", element.getTypeElement(), -1);
2282    if (element.hasTimestampElement())
2283      composeInstant(t, "Bundle", "timestamp", element.getTimestampElement(), -1);
2284    if (element.hasTotalElement())
2285      composeUnsignedInt(t, "Bundle", "total", element.getTotalElement(), -1);
2286    for (int i = 0; i < element.getLink().size(); i++)
2287      composeBundleBundleLinkComponent(t, "Bundle", "link", element.getLink().get(i), i);
2288    for (int i = 0; i < element.getEntry().size(); i++)
2289      composeBundleBundleEntryComponent(t, "Bundle", "entry", element.getEntry().get(i), i);
2290    if (element.hasSignature())
2291      composeSignature(t, "Bundle", "signature", element.getSignature(), -1);
2292  }
2293
2294  protected void composeBundleBundleLinkComponent(Complex parent, String parentType, String name, Bundle.BundleLinkComponent element, int index) {
2295    if (element == null) 
2296      return;
2297    Complex t;
2298    if (Utilities.noString(parentType))
2299      t = parent;
2300    else {
2301      t = parent.predicate("fhir:"+parentType+'.'+name);
2302    }
2303    composeBackboneElement(t, "link", name, element, index);
2304    if (element.hasRelationElement())
2305      composeString(t, "Bundle", "relation", element.getRelationElement(), -1);
2306    if (element.hasUrlElement())
2307      composeUri(t, "Bundle", "url", element.getUrlElement(), -1);
2308  }
2309
2310  protected void composeBundleBundleEntryComponent(Complex parent, String parentType, String name, Bundle.BundleEntryComponent element, int index) {
2311    if (element == null) 
2312      return;
2313    Complex t;
2314    if (Utilities.noString(parentType))
2315      t = parent;
2316    else {
2317      t = parent.predicate("fhir:"+parentType+'.'+name);
2318    }
2319    composeBackboneElement(t, "entry", name, element, index);
2320    for (int i = 0; i < element.getLink().size(); i++)
2321      composeBundleBundleLinkComponent(t, "Bundle", "link", element.getLink().get(i), i);
2322    if (element.hasFullUrlElement())
2323      composeUri(t, "Bundle", "fullUrl", element.getFullUrlElement(), -1);
2324    if (element.hasResource())
2325      composeResource(t, "Bundle", "resource", element.getResource(), -1);
2326    if (element.hasSearch())
2327      composeBundleBundleEntrySearchComponent(t, "Bundle", "search", element.getSearch(), -1);
2328    if (element.hasRequest())
2329      composeBundleBundleEntryRequestComponent(t, "Bundle", "request", element.getRequest(), -1);
2330    if (element.hasResponse())
2331      composeBundleBundleEntryResponseComponent(t, "Bundle", "response", element.getResponse(), -1);
2332  }
2333
2334  protected void composeBundleBundleEntrySearchComponent(Complex parent, String parentType, String name, Bundle.BundleEntrySearchComponent element, int index) {
2335    if (element == null) 
2336      return;
2337    Complex t;
2338    if (Utilities.noString(parentType))
2339      t = parent;
2340    else {
2341      t = parent.predicate("fhir:"+parentType+'.'+name);
2342    }
2343    composeBackboneElement(t, "search", name, element, index);
2344    if (element.hasModeElement())
2345      composeEnum(t, "Bundle", "mode", element.getModeElement(), -1);
2346    if (element.hasScoreElement())
2347      composeDecimal(t, "Bundle", "score", element.getScoreElement(), -1);
2348  }
2349
2350  protected void composeBundleBundleEntryRequestComponent(Complex parent, String parentType, String name, Bundle.BundleEntryRequestComponent element, int index) {
2351    if (element == null) 
2352      return;
2353    Complex t;
2354    if (Utilities.noString(parentType))
2355      t = parent;
2356    else {
2357      t = parent.predicate("fhir:"+parentType+'.'+name);
2358    }
2359    composeBackboneElement(t, "request", name, element, index);
2360    if (element.hasMethodElement())
2361      composeEnum(t, "Bundle", "method", element.getMethodElement(), -1);
2362    if (element.hasUrlElement())
2363      composeUri(t, "Bundle", "url", element.getUrlElement(), -1);
2364    if (element.hasIfNoneMatchElement())
2365      composeString(t, "Bundle", "ifNoneMatch", element.getIfNoneMatchElement(), -1);
2366    if (element.hasIfModifiedSinceElement())
2367      composeInstant(t, "Bundle", "ifModifiedSince", element.getIfModifiedSinceElement(), -1);
2368    if (element.hasIfMatchElement())
2369      composeString(t, "Bundle", "ifMatch", element.getIfMatchElement(), -1);
2370    if (element.hasIfNoneExistElement())
2371      composeString(t, "Bundle", "ifNoneExist", element.getIfNoneExistElement(), -1);
2372  }
2373
2374  protected void composeBundleBundleEntryResponseComponent(Complex parent, String parentType, String name, Bundle.BundleEntryResponseComponent element, int index) {
2375    if (element == null) 
2376      return;
2377    Complex t;
2378    if (Utilities.noString(parentType))
2379      t = parent;
2380    else {
2381      t = parent.predicate("fhir:"+parentType+'.'+name);
2382    }
2383    composeBackboneElement(t, "response", name, element, index);
2384    if (element.hasStatusElement())
2385      composeString(t, "Bundle", "status", element.getStatusElement(), -1);
2386    if (element.hasLocationElement())
2387      composeUri(t, "Bundle", "location", element.getLocationElement(), -1);
2388    if (element.hasEtagElement())
2389      composeString(t, "Bundle", "etag", element.getEtagElement(), -1);
2390    if (element.hasLastModifiedElement())
2391      composeInstant(t, "Bundle", "lastModified", element.getLastModifiedElement(), -1);
2392    if (element.hasOutcome())
2393      composeResource(t, "Bundle", "outcome", element.getOutcome(), -1);
2394  }
2395
2396  protected void composeCapabilityStatement(Complex parent, String parentType, String name, CapabilityStatement element, int index) {
2397    if (element == null) 
2398      return;
2399    Complex t;
2400    if (Utilities.noString(parentType))
2401      t = parent;
2402    else {
2403      t = parent.predicate("fhir:"+parentType+'.'+name);
2404    }
2405    composeDomainResource(t, "CapabilityStatement", name, element, index);
2406    if (element.hasUrlElement())
2407      composeUri(t, "CapabilityStatement", "url", element.getUrlElement(), -1);
2408    if (element.hasVersionElement())
2409      composeString(t, "CapabilityStatement", "version", element.getVersionElement(), -1);
2410    if (element.hasNameElement())
2411      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2412    if (element.hasTitleElement())
2413      composeString(t, "CapabilityStatement", "title", element.getTitleElement(), -1);
2414    if (element.hasStatusElement())
2415      composeEnum(t, "CapabilityStatement", "status", element.getStatusElement(), -1);
2416    if (element.hasExperimentalElement())
2417      composeBoolean(t, "CapabilityStatement", "experimental", element.getExperimentalElement(), -1);
2418    if (element.hasDateElement())
2419      composeDateTime(t, "CapabilityStatement", "date", element.getDateElement(), -1);
2420    if (element.hasPublisherElement())
2421      composeString(t, "CapabilityStatement", "publisher", element.getPublisherElement(), -1);
2422    for (int i = 0; i < element.getContact().size(); i++)
2423      composeContactDetail(t, "CapabilityStatement", "contact", element.getContact().get(i), i);
2424    if (element.hasDescriptionElement())
2425      composeMarkdown(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2426    for (int i = 0; i < element.getUseContext().size(); i++)
2427      composeUsageContext(t, "CapabilityStatement", "useContext", element.getUseContext().get(i), i);
2428    for (int i = 0; i < element.getJurisdiction().size(); i++)
2429      composeCodeableConcept(t, "CapabilityStatement", "jurisdiction", element.getJurisdiction().get(i), i);
2430    if (element.hasPurposeElement())
2431      composeMarkdown(t, "CapabilityStatement", "purpose", element.getPurposeElement(), -1);
2432    if (element.hasCopyrightElement())
2433      composeMarkdown(t, "CapabilityStatement", "copyright", element.getCopyrightElement(), -1);
2434    if (element.hasKindElement())
2435      composeEnum(t, "CapabilityStatement", "kind", element.getKindElement(), -1);
2436    for (int i = 0; i < element.getInstantiates().size(); i++)
2437      composeCanonical(t, "CapabilityStatement", "instantiates", element.getInstantiates().get(i), i);
2438    for (int i = 0; i < element.getImports().size(); i++)
2439      composeCanonical(t, "CapabilityStatement", "imports", element.getImports().get(i), i);
2440    if (element.hasSoftware())
2441      composeCapabilityStatementCapabilityStatementSoftwareComponent(t, "CapabilityStatement", "software", element.getSoftware(), -1);
2442    if (element.hasImplementation())
2443      composeCapabilityStatementCapabilityStatementImplementationComponent(t, "CapabilityStatement", "implementation", element.getImplementation(), -1);
2444    if (element.hasFhirVersionElement())
2445      composeId(t, "CapabilityStatement", "fhirVersion", element.getFhirVersionElement(), -1);
2446    for (int i = 0; i < element.getFormat().size(); i++)
2447      composeCode(t, "CapabilityStatement", "format", element.getFormat().get(i), i);
2448    for (int i = 0; i < element.getPatchFormat().size(); i++)
2449      composeCode(t, "CapabilityStatement", "patchFormat", element.getPatchFormat().get(i), i);
2450    for (int i = 0; i < element.getImplementationGuide().size(); i++)
2451      composeCanonical(t, "CapabilityStatement", "implementationGuide", element.getImplementationGuide().get(i), i);
2452    for (int i = 0; i < element.getRest().size(); i++)
2453      composeCapabilityStatementCapabilityStatementRestComponent(t, "CapabilityStatement", "rest", element.getRest().get(i), i);
2454    for (int i = 0; i < element.getMessaging().size(); i++)
2455      composeCapabilityStatementCapabilityStatementMessagingComponent(t, "CapabilityStatement", "messaging", element.getMessaging().get(i), i);
2456    for (int i = 0; i < element.getDocument().size(); i++)
2457      composeCapabilityStatementCapabilityStatementDocumentComponent(t, "CapabilityStatement", "document", element.getDocument().get(i), i);
2458  }
2459
2460  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementSoftwareComponent element, int index) {
2461    if (element == null) 
2462      return;
2463    Complex t;
2464    if (Utilities.noString(parentType))
2465      t = parent;
2466    else {
2467      t = parent.predicate("fhir:"+parentType+'.'+name);
2468    }
2469    composeBackboneElement(t, "software", name, element, index);
2470    if (element.hasNameElement())
2471      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2472    if (element.hasVersionElement())
2473      composeString(t, "CapabilityStatement", "version", element.getVersionElement(), -1);
2474    if (element.hasReleaseDateElement())
2475      composeDateTime(t, "CapabilityStatement", "releaseDate", element.getReleaseDateElement(), -1);
2476  }
2477
2478  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementImplementationComponent element, int index) {
2479    if (element == null) 
2480      return;
2481    Complex t;
2482    if (Utilities.noString(parentType))
2483      t = parent;
2484    else {
2485      t = parent.predicate("fhir:"+parentType+'.'+name);
2486    }
2487    composeBackboneElement(t, "implementation", name, element, index);
2488    if (element.hasDescriptionElement())
2489      composeString(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2490    if (element.hasUrlElement())
2491      composeUrl(t, "CapabilityStatement", "url", element.getUrlElement(), -1);
2492    if (element.hasCustodian())
2493      composeReference(t, "CapabilityStatement", "custodian", element.getCustodian(), -1);
2494  }
2495
2496  protected void composeCapabilityStatementCapabilityStatementRestComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestComponent element, int index) {
2497    if (element == null) 
2498      return;
2499    Complex t;
2500    if (Utilities.noString(parentType))
2501      t = parent;
2502    else {
2503      t = parent.predicate("fhir:"+parentType+'.'+name);
2504    }
2505    composeBackboneElement(t, "rest", name, element, index);
2506    if (element.hasModeElement())
2507      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2508    if (element.hasDocumentationElement())
2509      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2510    if (element.hasSecurity())
2511      composeCapabilityStatementCapabilityStatementRestSecurityComponent(t, "CapabilityStatement", "security", element.getSecurity(), -1);
2512    for (int i = 0; i < element.getResource().size(); i++)
2513      composeCapabilityStatementCapabilityStatementRestResourceComponent(t, "CapabilityStatement", "resource", element.getResource().get(i), i);
2514    for (int i = 0; i < element.getInteraction().size(); i++)
2515      composeCapabilityStatementSystemInteractionComponent(t, "CapabilityStatement", "interaction", element.getInteraction().get(i), i);
2516    for (int i = 0; i < element.getSearchParam().size(); i++)
2517      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(t, "CapabilityStatement", "searchParam", element.getSearchParam().get(i), i);
2518    for (int i = 0; i < element.getOperation().size(); i++)
2519      composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(t, "CapabilityStatement", "operation", element.getOperation().get(i), i);
2520    for (int i = 0; i < element.getCompartment().size(); i++)
2521      composeCanonical(t, "CapabilityStatement", "compartment", element.getCompartment().get(i), i);
2522  }
2523
2524  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element, int index) {
2525    if (element == null) 
2526      return;
2527    Complex t;
2528    if (Utilities.noString(parentType))
2529      t = parent;
2530    else {
2531      t = parent.predicate("fhir:"+parentType+'.'+name);
2532    }
2533    composeBackboneElement(t, "security", name, element, index);
2534    if (element.hasCorsElement())
2535      composeBoolean(t, "CapabilityStatement", "cors", element.getCorsElement(), -1);
2536    for (int i = 0; i < element.getService().size(); i++)
2537      composeCodeableConcept(t, "CapabilityStatement", "service", element.getService().get(i), i);
2538    if (element.hasDescriptionElement())
2539      composeMarkdown(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2540  }
2541
2542  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceComponent element, int index) {
2543    if (element == null) 
2544      return;
2545    Complex t;
2546    if (Utilities.noString(parentType))
2547      t = parent;
2548    else {
2549      t = parent.predicate("fhir:"+parentType+'.'+name);
2550    }
2551    composeBackboneElement(t, "resource", name, element, index);
2552    if (element.hasTypeElement())
2553      composeCode(t, "CapabilityStatement", "type", element.getTypeElement(), -1);
2554    if (element.hasProfileElement())
2555      composeCanonical(t, "CapabilityStatement", "profile", element.getProfileElement(), -1);
2556    for (int i = 0; i < element.getSupportedProfile().size(); i++)
2557      composeCanonical(t, "CapabilityStatement", "supportedProfile", element.getSupportedProfile().get(i), i);
2558    if (element.hasDocumentationElement())
2559      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2560    for (int i = 0; i < element.getInteraction().size(); i++)
2561      composeCapabilityStatementResourceInteractionComponent(t, "CapabilityStatement", "interaction", element.getInteraction().get(i), i);
2562    if (element.hasVersioningElement())
2563      composeEnum(t, "CapabilityStatement", "versioning", element.getVersioningElement(), -1);
2564    if (element.hasReadHistoryElement())
2565      composeBoolean(t, "CapabilityStatement", "readHistory", element.getReadHistoryElement(), -1);
2566    if (element.hasUpdateCreateElement())
2567      composeBoolean(t, "CapabilityStatement", "updateCreate", element.getUpdateCreateElement(), -1);
2568    if (element.hasConditionalCreateElement())
2569      composeBoolean(t, "CapabilityStatement", "conditionalCreate", element.getConditionalCreateElement(), -1);
2570    if (element.hasConditionalReadElement())
2571      composeEnum(t, "CapabilityStatement", "conditionalRead", element.getConditionalReadElement(), -1);
2572    if (element.hasConditionalUpdateElement())
2573      composeBoolean(t, "CapabilityStatement", "conditionalUpdate", element.getConditionalUpdateElement(), -1);
2574    if (element.hasConditionalDeleteElement())
2575      composeEnum(t, "CapabilityStatement", "conditionalDelete", element.getConditionalDeleteElement(), -1);
2576    for (int i = 0; i < element.getReferencePolicy().size(); i++)
2577      composeEnum(t, "CapabilityStatement", "referencePolicy", element.getReferencePolicy().get(i), i);
2578    for (int i = 0; i < element.getSearchInclude().size(); i++)
2579      composeString(t, "CapabilityStatement", "searchInclude", element.getSearchInclude().get(i), i);
2580    for (int i = 0; i < element.getSearchRevInclude().size(); i++)
2581      composeString(t, "CapabilityStatement", "searchRevInclude", element.getSearchRevInclude().get(i), i);
2582    for (int i = 0; i < element.getSearchParam().size(); i++)
2583      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(t, "CapabilityStatement", "searchParam", element.getSearchParam().get(i), i);
2584    for (int i = 0; i < element.getOperation().size(); i++)
2585      composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(t, "CapabilityStatement", "operation", element.getOperation().get(i), i);
2586  }
2587
2588  protected void composeCapabilityStatementResourceInteractionComponent(Complex parent, String parentType, String name, CapabilityStatement.ResourceInteractionComponent element, int index) {
2589    if (element == null) 
2590      return;
2591    Complex t;
2592    if (Utilities.noString(parentType))
2593      t = parent;
2594    else {
2595      t = parent.predicate("fhir:"+parentType+'.'+name);
2596    }
2597    composeBackboneElement(t, "interaction", name, element, index);
2598    if (element.hasCodeElement())
2599      composeEnum(t, "CapabilityStatement", "code", element.getCodeElement(), -1);
2600    if (element.hasDocumentationElement())
2601      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2602  }
2603
2604  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element, int index) {
2605    if (element == null) 
2606      return;
2607    Complex t;
2608    if (Utilities.noString(parentType))
2609      t = parent;
2610    else {
2611      t = parent.predicate("fhir:"+parentType+'.'+name);
2612    }
2613    composeBackboneElement(t, "searchParam", name, element, index);
2614    if (element.hasNameElement())
2615      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2616    if (element.hasDefinitionElement())
2617      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2618    if (element.hasTypeElement())
2619      composeEnum(t, "CapabilityStatement", "type", element.getTypeElement(), -1);
2620    if (element.hasDocumentationElement())
2621      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2622  }
2623
2624  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element, int index) {
2625    if (element == null) 
2626      return;
2627    Complex t;
2628    if (Utilities.noString(parentType))
2629      t = parent;
2630    else {
2631      t = parent.predicate("fhir:"+parentType+'.'+name);
2632    }
2633    composeBackboneElement(t, "operation", name, element, index);
2634    if (element.hasNameElement())
2635      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2636    if (element.hasDefinitionElement())
2637      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2638    if (element.hasDocumentationElement())
2639      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2640  }
2641
2642  protected void composeCapabilityStatementSystemInteractionComponent(Complex parent, String parentType, String name, CapabilityStatement.SystemInteractionComponent element, int index) {
2643    if (element == null) 
2644      return;
2645    Complex t;
2646    if (Utilities.noString(parentType))
2647      t = parent;
2648    else {
2649      t = parent.predicate("fhir:"+parentType+'.'+name);
2650    }
2651    composeBackboneElement(t, "interaction", name, element, index);
2652    if (element.hasCodeElement())
2653      composeEnum(t, "CapabilityStatement", "code", element.getCodeElement(), -1);
2654    if (element.hasDocumentationElement())
2655      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2656  }
2657
2658  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingComponent element, int index) {
2659    if (element == null) 
2660      return;
2661    Complex t;
2662    if (Utilities.noString(parentType))
2663      t = parent;
2664    else {
2665      t = parent.predicate("fhir:"+parentType+'.'+name);
2666    }
2667    composeBackboneElement(t, "messaging", name, element, index);
2668    for (int i = 0; i < element.getEndpoint().size(); i++)
2669      composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(t, "CapabilityStatement", "endpoint", element.getEndpoint().get(i), i);
2670    if (element.hasReliableCacheElement())
2671      composeUnsignedInt(t, "CapabilityStatement", "reliableCache", element.getReliableCacheElement(), -1);
2672    if (element.hasDocumentationElement())
2673      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2674    for (int i = 0; i < element.getSupportedMessage().size(); i++)
2675      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(t, "CapabilityStatement", "supportedMessage", element.getSupportedMessage().get(i), i);
2676  }
2677
2678  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element, int index) {
2679    if (element == null) 
2680      return;
2681    Complex t;
2682    if (Utilities.noString(parentType))
2683      t = parent;
2684    else {
2685      t = parent.predicate("fhir:"+parentType+'.'+name);
2686    }
2687    composeBackboneElement(t, "endpoint", name, element, index);
2688    if (element.hasProtocol())
2689      composeCoding(t, "CapabilityStatement", "protocol", element.getProtocol(), -1);
2690    if (element.hasAddressElement())
2691      composeUrl(t, "CapabilityStatement", "address", element.getAddressElement(), -1);
2692  }
2693
2694  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element, int index) {
2695    if (element == null) 
2696      return;
2697    Complex t;
2698    if (Utilities.noString(parentType))
2699      t = parent;
2700    else {
2701      t = parent.predicate("fhir:"+parentType+'.'+name);
2702    }
2703    composeBackboneElement(t, "supportedMessage", name, element, index);
2704    if (element.hasModeElement())
2705      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2706    if (element.hasDefinitionElement())
2707      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2708  }
2709
2710  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementDocumentComponent element, int index) {
2711    if (element == null) 
2712      return;
2713    Complex t;
2714    if (Utilities.noString(parentType))
2715      t = parent;
2716    else {
2717      t = parent.predicate("fhir:"+parentType+'.'+name);
2718    }
2719    composeBackboneElement(t, "document", name, element, index);
2720    if (element.hasModeElement())
2721      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2722    if (element.hasDocumentationElement())
2723      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2724    if (element.hasProfileElement())
2725      composeCanonical(t, "CapabilityStatement", "profile", element.getProfileElement(), -1);
2726  }
2727
2728  protected void composeCarePlan(Complex parent, String parentType, String name, CarePlan element, int index) {
2729    if (element == null) 
2730      return;
2731    Complex t;
2732    if (Utilities.noString(parentType))
2733      t = parent;
2734    else {
2735      t = parent.predicate("fhir:"+parentType+'.'+name);
2736    }
2737    composeDomainResource(t, "CarePlan", name, element, index);
2738    for (int i = 0; i < element.getIdentifier().size(); i++)
2739      composeIdentifier(t, "CarePlan", "identifier", element.getIdentifier().get(i), i);
2740    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
2741      composeCanonical(t, "CarePlan", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
2742    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
2743      composeUri(t, "CarePlan", "instantiatesUri", element.getInstantiatesUri().get(i), i);
2744    for (int i = 0; i < element.getBasedOn().size(); i++)
2745      composeReference(t, "CarePlan", "basedOn", element.getBasedOn().get(i), i);
2746    for (int i = 0; i < element.getReplaces().size(); i++)
2747      composeReference(t, "CarePlan", "replaces", element.getReplaces().get(i), i);
2748    for (int i = 0; i < element.getPartOf().size(); i++)
2749      composeReference(t, "CarePlan", "partOf", element.getPartOf().get(i), i);
2750    if (element.hasStatusElement())
2751      composeEnum(t, "CarePlan", "status", element.getStatusElement(), -1);
2752    if (element.hasIntentElement())
2753      composeEnum(t, "CarePlan", "intent", element.getIntentElement(), -1);
2754    for (int i = 0; i < element.getCategory().size(); i++)
2755      composeCodeableConcept(t, "CarePlan", "category", element.getCategory().get(i), i);
2756    if (element.hasTitleElement())
2757      composeString(t, "CarePlan", "title", element.getTitleElement(), -1);
2758    if (element.hasDescriptionElement())
2759      composeString(t, "CarePlan", "description", element.getDescriptionElement(), -1);
2760    if (element.hasSubject())
2761      composeReference(t, "CarePlan", "subject", element.getSubject(), -1);
2762    if (element.hasContext())
2763      composeReference(t, "CarePlan", "context", element.getContext(), -1);
2764    if (element.hasPeriod())
2765      composePeriod(t, "CarePlan", "period", element.getPeriod(), -1);
2766    if (element.hasCreatedElement())
2767      composeDateTime(t, "CarePlan", "created", element.getCreatedElement(), -1);
2768    if (element.hasAuthor())
2769      composeReference(t, "CarePlan", "author", element.getAuthor(), -1);
2770    for (int i = 0; i < element.getContributor().size(); i++)
2771      composeReference(t, "CarePlan", "contributor", element.getContributor().get(i), i);
2772    for (int i = 0; i < element.getCareTeam().size(); i++)
2773      composeReference(t, "CarePlan", "careTeam", element.getCareTeam().get(i), i);
2774    for (int i = 0; i < element.getAddresses().size(); i++)
2775      composeReference(t, "CarePlan", "addresses", element.getAddresses().get(i), i);
2776    for (int i = 0; i < element.getSupportingInfo().size(); i++)
2777      composeReference(t, "CarePlan", "supportingInfo", element.getSupportingInfo().get(i), i);
2778    for (int i = 0; i < element.getGoal().size(); i++)
2779      composeReference(t, "CarePlan", "goal", element.getGoal().get(i), i);
2780    for (int i = 0; i < element.getActivity().size(); i++)
2781      composeCarePlanCarePlanActivityComponent(t, "CarePlan", "activity", element.getActivity().get(i), i);
2782    for (int i = 0; i < element.getNote().size(); i++)
2783      composeAnnotation(t, "CarePlan", "note", element.getNote().get(i), i);
2784  }
2785
2786  protected void composeCarePlanCarePlanActivityComponent(Complex parent, String parentType, String name, CarePlan.CarePlanActivityComponent element, int index) {
2787    if (element == null) 
2788      return;
2789    Complex t;
2790    if (Utilities.noString(parentType))
2791      t = parent;
2792    else {
2793      t = parent.predicate("fhir:"+parentType+'.'+name);
2794    }
2795    composeBackboneElement(t, "activity", name, element, index);
2796    for (int i = 0; i < element.getOutcomeCodeableConcept().size(); i++)
2797      composeCodeableConcept(t, "CarePlan", "outcomeCodeableConcept", element.getOutcomeCodeableConcept().get(i), i);
2798    for (int i = 0; i < element.getOutcomeReference().size(); i++)
2799      composeReference(t, "CarePlan", "outcomeReference", element.getOutcomeReference().get(i), i);
2800    for (int i = 0; i < element.getProgress().size(); i++)
2801      composeAnnotation(t, "CarePlan", "progress", element.getProgress().get(i), i);
2802    if (element.hasReference())
2803      composeReference(t, "CarePlan", "reference", element.getReference(), -1);
2804    if (element.hasDetail())
2805      composeCarePlanCarePlanActivityDetailComponent(t, "CarePlan", "detail", element.getDetail(), -1);
2806  }
2807
2808  protected void composeCarePlanCarePlanActivityDetailComponent(Complex parent, String parentType, String name, CarePlan.CarePlanActivityDetailComponent element, int index) {
2809    if (element == null) 
2810      return;
2811    Complex t;
2812    if (Utilities.noString(parentType))
2813      t = parent;
2814    else {
2815      t = parent.predicate("fhir:"+parentType+'.'+name);
2816    }
2817    composeBackboneElement(t, "detail", name, element, index);
2818    if (element.hasKindElement())
2819      composeEnum(t, "CarePlan", "kind", element.getKindElement(), -1);
2820    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
2821      composeCanonical(t, "CarePlan", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
2822    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
2823      composeUri(t, "CarePlan", "instantiatesUri", element.getInstantiatesUri().get(i), i);
2824    if (element.hasCode())
2825      composeCodeableConcept(t, "CarePlan", "code", element.getCode(), -1);
2826    for (int i = 0; i < element.getReasonCode().size(); i++)
2827      composeCodeableConcept(t, "CarePlan", "reasonCode", element.getReasonCode().get(i), i);
2828    for (int i = 0; i < element.getReasonReference().size(); i++)
2829      composeReference(t, "CarePlan", "reasonReference", element.getReasonReference().get(i), i);
2830    for (int i = 0; i < element.getGoal().size(); i++)
2831      composeReference(t, "CarePlan", "goal", element.getGoal().get(i), i);
2832    if (element.hasStatusElement())
2833      composeEnum(t, "CarePlan", "status", element.getStatusElement(), -1);
2834    if (element.hasStatusReason())
2835      composeCodeableConcept(t, "CarePlan", "statusReason", element.getStatusReason(), -1);
2836    if (element.hasDoNotPerformElement())
2837      composeBoolean(t, "CarePlan", "doNotPerform", element.getDoNotPerformElement(), -1);
2838    if (element.hasScheduled())
2839      composeType(t, "CarePlan", "scheduled", element.getScheduled(), -1);
2840    if (element.hasLocation())
2841      composeReference(t, "CarePlan", "location", element.getLocation(), -1);
2842    for (int i = 0; i < element.getPerformer().size(); i++)
2843      composeReference(t, "CarePlan", "performer", element.getPerformer().get(i), i);
2844    if (element.hasProduct())
2845      composeType(t, "CarePlan", "product", element.getProduct(), -1);
2846    if (element.hasDailyAmount())
2847      composeQuantity(t, "CarePlan", "dailyAmount", element.getDailyAmount(), -1);
2848    if (element.hasQuantity())
2849      composeQuantity(t, "CarePlan", "quantity", element.getQuantity(), -1);
2850    if (element.hasDescriptionElement())
2851      composeString(t, "CarePlan", "description", element.getDescriptionElement(), -1);
2852  }
2853
2854  protected void composeCareTeam(Complex parent, String parentType, String name, CareTeam 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    composeDomainResource(t, "CareTeam", name, element, index);
2864    for (int i = 0; i < element.getIdentifier().size(); i++)
2865      composeIdentifier(t, "CareTeam", "identifier", element.getIdentifier().get(i), i);
2866    if (element.hasStatusElement())
2867      composeEnum(t, "CareTeam", "status", element.getStatusElement(), -1);
2868    for (int i = 0; i < element.getCategory().size(); i++)
2869      composeCodeableConcept(t, "CareTeam", "category", element.getCategory().get(i), i);
2870    if (element.hasNameElement())
2871      composeString(t, "CareTeam", "name", element.getNameElement(), -1);
2872    if (element.hasSubject())
2873      composeReference(t, "CareTeam", "subject", element.getSubject(), -1);
2874    if (element.hasContext())
2875      composeReference(t, "CareTeam", "context", element.getContext(), -1);
2876    if (element.hasPeriod())
2877      composePeriod(t, "CareTeam", "period", element.getPeriod(), -1);
2878    for (int i = 0; i < element.getParticipant().size(); i++)
2879      composeCareTeamCareTeamParticipantComponent(t, "CareTeam", "participant", element.getParticipant().get(i), i);
2880    for (int i = 0; i < element.getReasonCode().size(); i++)
2881      composeCodeableConcept(t, "CareTeam", "reasonCode", element.getReasonCode().get(i), i);
2882    for (int i = 0; i < element.getReasonReference().size(); i++)
2883      composeReference(t, "CareTeam", "reasonReference", element.getReasonReference().get(i), i);
2884    for (int i = 0; i < element.getManagingOrganization().size(); i++)
2885      composeReference(t, "CareTeam", "managingOrganization", element.getManagingOrganization().get(i), i);
2886    for (int i = 0; i < element.getTelecom().size(); i++)
2887      composeContactPoint(t, "CareTeam", "telecom", element.getTelecom().get(i), i);
2888    for (int i = 0; i < element.getNote().size(); i++)
2889      composeAnnotation(t, "CareTeam", "note", element.getNote().get(i), i);
2890  }
2891
2892  protected void composeCareTeamCareTeamParticipantComponent(Complex parent, String parentType, String name, CareTeam.CareTeamParticipantComponent element, int index) {
2893    if (element == null) 
2894      return;
2895    Complex t;
2896    if (Utilities.noString(parentType))
2897      t = parent;
2898    else {
2899      t = parent.predicate("fhir:"+parentType+'.'+name);
2900    }
2901    composeBackboneElement(t, "participant", name, element, index);
2902    for (int i = 0; i < element.getRole().size(); i++)
2903      composeCodeableConcept(t, "CareTeam", "role", element.getRole().get(i), i);
2904    if (element.hasMember())
2905      composeReference(t, "CareTeam", "member", element.getMember(), -1);
2906    if (element.hasOnBehalfOf())
2907      composeReference(t, "CareTeam", "onBehalfOf", element.getOnBehalfOf(), -1);
2908    if (element.hasPeriod())
2909      composePeriod(t, "CareTeam", "period", element.getPeriod(), -1);
2910  }
2911
2912  protected void composeCatalogEntry(Complex parent, String parentType, String name, CatalogEntry element, int index) {
2913    if (element == null) 
2914      return;
2915    Complex t;
2916    if (Utilities.noString(parentType))
2917      t = parent;
2918    else {
2919      t = parent.predicate("fhir:"+parentType+'.'+name);
2920    }
2921    composeDomainResource(t, "CatalogEntry", name, element, index);
2922    for (int i = 0; i < element.getIdentifier().size(); i++)
2923      composeIdentifier(t, "CatalogEntry", "identifier", element.getIdentifier().get(i), i);
2924    if (element.hasType())
2925      composeCodeableConcept(t, "CatalogEntry", "type", element.getType(), -1);
2926    if (element.hasOrderableElement())
2927      composeBoolean(t, "CatalogEntry", "orderable", element.getOrderableElement(), -1);
2928    if (element.hasReferencedItem())
2929      composeReference(t, "CatalogEntry", "referencedItem", element.getReferencedItem(), -1);
2930    for (int i = 0; i < element.getAdditionalIdentifier().size(); i++)
2931      composeIdentifier(t, "CatalogEntry", "additionalIdentifier", element.getAdditionalIdentifier().get(i), i);
2932    for (int i = 0; i < element.getClassification().size(); i++)
2933      composeCodeableConcept(t, "CatalogEntry", "classification", element.getClassification().get(i), i);
2934    if (element.hasStatusElement())
2935      composeEnum(t, "CatalogEntry", "status", element.getStatusElement(), -1);
2936    if (element.hasValidityPeriod())
2937      composePeriod(t, "CatalogEntry", "validityPeriod", element.getValidityPeriod(), -1);
2938    if (element.hasValidToElement())
2939      composeDateTime(t, "CatalogEntry", "validTo", element.getValidToElement(), -1);
2940    if (element.hasLastUpdatedElement())
2941      composeDateTime(t, "CatalogEntry", "lastUpdated", element.getLastUpdatedElement(), -1);
2942    for (int i = 0; i < element.getAdditionalCharacteristic().size(); i++)
2943      composeCodeableConcept(t, "CatalogEntry", "additionalCharacteristic", element.getAdditionalCharacteristic().get(i), i);
2944    for (int i = 0; i < element.getAdditionalClassification().size(); i++)
2945      composeCodeableConcept(t, "CatalogEntry", "additionalClassification", element.getAdditionalClassification().get(i), i);
2946    for (int i = 0; i < element.getRelatedEntry().size(); i++)
2947      composeCatalogEntryCatalogEntryRelatedEntryComponent(t, "CatalogEntry", "relatedEntry", element.getRelatedEntry().get(i), i);
2948  }
2949
2950  protected void composeCatalogEntryCatalogEntryRelatedEntryComponent(Complex parent, String parentType, String name, CatalogEntry.CatalogEntryRelatedEntryComponent 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    composeBackboneElement(t, "relatedEntry", name, element, index);
2960    if (element.hasRelationtypeElement())
2961      composeEnum(t, "CatalogEntry", "relationtype", element.getRelationtypeElement(), -1);
2962    if (element.hasItem())
2963      composeReference(t, "CatalogEntry", "item", element.getItem(), -1);
2964  }
2965
2966  protected void composeChargeItem(Complex parent, String parentType, String name, ChargeItem element, int index) {
2967    if (element == null) 
2968      return;
2969    Complex t;
2970    if (Utilities.noString(parentType))
2971      t = parent;
2972    else {
2973      t = parent.predicate("fhir:"+parentType+'.'+name);
2974    }
2975    composeDomainResource(t, "ChargeItem", name, element, index);
2976    for (int i = 0; i < element.getIdentifier().size(); i++)
2977      composeIdentifier(t, "ChargeItem", "identifier", element.getIdentifier().get(i), i);
2978    for (int i = 0; i < element.getDefinition().size(); i++)
2979      composeUri(t, "ChargeItem", "definition", element.getDefinition().get(i), i);
2980    if (element.hasStatusElement())
2981      composeEnum(t, "ChargeItem", "status", element.getStatusElement(), -1);
2982    for (int i = 0; i < element.getPartOf().size(); i++)
2983      composeReference(t, "ChargeItem", "partOf", element.getPartOf().get(i), i);
2984    if (element.hasCode())
2985      composeCodeableConcept(t, "ChargeItem", "code", element.getCode(), -1);
2986    if (element.hasSubject())
2987      composeReference(t, "ChargeItem", "subject", element.getSubject(), -1);
2988    if (element.hasContext())
2989      composeReference(t, "ChargeItem", "context", element.getContext(), -1);
2990    if (element.hasOccurrence())
2991      composeType(t, "ChargeItem", "occurrence", element.getOccurrence(), -1);
2992    for (int i = 0; i < element.getPerformer().size(); i++)
2993      composeChargeItemChargeItemPerformerComponent(t, "ChargeItem", "performer", element.getPerformer().get(i), i);
2994    if (element.hasPerformingOrganization())
2995      composeReference(t, "ChargeItem", "performingOrganization", element.getPerformingOrganization(), -1);
2996    if (element.hasRequestingOrganization())
2997      composeReference(t, "ChargeItem", "requestingOrganization", element.getRequestingOrganization(), -1);
2998    if (element.hasCostCenter())
2999      composeReference(t, "ChargeItem", "costCenter", element.getCostCenter(), -1);
3000    if (element.hasQuantity())
3001      composeQuantity(t, "ChargeItem", "quantity", element.getQuantity(), -1);
3002    for (int i = 0; i < element.getBodysite().size(); i++)
3003      composeCodeableConcept(t, "ChargeItem", "bodysite", element.getBodysite().get(i), i);
3004    if (element.hasFactorOverrideElement())
3005      composeDecimal(t, "ChargeItem", "factorOverride", element.getFactorOverrideElement(), -1);
3006    if (element.hasPriceOverride())
3007      composeMoney(t, "ChargeItem", "priceOverride", element.getPriceOverride(), -1);
3008    if (element.hasOverrideReasonElement())
3009      composeString(t, "ChargeItem", "overrideReason", element.getOverrideReasonElement(), -1);
3010    if (element.hasEnterer())
3011      composeReference(t, "ChargeItem", "enterer", element.getEnterer(), -1);
3012    if (element.hasEnteredDateElement())
3013      composeDateTime(t, "ChargeItem", "enteredDate", element.getEnteredDateElement(), -1);
3014    for (int i = 0; i < element.getReason().size(); i++)
3015      composeCodeableConcept(t, "ChargeItem", "reason", element.getReason().get(i), i);
3016    for (int i = 0; i < element.getService().size(); i++)
3017      composeReference(t, "ChargeItem", "service", element.getService().get(i), i);
3018    if (element.hasProduct())
3019      composeType(t, "ChargeItem", "product", element.getProduct(), -1);
3020    for (int i = 0; i < element.getAccount().size(); i++)
3021      composeReference(t, "ChargeItem", "account", element.getAccount().get(i), i);
3022    for (int i = 0; i < element.getNote().size(); i++)
3023      composeAnnotation(t, "ChargeItem", "note", element.getNote().get(i), i);
3024    for (int i = 0; i < element.getSupportingInformation().size(); i++)
3025      composeReference(t, "ChargeItem", "supportingInformation", element.getSupportingInformation().get(i), i);
3026  }
3027
3028  protected void composeChargeItemChargeItemPerformerComponent(Complex parent, String parentType, String name, ChargeItem.ChargeItemPerformerComponent element, int index) {
3029    if (element == null) 
3030      return;
3031    Complex t;
3032    if (Utilities.noString(parentType))
3033      t = parent;
3034    else {
3035      t = parent.predicate("fhir:"+parentType+'.'+name);
3036    }
3037    composeBackboneElement(t, "performer", name, element, index);
3038    if (element.hasFunction())
3039      composeCodeableConcept(t, "ChargeItem", "function", element.getFunction(), -1);
3040    if (element.hasActor())
3041      composeReference(t, "ChargeItem", "actor", element.getActor(), -1);
3042  }
3043
3044  protected void composeChargeItemDefinition(Complex parent, String parentType, String name, ChargeItemDefinition element, int index) {
3045    if (element == null) 
3046      return;
3047    Complex t;
3048    if (Utilities.noString(parentType))
3049      t = parent;
3050    else {
3051      t = parent.predicate("fhir:"+parentType+'.'+name);
3052    }
3053    composeDomainResource(t, "ChargeItemDefinition", name, element, index);
3054    if (element.hasUrlElement())
3055      composeUri(t, "ChargeItemDefinition", "url", element.getUrlElement(), -1);
3056    for (int i = 0; i < element.getIdentifier().size(); i++)
3057      composeIdentifier(t, "ChargeItemDefinition", "identifier", element.getIdentifier().get(i), i);
3058    if (element.hasVersionElement())
3059      composeString(t, "ChargeItemDefinition", "version", element.getVersionElement(), -1);
3060    if (element.hasTitleElement())
3061      composeString(t, "ChargeItemDefinition", "title", element.getTitleElement(), -1);
3062    for (int i = 0; i < element.getDerivedFromUri().size(); i++)
3063      composeUri(t, "ChargeItemDefinition", "derivedFromUri", element.getDerivedFromUri().get(i), i);
3064    for (int i = 0; i < element.getPartOf().size(); i++)
3065      composeCanonical(t, "ChargeItemDefinition", "partOf", element.getPartOf().get(i), i);
3066    for (int i = 0; i < element.getReplaces().size(); i++)
3067      composeCanonical(t, "ChargeItemDefinition", "replaces", element.getReplaces().get(i), i);
3068    if (element.hasStatusElement())
3069      composeEnum(t, "ChargeItemDefinition", "status", element.getStatusElement(), -1);
3070    if (element.hasExperimentalElement())
3071      composeBoolean(t, "ChargeItemDefinition", "experimental", element.getExperimentalElement(), -1);
3072    if (element.hasDateElement())
3073      composeDateTime(t, "ChargeItemDefinition", "date", element.getDateElement(), -1);
3074    if (element.hasPublisherElement())
3075      composeString(t, "ChargeItemDefinition", "publisher", element.getPublisherElement(), -1);
3076    for (int i = 0; i < element.getContact().size(); i++)
3077      composeContactDetail(t, "ChargeItemDefinition", "contact", element.getContact().get(i), i);
3078    if (element.hasDescriptionElement())
3079      composeMarkdown(t, "ChargeItemDefinition", "description", element.getDescriptionElement(), -1);
3080    for (int i = 0; i < element.getUseContext().size(); i++)
3081      composeUsageContext(t, "ChargeItemDefinition", "useContext", element.getUseContext().get(i), i);
3082    for (int i = 0; i < element.getJurisdiction().size(); i++)
3083      composeCodeableConcept(t, "ChargeItemDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
3084    if (element.hasCopyrightElement())
3085      composeMarkdown(t, "ChargeItemDefinition", "copyright", element.getCopyrightElement(), -1);
3086    if (element.hasApprovalDateElement())
3087      composeDate(t, "ChargeItemDefinition", "approvalDate", element.getApprovalDateElement(), -1);
3088    if (element.hasLastReviewDateElement())
3089      composeDate(t, "ChargeItemDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
3090    if (element.hasEffectivePeriod())
3091      composePeriod(t, "ChargeItemDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
3092    if (element.hasCode())
3093      composeCodeableConcept(t, "ChargeItemDefinition", "code", element.getCode(), -1);
3094    for (int i = 0; i < element.getInstance().size(); i++)
3095      composeReference(t, "ChargeItemDefinition", "instance", element.getInstance().get(i), i);
3096    for (int i = 0; i < element.getApplicability().size(); i++)
3097      composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(t, "ChargeItemDefinition", "applicability", element.getApplicability().get(i), i);
3098    for (int i = 0; i < element.getPropertyGroup().size(); i++)
3099      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(t, "ChargeItemDefinition", "propertyGroup", element.getPropertyGroup().get(i), i);
3100  }
3101
3102  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(Complex parent, String parentType, String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element, int index) {
3103    if (element == null) 
3104      return;
3105    Complex t;
3106    if (Utilities.noString(parentType))
3107      t = parent;
3108    else {
3109      t = parent.predicate("fhir:"+parentType+'.'+name);
3110    }
3111    composeBackboneElement(t, "applicability", name, element, index);
3112    if (element.hasDescriptionElement())
3113      composeString(t, "ChargeItemDefinition", "description", element.getDescriptionElement(), -1);
3114    if (element.hasLanguageElement())
3115      composeString(t, "ChargeItemDefinition", "language", element.getLanguageElement(), -1);
3116    if (element.hasExpressionElement())
3117      composeString(t, "ChargeItemDefinition", "expression", element.getExpressionElement(), -1);
3118  }
3119
3120  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(Complex parent, String parentType, String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element, int index) {
3121    if (element == null) 
3122      return;
3123    Complex t;
3124    if (Utilities.noString(parentType))
3125      t = parent;
3126    else {
3127      t = parent.predicate("fhir:"+parentType+'.'+name);
3128    }
3129    composeBackboneElement(t, "propertyGroup", name, element, index);
3130    for (int i = 0; i < element.getApplicability().size(); i++)
3131      composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(t, "ChargeItemDefinition", "applicability", element.getApplicability().get(i), i);
3132    for (int i = 0; i < element.getPriceComponent().size(); i++)
3133      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(t, "ChargeItemDefinition", "priceComponent", element.getPriceComponent().get(i), i);
3134  }
3135
3136  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(Complex parent, String parentType, String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent 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, "priceComponent", name, element, index);
3146    if (element.hasTypeElement())
3147      composeEnum(t, "ChargeItemDefinition", "type", element.getTypeElement(), -1);
3148    if (element.hasCode())
3149      composeCodeableConcept(t, "ChargeItemDefinition", "code", element.getCode(), -1);
3150    if (element.hasFactorElement())
3151      composeDecimal(t, "ChargeItemDefinition", "factor", element.getFactorElement(), -1);
3152    if (element.hasAmount())
3153      composeMoney(t, "ChargeItemDefinition", "amount", element.getAmount(), -1);
3154  }
3155
3156  protected void composeClaim(Complex parent, String parentType, String name, Claim element, int index) {
3157    if (element == null) 
3158      return;
3159    Complex t;
3160    if (Utilities.noString(parentType))
3161      t = parent;
3162    else {
3163      t = parent.predicate("fhir:"+parentType+'.'+name);
3164    }
3165    composeDomainResource(t, "Claim", name, element, index);
3166    for (int i = 0; i < element.getIdentifier().size(); i++)
3167      composeIdentifier(t, "Claim", "identifier", element.getIdentifier().get(i), i);
3168    if (element.hasStatusElement())
3169      composeEnum(t, "Claim", "status", element.getStatusElement(), -1);
3170    if (element.hasType())
3171      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
3172    if (element.hasSubType())
3173      composeCodeableConcept(t, "Claim", "subType", element.getSubType(), -1);
3174    if (element.hasUseElement())
3175      composeEnum(t, "Claim", "use", element.getUseElement(), -1);
3176    if (element.hasPatient())
3177      composeReference(t, "Claim", "patient", element.getPatient(), -1);
3178    if (element.hasBillablePeriod())
3179      composePeriod(t, "Claim", "billablePeriod", element.getBillablePeriod(), -1);
3180    if (element.hasCreatedElement())
3181      composeDateTime(t, "Claim", "created", element.getCreatedElement(), -1);
3182    if (element.hasEnterer())
3183      composeReference(t, "Claim", "enterer", element.getEnterer(), -1);
3184    if (element.hasInsurer())
3185      composeReference(t, "Claim", "insurer", element.getInsurer(), -1);
3186    if (element.hasProvider())
3187      composeReference(t, "Claim", "provider", element.getProvider(), -1);
3188    if (element.hasPriority())
3189      composeCodeableConcept(t, "Claim", "priority", element.getPriority(), -1);
3190    if (element.hasFundsReserve())
3191      composeCodeableConcept(t, "Claim", "fundsReserve", element.getFundsReserve(), -1);
3192    for (int i = 0; i < element.getRelated().size(); i++)
3193      composeClaimRelatedClaimComponent(t, "Claim", "related", element.getRelated().get(i), i);
3194    if (element.hasPrescription())
3195      composeReference(t, "Claim", "prescription", element.getPrescription(), -1);
3196    if (element.hasOriginalPrescription())
3197      composeReference(t, "Claim", "originalPrescription", element.getOriginalPrescription(), -1);
3198    if (element.hasPayee())
3199      composeClaimPayeeComponent(t, "Claim", "payee", element.getPayee(), -1);
3200    if (element.hasReferral())
3201      composeReference(t, "Claim", "referral", element.getReferral(), -1);
3202    if (element.hasFacility())
3203      composeReference(t, "Claim", "facility", element.getFacility(), -1);
3204    for (int i = 0; i < element.getCareTeam().size(); i++)
3205      composeClaimCareTeamComponent(t, "Claim", "careTeam", element.getCareTeam().get(i), i);
3206    for (int i = 0; i < element.getInformation().size(); i++)
3207      composeClaimSpecialConditionComponent(t, "Claim", "information", element.getInformation().get(i), i);
3208    for (int i = 0; i < element.getDiagnosis().size(); i++)
3209      composeClaimDiagnosisComponent(t, "Claim", "diagnosis", element.getDiagnosis().get(i), i);
3210    for (int i = 0; i < element.getProcedure().size(); i++)
3211      composeClaimProcedureComponent(t, "Claim", "procedure", element.getProcedure().get(i), i);
3212    for (int i = 0; i < element.getInsurance().size(); i++)
3213      composeClaimInsuranceComponent(t, "Claim", "insurance", element.getInsurance().get(i), i);
3214    if (element.hasAccident())
3215      composeClaimAccidentComponent(t, "Claim", "accident", element.getAccident(), -1);
3216    for (int i = 0; i < element.getItem().size(); i++)
3217      composeClaimItemComponent(t, "Claim", "item", element.getItem().get(i), i);
3218    if (element.hasTotal())
3219      composeMoney(t, "Claim", "total", element.getTotal(), -1);
3220  }
3221
3222  protected void composeClaimRelatedClaimComponent(Complex parent, String parentType, String name, Claim.RelatedClaimComponent element, int index) {
3223    if (element == null) 
3224      return;
3225    Complex t;
3226    if (Utilities.noString(parentType))
3227      t = parent;
3228    else {
3229      t = parent.predicate("fhir:"+parentType+'.'+name);
3230    }
3231    composeBackboneElement(t, "related", name, element, index);
3232    if (element.hasClaim())
3233      composeReference(t, "Claim", "claim", element.getClaim(), -1);
3234    if (element.hasRelationship())
3235      composeCodeableConcept(t, "Claim", "relationship", element.getRelationship(), -1);
3236    if (element.hasReference())
3237      composeIdentifier(t, "Claim", "reference", element.getReference(), -1);
3238  }
3239
3240  protected void composeClaimPayeeComponent(Complex parent, String parentType, String name, Claim.PayeeComponent element, int index) {
3241    if (element == null) 
3242      return;
3243    Complex t;
3244    if (Utilities.noString(parentType))
3245      t = parent;
3246    else {
3247      t = parent.predicate("fhir:"+parentType+'.'+name);
3248    }
3249    composeBackboneElement(t, "payee", name, element, index);
3250    if (element.hasType())
3251      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
3252    if (element.hasResource())
3253      composeCoding(t, "Claim", "resource", element.getResource(), -1);
3254    if (element.hasParty())
3255      composeReference(t, "Claim", "party", element.getParty(), -1);
3256  }
3257
3258  protected void composeClaimCareTeamComponent(Complex parent, String parentType, String name, Claim.CareTeamComponent element, int index) {
3259    if (element == null) 
3260      return;
3261    Complex t;
3262    if (Utilities.noString(parentType))
3263      t = parent;
3264    else {
3265      t = parent.predicate("fhir:"+parentType+'.'+name);
3266    }
3267    composeBackboneElement(t, "careTeam", name, element, index);
3268    if (element.hasSequenceElement())
3269      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3270    if (element.hasProvider())
3271      composeReference(t, "Claim", "provider", element.getProvider(), -1);
3272    if (element.hasResponsibleElement())
3273      composeBoolean(t, "Claim", "responsible", element.getResponsibleElement(), -1);
3274    if (element.hasRole())
3275      composeCodeableConcept(t, "Claim", "role", element.getRole(), -1);
3276    if (element.hasQualification())
3277      composeCodeableConcept(t, "Claim", "qualification", element.getQualification(), -1);
3278  }
3279
3280  protected void composeClaimSpecialConditionComponent(Complex parent, String parentType, String name, Claim.SpecialConditionComponent element, int index) {
3281    if (element == null) 
3282      return;
3283    Complex t;
3284    if (Utilities.noString(parentType))
3285      t = parent;
3286    else {
3287      t = parent.predicate("fhir:"+parentType+'.'+name);
3288    }
3289    composeBackboneElement(t, "information", name, element, index);
3290    if (element.hasSequenceElement())
3291      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3292    if (element.hasCategory())
3293      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3294    if (element.hasCode())
3295      composeCodeableConcept(t, "Claim", "code", element.getCode(), -1);
3296    if (element.hasTiming())
3297      composeType(t, "Claim", "timing", element.getTiming(), -1);
3298    if (element.hasValue())
3299      composeType(t, "Claim", "value", element.getValue(), -1);
3300    if (element.hasReason())
3301      composeCodeableConcept(t, "Claim", "reason", element.getReason(), -1);
3302  }
3303
3304  protected void composeClaimDiagnosisComponent(Complex parent, String parentType, String name, Claim.DiagnosisComponent 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    composeBackboneElement(t, "diagnosis", name, element, index);
3314    if (element.hasSequenceElement())
3315      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3316    if (element.hasDiagnosis())
3317      composeType(t, "Claim", "diagnosis", element.getDiagnosis(), -1);
3318    for (int i = 0; i < element.getType().size(); i++)
3319      composeCodeableConcept(t, "Claim", "type", element.getType().get(i), i);
3320    if (element.hasOnAdmission())
3321      composeCodeableConcept(t, "Claim", "onAdmission", element.getOnAdmission(), -1);
3322    if (element.hasPackageCode())
3323      composeCodeableConcept(t, "Claim", "packageCode", element.getPackageCode(), -1);
3324  }
3325
3326  protected void composeClaimProcedureComponent(Complex parent, String parentType, String name, Claim.ProcedureComponent element, int index) {
3327    if (element == null) 
3328      return;
3329    Complex t;
3330    if (Utilities.noString(parentType))
3331      t = parent;
3332    else {
3333      t = parent.predicate("fhir:"+parentType+'.'+name);
3334    }
3335    composeBackboneElement(t, "procedure", name, element, index);
3336    if (element.hasSequenceElement())
3337      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3338    if (element.hasDateElement())
3339      composeDateTime(t, "Claim", "date", element.getDateElement(), -1);
3340    if (element.hasProcedure())
3341      composeType(t, "Claim", "procedure", element.getProcedure(), -1);
3342  }
3343
3344  protected void composeClaimInsuranceComponent(Complex parent, String parentType, String name, Claim.InsuranceComponent element, int index) {
3345    if (element == null) 
3346      return;
3347    Complex t;
3348    if (Utilities.noString(parentType))
3349      t = parent;
3350    else {
3351      t = parent.predicate("fhir:"+parentType+'.'+name);
3352    }
3353    composeBackboneElement(t, "insurance", name, element, index);
3354    if (element.hasSequenceElement())
3355      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3356    if (element.hasFocalElement())
3357      composeBoolean(t, "Claim", "focal", element.getFocalElement(), -1);
3358    if (element.hasIdentifier())
3359      composeIdentifier(t, "Claim", "identifier", element.getIdentifier(), -1);
3360    if (element.hasCoverage())
3361      composeReference(t, "Claim", "coverage", element.getCoverage(), -1);
3362    if (element.hasBusinessArrangementElement())
3363      composeString(t, "Claim", "businessArrangement", element.getBusinessArrangementElement(), -1);
3364    for (int i = 0; i < element.getPreAuthRef().size(); i++)
3365      composeString(t, "Claim", "preAuthRef", element.getPreAuthRef().get(i), i);
3366    if (element.hasClaimResponse())
3367      composeReference(t, "Claim", "claimResponse", element.getClaimResponse(), -1);
3368  }
3369
3370  protected void composeClaimAccidentComponent(Complex parent, String parentType, String name, Claim.AccidentComponent element, int index) {
3371    if (element == null) 
3372      return;
3373    Complex t;
3374    if (Utilities.noString(parentType))
3375      t = parent;
3376    else {
3377      t = parent.predicate("fhir:"+parentType+'.'+name);
3378    }
3379    composeBackboneElement(t, "accident", name, element, index);
3380    if (element.hasDateElement())
3381      composeDate(t, "Claim", "date", element.getDateElement(), -1);
3382    if (element.hasType())
3383      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
3384    if (element.hasLocation())
3385      composeType(t, "Claim", "location", element.getLocation(), -1);
3386  }
3387
3388  protected void composeClaimItemComponent(Complex parent, String parentType, String name, Claim.ItemComponent element, int index) {
3389    if (element == null) 
3390      return;
3391    Complex t;
3392    if (Utilities.noString(parentType))
3393      t = parent;
3394    else {
3395      t = parent.predicate("fhir:"+parentType+'.'+name);
3396    }
3397    composeBackboneElement(t, "item", name, element, index);
3398    if (element.hasSequenceElement())
3399      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3400    for (int i = 0; i < element.getCareTeamSequence().size(); i++)
3401      composePositiveInt(t, "Claim", "careTeamSequence", element.getCareTeamSequence().get(i), i);
3402    for (int i = 0; i < element.getDiagnosisSequence().size(); i++)
3403      composePositiveInt(t, "Claim", "diagnosisSequence", element.getDiagnosisSequence().get(i), i);
3404    for (int i = 0; i < element.getProcedureSequence().size(); i++)
3405      composePositiveInt(t, "Claim", "procedureSequence", element.getProcedureSequence().get(i), i);
3406    for (int i = 0; i < element.getInformationSequence().size(); i++)
3407      composePositiveInt(t, "Claim", "informationSequence", element.getInformationSequence().get(i), i);
3408    if (element.hasRevenue())
3409      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3410    if (element.hasCategory())
3411      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3412    if (element.hasBillcode())
3413      composeCodeableConcept(t, "Claim", "billcode", element.getBillcode(), -1);
3414    for (int i = 0; i < element.getModifier().size(); i++)
3415      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3416    for (int i = 0; i < element.getProgramCode().size(); i++)
3417      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3418    if (element.hasServiced())
3419      composeType(t, "Claim", "serviced", element.getServiced(), -1);
3420    if (element.hasLocation())
3421      composeType(t, "Claim", "location", element.getLocation(), -1);
3422    if (element.hasQuantity())
3423      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3424    if (element.hasUnitPrice())
3425      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3426    if (element.hasFactorElement())
3427      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3428    if (element.hasNet())
3429      composeMoney(t, "Claim", "net", element.getNet(), -1);
3430    for (int i = 0; i < element.getUdi().size(); i++)
3431      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3432    if (element.hasBodySite())
3433      composeCodeableConcept(t, "Claim", "bodySite", element.getBodySite(), -1);
3434    for (int i = 0; i < element.getSubSite().size(); i++)
3435      composeCodeableConcept(t, "Claim", "subSite", element.getSubSite().get(i), i);
3436    for (int i = 0; i < element.getEncounter().size(); i++)
3437      composeReference(t, "Claim", "encounter", element.getEncounter().get(i), i);
3438    for (int i = 0; i < element.getDetail().size(); i++)
3439      composeClaimDetailComponent(t, "Claim", "detail", element.getDetail().get(i), i);
3440  }
3441
3442  protected void composeClaimDetailComponent(Complex parent, String parentType, String name, Claim.DetailComponent element, int index) {
3443    if (element == null) 
3444      return;
3445    Complex t;
3446    if (Utilities.noString(parentType))
3447      t = parent;
3448    else {
3449      t = parent.predicate("fhir:"+parentType+'.'+name);
3450    }
3451    composeBackboneElement(t, "detail", name, element, index);
3452    if (element.hasSequenceElement())
3453      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3454    if (element.hasRevenue())
3455      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3456    if (element.hasCategory())
3457      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3458    if (element.hasBillcode())
3459      composeCodeableConcept(t, "Claim", "billcode", element.getBillcode(), -1);
3460    for (int i = 0; i < element.getModifier().size(); i++)
3461      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3462    for (int i = 0; i < element.getProgramCode().size(); i++)
3463      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3464    if (element.hasQuantity())
3465      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3466    if (element.hasUnitPrice())
3467      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3468    if (element.hasFactorElement())
3469      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3470    if (element.hasNet())
3471      composeMoney(t, "Claim", "net", element.getNet(), -1);
3472    for (int i = 0; i < element.getUdi().size(); i++)
3473      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3474    for (int i = 0; i < element.getSubDetail().size(); i++)
3475      composeClaimSubDetailComponent(t, "Claim", "subDetail", element.getSubDetail().get(i), i);
3476  }
3477
3478  protected void composeClaimSubDetailComponent(Complex parent, String parentType, String name, Claim.SubDetailComponent element, int index) {
3479    if (element == null) 
3480      return;
3481    Complex t;
3482    if (Utilities.noString(parentType))
3483      t = parent;
3484    else {
3485      t = parent.predicate("fhir:"+parentType+'.'+name);
3486    }
3487    composeBackboneElement(t, "subDetail", name, element, index);
3488    if (element.hasSequenceElement())
3489      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3490    if (element.hasRevenue())
3491      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3492    if (element.hasCategory())
3493      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3494    if (element.hasBillcode())
3495      composeCodeableConcept(t, "Claim", "billcode", element.getBillcode(), -1);
3496    for (int i = 0; i < element.getModifier().size(); i++)
3497      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3498    for (int i = 0; i < element.getProgramCode().size(); i++)
3499      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3500    if (element.hasQuantity())
3501      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3502    if (element.hasUnitPrice())
3503      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3504    if (element.hasFactorElement())
3505      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3506    if (element.hasNet())
3507      composeMoney(t, "Claim", "net", element.getNet(), -1);
3508    for (int i = 0; i < element.getUdi().size(); i++)
3509      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3510  }
3511
3512  protected void composeClaimResponse(Complex parent, String parentType, String name, ClaimResponse element, int index) {
3513    if (element == null) 
3514      return;
3515    Complex t;
3516    if (Utilities.noString(parentType))
3517      t = parent;
3518    else {
3519      t = parent.predicate("fhir:"+parentType+'.'+name);
3520    }
3521    composeDomainResource(t, "ClaimResponse", name, element, index);
3522    for (int i = 0; i < element.getIdentifier().size(); i++)
3523      composeIdentifier(t, "ClaimResponse", "identifier", element.getIdentifier().get(i), i);
3524    if (element.hasStatusElement())
3525      composeEnum(t, "ClaimResponse", "status", element.getStatusElement(), -1);
3526    if (element.hasType())
3527      composeCodeableConcept(t, "ClaimResponse", "type", element.getType(), -1);
3528    if (element.hasSubType())
3529      composeCodeableConcept(t, "ClaimResponse", "subType", element.getSubType(), -1);
3530    if (element.hasUseElement())
3531      composeEnum(t, "ClaimResponse", "use", element.getUseElement(), -1);
3532    if (element.hasPatient())
3533      composeReference(t, "ClaimResponse", "patient", element.getPatient(), -1);
3534    if (element.hasCreatedElement())
3535      composeDateTime(t, "ClaimResponse", "created", element.getCreatedElement(), -1);
3536    if (element.hasInsurer())
3537      composeReference(t, "ClaimResponse", "insurer", element.getInsurer(), -1);
3538    if (element.hasRequestProvider())
3539      composeReference(t, "ClaimResponse", "requestProvider", element.getRequestProvider(), -1);
3540    if (element.hasRequest())
3541      composeReference(t, "ClaimResponse", "request", element.getRequest(), -1);
3542    if (element.hasOutcomeElement())
3543      composeEnum(t, "ClaimResponse", "outcome", element.getOutcomeElement(), -1);
3544    if (element.hasDispositionElement())
3545      composeString(t, "ClaimResponse", "disposition", element.getDispositionElement(), -1);
3546    if (element.hasPreAuthRefElement())
3547      composeString(t, "ClaimResponse", "preAuthRef", element.getPreAuthRefElement(), -1);
3548    if (element.hasPayeeType())
3549      composeCodeableConcept(t, "ClaimResponse", "payeeType", element.getPayeeType(), -1);
3550    for (int i = 0; i < element.getItem().size(); i++)
3551      composeClaimResponseItemComponent(t, "ClaimResponse", "item", element.getItem().get(i), i);
3552    for (int i = 0; i < element.getAddItem().size(); i++)
3553      composeClaimResponseAddedItemComponent(t, "ClaimResponse", "addItem", element.getAddItem().get(i), i);
3554    for (int i = 0; i < element.getError().size(); i++)
3555      composeClaimResponseErrorComponent(t, "ClaimResponse", "error", element.getError().get(i), i);
3556    for (int i = 0; i < element.getTotal().size(); i++)
3557      composeClaimResponseTotalComponent(t, "ClaimResponse", "total", element.getTotal().get(i), i);
3558    if (element.hasPayment())
3559      composeClaimResponsePaymentComponent(t, "ClaimResponse", "payment", element.getPayment(), -1);
3560    if (element.hasReserved())
3561      composeCoding(t, "ClaimResponse", "reserved", element.getReserved(), -1);
3562    if (element.hasForm())
3563      composeCodeableConcept(t, "ClaimResponse", "form", element.getForm(), -1);
3564    for (int i = 0; i < element.getProcessNote().size(); i++)
3565      composeClaimResponseNoteComponent(t, "ClaimResponse", "processNote", element.getProcessNote().get(i), i);
3566    for (int i = 0; i < element.getCommunicationRequest().size(); i++)
3567      composeReference(t, "ClaimResponse", "communicationRequest", element.getCommunicationRequest().get(i), i);
3568    for (int i = 0; i < element.getInsurance().size(); i++)
3569      composeClaimResponseInsuranceComponent(t, "ClaimResponse", "insurance", element.getInsurance().get(i), i);
3570  }
3571
3572  protected void composeClaimResponseItemComponent(Complex parent, String parentType, String name, ClaimResponse.ItemComponent 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    composeBackboneElement(t, "item", name, element, index);
3582    if (element.hasItemSequenceElement())
3583      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequenceElement(), -1);
3584    for (int i = 0; i < element.getNoteNumber().size(); i++)
3585      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3586    for (int i = 0; i < element.getAdjudication().size(); i++)
3587      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3588    for (int i = 0; i < element.getDetail().size(); i++)
3589      composeClaimResponseItemDetailComponent(t, "ClaimResponse", "detail", element.getDetail().get(i), i);
3590  }
3591
3592  protected void composeClaimResponseAdjudicationComponent(Complex parent, String parentType, String name, ClaimResponse.AdjudicationComponent element, int index) {
3593    if (element == null) 
3594      return;
3595    Complex t;
3596    if (Utilities.noString(parentType))
3597      t = parent;
3598    else {
3599      t = parent.predicate("fhir:"+parentType+'.'+name);
3600    }
3601    composeBackboneElement(t, "adjudication", name, element, index);
3602    if (element.hasCategory())
3603      composeCodeableConcept(t, "ClaimResponse", "category", element.getCategory(), -1);
3604    if (element.hasReason())
3605      composeCodeableConcept(t, "ClaimResponse", "reason", element.getReason(), -1);
3606    if (element.hasAmount())
3607      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3608    if (element.hasValueElement())
3609      composeDecimal(t, "ClaimResponse", "value", element.getValueElement(), -1);
3610  }
3611
3612  protected void composeClaimResponseItemDetailComponent(Complex parent, String parentType, String name, ClaimResponse.ItemDetailComponent element, int index) {
3613    if (element == null) 
3614      return;
3615    Complex t;
3616    if (Utilities.noString(parentType))
3617      t = parent;
3618    else {
3619      t = parent.predicate("fhir:"+parentType+'.'+name);
3620    }
3621    composeBackboneElement(t, "detail", name, element, index);
3622    if (element.hasDetailSequenceElement())
3623      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequenceElement(), -1);
3624    for (int i = 0; i < element.getNoteNumber().size(); i++)
3625      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3626    for (int i = 0; i < element.getAdjudication().size(); i++)
3627      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3628    for (int i = 0; i < element.getSubDetail().size(); i++)
3629      composeClaimResponseSubDetailComponent(t, "ClaimResponse", "subDetail", element.getSubDetail().get(i), i);
3630  }
3631
3632  protected void composeClaimResponseSubDetailComponent(Complex parent, String parentType, String name, ClaimResponse.SubDetailComponent element, int index) {
3633    if (element == null) 
3634      return;
3635    Complex t;
3636    if (Utilities.noString(parentType))
3637      t = parent;
3638    else {
3639      t = parent.predicate("fhir:"+parentType+'.'+name);
3640    }
3641    composeBackboneElement(t, "subDetail", name, element, index);
3642    if (element.hasSubDetailSequenceElement())
3643      composePositiveInt(t, "ClaimResponse", "subDetailSequence", element.getSubDetailSequenceElement(), -1);
3644    for (int i = 0; i < element.getNoteNumber().size(); i++)
3645      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3646    for (int i = 0; i < element.getAdjudication().size(); i++)
3647      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3648  }
3649
3650  protected void composeClaimResponseAddedItemComponent(Complex parent, String parentType, String name, ClaimResponse.AddedItemComponent element, int index) {
3651    if (element == null) 
3652      return;
3653    Complex t;
3654    if (Utilities.noString(parentType))
3655      t = parent;
3656    else {
3657      t = parent.predicate("fhir:"+parentType+'.'+name);
3658    }
3659    composeBackboneElement(t, "addItem", name, element, index);
3660    for (int i = 0; i < element.getItemSequence().size(); i++)
3661      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequence().get(i), i);
3662    for (int i = 0; i < element.getDetailSequence().size(); i++)
3663      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequence().get(i), i);
3664    for (int i = 0; i < element.getSubdetailSequence().size(); i++)
3665      composePositiveInt(t, "ClaimResponse", "subdetailSequence", element.getSubdetailSequence().get(i), i);
3666    for (int i = 0; i < element.getProvider().size(); i++)
3667      composeReference(t, "ClaimResponse", "provider", element.getProvider().get(i), i);
3668    if (element.hasBillcode())
3669      composeCodeableConcept(t, "ClaimResponse", "billcode", element.getBillcode(), -1);
3670    for (int i = 0; i < element.getModifier().size(); i++)
3671      composeCodeableConcept(t, "ClaimResponse", "modifier", element.getModifier().get(i), i);
3672    for (int i = 0; i < element.getProgramCode().size(); i++)
3673      composeCodeableConcept(t, "ClaimResponse", "programCode", element.getProgramCode().get(i), i);
3674    if (element.hasServiced())
3675      composeType(t, "ClaimResponse", "serviced", element.getServiced(), -1);
3676    if (element.hasLocation())
3677      composeType(t, "ClaimResponse", "location", element.getLocation(), -1);
3678    if (element.hasQuantity())
3679      composeQuantity(t, "ClaimResponse", "quantity", element.getQuantity(), -1);
3680    if (element.hasUnitPrice())
3681      composeMoney(t, "ClaimResponse", "unitPrice", element.getUnitPrice(), -1);
3682    if (element.hasFactorElement())
3683      composeDecimal(t, "ClaimResponse", "factor", element.getFactorElement(), -1);
3684    if (element.hasNet())
3685      composeMoney(t, "ClaimResponse", "net", element.getNet(), -1);
3686    if (element.hasBodySite())
3687      composeCodeableConcept(t, "ClaimResponse", "bodySite", element.getBodySite(), -1);
3688    for (int i = 0; i < element.getSubSite().size(); i++)
3689      composeCodeableConcept(t, "ClaimResponse", "subSite", element.getSubSite().get(i), i);
3690    for (int i = 0; i < element.getNoteNumber().size(); i++)
3691      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3692    for (int i = 0; i < element.getAdjudication().size(); i++)
3693      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3694    for (int i = 0; i < element.getDetail().size(); i++)
3695      composeClaimResponseAddedItemDetailComponent(t, "ClaimResponse", "detail", element.getDetail().get(i), i);
3696  }
3697
3698  protected void composeClaimResponseAddedItemDetailComponent(Complex parent, String parentType, String name, ClaimResponse.AddedItemDetailComponent element, int index) {
3699    if (element == null) 
3700      return;
3701    Complex t;
3702    if (Utilities.noString(parentType))
3703      t = parent;
3704    else {
3705      t = parent.predicate("fhir:"+parentType+'.'+name);
3706    }
3707    composeBackboneElement(t, "detail", name, element, index);
3708    if (element.hasBillcode())
3709      composeCodeableConcept(t, "ClaimResponse", "billcode", element.getBillcode(), -1);
3710    for (int i = 0; i < element.getModifier().size(); i++)
3711      composeCodeableConcept(t, "ClaimResponse", "modifier", element.getModifier().get(i), i);
3712    if (element.hasQuantity())
3713      composeQuantity(t, "ClaimResponse", "quantity", element.getQuantity(), -1);
3714    if (element.hasUnitPrice())
3715      composeMoney(t, "ClaimResponse", "unitPrice", element.getUnitPrice(), -1);
3716    if (element.hasFactorElement())
3717      composeDecimal(t, "ClaimResponse", "factor", element.getFactorElement(), -1);
3718    if (element.hasNet())
3719      composeMoney(t, "ClaimResponse", "net", element.getNet(), -1);
3720    for (int i = 0; i < element.getNoteNumber().size(); i++)
3721      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3722    for (int i = 0; i < element.getAdjudication().size(); i++)
3723      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3724    for (int i = 0; i < element.getSubDetail().size(); i++)
3725      composeClaimResponseAddedItemSubDetailComponent(t, "ClaimResponse", "subDetail", element.getSubDetail().get(i), i);
3726  }
3727
3728  protected void composeClaimResponseAddedItemSubDetailComponent(Complex parent, String parentType, String name, ClaimResponse.AddedItemSubDetailComponent element, int index) {
3729    if (element == null) 
3730      return;
3731    Complex t;
3732    if (Utilities.noString(parentType))
3733      t = parent;
3734    else {
3735      t = parent.predicate("fhir:"+parentType+'.'+name);
3736    }
3737    composeBackboneElement(t, "subDetail", name, element, index);
3738    if (element.hasBillcode())
3739      composeCodeableConcept(t, "ClaimResponse", "billcode", element.getBillcode(), -1);
3740    for (int i = 0; i < element.getModifier().size(); i++)
3741      composeCodeableConcept(t, "ClaimResponse", "modifier", element.getModifier().get(i), i);
3742    if (element.hasQuantity())
3743      composeQuantity(t, "ClaimResponse", "quantity", element.getQuantity(), -1);
3744    if (element.hasUnitPrice())
3745      composeMoney(t, "ClaimResponse", "unitPrice", element.getUnitPrice(), -1);
3746    if (element.hasFactorElement())
3747      composeDecimal(t, "ClaimResponse", "factor", element.getFactorElement(), -1);
3748    if (element.hasNet())
3749      composeMoney(t, "ClaimResponse", "net", element.getNet(), -1);
3750    for (int i = 0; i < element.getNoteNumber().size(); i++)
3751      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3752    for (int i = 0; i < element.getAdjudication().size(); i++)
3753      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3754  }
3755
3756  protected void composeClaimResponseErrorComponent(Complex parent, String parentType, String name, ClaimResponse.ErrorComponent element, int index) {
3757    if (element == null) 
3758      return;
3759    Complex t;
3760    if (Utilities.noString(parentType))
3761      t = parent;
3762    else {
3763      t = parent.predicate("fhir:"+parentType+'.'+name);
3764    }
3765    composeBackboneElement(t, "error", name, element, index);
3766    if (element.hasItemSequenceElement())
3767      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequenceElement(), -1);
3768    if (element.hasDetailSequenceElement())
3769      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequenceElement(), -1);
3770    if (element.hasSubDetailSequenceElement())
3771      composePositiveInt(t, "ClaimResponse", "subDetailSequence", element.getSubDetailSequenceElement(), -1);
3772    if (element.hasCode())
3773      composeCodeableConcept(t, "ClaimResponse", "code", element.getCode(), -1);
3774  }
3775
3776  protected void composeClaimResponseTotalComponent(Complex parent, String parentType, String name, ClaimResponse.TotalComponent element, int index) {
3777    if (element == null) 
3778      return;
3779    Complex t;
3780    if (Utilities.noString(parentType))
3781      t = parent;
3782    else {
3783      t = parent.predicate("fhir:"+parentType+'.'+name);
3784    }
3785    composeBackboneElement(t, "total", name, element, index);
3786    if (element.hasCategory())
3787      composeCodeableConcept(t, "ClaimResponse", "category", element.getCategory(), -1);
3788    if (element.hasAmount())
3789      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3790  }
3791
3792  protected void composeClaimResponsePaymentComponent(Complex parent, String parentType, String name, ClaimResponse.PaymentComponent element, int index) {
3793    if (element == null) 
3794      return;
3795    Complex t;
3796    if (Utilities.noString(parentType))
3797      t = parent;
3798    else {
3799      t = parent.predicate("fhir:"+parentType+'.'+name);
3800    }
3801    composeBackboneElement(t, "payment", name, element, index);
3802    if (element.hasType())
3803      composeCodeableConcept(t, "ClaimResponse", "type", element.getType(), -1);
3804    if (element.hasAdjustment())
3805      composeMoney(t, "ClaimResponse", "adjustment", element.getAdjustment(), -1);
3806    if (element.hasAdjustmentReason())
3807      composeCodeableConcept(t, "ClaimResponse", "adjustmentReason", element.getAdjustmentReason(), -1);
3808    if (element.hasDateElement())
3809      composeDate(t, "ClaimResponse", "date", element.getDateElement(), -1);
3810    if (element.hasAmount())
3811      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3812    if (element.hasIdentifier())
3813      composeIdentifier(t, "ClaimResponse", "identifier", element.getIdentifier(), -1);
3814  }
3815
3816  protected void composeClaimResponseNoteComponent(Complex parent, String parentType, String name, ClaimResponse.NoteComponent element, int index) {
3817    if (element == null) 
3818      return;
3819    Complex t;
3820    if (Utilities.noString(parentType))
3821      t = parent;
3822    else {
3823      t = parent.predicate("fhir:"+parentType+'.'+name);
3824    }
3825    composeBackboneElement(t, "processNote", name, element, index);
3826    if (element.hasNumberElement())
3827      composePositiveInt(t, "ClaimResponse", "number", element.getNumberElement(), -1);
3828    if (element.hasTypeElement())
3829      composeEnum(t, "ClaimResponse", "type", element.getTypeElement(), -1);
3830    if (element.hasTextElement())
3831      composeString(t, "ClaimResponse", "text", element.getTextElement(), -1);
3832    if (element.hasLanguage())
3833      composeCodeableConcept(t, "ClaimResponse", "language", element.getLanguage(), -1);
3834  }
3835
3836  protected void composeClaimResponseInsuranceComponent(Complex parent, String parentType, String name, ClaimResponse.InsuranceComponent element, int index) {
3837    if (element == null) 
3838      return;
3839    Complex t;
3840    if (Utilities.noString(parentType))
3841      t = parent;
3842    else {
3843      t = parent.predicate("fhir:"+parentType+'.'+name);
3844    }
3845    composeBackboneElement(t, "insurance", name, element, index);
3846    if (element.hasSequenceElement())
3847      composePositiveInt(t, "ClaimResponse", "sequence", element.getSequenceElement(), -1);
3848    if (element.hasFocalElement())
3849      composeBoolean(t, "ClaimResponse", "focal", element.getFocalElement(), -1);
3850    if (element.hasCoverage())
3851      composeReference(t, "ClaimResponse", "coverage", element.getCoverage(), -1);
3852    if (element.hasBusinessArrangementElement())
3853      composeString(t, "ClaimResponse", "businessArrangement", element.getBusinessArrangementElement(), -1);
3854    if (element.hasClaimResponse())
3855      composeReference(t, "ClaimResponse", "claimResponse", element.getClaimResponse(), -1);
3856  }
3857
3858  protected void composeClinicalImpression(Complex parent, String parentType, String name, ClinicalImpression element, int index) {
3859    if (element == null) 
3860      return;
3861    Complex t;
3862    if (Utilities.noString(parentType))
3863      t = parent;
3864    else {
3865      t = parent.predicate("fhir:"+parentType+'.'+name);
3866    }
3867    composeDomainResource(t, "ClinicalImpression", name, element, index);
3868    for (int i = 0; i < element.getIdentifier().size(); i++)
3869      composeIdentifier(t, "ClinicalImpression", "identifier", element.getIdentifier().get(i), i);
3870    if (element.hasStatusElement())
3871      composeEnum(t, "ClinicalImpression", "status", element.getStatusElement(), -1);
3872    if (element.hasStatusReason())
3873      composeCodeableConcept(t, "ClinicalImpression", "statusReason", element.getStatusReason(), -1);
3874    if (element.hasCode())
3875      composeCodeableConcept(t, "ClinicalImpression", "code", element.getCode(), -1);
3876    if (element.hasDescriptionElement())
3877      composeString(t, "ClinicalImpression", "description", element.getDescriptionElement(), -1);
3878    if (element.hasSubject())
3879      composeReference(t, "ClinicalImpression", "subject", element.getSubject(), -1);
3880    if (element.hasContext())
3881      composeReference(t, "ClinicalImpression", "context", element.getContext(), -1);
3882    if (element.hasEffective())
3883      composeType(t, "ClinicalImpression", "effective", element.getEffective(), -1);
3884    if (element.hasDateElement())
3885      composeDateTime(t, "ClinicalImpression", "date", element.getDateElement(), -1);
3886    if (element.hasAssessor())
3887      composeReference(t, "ClinicalImpression", "assessor", element.getAssessor(), -1);
3888    if (element.hasPrevious())
3889      composeReference(t, "ClinicalImpression", "previous", element.getPrevious(), -1);
3890    for (int i = 0; i < element.getProblem().size(); i++)
3891      composeReference(t, "ClinicalImpression", "problem", element.getProblem().get(i), i);
3892    for (int i = 0; i < element.getInvestigation().size(); i++)
3893      composeClinicalImpressionClinicalImpressionInvestigationComponent(t, "ClinicalImpression", "investigation", element.getInvestigation().get(i), i);
3894    for (int i = 0; i < element.getProtocol().size(); i++)
3895      composeUri(t, "ClinicalImpression", "protocol", element.getProtocol().get(i), i);
3896    if (element.hasSummaryElement())
3897      composeString(t, "ClinicalImpression", "summary", element.getSummaryElement(), -1);
3898    for (int i = 0; i < element.getFinding().size(); i++)
3899      composeClinicalImpressionClinicalImpressionFindingComponent(t, "ClinicalImpression", "finding", element.getFinding().get(i), i);
3900    for (int i = 0; i < element.getPrognosisCodeableConcept().size(); i++)
3901      composeCodeableConcept(t, "ClinicalImpression", "prognosisCodeableConcept", element.getPrognosisCodeableConcept().get(i), i);
3902    for (int i = 0; i < element.getPrognosisReference().size(); i++)
3903      composeReference(t, "ClinicalImpression", "prognosisReference", element.getPrognosisReference().get(i), i);
3904    for (int i = 0; i < element.getSupportingInfo().size(); i++)
3905      composeReference(t, "ClinicalImpression", "supportingInfo", element.getSupportingInfo().get(i), i);
3906    for (int i = 0; i < element.getNote().size(); i++)
3907      composeAnnotation(t, "ClinicalImpression", "note", element.getNote().get(i), i);
3908  }
3909
3910  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(Complex parent, String parentType, String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element, int index) {
3911    if (element == null) 
3912      return;
3913    Complex t;
3914    if (Utilities.noString(parentType))
3915      t = parent;
3916    else {
3917      t = parent.predicate("fhir:"+parentType+'.'+name);
3918    }
3919    composeBackboneElement(t, "investigation", name, element, index);
3920    if (element.hasCode())
3921      composeCodeableConcept(t, "ClinicalImpression", "code", element.getCode(), -1);
3922    for (int i = 0; i < element.getItem().size(); i++)
3923      composeReference(t, "ClinicalImpression", "item", element.getItem().get(i), i);
3924  }
3925
3926  protected void composeClinicalImpressionClinicalImpressionFindingComponent(Complex parent, String parentType, String name, ClinicalImpression.ClinicalImpressionFindingComponent element, int index) {
3927    if (element == null) 
3928      return;
3929    Complex t;
3930    if (Utilities.noString(parentType))
3931      t = parent;
3932    else {
3933      t = parent.predicate("fhir:"+parentType+'.'+name);
3934    }
3935    composeBackboneElement(t, "finding", name, element, index);
3936    if (element.hasItemCodeableConcept())
3937      composeCodeableConcept(t, "ClinicalImpression", "itemCodeableConcept", element.getItemCodeableConcept(), -1);
3938    if (element.hasItemReference())
3939      composeReference(t, "ClinicalImpression", "itemReference", element.getItemReference(), -1);
3940    if (element.hasBasisElement())
3941      composeString(t, "ClinicalImpression", "basis", element.getBasisElement(), -1);
3942  }
3943
3944  protected void composeCodeSystem(Complex parent, String parentType, String name, CodeSystem element, int index) {
3945    if (element == null) 
3946      return;
3947    Complex t;
3948    if (Utilities.noString(parentType))
3949      t = parent;
3950    else {
3951      t = parent.predicate("fhir:"+parentType+'.'+name);
3952    }
3953    composeDomainResource(t, "CodeSystem", name, element, index);
3954    if (element.hasUrlElement())
3955      composeUri(t, "CodeSystem", "url", element.getUrlElement(), -1);
3956    for (int i = 0; i < element.getIdentifier().size(); i++)
3957      composeIdentifier(t, "CodeSystem", "identifier", element.getIdentifier().get(i), i);
3958    if (element.hasVersionElement())
3959      composeString(t, "CodeSystem", "version", element.getVersionElement(), -1);
3960    if (element.hasNameElement())
3961      composeString(t, "CodeSystem", "name", element.getNameElement(), -1);
3962    if (element.hasTitleElement())
3963      composeString(t, "CodeSystem", "title", element.getTitleElement(), -1);
3964    if (element.hasStatusElement())
3965      composeEnum(t, "CodeSystem", "status", element.getStatusElement(), -1);
3966    if (element.hasExperimentalElement())
3967      composeBoolean(t, "CodeSystem", "experimental", element.getExperimentalElement(), -1);
3968    if (element.hasDateElement())
3969      composeDateTime(t, "CodeSystem", "date", element.getDateElement(), -1);
3970    if (element.hasPublisherElement())
3971      composeString(t, "CodeSystem", "publisher", element.getPublisherElement(), -1);
3972    for (int i = 0; i < element.getContact().size(); i++)
3973      composeContactDetail(t, "CodeSystem", "contact", element.getContact().get(i), i);
3974    if (element.hasDescriptionElement())
3975      composeMarkdown(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
3976    for (int i = 0; i < element.getUseContext().size(); i++)
3977      composeUsageContext(t, "CodeSystem", "useContext", element.getUseContext().get(i), i);
3978    for (int i = 0; i < element.getJurisdiction().size(); i++)
3979      composeCodeableConcept(t, "CodeSystem", "jurisdiction", element.getJurisdiction().get(i), i);
3980    if (element.hasPurposeElement())
3981      composeMarkdown(t, "CodeSystem", "purpose", element.getPurposeElement(), -1);
3982    if (element.hasCopyrightElement())
3983      composeMarkdown(t, "CodeSystem", "copyright", element.getCopyrightElement(), -1);
3984    if (element.hasCaseSensitiveElement())
3985      composeBoolean(t, "CodeSystem", "caseSensitive", element.getCaseSensitiveElement(), -1);
3986    if (element.hasValueSetElement())
3987      composeCanonical(t, "CodeSystem", "valueSet", element.getValueSetElement(), -1);
3988    if (element.hasHierarchyMeaningElement())
3989      composeEnum(t, "CodeSystem", "hierarchyMeaning", element.getHierarchyMeaningElement(), -1);
3990    if (element.hasCompositionalElement())
3991      composeBoolean(t, "CodeSystem", "compositional", element.getCompositionalElement(), -1);
3992    if (element.hasVersionNeededElement())
3993      composeBoolean(t, "CodeSystem", "versionNeeded", element.getVersionNeededElement(), -1);
3994    if (element.hasContentElement())
3995      composeEnum(t, "CodeSystem", "content", element.getContentElement(), -1);
3996    if (element.hasSupplementsElement())
3997      composeCanonical(t, "CodeSystem", "supplements", element.getSupplementsElement(), -1);
3998    if (element.hasCountElement())
3999      composeUnsignedInt(t, "CodeSystem", "count", element.getCountElement(), -1);
4000    for (int i = 0; i < element.getFilter().size(); i++)
4001      composeCodeSystemCodeSystemFilterComponent(t, "CodeSystem", "filter", element.getFilter().get(i), i);
4002    for (int i = 0; i < element.getProperty().size(); i++)
4003      composeCodeSystemPropertyComponent(t, "CodeSystem", "property", element.getProperty().get(i), i);
4004    for (int i = 0; i < element.getConcept().size(); i++)
4005      composeCodeSystemConceptDefinitionComponent(t, "CodeSystem", "concept", element.getConcept().get(i), i);
4006  }
4007
4008  protected void composeCodeSystemCodeSystemFilterComponent(Complex parent, String parentType, String name, CodeSystem.CodeSystemFilterComponent element, int index) {
4009    if (element == null) 
4010      return;
4011    Complex t;
4012    if (Utilities.noString(parentType))
4013      t = parent;
4014    else {
4015      t = parent.predicate("fhir:"+parentType+'.'+name);
4016    }
4017    composeBackboneElement(t, "filter", name, element, index);
4018    if (element.hasCodeElement())
4019      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
4020    if (element.hasDescriptionElement())
4021      composeString(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
4022    for (int i = 0; i < element.getOperator().size(); i++)
4023      composeEnum(t, "CodeSystem", "operator", element.getOperator().get(i), i);
4024    if (element.hasValueElement())
4025      composeString(t, "CodeSystem", "value", element.getValueElement(), -1);
4026  }
4027
4028  protected void composeCodeSystemPropertyComponent(Complex parent, String parentType, String name, CodeSystem.PropertyComponent element, int index) {
4029    if (element == null) 
4030      return;
4031    Complex t;
4032    if (Utilities.noString(parentType))
4033      t = parent;
4034    else {
4035      t = parent.predicate("fhir:"+parentType+'.'+name);
4036    }
4037    composeBackboneElement(t, "property", name, element, index);
4038    if (element.hasCodeElement())
4039      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
4040    if (element.hasUriElement())
4041      composeUri(t, "CodeSystem", "uri", element.getUriElement(), -1);
4042    if (element.hasDescriptionElement())
4043      composeString(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
4044    if (element.hasTypeElement())
4045      composeEnum(t, "CodeSystem", "type", element.getTypeElement(), -1);
4046  }
4047
4048  protected void composeCodeSystemConceptDefinitionComponent(Complex parent, String parentType, String name, CodeSystem.ConceptDefinitionComponent element, int index) {
4049    if (element == null) 
4050      return;
4051    Complex t;
4052    if (Utilities.noString(parentType))
4053      t = parent;
4054    else {
4055      t = parent.predicate("fhir:"+parentType+'.'+name);
4056    }
4057    composeBackboneElement(t, "concept", name, element, index);
4058    if (element.hasCodeElement())
4059      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
4060    if (element.hasDisplayElement())
4061      composeString(t, "CodeSystem", "display", element.getDisplayElement(), -1);
4062    if (element.hasDefinitionElement())
4063      composeString(t, "CodeSystem", "definition", element.getDefinitionElement(), -1);
4064    for (int i = 0; i < element.getDesignation().size(); i++)
4065      composeCodeSystemConceptDefinitionDesignationComponent(t, "CodeSystem", "designation", element.getDesignation().get(i), i);
4066    for (int i = 0; i < element.getProperty().size(); i++)
4067      composeCodeSystemConceptPropertyComponent(t, "CodeSystem", "property", element.getProperty().get(i), i);
4068    for (int i = 0; i < element.getConcept().size(); i++)
4069      composeCodeSystemConceptDefinitionComponent(t, "CodeSystem", "concept", element.getConcept().get(i), i);
4070  }
4071
4072  protected void composeCodeSystemConceptDefinitionDesignationComponent(Complex parent, String parentType, String name, CodeSystem.ConceptDefinitionDesignationComponent element, int index) {
4073    if (element == null) 
4074      return;
4075    Complex t;
4076    if (Utilities.noString(parentType))
4077      t = parent;
4078    else {
4079      t = parent.predicate("fhir:"+parentType+'.'+name);
4080    }
4081    composeBackboneElement(t, "designation", name, element, index);
4082    if (element.hasLanguageElement())
4083      composeCode(t, "CodeSystem", "language", element.getLanguageElement(), -1);
4084    if (element.hasUse())
4085      composeCoding(t, "CodeSystem", "use", element.getUse(), -1);
4086    if (element.hasValueElement())
4087      composeString(t, "CodeSystem", "value", element.getValueElement(), -1);
4088  }
4089
4090  protected void composeCodeSystemConceptPropertyComponent(Complex parent, String parentType, String name, CodeSystem.ConceptPropertyComponent 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, "property", name, element, index);
4100    if (element.hasCodeElement())
4101      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
4102    if (element.hasValue())
4103      composeType(t, "CodeSystem", "value", element.getValue(), -1);
4104  }
4105
4106  protected void composeCommunication(Complex parent, String parentType, String name, Communication element, int index) {
4107    if (element == null) 
4108      return;
4109    Complex t;
4110    if (Utilities.noString(parentType))
4111      t = parent;
4112    else {
4113      t = parent.predicate("fhir:"+parentType+'.'+name);
4114    }
4115    composeDomainResource(t, "Communication", name, element, index);
4116    for (int i = 0; i < element.getIdentifier().size(); i++)
4117      composeIdentifier(t, "Communication", "identifier", element.getIdentifier().get(i), i);
4118    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
4119      composeCanonical(t, "Communication", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
4120    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
4121      composeUri(t, "Communication", "instantiatesUri", element.getInstantiatesUri().get(i), i);
4122    for (int i = 0; i < element.getBasedOn().size(); i++)
4123      composeReference(t, "Communication", "basedOn", element.getBasedOn().get(i), i);
4124    for (int i = 0; i < element.getPartOf().size(); i++)
4125      composeReference(t, "Communication", "partOf", element.getPartOf().get(i), i);
4126    for (int i = 0; i < element.getInResponseTo().size(); i++)
4127      composeReference(t, "Communication", "inResponseTo", element.getInResponseTo().get(i), i);
4128    if (element.hasStatusElement())
4129      composeEnum(t, "Communication", "status", element.getStatusElement(), -1);
4130    if (element.hasStatusReason())
4131      composeCodeableConcept(t, "Communication", "statusReason", element.getStatusReason(), -1);
4132    for (int i = 0; i < element.getCategory().size(); i++)
4133      composeCodeableConcept(t, "Communication", "category", element.getCategory().get(i), i);
4134    if (element.hasPriorityElement())
4135      composeEnum(t, "Communication", "priority", element.getPriorityElement(), -1);
4136    for (int i = 0; i < element.getMedium().size(); i++)
4137      composeCodeableConcept(t, "Communication", "medium", element.getMedium().get(i), i);
4138    if (element.hasSubject())
4139      composeReference(t, "Communication", "subject", element.getSubject(), -1);
4140    if (element.hasTopic())
4141      composeCodeableConcept(t, "Communication", "topic", element.getTopic(), -1);
4142    for (int i = 0; i < element.getAbout().size(); i++)
4143      composeReference(t, "Communication", "about", element.getAbout().get(i), i);
4144    if (element.hasContext())
4145      composeReference(t, "Communication", "context", element.getContext(), -1);
4146    if (element.hasSentElement())
4147      composeDateTime(t, "Communication", "sent", element.getSentElement(), -1);
4148    if (element.hasReceivedElement())
4149      composeDateTime(t, "Communication", "received", element.getReceivedElement(), -1);
4150    for (int i = 0; i < element.getRecipient().size(); i++)
4151      composeReference(t, "Communication", "recipient", element.getRecipient().get(i), i);
4152    if (element.hasSender())
4153      composeReference(t, "Communication", "sender", element.getSender(), -1);
4154    for (int i = 0; i < element.getReasonCode().size(); i++)
4155      composeCodeableConcept(t, "Communication", "reasonCode", element.getReasonCode().get(i), i);
4156    for (int i = 0; i < element.getReasonReference().size(); i++)
4157      composeReference(t, "Communication", "reasonReference", element.getReasonReference().get(i), i);
4158    for (int i = 0; i < element.getPayload().size(); i++)
4159      composeCommunicationCommunicationPayloadComponent(t, "Communication", "payload", element.getPayload().get(i), i);
4160    for (int i = 0; i < element.getNote().size(); i++)
4161      composeAnnotation(t, "Communication", "note", element.getNote().get(i), i);
4162  }
4163
4164  protected void composeCommunicationCommunicationPayloadComponent(Complex parent, String parentType, String name, Communication.CommunicationPayloadComponent element, int index) {
4165    if (element == null) 
4166      return;
4167    Complex t;
4168    if (Utilities.noString(parentType))
4169      t = parent;
4170    else {
4171      t = parent.predicate("fhir:"+parentType+'.'+name);
4172    }
4173    composeBackboneElement(t, "payload", name, element, index);
4174    if (element.hasContent())
4175      composeType(t, "Communication", "content", element.getContent(), -1);
4176  }
4177
4178  protected void composeCommunicationRequest(Complex parent, String parentType, String name, CommunicationRequest element, int index) {
4179    if (element == null) 
4180      return;
4181    Complex t;
4182    if (Utilities.noString(parentType))
4183      t = parent;
4184    else {
4185      t = parent.predicate("fhir:"+parentType+'.'+name);
4186    }
4187    composeDomainResource(t, "CommunicationRequest", name, element, index);
4188    for (int i = 0; i < element.getIdentifier().size(); i++)
4189      composeIdentifier(t, "CommunicationRequest", "identifier", element.getIdentifier().get(i), i);
4190    for (int i = 0; i < element.getBasedOn().size(); i++)
4191      composeReference(t, "CommunicationRequest", "basedOn", element.getBasedOn().get(i), i);
4192    for (int i = 0; i < element.getReplaces().size(); i++)
4193      composeReference(t, "CommunicationRequest", "replaces", element.getReplaces().get(i), i);
4194    if (element.hasGroupIdentifier())
4195      composeIdentifier(t, "CommunicationRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
4196    if (element.hasStatusElement())
4197      composeEnum(t, "CommunicationRequest", "status", element.getStatusElement(), -1);
4198    if (element.hasStatusReason())
4199      composeCodeableConcept(t, "CommunicationRequest", "statusReason", element.getStatusReason(), -1);
4200    for (int i = 0; i < element.getCategory().size(); i++)
4201      composeCodeableConcept(t, "CommunicationRequest", "category", element.getCategory().get(i), i);
4202    if (element.hasPriorityElement())
4203      composeEnum(t, "CommunicationRequest", "priority", element.getPriorityElement(), -1);
4204    if (element.hasDoNotPerformElement())
4205      composeBoolean(t, "CommunicationRequest", "doNotPerform", element.getDoNotPerformElement(), -1);
4206    for (int i = 0; i < element.getMedium().size(); i++)
4207      composeCodeableConcept(t, "CommunicationRequest", "medium", element.getMedium().get(i), i);
4208    if (element.hasSubject())
4209      composeReference(t, "CommunicationRequest", "subject", element.getSubject(), -1);
4210    for (int i = 0; i < element.getAbout().size(); i++)
4211      composeReference(t, "CommunicationRequest", "about", element.getAbout().get(i), i);
4212    if (element.hasContext())
4213      composeReference(t, "CommunicationRequest", "context", element.getContext(), -1);
4214    for (int i = 0; i < element.getPayload().size(); i++)
4215      composeCommunicationRequestCommunicationRequestPayloadComponent(t, "CommunicationRequest", "payload", element.getPayload().get(i), i);
4216    if (element.hasOccurrence())
4217      composeType(t, "CommunicationRequest", "occurrence", element.getOccurrence(), -1);
4218    if (element.hasAuthoredOnElement())
4219      composeDateTime(t, "CommunicationRequest", "authoredOn", element.getAuthoredOnElement(), -1);
4220    if (element.hasRequester())
4221      composeReference(t, "CommunicationRequest", "requester", element.getRequester(), -1);
4222    for (int i = 0; i < element.getRecipient().size(); i++)
4223      composeReference(t, "CommunicationRequest", "recipient", element.getRecipient().get(i), i);
4224    if (element.hasSender())
4225      composeReference(t, "CommunicationRequest", "sender", element.getSender(), -1);
4226    for (int i = 0; i < element.getReasonCode().size(); i++)
4227      composeCodeableConcept(t, "CommunicationRequest", "reasonCode", element.getReasonCode().get(i), i);
4228    for (int i = 0; i < element.getReasonReference().size(); i++)
4229      composeReference(t, "CommunicationRequest", "reasonReference", element.getReasonReference().get(i), i);
4230    for (int i = 0; i < element.getNote().size(); i++)
4231      composeAnnotation(t, "CommunicationRequest", "note", element.getNote().get(i), i);
4232  }
4233
4234  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(Complex parent, String parentType, String name, CommunicationRequest.CommunicationRequestPayloadComponent element, int index) {
4235    if (element == null) 
4236      return;
4237    Complex t;
4238    if (Utilities.noString(parentType))
4239      t = parent;
4240    else {
4241      t = parent.predicate("fhir:"+parentType+'.'+name);
4242    }
4243    composeBackboneElement(t, "payload", name, element, index);
4244    if (element.hasContent())
4245      composeType(t, "CommunicationRequest", "content", element.getContent(), -1);
4246  }
4247
4248  protected void composeCompartmentDefinition(Complex parent, String parentType, String name, CompartmentDefinition element, int index) {
4249    if (element == null) 
4250      return;
4251    Complex t;
4252    if (Utilities.noString(parentType))
4253      t = parent;
4254    else {
4255      t = parent.predicate("fhir:"+parentType+'.'+name);
4256    }
4257    composeDomainResource(t, "CompartmentDefinition", name, element, index);
4258    if (element.hasUrlElement())
4259      composeUri(t, "CompartmentDefinition", "url", element.getUrlElement(), -1);
4260    if (element.hasVersionElement())
4261      composeString(t, "CompartmentDefinition", "version", element.getVersionElement(), -1);
4262    if (element.hasNameElement())
4263      composeString(t, "CompartmentDefinition", "name", element.getNameElement(), -1);
4264    if (element.hasStatusElement())
4265      composeEnum(t, "CompartmentDefinition", "status", element.getStatusElement(), -1);
4266    if (element.hasExperimentalElement())
4267      composeBoolean(t, "CompartmentDefinition", "experimental", element.getExperimentalElement(), -1);
4268    if (element.hasDateElement())
4269      composeDateTime(t, "CompartmentDefinition", "date", element.getDateElement(), -1);
4270    if (element.hasPublisherElement())
4271      composeString(t, "CompartmentDefinition", "publisher", element.getPublisherElement(), -1);
4272    for (int i = 0; i < element.getContact().size(); i++)
4273      composeContactDetail(t, "CompartmentDefinition", "contact", element.getContact().get(i), i);
4274    if (element.hasDescriptionElement())
4275      composeMarkdown(t, "CompartmentDefinition", "description", element.getDescriptionElement(), -1);
4276    for (int i = 0; i < element.getUseContext().size(); i++)
4277      composeUsageContext(t, "CompartmentDefinition", "useContext", element.getUseContext().get(i), i);
4278    if (element.hasPurposeElement())
4279      composeMarkdown(t, "CompartmentDefinition", "purpose", element.getPurposeElement(), -1);
4280    if (element.hasCodeElement())
4281      composeEnum(t, "CompartmentDefinition", "code", element.getCodeElement(), -1);
4282    if (element.hasSearchElement())
4283      composeBoolean(t, "CompartmentDefinition", "search", element.getSearchElement(), -1);
4284    for (int i = 0; i < element.getResource().size(); i++)
4285      composeCompartmentDefinitionCompartmentDefinitionResourceComponent(t, "CompartmentDefinition", "resource", element.getResource().get(i), i);
4286  }
4287
4288  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(Complex parent, String parentType, String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element, int index) {
4289    if (element == null) 
4290      return;
4291    Complex t;
4292    if (Utilities.noString(parentType))
4293      t = parent;
4294    else {
4295      t = parent.predicate("fhir:"+parentType+'.'+name);
4296    }
4297    composeBackboneElement(t, "resource", name, element, index);
4298    if (element.hasCodeElement())
4299      composeCode(t, "CompartmentDefinition", "code", element.getCodeElement(), -1);
4300    for (int i = 0; i < element.getParam().size(); i++)
4301      composeString(t, "CompartmentDefinition", "param", element.getParam().get(i), i);
4302    if (element.hasDocumentationElement())
4303      composeString(t, "CompartmentDefinition", "documentation", element.getDocumentationElement(), -1);
4304  }
4305
4306  protected void composeComposition(Complex parent, String parentType, String name, Composition element, int index) {
4307    if (element == null) 
4308      return;
4309    Complex t;
4310    if (Utilities.noString(parentType))
4311      t = parent;
4312    else {
4313      t = parent.predicate("fhir:"+parentType+'.'+name);
4314    }
4315    composeDomainResource(t, "Composition", name, element, index);
4316    if (element.hasIdentifier())
4317      composeIdentifier(t, "Composition", "identifier", element.getIdentifier(), -1);
4318    if (element.hasStatusElement())
4319      composeEnum(t, "Composition", "status", element.getStatusElement(), -1);
4320    if (element.hasType())
4321      composeCodeableConcept(t, "Composition", "type", element.getType(), -1);
4322    for (int i = 0; i < element.getCategory().size(); i++)
4323      composeCodeableConcept(t, "Composition", "category", element.getCategory().get(i), i);
4324    if (element.hasSubject())
4325      composeReference(t, "Composition", "subject", element.getSubject(), -1);
4326    if (element.hasEncounter())
4327      composeReference(t, "Composition", "encounter", element.getEncounter(), -1);
4328    if (element.hasDateElement())
4329      composeDateTime(t, "Composition", "date", element.getDateElement(), -1);
4330    for (int i = 0; i < element.getAuthor().size(); i++)
4331      composeReference(t, "Composition", "author", element.getAuthor().get(i), i);
4332    if (element.hasTitleElement())
4333      composeString(t, "Composition", "title", element.getTitleElement(), -1);
4334    if (element.hasConfidentialityElement())
4335      composeEnum(t, "Composition", "confidentiality", element.getConfidentialityElement(), -1);
4336    for (int i = 0; i < element.getAttester().size(); i++)
4337      composeCompositionCompositionAttesterComponent(t, "Composition", "attester", element.getAttester().get(i), i);
4338    if (element.hasCustodian())
4339      composeReference(t, "Composition", "custodian", element.getCustodian(), -1);
4340    for (int i = 0; i < element.getRelatesTo().size(); i++)
4341      composeCompositionCompositionRelatesToComponent(t, "Composition", "relatesTo", element.getRelatesTo().get(i), i);
4342    for (int i = 0; i < element.getEvent().size(); i++)
4343      composeCompositionCompositionEventComponent(t, "Composition", "event", element.getEvent().get(i), i);
4344    for (int i = 0; i < element.getSection().size(); i++)
4345      composeCompositionSectionComponent(t, "Composition", "section", element.getSection().get(i), i);
4346  }
4347
4348  protected void composeCompositionCompositionAttesterComponent(Complex parent, String parentType, String name, Composition.CompositionAttesterComponent element, int index) {
4349    if (element == null) 
4350      return;
4351    Complex t;
4352    if (Utilities.noString(parentType))
4353      t = parent;
4354    else {
4355      t = parent.predicate("fhir:"+parentType+'.'+name);
4356    }
4357    composeBackboneElement(t, "attester", name, element, index);
4358    if (element.hasModeElement())
4359      composeEnum(t, "Composition", "mode", element.getModeElement(), -1);
4360    if (element.hasTimeElement())
4361      composeDateTime(t, "Composition", "time", element.getTimeElement(), -1);
4362    if (element.hasParty())
4363      composeReference(t, "Composition", "party", element.getParty(), -1);
4364  }
4365
4366  protected void composeCompositionCompositionRelatesToComponent(Complex parent, String parentType, String name, Composition.CompositionRelatesToComponent element, int index) {
4367    if (element == null) 
4368      return;
4369    Complex t;
4370    if (Utilities.noString(parentType))
4371      t = parent;
4372    else {
4373      t = parent.predicate("fhir:"+parentType+'.'+name);
4374    }
4375    composeBackboneElement(t, "relatesTo", name, element, index);
4376    if (element.hasCodeElement())
4377      composeEnum(t, "Composition", "code", element.getCodeElement(), -1);
4378    if (element.hasTarget())
4379      composeType(t, "Composition", "target", element.getTarget(), -1);
4380  }
4381
4382  protected void composeCompositionCompositionEventComponent(Complex parent, String parentType, String name, Composition.CompositionEventComponent element, int index) {
4383    if (element == null) 
4384      return;
4385    Complex t;
4386    if (Utilities.noString(parentType))
4387      t = parent;
4388    else {
4389      t = parent.predicate("fhir:"+parentType+'.'+name);
4390    }
4391    composeBackboneElement(t, "event", name, element, index);
4392    for (int i = 0; i < element.getCode().size(); i++)
4393      composeCodeableConcept(t, "Composition", "code", element.getCode().get(i), i);
4394    if (element.hasPeriod())
4395      composePeriod(t, "Composition", "period", element.getPeriod(), -1);
4396    for (int i = 0; i < element.getDetail().size(); i++)
4397      composeReference(t, "Composition", "detail", element.getDetail().get(i), i);
4398  }
4399
4400  protected void composeCompositionSectionComponent(Complex parent, String parentType, String name, Composition.SectionComponent element, int index) {
4401    if (element == null) 
4402      return;
4403    Complex t;
4404    if (Utilities.noString(parentType))
4405      t = parent;
4406    else {
4407      t = parent.predicate("fhir:"+parentType+'.'+name);
4408    }
4409    composeBackboneElement(t, "section", name, element, index);
4410    if (element.hasTitleElement())
4411      composeString(t, "Composition", "title", element.getTitleElement(), -1);
4412    if (element.hasCode())
4413      composeCodeableConcept(t, "Composition", "code", element.getCode(), -1);
4414    for (int i = 0; i < element.getAuthor().size(); i++)
4415      composeReference(t, "Composition", "author", element.getAuthor().get(i), i);
4416    if (element.hasText())
4417      composeNarrative(t, "Composition", "text", element.getText(), -1);
4418    if (element.hasModeElement())
4419      composeEnum(t, "Composition", "mode", element.getModeElement(), -1);
4420    if (element.hasOrderedBy())
4421      composeCodeableConcept(t, "Composition", "orderedBy", element.getOrderedBy(), -1);
4422    for (int i = 0; i < element.getEntry().size(); i++)
4423      composeReference(t, "Composition", "entry", element.getEntry().get(i), i);
4424    if (element.hasEmptyReason())
4425      composeCodeableConcept(t, "Composition", "emptyReason", element.getEmptyReason(), -1);
4426    for (int i = 0; i < element.getSection().size(); i++)
4427      composeCompositionSectionComponent(t, "Composition", "section", element.getSection().get(i), i);
4428  }
4429
4430  protected void composeConceptMap(Complex parent, String parentType, String name, ConceptMap element, int index) {
4431    if (element == null) 
4432      return;
4433    Complex t;
4434    if (Utilities.noString(parentType))
4435      t = parent;
4436    else {
4437      t = parent.predicate("fhir:"+parentType+'.'+name);
4438    }
4439    composeDomainResource(t, "ConceptMap", name, element, index);
4440    if (element.hasUrlElement())
4441      composeUri(t, "ConceptMap", "url", element.getUrlElement(), -1);
4442    if (element.hasIdentifier())
4443      composeIdentifier(t, "ConceptMap", "identifier", element.getIdentifier(), -1);
4444    if (element.hasVersionElement())
4445      composeString(t, "ConceptMap", "version", element.getVersionElement(), -1);
4446    if (element.hasNameElement())
4447      composeString(t, "ConceptMap", "name", element.getNameElement(), -1);
4448    if (element.hasTitleElement())
4449      composeString(t, "ConceptMap", "title", element.getTitleElement(), -1);
4450    if (element.hasStatusElement())
4451      composeEnum(t, "ConceptMap", "status", element.getStatusElement(), -1);
4452    if (element.hasExperimentalElement())
4453      composeBoolean(t, "ConceptMap", "experimental", element.getExperimentalElement(), -1);
4454    if (element.hasDateElement())
4455      composeDateTime(t, "ConceptMap", "date", element.getDateElement(), -1);
4456    if (element.hasPublisherElement())
4457      composeString(t, "ConceptMap", "publisher", element.getPublisherElement(), -1);
4458    for (int i = 0; i < element.getContact().size(); i++)
4459      composeContactDetail(t, "ConceptMap", "contact", element.getContact().get(i), i);
4460    if (element.hasDescriptionElement())
4461      composeMarkdown(t, "ConceptMap", "description", element.getDescriptionElement(), -1);
4462    for (int i = 0; i < element.getUseContext().size(); i++)
4463      composeUsageContext(t, "ConceptMap", "useContext", element.getUseContext().get(i), i);
4464    for (int i = 0; i < element.getJurisdiction().size(); i++)
4465      composeCodeableConcept(t, "ConceptMap", "jurisdiction", element.getJurisdiction().get(i), i);
4466    if (element.hasPurposeElement())
4467      composeMarkdown(t, "ConceptMap", "purpose", element.getPurposeElement(), -1);
4468    if (element.hasCopyrightElement())
4469      composeMarkdown(t, "ConceptMap", "copyright", element.getCopyrightElement(), -1);
4470    if (element.hasSource())
4471      composeType(t, "ConceptMap", "source", element.getSource(), -1);
4472    if (element.hasTarget())
4473      composeType(t, "ConceptMap", "target", element.getTarget(), -1);
4474    for (int i = 0; i < element.getGroup().size(); i++)
4475      composeConceptMapConceptMapGroupComponent(t, "ConceptMap", "group", element.getGroup().get(i), i);
4476  }
4477
4478  protected void composeConceptMapConceptMapGroupComponent(Complex parent, String parentType, String name, ConceptMap.ConceptMapGroupComponent 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, "group", name, element, index);
4488    if (element.hasSourceElement())
4489      composeUri(t, "ConceptMap", "source", element.getSourceElement(), -1);
4490    if (element.hasSourceVersionElement())
4491      composeString(t, "ConceptMap", "sourceVersion", element.getSourceVersionElement(), -1);
4492    if (element.hasTargetElement())
4493      composeUri(t, "ConceptMap", "target", element.getTargetElement(), -1);
4494    if (element.hasTargetVersionElement())
4495      composeString(t, "ConceptMap", "targetVersion", element.getTargetVersionElement(), -1);
4496    for (int i = 0; i < element.getElement().size(); i++)
4497      composeConceptMapSourceElementComponent(t, "ConceptMap", "element", element.getElement().get(i), i);
4498    if (element.hasUnmapped())
4499      composeConceptMapConceptMapGroupUnmappedComponent(t, "ConceptMap", "unmapped", element.getUnmapped(), -1);
4500  }
4501
4502  protected void composeConceptMapSourceElementComponent(Complex parent, String parentType, String name, ConceptMap.SourceElementComponent element, int index) {
4503    if (element == null) 
4504      return;
4505    Complex t;
4506    if (Utilities.noString(parentType))
4507      t = parent;
4508    else {
4509      t = parent.predicate("fhir:"+parentType+'.'+name);
4510    }
4511    composeBackboneElement(t, "element", name, element, index);
4512    if (element.hasCodeElement())
4513      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4514    if (element.hasDisplayElement())
4515      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4516    for (int i = 0; i < element.getTarget().size(); i++)
4517      composeConceptMapTargetElementComponent(t, "ConceptMap", "target", element.getTarget().get(i), i);
4518  }
4519
4520  protected void composeConceptMapTargetElementComponent(Complex parent, String parentType, String name, ConceptMap.TargetElementComponent element, int index) {
4521    if (element == null) 
4522      return;
4523    Complex t;
4524    if (Utilities.noString(parentType))
4525      t = parent;
4526    else {
4527      t = parent.predicate("fhir:"+parentType+'.'+name);
4528    }
4529    composeBackboneElement(t, "target", name, element, index);
4530    if (element.hasCodeElement())
4531      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4532    if (element.hasDisplayElement())
4533      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4534    if (element.hasEquivalenceElement())
4535      composeEnum(t, "ConceptMap", "equivalence", element.getEquivalenceElement(), -1);
4536    if (element.hasCommentElement())
4537      composeString(t, "ConceptMap", "comment", element.getCommentElement(), -1);
4538    for (int i = 0; i < element.getDependsOn().size(); i++)
4539      composeConceptMapOtherElementComponent(t, "ConceptMap", "dependsOn", element.getDependsOn().get(i), i);
4540    for (int i = 0; i < element.getProduct().size(); i++)
4541      composeConceptMapOtherElementComponent(t, "ConceptMap", "product", element.getProduct().get(i), i);
4542  }
4543
4544  protected void composeConceptMapOtherElementComponent(Complex parent, String parentType, String name, ConceptMap.OtherElementComponent element, int index) {
4545    if (element == null) 
4546      return;
4547    Complex t;
4548    if (Utilities.noString(parentType))
4549      t = parent;
4550    else {
4551      t = parent.predicate("fhir:"+parentType+'.'+name);
4552    }
4553    composeBackboneElement(t, "dependsOn", name, element, index);
4554    if (element.hasPropertyElement())
4555      composeUri(t, "ConceptMap", "property", element.getPropertyElement(), -1);
4556    if (element.hasSystemElement())
4557      composeCanonical(t, "ConceptMap", "system", element.getSystemElement(), -1);
4558    if (element.hasValueElement())
4559      composeString(t, "ConceptMap", "value", element.getValueElement(), -1);
4560    if (element.hasDisplayElement())
4561      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4562  }
4563
4564  protected void composeConceptMapConceptMapGroupUnmappedComponent(Complex parent, String parentType, String name, ConceptMap.ConceptMapGroupUnmappedComponent element, int index) {
4565    if (element == null) 
4566      return;
4567    Complex t;
4568    if (Utilities.noString(parentType))
4569      t = parent;
4570    else {
4571      t = parent.predicate("fhir:"+parentType+'.'+name);
4572    }
4573    composeBackboneElement(t, "unmapped", name, element, index);
4574    if (element.hasModeElement())
4575      composeEnum(t, "ConceptMap", "mode", element.getModeElement(), -1);
4576    if (element.hasCodeElement())
4577      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4578    if (element.hasDisplayElement())
4579      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4580    if (element.hasUrlElement())
4581      composeCanonical(t, "ConceptMap", "url", element.getUrlElement(), -1);
4582  }
4583
4584  protected void composeCondition(Complex parent, String parentType, String name, Condition element, int index) {
4585    if (element == null) 
4586      return;
4587    Complex t;
4588    if (Utilities.noString(parentType))
4589      t = parent;
4590    else {
4591      t = parent.predicate("fhir:"+parentType+'.'+name);
4592    }
4593    composeDomainResource(t, "Condition", name, element, index);
4594    for (int i = 0; i < element.getIdentifier().size(); i++)
4595      composeIdentifier(t, "Condition", "identifier", element.getIdentifier().get(i), i);
4596    if (element.hasClinicalStatus())
4597      composeCodeableConcept(t, "Condition", "clinicalStatus", element.getClinicalStatus(), -1);
4598    if (element.hasVerificationStatus())
4599      composeCodeableConcept(t, "Condition", "verificationStatus", element.getVerificationStatus(), -1);
4600    for (int i = 0; i < element.getCategory().size(); i++)
4601      composeCodeableConcept(t, "Condition", "category", element.getCategory().get(i), i);
4602    if (element.hasSeverity())
4603      composeCodeableConcept(t, "Condition", "severity", element.getSeverity(), -1);
4604    if (element.hasCode())
4605      composeCodeableConcept(t, "Condition", "code", element.getCode(), -1);
4606    for (int i = 0; i < element.getBodySite().size(); i++)
4607      composeCodeableConcept(t, "Condition", "bodySite", element.getBodySite().get(i), i);
4608    if (element.hasSubject())
4609      composeReference(t, "Condition", "subject", element.getSubject(), -1);
4610    if (element.hasContext())
4611      composeReference(t, "Condition", "context", element.getContext(), -1);
4612    if (element.hasOnset())
4613      composeType(t, "Condition", "onset", element.getOnset(), -1);
4614    if (element.hasAbatement())
4615      composeType(t, "Condition", "abatement", element.getAbatement(), -1);
4616    if (element.hasRecordedDateElement())
4617      composeDateTime(t, "Condition", "recordedDate", element.getRecordedDateElement(), -1);
4618    if (element.hasRecorder())
4619      composeReference(t, "Condition", "recorder", element.getRecorder(), -1);
4620    if (element.hasAsserter())
4621      composeReference(t, "Condition", "asserter", element.getAsserter(), -1);
4622    for (int i = 0; i < element.getStage().size(); i++)
4623      composeConditionConditionStageComponent(t, "Condition", "stage", element.getStage().get(i), i);
4624    for (int i = 0; i < element.getEvidence().size(); i++)
4625      composeConditionConditionEvidenceComponent(t, "Condition", "evidence", element.getEvidence().get(i), i);
4626    for (int i = 0; i < element.getNote().size(); i++)
4627      composeAnnotation(t, "Condition", "note", element.getNote().get(i), i);
4628  }
4629
4630  protected void composeConditionConditionStageComponent(Complex parent, String parentType, String name, Condition.ConditionStageComponent element, int index) {
4631    if (element == null) 
4632      return;
4633    Complex t;
4634    if (Utilities.noString(parentType))
4635      t = parent;
4636    else {
4637      t = parent.predicate("fhir:"+parentType+'.'+name);
4638    }
4639    composeBackboneElement(t, "stage", name, element, index);
4640    if (element.hasSummary())
4641      composeCodeableConcept(t, "Condition", "summary", element.getSummary(), -1);
4642    for (int i = 0; i < element.getAssessment().size(); i++)
4643      composeReference(t, "Condition", "assessment", element.getAssessment().get(i), i);
4644    if (element.hasType())
4645      composeCodeableConcept(t, "Condition", "type", element.getType(), -1);
4646  }
4647
4648  protected void composeConditionConditionEvidenceComponent(Complex parent, String parentType, String name, Condition.ConditionEvidenceComponent element, int index) {
4649    if (element == null) 
4650      return;
4651    Complex t;
4652    if (Utilities.noString(parentType))
4653      t = parent;
4654    else {
4655      t = parent.predicate("fhir:"+parentType+'.'+name);
4656    }
4657    composeBackboneElement(t, "evidence", name, element, index);
4658    for (int i = 0; i < element.getCode().size(); i++)
4659      composeCodeableConcept(t, "Condition", "code", element.getCode().get(i), i);
4660    for (int i = 0; i < element.getDetail().size(); i++)
4661      composeReference(t, "Condition", "detail", element.getDetail().get(i), i);
4662  }
4663
4664  protected void composeConsent(Complex parent, String parentType, String name, Consent element, int index) {
4665    if (element == null) 
4666      return;
4667    Complex t;
4668    if (Utilities.noString(parentType))
4669      t = parent;
4670    else {
4671      t = parent.predicate("fhir:"+parentType+'.'+name);
4672    }
4673    composeDomainResource(t, "Consent", name, element, index);
4674    for (int i = 0; i < element.getIdentifier().size(); i++)
4675      composeIdentifier(t, "Consent", "identifier", element.getIdentifier().get(i), i);
4676    if (element.hasStatusElement())
4677      composeEnum(t, "Consent", "status", element.getStatusElement(), -1);
4678    if (element.hasScope())
4679      composeCodeableConcept(t, "Consent", "scope", element.getScope(), -1);
4680    for (int i = 0; i < element.getCategory().size(); i++)
4681      composeCodeableConcept(t, "Consent", "category", element.getCategory().get(i), i);
4682    if (element.hasPatient())
4683      composeReference(t, "Consent", "patient", element.getPatient(), -1);
4684    if (element.hasDateTimeElement())
4685      composeDateTime(t, "Consent", "dateTime", element.getDateTimeElement(), -1);
4686    for (int i = 0; i < element.getPerformer().size(); i++)
4687      composeReference(t, "Consent", "performer", element.getPerformer().get(i), i);
4688    for (int i = 0; i < element.getOrganization().size(); i++)
4689      composeReference(t, "Consent", "organization", element.getOrganization().get(i), i);
4690    if (element.hasSource())
4691      composeType(t, "Consent", "source", element.getSource(), -1);
4692    for (int i = 0; i < element.getPolicy().size(); i++)
4693      composeConsentConsentPolicyComponent(t, "Consent", "policy", element.getPolicy().get(i), i);
4694    if (element.hasPolicyRule())
4695      composeCodeableConcept(t, "Consent", "policyRule", element.getPolicyRule(), -1);
4696    for (int i = 0; i < element.getVerification().size(); i++)
4697      composeConsentConsentVerificationComponent(t, "Consent", "verification", element.getVerification().get(i), i);
4698    if (element.hasProvision())
4699      composeConsentprovisionComponent(t, "Consent", "provision", element.getProvision(), -1);
4700  }
4701
4702  protected void composeConsentConsentPolicyComponent(Complex parent, String parentType, String name, Consent.ConsentPolicyComponent element, int index) {
4703    if (element == null) 
4704      return;
4705    Complex t;
4706    if (Utilities.noString(parentType))
4707      t = parent;
4708    else {
4709      t = parent.predicate("fhir:"+parentType+'.'+name);
4710    }
4711    composeBackboneElement(t, "policy", name, element, index);
4712    if (element.hasAuthorityElement())
4713      composeUri(t, "Consent", "authority", element.getAuthorityElement(), -1);
4714    if (element.hasUriElement())
4715      composeUri(t, "Consent", "uri", element.getUriElement(), -1);
4716  }
4717
4718  protected void composeConsentConsentVerificationComponent(Complex parent, String parentType, String name, Consent.ConsentVerificationComponent element, int index) {
4719    if (element == null) 
4720      return;
4721    Complex t;
4722    if (Utilities.noString(parentType))
4723      t = parent;
4724    else {
4725      t = parent.predicate("fhir:"+parentType+'.'+name);
4726    }
4727    composeBackboneElement(t, "verification", name, element, index);
4728    if (element.hasVerifiedElement())
4729      composeBoolean(t, "Consent", "verified", element.getVerifiedElement(), -1);
4730    if (element.hasVerifiedWith())
4731      composeReference(t, "Consent", "verifiedWith", element.getVerifiedWith(), -1);
4732    if (element.hasVerificationDateElement())
4733      composeDateTime(t, "Consent", "verificationDate", element.getVerificationDateElement(), -1);
4734  }
4735
4736  protected void composeConsentprovisionComponent(Complex parent, String parentType, String name, Consent.provisionComponent element, int index) {
4737    if (element == null) 
4738      return;
4739    Complex t;
4740    if (Utilities.noString(parentType))
4741      t = parent;
4742    else {
4743      t = parent.predicate("fhir:"+parentType+'.'+name);
4744    }
4745    composeBackboneElement(t, "provision", name, element, index);
4746    if (element.hasTypeElement())
4747      composeEnum(t, "Consent", "type", element.getTypeElement(), -1);
4748    if (element.hasPeriod())
4749      composePeriod(t, "Consent", "period", element.getPeriod(), -1);
4750    for (int i = 0; i < element.getActor().size(); i++)
4751      composeConsentprovisionActorComponent(t, "Consent", "actor", element.getActor().get(i), i);
4752    for (int i = 0; i < element.getAction().size(); i++)
4753      composeCodeableConcept(t, "Consent", "action", element.getAction().get(i), i);
4754    for (int i = 0; i < element.getSecurityLabel().size(); i++)
4755      composeCoding(t, "Consent", "securityLabel", element.getSecurityLabel().get(i), i);
4756    for (int i = 0; i < element.getPurpose().size(); i++)
4757      composeCoding(t, "Consent", "purpose", element.getPurpose().get(i), i);
4758    for (int i = 0; i < element.getClass_().size(); i++)
4759      composeCoding(t, "Consent", "class", element.getClass_().get(i), i);
4760    for (int i = 0; i < element.getCode().size(); i++)
4761      composeCodeableConcept(t, "Consent", "code", element.getCode().get(i), i);
4762    if (element.hasDataPeriod())
4763      composePeriod(t, "Consent", "dataPeriod", element.getDataPeriod(), -1);
4764    for (int i = 0; i < element.getData().size(); i++)
4765      composeConsentprovisionDataComponent(t, "Consent", "data", element.getData().get(i), i);
4766    for (int i = 0; i < element.getProvision().size(); i++)
4767      composeConsentprovisionComponent(t, "Consent", "provision", element.getProvision().get(i), i);
4768  }
4769
4770  protected void composeConsentprovisionActorComponent(Complex parent, String parentType, String name, Consent.provisionActorComponent element, int index) {
4771    if (element == null) 
4772      return;
4773    Complex t;
4774    if (Utilities.noString(parentType))
4775      t = parent;
4776    else {
4777      t = parent.predicate("fhir:"+parentType+'.'+name);
4778    }
4779    composeBackboneElement(t, "actor", name, element, index);
4780    if (element.hasRole())
4781      composeCodeableConcept(t, "Consent", "role", element.getRole(), -1);
4782    if (element.hasReference())
4783      composeReference(t, "Consent", "reference", element.getReference(), -1);
4784  }
4785
4786  protected void composeConsentprovisionDataComponent(Complex parent, String parentType, String name, Consent.provisionDataComponent element, int index) {
4787    if (element == null) 
4788      return;
4789    Complex t;
4790    if (Utilities.noString(parentType))
4791      t = parent;
4792    else {
4793      t = parent.predicate("fhir:"+parentType+'.'+name);
4794    }
4795    composeBackboneElement(t, "data", name, element, index);
4796    if (element.hasMeaningElement())
4797      composeEnum(t, "Consent", "meaning", element.getMeaningElement(), -1);
4798    if (element.hasReference())
4799      composeReference(t, "Consent", "reference", element.getReference(), -1);
4800  }
4801
4802  protected void composeContract(Complex parent, String parentType, String name, Contract element, int index) {
4803    if (element == null) 
4804      return;
4805    Complex t;
4806    if (Utilities.noString(parentType))
4807      t = parent;
4808    else {
4809      t = parent.predicate("fhir:"+parentType+'.'+name);
4810    }
4811    composeDomainResource(t, "Contract", name, element, index);
4812    for (int i = 0; i < element.getIdentifier().size(); i++)
4813      composeIdentifier(t, "Contract", "identifier", element.getIdentifier().get(i), i);
4814    if (element.hasUrlElement())
4815      composeUri(t, "Contract", "url", element.getUrlElement(), -1);
4816    if (element.hasVersionElement())
4817      composeString(t, "Contract", "version", element.getVersionElement(), -1);
4818    if (element.hasStatusElement())
4819      composeEnum(t, "Contract", "status", element.getStatusElement(), -1);
4820    if (element.hasLegalState())
4821      composeCodeableConcept(t, "Contract", "legalState", element.getLegalState(), -1);
4822    if (element.hasInstantiatesCanonical())
4823      composeReference(t, "Contract", "instantiatesCanonical", element.getInstantiatesCanonical(), -1);
4824    if (element.hasInstantiatesUriElement())
4825      composeUri(t, "Contract", "instantiatesUri", element.getInstantiatesUriElement(), -1);
4826    if (element.hasContentDerivative())
4827      composeCodeableConcept(t, "Contract", "contentDerivative", element.getContentDerivative(), -1);
4828    if (element.hasIssuedElement())
4829      composeDateTime(t, "Contract", "issued", element.getIssuedElement(), -1);
4830    if (element.hasApplies())
4831      composePeriod(t, "Contract", "applies", element.getApplies(), -1);
4832    if (element.hasExpirationType())
4833      composeCodeableConcept(t, "Contract", "expirationType", element.getExpirationType(), -1);
4834    for (int i = 0; i < element.getSubject().size(); i++)
4835      composeReference(t, "Contract", "subject", element.getSubject().get(i), i);
4836    for (int i = 0; i < element.getAuthority().size(); i++)
4837      composeReference(t, "Contract", "authority", element.getAuthority().get(i), i);
4838    for (int i = 0; i < element.getDomain().size(); i++)
4839      composeReference(t, "Contract", "domain", element.getDomain().get(i), i);
4840    for (int i = 0; i < element.getSite().size(); i++)
4841      composeReference(t, "Contract", "site", element.getSite().get(i), i);
4842    if (element.hasNameElement())
4843      composeString(t, "Contract", "name", element.getNameElement(), -1);
4844    if (element.hasTitleElement())
4845      composeString(t, "Contract", "title", element.getTitleElement(), -1);
4846    if (element.hasSubtitleElement())
4847      composeString(t, "Contract", "subtitle", element.getSubtitleElement(), -1);
4848    for (int i = 0; i < element.getAlias().size(); i++)
4849      composeString(t, "Contract", "alias", element.getAlias().get(i), i);
4850    if (element.hasAuthor())
4851      composeReference(t, "Contract", "author", element.getAuthor(), -1);
4852    if (element.hasScope())
4853      composeCodeableConcept(t, "Contract", "scope", element.getScope(), -1);
4854    if (element.hasTopic())
4855      composeType(t, "Contract", "topic", element.getTopic(), -1);
4856    if (element.hasType())
4857      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4858    for (int i = 0; i < element.getSubType().size(); i++)
4859      composeCodeableConcept(t, "Contract", "subType", element.getSubType().get(i), i);
4860    if (element.hasContentDefinition())
4861      composeContractContentDefinitionComponent(t, "Contract", "contentDefinition", element.getContentDefinition(), -1);
4862    for (int i = 0; i < element.getTerm().size(); i++)
4863      composeContractTermComponent(t, "Contract", "term", element.getTerm().get(i), i);
4864    for (int i = 0; i < element.getSupportingInfo().size(); i++)
4865      composeReference(t, "Contract", "supportingInfo", element.getSupportingInfo().get(i), i);
4866    for (int i = 0; i < element.getRelevantHistory().size(); i++)
4867      composeReference(t, "Contract", "relevantHistory", element.getRelevantHistory().get(i), i);
4868    for (int i = 0; i < element.getSigner().size(); i++)
4869      composeContractSignatoryComponent(t, "Contract", "signer", element.getSigner().get(i), i);
4870    for (int i = 0; i < element.getFriendly().size(); i++)
4871      composeContractFriendlyLanguageComponent(t, "Contract", "friendly", element.getFriendly().get(i), i);
4872    for (int i = 0; i < element.getLegal().size(); i++)
4873      composeContractLegalLanguageComponent(t, "Contract", "legal", element.getLegal().get(i), i);
4874    for (int i = 0; i < element.getRule().size(); i++)
4875      composeContractComputableLanguageComponent(t, "Contract", "rule", element.getRule().get(i), i);
4876    if (element.hasLegallyBinding())
4877      composeType(t, "Contract", "legallyBinding", element.getLegallyBinding(), -1);
4878  }
4879
4880  protected void composeContractContentDefinitionComponent(Complex parent, String parentType, String name, Contract.ContentDefinitionComponent element, int index) {
4881    if (element == null) 
4882      return;
4883    Complex t;
4884    if (Utilities.noString(parentType))
4885      t = parent;
4886    else {
4887      t = parent.predicate("fhir:"+parentType+'.'+name);
4888    }
4889    composeBackboneElement(t, "contentDefinition", name, element, index);
4890    if (element.hasType())
4891      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4892    if (element.hasSubType())
4893      composeCodeableConcept(t, "Contract", "subType", element.getSubType(), -1);
4894    if (element.hasPublisher())
4895      composeReference(t, "Contract", "publisher", element.getPublisher(), -1);
4896    if (element.hasPublicationDateElement())
4897      composeDateTime(t, "Contract", "publicationDate", element.getPublicationDateElement(), -1);
4898    if (element.hasPublicationStatusElement())
4899      composeEnum(t, "Contract", "publicationStatus", element.getPublicationStatusElement(), -1);
4900    if (element.hasCopyrightElement())
4901      composeMarkdown(t, "Contract", "copyright", element.getCopyrightElement(), -1);
4902  }
4903
4904  protected void composeContractTermComponent(Complex parent, String parentType, String name, Contract.TermComponent element, int index) {
4905    if (element == null) 
4906      return;
4907    Complex t;
4908    if (Utilities.noString(parentType))
4909      t = parent;
4910    else {
4911      t = parent.predicate("fhir:"+parentType+'.'+name);
4912    }
4913    composeBackboneElement(t, "term", name, element, index);
4914    if (element.hasIdentifier())
4915      composeIdentifier(t, "Contract", "identifier", element.getIdentifier(), -1);
4916    if (element.hasIssuedElement())
4917      composeDateTime(t, "Contract", "issued", element.getIssuedElement(), -1);
4918    if (element.hasApplies())
4919      composePeriod(t, "Contract", "applies", element.getApplies(), -1);
4920    if (element.hasTopic())
4921      composeType(t, "Contract", "topic", element.getTopic(), -1);
4922    if (element.hasType())
4923      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4924    if (element.hasSubType())
4925      composeCodeableConcept(t, "Contract", "subType", element.getSubType(), -1);
4926    if (element.hasTextElement())
4927      composeString(t, "Contract", "text", element.getTextElement(), -1);
4928    for (int i = 0; i < element.getSecurityLabel().size(); i++)
4929      composeContractSecurityLabelComponent(t, "Contract", "securityLabel", element.getSecurityLabel().get(i), i);
4930    if (element.hasOffer())
4931      composeContractContractOfferComponent(t, "Contract", "offer", element.getOffer(), -1);
4932    for (int i = 0; i < element.getAsset().size(); i++)
4933      composeContractContractAssetComponent(t, "Contract", "asset", element.getAsset().get(i), i);
4934    for (int i = 0; i < element.getAction().size(); i++)
4935      composeContractActionComponent(t, "Contract", "action", element.getAction().get(i), i);
4936    for (int i = 0; i < element.getGroup().size(); i++)
4937      composeContractTermComponent(t, "Contract", "group", element.getGroup().get(i), i);
4938  }
4939
4940  protected void composeContractSecurityLabelComponent(Complex parent, String parentType, String name, Contract.SecurityLabelComponent element, int index) {
4941    if (element == null) 
4942      return;
4943    Complex t;
4944    if (Utilities.noString(parentType))
4945      t = parent;
4946    else {
4947      t = parent.predicate("fhir:"+parentType+'.'+name);
4948    }
4949    composeBackboneElement(t, "securityLabel", name, element, index);
4950    for (int i = 0; i < element.getNumber().size(); i++)
4951      composeUnsignedInt(t, "Contract", "number", element.getNumber().get(i), i);
4952    if (element.hasClassification())
4953      composeCoding(t, "Contract", "classification", element.getClassification(), -1);
4954    for (int i = 0; i < element.getCategory().size(); i++)
4955      composeCoding(t, "Contract", "category", element.getCategory().get(i), i);
4956    for (int i = 0; i < element.getControl().size(); i++)
4957      composeCoding(t, "Contract", "control", element.getControl().get(i), i);
4958  }
4959
4960  protected void composeContractContractOfferComponent(Complex parent, String parentType, String name, Contract.ContractOfferComponent element, int index) {
4961    if (element == null) 
4962      return;
4963    Complex t;
4964    if (Utilities.noString(parentType))
4965      t = parent;
4966    else {
4967      t = parent.predicate("fhir:"+parentType+'.'+name);
4968    }
4969    composeBackboneElement(t, "offer", name, element, index);
4970    for (int i = 0; i < element.getIdentifier().size(); i++)
4971      composeIdentifier(t, "Contract", "identifier", element.getIdentifier().get(i), i);
4972    for (int i = 0; i < element.getParty().size(); i++)
4973      composeContractContractPartyComponent(t, "Contract", "party", element.getParty().get(i), i);
4974    if (element.hasTopic())
4975      composeReference(t, "Contract", "topic", element.getTopic(), -1);
4976    if (element.hasType())
4977      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4978    if (element.hasDecision())
4979      composeCodeableConcept(t, "Contract", "decision", element.getDecision(), -1);
4980    for (int i = 0; i < element.getDecisionMode().size(); i++)
4981      composeCodeableConcept(t, "Contract", "decisionMode", element.getDecisionMode().get(i), i);
4982    for (int i = 0; i < element.getAnswer().size(); i++)
4983      composeContractAnswerComponent(t, "Contract", "answer", element.getAnswer().get(i), i);
4984    if (element.hasTextElement())
4985      composeString(t, "Contract", "text", element.getTextElement(), -1);
4986    for (int i = 0; i < element.getLinkId().size(); i++)
4987      composeString(t, "Contract", "linkId", element.getLinkId().get(i), i);
4988    for (int i = 0; i < element.getSecurityLabelNumber().size(); i++)
4989      composeUnsignedInt(t, "Contract", "securityLabelNumber", element.getSecurityLabelNumber().get(i), i);
4990  }
4991
4992  protected void composeContractContractPartyComponent(Complex parent, String parentType, String name, Contract.ContractPartyComponent 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, "party", name, element, index);
5002    for (int i = 0; i < element.getReference().size(); i++)
5003      composeReference(t, "Contract", "reference", element.getReference().get(i), i);
5004    if (element.hasRole())
5005      composeCodeableConcept(t, "Contract", "role", element.getRole(), -1);
5006  }
5007
5008  protected void composeContractAnswerComponent(Complex parent, String parentType, String name, Contract.AnswerComponent element, int index) {
5009    if (element == null) 
5010      return;
5011    Complex t;
5012    if (Utilities.noString(parentType))
5013      t = parent;
5014    else {
5015      t = parent.predicate("fhir:"+parentType+'.'+name);
5016    }
5017    composeBackboneElement(t, "answer", name, element, index);
5018    if (element.hasValue())
5019      composeType(t, "Contract", "value", element.getValue(), -1);
5020  }
5021
5022  protected void composeContractContractAssetComponent(Complex parent, String parentType, String name, Contract.ContractAssetComponent element, int index) {
5023    if (element == null) 
5024      return;
5025    Complex t;
5026    if (Utilities.noString(parentType))
5027      t = parent;
5028    else {
5029      t = parent.predicate("fhir:"+parentType+'.'+name);
5030    }
5031    composeBackboneElement(t, "asset", name, element, index);
5032    if (element.hasScope())
5033      composeCodeableConcept(t, "Contract", "scope", element.getScope(), -1);
5034    for (int i = 0; i < element.getType().size(); i++)
5035      composeCodeableConcept(t, "Contract", "type", element.getType().get(i), i);
5036    for (int i = 0; i < element.getTypeReference().size(); i++)
5037      composeReference(t, "Contract", "typeReference", element.getTypeReference().get(i), i);
5038    for (int i = 0; i < element.getSubtype().size(); i++)
5039      composeCodeableConcept(t, "Contract", "subtype", element.getSubtype().get(i), i);
5040    if (element.hasRelationship())
5041      composeCoding(t, "Contract", "relationship", element.getRelationship(), -1);
5042    for (int i = 0; i < element.getContext().size(); i++)
5043      composeContractAssetContextComponent(t, "Contract", "context", element.getContext().get(i), i);
5044    if (element.hasConditionElement())
5045      composeString(t, "Contract", "condition", element.getConditionElement(), -1);
5046    for (int i = 0; i < element.getPeriodType().size(); i++)
5047      composeCodeableConcept(t, "Contract", "periodType", element.getPeriodType().get(i), i);
5048    for (int i = 0; i < element.getPeriod().size(); i++)
5049      composePeriod(t, "Contract", "period", element.getPeriod().get(i), i);
5050    for (int i = 0; i < element.getUsePeriod().size(); i++)
5051      composePeriod(t, "Contract", "usePeriod", element.getUsePeriod().get(i), i);
5052    if (element.hasTextElement())
5053      composeString(t, "Contract", "text", element.getTextElement(), -1);
5054    for (int i = 0; i < element.getLinkId().size(); i++)
5055      composeString(t, "Contract", "linkId", element.getLinkId().get(i), i);
5056    for (int i = 0; i < element.getAnswer().size(); i++)
5057      composeContractAnswerComponent(t, "Contract", "answer", element.getAnswer().get(i), i);
5058    for (int i = 0; i < element.getSecurityLabelNumber().size(); i++)
5059      composeUnsignedInt(t, "Contract", "securityLabelNumber", element.getSecurityLabelNumber().get(i), i);
5060    for (int i = 0; i < element.getValuedItem().size(); i++)
5061      composeContractValuedItemComponent(t, "Contract", "valuedItem", element.getValuedItem().get(i), i);
5062  }
5063
5064  protected void composeContractAssetContextComponent(Complex parent, String parentType, String name, Contract.AssetContextComponent element, int index) {
5065    if (element == null) 
5066      return;
5067    Complex t;
5068    if (Utilities.noString(parentType))
5069      t = parent;
5070    else {
5071      t = parent.predicate("fhir:"+parentType+'.'+name);
5072    }
5073    composeBackboneElement(t, "context", name, element, index);
5074    if (element.hasReference())
5075      composeReference(t, "Contract", "reference", element.getReference(), -1);
5076    for (int i = 0; i < element.getCode().size(); i++)
5077      composeCodeableConcept(t, "Contract", "code", element.getCode().get(i), i);
5078    if (element.hasTextElement())
5079      composeString(t, "Contract", "text", element.getTextElement(), -1);
5080  }
5081
5082  protected void composeContractValuedItemComponent(Complex parent, String parentType, String name, Contract.ValuedItemComponent element, int index) {
5083    if (element == null) 
5084      return;
5085    Complex t;
5086    if (Utilities.noString(parentType))
5087      t = parent;
5088    else {
5089      t = parent.predicate("fhir:"+parentType+'.'+name);
5090    }
5091    composeBackboneElement(t, "valuedItem", name, element, index);
5092    if (element.hasEntity())
5093      composeType(t, "Contract", "entity", element.getEntity(), -1);
5094    if (element.hasIdentifier())
5095      composeIdentifier(t, "Contract", "identifier", element.getIdentifier(), -1);
5096    if (element.hasEffectiveTimeElement())
5097      composeDateTime(t, "Contract", "effectiveTime", element.getEffectiveTimeElement(), -1);
5098    if (element.hasQuantity())
5099      composeQuantity(t, "Contract", "quantity", element.getQuantity(), -1);
5100    if (element.hasUnitPrice())
5101      composeMoney(t, "Contract", "unitPrice", element.getUnitPrice(), -1);
5102    if (element.hasFactorElement())
5103      composeDecimal(t, "Contract", "factor", element.getFactorElement(), -1);
5104    if (element.hasPointsElement())
5105      composeDecimal(t, "Contract", "points", element.getPointsElement(), -1);
5106    if (element.hasNet())
5107      composeMoney(t, "Contract", "net", element.getNet(), -1);
5108    if (element.hasPaymentElement())
5109      composeString(t, "Contract", "payment", element.getPaymentElement(), -1);
5110    if (element.hasPaymentDateElement())
5111      composeDateTime(t, "Contract", "paymentDate", element.getPaymentDateElement(), -1);
5112    if (element.hasResponsible())
5113      composeReference(t, "Contract", "responsible", element.getResponsible(), -1);
5114    if (element.hasRecipient())
5115      composeReference(t, "Contract", "recipient", element.getRecipient(), -1);
5116    for (int i = 0; i < element.getLinkId().size(); i++)
5117      composeString(t, "Contract", "linkId", element.getLinkId().get(i), i);
5118    for (int i = 0; i < element.getSecurityLabelNumber().size(); i++)
5119      composeUnsignedInt(t, "Contract", "securityLabelNumber", element.getSecurityLabelNumber().get(i), i);
5120  }
5121
5122  protected void composeContractActionComponent(Complex parent, String parentType, String name, Contract.ActionComponent element, int index) {
5123    if (element == null) 
5124      return;
5125    Complex t;
5126    if (Utilities.noString(parentType))
5127      t = parent;
5128    else {
5129      t = parent.predicate("fhir:"+parentType+'.'+name);
5130    }
5131    composeBackboneElement(t, "action", name, element, index);
5132    if (element.hasDoNotPerformElement())
5133      composeBoolean(t, "Contract", "doNotPerform", element.getDoNotPerformElement(), -1);
5134    if (element.hasType())
5135      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
5136    for (int i = 0; i < element.getSubject().size(); i++)
5137      composeContractActionSubjectComponent(t, "Contract", "subject", element.getSubject().get(i), i);
5138    if (element.hasIntent())
5139      composeCodeableConcept(t, "Contract", "intent", element.getIntent(), -1);
5140    for (int i = 0; i < element.getLinkId().size(); i++)
5141      composeString(t, "Contract", "linkId", element.getLinkId().get(i), i);
5142    if (element.hasStatus())
5143      composeCodeableConcept(t, "Contract", "status", element.getStatus(), -1);
5144    if (element.hasContext())
5145      composeReference(t, "Contract", "context", element.getContext(), -1);
5146    for (int i = 0; i < element.getContextLinkId().size(); i++)
5147      composeString(t, "Contract", "contextLinkId", element.getContextLinkId().get(i), i);
5148    if (element.hasOccurrence())
5149      composeType(t, "Contract", "occurrence", element.getOccurrence(), -1);
5150    for (int i = 0; i < element.getRequester().size(); i++)
5151      composeReference(t, "Contract", "requester", element.getRequester().get(i), i);
5152    for (int i = 0; i < element.getRequesterLinkId().size(); i++)
5153      composeString(t, "Contract", "requesterLinkId", element.getRequesterLinkId().get(i), i);
5154    for (int i = 0; i < element.getPerformerType().size(); i++)
5155      composeCodeableConcept(t, "Contract", "performerType", element.getPerformerType().get(i), i);
5156    if (element.hasPerformerRole())
5157      composeCodeableConcept(t, "Contract", "performerRole", element.getPerformerRole(), -1);
5158    if (element.hasPerformer())
5159      composeReference(t, "Contract", "performer", element.getPerformer(), -1);
5160    for (int i = 0; i < element.getPerformerLinkId().size(); i++)
5161      composeString(t, "Contract", "performerLinkId", element.getPerformerLinkId().get(i), i);
5162    for (int i = 0; i < element.getReasonCode().size(); i++)
5163      composeCodeableConcept(t, "Contract", "reasonCode", element.getReasonCode().get(i), i);
5164    for (int i = 0; i < element.getReasonReference().size(); i++)
5165      composeReference(t, "Contract", "reasonReference", element.getReasonReference().get(i), i);
5166    for (int i = 0; i < element.getReason().size(); i++)
5167      composeString(t, "Contract", "reason", element.getReason().get(i), i);
5168    for (int i = 0; i < element.getReasonLinkId().size(); i++)
5169      composeString(t, "Contract", "reasonLinkId", element.getReasonLinkId().get(i), i);
5170    for (int i = 0; i < element.getNote().size(); i++)
5171      composeAnnotation(t, "Contract", "note", element.getNote().get(i), i);
5172    for (int i = 0; i < element.getSecurityLabelNumber().size(); i++)
5173      composeUnsignedInt(t, "Contract", "securityLabelNumber", element.getSecurityLabelNumber().get(i), i);
5174  }
5175
5176  protected void composeContractActionSubjectComponent(Complex parent, String parentType, String name, Contract.ActionSubjectComponent element, int index) {
5177    if (element == null) 
5178      return;
5179    Complex t;
5180    if (Utilities.noString(parentType))
5181      t = parent;
5182    else {
5183      t = parent.predicate("fhir:"+parentType+'.'+name);
5184    }
5185    composeBackboneElement(t, "subject", name, element, index);
5186    for (int i = 0; i < element.getReference().size(); i++)
5187      composeReference(t, "Contract", "reference", element.getReference().get(i), i);
5188    if (element.hasRole())
5189      composeCodeableConcept(t, "Contract", "role", element.getRole(), -1);
5190  }
5191
5192  protected void composeContractSignatoryComponent(Complex parent, String parentType, String name, Contract.SignatoryComponent element, int index) {
5193    if (element == null) 
5194      return;
5195    Complex t;
5196    if (Utilities.noString(parentType))
5197      t = parent;
5198    else {
5199      t = parent.predicate("fhir:"+parentType+'.'+name);
5200    }
5201    composeBackboneElement(t, "signer", name, element, index);
5202    if (element.hasType())
5203      composeCoding(t, "Contract", "type", element.getType(), -1);
5204    if (element.hasParty())
5205      composeReference(t, "Contract", "party", element.getParty(), -1);
5206    for (int i = 0; i < element.getSignature().size(); i++)
5207      composeSignature(t, "Contract", "signature", element.getSignature().get(i), i);
5208  }
5209
5210  protected void composeContractFriendlyLanguageComponent(Complex parent, String parentType, String name, Contract.FriendlyLanguageComponent element, int index) {
5211    if (element == null) 
5212      return;
5213    Complex t;
5214    if (Utilities.noString(parentType))
5215      t = parent;
5216    else {
5217      t = parent.predicate("fhir:"+parentType+'.'+name);
5218    }
5219    composeBackboneElement(t, "friendly", name, element, index);
5220    if (element.hasContent())
5221      composeType(t, "Contract", "content", element.getContent(), -1);
5222  }
5223
5224  protected void composeContractLegalLanguageComponent(Complex parent, String parentType, String name, Contract.LegalLanguageComponent element, int index) {
5225    if (element == null) 
5226      return;
5227    Complex t;
5228    if (Utilities.noString(parentType))
5229      t = parent;
5230    else {
5231      t = parent.predicate("fhir:"+parentType+'.'+name);
5232    }
5233    composeBackboneElement(t, "legal", name, element, index);
5234    if (element.hasContent())
5235      composeType(t, "Contract", "content", element.getContent(), -1);
5236  }
5237
5238  protected void composeContractComputableLanguageComponent(Complex parent, String parentType, String name, Contract.ComputableLanguageComponent 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, "rule", name, element, index);
5248    if (element.hasContent())
5249      composeType(t, "Contract", "content", element.getContent(), -1);
5250  }
5251
5252  protected void composeCoverage(Complex parent, String parentType, String name, Coverage element, int index) {
5253    if (element == null) 
5254      return;
5255    Complex t;
5256    if (Utilities.noString(parentType))
5257      t = parent;
5258    else {
5259      t = parent.predicate("fhir:"+parentType+'.'+name);
5260    }
5261    composeDomainResource(t, "Coverage", name, element, index);
5262    for (int i = 0; i < element.getIdentifier().size(); i++)
5263      composeIdentifier(t, "Coverage", "identifier", element.getIdentifier().get(i), i);
5264    if (element.hasStatusElement())
5265      composeEnum(t, "Coverage", "status", element.getStatusElement(), -1);
5266    if (element.hasType())
5267      composeCodeableConcept(t, "Coverage", "type", element.getType(), -1);
5268    if (element.hasPolicyHolder())
5269      composeReference(t, "Coverage", "policyHolder", element.getPolicyHolder(), -1);
5270    if (element.hasSubscriber())
5271      composeReference(t, "Coverage", "subscriber", element.getSubscriber(), -1);
5272    if (element.hasSubscriberIdElement())
5273      composeString(t, "Coverage", "subscriberId", element.getSubscriberIdElement(), -1);
5274    if (element.hasBeneficiary())
5275      composeReference(t, "Coverage", "beneficiary", element.getBeneficiary(), -1);
5276    if (element.hasDependentElement())
5277      composeString(t, "Coverage", "dependent", element.getDependentElement(), -1);
5278    if (element.hasRelationship())
5279      composeCodeableConcept(t, "Coverage", "relationship", element.getRelationship(), -1);
5280    if (element.hasPeriod())
5281      composePeriod(t, "Coverage", "period", element.getPeriod(), -1);
5282    for (int i = 0; i < element.getPayor().size(); i++)
5283      composeReference(t, "Coverage", "payor", element.getPayor().get(i), i);
5284    for (int i = 0; i < element.getClass_().size(); i++)
5285      composeCoverageClassComponent(t, "Coverage", "class", element.getClass_().get(i), i);
5286    if (element.hasOrderElement())
5287      composePositiveInt(t, "Coverage", "order", element.getOrderElement(), -1);
5288    if (element.hasNetworkElement())
5289      composeString(t, "Coverage", "network", element.getNetworkElement(), -1);
5290    for (int i = 0; i < element.getCopay().size(); i++)
5291      composeCoverageCoPayComponent(t, "Coverage", "copay", element.getCopay().get(i), i);
5292    for (int i = 0; i < element.getContract().size(); i++)
5293      composeReference(t, "Coverage", "contract", element.getContract().get(i), i);
5294  }
5295
5296  protected void composeCoverageClassComponent(Complex parent, String parentType, String name, Coverage.ClassComponent element, int index) {
5297    if (element == null) 
5298      return;
5299    Complex t;
5300    if (Utilities.noString(parentType))
5301      t = parent;
5302    else {
5303      t = parent.predicate("fhir:"+parentType+'.'+name);
5304    }
5305    composeBackboneElement(t, "class", name, element, index);
5306    if (element.hasType())
5307      composeCoding(t, "Coverage", "type", element.getType(), -1);
5308    if (element.hasValueElement())
5309      composeString(t, "Coverage", "value", element.getValueElement(), -1);
5310    if (element.hasNameElement())
5311      composeString(t, "Coverage", "name", element.getNameElement(), -1);
5312  }
5313
5314  protected void composeCoverageCoPayComponent(Complex parent, String parentType, String name, Coverage.CoPayComponent element, int index) {
5315    if (element == null) 
5316      return;
5317    Complex t;
5318    if (Utilities.noString(parentType))
5319      t = parent;
5320    else {
5321      t = parent.predicate("fhir:"+parentType+'.'+name);
5322    }
5323    composeBackboneElement(t, "copay", name, element, index);
5324    if (element.hasType())
5325      composeCoding(t, "Coverage", "type", element.getType(), -1);
5326    if (element.hasValue())
5327      composeQuantity(t, "Coverage", "value", element.getValue(), -1);
5328  }
5329
5330  protected void composeCoverageEligibilityRequest(Complex parent, String parentType, String name, CoverageEligibilityRequest element, int index) {
5331    if (element == null) 
5332      return;
5333    Complex t;
5334    if (Utilities.noString(parentType))
5335      t = parent;
5336    else {
5337      t = parent.predicate("fhir:"+parentType+'.'+name);
5338    }
5339    composeDomainResource(t, "CoverageEligibilityRequest", name, element, index);
5340    for (int i = 0; i < element.getIdentifier().size(); i++)
5341      composeIdentifier(t, "CoverageEligibilityRequest", "identifier", element.getIdentifier().get(i), i);
5342    if (element.hasStatusElement())
5343      composeEnum(t, "CoverageEligibilityRequest", "status", element.getStatusElement(), -1);
5344    if (element.hasPriority())
5345      composeCodeableConcept(t, "CoverageEligibilityRequest", "priority", element.getPriority(), -1);
5346    for (int i = 0; i < element.getPurpose().size(); i++)
5347      composeEnum(t, "CoverageEligibilityRequest", "purpose", element.getPurpose().get(i), i);
5348    if (element.hasPatient())
5349      composeReference(t, "CoverageEligibilityRequest", "patient", element.getPatient(), -1);
5350    if (element.hasServiced())
5351      composeType(t, "CoverageEligibilityRequest", "serviced", element.getServiced(), -1);
5352    if (element.hasCreatedElement())
5353      composeDateTime(t, "CoverageEligibilityRequest", "created", element.getCreatedElement(), -1);
5354    if (element.hasEnterer())
5355      composeReference(t, "CoverageEligibilityRequest", "enterer", element.getEnterer(), -1);
5356    if (element.hasProvider())
5357      composeReference(t, "CoverageEligibilityRequest", "provider", element.getProvider(), -1);
5358    if (element.hasInsurer())
5359      composeReference(t, "CoverageEligibilityRequest", "insurer", element.getInsurer(), -1);
5360    if (element.hasFacility())
5361      composeReference(t, "CoverageEligibilityRequest", "facility", element.getFacility(), -1);
5362    for (int i = 0; i < element.getSupportingInformation().size(); i++)
5363      composeCoverageEligibilityRequestInformationComponent(t, "CoverageEligibilityRequest", "supportingInformation", element.getSupportingInformation().get(i), i);
5364    for (int i = 0; i < element.getInsurance().size(); i++)
5365      composeCoverageEligibilityRequestInsuranceComponent(t, "CoverageEligibilityRequest", "insurance", element.getInsurance().get(i), i);
5366    for (int i = 0; i < element.getItem().size(); i++)
5367      composeCoverageEligibilityRequestDetailsComponent(t, "CoverageEligibilityRequest", "item", element.getItem().get(i), i);
5368  }
5369
5370  protected void composeCoverageEligibilityRequestInformationComponent(Complex parent, String parentType, String name, CoverageEligibilityRequest.InformationComponent element, int index) {
5371    if (element == null) 
5372      return;
5373    Complex t;
5374    if (Utilities.noString(parentType))
5375      t = parent;
5376    else {
5377      t = parent.predicate("fhir:"+parentType+'.'+name);
5378    }
5379    composeBackboneElement(t, "supportingInformation", name, element, index);
5380    if (element.hasSequenceElement())
5381      composePositiveInt(t, "CoverageEligibilityRequest", "sequence", element.getSequenceElement(), -1);
5382    if (element.hasInformation())
5383      composeReference(t, "CoverageEligibilityRequest", "information", element.getInformation(), -1);
5384    if (element.hasAppliesToAllElement())
5385      composeBoolean(t, "CoverageEligibilityRequest", "appliesToAll", element.getAppliesToAllElement(), -1);
5386  }
5387
5388  protected void composeCoverageEligibilityRequestInsuranceComponent(Complex parent, String parentType, String name, CoverageEligibilityRequest.InsuranceComponent element, int index) {
5389    if (element == null) 
5390      return;
5391    Complex t;
5392    if (Utilities.noString(parentType))
5393      t = parent;
5394    else {
5395      t = parent.predicate("fhir:"+parentType+'.'+name);
5396    }
5397    composeBackboneElement(t, "insurance", name, element, index);
5398    if (element.hasFocalElement())
5399      composeBoolean(t, "CoverageEligibilityRequest", "focal", element.getFocalElement(), -1);
5400    if (element.hasCoverage())
5401      composeReference(t, "CoverageEligibilityRequest", "coverage", element.getCoverage(), -1);
5402    if (element.hasBusinessArrangementElement())
5403      composeString(t, "CoverageEligibilityRequest", "businessArrangement", element.getBusinessArrangementElement(), -1);
5404  }
5405
5406  protected void composeCoverageEligibilityRequestDetailsComponent(Complex parent, String parentType, String name, CoverageEligibilityRequest.DetailsComponent element, int index) {
5407    if (element == null) 
5408      return;
5409    Complex t;
5410    if (Utilities.noString(parentType))
5411      t = parent;
5412    else {
5413      t = parent.predicate("fhir:"+parentType+'.'+name);
5414    }
5415    composeBackboneElement(t, "item", name, element, index);
5416    for (int i = 0; i < element.getSupportingInformationSequence().size(); i++)
5417      composePositiveInt(t, "CoverageEligibilityRequest", "supportingInformationSequence", element.getSupportingInformationSequence().get(i), i);
5418    if (element.hasCategory())
5419      composeCodeableConcept(t, "CoverageEligibilityRequest", "category", element.getCategory(), -1);
5420    if (element.hasBillcode())
5421      composeCodeableConcept(t, "CoverageEligibilityRequest", "billcode", element.getBillcode(), -1);
5422    for (int i = 0; i < element.getModifier().size(); i++)
5423      composeCodeableConcept(t, "CoverageEligibilityRequest", "modifier", element.getModifier().get(i), i);
5424    if (element.hasProvider())
5425      composeReference(t, "CoverageEligibilityRequest", "provider", element.getProvider(), -1);
5426    if (element.hasQuantity())
5427      composeQuantity(t, "CoverageEligibilityRequest", "quantity", element.getQuantity(), -1);
5428    if (element.hasUnitPrice())
5429      composeMoney(t, "CoverageEligibilityRequest", "unitPrice", element.getUnitPrice(), -1);
5430    if (element.hasFacility())
5431      composeReference(t, "CoverageEligibilityRequest", "facility", element.getFacility(), -1);
5432    for (int i = 0; i < element.getDiagnosis().size(); i++)
5433      composeCoverageEligibilityRequestDiagnosisComponent(t, "CoverageEligibilityRequest", "diagnosis", element.getDiagnosis().get(i), i);
5434    for (int i = 0; i < element.getDetail().size(); i++)
5435      composeReference(t, "CoverageEligibilityRequest", "detail", element.getDetail().get(i), i);
5436  }
5437
5438  protected void composeCoverageEligibilityRequestDiagnosisComponent(Complex parent, String parentType, String name, CoverageEligibilityRequest.DiagnosisComponent element, int index) {
5439    if (element == null) 
5440      return;
5441    Complex t;
5442    if (Utilities.noString(parentType))
5443      t = parent;
5444    else {
5445      t = parent.predicate("fhir:"+parentType+'.'+name);
5446    }
5447    composeBackboneElement(t, "diagnosis", name, element, index);
5448    if (element.hasDiagnosis())
5449      composeType(t, "CoverageEligibilityRequest", "diagnosis", element.getDiagnosis(), -1);
5450  }
5451
5452  protected void composeCoverageEligibilityResponse(Complex parent, String parentType, String name, CoverageEligibilityResponse element, int index) {
5453    if (element == null) 
5454      return;
5455    Complex t;
5456    if (Utilities.noString(parentType))
5457      t = parent;
5458    else {
5459      t = parent.predicate("fhir:"+parentType+'.'+name);
5460    }
5461    composeDomainResource(t, "CoverageEligibilityResponse", name, element, index);
5462    for (int i = 0; i < element.getIdentifier().size(); i++)
5463      composeIdentifier(t, "CoverageEligibilityResponse", "identifier", element.getIdentifier().get(i), i);
5464    if (element.hasStatusElement())
5465      composeEnum(t, "CoverageEligibilityResponse", "status", element.getStatusElement(), -1);
5466    for (int i = 0; i < element.getPurpose().size(); i++)
5467      composeEnum(t, "CoverageEligibilityResponse", "purpose", element.getPurpose().get(i), i);
5468    if (element.hasPatient())
5469      composeReference(t, "CoverageEligibilityResponse", "patient", element.getPatient(), -1);
5470    if (element.hasServiced())
5471      composeType(t, "CoverageEligibilityResponse", "serviced", element.getServiced(), -1);
5472    if (element.hasCreatedElement())
5473      composeDateTime(t, "CoverageEligibilityResponse", "created", element.getCreatedElement(), -1);
5474    if (element.hasRequestProvider())
5475      composeReference(t, "CoverageEligibilityResponse", "requestProvider", element.getRequestProvider(), -1);
5476    if (element.hasRequest())
5477      composeReference(t, "CoverageEligibilityResponse", "request", element.getRequest(), -1);
5478    if (element.hasOutcomeElement())
5479      composeEnum(t, "CoverageEligibilityResponse", "outcome", element.getOutcomeElement(), -1);
5480    if (element.hasDispositionElement())
5481      composeString(t, "CoverageEligibilityResponse", "disposition", element.getDispositionElement(), -1);
5482    if (element.hasInsurer())
5483      composeReference(t, "CoverageEligibilityResponse", "insurer", element.getInsurer(), -1);
5484    for (int i = 0; i < element.getInsurance().size(); i++)
5485      composeCoverageEligibilityResponseInsuranceComponent(t, "CoverageEligibilityResponse", "insurance", element.getInsurance().get(i), i);
5486    if (element.hasPreAuthRefElement())
5487      composeString(t, "CoverageEligibilityResponse", "preAuthRef", element.getPreAuthRefElement(), -1);
5488    if (element.hasForm())
5489      composeCodeableConcept(t, "CoverageEligibilityResponse", "form", element.getForm(), -1);
5490    for (int i = 0; i < element.getError().size(); i++)
5491      composeCoverageEligibilityResponseErrorsComponent(t, "CoverageEligibilityResponse", "error", element.getError().get(i), i);
5492  }
5493
5494  protected void composeCoverageEligibilityResponseInsuranceComponent(Complex parent, String parentType, String name, CoverageEligibilityResponse.InsuranceComponent element, int index) {
5495    if (element == null) 
5496      return;
5497    Complex t;
5498    if (Utilities.noString(parentType))
5499      t = parent;
5500    else {
5501      t = parent.predicate("fhir:"+parentType+'.'+name);
5502    }
5503    composeBackboneElement(t, "insurance", name, element, index);
5504    if (element.hasCoverage())
5505      composeReference(t, "CoverageEligibilityResponse", "coverage", element.getCoverage(), -1);
5506    if (element.hasContract())
5507      composeReference(t, "CoverageEligibilityResponse", "contract", element.getContract(), -1);
5508    if (element.hasInforceElement())
5509      composeBoolean(t, "CoverageEligibilityResponse", "inforce", element.getInforceElement(), -1);
5510    for (int i = 0; i < element.getItem().size(); i++)
5511      composeCoverageEligibilityResponseItemsComponent(t, "CoverageEligibilityResponse", "item", element.getItem().get(i), i);
5512  }
5513
5514  protected void composeCoverageEligibilityResponseItemsComponent(Complex parent, String parentType, String name, CoverageEligibilityResponse.ItemsComponent element, int index) {
5515    if (element == null) 
5516      return;
5517    Complex t;
5518    if (Utilities.noString(parentType))
5519      t = parent;
5520    else {
5521      t = parent.predicate("fhir:"+parentType+'.'+name);
5522    }
5523    composeBackboneElement(t, "item", name, element, index);
5524    if (element.hasCategory())
5525      composeCodeableConcept(t, "CoverageEligibilityResponse", "category", element.getCategory(), -1);
5526    if (element.hasBillcode())
5527      composeCodeableConcept(t, "CoverageEligibilityResponse", "billcode", element.getBillcode(), -1);
5528    for (int i = 0; i < element.getModifier().size(); i++)
5529      composeCodeableConcept(t, "CoverageEligibilityResponse", "modifier", element.getModifier().get(i), i);
5530    if (element.hasProvider())
5531      composeReference(t, "CoverageEligibilityResponse", "provider", element.getProvider(), -1);
5532    if (element.hasExcludedElement())
5533      composeBoolean(t, "CoverageEligibilityResponse", "excluded", element.getExcludedElement(), -1);
5534    if (element.hasNameElement())
5535      composeString(t, "CoverageEligibilityResponse", "name", element.getNameElement(), -1);
5536    if (element.hasDescriptionElement())
5537      composeString(t, "CoverageEligibilityResponse", "description", element.getDescriptionElement(), -1);
5538    if (element.hasNetwork())
5539      composeCodeableConcept(t, "CoverageEligibilityResponse", "network", element.getNetwork(), -1);
5540    if (element.hasUnit())
5541      composeCodeableConcept(t, "CoverageEligibilityResponse", "unit", element.getUnit(), -1);
5542    if (element.hasTerm())
5543      composeCodeableConcept(t, "CoverageEligibilityResponse", "term", element.getTerm(), -1);
5544    for (int i = 0; i < element.getBenefit().size(); i++)
5545      composeCoverageEligibilityResponseBenefitComponent(t, "CoverageEligibilityResponse", "benefit", element.getBenefit().get(i), i);
5546    if (element.hasAuthorizationRequiredElement())
5547      composeBoolean(t, "CoverageEligibilityResponse", "authorizationRequired", element.getAuthorizationRequiredElement(), -1);
5548    for (int i = 0; i < element.getAuthorizationSupporting().size(); i++)
5549      composeCodeableConcept(t, "CoverageEligibilityResponse", "authorizationSupporting", element.getAuthorizationSupporting().get(i), i);
5550    if (element.hasAuthorizationUrlElement())
5551      composeUri(t, "CoverageEligibilityResponse", "authorizationUrl", element.getAuthorizationUrlElement(), -1);
5552  }
5553
5554  protected void composeCoverageEligibilityResponseBenefitComponent(Complex parent, String parentType, String name, CoverageEligibilityResponse.BenefitComponent element, int index) {
5555    if (element == null) 
5556      return;
5557    Complex t;
5558    if (Utilities.noString(parentType))
5559      t = parent;
5560    else {
5561      t = parent.predicate("fhir:"+parentType+'.'+name);
5562    }
5563    composeBackboneElement(t, "benefit", name, element, index);
5564    if (element.hasType())
5565      composeCodeableConcept(t, "CoverageEligibilityResponse", "type", element.getType(), -1);
5566    if (element.hasAllowed())
5567      composeType(t, "CoverageEligibilityResponse", "allowed", element.getAllowed(), -1);
5568    if (element.hasUsed())
5569      composeType(t, "CoverageEligibilityResponse", "used", element.getUsed(), -1);
5570  }
5571
5572  protected void composeCoverageEligibilityResponseErrorsComponent(Complex parent, String parentType, String name, CoverageEligibilityResponse.ErrorsComponent element, int index) {
5573    if (element == null) 
5574      return;
5575    Complex t;
5576    if (Utilities.noString(parentType))
5577      t = parent;
5578    else {
5579      t = parent.predicate("fhir:"+parentType+'.'+name);
5580    }
5581    composeBackboneElement(t, "error", name, element, index);
5582    if (element.hasCode())
5583      composeCodeableConcept(t, "CoverageEligibilityResponse", "code", element.getCode(), -1);
5584  }
5585
5586  protected void composeDetectedIssue(Complex parent, String parentType, String name, DetectedIssue element, int index) {
5587    if (element == null) 
5588      return;
5589    Complex t;
5590    if (Utilities.noString(parentType))
5591      t = parent;
5592    else {
5593      t = parent.predicate("fhir:"+parentType+'.'+name);
5594    }
5595    composeDomainResource(t, "DetectedIssue", name, element, index);
5596    for (int i = 0; i < element.getIdentifier().size(); i++)
5597      composeIdentifier(t, "DetectedIssue", "identifier", element.getIdentifier().get(i), i);
5598    if (element.hasStatusElement())
5599      composeEnum(t, "DetectedIssue", "status", element.getStatusElement(), -1);
5600    if (element.hasCategory())
5601      composeCodeableConcept(t, "DetectedIssue", "category", element.getCategory(), -1);
5602    if (element.hasSeverityElement())
5603      composeEnum(t, "DetectedIssue", "severity", element.getSeverityElement(), -1);
5604    if (element.hasPatient())
5605      composeReference(t, "DetectedIssue", "patient", element.getPatient(), -1);
5606    if (element.hasDateElement())
5607      composeDateTime(t, "DetectedIssue", "date", element.getDateElement(), -1);
5608    if (element.hasAuthor())
5609      composeReference(t, "DetectedIssue", "author", element.getAuthor(), -1);
5610    for (int i = 0; i < element.getImplicated().size(); i++)
5611      composeReference(t, "DetectedIssue", "implicated", element.getImplicated().get(i), i);
5612    if (element.hasDetailElement())
5613      composeString(t, "DetectedIssue", "detail", element.getDetailElement(), -1);
5614    if (element.hasReferenceElement())
5615      composeUri(t, "DetectedIssue", "reference", element.getReferenceElement(), -1);
5616    for (int i = 0; i < element.getMitigation().size(); i++)
5617      composeDetectedIssueDetectedIssueMitigationComponent(t, "DetectedIssue", "mitigation", element.getMitigation().get(i), i);
5618  }
5619
5620  protected void composeDetectedIssueDetectedIssueMitigationComponent(Complex parent, String parentType, String name, DetectedIssue.DetectedIssueMitigationComponent element, int index) {
5621    if (element == null) 
5622      return;
5623    Complex t;
5624    if (Utilities.noString(parentType))
5625      t = parent;
5626    else {
5627      t = parent.predicate("fhir:"+parentType+'.'+name);
5628    }
5629    composeBackboneElement(t, "mitigation", name, element, index);
5630    if (element.hasAction())
5631      composeCodeableConcept(t, "DetectedIssue", "action", element.getAction(), -1);
5632    if (element.hasDateElement())
5633      composeDateTime(t, "DetectedIssue", "date", element.getDateElement(), -1);
5634    if (element.hasAuthor())
5635      composeReference(t, "DetectedIssue", "author", element.getAuthor(), -1);
5636  }
5637
5638  protected void composeDevice(Complex parent, String parentType, String name, Device element, int index) {
5639    if (element == null) 
5640      return;
5641    Complex t;
5642    if (Utilities.noString(parentType))
5643      t = parent;
5644    else {
5645      t = parent.predicate("fhir:"+parentType+'.'+name);
5646    }
5647    composeDomainResource(t, "Device", name, element, index);
5648    for (int i = 0; i < element.getIdentifier().size(); i++)
5649      composeIdentifier(t, "Device", "identifier", element.getIdentifier().get(i), i);
5650    if (element.hasDefinition())
5651      composeReference(t, "Device", "definition", element.getDefinition(), -1);
5652    for (int i = 0; i < element.getUdiCarrier().size(); i++)
5653      composeDeviceDeviceUdiCarrierComponent(t, "Device", "udiCarrier", element.getUdiCarrier().get(i), i);
5654    if (element.hasStatusElement())
5655      composeEnum(t, "Device", "status", element.getStatusElement(), -1);
5656    for (int i = 0; i < element.getStatusReason().size(); i++)
5657      composeCodeableConcept(t, "Device", "statusReason", element.getStatusReason().get(i), i);
5658    if (element.hasDistinctIdentificationCodeElement())
5659      composeString(t, "Device", "distinctIdentificationCode", element.getDistinctIdentificationCodeElement(), -1);
5660    if (element.hasManufacturerElement())
5661      composeString(t, "Device", "manufacturer", element.getManufacturerElement(), -1);
5662    if (element.hasManufactureDateElement())
5663      composeDateTime(t, "Device", "manufactureDate", element.getManufactureDateElement(), -1);
5664    if (element.hasExpirationDateElement())
5665      composeDateTime(t, "Device", "expirationDate", element.getExpirationDateElement(), -1);
5666    if (element.hasLotNumberElement())
5667      composeString(t, "Device", "lotNumber", element.getLotNumberElement(), -1);
5668    if (element.hasSerialNumberElement())
5669      composeString(t, "Device", "serialNumber", element.getSerialNumberElement(), -1);
5670    for (int i = 0; i < element.getDeviceName().size(); i++)
5671      composeDeviceDeviceDeviceNameComponent(t, "Device", "deviceName", element.getDeviceName().get(i), i);
5672    if (element.hasModelNumberElement())
5673      composeString(t, "Device", "modelNumber", element.getModelNumberElement(), -1);
5674    if (element.hasPartNumberElement())
5675      composeString(t, "Device", "partNumber", element.getPartNumberElement(), -1);
5676    if (element.hasType())
5677      composeCodeableConcept(t, "Device", "type", element.getType(), -1);
5678    for (int i = 0; i < element.getSpecialization().size(); i++)
5679      composeDeviceDeviceSpecializationComponent(t, "Device", "specialization", element.getSpecialization().get(i), i);
5680    for (int i = 0; i < element.getVersion().size(); i++)
5681      composeDeviceDeviceVersionComponent(t, "Device", "version", element.getVersion().get(i), i);
5682    for (int i = 0; i < element.getProperty().size(); i++)
5683      composeDeviceDevicePropertyComponent(t, "Device", "property", element.getProperty().get(i), i);
5684    if (element.hasPatient())
5685      composeReference(t, "Device", "patient", element.getPatient(), -1);
5686    if (element.hasOwner())
5687      composeReference(t, "Device", "owner", element.getOwner(), -1);
5688    for (int i = 0; i < element.getContact().size(); i++)
5689      composeContactPoint(t, "Device", "contact", element.getContact().get(i), i);
5690    if (element.hasLocation())
5691      composeReference(t, "Device", "location", element.getLocation(), -1);
5692    if (element.hasUrlElement())
5693      composeUri(t, "Device", "url", element.getUrlElement(), -1);
5694    for (int i = 0; i < element.getNote().size(); i++)
5695      composeAnnotation(t, "Device", "note", element.getNote().get(i), i);
5696    for (int i = 0; i < element.getSafety().size(); i++)
5697      composeCodeableConcept(t, "Device", "safety", element.getSafety().get(i), i);
5698    if (element.hasParent())
5699      composeReference(t, "Device", "parent", element.getParent(), -1);
5700  }
5701
5702  protected void composeDeviceDeviceUdiCarrierComponent(Complex parent, String parentType, String name, Device.DeviceUdiCarrierComponent element, int index) {
5703    if (element == null) 
5704      return;
5705    Complex t;
5706    if (Utilities.noString(parentType))
5707      t = parent;
5708    else {
5709      t = parent.predicate("fhir:"+parentType+'.'+name);
5710    }
5711    composeBackboneElement(t, "udiCarrier", name, element, index);
5712    if (element.hasDeviceIdentifierElement())
5713      composeString(t, "Device", "deviceIdentifier", element.getDeviceIdentifierElement(), -1);
5714    if (element.hasIssuerElement())
5715      composeUri(t, "Device", "issuer", element.getIssuerElement(), -1);
5716    if (element.hasJurisdictionElement())
5717      composeUri(t, "Device", "jurisdiction", element.getJurisdictionElement(), -1);
5718    if (element.hasCarrierAIDCElement())
5719      composeBase64Binary(t, "Device", "carrierAIDC", element.getCarrierAIDCElement(), -1);
5720    if (element.hasCarrierHRFElement())
5721      composeString(t, "Device", "carrierHRF", element.getCarrierHRFElement(), -1);
5722    if (element.hasEntryTypeElement())
5723      composeEnum(t, "Device", "entryType", element.getEntryTypeElement(), -1);
5724  }
5725
5726  protected void composeDeviceDeviceDeviceNameComponent(Complex parent, String parentType, String name, Device.DeviceDeviceNameComponent element, int index) {
5727    if (element == null) 
5728      return;
5729    Complex t;
5730    if (Utilities.noString(parentType))
5731      t = parent;
5732    else {
5733      t = parent.predicate("fhir:"+parentType+'.'+name);
5734    }
5735    composeBackboneElement(t, "deviceName", name, element, index);
5736    if (element.hasNameElement())
5737      composeString(t, "Device", "name", element.getNameElement(), -1);
5738    if (element.hasTypeElement())
5739      composeEnum(t, "Device", "type", element.getTypeElement(), -1);
5740  }
5741
5742  protected void composeDeviceDeviceSpecializationComponent(Complex parent, String parentType, String name, Device.DeviceSpecializationComponent element, int index) {
5743    if (element == null) 
5744      return;
5745    Complex t;
5746    if (Utilities.noString(parentType))
5747      t = parent;
5748    else {
5749      t = parent.predicate("fhir:"+parentType+'.'+name);
5750    }
5751    composeBackboneElement(t, "specialization", name, element, index);
5752    if (element.hasSystemType())
5753      composeCodeableConcept(t, "Device", "systemType", element.getSystemType(), -1);
5754    if (element.hasVersionElement())
5755      composeString(t, "Device", "version", element.getVersionElement(), -1);
5756  }
5757
5758  protected void composeDeviceDeviceVersionComponent(Complex parent, String parentType, String name, Device.DeviceVersionComponent element, int index) {
5759    if (element == null) 
5760      return;
5761    Complex t;
5762    if (Utilities.noString(parentType))
5763      t = parent;
5764    else {
5765      t = parent.predicate("fhir:"+parentType+'.'+name);
5766    }
5767    composeBackboneElement(t, "version", name, element, index);
5768    if (element.hasType())
5769      composeCodeableConcept(t, "Device", "type", element.getType(), -1);
5770    if (element.hasComponent())
5771      composeIdentifier(t, "Device", "component", element.getComponent(), -1);
5772    if (element.hasValueElement())
5773      composeString(t, "Device", "value", element.getValueElement(), -1);
5774  }
5775
5776  protected void composeDeviceDevicePropertyComponent(Complex parent, String parentType, String name, Device.DevicePropertyComponent element, int index) {
5777    if (element == null) 
5778      return;
5779    Complex t;
5780    if (Utilities.noString(parentType))
5781      t = parent;
5782    else {
5783      t = parent.predicate("fhir:"+parentType+'.'+name);
5784    }
5785    composeBackboneElement(t, "property", name, element, index);
5786    if (element.hasType())
5787      composeCodeableConcept(t, "Device", "type", element.getType(), -1);
5788    for (int i = 0; i < element.getValueQuanity().size(); i++)
5789      composeQuantity(t, "Device", "valueQuanity", element.getValueQuanity().get(i), i);
5790    for (int i = 0; i < element.getValueCode().size(); i++)
5791      composeCodeableConcept(t, "Device", "valueCode", element.getValueCode().get(i), i);
5792  }
5793
5794  protected void composeDeviceDefinition(Complex parent, String parentType, String name, DeviceDefinition element, int index) {
5795    if (element == null) 
5796      return;
5797    Complex t;
5798    if (Utilities.noString(parentType))
5799      t = parent;
5800    else {
5801      t = parent.predicate("fhir:"+parentType+'.'+name);
5802    }
5803    composeDomainResource(t, "DeviceDefinition", name, element, index);
5804    for (int i = 0; i < element.getIdentifier().size(); i++)
5805      composeIdentifier(t, "DeviceDefinition", "identifier", element.getIdentifier().get(i), i);
5806    for (int i = 0; i < element.getUdiDeviceIdentifier().size(); i++)
5807      composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(t, "DeviceDefinition", "udiDeviceIdentifier", element.getUdiDeviceIdentifier().get(i), i);
5808    if (element.hasManufacturer())
5809      composeType(t, "DeviceDefinition", "manufacturer", element.getManufacturer(), -1);
5810    for (int i = 0; i < element.getDeviceName().size(); i++)
5811      composeDeviceDefinitionDeviceDefinitionDeviceNameComponent(t, "DeviceDefinition", "deviceName", element.getDeviceName().get(i), i);
5812    if (element.hasModelNumberElement())
5813      composeString(t, "DeviceDefinition", "modelNumber", element.getModelNumberElement(), -1);
5814    if (element.hasType())
5815      composeCodeableConcept(t, "DeviceDefinition", "type", element.getType(), -1);
5816    for (int i = 0; i < element.getSpecialization().size(); i++)
5817      composeDeviceDefinitionDeviceDefinitionSpecializationComponent(t, "DeviceDefinition", "specialization", element.getSpecialization().get(i), i);
5818    for (int i = 0; i < element.getVersion().size(); i++)
5819      composeString(t, "DeviceDefinition", "version", element.getVersion().get(i), i);
5820    for (int i = 0; i < element.getSafety().size(); i++)
5821      composeCodeableConcept(t, "DeviceDefinition", "safety", element.getSafety().get(i), i);
5822    for (int i = 0; i < element.getShelfLifeStorage().size(); i++)
5823      composeProductShelfLife(t, "DeviceDefinition", "shelfLifeStorage", element.getShelfLifeStorage().get(i), i);
5824    if (element.hasPhysicalCharacteristics())
5825      composeProdCharacteristic(t, "DeviceDefinition", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
5826    for (int i = 0; i < element.getLanguageCode().size(); i++)
5827      composeCodeableConcept(t, "DeviceDefinition", "languageCode", element.getLanguageCode().get(i), i);
5828    for (int i = 0; i < element.getCapability().size(); i++)
5829      composeDeviceDefinitionDeviceDefinitionCapabilityComponent(t, "DeviceDefinition", "capability", element.getCapability().get(i), i);
5830    for (int i = 0; i < element.getProperty().size(); i++)
5831      composeDeviceDefinitionDeviceDefinitionPropertyComponent(t, "DeviceDefinition", "property", element.getProperty().get(i), i);
5832    if (element.hasOwner())
5833      composeReference(t, "DeviceDefinition", "owner", element.getOwner(), -1);
5834    for (int i = 0; i < element.getContact().size(); i++)
5835      composeContactPoint(t, "DeviceDefinition", "contact", element.getContact().get(i), i);
5836    if (element.hasUrlElement())
5837      composeUri(t, "DeviceDefinition", "url", element.getUrlElement(), -1);
5838    if (element.hasOnlineInformationElement())
5839      composeUri(t, "DeviceDefinition", "onlineInformation", element.getOnlineInformationElement(), -1);
5840    for (int i = 0; i < element.getNote().size(); i++)
5841      composeAnnotation(t, "DeviceDefinition", "note", element.getNote().get(i), i);
5842    if (element.hasQuantity())
5843      composeQuantity(t, "DeviceDefinition", "quantity", element.getQuantity(), -1);
5844    if (element.hasParentDevice())
5845      composeReference(t, "DeviceDefinition", "parentDevice", element.getParentDevice(), -1);
5846    for (int i = 0; i < element.getMaterial().size(); i++)
5847      composeDeviceDefinitionDeviceDefinitionMaterialComponent(t, "DeviceDefinition", "material", element.getMaterial().get(i), i);
5848  }
5849
5850  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent 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    composeBackboneElement(t, "udiDeviceIdentifier", name, element, index);
5860    if (element.hasDeviceIdentifierElement())
5861      composeString(t, "DeviceDefinition", "deviceIdentifier", element.getDeviceIdentifierElement(), -1);
5862    if (element.hasIssuerElement())
5863      composeUri(t, "DeviceDefinition", "issuer", element.getIssuerElement(), -1);
5864    if (element.hasJurisdictionElement())
5865      composeUri(t, "DeviceDefinition", "jurisdiction", element.getJurisdictionElement(), -1);
5866  }
5867
5868  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element, int index) {
5869    if (element == null) 
5870      return;
5871    Complex t;
5872    if (Utilities.noString(parentType))
5873      t = parent;
5874    else {
5875      t = parent.predicate("fhir:"+parentType+'.'+name);
5876    }
5877    composeBackboneElement(t, "deviceName", name, element, index);
5878    if (element.hasNameElement())
5879      composeString(t, "DeviceDefinition", "name", element.getNameElement(), -1);
5880    if (element.hasTypeElement())
5881      composeEnum(t, "DeviceDefinition", "type", element.getTypeElement(), -1);
5882  }
5883
5884  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionSpecializationComponent 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    composeBackboneElement(t, "specialization", name, element, index);
5894    if (element.hasSystemTypeElement())
5895      composeString(t, "DeviceDefinition", "systemType", element.getSystemTypeElement(), -1);
5896    if (element.hasVersionElement())
5897      composeString(t, "DeviceDefinition", "version", element.getVersionElement(), -1);
5898  }
5899
5900  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionCapabilityComponent element, int index) {
5901    if (element == null) 
5902      return;
5903    Complex t;
5904    if (Utilities.noString(parentType))
5905      t = parent;
5906    else {
5907      t = parent.predicate("fhir:"+parentType+'.'+name);
5908    }
5909    composeBackboneElement(t, "capability", name, element, index);
5910    if (element.hasType())
5911      composeCodeableConcept(t, "DeviceDefinition", "type", element.getType(), -1);
5912    for (int i = 0; i < element.getDescription().size(); i++)
5913      composeCodeableConcept(t, "DeviceDefinition", "description", element.getDescription().get(i), i);
5914  }
5915
5916  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionPropertyComponent element, int index) {
5917    if (element == null) 
5918      return;
5919    Complex t;
5920    if (Utilities.noString(parentType))
5921      t = parent;
5922    else {
5923      t = parent.predicate("fhir:"+parentType+'.'+name);
5924    }
5925    composeBackboneElement(t, "property", name, element, index);
5926    if (element.hasType())
5927      composeCodeableConcept(t, "DeviceDefinition", "type", element.getType(), -1);
5928    for (int i = 0; i < element.getValueQuanity().size(); i++)
5929      composeQuantity(t, "DeviceDefinition", "valueQuanity", element.getValueQuanity().get(i), i);
5930    for (int i = 0; i < element.getValueCode().size(); i++)
5931      composeCodeableConcept(t, "DeviceDefinition", "valueCode", element.getValueCode().get(i), i);
5932  }
5933
5934  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionMaterialComponent element, int index) {
5935    if (element == null) 
5936      return;
5937    Complex t;
5938    if (Utilities.noString(parentType))
5939      t = parent;
5940    else {
5941      t = parent.predicate("fhir:"+parentType+'.'+name);
5942    }
5943    composeBackboneElement(t, "material", name, element, index);
5944    if (element.hasSubstance())
5945      composeCodeableConcept(t, "DeviceDefinition", "substance", element.getSubstance(), -1);
5946    if (element.hasAlternateElement())
5947      composeBoolean(t, "DeviceDefinition", "alternate", element.getAlternateElement(), -1);
5948    if (element.hasAllergenicIndicatorElement())
5949      composeBoolean(t, "DeviceDefinition", "allergenicIndicator", element.getAllergenicIndicatorElement(), -1);
5950  }
5951
5952  protected void composeDeviceMetric(Complex parent, String parentType, String name, DeviceMetric element, int index) {
5953    if (element == null) 
5954      return;
5955    Complex t;
5956    if (Utilities.noString(parentType))
5957      t = parent;
5958    else {
5959      t = parent.predicate("fhir:"+parentType+'.'+name);
5960    }
5961    composeDomainResource(t, "DeviceMetric", name, element, index);
5962    for (int i = 0; i < element.getIdentifier().size(); i++)
5963      composeIdentifier(t, "DeviceMetric", "identifier", element.getIdentifier().get(i), i);
5964    if (element.hasType())
5965      composeCodeableConcept(t, "DeviceMetric", "type", element.getType(), -1);
5966    if (element.hasUnit())
5967      composeCodeableConcept(t, "DeviceMetric", "unit", element.getUnit(), -1);
5968    if (element.hasSource())
5969      composeReference(t, "DeviceMetric", "source", element.getSource(), -1);
5970    if (element.hasParent())
5971      composeReference(t, "DeviceMetric", "parent", element.getParent(), -1);
5972    if (element.hasOperationalStatusElement())
5973      composeEnum(t, "DeviceMetric", "operationalStatus", element.getOperationalStatusElement(), -1);
5974    if (element.hasColorElement())
5975      composeEnum(t, "DeviceMetric", "color", element.getColorElement(), -1);
5976    if (element.hasCategoryElement())
5977      composeEnum(t, "DeviceMetric", "category", element.getCategoryElement(), -1);
5978    if (element.hasMeasurementPeriod())
5979      composeTiming(t, "DeviceMetric", "measurementPeriod", element.getMeasurementPeriod(), -1);
5980    for (int i = 0; i < element.getCalibration().size(); i++)
5981      composeDeviceMetricDeviceMetricCalibrationComponent(t, "DeviceMetric", "calibration", element.getCalibration().get(i), i);
5982  }
5983
5984  protected void composeDeviceMetricDeviceMetricCalibrationComponent(Complex parent, String parentType, String name, DeviceMetric.DeviceMetricCalibrationComponent element, int index) {
5985    if (element == null) 
5986      return;
5987    Complex t;
5988    if (Utilities.noString(parentType))
5989      t = parent;
5990    else {
5991      t = parent.predicate("fhir:"+parentType+'.'+name);
5992    }
5993    composeBackboneElement(t, "calibration", name, element, index);
5994    if (element.hasTypeElement())
5995      composeEnum(t, "DeviceMetric", "type", element.getTypeElement(), -1);
5996    if (element.hasStateElement())
5997      composeEnum(t, "DeviceMetric", "state", element.getStateElement(), -1);
5998    if (element.hasTimeElement())
5999      composeInstant(t, "DeviceMetric", "time", element.getTimeElement(), -1);
6000  }
6001
6002  protected void composeDeviceRequest(Complex parent, String parentType, String name, DeviceRequest element, int index) {
6003    if (element == null) 
6004      return;
6005    Complex t;
6006    if (Utilities.noString(parentType))
6007      t = parent;
6008    else {
6009      t = parent.predicate("fhir:"+parentType+'.'+name);
6010    }
6011    composeDomainResource(t, "DeviceRequest", name, element, index);
6012    for (int i = 0; i < element.getIdentifier().size(); i++)
6013      composeIdentifier(t, "DeviceRequest", "identifier", element.getIdentifier().get(i), i);
6014    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
6015      composeCanonical(t, "DeviceRequest", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
6016    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
6017      composeUri(t, "DeviceRequest", "instantiatesUri", element.getInstantiatesUri().get(i), i);
6018    for (int i = 0; i < element.getBasedOn().size(); i++)
6019      composeReference(t, "DeviceRequest", "basedOn", element.getBasedOn().get(i), i);
6020    for (int i = 0; i < element.getPriorRequest().size(); i++)
6021      composeReference(t, "DeviceRequest", "priorRequest", element.getPriorRequest().get(i), i);
6022    if (element.hasGroupIdentifier())
6023      composeIdentifier(t, "DeviceRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
6024    if (element.hasStatusElement())
6025      composeEnum(t, "DeviceRequest", "status", element.getStatusElement(), -1);
6026    if (element.hasIntentElement())
6027      composeEnum(t, "DeviceRequest", "intent", element.getIntentElement(), -1);
6028    if (element.hasPriorityElement())
6029      composeEnum(t, "DeviceRequest", "priority", element.getPriorityElement(), -1);
6030    if (element.hasCode())
6031      composeType(t, "DeviceRequest", "code", element.getCode(), -1);
6032    for (int i = 0; i < element.getParameter().size(); i++)
6033      composeDeviceRequestDeviceRequestParameterComponent(t, "DeviceRequest", "parameter", element.getParameter().get(i), i);
6034    if (element.hasSubject())
6035      composeReference(t, "DeviceRequest", "subject", element.getSubject(), -1);
6036    if (element.hasContext())
6037      composeReference(t, "DeviceRequest", "context", element.getContext(), -1);
6038    if (element.hasOccurrence())
6039      composeType(t, "DeviceRequest", "occurrence", element.getOccurrence(), -1);
6040    if (element.hasAuthoredOnElement())
6041      composeDateTime(t, "DeviceRequest", "authoredOn", element.getAuthoredOnElement(), -1);
6042    if (element.hasRequester())
6043      composeReference(t, "DeviceRequest", "requester", element.getRequester(), -1);
6044    if (element.hasPerformerType())
6045      composeCodeableConcept(t, "DeviceRequest", "performerType", element.getPerformerType(), -1);
6046    if (element.hasPerformer())
6047      composeReference(t, "DeviceRequest", "performer", element.getPerformer(), -1);
6048    for (int i = 0; i < element.getReasonCode().size(); i++)
6049      composeCodeableConcept(t, "DeviceRequest", "reasonCode", element.getReasonCode().get(i), i);
6050    for (int i = 0; i < element.getReasonReference().size(); i++)
6051      composeReference(t, "DeviceRequest", "reasonReference", element.getReasonReference().get(i), i);
6052    for (int i = 0; i < element.getInsurance().size(); i++)
6053      composeReference(t, "DeviceRequest", "insurance", element.getInsurance().get(i), i);
6054    for (int i = 0; i < element.getSupportingInfo().size(); i++)
6055      composeReference(t, "DeviceRequest", "supportingInfo", element.getSupportingInfo().get(i), i);
6056    for (int i = 0; i < element.getNote().size(); i++)
6057      composeAnnotation(t, "DeviceRequest", "note", element.getNote().get(i), i);
6058    for (int i = 0; i < element.getRelevantHistory().size(); i++)
6059      composeReference(t, "DeviceRequest", "relevantHistory", element.getRelevantHistory().get(i), i);
6060  }
6061
6062  protected void composeDeviceRequestDeviceRequestParameterComponent(Complex parent, String parentType, String name, DeviceRequest.DeviceRequestParameterComponent element, int index) {
6063    if (element == null) 
6064      return;
6065    Complex t;
6066    if (Utilities.noString(parentType))
6067      t = parent;
6068    else {
6069      t = parent.predicate("fhir:"+parentType+'.'+name);
6070    }
6071    composeBackboneElement(t, "parameter", name, element, index);
6072    if (element.hasCode())
6073      composeCodeableConcept(t, "DeviceRequest", "code", element.getCode(), -1);
6074    if (element.hasValue())
6075      composeType(t, "DeviceRequest", "value", element.getValue(), -1);
6076  }
6077
6078  protected void composeDeviceUseStatement(Complex parent, String parentType, String name, DeviceUseStatement element, int index) {
6079    if (element == null) 
6080      return;
6081    Complex t;
6082    if (Utilities.noString(parentType))
6083      t = parent;
6084    else {
6085      t = parent.predicate("fhir:"+parentType+'.'+name);
6086    }
6087    composeDomainResource(t, "DeviceUseStatement", name, element, index);
6088    for (int i = 0; i < element.getIdentifier().size(); i++)
6089      composeIdentifier(t, "DeviceUseStatement", "identifier", element.getIdentifier().get(i), i);
6090    for (int i = 0; i < element.getBasedOn().size(); i++)
6091      composeReference(t, "DeviceUseStatement", "basedOn", element.getBasedOn().get(i), i);
6092    if (element.hasStatusElement())
6093      composeEnum(t, "DeviceUseStatement", "status", element.getStatusElement(), -1);
6094    if (element.hasSubject())
6095      composeReference(t, "DeviceUseStatement", "subject", element.getSubject(), -1);
6096    for (int i = 0; i < element.getDerivedFrom().size(); i++)
6097      composeReference(t, "DeviceUseStatement", "derivedFrom", element.getDerivedFrom().get(i), i);
6098    if (element.hasTiming())
6099      composeType(t, "DeviceUseStatement", "timing", element.getTiming(), -1);
6100    if (element.hasRecordedOnElement())
6101      composeDateTime(t, "DeviceUseStatement", "recordedOn", element.getRecordedOnElement(), -1);
6102    if (element.hasSource())
6103      composeReference(t, "DeviceUseStatement", "source", element.getSource(), -1);
6104    if (element.hasDevice())
6105      composeReference(t, "DeviceUseStatement", "device", element.getDevice(), -1);
6106    for (int i = 0; i < element.getReasonCode().size(); i++)
6107      composeCodeableConcept(t, "DeviceUseStatement", "reasonCode", element.getReasonCode().get(i), i);
6108    for (int i = 0; i < element.getReasonReference().size(); i++)
6109      composeReference(t, "DeviceUseStatement", "reasonReference", element.getReasonReference().get(i), i);
6110    if (element.hasBodySite())
6111      composeCodeableConcept(t, "DeviceUseStatement", "bodySite", element.getBodySite(), -1);
6112    for (int i = 0; i < element.getNote().size(); i++)
6113      composeAnnotation(t, "DeviceUseStatement", "note", element.getNote().get(i), i);
6114  }
6115
6116  protected void composeDiagnosticReport(Complex parent, String parentType, String name, DiagnosticReport element, int index) {
6117    if (element == null) 
6118      return;
6119    Complex t;
6120    if (Utilities.noString(parentType))
6121      t = parent;
6122    else {
6123      t = parent.predicate("fhir:"+parentType+'.'+name);
6124    }
6125    composeDomainResource(t, "DiagnosticReport", name, element, index);
6126    for (int i = 0; i < element.getIdentifier().size(); i++)
6127      composeIdentifier(t, "DiagnosticReport", "identifier", element.getIdentifier().get(i), i);
6128    for (int i = 0; i < element.getBasedOn().size(); i++)
6129      composeReference(t, "DiagnosticReport", "basedOn", element.getBasedOn().get(i), i);
6130    if (element.hasStatusElement())
6131      composeEnum(t, "DiagnosticReport", "status", element.getStatusElement(), -1);
6132    if (element.hasCategory())
6133      composeCodeableConcept(t, "DiagnosticReport", "category", element.getCategory(), -1);
6134    if (element.hasCode())
6135      composeCodeableConcept(t, "DiagnosticReport", "code", element.getCode(), -1);
6136    if (element.hasSubject())
6137      composeReference(t, "DiagnosticReport", "subject", element.getSubject(), -1);
6138    if (element.hasContext())
6139      composeReference(t, "DiagnosticReport", "context", element.getContext(), -1);
6140    if (element.hasEffective())
6141      composeType(t, "DiagnosticReport", "effective", element.getEffective(), -1);
6142    if (element.hasIssuedElement())
6143      composeInstant(t, "DiagnosticReport", "issued", element.getIssuedElement(), -1);
6144    for (int i = 0; i < element.getPerformer().size(); i++)
6145      composeReference(t, "DiagnosticReport", "performer", element.getPerformer().get(i), i);
6146    for (int i = 0; i < element.getResultsInterpreter().size(); i++)
6147      composeReference(t, "DiagnosticReport", "resultsInterpreter", element.getResultsInterpreter().get(i), i);
6148    for (int i = 0; i < element.getSpecimen().size(); i++)
6149      composeReference(t, "DiagnosticReport", "specimen", element.getSpecimen().get(i), i);
6150    for (int i = 0; i < element.getResult().size(); i++)
6151      composeReference(t, "DiagnosticReport", "result", element.getResult().get(i), i);
6152    for (int i = 0; i < element.getImagingStudy().size(); i++)
6153      composeReference(t, "DiagnosticReport", "imagingStudy", element.getImagingStudy().get(i), i);
6154    for (int i = 0; i < element.getMedia().size(); i++)
6155      composeDiagnosticReportDiagnosticReportMediaComponent(t, "DiagnosticReport", "media", element.getMedia().get(i), i);
6156    if (element.hasConclusionElement())
6157      composeString(t, "DiagnosticReport", "conclusion", element.getConclusionElement(), -1);
6158    for (int i = 0; i < element.getConclusionCode().size(); i++)
6159      composeCodeableConcept(t, "DiagnosticReport", "conclusionCode", element.getConclusionCode().get(i), i);
6160    for (int i = 0; i < element.getPresentedForm().size(); i++)
6161      composeAttachment(t, "DiagnosticReport", "presentedForm", element.getPresentedForm().get(i), i);
6162  }
6163
6164  protected void composeDiagnosticReportDiagnosticReportMediaComponent(Complex parent, String parentType, String name, DiagnosticReport.DiagnosticReportMediaComponent element, int index) {
6165    if (element == null) 
6166      return;
6167    Complex t;
6168    if (Utilities.noString(parentType))
6169      t = parent;
6170    else {
6171      t = parent.predicate("fhir:"+parentType+'.'+name);
6172    }
6173    composeBackboneElement(t, "media", name, element, index);
6174    if (element.hasCommentElement())
6175      composeString(t, "DiagnosticReport", "comment", element.getCommentElement(), -1);
6176    if (element.hasLink())
6177      composeReference(t, "DiagnosticReport", "link", element.getLink(), -1);
6178  }
6179
6180  protected void composeDocumentManifest(Complex parent, String parentType, String name, DocumentManifest element, int index) {
6181    if (element == null) 
6182      return;
6183    Complex t;
6184    if (Utilities.noString(parentType))
6185      t = parent;
6186    else {
6187      t = parent.predicate("fhir:"+parentType+'.'+name);
6188    }
6189    composeDomainResource(t, "DocumentManifest", name, element, index);
6190    if (element.hasMasterIdentifier())
6191      composeIdentifier(t, "DocumentManifest", "masterIdentifier", element.getMasterIdentifier(), -1);
6192    for (int i = 0; i < element.getIdentifier().size(); i++)
6193      composeIdentifier(t, "DocumentManifest", "identifier", element.getIdentifier().get(i), i);
6194    if (element.hasStatusElement())
6195      composeEnum(t, "DocumentManifest", "status", element.getStatusElement(), -1);
6196    if (element.hasType())
6197      composeCodeableConcept(t, "DocumentManifest", "type", element.getType(), -1);
6198    if (element.hasSubject())
6199      composeReference(t, "DocumentManifest", "subject", element.getSubject(), -1);
6200    if (element.hasCreatedElement())
6201      composeDateTime(t, "DocumentManifest", "created", element.getCreatedElement(), -1);
6202    for (int i = 0; i < element.getAgent().size(); i++)
6203      composeDocumentManifestDocumentManifestAgentComponent(t, "DocumentManifest", "agent", element.getAgent().get(i), i);
6204    for (int i = 0; i < element.getRecipient().size(); i++)
6205      composeReference(t, "DocumentManifest", "recipient", element.getRecipient().get(i), i);
6206    if (element.hasSourceElement())
6207      composeUri(t, "DocumentManifest", "source", element.getSourceElement(), -1);
6208    if (element.hasDescriptionElement())
6209      composeString(t, "DocumentManifest", "description", element.getDescriptionElement(), -1);
6210    for (int i = 0; i < element.getContent().size(); i++)
6211      composeReference(t, "DocumentManifest", "content", element.getContent().get(i), i);
6212    for (int i = 0; i < element.getRelated().size(); i++)
6213      composeDocumentManifestDocumentManifestRelatedComponent(t, "DocumentManifest", "related", element.getRelated().get(i), i);
6214  }
6215
6216  protected void composeDocumentManifestDocumentManifestAgentComponent(Complex parent, String parentType, String name, DocumentManifest.DocumentManifestAgentComponent element, int index) {
6217    if (element == null) 
6218      return;
6219    Complex t;
6220    if (Utilities.noString(parentType))
6221      t = parent;
6222    else {
6223      t = parent.predicate("fhir:"+parentType+'.'+name);
6224    }
6225    composeBackboneElement(t, "agent", name, element, index);
6226    if (element.hasType())
6227      composeCodeableConcept(t, "DocumentManifest", "type", element.getType(), -1);
6228    if (element.hasWho())
6229      composeReference(t, "DocumentManifest", "who", element.getWho(), -1);
6230  }
6231
6232  protected void composeDocumentManifestDocumentManifestRelatedComponent(Complex parent, String parentType, String name, DocumentManifest.DocumentManifestRelatedComponent element, int index) {
6233    if (element == null) 
6234      return;
6235    Complex t;
6236    if (Utilities.noString(parentType))
6237      t = parent;
6238    else {
6239      t = parent.predicate("fhir:"+parentType+'.'+name);
6240    }
6241    composeBackboneElement(t, "related", name, element, index);
6242    if (element.hasIdentifier())
6243      composeIdentifier(t, "DocumentManifest", "identifier", element.getIdentifier(), -1);
6244    if (element.hasRef())
6245      composeReference(t, "DocumentManifest", "ref", element.getRef(), -1);
6246  }
6247
6248  protected void composeDocumentReference(Complex parent, String parentType, String name, DocumentReference element, int index) {
6249    if (element == null) 
6250      return;
6251    Complex t;
6252    if (Utilities.noString(parentType))
6253      t = parent;
6254    else {
6255      t = parent.predicate("fhir:"+parentType+'.'+name);
6256    }
6257    composeDomainResource(t, "DocumentReference", name, element, index);
6258    if (element.hasMasterIdentifier())
6259      composeIdentifier(t, "DocumentReference", "masterIdentifier", element.getMasterIdentifier(), -1);
6260    for (int i = 0; i < element.getIdentifier().size(); i++)
6261      composeIdentifier(t, "DocumentReference", "identifier", element.getIdentifier().get(i), i);
6262    if (element.hasStatusElement())
6263      composeEnum(t, "DocumentReference", "status", element.getStatusElement(), -1);
6264    if (element.hasDocStatusElement())
6265      composeEnum(t, "DocumentReference", "docStatus", element.getDocStatusElement(), -1);
6266    if (element.hasType())
6267      composeCodeableConcept(t, "DocumentReference", "type", element.getType(), -1);
6268    for (int i = 0; i < element.getCategory().size(); i++)
6269      composeCodeableConcept(t, "DocumentReference", "category", element.getCategory().get(i), i);
6270    if (element.hasSubject())
6271      composeReference(t, "DocumentReference", "subject", element.getSubject(), -1);
6272    if (element.hasDateElement())
6273      composeInstant(t, "DocumentReference", "date", element.getDateElement(), -1);
6274    for (int i = 0; i < element.getAgent().size(); i++)
6275      composeDocumentReferenceDocumentReferenceAgentComponent(t, "DocumentReference", "agent", element.getAgent().get(i), i);
6276    if (element.hasAuthenticator())
6277      composeReference(t, "DocumentReference", "authenticator", element.getAuthenticator(), -1);
6278    if (element.hasCustodian())
6279      composeReference(t, "DocumentReference", "custodian", element.getCustodian(), -1);
6280    for (int i = 0; i < element.getRelatesTo().size(); i++)
6281      composeDocumentReferenceDocumentReferenceRelatesToComponent(t, "DocumentReference", "relatesTo", element.getRelatesTo().get(i), i);
6282    if (element.hasDescriptionElement())
6283      composeString(t, "DocumentReference", "description", element.getDescriptionElement(), -1);
6284    for (int i = 0; i < element.getSecurityLabel().size(); i++)
6285      composeCodeableConcept(t, "DocumentReference", "securityLabel", element.getSecurityLabel().get(i), i);
6286    for (int i = 0; i < element.getContent().size(); i++)
6287      composeDocumentReferenceDocumentReferenceContentComponent(t, "DocumentReference", "content", element.getContent().get(i), i);
6288    if (element.hasContext())
6289      composeDocumentReferenceDocumentReferenceContextComponent(t, "DocumentReference", "context", element.getContext(), -1);
6290  }
6291
6292  protected void composeDocumentReferenceDocumentReferenceAgentComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceAgentComponent element, int index) {
6293    if (element == null) 
6294      return;
6295    Complex t;
6296    if (Utilities.noString(parentType))
6297      t = parent;
6298    else {
6299      t = parent.predicate("fhir:"+parentType+'.'+name);
6300    }
6301    composeBackboneElement(t, "agent", name, element, index);
6302    if (element.hasType())
6303      composeCodeableConcept(t, "DocumentReference", "type", element.getType(), -1);
6304    if (element.hasWho())
6305      composeReference(t, "DocumentReference", "who", element.getWho(), -1);
6306  }
6307
6308  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceRelatesToComponent element, int index) {
6309    if (element == null) 
6310      return;
6311    Complex t;
6312    if (Utilities.noString(parentType))
6313      t = parent;
6314    else {
6315      t = parent.predicate("fhir:"+parentType+'.'+name);
6316    }
6317    composeBackboneElement(t, "relatesTo", name, element, index);
6318    if (element.hasCodeElement())
6319      composeEnum(t, "DocumentReference", "code", element.getCodeElement(), -1);
6320    if (element.hasTarget())
6321      composeReference(t, "DocumentReference", "target", element.getTarget(), -1);
6322  }
6323
6324  protected void composeDocumentReferenceDocumentReferenceContentComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceContentComponent element, int index) {
6325    if (element == null) 
6326      return;
6327    Complex t;
6328    if (Utilities.noString(parentType))
6329      t = parent;
6330    else {
6331      t = parent.predicate("fhir:"+parentType+'.'+name);
6332    }
6333    composeBackboneElement(t, "content", name, element, index);
6334    if (element.hasAttachment())
6335      composeAttachment(t, "DocumentReference", "attachment", element.getAttachment(), -1);
6336    if (element.hasFormat())
6337      composeCoding(t, "DocumentReference", "format", element.getFormat(), -1);
6338  }
6339
6340  protected void composeDocumentReferenceDocumentReferenceContextComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceContextComponent element, int index) {
6341    if (element == null) 
6342      return;
6343    Complex t;
6344    if (Utilities.noString(parentType))
6345      t = parent;
6346    else {
6347      t = parent.predicate("fhir:"+parentType+'.'+name);
6348    }
6349    composeBackboneElement(t, "context", name, element, index);
6350    for (int i = 0; i < element.getEncounter().size(); i++)
6351      composeReference(t, "DocumentReference", "encounter", element.getEncounter().get(i), i);
6352    for (int i = 0; i < element.getEvent().size(); i++)
6353      composeCodeableConcept(t, "DocumentReference", "event", element.getEvent().get(i), i);
6354    if (element.hasPeriod())
6355      composePeriod(t, "DocumentReference", "period", element.getPeriod(), -1);
6356    if (element.hasFacilityType())
6357      composeCodeableConcept(t, "DocumentReference", "facilityType", element.getFacilityType(), -1);
6358    if (element.hasPracticeSetting())
6359      composeCodeableConcept(t, "DocumentReference", "practiceSetting", element.getPracticeSetting(), -1);
6360    if (element.hasSourcePatientInfo())
6361      composeReference(t, "DocumentReference", "sourcePatientInfo", element.getSourcePatientInfo(), -1);
6362    for (int i = 0; i < element.getRelated().size(); i++)
6363      composeReference(t, "DocumentReference", "related", element.getRelated().get(i), i);
6364  }
6365
6366  protected void composeEncounter(Complex parent, String parentType, String name, Encounter element, int index) {
6367    if (element == null) 
6368      return;
6369    Complex t;
6370    if (Utilities.noString(parentType))
6371      t = parent;
6372    else {
6373      t = parent.predicate("fhir:"+parentType+'.'+name);
6374    }
6375    composeDomainResource(t, "Encounter", name, element, index);
6376    for (int i = 0; i < element.getIdentifier().size(); i++)
6377      composeIdentifier(t, "Encounter", "identifier", element.getIdentifier().get(i), i);
6378    if (element.hasStatusElement())
6379      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
6380    for (int i = 0; i < element.getStatusHistory().size(); i++)
6381      composeEncounterStatusHistoryComponent(t, "Encounter", "statusHistory", element.getStatusHistory().get(i), i);
6382    if (element.hasClass_())
6383      composeCoding(t, "Encounter", "class", element.getClass_(), -1);
6384    for (int i = 0; i < element.getClassHistory().size(); i++)
6385      composeEncounterClassHistoryComponent(t, "Encounter", "classHistory", element.getClassHistory().get(i), i);
6386    for (int i = 0; i < element.getType().size(); i++)
6387      composeCodeableConcept(t, "Encounter", "type", element.getType().get(i), i);
6388    if (element.hasServiceType())
6389      composeCodeableConcept(t, "Encounter", "serviceType", element.getServiceType(), -1);
6390    if (element.hasPriority())
6391      composeCodeableConcept(t, "Encounter", "priority", element.getPriority(), -1);
6392    if (element.hasSubject())
6393      composeReference(t, "Encounter", "subject", element.getSubject(), -1);
6394    for (int i = 0; i < element.getEpisodeOfCare().size(); i++)
6395      composeReference(t, "Encounter", "episodeOfCare", element.getEpisodeOfCare().get(i), i);
6396    for (int i = 0; i < element.getBasedOn().size(); i++)
6397      composeReference(t, "Encounter", "basedOn", element.getBasedOn().get(i), i);
6398    for (int i = 0; i < element.getParticipant().size(); i++)
6399      composeEncounterEncounterParticipantComponent(t, "Encounter", "participant", element.getParticipant().get(i), i);
6400    if (element.hasAppointment())
6401      composeReference(t, "Encounter", "appointment", element.getAppointment(), -1);
6402    if (element.hasPeriod())
6403      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6404    if (element.hasLength())
6405      composeDuration(t, "Encounter", "length", element.getLength(), -1);
6406    for (int i = 0; i < element.getReason().size(); i++)
6407      composeCodeableConcept(t, "Encounter", "reason", element.getReason().get(i), i);
6408    for (int i = 0; i < element.getDiagnosis().size(); i++)
6409      composeEncounterDiagnosisComponent(t, "Encounter", "diagnosis", element.getDiagnosis().get(i), i);
6410    for (int i = 0; i < element.getAccount().size(); i++)
6411      composeReference(t, "Encounter", "account", element.getAccount().get(i), i);
6412    if (element.hasHospitalization())
6413      composeEncounterEncounterHospitalizationComponent(t, "Encounter", "hospitalization", element.getHospitalization(), -1);
6414    for (int i = 0; i < element.getLocation().size(); i++)
6415      composeEncounterEncounterLocationComponent(t, "Encounter", "location", element.getLocation().get(i), i);
6416    if (element.hasServiceProvider())
6417      composeReference(t, "Encounter", "serviceProvider", element.getServiceProvider(), -1);
6418    if (element.hasPartOf())
6419      composeReference(t, "Encounter", "partOf", element.getPartOf(), -1);
6420  }
6421
6422  protected void composeEncounterStatusHistoryComponent(Complex parent, String parentType, String name, Encounter.StatusHistoryComponent element, int index) {
6423    if (element == null) 
6424      return;
6425    Complex t;
6426    if (Utilities.noString(parentType))
6427      t = parent;
6428    else {
6429      t = parent.predicate("fhir:"+parentType+'.'+name);
6430    }
6431    composeBackboneElement(t, "statusHistory", name, element, index);
6432    if (element.hasStatusElement())
6433      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
6434    if (element.hasPeriod())
6435      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6436  }
6437
6438  protected void composeEncounterClassHistoryComponent(Complex parent, String parentType, String name, Encounter.ClassHistoryComponent element, int index) {
6439    if (element == null) 
6440      return;
6441    Complex t;
6442    if (Utilities.noString(parentType))
6443      t = parent;
6444    else {
6445      t = parent.predicate("fhir:"+parentType+'.'+name);
6446    }
6447    composeBackboneElement(t, "classHistory", name, element, index);
6448    if (element.hasClass_())
6449      composeCoding(t, "Encounter", "class", element.getClass_(), -1);
6450    if (element.hasPeriod())
6451      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6452  }
6453
6454  protected void composeEncounterEncounterParticipantComponent(Complex parent, String parentType, String name, Encounter.EncounterParticipantComponent element, int index) {
6455    if (element == null) 
6456      return;
6457    Complex t;
6458    if (Utilities.noString(parentType))
6459      t = parent;
6460    else {
6461      t = parent.predicate("fhir:"+parentType+'.'+name);
6462    }
6463    composeBackboneElement(t, "participant", name, element, index);
6464    for (int i = 0; i < element.getType().size(); i++)
6465      composeCodeableConcept(t, "Encounter", "type", element.getType().get(i), i);
6466    if (element.hasPeriod())
6467      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6468    if (element.hasIndividual())
6469      composeReference(t, "Encounter", "individual", element.getIndividual(), -1);
6470  }
6471
6472  protected void composeEncounterDiagnosisComponent(Complex parent, String parentType, String name, Encounter.DiagnosisComponent element, int index) {
6473    if (element == null) 
6474      return;
6475    Complex t;
6476    if (Utilities.noString(parentType))
6477      t = parent;
6478    else {
6479      t = parent.predicate("fhir:"+parentType+'.'+name);
6480    }
6481    composeBackboneElement(t, "diagnosis", name, element, index);
6482    if (element.hasCondition())
6483      composeReference(t, "Encounter", "condition", element.getCondition(), -1);
6484    if (element.hasRole())
6485      composeCodeableConcept(t, "Encounter", "role", element.getRole(), -1);
6486    if (element.hasRankElement())
6487      composePositiveInt(t, "Encounter", "rank", element.getRankElement(), -1);
6488  }
6489
6490  protected void composeEncounterEncounterHospitalizationComponent(Complex parent, String parentType, String name, Encounter.EncounterHospitalizationComponent 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, "hospitalization", name, element, index);
6500    if (element.hasPreAdmissionIdentifier())
6501      composeIdentifier(t, "Encounter", "preAdmissionIdentifier", element.getPreAdmissionIdentifier(), -1);
6502    if (element.hasOrigin())
6503      composeReference(t, "Encounter", "origin", element.getOrigin(), -1);
6504    if (element.hasAdmitSource())
6505      composeCodeableConcept(t, "Encounter", "admitSource", element.getAdmitSource(), -1);
6506    if (element.hasReAdmission())
6507      composeCodeableConcept(t, "Encounter", "reAdmission", element.getReAdmission(), -1);
6508    for (int i = 0; i < element.getDietPreference().size(); i++)
6509      composeCodeableConcept(t, "Encounter", "dietPreference", element.getDietPreference().get(i), i);
6510    for (int i = 0; i < element.getSpecialCourtesy().size(); i++)
6511      composeCodeableConcept(t, "Encounter", "specialCourtesy", element.getSpecialCourtesy().get(i), i);
6512    for (int i = 0; i < element.getSpecialArrangement().size(); i++)
6513      composeCodeableConcept(t, "Encounter", "specialArrangement", element.getSpecialArrangement().get(i), i);
6514    if (element.hasDestination())
6515      composeReference(t, "Encounter", "destination", element.getDestination(), -1);
6516    if (element.hasDischargeDisposition())
6517      composeCodeableConcept(t, "Encounter", "dischargeDisposition", element.getDischargeDisposition(), -1);
6518  }
6519
6520  protected void composeEncounterEncounterLocationComponent(Complex parent, String parentType, String name, Encounter.EncounterLocationComponent 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    composeBackboneElement(t, "location", name, element, index);
6530    if (element.hasLocation())
6531      composeReference(t, "Encounter", "location", element.getLocation(), -1);
6532    if (element.hasStatusElement())
6533      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
6534    if (element.hasPeriod())
6535      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6536  }
6537
6538  protected void composeEndpoint(Complex parent, String parentType, String name, Endpoint element, int index) {
6539    if (element == null) 
6540      return;
6541    Complex t;
6542    if (Utilities.noString(parentType))
6543      t = parent;
6544    else {
6545      t = parent.predicate("fhir:"+parentType+'.'+name);
6546    }
6547    composeDomainResource(t, "Endpoint", name, element, index);
6548    for (int i = 0; i < element.getIdentifier().size(); i++)
6549      composeIdentifier(t, "Endpoint", "identifier", element.getIdentifier().get(i), i);
6550    if (element.hasStatusElement())
6551      composeEnum(t, "Endpoint", "status", element.getStatusElement(), -1);
6552    if (element.hasConnectionType())
6553      composeCoding(t, "Endpoint", "connectionType", element.getConnectionType(), -1);
6554    if (element.hasNameElement())
6555      composeString(t, "Endpoint", "name", element.getNameElement(), -1);
6556    if (element.hasManagingOrganization())
6557      composeReference(t, "Endpoint", "managingOrganization", element.getManagingOrganization(), -1);
6558    for (int i = 0; i < element.getContact().size(); i++)
6559      composeContactPoint(t, "Endpoint", "contact", element.getContact().get(i), i);
6560    if (element.hasPeriod())
6561      composePeriod(t, "Endpoint", "period", element.getPeriod(), -1);
6562    for (int i = 0; i < element.getPayloadType().size(); i++)
6563      composeCodeableConcept(t, "Endpoint", "payloadType", element.getPayloadType().get(i), i);
6564    for (int i = 0; i < element.getPayloadMimeType().size(); i++)
6565      composeCode(t, "Endpoint", "payloadMimeType", element.getPayloadMimeType().get(i), i);
6566    if (element.hasAddressElement())
6567      composeUrl(t, "Endpoint", "address", element.getAddressElement(), -1);
6568    for (int i = 0; i < element.getHeader().size(); i++)
6569      composeString(t, "Endpoint", "header", element.getHeader().get(i), i);
6570  }
6571
6572  protected void composeEnrollmentRequest(Complex parent, String parentType, String name, EnrollmentRequest element, int index) {
6573    if (element == null) 
6574      return;
6575    Complex t;
6576    if (Utilities.noString(parentType))
6577      t = parent;
6578    else {
6579      t = parent.predicate("fhir:"+parentType+'.'+name);
6580    }
6581    composeDomainResource(t, "EnrollmentRequest", name, element, index);
6582    for (int i = 0; i < element.getIdentifier().size(); i++)
6583      composeIdentifier(t, "EnrollmentRequest", "identifier", element.getIdentifier().get(i), i);
6584    if (element.hasStatusElement())
6585      composeEnum(t, "EnrollmentRequest", "status", element.getStatusElement(), -1);
6586    if (element.hasCreatedElement())
6587      composeDateTime(t, "EnrollmentRequest", "created", element.getCreatedElement(), -1);
6588    if (element.hasInsurer())
6589      composeReference(t, "EnrollmentRequest", "insurer", element.getInsurer(), -1);
6590    if (element.hasProvider())
6591      composeReference(t, "EnrollmentRequest", "provider", element.getProvider(), -1);
6592    if (element.hasCandidate())
6593      composeReference(t, "EnrollmentRequest", "candidate", element.getCandidate(), -1);
6594    if (element.hasCoverage())
6595      composeReference(t, "EnrollmentRequest", "coverage", element.getCoverage(), -1);
6596  }
6597
6598  protected void composeEnrollmentResponse(Complex parent, String parentType, String name, EnrollmentResponse element, int index) {
6599    if (element == null) 
6600      return;
6601    Complex t;
6602    if (Utilities.noString(parentType))
6603      t = parent;
6604    else {
6605      t = parent.predicate("fhir:"+parentType+'.'+name);
6606    }
6607    composeDomainResource(t, "EnrollmentResponse", name, element, index);
6608    for (int i = 0; i < element.getIdentifier().size(); i++)
6609      composeIdentifier(t, "EnrollmentResponse", "identifier", element.getIdentifier().get(i), i);
6610    if (element.hasStatusElement())
6611      composeEnum(t, "EnrollmentResponse", "status", element.getStatusElement(), -1);
6612    if (element.hasRequest())
6613      composeReference(t, "EnrollmentResponse", "request", element.getRequest(), -1);
6614    if (element.hasOutcomeElement())
6615      composeEnum(t, "EnrollmentResponse", "outcome", element.getOutcomeElement(), -1);
6616    if (element.hasDispositionElement())
6617      composeString(t, "EnrollmentResponse", "disposition", element.getDispositionElement(), -1);
6618    if (element.hasCreatedElement())
6619      composeDateTime(t, "EnrollmentResponse", "created", element.getCreatedElement(), -1);
6620    if (element.hasOrganization())
6621      composeReference(t, "EnrollmentResponse", "organization", element.getOrganization(), -1);
6622    if (element.hasRequestProvider())
6623      composeReference(t, "EnrollmentResponse", "requestProvider", element.getRequestProvider(), -1);
6624  }
6625
6626  protected void composeEpisodeOfCare(Complex parent, String parentType, String name, EpisodeOfCare element, int index) {
6627    if (element == null) 
6628      return;
6629    Complex t;
6630    if (Utilities.noString(parentType))
6631      t = parent;
6632    else {
6633      t = parent.predicate("fhir:"+parentType+'.'+name);
6634    }
6635    composeDomainResource(t, "EpisodeOfCare", name, element, index);
6636    for (int i = 0; i < element.getIdentifier().size(); i++)
6637      composeIdentifier(t, "EpisodeOfCare", "identifier", element.getIdentifier().get(i), i);
6638    if (element.hasStatusElement())
6639      composeEnum(t, "EpisodeOfCare", "status", element.getStatusElement(), -1);
6640    for (int i = 0; i < element.getStatusHistory().size(); i++)
6641      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(t, "EpisodeOfCare", "statusHistory", element.getStatusHistory().get(i), i);
6642    for (int i = 0; i < element.getType().size(); i++)
6643      composeCodeableConcept(t, "EpisodeOfCare", "type", element.getType().get(i), i);
6644    for (int i = 0; i < element.getDiagnosis().size(); i++)
6645      composeEpisodeOfCareDiagnosisComponent(t, "EpisodeOfCare", "diagnosis", element.getDiagnosis().get(i), i);
6646    if (element.hasPatient())
6647      composeReference(t, "EpisodeOfCare", "patient", element.getPatient(), -1);
6648    if (element.hasManagingOrganization())
6649      composeReference(t, "EpisodeOfCare", "managingOrganization", element.getManagingOrganization(), -1);
6650    if (element.hasPeriod())
6651      composePeriod(t, "EpisodeOfCare", "period", element.getPeriod(), -1);
6652    for (int i = 0; i < element.getReferralRequest().size(); i++)
6653      composeReference(t, "EpisodeOfCare", "referralRequest", element.getReferralRequest().get(i), i);
6654    if (element.hasCareManager())
6655      composeReference(t, "EpisodeOfCare", "careManager", element.getCareManager(), -1);
6656    for (int i = 0; i < element.getTeam().size(); i++)
6657      composeReference(t, "EpisodeOfCare", "team", element.getTeam().get(i), i);
6658    for (int i = 0; i < element.getAccount().size(); i++)
6659      composeReference(t, "EpisodeOfCare", "account", element.getAccount().get(i), i);
6660  }
6661
6662  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(Complex parent, String parentType, String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent 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, "statusHistory", name, element, index);
6672    if (element.hasStatusElement())
6673      composeEnum(t, "EpisodeOfCare", "status", element.getStatusElement(), -1);
6674    if (element.hasPeriod())
6675      composePeriod(t, "EpisodeOfCare", "period", element.getPeriod(), -1);
6676  }
6677
6678  protected void composeEpisodeOfCareDiagnosisComponent(Complex parent, String parentType, String name, EpisodeOfCare.DiagnosisComponent element, int index) {
6679    if (element == null) 
6680      return;
6681    Complex t;
6682    if (Utilities.noString(parentType))
6683      t = parent;
6684    else {
6685      t = parent.predicate("fhir:"+parentType+'.'+name);
6686    }
6687    composeBackboneElement(t, "diagnosis", name, element, index);
6688    if (element.hasCondition())
6689      composeReference(t, "EpisodeOfCare", "condition", element.getCondition(), -1);
6690    if (element.hasRole())
6691      composeCodeableConcept(t, "EpisodeOfCare", "role", element.getRole(), -1);
6692    if (element.hasRankElement())
6693      composePositiveInt(t, "EpisodeOfCare", "rank", element.getRankElement(), -1);
6694  }
6695
6696  protected void composeEventDefinition(Complex parent, String parentType, String name, EventDefinition element, int index) {
6697    if (element == null) 
6698      return;
6699    Complex t;
6700    if (Utilities.noString(parentType))
6701      t = parent;
6702    else {
6703      t = parent.predicate("fhir:"+parentType+'.'+name);
6704    }
6705    composeDomainResource(t, "EventDefinition", name, element, index);
6706    if (element.hasUrlElement())
6707      composeUri(t, "EventDefinition", "url", element.getUrlElement(), -1);
6708    for (int i = 0; i < element.getIdentifier().size(); i++)
6709      composeIdentifier(t, "EventDefinition", "identifier", element.getIdentifier().get(i), i);
6710    if (element.hasVersionElement())
6711      composeString(t, "EventDefinition", "version", element.getVersionElement(), -1);
6712    if (element.hasNameElement())
6713      composeString(t, "EventDefinition", "name", element.getNameElement(), -1);
6714    if (element.hasTitleElement())
6715      composeString(t, "EventDefinition", "title", element.getTitleElement(), -1);
6716    if (element.hasSubtitleElement())
6717      composeString(t, "EventDefinition", "subtitle", element.getSubtitleElement(), -1);
6718    if (element.hasStatusElement())
6719      composeEnum(t, "EventDefinition", "status", element.getStatusElement(), -1);
6720    if (element.hasExperimentalElement())
6721      composeBoolean(t, "EventDefinition", "experimental", element.getExperimentalElement(), -1);
6722    if (element.hasSubject())
6723      composeType(t, "EventDefinition", "subject", element.getSubject(), -1);
6724    if (element.hasDateElement())
6725      composeDateTime(t, "EventDefinition", "date", element.getDateElement(), -1);
6726    if (element.hasPublisherElement())
6727      composeString(t, "EventDefinition", "publisher", element.getPublisherElement(), -1);
6728    for (int i = 0; i < element.getContact().size(); i++)
6729      composeContactDetail(t, "EventDefinition", "contact", element.getContact().get(i), i);
6730    if (element.hasDescriptionElement())
6731      composeMarkdown(t, "EventDefinition", "description", element.getDescriptionElement(), -1);
6732    for (int i = 0; i < element.getUseContext().size(); i++)
6733      composeUsageContext(t, "EventDefinition", "useContext", element.getUseContext().get(i), i);
6734    for (int i = 0; i < element.getJurisdiction().size(); i++)
6735      composeCodeableConcept(t, "EventDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
6736    if (element.hasPurposeElement())
6737      composeMarkdown(t, "EventDefinition", "purpose", element.getPurposeElement(), -1);
6738    if (element.hasUsageElement())
6739      composeString(t, "EventDefinition", "usage", element.getUsageElement(), -1);
6740    if (element.hasCopyrightElement())
6741      composeMarkdown(t, "EventDefinition", "copyright", element.getCopyrightElement(), -1);
6742    if (element.hasApprovalDateElement())
6743      composeDate(t, "EventDefinition", "approvalDate", element.getApprovalDateElement(), -1);
6744    if (element.hasLastReviewDateElement())
6745      composeDate(t, "EventDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
6746    if (element.hasEffectivePeriod())
6747      composePeriod(t, "EventDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
6748    for (int i = 0; i < element.getTopic().size(); i++)
6749      composeCodeableConcept(t, "EventDefinition", "topic", element.getTopic().get(i), i);
6750    for (int i = 0; i < element.getAuthor().size(); i++)
6751      composeContactDetail(t, "EventDefinition", "author", element.getAuthor().get(i), i);
6752    for (int i = 0; i < element.getEditor().size(); i++)
6753      composeContactDetail(t, "EventDefinition", "editor", element.getEditor().get(i), i);
6754    for (int i = 0; i < element.getReviewer().size(); i++)
6755      composeContactDetail(t, "EventDefinition", "reviewer", element.getReviewer().get(i), i);
6756    for (int i = 0; i < element.getEndorser().size(); i++)
6757      composeContactDetail(t, "EventDefinition", "endorser", element.getEndorser().get(i), i);
6758    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
6759      composeRelatedArtifact(t, "EventDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
6760    if (element.hasTrigger())
6761      composeTriggerDefinition(t, "EventDefinition", "trigger", element.getTrigger(), -1);
6762  }
6763
6764  protected void composeExampleScenario(Complex parent, String parentType, String name, ExampleScenario element, int index) {
6765    if (element == null) 
6766      return;
6767    Complex t;
6768    if (Utilities.noString(parentType))
6769      t = parent;
6770    else {
6771      t = parent.predicate("fhir:"+parentType+'.'+name);
6772    }
6773    composeDomainResource(t, "ExampleScenario", name, element, index);
6774    if (element.hasUrlElement())
6775      composeUri(t, "ExampleScenario", "url", element.getUrlElement(), -1);
6776    for (int i = 0; i < element.getIdentifier().size(); i++)
6777      composeIdentifier(t, "ExampleScenario", "identifier", element.getIdentifier().get(i), i);
6778    if (element.hasVersionElement())
6779      composeString(t, "ExampleScenario", "version", element.getVersionElement(), -1);
6780    if (element.hasNameElement())
6781      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6782    if (element.hasStatusElement())
6783      composeEnum(t, "ExampleScenario", "status", element.getStatusElement(), -1);
6784    if (element.hasExperimentalElement())
6785      composeBoolean(t, "ExampleScenario", "experimental", element.getExperimentalElement(), -1);
6786    if (element.hasDateElement())
6787      composeDateTime(t, "ExampleScenario", "date", element.getDateElement(), -1);
6788    if (element.hasPublisherElement())
6789      composeString(t, "ExampleScenario", "publisher", element.getPublisherElement(), -1);
6790    for (int i = 0; i < element.getContact().size(); i++)
6791      composeContactDetail(t, "ExampleScenario", "contact", element.getContact().get(i), i);
6792    for (int i = 0; i < element.getUseContext().size(); i++)
6793      composeUsageContext(t, "ExampleScenario", "useContext", element.getUseContext().get(i), i);
6794    for (int i = 0; i < element.getJurisdiction().size(); i++)
6795      composeCodeableConcept(t, "ExampleScenario", "jurisdiction", element.getJurisdiction().get(i), i);
6796    if (element.hasCopyrightElement())
6797      composeMarkdown(t, "ExampleScenario", "copyright", element.getCopyrightElement(), -1);
6798    if (element.hasPurposeElement())
6799      composeMarkdown(t, "ExampleScenario", "purpose", element.getPurposeElement(), -1);
6800    for (int i = 0; i < element.getActor().size(); i++)
6801      composeExampleScenarioExampleScenarioActorComponent(t, "ExampleScenario", "actor", element.getActor().get(i), i);
6802    for (int i = 0; i < element.getInstance().size(); i++)
6803      composeExampleScenarioExampleScenarioInstanceComponent(t, "ExampleScenario", "instance", element.getInstance().get(i), i);
6804    for (int i = 0; i < element.getProcess().size(); i++)
6805      composeExampleScenarioExampleScenarioProcessComponent(t, "ExampleScenario", "process", element.getProcess().get(i), i);
6806    for (int i = 0; i < element.getWorkflow().size(); i++)
6807      composeCanonical(t, "ExampleScenario", "workflow", element.getWorkflow().get(i), i);
6808  }
6809
6810  protected void composeExampleScenarioExampleScenarioActorComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioActorComponent element, int index) {
6811    if (element == null) 
6812      return;
6813    Complex t;
6814    if (Utilities.noString(parentType))
6815      t = parent;
6816    else {
6817      t = parent.predicate("fhir:"+parentType+'.'+name);
6818    }
6819    composeBackboneElement(t, "actor", name, element, index);
6820    if (element.hasActorIdElement())
6821      composeString(t, "ExampleScenario", "actorId", element.getActorIdElement(), -1);
6822    if (element.hasTypeElement())
6823      composeEnum(t, "ExampleScenario", "type", element.getTypeElement(), -1);
6824    if (element.hasNameElement())
6825      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6826    if (element.hasDescriptionElement())
6827      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6828  }
6829
6830  protected void composeExampleScenarioExampleScenarioInstanceComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceComponent element, int index) {
6831    if (element == null) 
6832      return;
6833    Complex t;
6834    if (Utilities.noString(parentType))
6835      t = parent;
6836    else {
6837      t = parent.predicate("fhir:"+parentType+'.'+name);
6838    }
6839    composeBackboneElement(t, "instance", name, element, index);
6840    if (element.hasResourceIdElement())
6841      composeString(t, "ExampleScenario", "resourceId", element.getResourceIdElement(), -1);
6842    if (element.hasResourceTypeElement())
6843      composeEnum(t, "ExampleScenario", "resourceType", element.getResourceTypeElement(), -1);
6844    if (element.hasNameElement())
6845      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6846    if (element.hasDescriptionElement())
6847      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6848    for (int i = 0; i < element.getVersion().size(); i++)
6849      composeExampleScenarioExampleScenarioInstanceVersionComponent(t, "ExampleScenario", "version", element.getVersion().get(i), i);
6850    for (int i = 0; i < element.getContainedInstance().size(); i++)
6851      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "containedInstance", element.getContainedInstance().get(i), i);
6852  }
6853
6854  protected void composeExampleScenarioExampleScenarioInstanceVersionComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element, int index) {
6855    if (element == null) 
6856      return;
6857    Complex t;
6858    if (Utilities.noString(parentType))
6859      t = parent;
6860    else {
6861      t = parent.predicate("fhir:"+parentType+'.'+name);
6862    }
6863    composeBackboneElement(t, "version", name, element, index);
6864    if (element.hasVersionIdElement())
6865      composeString(t, "ExampleScenario", "versionId", element.getVersionIdElement(), -1);
6866    if (element.hasDescriptionElement())
6867      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6868  }
6869
6870  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element, int index) {
6871    if (element == null) 
6872      return;
6873    Complex t;
6874    if (Utilities.noString(parentType))
6875      t = parent;
6876    else {
6877      t = parent.predicate("fhir:"+parentType+'.'+name);
6878    }
6879    composeBackboneElement(t, "containedInstance", name, element, index);
6880    if (element.hasResourceIdElement())
6881      composeString(t, "ExampleScenario", "resourceId", element.getResourceIdElement(), -1);
6882    if (element.hasVersionIdElement())
6883      composeString(t, "ExampleScenario", "versionId", element.getVersionIdElement(), -1);
6884  }
6885
6886  protected void composeExampleScenarioExampleScenarioProcessComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessComponent element, int index) {
6887    if (element == null) 
6888      return;
6889    Complex t;
6890    if (Utilities.noString(parentType))
6891      t = parent;
6892    else {
6893      t = parent.predicate("fhir:"+parentType+'.'+name);
6894    }
6895    composeBackboneElement(t, "process", name, element, index);
6896    if (element.hasTitleElement())
6897      composeString(t, "ExampleScenario", "title", element.getTitleElement(), -1);
6898    if (element.hasDescriptionElement())
6899      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6900    if (element.hasPreConditionsElement())
6901      composeMarkdown(t, "ExampleScenario", "preConditions", element.getPreConditionsElement(), -1);
6902    if (element.hasPostConditionsElement())
6903      composeMarkdown(t, "ExampleScenario", "postConditions", element.getPostConditionsElement(), -1);
6904    for (int i = 0; i < element.getStep().size(); i++)
6905      composeExampleScenarioExampleScenarioProcessStepComponent(t, "ExampleScenario", "step", element.getStep().get(i), i);
6906  }
6907
6908  protected void composeExampleScenarioExampleScenarioProcessStepComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepComponent element, int index) {
6909    if (element == null) 
6910      return;
6911    Complex t;
6912    if (Utilities.noString(parentType))
6913      t = parent;
6914    else {
6915      t = parent.predicate("fhir:"+parentType+'.'+name);
6916    }
6917    composeBackboneElement(t, "step", name, element, index);
6918    for (int i = 0; i < element.getProcess().size(); i++)
6919      composeExampleScenarioExampleScenarioProcessComponent(t, "ExampleScenario", "process", element.getProcess().get(i), i);
6920    if (element.hasPauseElement())
6921      composeBoolean(t, "ExampleScenario", "pause", element.getPauseElement(), -1);
6922    if (element.hasOperation())
6923      composeExampleScenarioExampleScenarioProcessStepOperationComponent(t, "ExampleScenario", "operation", element.getOperation(), -1);
6924    if (element.hasAlternative())
6925      composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(t, "ExampleScenario", "alternative", element.getAlternative(), -1);
6926  }
6927
6928  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element, int index) {
6929    if (element == null) 
6930      return;
6931    Complex t;
6932    if (Utilities.noString(parentType))
6933      t = parent;
6934    else {
6935      t = parent.predicate("fhir:"+parentType+'.'+name);
6936    }
6937    composeBackboneElement(t, "operation", name, element, index);
6938    if (element.hasNumberElement())
6939      composeString(t, "ExampleScenario", "number", element.getNumberElement(), -1);
6940    if (element.hasTypeElement())
6941      composeString(t, "ExampleScenario", "type", element.getTypeElement(), -1);
6942    if (element.hasNameElement())
6943      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6944    if (element.hasInitiatorElement())
6945      composeString(t, "ExampleScenario", "initiator", element.getInitiatorElement(), -1);
6946    if (element.hasReceiverElement())
6947      composeString(t, "ExampleScenario", "receiver", element.getReceiverElement(), -1);
6948    if (element.hasDescriptionElement())
6949      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6950    if (element.hasInitiatorActiveElement())
6951      composeBoolean(t, "ExampleScenario", "initiatorActive", element.getInitiatorActiveElement(), -1);
6952    if (element.hasReceiverActiveElement())
6953      composeBoolean(t, "ExampleScenario", "receiverActive", element.getReceiverActiveElement(), -1);
6954    if (element.hasRequest())
6955      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "request", element.getRequest(), -1);
6956    if (element.hasResponse())
6957      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "response", element.getResponse(), -1);
6958  }
6959
6960  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element, int index) {
6961    if (element == null) 
6962      return;
6963    Complex t;
6964    if (Utilities.noString(parentType))
6965      t = parent;
6966    else {
6967      t = parent.predicate("fhir:"+parentType+'.'+name);
6968    }
6969    composeBackboneElement(t, "alternative", name, element, index);
6970    if (element.hasNameElement())
6971      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
6972    for (int i = 0; i < element.getOption().size(); i++)
6973      composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(t, "ExampleScenario", "option", element.getOption().get(i), i);
6974  }
6975
6976  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent element, int index) {
6977    if (element == null) 
6978      return;
6979    Complex t;
6980    if (Utilities.noString(parentType))
6981      t = parent;
6982    else {
6983      t = parent.predicate("fhir:"+parentType+'.'+name);
6984    }
6985    composeBackboneElement(t, "option", name, element, index);
6986    if (element.hasDescriptionElement())
6987      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
6988    for (int i = 0; i < element.getStep().size(); i++)
6989      composeExampleScenarioExampleScenarioProcessStepComponent(t, "ExampleScenario", "step", element.getStep().get(i), i);
6990    for (int i = 0; i < element.getPause().size(); i++)
6991      composeBoolean(t, "ExampleScenario", "pause", element.getPause().get(i), i);
6992  }
6993
6994  protected void composeExplanationOfBenefit(Complex parent, String parentType, String name, ExplanationOfBenefit element, int index) {
6995    if (element == null) 
6996      return;
6997    Complex t;
6998    if (Utilities.noString(parentType))
6999      t = parent;
7000    else {
7001      t = parent.predicate("fhir:"+parentType+'.'+name);
7002    }
7003    composeDomainResource(t, "ExplanationOfBenefit", name, element, index);
7004    for (int i = 0; i < element.getIdentifier().size(); i++)
7005      composeIdentifier(t, "ExplanationOfBenefit", "identifier", element.getIdentifier().get(i), i);
7006    if (element.hasStatusElement())
7007      composeEnum(t, "ExplanationOfBenefit", "status", element.getStatusElement(), -1);
7008    if (element.hasType())
7009      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7010    if (element.hasSubType())
7011      composeCodeableConcept(t, "ExplanationOfBenefit", "subType", element.getSubType(), -1);
7012    if (element.hasUseElement())
7013      composeEnum(t, "ExplanationOfBenefit", "use", element.getUseElement(), -1);
7014    if (element.hasPatient())
7015      composeReference(t, "ExplanationOfBenefit", "patient", element.getPatient(), -1);
7016    if (element.hasBillablePeriod())
7017      composePeriod(t, "ExplanationOfBenefit", "billablePeriod", element.getBillablePeriod(), -1);
7018    if (element.hasCreatedElement())
7019      composeDateTime(t, "ExplanationOfBenefit", "created", element.getCreatedElement(), -1);
7020    if (element.hasEnterer())
7021      composeReference(t, "ExplanationOfBenefit", "enterer", element.getEnterer(), -1);
7022    if (element.hasInsurer())
7023      composeReference(t, "ExplanationOfBenefit", "insurer", element.getInsurer(), -1);
7024    if (element.hasProvider())
7025      composeReference(t, "ExplanationOfBenefit", "provider", element.getProvider(), -1);
7026    if (element.hasReferral())
7027      composeReference(t, "ExplanationOfBenefit", "referral", element.getReferral(), -1);
7028    if (element.hasFacility())
7029      composeReference(t, "ExplanationOfBenefit", "facility", element.getFacility(), -1);
7030    if (element.hasClaim())
7031      composeReference(t, "ExplanationOfBenefit", "claim", element.getClaim(), -1);
7032    if (element.hasClaimResponse())
7033      composeReference(t, "ExplanationOfBenefit", "claimResponse", element.getClaimResponse(), -1);
7034    if (element.hasOutcomeElement())
7035      composeEnum(t, "ExplanationOfBenefit", "outcome", element.getOutcomeElement(), -1);
7036    if (element.hasDispositionElement())
7037      composeString(t, "ExplanationOfBenefit", "disposition", element.getDispositionElement(), -1);
7038    for (int i = 0; i < element.getRelated().size(); i++)
7039      composeExplanationOfBenefitRelatedClaimComponent(t, "ExplanationOfBenefit", "related", element.getRelated().get(i), i);
7040    if (element.hasPrescription())
7041      composeReference(t, "ExplanationOfBenefit", "prescription", element.getPrescription(), -1);
7042    if (element.hasOriginalPrescription())
7043      composeReference(t, "ExplanationOfBenefit", "originalPrescription", element.getOriginalPrescription(), -1);
7044    if (element.hasPayee())
7045      composeExplanationOfBenefitPayeeComponent(t, "ExplanationOfBenefit", "payee", element.getPayee(), -1);
7046    for (int i = 0; i < element.getInformation().size(); i++)
7047      composeExplanationOfBenefitSupportingInformationComponent(t, "ExplanationOfBenefit", "information", element.getInformation().get(i), i);
7048    for (int i = 0; i < element.getCareTeam().size(); i++)
7049      composeExplanationOfBenefitCareTeamComponent(t, "ExplanationOfBenefit", "careTeam", element.getCareTeam().get(i), i);
7050    for (int i = 0; i < element.getDiagnosis().size(); i++)
7051      composeExplanationOfBenefitDiagnosisComponent(t, "ExplanationOfBenefit", "diagnosis", element.getDiagnosis().get(i), i);
7052    for (int i = 0; i < element.getProcedure().size(); i++)
7053      composeExplanationOfBenefitProcedureComponent(t, "ExplanationOfBenefit", "procedure", element.getProcedure().get(i), i);
7054    if (element.hasPrecedenceElement())
7055      composePositiveInt(t, "ExplanationOfBenefit", "precedence", element.getPrecedenceElement(), -1);
7056    for (int i = 0; i < element.getInsurance().size(); i++)
7057      composeExplanationOfBenefitInsuranceComponent(t, "ExplanationOfBenefit", "insurance", element.getInsurance().get(i), i);
7058    if (element.hasAccident())
7059      composeExplanationOfBenefitAccidentComponent(t, "ExplanationOfBenefit", "accident", element.getAccident(), -1);
7060    for (int i = 0; i < element.getItem().size(); i++)
7061      composeExplanationOfBenefitItemComponent(t, "ExplanationOfBenefit", "item", element.getItem().get(i), i);
7062    for (int i = 0; i < element.getAddItem().size(); i++)
7063      composeExplanationOfBenefitAddedItemComponent(t, "ExplanationOfBenefit", "addItem", element.getAddItem().get(i), i);
7064    for (int i = 0; i < element.getTotal().size(); i++)
7065      composeExplanationOfBenefitTotalComponent(t, "ExplanationOfBenefit", "total", element.getTotal().get(i), i);
7066    if (element.hasPayment())
7067      composeExplanationOfBenefitPaymentComponent(t, "ExplanationOfBenefit", "payment", element.getPayment(), -1);
7068    if (element.hasForm())
7069      composeCodeableConcept(t, "ExplanationOfBenefit", "form", element.getForm(), -1);
7070    for (int i = 0; i < element.getProcessNote().size(); i++)
7071      composeExplanationOfBenefitNoteComponent(t, "ExplanationOfBenefit", "processNote", element.getProcessNote().get(i), i);
7072    for (int i = 0; i < element.getBenefitBalance().size(); i++)
7073      composeExplanationOfBenefitBenefitBalanceComponent(t, "ExplanationOfBenefit", "benefitBalance", element.getBenefitBalance().get(i), i);
7074  }
7075
7076  protected void composeExplanationOfBenefitRelatedClaimComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.RelatedClaimComponent element, int index) {
7077    if (element == null) 
7078      return;
7079    Complex t;
7080    if (Utilities.noString(parentType))
7081      t = parent;
7082    else {
7083      t = parent.predicate("fhir:"+parentType+'.'+name);
7084    }
7085    composeBackboneElement(t, "related", name, element, index);
7086    if (element.hasClaim())
7087      composeReference(t, "ExplanationOfBenefit", "claim", element.getClaim(), -1);
7088    if (element.hasRelationship())
7089      composeCodeableConcept(t, "ExplanationOfBenefit", "relationship", element.getRelationship(), -1);
7090    if (element.hasReference())
7091      composeIdentifier(t, "ExplanationOfBenefit", "reference", element.getReference(), -1);
7092  }
7093
7094  protected void composeExplanationOfBenefitPayeeComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.PayeeComponent 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, "payee", name, element, index);
7104    if (element.hasType())
7105      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7106    if (element.hasResource())
7107      composeCoding(t, "ExplanationOfBenefit", "resource", element.getResource(), -1);
7108    if (element.hasParty())
7109      composeReference(t, "ExplanationOfBenefit", "party", element.getParty(), -1);
7110  }
7111
7112  protected void composeExplanationOfBenefitSupportingInformationComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.SupportingInformationComponent element, int index) {
7113    if (element == null) 
7114      return;
7115    Complex t;
7116    if (Utilities.noString(parentType))
7117      t = parent;
7118    else {
7119      t = parent.predicate("fhir:"+parentType+'.'+name);
7120    }
7121    composeBackboneElement(t, "information", name, element, index);
7122    if (element.hasSequenceElement())
7123      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7124    if (element.hasCategory())
7125      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7126    if (element.hasCode())
7127      composeCodeableConcept(t, "ExplanationOfBenefit", "code", element.getCode(), -1);
7128    if (element.hasTiming())
7129      composeType(t, "ExplanationOfBenefit", "timing", element.getTiming(), -1);
7130    if (element.hasValue())
7131      composeType(t, "ExplanationOfBenefit", "value", element.getValue(), -1);
7132    if (element.hasReason())
7133      composeCoding(t, "ExplanationOfBenefit", "reason", element.getReason(), -1);
7134  }
7135
7136  protected void composeExplanationOfBenefitCareTeamComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.CareTeamComponent element, int index) {
7137    if (element == null) 
7138      return;
7139    Complex t;
7140    if (Utilities.noString(parentType))
7141      t = parent;
7142    else {
7143      t = parent.predicate("fhir:"+parentType+'.'+name);
7144    }
7145    composeBackboneElement(t, "careTeam", name, element, index);
7146    if (element.hasSequenceElement())
7147      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7148    if (element.hasProvider())
7149      composeReference(t, "ExplanationOfBenefit", "provider", element.getProvider(), -1);
7150    if (element.hasResponsibleElement())
7151      composeBoolean(t, "ExplanationOfBenefit", "responsible", element.getResponsibleElement(), -1);
7152    if (element.hasRole())
7153      composeCodeableConcept(t, "ExplanationOfBenefit", "role", element.getRole(), -1);
7154    if (element.hasQualification())
7155      composeCodeableConcept(t, "ExplanationOfBenefit", "qualification", element.getQualification(), -1);
7156  }
7157
7158  protected void composeExplanationOfBenefitDiagnosisComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.DiagnosisComponent element, int index) {
7159    if (element == null) 
7160      return;
7161    Complex t;
7162    if (Utilities.noString(parentType))
7163      t = parent;
7164    else {
7165      t = parent.predicate("fhir:"+parentType+'.'+name);
7166    }
7167    composeBackboneElement(t, "diagnosis", name, element, index);
7168    if (element.hasSequenceElement())
7169      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7170    if (element.hasDiagnosis())
7171      composeType(t, "ExplanationOfBenefit", "diagnosis", element.getDiagnosis(), -1);
7172    for (int i = 0; i < element.getType().size(); i++)
7173      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType().get(i), i);
7174    if (element.hasOnAdmission())
7175      composeCodeableConcept(t, "ExplanationOfBenefit", "onAdmission", element.getOnAdmission(), -1);
7176    if (element.hasPackageCode())
7177      composeCodeableConcept(t, "ExplanationOfBenefit", "packageCode", element.getPackageCode(), -1);
7178  }
7179
7180  protected void composeExplanationOfBenefitProcedureComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.ProcedureComponent element, int index) {
7181    if (element == null) 
7182      return;
7183    Complex t;
7184    if (Utilities.noString(parentType))
7185      t = parent;
7186    else {
7187      t = parent.predicate("fhir:"+parentType+'.'+name);
7188    }
7189    composeBackboneElement(t, "procedure", name, element, index);
7190    if (element.hasSequenceElement())
7191      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7192    if (element.hasDateElement())
7193      composeDateTime(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
7194    if (element.hasProcedure())
7195      composeType(t, "ExplanationOfBenefit", "procedure", element.getProcedure(), -1);
7196  }
7197
7198  protected void composeExplanationOfBenefitInsuranceComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.InsuranceComponent element, int index) {
7199    if (element == null) 
7200      return;
7201    Complex t;
7202    if (Utilities.noString(parentType))
7203      t = parent;
7204    else {
7205      t = parent.predicate("fhir:"+parentType+'.'+name);
7206    }
7207    composeBackboneElement(t, "insurance", name, element, index);
7208    if (element.hasFocalElement())
7209      composeBoolean(t, "ExplanationOfBenefit", "focal", element.getFocalElement(), -1);
7210    if (element.hasCoverage())
7211      composeReference(t, "ExplanationOfBenefit", "coverage", element.getCoverage(), -1);
7212  }
7213
7214  protected void composeExplanationOfBenefitAccidentComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AccidentComponent element, int index) {
7215    if (element == null) 
7216      return;
7217    Complex t;
7218    if (Utilities.noString(parentType))
7219      t = parent;
7220    else {
7221      t = parent.predicate("fhir:"+parentType+'.'+name);
7222    }
7223    composeBackboneElement(t, "accident", name, element, index);
7224    if (element.hasDateElement())
7225      composeDate(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
7226    if (element.hasType())
7227      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7228    if (element.hasLocation())
7229      composeType(t, "ExplanationOfBenefit", "location", element.getLocation(), -1);
7230  }
7231
7232  protected void composeExplanationOfBenefitItemComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.ItemComponent element, int index) {
7233    if (element == null) 
7234      return;
7235    Complex t;
7236    if (Utilities.noString(parentType))
7237      t = parent;
7238    else {
7239      t = parent.predicate("fhir:"+parentType+'.'+name);
7240    }
7241    composeBackboneElement(t, "item", name, element, index);
7242    if (element.hasSequenceElement())
7243      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7244    for (int i = 0; i < element.getCareTeamSequence().size(); i++)
7245      composePositiveInt(t, "ExplanationOfBenefit", "careTeamSequence", element.getCareTeamSequence().get(i), i);
7246    for (int i = 0; i < element.getDiagnosisSequence().size(); i++)
7247      composePositiveInt(t, "ExplanationOfBenefit", "diagnosisSequence", element.getDiagnosisSequence().get(i), i);
7248    for (int i = 0; i < element.getProcedureSequence().size(); i++)
7249      composePositiveInt(t, "ExplanationOfBenefit", "procedureSequence", element.getProcedureSequence().get(i), i);
7250    for (int i = 0; i < element.getInformationSequence().size(); i++)
7251      composePositiveInt(t, "ExplanationOfBenefit", "informationSequence", element.getInformationSequence().get(i), i);
7252    if (element.hasRevenue())
7253      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
7254    if (element.hasCategory())
7255      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7256    if (element.hasBillcode())
7257      composeCodeableConcept(t, "ExplanationOfBenefit", "billcode", element.getBillcode(), -1);
7258    for (int i = 0; i < element.getModifier().size(); i++)
7259      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7260    for (int i = 0; i < element.getProgramCode().size(); i++)
7261      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
7262    if (element.hasServiced())
7263      composeType(t, "ExplanationOfBenefit", "serviced", element.getServiced(), -1);
7264    if (element.hasLocation())
7265      composeType(t, "ExplanationOfBenefit", "location", element.getLocation(), -1);
7266    if (element.hasQuantity())
7267      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7268    if (element.hasUnitPrice())
7269      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7270    if (element.hasFactorElement())
7271      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7272    if (element.hasNet())
7273      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7274    for (int i = 0; i < element.getUdi().size(); i++)
7275      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
7276    if (element.hasBodySite())
7277      composeCodeableConcept(t, "ExplanationOfBenefit", "bodySite", element.getBodySite(), -1);
7278    for (int i = 0; i < element.getSubSite().size(); i++)
7279      composeCodeableConcept(t, "ExplanationOfBenefit", "subSite", element.getSubSite().get(i), i);
7280    for (int i = 0; i < element.getEncounter().size(); i++)
7281      composeReference(t, "ExplanationOfBenefit", "encounter", element.getEncounter().get(i), i);
7282    for (int i = 0; i < element.getNoteNumber().size(); i++)
7283      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7284    for (int i = 0; i < element.getAdjudication().size(); i++)
7285      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7286    for (int i = 0; i < element.getDetail().size(); i++)
7287      composeExplanationOfBenefitDetailComponent(t, "ExplanationOfBenefit", "detail", element.getDetail().get(i), i);
7288  }
7289
7290  protected void composeExplanationOfBenefitAdjudicationComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AdjudicationComponent 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, "adjudication", name, element, index);
7300    if (element.hasCategory())
7301      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7302    if (element.hasReason())
7303      composeCodeableConcept(t, "ExplanationOfBenefit", "reason", element.getReason(), -1);
7304    if (element.hasAmount())
7305      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
7306    if (element.hasValueElement())
7307      composeDecimal(t, "ExplanationOfBenefit", "value", element.getValueElement(), -1);
7308  }
7309
7310  protected void composeExplanationOfBenefitDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.DetailComponent element, int index) {
7311    if (element == null) 
7312      return;
7313    Complex t;
7314    if (Utilities.noString(parentType))
7315      t = parent;
7316    else {
7317      t = parent.predicate("fhir:"+parentType+'.'+name);
7318    }
7319    composeBackboneElement(t, "detail", name, element, index);
7320    if (element.hasSequenceElement())
7321      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7322    if (element.hasRevenue())
7323      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
7324    if (element.hasCategory())
7325      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7326    if (element.hasBillcode())
7327      composeCodeableConcept(t, "ExplanationOfBenefit", "billcode", element.getBillcode(), -1);
7328    for (int i = 0; i < element.getModifier().size(); i++)
7329      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7330    for (int i = 0; i < element.getProgramCode().size(); i++)
7331      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
7332    if (element.hasQuantity())
7333      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7334    if (element.hasUnitPrice())
7335      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7336    if (element.hasFactorElement())
7337      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7338    if (element.hasNet())
7339      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7340    for (int i = 0; i < element.getUdi().size(); i++)
7341      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
7342    for (int i = 0; i < element.getNoteNumber().size(); i++)
7343      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7344    for (int i = 0; i < element.getAdjudication().size(); i++)
7345      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7346    for (int i = 0; i < element.getSubDetail().size(); i++)
7347      composeExplanationOfBenefitSubDetailComponent(t, "ExplanationOfBenefit", "subDetail", element.getSubDetail().get(i), i);
7348  }
7349
7350  protected void composeExplanationOfBenefitSubDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.SubDetailComponent element, int index) {
7351    if (element == null) 
7352      return;
7353    Complex t;
7354    if (Utilities.noString(parentType))
7355      t = parent;
7356    else {
7357      t = parent.predicate("fhir:"+parentType+'.'+name);
7358    }
7359    composeBackboneElement(t, "subDetail", name, element, index);
7360    if (element.hasSequenceElement())
7361      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7362    if (element.hasRevenue())
7363      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
7364    if (element.hasCategory())
7365      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7366    if (element.hasBillcode())
7367      composeCodeableConcept(t, "ExplanationOfBenefit", "billcode", element.getBillcode(), -1);
7368    for (int i = 0; i < element.getModifier().size(); i++)
7369      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7370    for (int i = 0; i < element.getProgramCode().size(); i++)
7371      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
7372    if (element.hasQuantity())
7373      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7374    if (element.hasUnitPrice())
7375      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7376    if (element.hasFactorElement())
7377      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7378    if (element.hasNet())
7379      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7380    for (int i = 0; i < element.getUdi().size(); i++)
7381      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
7382    for (int i = 0; i < element.getNoteNumber().size(); i++)
7383      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7384    for (int i = 0; i < element.getAdjudication().size(); i++)
7385      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7386  }
7387
7388  protected void composeExplanationOfBenefitAddedItemComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AddedItemComponent element, int index) {
7389    if (element == null) 
7390      return;
7391    Complex t;
7392    if (Utilities.noString(parentType))
7393      t = parent;
7394    else {
7395      t = parent.predicate("fhir:"+parentType+'.'+name);
7396    }
7397    composeBackboneElement(t, "addItem", name, element, index);
7398    for (int i = 0; i < element.getItemSequence().size(); i++)
7399      composePositiveInt(t, "ExplanationOfBenefit", "itemSequence", element.getItemSequence().get(i), i);
7400    for (int i = 0; i < element.getDetailSequence().size(); i++)
7401      composePositiveInt(t, "ExplanationOfBenefit", "detailSequence", element.getDetailSequence().get(i), i);
7402    for (int i = 0; i < element.getSubDetailSequence().size(); i++)
7403      composePositiveInt(t, "ExplanationOfBenefit", "subDetailSequence", element.getSubDetailSequence().get(i), i);
7404    for (int i = 0; i < element.getProvider().size(); i++)
7405      composeReference(t, "ExplanationOfBenefit", "provider", element.getProvider().get(i), i);
7406    if (element.hasBillcode())
7407      composeCodeableConcept(t, "ExplanationOfBenefit", "billcode", element.getBillcode(), -1);
7408    for (int i = 0; i < element.getModifier().size(); i++)
7409      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7410    for (int i = 0; i < element.getProgramCode().size(); i++)
7411      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
7412    if (element.hasServiced())
7413      composeType(t, "ExplanationOfBenefit", "serviced", element.getServiced(), -1);
7414    if (element.hasLocation())
7415      composeType(t, "ExplanationOfBenefit", "location", element.getLocation(), -1);
7416    if (element.hasQuantity())
7417      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7418    if (element.hasUnitPrice())
7419      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7420    if (element.hasFactorElement())
7421      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7422    if (element.hasNet())
7423      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7424    if (element.hasBodySite())
7425      composeCodeableConcept(t, "ExplanationOfBenefit", "bodySite", element.getBodySite(), -1);
7426    for (int i = 0; i < element.getSubSite().size(); i++)
7427      composeCodeableConcept(t, "ExplanationOfBenefit", "subSite", element.getSubSite().get(i), i);
7428    for (int i = 0; i < element.getNoteNumber().size(); i++)
7429      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7430    for (int i = 0; i < element.getAdjudication().size(); i++)
7431      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7432    for (int i = 0; i < element.getDetail().size(); i++)
7433      composeExplanationOfBenefitAddedItemDetailComponent(t, "ExplanationOfBenefit", "detail", element.getDetail().get(i), i);
7434  }
7435
7436  protected void composeExplanationOfBenefitAddedItemDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AddedItemDetailComponent element, int index) {
7437    if (element == null) 
7438      return;
7439    Complex t;
7440    if (Utilities.noString(parentType))
7441      t = parent;
7442    else {
7443      t = parent.predicate("fhir:"+parentType+'.'+name);
7444    }
7445    composeBackboneElement(t, "detail", name, element, index);
7446    if (element.hasBillcode())
7447      composeCodeableConcept(t, "ExplanationOfBenefit", "billcode", element.getBillcode(), -1);
7448    for (int i = 0; i < element.getModifier().size(); i++)
7449      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7450    if (element.hasQuantity())
7451      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7452    if (element.hasUnitPrice())
7453      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7454    if (element.hasFactorElement())
7455      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7456    if (element.hasNet())
7457      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7458    for (int i = 0; i < element.getNoteNumber().size(); i++)
7459      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7460    for (int i = 0; i < element.getAdjudication().size(); i++)
7461      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7462    for (int i = 0; i < element.getSubDetail().size(); i++)
7463      composeExplanationOfBenefitAddedItemDetailSubDetailComponent(t, "ExplanationOfBenefit", "subDetail", element.getSubDetail().get(i), i);
7464  }
7465
7466  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element, int index) {
7467    if (element == null) 
7468      return;
7469    Complex t;
7470    if (Utilities.noString(parentType))
7471      t = parent;
7472    else {
7473      t = parent.predicate("fhir:"+parentType+'.'+name);
7474    }
7475    composeBackboneElement(t, "subDetail", name, element, index);
7476    if (element.hasBillcode())
7477      composeCodeableConcept(t, "ExplanationOfBenefit", "billcode", element.getBillcode(), -1);
7478    for (int i = 0; i < element.getModifier().size(); i++)
7479      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7480    if (element.hasQuantity())
7481      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7482    if (element.hasUnitPrice())
7483      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7484    if (element.hasFactorElement())
7485      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7486    if (element.hasNet())
7487      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7488    for (int i = 0; i < element.getNoteNumber().size(); i++)
7489      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7490    for (int i = 0; i < element.getAdjudication().size(); i++)
7491      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7492  }
7493
7494  protected void composeExplanationOfBenefitTotalComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.TotalComponent element, int index) {
7495    if (element == null) 
7496      return;
7497    Complex t;
7498    if (Utilities.noString(parentType))
7499      t = parent;
7500    else {
7501      t = parent.predicate("fhir:"+parentType+'.'+name);
7502    }
7503    composeBackboneElement(t, "total", name, element, index);
7504    if (element.hasCategory())
7505      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7506    if (element.hasAmount())
7507      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
7508  }
7509
7510  protected void composeExplanationOfBenefitPaymentComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.PaymentComponent element, int index) {
7511    if (element == null) 
7512      return;
7513    Complex t;
7514    if (Utilities.noString(parentType))
7515      t = parent;
7516    else {
7517      t = parent.predicate("fhir:"+parentType+'.'+name);
7518    }
7519    composeBackboneElement(t, "payment", name, element, index);
7520    if (element.hasType())
7521      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7522    if (element.hasAdjustment())
7523      composeMoney(t, "ExplanationOfBenefit", "adjustment", element.getAdjustment(), -1);
7524    if (element.hasAdjustmentReason())
7525      composeCodeableConcept(t, "ExplanationOfBenefit", "adjustmentReason", element.getAdjustmentReason(), -1);
7526    if (element.hasDateElement())
7527      composeDate(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
7528    if (element.hasAmount())
7529      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
7530    if (element.hasIdentifier())
7531      composeIdentifier(t, "ExplanationOfBenefit", "identifier", element.getIdentifier(), -1);
7532  }
7533
7534  protected void composeExplanationOfBenefitNoteComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.NoteComponent element, int index) {
7535    if (element == null) 
7536      return;
7537    Complex t;
7538    if (Utilities.noString(parentType))
7539      t = parent;
7540    else {
7541      t = parent.predicate("fhir:"+parentType+'.'+name);
7542    }
7543    composeBackboneElement(t, "processNote", name, element, index);
7544    if (element.hasNumberElement())
7545      composePositiveInt(t, "ExplanationOfBenefit", "number", element.getNumberElement(), -1);
7546    if (element.hasTypeElement())
7547      composeEnum(t, "ExplanationOfBenefit", "type", element.getTypeElement(), -1);
7548    if (element.hasTextElement())
7549      composeString(t, "ExplanationOfBenefit", "text", element.getTextElement(), -1);
7550    if (element.hasLanguage())
7551      composeCodeableConcept(t, "ExplanationOfBenefit", "language", element.getLanguage(), -1);
7552  }
7553
7554  protected void composeExplanationOfBenefitBenefitBalanceComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.BenefitBalanceComponent element, int index) {
7555    if (element == null) 
7556      return;
7557    Complex t;
7558    if (Utilities.noString(parentType))
7559      t = parent;
7560    else {
7561      t = parent.predicate("fhir:"+parentType+'.'+name);
7562    }
7563    composeBackboneElement(t, "benefitBalance", name, element, index);
7564    if (element.hasCategory())
7565      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7566    if (element.hasExcludedElement())
7567      composeBoolean(t, "ExplanationOfBenefit", "excluded", element.getExcludedElement(), -1);
7568    if (element.hasNameElement())
7569      composeString(t, "ExplanationOfBenefit", "name", element.getNameElement(), -1);
7570    if (element.hasDescriptionElement())
7571      composeString(t, "ExplanationOfBenefit", "description", element.getDescriptionElement(), -1);
7572    if (element.hasNetwork())
7573      composeCodeableConcept(t, "ExplanationOfBenefit", "network", element.getNetwork(), -1);
7574    if (element.hasUnit())
7575      composeCodeableConcept(t, "ExplanationOfBenefit", "unit", element.getUnit(), -1);
7576    if (element.hasTerm())
7577      composeCodeableConcept(t, "ExplanationOfBenefit", "term", element.getTerm(), -1);
7578    for (int i = 0; i < element.getFinancial().size(); i++)
7579      composeExplanationOfBenefitBenefitComponent(t, "ExplanationOfBenefit", "financial", element.getFinancial().get(i), i);
7580  }
7581
7582  protected void composeExplanationOfBenefitBenefitComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.BenefitComponent element, int index) {
7583    if (element == null) 
7584      return;
7585    Complex t;
7586    if (Utilities.noString(parentType))
7587      t = parent;
7588    else {
7589      t = parent.predicate("fhir:"+parentType+'.'+name);
7590    }
7591    composeBackboneElement(t, "financial", name, element, index);
7592    if (element.hasType())
7593      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7594    if (element.hasAllowed())
7595      composeType(t, "ExplanationOfBenefit", "allowed", element.getAllowed(), -1);
7596    if (element.hasUsed())
7597      composeType(t, "ExplanationOfBenefit", "used", element.getUsed(), -1);
7598  }
7599
7600  protected void composeFamilyMemberHistory(Complex parent, String parentType, String name, FamilyMemberHistory element, int index) {
7601    if (element == null) 
7602      return;
7603    Complex t;
7604    if (Utilities.noString(parentType))
7605      t = parent;
7606    else {
7607      t = parent.predicate("fhir:"+parentType+'.'+name);
7608    }
7609    composeDomainResource(t, "FamilyMemberHistory", name, element, index);
7610    for (int i = 0; i < element.getIdentifier().size(); i++)
7611      composeIdentifier(t, "FamilyMemberHistory", "identifier", element.getIdentifier().get(i), i);
7612    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
7613      composeCanonical(t, "FamilyMemberHistory", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
7614    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
7615      composeUri(t, "FamilyMemberHistory", "instantiatesUri", element.getInstantiatesUri().get(i), i);
7616    if (element.hasStatusElement())
7617      composeEnum(t, "FamilyMemberHistory", "status", element.getStatusElement(), -1);
7618    if (element.hasDataAbsentReason())
7619      composeCodeableConcept(t, "FamilyMemberHistory", "dataAbsentReason", element.getDataAbsentReason(), -1);
7620    if (element.hasPatient())
7621      composeReference(t, "FamilyMemberHistory", "patient", element.getPatient(), -1);
7622    if (element.hasDateElement())
7623      composeDateTime(t, "FamilyMemberHistory", "date", element.getDateElement(), -1);
7624    if (element.hasNameElement())
7625      composeString(t, "FamilyMemberHistory", "name", element.getNameElement(), -1);
7626    if (element.hasRelationship())
7627      composeCodeableConcept(t, "FamilyMemberHistory", "relationship", element.getRelationship(), -1);
7628    if (element.hasGender())
7629      composeCodeableConcept(t, "FamilyMemberHistory", "gender", element.getGender(), -1);
7630    if (element.hasBorn())
7631      composeType(t, "FamilyMemberHistory", "born", element.getBorn(), -1);
7632    if (element.hasAge())
7633      composeType(t, "FamilyMemberHistory", "age", element.getAge(), -1);
7634    if (element.hasEstimatedAgeElement())
7635      composeBoolean(t, "FamilyMemberHistory", "estimatedAge", element.getEstimatedAgeElement(), -1);
7636    if (element.hasDeceased())
7637      composeType(t, "FamilyMemberHistory", "deceased", element.getDeceased(), -1);
7638    for (int i = 0; i < element.getReasonCode().size(); i++)
7639      composeCodeableConcept(t, "FamilyMemberHistory", "reasonCode", element.getReasonCode().get(i), i);
7640    for (int i = 0; i < element.getReasonReference().size(); i++)
7641      composeReference(t, "FamilyMemberHistory", "reasonReference", element.getReasonReference().get(i), i);
7642    for (int i = 0; i < element.getNote().size(); i++)
7643      composeAnnotation(t, "FamilyMemberHistory", "note", element.getNote().get(i), i);
7644    for (int i = 0; i < element.getCondition().size(); i++)
7645      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(t, "FamilyMemberHistory", "condition", element.getCondition().get(i), i);
7646  }
7647
7648  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(Complex parent, String parentType, String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element, int index) {
7649    if (element == null) 
7650      return;
7651    Complex t;
7652    if (Utilities.noString(parentType))
7653      t = parent;
7654    else {
7655      t = parent.predicate("fhir:"+parentType+'.'+name);
7656    }
7657    composeBackboneElement(t, "condition", name, element, index);
7658    if (element.hasCode())
7659      composeCodeableConcept(t, "FamilyMemberHistory", "code", element.getCode(), -1);
7660    if (element.hasOutcome())
7661      composeCodeableConcept(t, "FamilyMemberHistory", "outcome", element.getOutcome(), -1);
7662    if (element.hasOnset())
7663      composeType(t, "FamilyMemberHistory", "onset", element.getOnset(), -1);
7664    for (int i = 0; i < element.getNote().size(); i++)
7665      composeAnnotation(t, "FamilyMemberHistory", "note", element.getNote().get(i), i);
7666  }
7667
7668  protected void composeFlag(Complex parent, String parentType, String name, Flag element, int index) {
7669    if (element == null) 
7670      return;
7671    Complex t;
7672    if (Utilities.noString(parentType))
7673      t = parent;
7674    else {
7675      t = parent.predicate("fhir:"+parentType+'.'+name);
7676    }
7677    composeDomainResource(t, "Flag", name, element, index);
7678    for (int i = 0; i < element.getIdentifier().size(); i++)
7679      composeIdentifier(t, "Flag", "identifier", element.getIdentifier().get(i), i);
7680    if (element.hasStatusElement())
7681      composeEnum(t, "Flag", "status", element.getStatusElement(), -1);
7682    for (int i = 0; i < element.getCategory().size(); i++)
7683      composeCodeableConcept(t, "Flag", "category", element.getCategory().get(i), i);
7684    if (element.hasCode())
7685      composeCodeableConcept(t, "Flag", "code", element.getCode(), -1);
7686    if (element.hasSubject())
7687      composeReference(t, "Flag", "subject", element.getSubject(), -1);
7688    if (element.hasPeriod())
7689      composePeriod(t, "Flag", "period", element.getPeriod(), -1);
7690    if (element.hasEncounter())
7691      composeReference(t, "Flag", "encounter", element.getEncounter(), -1);
7692    if (element.hasAuthor())
7693      composeReference(t, "Flag", "author", element.getAuthor(), -1);
7694  }
7695
7696  protected void composeGoal(Complex parent, String parentType, String name, Goal element, int index) {
7697    if (element == null) 
7698      return;
7699    Complex t;
7700    if (Utilities.noString(parentType))
7701      t = parent;
7702    else {
7703      t = parent.predicate("fhir:"+parentType+'.'+name);
7704    }
7705    composeDomainResource(t, "Goal", name, element, index);
7706    for (int i = 0; i < element.getIdentifier().size(); i++)
7707      composeIdentifier(t, "Goal", "identifier", element.getIdentifier().get(i), i);
7708    if (element.hasStatusElement())
7709      composeEnum(t, "Goal", "status", element.getStatusElement(), -1);
7710    for (int i = 0; i < element.getCategory().size(); i++)
7711      composeCodeableConcept(t, "Goal", "category", element.getCategory().get(i), i);
7712    if (element.hasPriority())
7713      composeCodeableConcept(t, "Goal", "priority", element.getPriority(), -1);
7714    if (element.hasDescription())
7715      composeCodeableConcept(t, "Goal", "description", element.getDescription(), -1);
7716    if (element.hasSubject())
7717      composeReference(t, "Goal", "subject", element.getSubject(), -1);
7718    if (element.hasStart())
7719      composeType(t, "Goal", "start", element.getStart(), -1);
7720    if (element.hasTarget())
7721      composeGoalGoalTargetComponent(t, "Goal", "target", element.getTarget(), -1);
7722    if (element.hasStatusDateElement())
7723      composeDate(t, "Goal", "statusDate", element.getStatusDateElement(), -1);
7724    if (element.hasStatusReasonElement())
7725      composeString(t, "Goal", "statusReason", element.getStatusReasonElement(), -1);
7726    if (element.hasExpressedBy())
7727      composeReference(t, "Goal", "expressedBy", element.getExpressedBy(), -1);
7728    for (int i = 0; i < element.getAddresses().size(); i++)
7729      composeReference(t, "Goal", "addresses", element.getAddresses().get(i), i);
7730    for (int i = 0; i < element.getNote().size(); i++)
7731      composeAnnotation(t, "Goal", "note", element.getNote().get(i), i);
7732    for (int i = 0; i < element.getOutcomeCode().size(); i++)
7733      composeCodeableConcept(t, "Goal", "outcomeCode", element.getOutcomeCode().get(i), i);
7734    for (int i = 0; i < element.getOutcomeReference().size(); i++)
7735      composeReference(t, "Goal", "outcomeReference", element.getOutcomeReference().get(i), i);
7736  }
7737
7738  protected void composeGoalGoalTargetComponent(Complex parent, String parentType, String name, Goal.GoalTargetComponent 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    composeBackboneElement(t, "target", name, element, index);
7748    if (element.hasMeasure())
7749      composeCodeableConcept(t, "Goal", "measure", element.getMeasure(), -1);
7750    if (element.hasDetail())
7751      composeType(t, "Goal", "detail", element.getDetail(), -1);
7752    if (element.hasDue())
7753      composeType(t, "Goal", "due", element.getDue(), -1);
7754  }
7755
7756  protected void composeGraphDefinition(Complex parent, String parentType, String name, GraphDefinition element, int index) {
7757    if (element == null) 
7758      return;
7759    Complex t;
7760    if (Utilities.noString(parentType))
7761      t = parent;
7762    else {
7763      t = parent.predicate("fhir:"+parentType+'.'+name);
7764    }
7765    composeDomainResource(t, "GraphDefinition", name, element, index);
7766    if (element.hasUrlElement())
7767      composeUri(t, "GraphDefinition", "url", element.getUrlElement(), -1);
7768    if (element.hasVersionElement())
7769      composeString(t, "GraphDefinition", "version", element.getVersionElement(), -1);
7770    if (element.hasNameElement())
7771      composeString(t, "GraphDefinition", "name", element.getNameElement(), -1);
7772    if (element.hasStatusElement())
7773      composeEnum(t, "GraphDefinition", "status", element.getStatusElement(), -1);
7774    if (element.hasExperimentalElement())
7775      composeBoolean(t, "GraphDefinition", "experimental", element.getExperimentalElement(), -1);
7776    if (element.hasDateElement())
7777      composeDateTime(t, "GraphDefinition", "date", element.getDateElement(), -1);
7778    if (element.hasPublisherElement())
7779      composeString(t, "GraphDefinition", "publisher", element.getPublisherElement(), -1);
7780    for (int i = 0; i < element.getContact().size(); i++)
7781      composeContactDetail(t, "GraphDefinition", "contact", element.getContact().get(i), i);
7782    if (element.hasDescriptionElement())
7783      composeMarkdown(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
7784    for (int i = 0; i < element.getUseContext().size(); i++)
7785      composeUsageContext(t, "GraphDefinition", "useContext", element.getUseContext().get(i), i);
7786    for (int i = 0; i < element.getJurisdiction().size(); i++)
7787      composeCodeableConcept(t, "GraphDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
7788    if (element.hasPurposeElement())
7789      composeMarkdown(t, "GraphDefinition", "purpose", element.getPurposeElement(), -1);
7790    if (element.hasStartElement())
7791      composeCode(t, "GraphDefinition", "start", element.getStartElement(), -1);
7792    if (element.hasProfileElement())
7793      composeCanonical(t, "GraphDefinition", "profile", element.getProfileElement(), -1);
7794    for (int i = 0; i < element.getLink().size(); i++)
7795      composeGraphDefinitionGraphDefinitionLinkComponent(t, "GraphDefinition", "link", element.getLink().get(i), i);
7796  }
7797
7798  protected void composeGraphDefinitionGraphDefinitionLinkComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkComponent 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, "link", name, element, index);
7808    if (element.hasPathElement())
7809      composeString(t, "GraphDefinition", "path", element.getPathElement(), -1);
7810    if (element.hasSliceNameElement())
7811      composeString(t, "GraphDefinition", "sliceName", element.getSliceNameElement(), -1);
7812    if (element.hasMinElement())
7813      composeInteger(t, "GraphDefinition", "min", element.getMinElement(), -1);
7814    if (element.hasMaxElement())
7815      composeString(t, "GraphDefinition", "max", element.getMaxElement(), -1);
7816    if (element.hasDescriptionElement())
7817      composeString(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
7818    for (int i = 0; i < element.getTarget().size(); i++)
7819      composeGraphDefinitionGraphDefinitionLinkTargetComponent(t, "GraphDefinition", "target", element.getTarget().get(i), i);
7820  }
7821
7822  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkTargetComponent element, int index) {
7823    if (element == null) 
7824      return;
7825    Complex t;
7826    if (Utilities.noString(parentType))
7827      t = parent;
7828    else {
7829      t = parent.predicate("fhir:"+parentType+'.'+name);
7830    }
7831    composeBackboneElement(t, "target", name, element, index);
7832    if (element.hasTypeElement())
7833      composeCode(t, "GraphDefinition", "type", element.getTypeElement(), -1);
7834    if (element.hasParamsElement())
7835      composeString(t, "GraphDefinition", "params", element.getParamsElement(), -1);
7836    if (element.hasProfileElement())
7837      composeCanonical(t, "GraphDefinition", "profile", element.getProfileElement(), -1);
7838    for (int i = 0; i < element.getCompartment().size(); i++)
7839      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(t, "GraphDefinition", "compartment", element.getCompartment().get(i), i);
7840    for (int i = 0; i < element.getLink().size(); i++)
7841      composeGraphDefinitionGraphDefinitionLinkComponent(t, "GraphDefinition", "link", element.getLink().get(i), i);
7842  }
7843
7844  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element, int index) {
7845    if (element == null) 
7846      return;
7847    Complex t;
7848    if (Utilities.noString(parentType))
7849      t = parent;
7850    else {
7851      t = parent.predicate("fhir:"+parentType+'.'+name);
7852    }
7853    composeBackboneElement(t, "compartment", name, element, index);
7854    if (element.hasUseElement())
7855      composeEnum(t, "GraphDefinition", "use", element.getUseElement(), -1);
7856    if (element.hasCodeElement())
7857      composeEnum(t, "GraphDefinition", "code", element.getCodeElement(), -1);
7858    if (element.hasRuleElement())
7859      composeEnum(t, "GraphDefinition", "rule", element.getRuleElement(), -1);
7860    if (element.hasExpressionElement())
7861      composeString(t, "GraphDefinition", "expression", element.getExpressionElement(), -1);
7862    if (element.hasDescriptionElement())
7863      composeString(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
7864  }
7865
7866  protected void composeGroup(Complex parent, String parentType, String name, Group element, int index) {
7867    if (element == null) 
7868      return;
7869    Complex t;
7870    if (Utilities.noString(parentType))
7871      t = parent;
7872    else {
7873      t = parent.predicate("fhir:"+parentType+'.'+name);
7874    }
7875    composeDomainResource(t, "Group", name, element, index);
7876    for (int i = 0; i < element.getIdentifier().size(); i++)
7877      composeIdentifier(t, "Group", "identifier", element.getIdentifier().get(i), i);
7878    if (element.hasActiveElement())
7879      composeBoolean(t, "Group", "active", element.getActiveElement(), -1);
7880    if (element.hasTypeElement())
7881      composeEnum(t, "Group", "type", element.getTypeElement(), -1);
7882    if (element.hasActualElement())
7883      composeBoolean(t, "Group", "actual", element.getActualElement(), -1);
7884    if (element.hasCode())
7885      composeCodeableConcept(t, "Group", "code", element.getCode(), -1);
7886    if (element.hasNameElement())
7887      composeString(t, "Group", "name", element.getNameElement(), -1);
7888    if (element.hasQuantityElement())
7889      composeUnsignedInt(t, "Group", "quantity", element.getQuantityElement(), -1);
7890    for (int i = 0; i < element.getCharacteristic().size(); i++)
7891      composeGroupGroupCharacteristicComponent(t, "Group", "characteristic", element.getCharacteristic().get(i), i);
7892    for (int i = 0; i < element.getMember().size(); i++)
7893      composeGroupGroupMemberComponent(t, "Group", "member", element.getMember().get(i), i);
7894  }
7895
7896  protected void composeGroupGroupCharacteristicComponent(Complex parent, String parentType, String name, Group.GroupCharacteristicComponent 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, "characteristic", name, element, index);
7906    if (element.hasCode())
7907      composeCodeableConcept(t, "Group", "code", element.getCode(), -1);
7908    if (element.hasValue())
7909      composeType(t, "Group", "value", element.getValue(), -1);
7910    if (element.hasExcludeElement())
7911      composeBoolean(t, "Group", "exclude", element.getExcludeElement(), -1);
7912    if (element.hasPeriod())
7913      composePeriod(t, "Group", "period", element.getPeriod(), -1);
7914  }
7915
7916  protected void composeGroupGroupMemberComponent(Complex parent, String parentType, String name, Group.GroupMemberComponent element, int index) {
7917    if (element == null) 
7918      return;
7919    Complex t;
7920    if (Utilities.noString(parentType))
7921      t = parent;
7922    else {
7923      t = parent.predicate("fhir:"+parentType+'.'+name);
7924    }
7925    composeBackboneElement(t, "member", name, element, index);
7926    if (element.hasEntity())
7927      composeReference(t, "Group", "entity", element.getEntity(), -1);
7928    if (element.hasPeriod())
7929      composePeriod(t, "Group", "period", element.getPeriod(), -1);
7930    if (element.hasInactiveElement())
7931      composeBoolean(t, "Group", "inactive", element.getInactiveElement(), -1);
7932  }
7933
7934  protected void composeGuidanceResponse(Complex parent, String parentType, String name, GuidanceResponse element, int index) {
7935    if (element == null) 
7936      return;
7937    Complex t;
7938    if (Utilities.noString(parentType))
7939      t = parent;
7940    else {
7941      t = parent.predicate("fhir:"+parentType+'.'+name);
7942    }
7943    composeDomainResource(t, "GuidanceResponse", name, element, index);
7944    if (element.hasRequestIdentifier())
7945      composeIdentifier(t, "GuidanceResponse", "requestIdentifier", element.getRequestIdentifier(), -1);
7946    for (int i = 0; i < element.getIdentifier().size(); i++)
7947      composeIdentifier(t, "GuidanceResponse", "identifier", element.getIdentifier().get(i), i);
7948    if (element.hasModule())
7949      composeType(t, "GuidanceResponse", "module", element.getModule(), -1);
7950    if (element.hasStatusElement())
7951      composeEnum(t, "GuidanceResponse", "status", element.getStatusElement(), -1);
7952    if (element.hasSubject())
7953      composeReference(t, "GuidanceResponse", "subject", element.getSubject(), -1);
7954    if (element.hasContext())
7955      composeReference(t, "GuidanceResponse", "context", element.getContext(), -1);
7956    if (element.hasOccurrenceDateTimeElement())
7957      composeDateTime(t, "GuidanceResponse", "occurrenceDateTime", element.getOccurrenceDateTimeElement(), -1);
7958    if (element.hasPerformer())
7959      composeReference(t, "GuidanceResponse", "performer", element.getPerformer(), -1);
7960    for (int i = 0; i < element.getReasonCode().size(); i++)
7961      composeCodeableConcept(t, "GuidanceResponse", "reasonCode", element.getReasonCode().get(i), i);
7962    for (int i = 0; i < element.getReasonReference().size(); i++)
7963      composeReference(t, "GuidanceResponse", "reasonReference", element.getReasonReference().get(i), i);
7964    for (int i = 0; i < element.getNote().size(); i++)
7965      composeAnnotation(t, "GuidanceResponse", "note", element.getNote().get(i), i);
7966    for (int i = 0; i < element.getEvaluationMessage().size(); i++)
7967      composeReference(t, "GuidanceResponse", "evaluationMessage", element.getEvaluationMessage().get(i), i);
7968    if (element.hasOutputParameters())
7969      composeReference(t, "GuidanceResponse", "outputParameters", element.getOutputParameters(), -1);
7970    if (element.hasResult())
7971      composeReference(t, "GuidanceResponse", "result", element.getResult(), -1);
7972    for (int i = 0; i < element.getDataRequirement().size(); i++)
7973      composeDataRequirement(t, "GuidanceResponse", "dataRequirement", element.getDataRequirement().get(i), i);
7974  }
7975
7976  protected void composeHealthcareService(Complex parent, String parentType, String name, HealthcareService element, int index) {
7977    if (element == null) 
7978      return;
7979    Complex t;
7980    if (Utilities.noString(parentType))
7981      t = parent;
7982    else {
7983      t = parent.predicate("fhir:"+parentType+'.'+name);
7984    }
7985    composeDomainResource(t, "HealthcareService", name, element, index);
7986    for (int i = 0; i < element.getIdentifier().size(); i++)
7987      composeIdentifier(t, "HealthcareService", "identifier", element.getIdentifier().get(i), i);
7988    if (element.hasActiveElement())
7989      composeBoolean(t, "HealthcareService", "active", element.getActiveElement(), -1);
7990    if (element.hasProvidedBy())
7991      composeReference(t, "HealthcareService", "providedBy", element.getProvidedBy(), -1);
7992    for (int i = 0; i < element.getCategory().size(); i++)
7993      composeCodeableConcept(t, "HealthcareService", "category", element.getCategory().get(i), i);
7994    for (int i = 0; i < element.getType().size(); i++)
7995      composeCodeableConcept(t, "HealthcareService", "type", element.getType().get(i), i);
7996    for (int i = 0; i < element.getSpecialty().size(); i++)
7997      composeCodeableConcept(t, "HealthcareService", "specialty", element.getSpecialty().get(i), i);
7998    for (int i = 0; i < element.getLocation().size(); i++)
7999      composeReference(t, "HealthcareService", "location", element.getLocation().get(i), i);
8000    if (element.hasNameElement())
8001      composeString(t, "HealthcareService", "name", element.getNameElement(), -1);
8002    if (element.hasCommentElement())
8003      composeString(t, "HealthcareService", "comment", element.getCommentElement(), -1);
8004    if (element.hasExtraDetailsElement())
8005      composeString(t, "HealthcareService", "extraDetails", element.getExtraDetailsElement(), -1);
8006    if (element.hasPhoto())
8007      composeAttachment(t, "HealthcareService", "photo", element.getPhoto(), -1);
8008    for (int i = 0; i < element.getTelecom().size(); i++)
8009      composeContactPoint(t, "HealthcareService", "telecom", element.getTelecom().get(i), i);
8010    for (int i = 0; i < element.getCoverageArea().size(); i++)
8011      composeReference(t, "HealthcareService", "coverageArea", element.getCoverageArea().get(i), i);
8012    for (int i = 0; i < element.getServiceProvisionCode().size(); i++)
8013      composeCodeableConcept(t, "HealthcareService", "serviceProvisionCode", element.getServiceProvisionCode().get(i), i);
8014    if (element.hasEligibility())
8015      composeCodeableConcept(t, "HealthcareService", "eligibility", element.getEligibility(), -1);
8016    if (element.hasEligibilityNoteElement())
8017      composeString(t, "HealthcareService", "eligibilityNote", element.getEligibilityNoteElement(), -1);
8018    for (int i = 0; i < element.getProgramName().size(); i++)
8019      composeString(t, "HealthcareService", "programName", element.getProgramName().get(i), i);
8020    for (int i = 0; i < element.getCharacteristic().size(); i++)
8021      composeCodeableConcept(t, "HealthcareService", "characteristic", element.getCharacteristic().get(i), i);
8022    for (int i = 0; i < element.getReferralMethod().size(); i++)
8023      composeCodeableConcept(t, "HealthcareService", "referralMethod", element.getReferralMethod().get(i), i);
8024    if (element.hasAppointmentRequiredElement())
8025      composeBoolean(t, "HealthcareService", "appointmentRequired", element.getAppointmentRequiredElement(), -1);
8026    for (int i = 0; i < element.getAvailableTime().size(); i++)
8027      composeHealthcareServiceHealthcareServiceAvailableTimeComponent(t, "HealthcareService", "availableTime", element.getAvailableTime().get(i), i);
8028    for (int i = 0; i < element.getNotAvailable().size(); i++)
8029      composeHealthcareServiceHealthcareServiceNotAvailableComponent(t, "HealthcareService", "notAvailable", element.getNotAvailable().get(i), i);
8030    if (element.hasAvailabilityExceptionsElement())
8031      composeString(t, "HealthcareService", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
8032    for (int i = 0; i < element.getEndpoint().size(); i++)
8033      composeReference(t, "HealthcareService", "endpoint", element.getEndpoint().get(i), i);
8034  }
8035
8036  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(Complex parent, String parentType, String name, HealthcareService.HealthcareServiceAvailableTimeComponent element, int index) {
8037    if (element == null) 
8038      return;
8039    Complex t;
8040    if (Utilities.noString(parentType))
8041      t = parent;
8042    else {
8043      t = parent.predicate("fhir:"+parentType+'.'+name);
8044    }
8045    composeBackboneElement(t, "availableTime", name, element, index);
8046    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
8047      composeEnum(t, "HealthcareService", "daysOfWeek", element.getDaysOfWeek().get(i), i);
8048    if (element.hasAllDayElement())
8049      composeBoolean(t, "HealthcareService", "allDay", element.getAllDayElement(), -1);
8050    if (element.hasAvailableStartTimeElement())
8051      composeTime(t, "HealthcareService", "availableStartTime", element.getAvailableStartTimeElement(), -1);
8052    if (element.hasAvailableEndTimeElement())
8053      composeTime(t, "HealthcareService", "availableEndTime", element.getAvailableEndTimeElement(), -1);
8054  }
8055
8056  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(Complex parent, String parentType, String name, HealthcareService.HealthcareServiceNotAvailableComponent element, int index) {
8057    if (element == null) 
8058      return;
8059    Complex t;
8060    if (Utilities.noString(parentType))
8061      t = parent;
8062    else {
8063      t = parent.predicate("fhir:"+parentType+'.'+name);
8064    }
8065    composeBackboneElement(t, "notAvailable", name, element, index);
8066    if (element.hasDescriptionElement())
8067      composeString(t, "HealthcareService", "description", element.getDescriptionElement(), -1);
8068    if (element.hasDuring())
8069      composePeriod(t, "HealthcareService", "during", element.getDuring(), -1);
8070  }
8071
8072  protected void composeImagingStudy(Complex parent, String parentType, String name, ImagingStudy element, int index) {
8073    if (element == null) 
8074      return;
8075    Complex t;
8076    if (Utilities.noString(parentType))
8077      t = parent;
8078    else {
8079      t = parent.predicate("fhir:"+parentType+'.'+name);
8080    }
8081    composeDomainResource(t, "ImagingStudy", name, element, index);
8082    for (int i = 0; i < element.getIdentifier().size(); i++)
8083      composeIdentifier(t, "ImagingStudy", "identifier", element.getIdentifier().get(i), i);
8084    if (element.hasStatusElement())
8085      composeEnum(t, "ImagingStudy", "status", element.getStatusElement(), -1);
8086    for (int i = 0; i < element.getModality().size(); i++)
8087      composeCoding(t, "ImagingStudy", "modality", element.getModality().get(i), i);
8088    if (element.hasSubject())
8089      composeReference(t, "ImagingStudy", "subject", element.getSubject(), -1);
8090    if (element.hasContext())
8091      composeReference(t, "ImagingStudy", "context", element.getContext(), -1);
8092    if (element.hasStartedElement())
8093      composeDateTime(t, "ImagingStudy", "started", element.getStartedElement(), -1);
8094    for (int i = 0; i < element.getBasedOn().size(); i++)
8095      composeReference(t, "ImagingStudy", "basedOn", element.getBasedOn().get(i), i);
8096    if (element.hasReferrer())
8097      composeReference(t, "ImagingStudy", "referrer", element.getReferrer(), -1);
8098    for (int i = 0; i < element.getInterpreter().size(); i++)
8099      composeReference(t, "ImagingStudy", "interpreter", element.getInterpreter().get(i), i);
8100    for (int i = 0; i < element.getEndpoint().size(); i++)
8101      composeReference(t, "ImagingStudy", "endpoint", element.getEndpoint().get(i), i);
8102    if (element.hasNumberOfSeriesElement())
8103      composeUnsignedInt(t, "ImagingStudy", "numberOfSeries", element.getNumberOfSeriesElement(), -1);
8104    if (element.hasNumberOfInstancesElement())
8105      composeUnsignedInt(t, "ImagingStudy", "numberOfInstances", element.getNumberOfInstancesElement(), -1);
8106    if (element.hasProcedureReference())
8107      composeReference(t, "ImagingStudy", "procedureReference", element.getProcedureReference(), -1);
8108    for (int i = 0; i < element.getProcedureCode().size(); i++)
8109      composeCodeableConcept(t, "ImagingStudy", "procedureCode", element.getProcedureCode().get(i), i);
8110    if (element.hasLocation())
8111      composeReference(t, "ImagingStudy", "location", element.getLocation(), -1);
8112    for (int i = 0; i < element.getReasonCode().size(); i++)
8113      composeCodeableConcept(t, "ImagingStudy", "reasonCode", element.getReasonCode().get(i), i);
8114    for (int i = 0; i < element.getReasonReference().size(); i++)
8115      composeReference(t, "ImagingStudy", "reasonReference", element.getReasonReference().get(i), i);
8116    for (int i = 0; i < element.getNote().size(); i++)
8117      composeAnnotation(t, "ImagingStudy", "note", element.getNote().get(i), i);
8118    if (element.hasDescriptionElement())
8119      composeString(t, "ImagingStudy", "description", element.getDescriptionElement(), -1);
8120    for (int i = 0; i < element.getSeries().size(); i++)
8121      composeImagingStudyImagingStudySeriesComponent(t, "ImagingStudy", "series", element.getSeries().get(i), i);
8122  }
8123
8124  protected void composeImagingStudyImagingStudySeriesComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesComponent element, int index) {
8125    if (element == null) 
8126      return;
8127    Complex t;
8128    if (Utilities.noString(parentType))
8129      t = parent;
8130    else {
8131      t = parent.predicate("fhir:"+parentType+'.'+name);
8132    }
8133    composeBackboneElement(t, "series", name, element, index);
8134    if (element.hasIdentifier())
8135      composeIdentifier(t, "ImagingStudy", "identifier", element.getIdentifier(), -1);
8136    if (element.hasNumberElement())
8137      composeUnsignedInt(t, "ImagingStudy", "number", element.getNumberElement(), -1);
8138    if (element.hasModality())
8139      composeCoding(t, "ImagingStudy", "modality", element.getModality(), -1);
8140    if (element.hasDescriptionElement())
8141      composeString(t, "ImagingStudy", "description", element.getDescriptionElement(), -1);
8142    if (element.hasNumberOfInstancesElement())
8143      composeUnsignedInt(t, "ImagingStudy", "numberOfInstances", element.getNumberOfInstancesElement(), -1);
8144    for (int i = 0; i < element.getEndpoint().size(); i++)
8145      composeReference(t, "ImagingStudy", "endpoint", element.getEndpoint().get(i), i);
8146    if (element.hasBodySite())
8147      composeCoding(t, "ImagingStudy", "bodySite", element.getBodySite(), -1);
8148    if (element.hasLaterality())
8149      composeCoding(t, "ImagingStudy", "laterality", element.getLaterality(), -1);
8150    for (int i = 0; i < element.getSpecimen().size(); i++)
8151      composeReference(t, "ImagingStudy", "specimen", element.getSpecimen().get(i), i);
8152    if (element.hasStartedElement())
8153      composeDateTime(t, "ImagingStudy", "started", element.getStartedElement(), -1);
8154    for (int i = 0; i < element.getPerformer().size(); i++)
8155      composeImagingStudyImagingStudySeriesPerformerComponent(t, "ImagingStudy", "performer", element.getPerformer().get(i), i);
8156    for (int i = 0; i < element.getInstance().size(); i++)
8157      composeImagingStudyImagingStudySeriesInstanceComponent(t, "ImagingStudy", "instance", element.getInstance().get(i), i);
8158  }
8159
8160  protected void composeImagingStudyImagingStudySeriesPerformerComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesPerformerComponent 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, "performer", name, element, index);
8170    if (element.hasFunction())
8171      composeCodeableConcept(t, "ImagingStudy", "function", element.getFunction(), -1);
8172    if (element.hasActor())
8173      composeReference(t, "ImagingStudy", "actor", element.getActor(), -1);
8174  }
8175
8176  protected void composeImagingStudyImagingStudySeriesInstanceComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesInstanceComponent element, int index) {
8177    if (element == null) 
8178      return;
8179    Complex t;
8180    if (Utilities.noString(parentType))
8181      t = parent;
8182    else {
8183      t = parent.predicate("fhir:"+parentType+'.'+name);
8184    }
8185    composeBackboneElement(t, "instance", name, element, index);
8186    if (element.hasIdentifier())
8187      composeIdentifier(t, "ImagingStudy", "identifier", element.getIdentifier(), -1);
8188    if (element.hasNumberElement())
8189      composeUnsignedInt(t, "ImagingStudy", "number", element.getNumberElement(), -1);
8190    if (element.hasSopClass())
8191      composeCoding(t, "ImagingStudy", "sopClass", element.getSopClass(), -1);
8192    if (element.hasTitleElement())
8193      composeString(t, "ImagingStudy", "title", element.getTitleElement(), -1);
8194  }
8195
8196  protected void composeImmunization(Complex parent, String parentType, String name, Immunization element, int index) {
8197    if (element == null) 
8198      return;
8199    Complex t;
8200    if (Utilities.noString(parentType))
8201      t = parent;
8202    else {
8203      t = parent.predicate("fhir:"+parentType+'.'+name);
8204    }
8205    composeDomainResource(t, "Immunization", name, element, index);
8206    for (int i = 0; i < element.getIdentifier().size(); i++)
8207      composeIdentifier(t, "Immunization", "identifier", element.getIdentifier().get(i), i);
8208    if (element.hasStatusElement())
8209      composeEnum(t, "Immunization", "status", element.getStatusElement(), -1);
8210    if (element.hasStatusReason())
8211      composeCodeableConcept(t, "Immunization", "statusReason", element.getStatusReason(), -1);
8212    if (element.hasVaccineCode())
8213      composeCodeableConcept(t, "Immunization", "vaccineCode", element.getVaccineCode(), -1);
8214    if (element.hasPatient())
8215      composeReference(t, "Immunization", "patient", element.getPatient(), -1);
8216    if (element.hasEncounter())
8217      composeReference(t, "Immunization", "encounter", element.getEncounter(), -1);
8218    if (element.hasOccurrence())
8219      composeType(t, "Immunization", "occurrence", element.getOccurrence(), -1);
8220    if (element.hasRecordedElement())
8221      composeDateTime(t, "Immunization", "recorded", element.getRecordedElement(), -1);
8222    if (element.hasPrimarySourceElement())
8223      composeBoolean(t, "Immunization", "primarySource", element.getPrimarySourceElement(), -1);
8224    if (element.hasReportOrigin())
8225      composeCodeableConcept(t, "Immunization", "reportOrigin", element.getReportOrigin(), -1);
8226    if (element.hasLocation())
8227      composeReference(t, "Immunization", "location", element.getLocation(), -1);
8228    if (element.hasManufacturer())
8229      composeReference(t, "Immunization", "manufacturer", element.getManufacturer(), -1);
8230    if (element.hasLotNumberElement())
8231      composeString(t, "Immunization", "lotNumber", element.getLotNumberElement(), -1);
8232    if (element.hasExpirationDateElement())
8233      composeDate(t, "Immunization", "expirationDate", element.getExpirationDateElement(), -1);
8234    if (element.hasSite())
8235      composeCodeableConcept(t, "Immunization", "site", element.getSite(), -1);
8236    if (element.hasRoute())
8237      composeCodeableConcept(t, "Immunization", "route", element.getRoute(), -1);
8238    if (element.hasDoseQuantity())
8239      composeQuantity(t, "Immunization", "doseQuantity", element.getDoseQuantity(), -1);
8240    for (int i = 0; i < element.getPerformer().size(); i++)
8241      composeImmunizationImmunizationPerformerComponent(t, "Immunization", "performer", element.getPerformer().get(i), i);
8242    for (int i = 0; i < element.getNote().size(); i++)
8243      composeAnnotation(t, "Immunization", "note", element.getNote().get(i), i);
8244    for (int i = 0; i < element.getReasonCode().size(); i++)
8245      composeCodeableConcept(t, "Immunization", "reasonCode", element.getReasonCode().get(i), i);
8246    for (int i = 0; i < element.getReasonReference().size(); i++)
8247      composeReference(t, "Immunization", "reasonReference", element.getReasonReference().get(i), i);
8248    if (element.hasIsSubpotentElement())
8249      composeBoolean(t, "Immunization", "isSubpotent", element.getIsSubpotentElement(), -1);
8250    for (int i = 0; i < element.getSubpotentReason().size(); i++)
8251      composeCodeableConcept(t, "Immunization", "subpotentReason", element.getSubpotentReason().get(i), i);
8252    for (int i = 0; i < element.getEducation().size(); i++)
8253      composeImmunizationImmunizationEducationComponent(t, "Immunization", "education", element.getEducation().get(i), i);
8254    for (int i = 0; i < element.getProgramEligibility().size(); i++)
8255      composeCodeableConcept(t, "Immunization", "programEligibility", element.getProgramEligibility().get(i), i);
8256    if (element.hasFundingSource())
8257      composeCodeableConcept(t, "Immunization", "fundingSource", element.getFundingSource(), -1);
8258    for (int i = 0; i < element.getProtocolApplied().size(); i++)
8259      composeImmunizationImmunizationProtocolAppliedComponent(t, "Immunization", "protocolApplied", element.getProtocolApplied().get(i), i);
8260  }
8261
8262  protected void composeImmunizationImmunizationPerformerComponent(Complex parent, String parentType, String name, Immunization.ImmunizationPerformerComponent element, int index) {
8263    if (element == null) 
8264      return;
8265    Complex t;
8266    if (Utilities.noString(parentType))
8267      t = parent;
8268    else {
8269      t = parent.predicate("fhir:"+parentType+'.'+name);
8270    }
8271    composeBackboneElement(t, "performer", name, element, index);
8272    if (element.hasFunction())
8273      composeCodeableConcept(t, "Immunization", "function", element.getFunction(), -1);
8274    if (element.hasActor())
8275      composeReference(t, "Immunization", "actor", element.getActor(), -1);
8276  }
8277
8278  protected void composeImmunizationImmunizationEducationComponent(Complex parent, String parentType, String name, Immunization.ImmunizationEducationComponent element, int index) {
8279    if (element == null) 
8280      return;
8281    Complex t;
8282    if (Utilities.noString(parentType))
8283      t = parent;
8284    else {
8285      t = parent.predicate("fhir:"+parentType+'.'+name);
8286    }
8287    composeBackboneElement(t, "education", name, element, index);
8288    if (element.hasDocumentTypeElement())
8289      composeString(t, "Immunization", "documentType", element.getDocumentTypeElement(), -1);
8290    if (element.hasReferenceElement())
8291      composeUri(t, "Immunization", "reference", element.getReferenceElement(), -1);
8292    if (element.hasPublicationDateElement())
8293      composeDateTime(t, "Immunization", "publicationDate", element.getPublicationDateElement(), -1);
8294    if (element.hasPresentationDateElement())
8295      composeDateTime(t, "Immunization", "presentationDate", element.getPresentationDateElement(), -1);
8296  }
8297
8298  protected void composeImmunizationImmunizationProtocolAppliedComponent(Complex parent, String parentType, String name, Immunization.ImmunizationProtocolAppliedComponent 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    composeBackboneElement(t, "protocolApplied", name, element, index);
8308    if (element.hasSeriesElement())
8309      composeString(t, "Immunization", "series", element.getSeriesElement(), -1);
8310    if (element.hasAuthority())
8311      composeReference(t, "Immunization", "authority", element.getAuthority(), -1);
8312    if (element.hasTargetDisease())
8313      composeCodeableConcept(t, "Immunization", "targetDisease", element.getTargetDisease(), -1);
8314    if (element.hasDoseNumber())
8315      composeType(t, "Immunization", "doseNumber", element.getDoseNumber(), -1);
8316  }
8317
8318  protected void composeImmunizationEvaluation(Complex parent, String parentType, String name, ImmunizationEvaluation element, int index) {
8319    if (element == null) 
8320      return;
8321    Complex t;
8322    if (Utilities.noString(parentType))
8323      t = parent;
8324    else {
8325      t = parent.predicate("fhir:"+parentType+'.'+name);
8326    }
8327    composeDomainResource(t, "ImmunizationEvaluation", name, element, index);
8328    for (int i = 0; i < element.getIdentifier().size(); i++)
8329      composeIdentifier(t, "ImmunizationEvaluation", "identifier", element.getIdentifier().get(i), i);
8330    if (element.hasStatusElement())
8331      composeEnum(t, "ImmunizationEvaluation", "status", element.getStatusElement(), -1);
8332    if (element.hasPatient())
8333      composeReference(t, "ImmunizationEvaluation", "patient", element.getPatient(), -1);
8334    if (element.hasDateElement())
8335      composeDateTime(t, "ImmunizationEvaluation", "date", element.getDateElement(), -1);
8336    if (element.hasAuthority())
8337      composeReference(t, "ImmunizationEvaluation", "authority", element.getAuthority(), -1);
8338    if (element.hasTargetDisease())
8339      composeCodeableConcept(t, "ImmunizationEvaluation", "targetDisease", element.getTargetDisease(), -1);
8340    if (element.hasImmunizationEvent())
8341      composeReference(t, "ImmunizationEvaluation", "immunizationEvent", element.getImmunizationEvent(), -1);
8342    if (element.hasDoseStatus())
8343      composeCodeableConcept(t, "ImmunizationEvaluation", "doseStatus", element.getDoseStatus(), -1);
8344    for (int i = 0; i < element.getDoseStatusReason().size(); i++)
8345      composeCodeableConcept(t, "ImmunizationEvaluation", "doseStatusReason", element.getDoseStatusReason().get(i), i);
8346    if (element.hasDescriptionElement())
8347      composeString(t, "ImmunizationEvaluation", "description", element.getDescriptionElement(), -1);
8348    if (element.hasSeriesElement())
8349      composeString(t, "ImmunizationEvaluation", "series", element.getSeriesElement(), -1);
8350    if (element.hasDoseNumber())
8351      composeType(t, "ImmunizationEvaluation", "doseNumber", element.getDoseNumber(), -1);
8352    if (element.hasSeriesDoses())
8353      composeType(t, "ImmunizationEvaluation", "seriesDoses", element.getSeriesDoses(), -1);
8354  }
8355
8356  protected void composeImmunizationRecommendation(Complex parent, String parentType, String name, ImmunizationRecommendation element, int index) {
8357    if (element == null) 
8358      return;
8359    Complex t;
8360    if (Utilities.noString(parentType))
8361      t = parent;
8362    else {
8363      t = parent.predicate("fhir:"+parentType+'.'+name);
8364    }
8365    composeDomainResource(t, "ImmunizationRecommendation", name, element, index);
8366    for (int i = 0; i < element.getIdentifier().size(); i++)
8367      composeIdentifier(t, "ImmunizationRecommendation", "identifier", element.getIdentifier().get(i), i);
8368    if (element.hasPatient())
8369      composeReference(t, "ImmunizationRecommendation", "patient", element.getPatient(), -1);
8370    if (element.hasDateElement())
8371      composeDateTime(t, "ImmunizationRecommendation", "date", element.getDateElement(), -1);
8372    if (element.hasAuthority())
8373      composeReference(t, "ImmunizationRecommendation", "authority", element.getAuthority(), -1);
8374    for (int i = 0; i < element.getRecommendation().size(); i++)
8375      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(t, "ImmunizationRecommendation", "recommendation", element.getRecommendation().get(i), i);
8376  }
8377
8378  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(Complex parent, String parentType, String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element, int index) {
8379    if (element == null) 
8380      return;
8381    Complex t;
8382    if (Utilities.noString(parentType))
8383      t = parent;
8384    else {
8385      t = parent.predicate("fhir:"+parentType+'.'+name);
8386    }
8387    composeBackboneElement(t, "recommendation", name, element, index);
8388    for (int i = 0; i < element.getVaccineCode().size(); i++)
8389      composeCodeableConcept(t, "ImmunizationRecommendation", "vaccineCode", element.getVaccineCode().get(i), i);
8390    if (element.hasTargetDisease())
8391      composeCodeableConcept(t, "ImmunizationRecommendation", "targetDisease", element.getTargetDisease(), -1);
8392    for (int i = 0; i < element.getContraindicatedVaccineCode().size(); i++)
8393      composeCodeableConcept(t, "ImmunizationRecommendation", "contraindicatedVaccineCode", element.getContraindicatedVaccineCode().get(i), i);
8394    if (element.hasForecastStatus())
8395      composeCodeableConcept(t, "ImmunizationRecommendation", "forecastStatus", element.getForecastStatus(), -1);
8396    for (int i = 0; i < element.getForecastReason().size(); i++)
8397      composeCodeableConcept(t, "ImmunizationRecommendation", "forecastReason", element.getForecastReason().get(i), i);
8398    for (int i = 0; i < element.getDateCriterion().size(); i++)
8399      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(t, "ImmunizationRecommendation", "dateCriterion", element.getDateCriterion().get(i), i);
8400    if (element.hasDescriptionElement())
8401      composeString(t, "ImmunizationRecommendation", "description", element.getDescriptionElement(), -1);
8402    if (element.hasSeriesElement())
8403      composeString(t, "ImmunizationRecommendation", "series", element.getSeriesElement(), -1);
8404    if (element.hasDoseNumber())
8405      composeType(t, "ImmunizationRecommendation", "doseNumber", element.getDoseNumber(), -1);
8406    if (element.hasSeriesDoses())
8407      composeType(t, "ImmunizationRecommendation", "seriesDoses", element.getSeriesDoses(), -1);
8408    for (int i = 0; i < element.getSupportingImmunization().size(); i++)
8409      composeReference(t, "ImmunizationRecommendation", "supportingImmunization", element.getSupportingImmunization().get(i), i);
8410    for (int i = 0; i < element.getSupportingPatientInformation().size(); i++)
8411      composeReference(t, "ImmunizationRecommendation", "supportingPatientInformation", element.getSupportingPatientInformation().get(i), i);
8412  }
8413
8414  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(Complex parent, String parentType, String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element, int index) {
8415    if (element == null) 
8416      return;
8417    Complex t;
8418    if (Utilities.noString(parentType))
8419      t = parent;
8420    else {
8421      t = parent.predicate("fhir:"+parentType+'.'+name);
8422    }
8423    composeBackboneElement(t, "dateCriterion", name, element, index);
8424    if (element.hasCode())
8425      composeCodeableConcept(t, "ImmunizationRecommendation", "code", element.getCode(), -1);
8426    if (element.hasValueElement())
8427      composeDateTime(t, "ImmunizationRecommendation", "value", element.getValueElement(), -1);
8428  }
8429
8430  protected void composeImplementationGuide(Complex parent, String parentType, String name, ImplementationGuide element, int index) {
8431    if (element == null) 
8432      return;
8433    Complex t;
8434    if (Utilities.noString(parentType))
8435      t = parent;
8436    else {
8437      t = parent.predicate("fhir:"+parentType+'.'+name);
8438    }
8439    composeDomainResource(t, "ImplementationGuide", name, element, index);
8440    if (element.hasUrlElement())
8441      composeUri(t, "ImplementationGuide", "url", element.getUrlElement(), -1);
8442    if (element.hasVersionElement())
8443      composeString(t, "ImplementationGuide", "version", element.getVersionElement(), -1);
8444    if (element.hasNameElement())
8445      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
8446    if (element.hasTitleElement())
8447      composeString(t, "ImplementationGuide", "title", element.getTitleElement(), -1);
8448    if (element.hasStatusElement())
8449      composeEnum(t, "ImplementationGuide", "status", element.getStatusElement(), -1);
8450    if (element.hasExperimentalElement())
8451      composeBoolean(t, "ImplementationGuide", "experimental", element.getExperimentalElement(), -1);
8452    if (element.hasDateElement())
8453      composeDateTime(t, "ImplementationGuide", "date", element.getDateElement(), -1);
8454    if (element.hasPublisherElement())
8455      composeString(t, "ImplementationGuide", "publisher", element.getPublisherElement(), -1);
8456    for (int i = 0; i < element.getContact().size(); i++)
8457      composeContactDetail(t, "ImplementationGuide", "contact", element.getContact().get(i), i);
8458    if (element.hasDescriptionElement())
8459      composeMarkdown(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
8460    for (int i = 0; i < element.getUseContext().size(); i++)
8461      composeUsageContext(t, "ImplementationGuide", "useContext", element.getUseContext().get(i), i);
8462    for (int i = 0; i < element.getJurisdiction().size(); i++)
8463      composeCodeableConcept(t, "ImplementationGuide", "jurisdiction", element.getJurisdiction().get(i), i);
8464    if (element.hasCopyrightElement())
8465      composeMarkdown(t, "ImplementationGuide", "copyright", element.getCopyrightElement(), -1);
8466    if (element.hasPackageIdElement())
8467      composeId(t, "ImplementationGuide", "packageId", element.getPackageIdElement(), -1);
8468    if (element.hasLicenseElement())
8469      composeEnum(t, "ImplementationGuide", "license", element.getLicenseElement(), -1);
8470    if (element.hasFhirVersionElement())
8471      composeId(t, "ImplementationGuide", "fhirVersion", element.getFhirVersionElement(), -1);
8472    for (int i = 0; i < element.getDependsOn().size(); i++)
8473      composeImplementationGuideImplementationGuideDependsOnComponent(t, "ImplementationGuide", "dependsOn", element.getDependsOn().get(i), i);
8474    for (int i = 0; i < element.getGlobal().size(); i++)
8475      composeImplementationGuideImplementationGuideGlobalComponent(t, "ImplementationGuide", "global", element.getGlobal().get(i), i);
8476    if (element.hasDefinition())
8477      composeImplementationGuideImplementationGuideDefinitionComponent(t, "ImplementationGuide", "definition", element.getDefinition(), -1);
8478    if (element.hasManifest())
8479      composeImplementationGuideImplementationGuideManifestComponent(t, "ImplementationGuide", "manifest", element.getManifest(), -1);
8480  }
8481
8482  protected void composeImplementationGuideImplementationGuideDependsOnComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDependsOnComponent element, int index) {
8483    if (element == null) 
8484      return;
8485    Complex t;
8486    if (Utilities.noString(parentType))
8487      t = parent;
8488    else {
8489      t = parent.predicate("fhir:"+parentType+'.'+name);
8490    }
8491    composeBackboneElement(t, "dependsOn", name, element, index);
8492    if (element.hasUriElement())
8493      composeCanonical(t, "ImplementationGuide", "uri", element.getUriElement(), -1);
8494    if (element.hasPackageIdElement())
8495      composeId(t, "ImplementationGuide", "packageId", element.getPackageIdElement(), -1);
8496    if (element.hasVersionElement())
8497      composeString(t, "ImplementationGuide", "version", element.getVersionElement(), -1);
8498  }
8499
8500  protected void composeImplementationGuideImplementationGuideGlobalComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideGlobalComponent element, int index) {
8501    if (element == null) 
8502      return;
8503    Complex t;
8504    if (Utilities.noString(parentType))
8505      t = parent;
8506    else {
8507      t = parent.predicate("fhir:"+parentType+'.'+name);
8508    }
8509    composeBackboneElement(t, "global", name, element, index);
8510    if (element.hasTypeElement())
8511      composeCode(t, "ImplementationGuide", "type", element.getTypeElement(), -1);
8512    if (element.hasProfileElement())
8513      composeCanonical(t, "ImplementationGuide", "profile", element.getProfileElement(), -1);
8514  }
8515
8516  protected void composeImplementationGuideImplementationGuideDefinitionComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionComponent element, int index) {
8517    if (element == null) 
8518      return;
8519    Complex t;
8520    if (Utilities.noString(parentType))
8521      t = parent;
8522    else {
8523      t = parent.predicate("fhir:"+parentType+'.'+name);
8524    }
8525    composeBackboneElement(t, "definition", name, element, index);
8526    for (int i = 0; i < element.getPackage().size(); i++)
8527      composeImplementationGuideImplementationGuideDefinitionPackageComponent(t, "ImplementationGuide", "package", element.getPackage().get(i), i);
8528    for (int i = 0; i < element.getResource().size(); i++)
8529      composeImplementationGuideImplementationGuideDefinitionResourceComponent(t, "ImplementationGuide", "resource", element.getResource().get(i), i);
8530    if (element.hasPage())
8531      composeImplementationGuideImplementationGuideDefinitionPageComponent(t, "ImplementationGuide", "page", element.getPage(), -1);
8532    for (int i = 0; i < element.getParameter().size(); i++)
8533      composeImplementationGuideImplementationGuideDefinitionParameterComponent(t, "ImplementationGuide", "parameter", element.getParameter().get(i), i);
8534    for (int i = 0; i < element.getTemplate().size(); i++)
8535      composeImplementationGuideImplementationGuideDefinitionTemplateComponent(t, "ImplementationGuide", "template", element.getTemplate().get(i), i);
8536  }
8537
8538  protected void composeImplementationGuideImplementationGuideDefinitionPackageComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionPackageComponent element, int index) {
8539    if (element == null) 
8540      return;
8541    Complex t;
8542    if (Utilities.noString(parentType))
8543      t = parent;
8544    else {
8545      t = parent.predicate("fhir:"+parentType+'.'+name);
8546    }
8547    composeBackboneElement(t, "package", name, element, index);
8548    if (element.hasNameElement())
8549      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
8550    if (element.hasDescriptionElement())
8551      composeString(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
8552  }
8553
8554  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element, int index) {
8555    if (element == null) 
8556      return;
8557    Complex t;
8558    if (Utilities.noString(parentType))
8559      t = parent;
8560    else {
8561      t = parent.predicate("fhir:"+parentType+'.'+name);
8562    }
8563    composeBackboneElement(t, "resource", name, element, index);
8564    if (element.hasReference())
8565      composeReference(t, "ImplementationGuide", "reference", element.getReference(), -1);
8566    if (element.hasNameElement())
8567      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
8568    if (element.hasDescriptionElement())
8569      composeString(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
8570    if (element.hasExample())
8571      composeType(t, "ImplementationGuide", "example", element.getExample(), -1);
8572    if (element.hasPackageElement())
8573      composeId(t, "ImplementationGuide", "package", element.getPackageElement(), -1);
8574  }
8575
8576  protected void composeImplementationGuideImplementationGuideDefinitionPageComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element, int index) {
8577    if (element == null) 
8578      return;
8579    Complex t;
8580    if (Utilities.noString(parentType))
8581      t = parent;
8582    else {
8583      t = parent.predicate("fhir:"+parentType+'.'+name);
8584    }
8585    composeBackboneElement(t, "page", name, element, index);
8586    if (element.hasName())
8587      composeType(t, "ImplementationGuide", "name", element.getName(), -1);
8588    if (element.hasTitleElement())
8589      composeString(t, "ImplementationGuide", "title", element.getTitleElement(), -1);
8590    if (element.hasGenerationElement())
8591      composeEnum(t, "ImplementationGuide", "generation", element.getGenerationElement(), -1);
8592    for (int i = 0; i < element.getPage().size(); i++)
8593      composeImplementationGuideImplementationGuideDefinitionPageComponent(t, "ImplementationGuide", "page", element.getPage().get(i), i);
8594  }
8595
8596  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element, int index) {
8597    if (element == null) 
8598      return;
8599    Complex t;
8600    if (Utilities.noString(parentType))
8601      t = parent;
8602    else {
8603      t = parent.predicate("fhir:"+parentType+'.'+name);
8604    }
8605    composeBackboneElement(t, "parameter", name, element, index);
8606    if (element.hasCodeElement())
8607      composeEnum(t, "ImplementationGuide", "code", element.getCodeElement(), -1);
8608    if (element.hasValueElement())
8609      composeString(t, "ImplementationGuide", "value", element.getValueElement(), -1);
8610  }
8611
8612  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element, int index) {
8613    if (element == null) 
8614      return;
8615    Complex t;
8616    if (Utilities.noString(parentType))
8617      t = parent;
8618    else {
8619      t = parent.predicate("fhir:"+parentType+'.'+name);
8620    }
8621    composeBackboneElement(t, "template", name, element, index);
8622    if (element.hasCodeElement())
8623      composeCode(t, "ImplementationGuide", "code", element.getCodeElement(), -1);
8624    if (element.hasSourceElement())
8625      composeString(t, "ImplementationGuide", "source", element.getSourceElement(), -1);
8626    if (element.hasScopeElement())
8627      composeString(t, "ImplementationGuide", "scope", element.getScopeElement(), -1);
8628  }
8629
8630  protected void composeImplementationGuideImplementationGuideManifestComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideManifestComponent element, int index) {
8631    if (element == null) 
8632      return;
8633    Complex t;
8634    if (Utilities.noString(parentType))
8635      t = parent;
8636    else {
8637      t = parent.predicate("fhir:"+parentType+'.'+name);
8638    }
8639    composeBackboneElement(t, "manifest", name, element, index);
8640    if (element.hasRenderingElement())
8641      composeUrl(t, "ImplementationGuide", "rendering", element.getRenderingElement(), -1);
8642    for (int i = 0; i < element.getResource().size(); i++)
8643      composeImplementationGuideManifestResourceComponent(t, "ImplementationGuide", "resource", element.getResource().get(i), i);
8644    for (int i = 0; i < element.getPage().size(); i++)
8645      composeImplementationGuideManifestPageComponent(t, "ImplementationGuide", "page", element.getPage().get(i), i);
8646    for (int i = 0; i < element.getImage().size(); i++)
8647      composeString(t, "ImplementationGuide", "image", element.getImage().get(i), i);
8648    for (int i = 0; i < element.getOther().size(); i++)
8649      composeString(t, "ImplementationGuide", "other", element.getOther().get(i), i);
8650  }
8651
8652  protected void composeImplementationGuideManifestResourceComponent(Complex parent, String parentType, String name, ImplementationGuide.ManifestResourceComponent element, int index) {
8653    if (element == null) 
8654      return;
8655    Complex t;
8656    if (Utilities.noString(parentType))
8657      t = parent;
8658    else {
8659      t = parent.predicate("fhir:"+parentType+'.'+name);
8660    }
8661    composeBackboneElement(t, "resource", name, element, index);
8662    if (element.hasReference())
8663      composeReference(t, "ImplementationGuide", "reference", element.getReference(), -1);
8664    if (element.hasExample())
8665      composeType(t, "ImplementationGuide", "example", element.getExample(), -1);
8666    if (element.hasRelativePathElement())
8667      composeUrl(t, "ImplementationGuide", "relativePath", element.getRelativePathElement(), -1);
8668  }
8669
8670  protected void composeImplementationGuideManifestPageComponent(Complex parent, String parentType, String name, ImplementationGuide.ManifestPageComponent element, int index) {
8671    if (element == null) 
8672      return;
8673    Complex t;
8674    if (Utilities.noString(parentType))
8675      t = parent;
8676    else {
8677      t = parent.predicate("fhir:"+parentType+'.'+name);
8678    }
8679    composeBackboneElement(t, "page", name, element, index);
8680    if (element.hasNameElement())
8681      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
8682    if (element.hasTitleElement())
8683      composeString(t, "ImplementationGuide", "title", element.getTitleElement(), -1);
8684    for (int i = 0; i < element.getAnchor().size(); i++)
8685      composeString(t, "ImplementationGuide", "anchor", element.getAnchor().get(i), i);
8686  }
8687
8688  protected void composeInsurancePlan(Complex parent, String parentType, String name, InsurancePlan element, int index) {
8689    if (element == null) 
8690      return;
8691    Complex t;
8692    if (Utilities.noString(parentType))
8693      t = parent;
8694    else {
8695      t = parent.predicate("fhir:"+parentType+'.'+name);
8696    }
8697    composeDomainResource(t, "InsurancePlan", name, element, index);
8698    for (int i = 0; i < element.getIdentifier().size(); i++)
8699      composeIdentifier(t, "InsurancePlan", "identifier", element.getIdentifier().get(i), i);
8700    if (element.hasStatusElement())
8701      composeEnum(t, "InsurancePlan", "status", element.getStatusElement(), -1);
8702    for (int i = 0; i < element.getType().size(); i++)
8703      composeCodeableConcept(t, "InsurancePlan", "type", element.getType().get(i), i);
8704    if (element.hasNameElement())
8705      composeString(t, "InsurancePlan", "name", element.getNameElement(), -1);
8706    for (int i = 0; i < element.getAlias().size(); i++)
8707      composeString(t, "InsurancePlan", "alias", element.getAlias().get(i), i);
8708    if (element.hasPeriod())
8709      composePeriod(t, "InsurancePlan", "period", element.getPeriod(), -1);
8710    if (element.hasOwnedBy())
8711      composeReference(t, "InsurancePlan", "ownedBy", element.getOwnedBy(), -1);
8712    if (element.hasAdministeredBy())
8713      composeReference(t, "InsurancePlan", "administeredBy", element.getAdministeredBy(), -1);
8714    for (int i = 0; i < element.getCoverageArea().size(); i++)
8715      composeReference(t, "InsurancePlan", "coverageArea", element.getCoverageArea().get(i), i);
8716    for (int i = 0; i < element.getContact().size(); i++)
8717      composeInsurancePlanInsurancePlanContactComponent(t, "InsurancePlan", "contact", element.getContact().get(i), i);
8718    for (int i = 0; i < element.getEndpoint().size(); i++)
8719      composeReference(t, "InsurancePlan", "endpoint", element.getEndpoint().get(i), i);
8720    for (int i = 0; i < element.getNetwork().size(); i++)
8721      composeReference(t, "InsurancePlan", "network", element.getNetwork().get(i), i);
8722    for (int i = 0; i < element.getCoverage().size(); i++)
8723      composeInsurancePlanInsurancePlanCoverageComponent(t, "InsurancePlan", "coverage", element.getCoverage().get(i), i);
8724    for (int i = 0; i < element.getPlan().size(); i++)
8725      composeInsurancePlanInsurancePlanPlanComponent(t, "InsurancePlan", "plan", element.getPlan().get(i), i);
8726  }
8727
8728  protected void composeInsurancePlanInsurancePlanContactComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanContactComponent element, int index) {
8729    if (element == null) 
8730      return;
8731    Complex t;
8732    if (Utilities.noString(parentType))
8733      t = parent;
8734    else {
8735      t = parent.predicate("fhir:"+parentType+'.'+name);
8736    }
8737    composeBackboneElement(t, "contact", name, element, index);
8738    if (element.hasPurpose())
8739      composeCodeableConcept(t, "InsurancePlan", "purpose", element.getPurpose(), -1);
8740    if (element.hasName())
8741      composeHumanName(t, "InsurancePlan", "name", element.getName(), -1);
8742    for (int i = 0; i < element.getTelecom().size(); i++)
8743      composeContactPoint(t, "InsurancePlan", "telecom", element.getTelecom().get(i), i);
8744    if (element.hasAddress())
8745      composeAddress(t, "InsurancePlan", "address", element.getAddress(), -1);
8746  }
8747
8748  protected void composeInsurancePlanInsurancePlanCoverageComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanCoverageComponent 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, "coverage", name, element, index);
8758    if (element.hasType())
8759      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
8760    for (int i = 0; i < element.getNetwork().size(); i++)
8761      composeReference(t, "InsurancePlan", "network", element.getNetwork().get(i), i);
8762    for (int i = 0; i < element.getBenefit().size(); i++)
8763      composeInsurancePlanCoverageBenefitComponent(t, "InsurancePlan", "benefit", element.getBenefit().get(i), i);
8764  }
8765
8766  protected void composeInsurancePlanCoverageBenefitComponent(Complex parent, String parentType, String name, InsurancePlan.CoverageBenefitComponent 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    composeBackboneElement(t, "benefit", name, element, index);
8776    if (element.hasType())
8777      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
8778    if (element.hasRequirementElement())
8779      composeString(t, "InsurancePlan", "requirement", element.getRequirementElement(), -1);
8780    for (int i = 0; i < element.getLimit().size(); i++)
8781      composeInsurancePlanCoverageBenefitLimitComponent(t, "InsurancePlan", "limit", element.getLimit().get(i), i);
8782  }
8783
8784  protected void composeInsurancePlanCoverageBenefitLimitComponent(Complex parent, String parentType, String name, InsurancePlan.CoverageBenefitLimitComponent element, int index) {
8785    if (element == null) 
8786      return;
8787    Complex t;
8788    if (Utilities.noString(parentType))
8789      t = parent;
8790    else {
8791      t = parent.predicate("fhir:"+parentType+'.'+name);
8792    }
8793    composeBackboneElement(t, "limit", name, element, index);
8794    if (element.hasValue())
8795      composeQuantity(t, "InsurancePlan", "value", element.getValue(), -1);
8796    if (element.hasCode())
8797      composeCodeableConcept(t, "InsurancePlan", "code", element.getCode(), -1);
8798  }
8799
8800  protected void composeInsurancePlanInsurancePlanPlanComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanPlanComponent element, int index) {
8801    if (element == null) 
8802      return;
8803    Complex t;
8804    if (Utilities.noString(parentType))
8805      t = parent;
8806    else {
8807      t = parent.predicate("fhir:"+parentType+'.'+name);
8808    }
8809    composeBackboneElement(t, "plan", name, element, index);
8810    for (int i = 0; i < element.getIdentifier().size(); i++)
8811      composeIdentifier(t, "InsurancePlan", "identifier", element.getIdentifier().get(i), i);
8812    if (element.hasType())
8813      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
8814    for (int i = 0; i < element.getCoverageArea().size(); i++)
8815      composeReference(t, "InsurancePlan", "coverageArea", element.getCoverageArea().get(i), i);
8816    for (int i = 0; i < element.getNetwork().size(); i++)
8817      composeReference(t, "InsurancePlan", "network", element.getNetwork().get(i), i);
8818    for (int i = 0; i < element.getGeneralCost().size(); i++)
8819      composeInsurancePlanInsurancePlanPlanGeneralCostComponent(t, "InsurancePlan", "generalCost", element.getGeneralCost().get(i), i);
8820    for (int i = 0; i < element.getSpecificCost().size(); i++)
8821      composeInsurancePlanInsurancePlanPlanSpecificCostComponent(t, "InsurancePlan", "specificCost", element.getSpecificCost().get(i), i);
8822  }
8823
8824  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element, int index) {
8825    if (element == null) 
8826      return;
8827    Complex t;
8828    if (Utilities.noString(parentType))
8829      t = parent;
8830    else {
8831      t = parent.predicate("fhir:"+parentType+'.'+name);
8832    }
8833    composeBackboneElement(t, "generalCost", name, element, index);
8834    if (element.hasType())
8835      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
8836    if (element.hasGroupSizeElement())
8837      composePositiveInt(t, "InsurancePlan", "groupSize", element.getGroupSizeElement(), -1);
8838    if (element.hasCost())
8839      composeMoney(t, "InsurancePlan", "cost", element.getCost(), -1);
8840    if (element.hasCommentElement())
8841      composeString(t, "InsurancePlan", "comment", element.getCommentElement(), -1);
8842  }
8843
8844  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element, int index) {
8845    if (element == null) 
8846      return;
8847    Complex t;
8848    if (Utilities.noString(parentType))
8849      t = parent;
8850    else {
8851      t = parent.predicate("fhir:"+parentType+'.'+name);
8852    }
8853    composeBackboneElement(t, "specificCost", name, element, index);
8854    if (element.hasCategory())
8855      composeCodeableConcept(t, "InsurancePlan", "category", element.getCategory(), -1);
8856    for (int i = 0; i < element.getBenefit().size(); i++)
8857      composeInsurancePlanPlanBenefitComponent(t, "InsurancePlan", "benefit", element.getBenefit().get(i), i);
8858  }
8859
8860  protected void composeInsurancePlanPlanBenefitComponent(Complex parent, String parentType, String name, InsurancePlan.PlanBenefitComponent element, int index) {
8861    if (element == null) 
8862      return;
8863    Complex t;
8864    if (Utilities.noString(parentType))
8865      t = parent;
8866    else {
8867      t = parent.predicate("fhir:"+parentType+'.'+name);
8868    }
8869    composeBackboneElement(t, "benefit", name, element, index);
8870    if (element.hasType())
8871      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
8872    for (int i = 0; i < element.getCost().size(); i++)
8873      composeInsurancePlanPlanBenefitCostComponent(t, "InsurancePlan", "cost", element.getCost().get(i), i);
8874  }
8875
8876  protected void composeInsurancePlanPlanBenefitCostComponent(Complex parent, String parentType, String name, InsurancePlan.PlanBenefitCostComponent element, int index) {
8877    if (element == null) 
8878      return;
8879    Complex t;
8880    if (Utilities.noString(parentType))
8881      t = parent;
8882    else {
8883      t = parent.predicate("fhir:"+parentType+'.'+name);
8884    }
8885    composeBackboneElement(t, "cost", name, element, index);
8886    if (element.hasType())
8887      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
8888    if (element.hasApplicability())
8889      composeCodeableConcept(t, "InsurancePlan", "applicability", element.getApplicability(), -1);
8890    for (int i = 0; i < element.getQualifiers().size(); i++)
8891      composeCodeableConcept(t, "InsurancePlan", "qualifiers", element.getQualifiers().get(i), i);
8892    if (element.hasValue())
8893      composeQuantity(t, "InsurancePlan", "value", element.getValue(), -1);
8894  }
8895
8896  protected void composeInvoice(Complex parent, String parentType, String name, Invoice element, int index) {
8897    if (element == null) 
8898      return;
8899    Complex t;
8900    if (Utilities.noString(parentType))
8901      t = parent;
8902    else {
8903      t = parent.predicate("fhir:"+parentType+'.'+name);
8904    }
8905    composeDomainResource(t, "Invoice", name, element, index);
8906    for (int i = 0; i < element.getIdentifier().size(); i++)
8907      composeIdentifier(t, "Invoice", "identifier", element.getIdentifier().get(i), i);
8908    if (element.hasStatusElement())
8909      composeEnum(t, "Invoice", "status", element.getStatusElement(), -1);
8910    if (element.hasCancelledReasonElement())
8911      composeString(t, "Invoice", "cancelledReason", element.getCancelledReasonElement(), -1);
8912    if (element.hasType())
8913      composeCodeableConcept(t, "Invoice", "type", element.getType(), -1);
8914    if (element.hasSubject())
8915      composeReference(t, "Invoice", "subject", element.getSubject(), -1);
8916    if (element.hasRecipient())
8917      composeReference(t, "Invoice", "recipient", element.getRecipient(), -1);
8918    if (element.hasDateElement())
8919      composeDateTime(t, "Invoice", "date", element.getDateElement(), -1);
8920    for (int i = 0; i < element.getParticipant().size(); i++)
8921      composeInvoiceInvoiceParticipantComponent(t, "Invoice", "participant", element.getParticipant().get(i), i);
8922    if (element.hasIssuer())
8923      composeReference(t, "Invoice", "issuer", element.getIssuer(), -1);
8924    if (element.hasAccount())
8925      composeReference(t, "Invoice", "account", element.getAccount(), -1);
8926    for (int i = 0; i < element.getLineItem().size(); i++)
8927      composeInvoiceInvoiceLineItemComponent(t, "Invoice", "lineItem", element.getLineItem().get(i), i);
8928    for (int i = 0; i < element.getTotalPriceComponent().size(); i++)
8929      composeInvoiceInvoiceLineItemPriceComponentComponent(t, "Invoice", "totalPriceComponent", element.getTotalPriceComponent().get(i), i);
8930    if (element.hasTotalNet())
8931      composeMoney(t, "Invoice", "totalNet", element.getTotalNet(), -1);
8932    if (element.hasTotalGross())
8933      composeMoney(t, "Invoice", "totalGross", element.getTotalGross(), -1);
8934    if (element.hasPaymentTermsElement())
8935      composeMarkdown(t, "Invoice", "paymentTerms", element.getPaymentTermsElement(), -1);
8936    for (int i = 0; i < element.getNote().size(); i++)
8937      composeAnnotation(t, "Invoice", "note", element.getNote().get(i), i);
8938  }
8939
8940  protected void composeInvoiceInvoiceParticipantComponent(Complex parent, String parentType, String name, Invoice.InvoiceParticipantComponent element, int index) {
8941    if (element == null) 
8942      return;
8943    Complex t;
8944    if (Utilities.noString(parentType))
8945      t = parent;
8946    else {
8947      t = parent.predicate("fhir:"+parentType+'.'+name);
8948    }
8949    composeBackboneElement(t, "participant", name, element, index);
8950    if (element.hasRole())
8951      composeCodeableConcept(t, "Invoice", "role", element.getRole(), -1);
8952    if (element.hasActor())
8953      composeReference(t, "Invoice", "actor", element.getActor(), -1);
8954  }
8955
8956  protected void composeInvoiceInvoiceLineItemComponent(Complex parent, String parentType, String name, Invoice.InvoiceLineItemComponent element, int index) {
8957    if (element == null) 
8958      return;
8959    Complex t;
8960    if (Utilities.noString(parentType))
8961      t = parent;
8962    else {
8963      t = parent.predicate("fhir:"+parentType+'.'+name);
8964    }
8965    composeBackboneElement(t, "lineItem", name, element, index);
8966    if (element.hasSequenceElement())
8967      composePositiveInt(t, "Invoice", "sequence", element.getSequenceElement(), -1);
8968    if (element.hasChargeItem())
8969      composeType(t, "Invoice", "chargeItem", element.getChargeItem(), -1);
8970    for (int i = 0; i < element.getPriceComponent().size(); i++)
8971      composeInvoiceInvoiceLineItemPriceComponentComponent(t, "Invoice", "priceComponent", element.getPriceComponent().get(i), i);
8972  }
8973
8974  protected void composeInvoiceInvoiceLineItemPriceComponentComponent(Complex parent, String parentType, String name, Invoice.InvoiceLineItemPriceComponentComponent 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    composeBackboneElement(t, "priceComponent", name, element, index);
8984    if (element.hasTypeElement())
8985      composeEnum(t, "Invoice", "type", element.getTypeElement(), -1);
8986    if (element.hasCode())
8987      composeCodeableConcept(t, "Invoice", "code", element.getCode(), -1);
8988    if (element.hasFactorElement())
8989      composeDecimal(t, "Invoice", "factor", element.getFactorElement(), -1);
8990    if (element.hasAmount())
8991      composeMoney(t, "Invoice", "amount", element.getAmount(), -1);
8992  }
8993
8994  protected void composeItemInstance(Complex parent, String parentType, String name, ItemInstance element, int index) {
8995    if (element == null) 
8996      return;
8997    Complex t;
8998    if (Utilities.noString(parentType))
8999      t = parent;
9000    else {
9001      t = parent.predicate("fhir:"+parentType+'.'+name);
9002    }
9003    composeDomainResource(t, "ItemInstance", name, element, index);
9004    if (element.hasCountElement())
9005      composeInteger(t, "ItemInstance", "count", element.getCountElement(), -1);
9006    if (element.hasLocation())
9007      composeReference(t, "ItemInstance", "location", element.getLocation(), -1);
9008    if (element.hasSubject())
9009      composeReference(t, "ItemInstance", "subject", element.getSubject(), -1);
9010    if (element.hasManufactureDateElement())
9011      composeDateTime(t, "ItemInstance", "manufactureDate", element.getManufactureDateElement(), -1);
9012    if (element.hasExpiryDateElement())
9013      composeDateTime(t, "ItemInstance", "expiryDate", element.getExpiryDateElement(), -1);
9014    if (element.hasCurrentSWVersionElement())
9015      composeString(t, "ItemInstance", "currentSWVersion", element.getCurrentSWVersionElement(), -1);
9016    if (element.hasLotNumberElement())
9017      composeString(t, "ItemInstance", "lotNumber", element.getLotNumberElement(), -1);
9018    if (element.hasSerialNumberElement())
9019      composeString(t, "ItemInstance", "serialNumber", element.getSerialNumberElement(), -1);
9020    if (element.hasCarrierAIDCElement())
9021      composeString(t, "ItemInstance", "carrierAIDC", element.getCarrierAIDCElement(), -1);
9022    if (element.hasCarrierHRFElement())
9023      composeString(t, "ItemInstance", "carrierHRF", element.getCarrierHRFElement(), -1);
9024  }
9025
9026  protected void composeLibrary(Complex parent, String parentType, String name, Library element, int index) {
9027    if (element == null) 
9028      return;
9029    Complex t;
9030    if (Utilities.noString(parentType))
9031      t = parent;
9032    else {
9033      t = parent.predicate("fhir:"+parentType+'.'+name);
9034    }
9035    composeDomainResource(t, "Library", name, element, index);
9036    if (element.hasUrlElement())
9037      composeUri(t, "Library", "url", element.getUrlElement(), -1);
9038    for (int i = 0; i < element.getIdentifier().size(); i++)
9039      composeIdentifier(t, "Library", "identifier", element.getIdentifier().get(i), i);
9040    if (element.hasVersionElement())
9041      composeString(t, "Library", "version", element.getVersionElement(), -1);
9042    if (element.hasNameElement())
9043      composeString(t, "Library", "name", element.getNameElement(), -1);
9044    if (element.hasTitleElement())
9045      composeString(t, "Library", "title", element.getTitleElement(), -1);
9046    if (element.hasSubtitleElement())
9047      composeString(t, "Library", "subtitle", element.getSubtitleElement(), -1);
9048    if (element.hasStatusElement())
9049      composeEnum(t, "Library", "status", element.getStatusElement(), -1);
9050    if (element.hasExperimentalElement())
9051      composeBoolean(t, "Library", "experimental", element.getExperimentalElement(), -1);
9052    if (element.hasType())
9053      composeCodeableConcept(t, "Library", "type", element.getType(), -1);
9054    if (element.hasSubject())
9055      composeType(t, "Library", "subject", element.getSubject(), -1);
9056    if (element.hasDateElement())
9057      composeDateTime(t, "Library", "date", element.getDateElement(), -1);
9058    if (element.hasPublisherElement())
9059      composeString(t, "Library", "publisher", element.getPublisherElement(), -1);
9060    for (int i = 0; i < element.getContact().size(); i++)
9061      composeContactDetail(t, "Library", "contact", element.getContact().get(i), i);
9062    if (element.hasDescriptionElement())
9063      composeMarkdown(t, "Library", "description", element.getDescriptionElement(), -1);
9064    for (int i = 0; i < element.getUseContext().size(); i++)
9065      composeUsageContext(t, "Library", "useContext", element.getUseContext().get(i), i);
9066    for (int i = 0; i < element.getJurisdiction().size(); i++)
9067      composeCodeableConcept(t, "Library", "jurisdiction", element.getJurisdiction().get(i), i);
9068    if (element.hasPurposeElement())
9069      composeMarkdown(t, "Library", "purpose", element.getPurposeElement(), -1);
9070    if (element.hasUsageElement())
9071      composeString(t, "Library", "usage", element.getUsageElement(), -1);
9072    if (element.hasCopyrightElement())
9073      composeMarkdown(t, "Library", "copyright", element.getCopyrightElement(), -1);
9074    if (element.hasApprovalDateElement())
9075      composeDate(t, "Library", "approvalDate", element.getApprovalDateElement(), -1);
9076    if (element.hasLastReviewDateElement())
9077      composeDate(t, "Library", "lastReviewDate", element.getLastReviewDateElement(), -1);
9078    if (element.hasEffectivePeriod())
9079      composePeriod(t, "Library", "effectivePeriod", element.getEffectivePeriod(), -1);
9080    for (int i = 0; i < element.getTopic().size(); i++)
9081      composeCodeableConcept(t, "Library", "topic", element.getTopic().get(i), i);
9082    for (int i = 0; i < element.getAuthor().size(); i++)
9083      composeContactDetail(t, "Library", "author", element.getAuthor().get(i), i);
9084    for (int i = 0; i < element.getEditor().size(); i++)
9085      composeContactDetail(t, "Library", "editor", element.getEditor().get(i), i);
9086    for (int i = 0; i < element.getReviewer().size(); i++)
9087      composeContactDetail(t, "Library", "reviewer", element.getReviewer().get(i), i);
9088    for (int i = 0; i < element.getEndorser().size(); i++)
9089      composeContactDetail(t, "Library", "endorser", element.getEndorser().get(i), i);
9090    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
9091      composeRelatedArtifact(t, "Library", "relatedArtifact", element.getRelatedArtifact().get(i), i);
9092    for (int i = 0; i < element.getParameter().size(); i++)
9093      composeParameterDefinition(t, "Library", "parameter", element.getParameter().get(i), i);
9094    for (int i = 0; i < element.getDataRequirement().size(); i++)
9095      composeDataRequirement(t, "Library", "dataRequirement", element.getDataRequirement().get(i), i);
9096    for (int i = 0; i < element.getContent().size(); i++)
9097      composeAttachment(t, "Library", "content", element.getContent().get(i), i);
9098  }
9099
9100  protected void composeLinkage(Complex parent, String parentType, String name, Linkage element, int index) {
9101    if (element == null) 
9102      return;
9103    Complex t;
9104    if (Utilities.noString(parentType))
9105      t = parent;
9106    else {
9107      t = parent.predicate("fhir:"+parentType+'.'+name);
9108    }
9109    composeDomainResource(t, "Linkage", name, element, index);
9110    if (element.hasActiveElement())
9111      composeBoolean(t, "Linkage", "active", element.getActiveElement(), -1);
9112    if (element.hasAuthor())
9113      composeReference(t, "Linkage", "author", element.getAuthor(), -1);
9114    for (int i = 0; i < element.getItem().size(); i++)
9115      composeLinkageLinkageItemComponent(t, "Linkage", "item", element.getItem().get(i), i);
9116  }
9117
9118  protected void composeLinkageLinkageItemComponent(Complex parent, String parentType, String name, Linkage.LinkageItemComponent element, int index) {
9119    if (element == null) 
9120      return;
9121    Complex t;
9122    if (Utilities.noString(parentType))
9123      t = parent;
9124    else {
9125      t = parent.predicate("fhir:"+parentType+'.'+name);
9126    }
9127    composeBackboneElement(t, "item", name, element, index);
9128    if (element.hasTypeElement())
9129      composeEnum(t, "Linkage", "type", element.getTypeElement(), -1);
9130    if (element.hasResource())
9131      composeReference(t, "Linkage", "resource", element.getResource(), -1);
9132  }
9133
9134  protected void composeListResource(Complex parent, String parentType, String name, ListResource element, int index) {
9135    if (element == null) 
9136      return;
9137    Complex t;
9138    if (Utilities.noString(parentType))
9139      t = parent;
9140    else {
9141      t = parent.predicate("fhir:"+parentType+'.'+name);
9142    }
9143    composeDomainResource(t, "List", name, element, index);
9144    for (int i = 0; i < element.getIdentifier().size(); i++)
9145      composeIdentifier(t, "List", "identifier", element.getIdentifier().get(i), i);
9146    if (element.hasStatusElement())
9147      composeEnum(t, "List", "status", element.getStatusElement(), -1);
9148    if (element.hasModeElement())
9149      composeEnum(t, "List", "mode", element.getModeElement(), -1);
9150    if (element.hasTitleElement())
9151      composeString(t, "List", "title", element.getTitleElement(), -1);
9152    if (element.hasCode())
9153      composeCodeableConcept(t, "List", "code", element.getCode(), -1);
9154    if (element.hasSubject())
9155      composeReference(t, "List", "subject", element.getSubject(), -1);
9156    if (element.hasEncounter())
9157      composeReference(t, "List", "encounter", element.getEncounter(), -1);
9158    if (element.hasDateElement())
9159      composeDateTime(t, "List", "date", element.getDateElement(), -1);
9160    if (element.hasSource())
9161      composeReference(t, "List", "source", element.getSource(), -1);
9162    if (element.hasOrderedBy())
9163      composeCodeableConcept(t, "List", "orderedBy", element.getOrderedBy(), -1);
9164    for (int i = 0; i < element.getNote().size(); i++)
9165      composeAnnotation(t, "List", "note", element.getNote().get(i), i);
9166    for (int i = 0; i < element.getEntry().size(); i++)
9167      composeListResourceListEntryComponent(t, "List", "entry", element.getEntry().get(i), i);
9168    if (element.hasEmptyReason())
9169      composeCodeableConcept(t, "List", "emptyReason", element.getEmptyReason(), -1);
9170  }
9171
9172  protected void composeListResourceListEntryComponent(Complex parent, String parentType, String name, ListResource.ListEntryComponent element, int index) {
9173    if (element == null) 
9174      return;
9175    Complex t;
9176    if (Utilities.noString(parentType))
9177      t = parent;
9178    else {
9179      t = parent.predicate("fhir:"+parentType+'.'+name);
9180    }
9181    composeBackboneElement(t, "entry", name, element, index);
9182    if (element.hasFlag())
9183      composeCodeableConcept(t, "List", "flag", element.getFlag(), -1);
9184    if (element.hasDeletedElement())
9185      composeBoolean(t, "List", "deleted", element.getDeletedElement(), -1);
9186    if (element.hasDateElement())
9187      composeDateTime(t, "List", "date", element.getDateElement(), -1);
9188    if (element.hasItem())
9189      composeReference(t, "List", "item", element.getItem(), -1);
9190  }
9191
9192  protected void composeLocation(Complex parent, String parentType, String name, Location element, int index) {
9193    if (element == null) 
9194      return;
9195    Complex t;
9196    if (Utilities.noString(parentType))
9197      t = parent;
9198    else {
9199      t = parent.predicate("fhir:"+parentType+'.'+name);
9200    }
9201    composeDomainResource(t, "Location", name, element, index);
9202    for (int i = 0; i < element.getIdentifier().size(); i++)
9203      composeIdentifier(t, "Location", "identifier", element.getIdentifier().get(i), i);
9204    if (element.hasStatusElement())
9205      composeEnum(t, "Location", "status", element.getStatusElement(), -1);
9206    if (element.hasOperationalStatus())
9207      composeCoding(t, "Location", "operationalStatus", element.getOperationalStatus(), -1);
9208    if (element.hasNameElement())
9209      composeString(t, "Location", "name", element.getNameElement(), -1);
9210    for (int i = 0; i < element.getAlias().size(); i++)
9211      composeString(t, "Location", "alias", element.getAlias().get(i), i);
9212    if (element.hasDescriptionElement())
9213      composeString(t, "Location", "description", element.getDescriptionElement(), -1);
9214    if (element.hasModeElement())
9215      composeEnum(t, "Location", "mode", element.getModeElement(), -1);
9216    for (int i = 0; i < element.getType().size(); i++)
9217      composeCodeableConcept(t, "Location", "type", element.getType().get(i), i);
9218    for (int i = 0; i < element.getTelecom().size(); i++)
9219      composeContactPoint(t, "Location", "telecom", element.getTelecom().get(i), i);
9220    if (element.hasAddress())
9221      composeAddress(t, "Location", "address", element.getAddress(), -1);
9222    if (element.hasPhysicalType())
9223      composeCodeableConcept(t, "Location", "physicalType", element.getPhysicalType(), -1);
9224    if (element.hasPosition())
9225      composeLocationLocationPositionComponent(t, "Location", "position", element.getPosition(), -1);
9226    if (element.hasManagingOrganization())
9227      composeReference(t, "Location", "managingOrganization", element.getManagingOrganization(), -1);
9228    if (element.hasPartOf())
9229      composeReference(t, "Location", "partOf", element.getPartOf(), -1);
9230    for (int i = 0; i < element.getHoursOfOperation().size(); i++)
9231      composeLocationLocationHoursOfOperationComponent(t, "Location", "hoursOfOperation", element.getHoursOfOperation().get(i), i);
9232    if (element.hasAvailabilityExceptionsElement())
9233      composeString(t, "Location", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
9234    for (int i = 0; i < element.getEndpoint().size(); i++)
9235      composeReference(t, "Location", "endpoint", element.getEndpoint().get(i), i);
9236  }
9237
9238  protected void composeLocationLocationPositionComponent(Complex parent, String parentType, String name, Location.LocationPositionComponent element, int index) {
9239    if (element == null) 
9240      return;
9241    Complex t;
9242    if (Utilities.noString(parentType))
9243      t = parent;
9244    else {
9245      t = parent.predicate("fhir:"+parentType+'.'+name);
9246    }
9247    composeBackboneElement(t, "position", name, element, index);
9248    if (element.hasLongitudeElement())
9249      composeDecimal(t, "Location", "longitude", element.getLongitudeElement(), -1);
9250    if (element.hasLatitudeElement())
9251      composeDecimal(t, "Location", "latitude", element.getLatitudeElement(), -1);
9252    if (element.hasAltitudeElement())
9253      composeDecimal(t, "Location", "altitude", element.getAltitudeElement(), -1);
9254  }
9255
9256  protected void composeLocationLocationHoursOfOperationComponent(Complex parent, String parentType, String name, Location.LocationHoursOfOperationComponent element, int index) {
9257    if (element == null) 
9258      return;
9259    Complex t;
9260    if (Utilities.noString(parentType))
9261      t = parent;
9262    else {
9263      t = parent.predicate("fhir:"+parentType+'.'+name);
9264    }
9265    composeBackboneElement(t, "hoursOfOperation", name, element, index);
9266    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
9267      composeEnum(t, "Location", "daysOfWeek", element.getDaysOfWeek().get(i), i);
9268    if (element.hasAllDayElement())
9269      composeBoolean(t, "Location", "allDay", element.getAllDayElement(), -1);
9270    if (element.hasOpeningTimeElement())
9271      composeTime(t, "Location", "openingTime", element.getOpeningTimeElement(), -1);
9272    if (element.hasClosingTimeElement())
9273      composeTime(t, "Location", "closingTime", element.getClosingTimeElement(), -1);
9274  }
9275
9276  protected void composeMeasure(Complex parent, String parentType, String name, Measure element, int index) {
9277    if (element == null) 
9278      return;
9279    Complex t;
9280    if (Utilities.noString(parentType))
9281      t = parent;
9282    else {
9283      t = parent.predicate("fhir:"+parentType+'.'+name);
9284    }
9285    composeDomainResource(t, "Measure", name, element, index);
9286    if (element.hasUrlElement())
9287      composeUri(t, "Measure", "url", element.getUrlElement(), -1);
9288    for (int i = 0; i < element.getIdentifier().size(); i++)
9289      composeIdentifier(t, "Measure", "identifier", element.getIdentifier().get(i), i);
9290    if (element.hasVersionElement())
9291      composeString(t, "Measure", "version", element.getVersionElement(), -1);
9292    if (element.hasNameElement())
9293      composeString(t, "Measure", "name", element.getNameElement(), -1);
9294    if (element.hasTitleElement())
9295      composeString(t, "Measure", "title", element.getTitleElement(), -1);
9296    if (element.hasSubtitleElement())
9297      composeString(t, "Measure", "subtitle", element.getSubtitleElement(), -1);
9298    if (element.hasStatusElement())
9299      composeEnum(t, "Measure", "status", element.getStatusElement(), -1);
9300    if (element.hasExperimentalElement())
9301      composeBoolean(t, "Measure", "experimental", element.getExperimentalElement(), -1);
9302    if (element.hasSubject())
9303      composeType(t, "Measure", "subject", element.getSubject(), -1);
9304    if (element.hasDateElement())
9305      composeDateTime(t, "Measure", "date", element.getDateElement(), -1);
9306    if (element.hasPublisherElement())
9307      composeString(t, "Measure", "publisher", element.getPublisherElement(), -1);
9308    for (int i = 0; i < element.getContact().size(); i++)
9309      composeContactDetail(t, "Measure", "contact", element.getContact().get(i), i);
9310    if (element.hasDescriptionElement())
9311      composeMarkdown(t, "Measure", "description", element.getDescriptionElement(), -1);
9312    for (int i = 0; i < element.getUseContext().size(); i++)
9313      composeUsageContext(t, "Measure", "useContext", element.getUseContext().get(i), i);
9314    for (int i = 0; i < element.getJurisdiction().size(); i++)
9315      composeCodeableConcept(t, "Measure", "jurisdiction", element.getJurisdiction().get(i), i);
9316    if (element.hasPurposeElement())
9317      composeMarkdown(t, "Measure", "purpose", element.getPurposeElement(), -1);
9318    if (element.hasUsageElement())
9319      composeString(t, "Measure", "usage", element.getUsageElement(), -1);
9320    if (element.hasCopyrightElement())
9321      composeMarkdown(t, "Measure", "copyright", element.getCopyrightElement(), -1);
9322    if (element.hasApprovalDateElement())
9323      composeDate(t, "Measure", "approvalDate", element.getApprovalDateElement(), -1);
9324    if (element.hasLastReviewDateElement())
9325      composeDate(t, "Measure", "lastReviewDate", element.getLastReviewDateElement(), -1);
9326    if (element.hasEffectivePeriod())
9327      composePeriod(t, "Measure", "effectivePeriod", element.getEffectivePeriod(), -1);
9328    for (int i = 0; i < element.getTopic().size(); i++)
9329      composeCodeableConcept(t, "Measure", "topic", element.getTopic().get(i), i);
9330    for (int i = 0; i < element.getAuthor().size(); i++)
9331      composeContactDetail(t, "Measure", "author", element.getAuthor().get(i), i);
9332    for (int i = 0; i < element.getEditor().size(); i++)
9333      composeContactDetail(t, "Measure", "editor", element.getEditor().get(i), i);
9334    for (int i = 0; i < element.getReviewer().size(); i++)
9335      composeContactDetail(t, "Measure", "reviewer", element.getReviewer().get(i), i);
9336    for (int i = 0; i < element.getEndorser().size(); i++)
9337      composeContactDetail(t, "Measure", "endorser", element.getEndorser().get(i), i);
9338    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
9339      composeRelatedArtifact(t, "Measure", "relatedArtifact", element.getRelatedArtifact().get(i), i);
9340    for (int i = 0; i < element.getLibrary().size(); i++)
9341      composeCanonical(t, "Measure", "library", element.getLibrary().get(i), i);
9342    if (element.hasDisclaimerElement())
9343      composeMarkdown(t, "Measure", "disclaimer", element.getDisclaimerElement(), -1);
9344    if (element.hasScoring())
9345      composeCodeableConcept(t, "Measure", "scoring", element.getScoring(), -1);
9346    if (element.hasCompositeScoring())
9347      composeCodeableConcept(t, "Measure", "compositeScoring", element.getCompositeScoring(), -1);
9348    for (int i = 0; i < element.getType().size(); i++)
9349      composeCodeableConcept(t, "Measure", "type", element.getType().get(i), i);
9350    if (element.hasRiskAdjustmentElement())
9351      composeString(t, "Measure", "riskAdjustment", element.getRiskAdjustmentElement(), -1);
9352    if (element.hasRateAggregationElement())
9353      composeString(t, "Measure", "rateAggregation", element.getRateAggregationElement(), -1);
9354    if (element.hasRationaleElement())
9355      composeMarkdown(t, "Measure", "rationale", element.getRationaleElement(), -1);
9356    if (element.hasClinicalRecommendationStatementElement())
9357      composeMarkdown(t, "Measure", "clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement(), -1);
9358    if (element.hasImprovementNotationElement())
9359      composeEnum(t, "Measure", "improvementNotation", element.getImprovementNotationElement(), -1);
9360    for (int i = 0; i < element.getDefinition().size(); i++)
9361      composeMarkdown(t, "Measure", "definition", element.getDefinition().get(i), i);
9362    if (element.hasGuidanceElement())
9363      composeMarkdown(t, "Measure", "guidance", element.getGuidanceElement(), -1);
9364    for (int i = 0; i < element.getGroup().size(); i++)
9365      composeMeasureMeasureGroupComponent(t, "Measure", "group", element.getGroup().get(i), i);
9366    for (int i = 0; i < element.getSupplementalData().size(); i++)
9367      composeMeasureMeasureSupplementalDataComponent(t, "Measure", "supplementalData", element.getSupplementalData().get(i), i);
9368  }
9369
9370  protected void composeMeasureMeasureGroupComponent(Complex parent, String parentType, String name, Measure.MeasureGroupComponent element, int index) {
9371    if (element == null) 
9372      return;
9373    Complex t;
9374    if (Utilities.noString(parentType))
9375      t = parent;
9376    else {
9377      t = parent.predicate("fhir:"+parentType+'.'+name);
9378    }
9379    composeBackboneElement(t, "group", name, element, index);
9380    if (element.hasCode())
9381      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9382    if (element.hasDescriptionElement())
9383      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9384    for (int i = 0; i < element.getPopulation().size(); i++)
9385      composeMeasureMeasureGroupPopulationComponent(t, "Measure", "population", element.getPopulation().get(i), i);
9386    for (int i = 0; i < element.getStratifier().size(); i++)
9387      composeMeasureMeasureGroupStratifierComponent(t, "Measure", "stratifier", element.getStratifier().get(i), i);
9388  }
9389
9390  protected void composeMeasureMeasureGroupPopulationComponent(Complex parent, String parentType, String name, Measure.MeasureGroupPopulationComponent element, int index) {
9391    if (element == null) 
9392      return;
9393    Complex t;
9394    if (Utilities.noString(parentType))
9395      t = parent;
9396    else {
9397      t = parent.predicate("fhir:"+parentType+'.'+name);
9398    }
9399    composeBackboneElement(t, "population", name, element, index);
9400    if (element.hasCode())
9401      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9402    if (element.hasDescriptionElement())
9403      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9404    if (element.hasCriteria())
9405      composeExpression(t, "Measure", "criteria", element.getCriteria(), -1);
9406  }
9407
9408  protected void composeMeasureMeasureGroupStratifierComponent(Complex parent, String parentType, String name, Measure.MeasureGroupStratifierComponent element, int index) {
9409    if (element == null) 
9410      return;
9411    Complex t;
9412    if (Utilities.noString(parentType))
9413      t = parent;
9414    else {
9415      t = parent.predicate("fhir:"+parentType+'.'+name);
9416    }
9417    composeBackboneElement(t, "stratifier", name, element, index);
9418    if (element.hasCode())
9419      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9420    if (element.hasDescriptionElement())
9421      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9422    if (element.hasCriteria())
9423      composeExpression(t, "Measure", "criteria", element.getCriteria(), -1);
9424  }
9425
9426  protected void composeMeasureMeasureSupplementalDataComponent(Complex parent, String parentType, String name, Measure.MeasureSupplementalDataComponent element, int index) {
9427    if (element == null) 
9428      return;
9429    Complex t;
9430    if (Utilities.noString(parentType))
9431      t = parent;
9432    else {
9433      t = parent.predicate("fhir:"+parentType+'.'+name);
9434    }
9435    composeBackboneElement(t, "supplementalData", name, element, index);
9436    if (element.hasCode())
9437      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9438    for (int i = 0; i < element.getUsage().size(); i++)
9439      composeCodeableConcept(t, "Measure", "usage", element.getUsage().get(i), i);
9440    if (element.hasDescriptionElement())
9441      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9442    if (element.hasCriteria())
9443      composeExpression(t, "Measure", "criteria", element.getCriteria(), -1);
9444  }
9445
9446  protected void composeMeasureReport(Complex parent, String parentType, String name, MeasureReport element, int index) {
9447    if (element == null) 
9448      return;
9449    Complex t;
9450    if (Utilities.noString(parentType))
9451      t = parent;
9452    else {
9453      t = parent.predicate("fhir:"+parentType+'.'+name);
9454    }
9455    composeDomainResource(t, "MeasureReport", name, element, index);
9456    for (int i = 0; i < element.getIdentifier().size(); i++)
9457      composeIdentifier(t, "MeasureReport", "identifier", element.getIdentifier().get(i), i);
9458    if (element.hasStatusElement())
9459      composeEnum(t, "MeasureReport", "status", element.getStatusElement(), -1);
9460    if (element.hasTypeElement())
9461      composeEnum(t, "MeasureReport", "type", element.getTypeElement(), -1);
9462    if (element.hasMeasureElement())
9463      composeCanonical(t, "MeasureReport", "measure", element.getMeasureElement(), -1);
9464    if (element.hasSubject())
9465      composeReference(t, "MeasureReport", "subject", element.getSubject(), -1);
9466    if (element.hasDateElement())
9467      composeDateTime(t, "MeasureReport", "date", element.getDateElement(), -1);
9468    if (element.hasReporter())
9469      composeReference(t, "MeasureReport", "reporter", element.getReporter(), -1);
9470    if (element.hasPeriod())
9471      composePeriod(t, "MeasureReport", "period", element.getPeriod(), -1);
9472    if (element.hasImprovementNotationElement())
9473      composeEnum(t, "MeasureReport", "improvementNotation", element.getImprovementNotationElement(), -1);
9474    for (int i = 0; i < element.getGroup().size(); i++)
9475      composeMeasureReportMeasureReportGroupComponent(t, "MeasureReport", "group", element.getGroup().get(i), i);
9476    for (int i = 0; i < element.getEvaluatedResource().size(); i++)
9477      composeReference(t, "MeasureReport", "evaluatedResource", element.getEvaluatedResource().get(i), i);
9478  }
9479
9480  protected void composeMeasureReportMeasureReportGroupComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupComponent element, int index) {
9481    if (element == null) 
9482      return;
9483    Complex t;
9484    if (Utilities.noString(parentType))
9485      t = parent;
9486    else {
9487      t = parent.predicate("fhir:"+parentType+'.'+name);
9488    }
9489    composeBackboneElement(t, "group", name, element, index);
9490    if (element.hasCode())
9491      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
9492    for (int i = 0; i < element.getPopulation().size(); i++)
9493      composeMeasureReportMeasureReportGroupPopulationComponent(t, "MeasureReport", "population", element.getPopulation().get(i), i);
9494    if (element.hasMeasureScore())
9495      composeQuantity(t, "MeasureReport", "measureScore", element.getMeasureScore(), -1);
9496    for (int i = 0; i < element.getStratifier().size(); i++)
9497      composeMeasureReportMeasureReportGroupStratifierComponent(t, "MeasureReport", "stratifier", element.getStratifier().get(i), i);
9498  }
9499
9500  protected void composeMeasureReportMeasureReportGroupPopulationComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupPopulationComponent element, int index) {
9501    if (element == null) 
9502      return;
9503    Complex t;
9504    if (Utilities.noString(parentType))
9505      t = parent;
9506    else {
9507      t = parent.predicate("fhir:"+parentType+'.'+name);
9508    }
9509    composeBackboneElement(t, "population", name, element, index);
9510    if (element.hasCode())
9511      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
9512    if (element.hasCountElement())
9513      composeInteger(t, "MeasureReport", "count", element.getCountElement(), -1);
9514    if (element.hasSubjectResults())
9515      composeReference(t, "MeasureReport", "subjectResults", element.getSubjectResults(), -1);
9516  }
9517
9518  protected void composeMeasureReportMeasureReportGroupStratifierComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupStratifierComponent element, int index) {
9519    if (element == null) 
9520      return;
9521    Complex t;
9522    if (Utilities.noString(parentType))
9523      t = parent;
9524    else {
9525      t = parent.predicate("fhir:"+parentType+'.'+name);
9526    }
9527    composeBackboneElement(t, "stratifier", name, element, index);
9528    if (element.hasCode())
9529      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
9530    for (int i = 0; i < element.getStratum().size(); i++)
9531      composeMeasureReportStratifierGroupComponent(t, "MeasureReport", "stratum", element.getStratum().get(i), i);
9532  }
9533
9534  protected void composeMeasureReportStratifierGroupComponent(Complex parent, String parentType, String name, MeasureReport.StratifierGroupComponent element, int index) {
9535    if (element == null) 
9536      return;
9537    Complex t;
9538    if (Utilities.noString(parentType))
9539      t = parent;
9540    else {
9541      t = parent.predicate("fhir:"+parentType+'.'+name);
9542    }
9543    composeBackboneElement(t, "stratum", name, element, index);
9544    if (element.hasValue())
9545      composeCodeableConcept(t, "MeasureReport", "value", element.getValue(), -1);
9546    for (int i = 0; i < element.getPopulation().size(); i++)
9547      composeMeasureReportStratifierGroupPopulationComponent(t, "MeasureReport", "population", element.getPopulation().get(i), i);
9548    if (element.hasMeasureScore())
9549      composeQuantity(t, "MeasureReport", "measureScore", element.getMeasureScore(), -1);
9550  }
9551
9552  protected void composeMeasureReportStratifierGroupPopulationComponent(Complex parent, String parentType, String name, MeasureReport.StratifierGroupPopulationComponent element, int index) {
9553    if (element == null) 
9554      return;
9555    Complex t;
9556    if (Utilities.noString(parentType))
9557      t = parent;
9558    else {
9559      t = parent.predicate("fhir:"+parentType+'.'+name);
9560    }
9561    composeBackboneElement(t, "population", name, element, index);
9562    if (element.hasCode())
9563      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
9564    if (element.hasCountElement())
9565      composeInteger(t, "MeasureReport", "count", element.getCountElement(), -1);
9566    if (element.hasSubjectResults())
9567      composeReference(t, "MeasureReport", "subjectResults", element.getSubjectResults(), -1);
9568  }
9569
9570  protected void composeMedia(Complex parent, String parentType, String name, Media element, int index) {
9571    if (element == null) 
9572      return;
9573    Complex t;
9574    if (Utilities.noString(parentType))
9575      t = parent;
9576    else {
9577      t = parent.predicate("fhir:"+parentType+'.'+name);
9578    }
9579    composeDomainResource(t, "Media", name, element, index);
9580    for (int i = 0; i < element.getIdentifier().size(); i++)
9581      composeIdentifier(t, "Media", "identifier", element.getIdentifier().get(i), i);
9582    for (int i = 0; i < element.getBasedOn().size(); i++)
9583      composeReference(t, "Media", "basedOn", element.getBasedOn().get(i), i);
9584    for (int i = 0; i < element.getPartOf().size(); i++)
9585      composeReference(t, "Media", "partOf", element.getPartOf().get(i), i);
9586    if (element.hasStatusElement())
9587      composeEnum(t, "Media", "status", element.getStatusElement(), -1);
9588    if (element.hasType())
9589      composeCodeableConcept(t, "Media", "type", element.getType(), -1);
9590    if (element.hasModality())
9591      composeCodeableConcept(t, "Media", "modality", element.getModality(), -1);
9592    if (element.hasView())
9593      composeCodeableConcept(t, "Media", "view", element.getView(), -1);
9594    if (element.hasSubject())
9595      composeReference(t, "Media", "subject", element.getSubject(), -1);
9596    if (element.hasContext())
9597      composeReference(t, "Media", "context", element.getContext(), -1);
9598    if (element.hasCreated())
9599      composeType(t, "Media", "created", element.getCreated(), -1);
9600    if (element.hasIssuedElement())
9601      composeInstant(t, "Media", "issued", element.getIssuedElement(), -1);
9602    if (element.hasOperator())
9603      composeReference(t, "Media", "operator", element.getOperator(), -1);
9604    for (int i = 0; i < element.getReasonCode().size(); i++)
9605      composeCodeableConcept(t, "Media", "reasonCode", element.getReasonCode().get(i), i);
9606    if (element.hasBodySite())
9607      composeCodeableConcept(t, "Media", "bodySite", element.getBodySite(), -1);
9608    if (element.hasDeviceNameElement())
9609      composeString(t, "Media", "deviceName", element.getDeviceNameElement(), -1);
9610    if (element.hasDevice())
9611      composeReference(t, "Media", "device", element.getDevice(), -1);
9612    if (element.hasHeightElement())
9613      composePositiveInt(t, "Media", "height", element.getHeightElement(), -1);
9614    if (element.hasWidthElement())
9615      composePositiveInt(t, "Media", "width", element.getWidthElement(), -1);
9616    if (element.hasFramesElement())
9617      composePositiveInt(t, "Media", "frames", element.getFramesElement(), -1);
9618    if (element.hasDurationElement())
9619      composeDecimal(t, "Media", "duration", element.getDurationElement(), -1);
9620    if (element.hasContent())
9621      composeAttachment(t, "Media", "content", element.getContent(), -1);
9622    for (int i = 0; i < element.getNote().size(); i++)
9623      composeAnnotation(t, "Media", "note", element.getNote().get(i), i);
9624  }
9625
9626  protected void composeMedication(Complex parent, String parentType, String name, Medication element, int index) {
9627    if (element == null) 
9628      return;
9629    Complex t;
9630    if (Utilities.noString(parentType))
9631      t = parent;
9632    else {
9633      t = parent.predicate("fhir:"+parentType+'.'+name);
9634    }
9635    composeDomainResource(t, "Medication", name, element, index);
9636    if (element.hasCode())
9637      composeCodeableConcept(t, "Medication", "code", element.getCode(), -1);
9638    if (element.hasStatusElement())
9639      composeEnum(t, "Medication", "status", element.getStatusElement(), -1);
9640    if (element.hasManufacturer())
9641      composeReference(t, "Medication", "manufacturer", element.getManufacturer(), -1);
9642    if (element.hasForm())
9643      composeCodeableConcept(t, "Medication", "form", element.getForm(), -1);
9644    if (element.hasAmount())
9645      composeQuantity(t, "Medication", "amount", element.getAmount(), -1);
9646    for (int i = 0; i < element.getIngredient().size(); i++)
9647      composeMedicationMedicationIngredientComponent(t, "Medication", "ingredient", element.getIngredient().get(i), i);
9648    if (element.hasBatch())
9649      composeMedicationMedicationBatchComponent(t, "Medication", "batch", element.getBatch(), -1);
9650  }
9651
9652  protected void composeMedicationMedicationIngredientComponent(Complex parent, String parentType, String name, Medication.MedicationIngredientComponent element, int index) {
9653    if (element == null) 
9654      return;
9655    Complex t;
9656    if (Utilities.noString(parentType))
9657      t = parent;
9658    else {
9659      t = parent.predicate("fhir:"+parentType+'.'+name);
9660    }
9661    composeBackboneElement(t, "ingredient", name, element, index);
9662    if (element.hasItem())
9663      composeType(t, "Medication", "item", element.getItem(), -1);
9664    if (element.hasIsActiveElement())
9665      composeBoolean(t, "Medication", "isActive", element.getIsActiveElement(), -1);
9666    if (element.hasAmount())
9667      composeRatio(t, "Medication", "amount", element.getAmount(), -1);
9668  }
9669
9670  protected void composeMedicationMedicationBatchComponent(Complex parent, String parentType, String name, Medication.MedicationBatchComponent element, int index) {
9671    if (element == null) 
9672      return;
9673    Complex t;
9674    if (Utilities.noString(parentType))
9675      t = parent;
9676    else {
9677      t = parent.predicate("fhir:"+parentType+'.'+name);
9678    }
9679    composeBackboneElement(t, "batch", name, element, index);
9680    if (element.hasLotNumberElement())
9681      composeString(t, "Medication", "lotNumber", element.getLotNumberElement(), -1);
9682    if (element.hasExpirationDateElement())
9683      composeDateTime(t, "Medication", "expirationDate", element.getExpirationDateElement(), -1);
9684    if (element.hasSerialNumberElement())
9685      composeString(t, "Medication", "serialNumber", element.getSerialNumberElement(), -1);
9686  }
9687
9688  protected void composeMedicationAdministration(Complex parent, String parentType, String name, MedicationAdministration element, int index) {
9689    if (element == null) 
9690      return;
9691    Complex t;
9692    if (Utilities.noString(parentType))
9693      t = parent;
9694    else {
9695      t = parent.predicate("fhir:"+parentType+'.'+name);
9696    }
9697    composeDomainResource(t, "MedicationAdministration", name, element, index);
9698    for (int i = 0; i < element.getIdentifier().size(); i++)
9699      composeIdentifier(t, "MedicationAdministration", "identifier", element.getIdentifier().get(i), i);
9700    for (int i = 0; i < element.getInstantiates().size(); i++)
9701      composeUri(t, "MedicationAdministration", "instantiates", element.getInstantiates().get(i), i);
9702    for (int i = 0; i < element.getPartOf().size(); i++)
9703      composeReference(t, "MedicationAdministration", "partOf", element.getPartOf().get(i), i);
9704    if (element.hasStatusElement())
9705      composeEnum(t, "MedicationAdministration", "status", element.getStatusElement(), -1);
9706    if (element.hasCategory())
9707      composeCodeableConcept(t, "MedicationAdministration", "category", element.getCategory(), -1);
9708    if (element.hasMedication())
9709      composeType(t, "MedicationAdministration", "medication", element.getMedication(), -1);
9710    if (element.hasSubject())
9711      composeReference(t, "MedicationAdministration", "subject", element.getSubject(), -1);
9712    if (element.hasContext())
9713      composeReference(t, "MedicationAdministration", "context", element.getContext(), -1);
9714    for (int i = 0; i < element.getSupportingInformation().size(); i++)
9715      composeReference(t, "MedicationAdministration", "supportingInformation", element.getSupportingInformation().get(i), i);
9716    if (element.hasEffective())
9717      composeType(t, "MedicationAdministration", "effective", element.getEffective(), -1);
9718    for (int i = 0; i < element.getPerformer().size(); i++)
9719      composeMedicationAdministrationMedicationAdministrationPerformerComponent(t, "MedicationAdministration", "performer", element.getPerformer().get(i), i);
9720    for (int i = 0; i < element.getStatusReason().size(); i++)
9721      composeCodeableConcept(t, "MedicationAdministration", "statusReason", element.getStatusReason().get(i), i);
9722    for (int i = 0; i < element.getReasonCode().size(); i++)
9723      composeCodeableConcept(t, "MedicationAdministration", "reasonCode", element.getReasonCode().get(i), i);
9724    for (int i = 0; i < element.getReasonReference().size(); i++)
9725      composeReference(t, "MedicationAdministration", "reasonReference", element.getReasonReference().get(i), i);
9726    if (element.hasRequest())
9727      composeReference(t, "MedicationAdministration", "request", element.getRequest(), -1);
9728    for (int i = 0; i < element.getDevice().size(); i++)
9729      composeReference(t, "MedicationAdministration", "device", element.getDevice().get(i), i);
9730    for (int i = 0; i < element.getNote().size(); i++)
9731      composeAnnotation(t, "MedicationAdministration", "note", element.getNote().get(i), i);
9732    if (element.hasDosage())
9733      composeMedicationAdministrationMedicationAdministrationDosageComponent(t, "MedicationAdministration", "dosage", element.getDosage(), -1);
9734    for (int i = 0; i < element.getEventHistory().size(); i++)
9735      composeReference(t, "MedicationAdministration", "eventHistory", element.getEventHistory().get(i), i);
9736  }
9737
9738  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(Complex parent, String parentType, String name, MedicationAdministration.MedicationAdministrationPerformerComponent element, int index) {
9739    if (element == null) 
9740      return;
9741    Complex t;
9742    if (Utilities.noString(parentType))
9743      t = parent;
9744    else {
9745      t = parent.predicate("fhir:"+parentType+'.'+name);
9746    }
9747    composeBackboneElement(t, "performer", name, element, index);
9748    if (element.hasFunction())
9749      composeCodeableConcept(t, "MedicationAdministration", "function", element.getFunction(), -1);
9750    if (element.hasActor())
9751      composeReference(t, "MedicationAdministration", "actor", element.getActor(), -1);
9752  }
9753
9754  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(Complex parent, String parentType, String name, MedicationAdministration.MedicationAdministrationDosageComponent element, int index) {
9755    if (element == null) 
9756      return;
9757    Complex t;
9758    if (Utilities.noString(parentType))
9759      t = parent;
9760    else {
9761      t = parent.predicate("fhir:"+parentType+'.'+name);
9762    }
9763    composeBackboneElement(t, "dosage", name, element, index);
9764    if (element.hasTextElement())
9765      composeString(t, "MedicationAdministration", "text", element.getTextElement(), -1);
9766    if (element.hasSite())
9767      composeCodeableConcept(t, "MedicationAdministration", "site", element.getSite(), -1);
9768    if (element.hasRoute())
9769      composeCodeableConcept(t, "MedicationAdministration", "route", element.getRoute(), -1);
9770    if (element.hasMethod())
9771      composeCodeableConcept(t, "MedicationAdministration", "method", element.getMethod(), -1);
9772    if (element.hasDose())
9773      composeQuantity(t, "MedicationAdministration", "dose", element.getDose(), -1);
9774    if (element.hasRate())
9775      composeType(t, "MedicationAdministration", "rate", element.getRate(), -1);
9776  }
9777
9778  protected void composeMedicationDispense(Complex parent, String parentType, String name, MedicationDispense element, int index) {
9779    if (element == null) 
9780      return;
9781    Complex t;
9782    if (Utilities.noString(parentType))
9783      t = parent;
9784    else {
9785      t = parent.predicate("fhir:"+parentType+'.'+name);
9786    }
9787    composeDomainResource(t, "MedicationDispense", name, element, index);
9788    for (int i = 0; i < element.getIdentifier().size(); i++)
9789      composeIdentifier(t, "MedicationDispense", "identifier", element.getIdentifier().get(i), i);
9790    for (int i = 0; i < element.getPartOf().size(); i++)
9791      composeReference(t, "MedicationDispense", "partOf", element.getPartOf().get(i), i);
9792    if (element.hasStatusElement())
9793      composeEnum(t, "MedicationDispense", "status", element.getStatusElement(), -1);
9794    if (element.hasCategory())
9795      composeCodeableConcept(t, "MedicationDispense", "category", element.getCategory(), -1);
9796    if (element.hasMedication())
9797      composeType(t, "MedicationDispense", "medication", element.getMedication(), -1);
9798    if (element.hasSubject())
9799      composeReference(t, "MedicationDispense", "subject", element.getSubject(), -1);
9800    if (element.hasContext())
9801      composeReference(t, "MedicationDispense", "context", element.getContext(), -1);
9802    for (int i = 0; i < element.getSupportingInformation().size(); i++)
9803      composeReference(t, "MedicationDispense", "supportingInformation", element.getSupportingInformation().get(i), i);
9804    for (int i = 0; i < element.getPerformer().size(); i++)
9805      composeMedicationDispenseMedicationDispensePerformerComponent(t, "MedicationDispense", "performer", element.getPerformer().get(i), i);
9806    if (element.hasLocation())
9807      composeReference(t, "MedicationDispense", "location", element.getLocation(), -1);
9808    for (int i = 0; i < element.getAuthorizingPrescription().size(); i++)
9809      composeReference(t, "MedicationDispense", "authorizingPrescription", element.getAuthorizingPrescription().get(i), i);
9810    if (element.hasType())
9811      composeCodeableConcept(t, "MedicationDispense", "type", element.getType(), -1);
9812    if (element.hasQuantity())
9813      composeQuantity(t, "MedicationDispense", "quantity", element.getQuantity(), -1);
9814    if (element.hasDaysSupply())
9815      composeQuantity(t, "MedicationDispense", "daysSupply", element.getDaysSupply(), -1);
9816    if (element.hasWhenPreparedElement())
9817      composeDateTime(t, "MedicationDispense", "whenPrepared", element.getWhenPreparedElement(), -1);
9818    if (element.hasWhenHandedOverElement())
9819      composeDateTime(t, "MedicationDispense", "whenHandedOver", element.getWhenHandedOverElement(), -1);
9820    if (element.hasDestination())
9821      composeReference(t, "MedicationDispense", "destination", element.getDestination(), -1);
9822    for (int i = 0; i < element.getReceiver().size(); i++)
9823      composeReference(t, "MedicationDispense", "receiver", element.getReceiver().get(i), i);
9824    for (int i = 0; i < element.getNote().size(); i++)
9825      composeAnnotation(t, "MedicationDispense", "note", element.getNote().get(i), i);
9826    for (int i = 0; i < element.getDosageInstruction().size(); i++)
9827      composeDosage(t, "MedicationDispense", "dosageInstruction", element.getDosageInstruction().get(i), i);
9828    if (element.hasSubstitution())
9829      composeMedicationDispenseMedicationDispenseSubstitutionComponent(t, "MedicationDispense", "substitution", element.getSubstitution(), -1);
9830    for (int i = 0; i < element.getDetectedIssue().size(); i++)
9831      composeReference(t, "MedicationDispense", "detectedIssue", element.getDetectedIssue().get(i), i);
9832    if (element.hasStatusReason())
9833      composeType(t, "MedicationDispense", "statusReason", element.getStatusReason(), -1);
9834    for (int i = 0; i < element.getEventHistory().size(); i++)
9835      composeReference(t, "MedicationDispense", "eventHistory", element.getEventHistory().get(i), i);
9836  }
9837
9838  protected void composeMedicationDispenseMedicationDispensePerformerComponent(Complex parent, String parentType, String name, MedicationDispense.MedicationDispensePerformerComponent element, int index) {
9839    if (element == null) 
9840      return;
9841    Complex t;
9842    if (Utilities.noString(parentType))
9843      t = parent;
9844    else {
9845      t = parent.predicate("fhir:"+parentType+'.'+name);
9846    }
9847    composeBackboneElement(t, "performer", name, element, index);
9848    if (element.hasFunction())
9849      composeCodeableConcept(t, "MedicationDispense", "function", element.getFunction(), -1);
9850    if (element.hasActor())
9851      composeReference(t, "MedicationDispense", "actor", element.getActor(), -1);
9852  }
9853
9854  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(Complex parent, String parentType, String name, MedicationDispense.MedicationDispenseSubstitutionComponent element, int index) {
9855    if (element == null) 
9856      return;
9857    Complex t;
9858    if (Utilities.noString(parentType))
9859      t = parent;
9860    else {
9861      t = parent.predicate("fhir:"+parentType+'.'+name);
9862    }
9863    composeBackboneElement(t, "substitution", name, element, index);
9864    if (element.hasWasSubstitutedElement())
9865      composeBoolean(t, "MedicationDispense", "wasSubstituted", element.getWasSubstitutedElement(), -1);
9866    if (element.hasType())
9867      composeCodeableConcept(t, "MedicationDispense", "type", element.getType(), -1);
9868    for (int i = 0; i < element.getReason().size(); i++)
9869      composeCodeableConcept(t, "MedicationDispense", "reason", element.getReason().get(i), i);
9870    for (int i = 0; i < element.getResponsibleParty().size(); i++)
9871      composeReference(t, "MedicationDispense", "responsibleParty", element.getResponsibleParty().get(i), i);
9872  }
9873
9874  protected void composeMedicationKnowledge(Complex parent, String parentType, String name, MedicationKnowledge element, int index) {
9875    if (element == null) 
9876      return;
9877    Complex t;
9878    if (Utilities.noString(parentType))
9879      t = parent;
9880    else {
9881      t = parent.predicate("fhir:"+parentType+'.'+name);
9882    }
9883    composeDomainResource(t, "MedicationKnowledge", name, element, index);
9884    if (element.hasCode())
9885      composeCodeableConcept(t, "MedicationKnowledge", "code", element.getCode(), -1);
9886    if (element.hasStatusElement())
9887      composeEnum(t, "MedicationKnowledge", "status", element.getStatusElement(), -1);
9888    if (element.hasManufacturer())
9889      composeReference(t, "MedicationKnowledge", "manufacturer", element.getManufacturer(), -1);
9890    if (element.hasDoseForm())
9891      composeCodeableConcept(t, "MedicationKnowledge", "doseForm", element.getDoseForm(), -1);
9892    if (element.hasAmount())
9893      composeQuantity(t, "MedicationKnowledge", "amount", element.getAmount(), -1);
9894    for (int i = 0; i < element.getSynonym().size(); i++)
9895      composeString(t, "MedicationKnowledge", "synonym", element.getSynonym().get(i), i);
9896    for (int i = 0; i < element.getRelatedMedicationKnowledge().size(); i++)
9897      composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(t, "MedicationKnowledge", "relatedMedicationKnowledge", element.getRelatedMedicationKnowledge().get(i), i);
9898    for (int i = 0; i < element.getAssociatedMedication().size(); i++)
9899      composeReference(t, "MedicationKnowledge", "associatedMedication", element.getAssociatedMedication().get(i), i);
9900    for (int i = 0; i < element.getProductType().size(); i++)
9901      composeCodeableConcept(t, "MedicationKnowledge", "productType", element.getProductType().get(i), i);
9902    for (int i = 0; i < element.getMonograph().size(); i++)
9903      composeMedicationKnowledgeMedicationKnowledgeMonographComponent(t, "MedicationKnowledge", "monograph", element.getMonograph().get(i), i);
9904    for (int i = 0; i < element.getIngredient().size(); i++)
9905      composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(t, "MedicationKnowledge", "ingredient", element.getIngredient().get(i), i);
9906    if (element.hasPreparationInstructionElement())
9907      composeMarkdown(t, "MedicationKnowledge", "preparationInstruction", element.getPreparationInstructionElement(), -1);
9908    for (int i = 0; i < element.getIntendedRoute().size(); i++)
9909      composeCodeableConcept(t, "MedicationKnowledge", "intendedRoute", element.getIntendedRoute().get(i), i);
9910    for (int i = 0; i < element.getCost().size(); i++)
9911      composeMedicationKnowledgeMedicationKnowledgeCostComponent(t, "MedicationKnowledge", "cost", element.getCost().get(i), i);
9912    for (int i = 0; i < element.getMonitoringProgram().size(); i++)
9913      composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(t, "MedicationKnowledge", "monitoringProgram", element.getMonitoringProgram().get(i), i);
9914    for (int i = 0; i < element.getAdministrationGuidelines().size(); i++)
9915      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(t, "MedicationKnowledge", "administrationGuidelines", element.getAdministrationGuidelines().get(i), i);
9916    for (int i = 0; i < element.getMedicineClassification().size(); i++)
9917      composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(t, "MedicationKnowledge", "medicineClassification", element.getMedicineClassification().get(i), i);
9918    if (element.hasPackaging())
9919      composeMedicationKnowledgeMedicationKnowledgePackagingComponent(t, "MedicationKnowledge", "packaging", element.getPackaging(), -1);
9920    for (int i = 0; i < element.getDrugCharacteristic().size(); i++)
9921      composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(t, "MedicationKnowledge", "drugCharacteristic", element.getDrugCharacteristic().get(i), i);
9922    for (int i = 0; i < element.getContraindication().size(); i++)
9923      composeReference(t, "MedicationKnowledge", "contraindication", element.getContraindication().get(i), i);
9924    for (int i = 0; i < element.getRegulatory().size(); i++)
9925      composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(t, "MedicationKnowledge", "regulatory", element.getRegulatory().get(i), i);
9926    for (int i = 0; i < element.getKinetics().size(); i++)
9927      composeMedicationKnowledgeMedicationKnowledgeKineticsComponent(t, "MedicationKnowledge", "kinetics", element.getKinetics().get(i), i);
9928  }
9929
9930  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element, int index) {
9931    if (element == null) 
9932      return;
9933    Complex t;
9934    if (Utilities.noString(parentType))
9935      t = parent;
9936    else {
9937      t = parent.predicate("fhir:"+parentType+'.'+name);
9938    }
9939    composeBackboneElement(t, "relatedMedicationKnowledge", name, element, index);
9940    if (element.hasType())
9941      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
9942    for (int i = 0; i < element.getReference().size(); i++)
9943      composeReference(t, "MedicationKnowledge", "reference", element.getReference().get(i), i);
9944  }
9945
9946  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element, int index) {
9947    if (element == null) 
9948      return;
9949    Complex t;
9950    if (Utilities.noString(parentType))
9951      t = parent;
9952    else {
9953      t = parent.predicate("fhir:"+parentType+'.'+name);
9954    }
9955    composeBackboneElement(t, "monograph", name, element, index);
9956    if (element.hasType())
9957      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
9958    if (element.hasSource())
9959      composeReference(t, "MedicationKnowledge", "source", element.getSource(), -1);
9960  }
9961
9962  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeIngredientComponent element, int index) {
9963    if (element == null) 
9964      return;
9965    Complex t;
9966    if (Utilities.noString(parentType))
9967      t = parent;
9968    else {
9969      t = parent.predicate("fhir:"+parentType+'.'+name);
9970    }
9971    composeBackboneElement(t, "ingredient", name, element, index);
9972    if (element.hasItem())
9973      composeType(t, "MedicationKnowledge", "item", element.getItem(), -1);
9974    if (element.hasIsActiveElement())
9975      composeBoolean(t, "MedicationKnowledge", "isActive", element.getIsActiveElement(), -1);
9976    if (element.hasStrength())
9977      composeRatio(t, "MedicationKnowledge", "strength", element.getStrength(), -1);
9978  }
9979
9980  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeCostComponent element, int index) {
9981    if (element == null) 
9982      return;
9983    Complex t;
9984    if (Utilities.noString(parentType))
9985      t = parent;
9986    else {
9987      t = parent.predicate("fhir:"+parentType+'.'+name);
9988    }
9989    composeBackboneElement(t, "cost", name, element, index);
9990    if (element.hasType())
9991      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
9992    if (element.hasSourceElement())
9993      composeString(t, "MedicationKnowledge", "source", element.getSourceElement(), -1);
9994    if (element.hasCost())
9995      composeMoney(t, "MedicationKnowledge", "cost", element.getCost(), -1);
9996  }
9997
9998  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element, int index) {
9999    if (element == null) 
10000      return;
10001    Complex t;
10002    if (Utilities.noString(parentType))
10003      t = parent;
10004    else {
10005      t = parent.predicate("fhir:"+parentType+'.'+name);
10006    }
10007    composeBackboneElement(t, "monitoringProgram", name, element, index);
10008    if (element.hasType())
10009      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10010    if (element.hasNameElement())
10011      composeString(t, "MedicationKnowledge", "name", element.getNameElement(), -1);
10012  }
10013
10014  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element, int index) {
10015    if (element == null) 
10016      return;
10017    Complex t;
10018    if (Utilities.noString(parentType))
10019      t = parent;
10020    else {
10021      t = parent.predicate("fhir:"+parentType+'.'+name);
10022    }
10023    composeBackboneElement(t, "administrationGuidelines", name, element, index);
10024    for (int i = 0; i < element.getDosage().size(); i++)
10025      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(t, "MedicationKnowledge", "dosage", element.getDosage().get(i), i);
10026    if (element.hasIndication())
10027      composeType(t, "MedicationKnowledge", "indication", element.getIndication(), -1);
10028    for (int i = 0; i < element.getPatientCharacteristics().size(); i++)
10029      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(t, "MedicationKnowledge", "patientCharacteristics", element.getPatientCharacteristics().get(i), i);
10030  }
10031
10032  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element, int index) {
10033    if (element == null) 
10034      return;
10035    Complex t;
10036    if (Utilities.noString(parentType))
10037      t = parent;
10038    else {
10039      t = parent.predicate("fhir:"+parentType+'.'+name);
10040    }
10041    composeBackboneElement(t, "dosage", name, element, index);
10042    if (element.hasType())
10043      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10044    for (int i = 0; i < element.getDosage().size(); i++)
10045      composeDosage(t, "MedicationKnowledge", "dosage", element.getDosage().get(i), i);
10046  }
10047
10048  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element, int index) {
10049    if (element == null) 
10050      return;
10051    Complex t;
10052    if (Utilities.noString(parentType))
10053      t = parent;
10054    else {
10055      t = parent.predicate("fhir:"+parentType+'.'+name);
10056    }
10057    composeBackboneElement(t, "patientCharacteristics", name, element, index);
10058    if (element.hasCharacteristic())
10059      composeType(t, "MedicationKnowledge", "characteristic", element.getCharacteristic(), -1);
10060    for (int i = 0; i < element.getValue().size(); i++)
10061      composeString(t, "MedicationKnowledge", "value", element.getValue().get(i), i);
10062  }
10063
10064  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element, int index) {
10065    if (element == null) 
10066      return;
10067    Complex t;
10068    if (Utilities.noString(parentType))
10069      t = parent;
10070    else {
10071      t = parent.predicate("fhir:"+parentType+'.'+name);
10072    }
10073    composeBackboneElement(t, "medicineClassification", name, element, index);
10074    if (element.hasType())
10075      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10076    for (int i = 0; i < element.getClassification().size(); i++)
10077      composeCodeableConcept(t, "MedicationKnowledge", "classification", element.getClassification().get(i), i);
10078  }
10079
10080  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element, int index) {
10081    if (element == null) 
10082      return;
10083    Complex t;
10084    if (Utilities.noString(parentType))
10085      t = parent;
10086    else {
10087      t = parent.predicate("fhir:"+parentType+'.'+name);
10088    }
10089    composeBackboneElement(t, "packaging", name, element, index);
10090    if (element.hasType())
10091      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10092    if (element.hasQuantity())
10093      composeQuantity(t, "MedicationKnowledge", "quantity", element.getQuantity(), -1);
10094  }
10095
10096  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element, int index) {
10097    if (element == null) 
10098      return;
10099    Complex t;
10100    if (Utilities.noString(parentType))
10101      t = parent;
10102    else {
10103      t = parent.predicate("fhir:"+parentType+'.'+name);
10104    }
10105    composeBackboneElement(t, "drugCharacteristic", name, element, index);
10106    if (element.hasType())
10107      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10108    if (element.hasValue())
10109      composeType(t, "MedicationKnowledge", "value", element.getValue(), -1);
10110  }
10111
10112  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element, int index) {
10113    if (element == null) 
10114      return;
10115    Complex t;
10116    if (Utilities.noString(parentType))
10117      t = parent;
10118    else {
10119      t = parent.predicate("fhir:"+parentType+'.'+name);
10120    }
10121    composeBackboneElement(t, "regulatory", name, element, index);
10122    if (element.hasRegulatoryAuthority())
10123      composeReference(t, "MedicationKnowledge", "regulatoryAuthority", element.getRegulatoryAuthority(), -1);
10124    for (int i = 0; i < element.getSubstitution().size(); i++)
10125      composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(t, "MedicationKnowledge", "substitution", element.getSubstitution().get(i), i);
10126    for (int i = 0; i < element.getSchedule().size(); i++)
10127      composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(t, "MedicationKnowledge", "schedule", element.getSchedule().get(i), i);
10128    if (element.hasMaxDispense())
10129      composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(t, "MedicationKnowledge", "maxDispense", element.getMaxDispense(), -1);
10130  }
10131
10132  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element, int index) {
10133    if (element == null) 
10134      return;
10135    Complex t;
10136    if (Utilities.noString(parentType))
10137      t = parent;
10138    else {
10139      t = parent.predicate("fhir:"+parentType+'.'+name);
10140    }
10141    composeBackboneElement(t, "substitution", name, element, index);
10142    if (element.hasType())
10143      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10144    if (element.hasAllowedElement())
10145      composeBoolean(t, "MedicationKnowledge", "allowed", element.getAllowedElement(), -1);
10146  }
10147
10148  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element, int index) {
10149    if (element == null) 
10150      return;
10151    Complex t;
10152    if (Utilities.noString(parentType))
10153      t = parent;
10154    else {
10155      t = parent.predicate("fhir:"+parentType+'.'+name);
10156    }
10157    composeBackboneElement(t, "schedule", name, element, index);
10158    if (element.hasSchedule())
10159      composeCodeableConcept(t, "MedicationKnowledge", "schedule", element.getSchedule(), -1);
10160  }
10161
10162  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element, int index) {
10163    if (element == null) 
10164      return;
10165    Complex t;
10166    if (Utilities.noString(parentType))
10167      t = parent;
10168    else {
10169      t = parent.predicate("fhir:"+parentType+'.'+name);
10170    }
10171    composeBackboneElement(t, "maxDispense", name, element, index);
10172    if (element.hasQuantity())
10173      composeQuantity(t, "MedicationKnowledge", "quantity", element.getQuantity(), -1);
10174    if (element.hasPeriod())
10175      composeDuration(t, "MedicationKnowledge", "period", element.getPeriod(), -1);
10176  }
10177
10178  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeKineticsComponent element, int index) {
10179    if (element == null) 
10180      return;
10181    Complex t;
10182    if (Utilities.noString(parentType))
10183      t = parent;
10184    else {
10185      t = parent.predicate("fhir:"+parentType+'.'+name);
10186    }
10187    composeBackboneElement(t, "kinetics", name, element, index);
10188    for (int i = 0; i < element.getAreaUnderCurve().size(); i++)
10189      composeQuantity(t, "MedicationKnowledge", "areaUnderCurve", element.getAreaUnderCurve().get(i), i);
10190    for (int i = 0; i < element.getLethalDose50().size(); i++)
10191      composeQuantity(t, "MedicationKnowledge", "lethalDose50", element.getLethalDose50().get(i), i);
10192    if (element.hasHalfLifePeriod())
10193      composeDuration(t, "MedicationKnowledge", "halfLifePeriod", element.getHalfLifePeriod(), -1);
10194  }
10195
10196  protected void composeMedicationRequest(Complex parent, String parentType, String name, MedicationRequest element, int index) {
10197    if (element == null) 
10198      return;
10199    Complex t;
10200    if (Utilities.noString(parentType))
10201      t = parent;
10202    else {
10203      t = parent.predicate("fhir:"+parentType+'.'+name);
10204    }
10205    composeDomainResource(t, "MedicationRequest", name, element, index);
10206    for (int i = 0; i < element.getIdentifier().size(); i++)
10207      composeIdentifier(t, "MedicationRequest", "identifier", element.getIdentifier().get(i), i);
10208    if (element.hasStatusElement())
10209      composeEnum(t, "MedicationRequest", "status", element.getStatusElement(), -1);
10210    if (element.hasIntentElement())
10211      composeEnum(t, "MedicationRequest", "intent", element.getIntentElement(), -1);
10212    for (int i = 0; i < element.getCategory().size(); i++)
10213      composeCodeableConcept(t, "MedicationRequest", "category", element.getCategory().get(i), i);
10214    if (element.hasPriorityElement())
10215      composeEnum(t, "MedicationRequest", "priority", element.getPriorityElement(), -1);
10216    if (element.hasDoNotPerformElement())
10217      composeBoolean(t, "MedicationRequest", "doNotPerform", element.getDoNotPerformElement(), -1);
10218    if (element.hasMedication())
10219      composeType(t, "MedicationRequest", "medication", element.getMedication(), -1);
10220    if (element.hasSubject())
10221      composeReference(t, "MedicationRequest", "subject", element.getSubject(), -1);
10222    if (element.hasContext())
10223      composeReference(t, "MedicationRequest", "context", element.getContext(), -1);
10224    for (int i = 0; i < element.getSupportingInformation().size(); i++)
10225      composeReference(t, "MedicationRequest", "supportingInformation", element.getSupportingInformation().get(i), i);
10226    if (element.hasAuthoredOnElement())
10227      composeDateTime(t, "MedicationRequest", "authoredOn", element.getAuthoredOnElement(), -1);
10228    if (element.hasRequester())
10229      composeReference(t, "MedicationRequest", "requester", element.getRequester(), -1);
10230    if (element.hasPerformer())
10231      composeReference(t, "MedicationRequest", "performer", element.getPerformer(), -1);
10232    if (element.hasPerformerType())
10233      composeCodeableConcept(t, "MedicationRequest", "performerType", element.getPerformerType(), -1);
10234    if (element.hasRecorder())
10235      composeReference(t, "MedicationRequest", "recorder", element.getRecorder(), -1);
10236    for (int i = 0; i < element.getReasonCode().size(); i++)
10237      composeCodeableConcept(t, "MedicationRequest", "reasonCode", element.getReasonCode().get(i), i);
10238    for (int i = 0; i < element.getReasonReference().size(); i++)
10239      composeReference(t, "MedicationRequest", "reasonReference", element.getReasonReference().get(i), i);
10240    for (int i = 0; i < element.getInstantiates().size(); i++)
10241      composeUri(t, "MedicationRequest", "instantiates", element.getInstantiates().get(i), i);
10242    for (int i = 0; i < element.getBasedOn().size(); i++)
10243      composeReference(t, "MedicationRequest", "basedOn", element.getBasedOn().get(i), i);
10244    if (element.hasGroupIdentifier())
10245      composeIdentifier(t, "MedicationRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
10246    if (element.hasStatusReason())
10247      composeCodeableConcept(t, "MedicationRequest", "statusReason", element.getStatusReason(), -1);
10248    if (element.hasCourseOfTherapyType())
10249      composeCodeableConcept(t, "MedicationRequest", "courseOfTherapyType", element.getCourseOfTherapyType(), -1);
10250    for (int i = 0; i < element.getInsurance().size(); i++)
10251      composeReference(t, "MedicationRequest", "insurance", element.getInsurance().get(i), i);
10252    for (int i = 0; i < element.getNote().size(); i++)
10253      composeAnnotation(t, "MedicationRequest", "note", element.getNote().get(i), i);
10254    for (int i = 0; i < element.getDosageInstruction().size(); i++)
10255      composeDosage(t, "MedicationRequest", "dosageInstruction", element.getDosageInstruction().get(i), i);
10256    if (element.hasDispenseRequest())
10257      composeMedicationRequestMedicationRequestDispenseRequestComponent(t, "MedicationRequest", "dispenseRequest", element.getDispenseRequest(), -1);
10258    if (element.hasSubstitution())
10259      composeMedicationRequestMedicationRequestSubstitutionComponent(t, "MedicationRequest", "substitution", element.getSubstitution(), -1);
10260    if (element.hasPriorPrescription())
10261      composeReference(t, "MedicationRequest", "priorPrescription", element.getPriorPrescription(), -1);
10262    for (int i = 0; i < element.getDetectedIssue().size(); i++)
10263      composeReference(t, "MedicationRequest", "detectedIssue", element.getDetectedIssue().get(i), i);
10264    for (int i = 0; i < element.getEventHistory().size(); i++)
10265      composeReference(t, "MedicationRequest", "eventHistory", element.getEventHistory().get(i), i);
10266  }
10267
10268  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(Complex parent, String parentType, String name, MedicationRequest.MedicationRequestDispenseRequestComponent element, int index) {
10269    if (element == null) 
10270      return;
10271    Complex t;
10272    if (Utilities.noString(parentType))
10273      t = parent;
10274    else {
10275      t = parent.predicate("fhir:"+parentType+'.'+name);
10276    }
10277    composeBackboneElement(t, "dispenseRequest", name, element, index);
10278    if (element.hasInitialFill())
10279      composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(t, "MedicationRequest", "initialFill", element.getInitialFill(), -1);
10280    if (element.hasDispenseInterval())
10281      composeDuration(t, "MedicationRequest", "dispenseInterval", element.getDispenseInterval(), -1);
10282    if (element.hasValidityPeriod())
10283      composePeriod(t, "MedicationRequest", "validityPeriod", element.getValidityPeriod(), -1);
10284    if (element.hasNumberOfRepeatsAllowedElement())
10285      composeUnsignedInt(t, "MedicationRequest", "numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement(), -1);
10286    if (element.hasQuantity())
10287      composeQuantity(t, "MedicationRequest", "quantity", element.getQuantity(), -1);
10288    if (element.hasExpectedSupplyDuration())
10289      composeDuration(t, "MedicationRequest", "expectedSupplyDuration", element.getExpectedSupplyDuration(), -1);
10290    if (element.hasPerformer())
10291      composeReference(t, "MedicationRequest", "performer", element.getPerformer(), -1);
10292  }
10293
10294  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(Complex parent, String parentType, String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element, int index) {
10295    if (element == null) 
10296      return;
10297    Complex t;
10298    if (Utilities.noString(parentType))
10299      t = parent;
10300    else {
10301      t = parent.predicate("fhir:"+parentType+'.'+name);
10302    }
10303    composeBackboneElement(t, "initialFill", name, element, index);
10304    if (element.hasQuantity())
10305      composeQuantity(t, "MedicationRequest", "quantity", element.getQuantity(), -1);
10306    if (element.hasDuration())
10307      composeDuration(t, "MedicationRequest", "duration", element.getDuration(), -1);
10308  }
10309
10310  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(Complex parent, String parentType, String name, MedicationRequest.MedicationRequestSubstitutionComponent element, int index) {
10311    if (element == null) 
10312      return;
10313    Complex t;
10314    if (Utilities.noString(parentType))
10315      t = parent;
10316    else {
10317      t = parent.predicate("fhir:"+parentType+'.'+name);
10318    }
10319    composeBackboneElement(t, "substitution", name, element, index);
10320    if (element.hasAllowedElement())
10321      composeBoolean(t, "MedicationRequest", "allowed", element.getAllowedElement(), -1);
10322    if (element.hasReason())
10323      composeCodeableConcept(t, "MedicationRequest", "reason", element.getReason(), -1);
10324  }
10325
10326  protected void composeMedicationStatement(Complex parent, String parentType, String name, MedicationStatement element, int index) {
10327    if (element == null) 
10328      return;
10329    Complex t;
10330    if (Utilities.noString(parentType))
10331      t = parent;
10332    else {
10333      t = parent.predicate("fhir:"+parentType+'.'+name);
10334    }
10335    composeDomainResource(t, "MedicationStatement", name, element, index);
10336    for (int i = 0; i < element.getIdentifier().size(); i++)
10337      composeIdentifier(t, "MedicationStatement", "identifier", element.getIdentifier().get(i), i);
10338    for (int i = 0; i < element.getBasedOn().size(); i++)
10339      composeReference(t, "MedicationStatement", "basedOn", element.getBasedOn().get(i), i);
10340    for (int i = 0; i < element.getPartOf().size(); i++)
10341      composeReference(t, "MedicationStatement", "partOf", element.getPartOf().get(i), i);
10342    if (element.hasStatusElement())
10343      composeEnum(t, "MedicationStatement", "status", element.getStatusElement(), -1);
10344    for (int i = 0; i < element.getStatusReason().size(); i++)
10345      composeCodeableConcept(t, "MedicationStatement", "statusReason", element.getStatusReason().get(i), i);
10346    if (element.hasCategory())
10347      composeCodeableConcept(t, "MedicationStatement", "category", element.getCategory(), -1);
10348    if (element.hasMedication())
10349      composeType(t, "MedicationStatement", "medication", element.getMedication(), -1);
10350    if (element.hasSubject())
10351      composeReference(t, "MedicationStatement", "subject", element.getSubject(), -1);
10352    if (element.hasContext())
10353      composeReference(t, "MedicationStatement", "context", element.getContext(), -1);
10354    if (element.hasEffective())
10355      composeType(t, "MedicationStatement", "effective", element.getEffective(), -1);
10356    if (element.hasDateAssertedElement())
10357      composeDateTime(t, "MedicationStatement", "dateAsserted", element.getDateAssertedElement(), -1);
10358    if (element.hasInformationSource())
10359      composeReference(t, "MedicationStatement", "informationSource", element.getInformationSource(), -1);
10360    for (int i = 0; i < element.getDerivedFrom().size(); i++)
10361      composeReference(t, "MedicationStatement", "derivedFrom", element.getDerivedFrom().get(i), i);
10362    for (int i = 0; i < element.getReasonCode().size(); i++)
10363      composeCodeableConcept(t, "MedicationStatement", "reasonCode", element.getReasonCode().get(i), i);
10364    for (int i = 0; i < element.getReasonReference().size(); i++)
10365      composeReference(t, "MedicationStatement", "reasonReference", element.getReasonReference().get(i), i);
10366    for (int i = 0; i < element.getNote().size(); i++)
10367      composeAnnotation(t, "MedicationStatement", "note", element.getNote().get(i), i);
10368    for (int i = 0; i < element.getDosage().size(); i++)
10369      composeDosage(t, "MedicationStatement", "dosage", element.getDosage().get(i), i);
10370  }
10371
10372  protected void composeMedicinalProduct(Complex parent, String parentType, String name, MedicinalProduct element, int index) {
10373    if (element == null) 
10374      return;
10375    Complex t;
10376    if (Utilities.noString(parentType))
10377      t = parent;
10378    else {
10379      t = parent.predicate("fhir:"+parentType+'.'+name);
10380    }
10381    composeDomainResource(t, "MedicinalProduct", name, element, index);
10382    for (int i = 0; i < element.getIdentifier().size(); i++)
10383      composeIdentifier(t, "MedicinalProduct", "identifier", element.getIdentifier().get(i), i);
10384    if (element.hasType())
10385      composeCodeableConcept(t, "MedicinalProduct", "type", element.getType(), -1);
10386    if (element.hasDomain())
10387      composeCoding(t, "MedicinalProduct", "domain", element.getDomain(), -1);
10388    if (element.hasCombinedPharmaceuticalDoseForm())
10389      composeCodeableConcept(t, "MedicinalProduct", "combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm(), -1);
10390    if (element.hasAdditionalMonitoringIndicator())
10391      composeCodeableConcept(t, "MedicinalProduct", "additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator(), -1);
10392    for (int i = 0; i < element.getSpecialMeasures().size(); i++)
10393      composeString(t, "MedicinalProduct", "specialMeasures", element.getSpecialMeasures().get(i), i);
10394    if (element.hasPaediatricUseIndicator())
10395      composeCodeableConcept(t, "MedicinalProduct", "paediatricUseIndicator", element.getPaediatricUseIndicator(), -1);
10396    for (int i = 0; i < element.getProductClassification().size(); i++)
10397      composeCodeableConcept(t, "MedicinalProduct", "productClassification", element.getProductClassification().get(i), i);
10398    for (int i = 0; i < element.getMarketingStatus().size(); i++)
10399      composeMarketingStatus(t, "MedicinalProduct", "marketingStatus", element.getMarketingStatus().get(i), i);
10400    if (element.hasMarketingAuthorization())
10401      composeReference(t, "MedicinalProduct", "marketingAuthorization", element.getMarketingAuthorization(), -1);
10402    for (int i = 0; i < element.getPackagedMedicinalProduct().size(); i++)
10403      composeReference(t, "MedicinalProduct", "packagedMedicinalProduct", element.getPackagedMedicinalProduct().get(i), i);
10404    for (int i = 0; i < element.getPharmaceuticalProduct().size(); i++)
10405      composeReference(t, "MedicinalProduct", "pharmaceuticalProduct", element.getPharmaceuticalProduct().get(i), i);
10406    for (int i = 0; i < element.getContraindication().size(); i++)
10407      composeReference(t, "MedicinalProduct", "contraindication", element.getContraindication().get(i), i);
10408    for (int i = 0; i < element.getInteraction().size(); i++)
10409      composeReference(t, "MedicinalProduct", "interaction", element.getInteraction().get(i), i);
10410    for (int i = 0; i < element.getTherapeuticIndication().size(); i++)
10411      composeReference(t, "MedicinalProduct", "therapeuticIndication", element.getTherapeuticIndication().get(i), i);
10412    for (int i = 0; i < element.getUndesirableEffect().size(); i++)
10413      composeReference(t, "MedicinalProduct", "undesirableEffect", element.getUndesirableEffect().get(i), i);
10414    for (int i = 0; i < element.getAttachedDocument().size(); i++)
10415      composeReference(t, "MedicinalProduct", "attachedDocument", element.getAttachedDocument().get(i), i);
10416    for (int i = 0; i < element.getMasterFile().size(); i++)
10417      composeReference(t, "MedicinalProduct", "masterFile", element.getMasterFile().get(i), i);
10418    for (int i = 0; i < element.getContact().size(); i++)
10419      composeReference(t, "MedicinalProduct", "contact", element.getContact().get(i), i);
10420    for (int i = 0; i < element.getClinicalTrial().size(); i++)
10421      composeReference(t, "MedicinalProduct", "clinicalTrial", element.getClinicalTrial().get(i), i);
10422    for (int i = 0; i < element.getName().size(); i++)
10423      composeMedicinalProductMedicinalProductNameComponent(t, "MedicinalProduct", "name", element.getName().get(i), i);
10424    for (int i = 0; i < element.getCrossReference().size(); i++)
10425      composeIdentifier(t, "MedicinalProduct", "crossReference", element.getCrossReference().get(i), i);
10426    for (int i = 0; i < element.getManufacturingBusinessOperation().size(); i++)
10427      composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(t, "MedicinalProduct", "manufacturingBusinessOperation", element.getManufacturingBusinessOperation().get(i), i);
10428    for (int i = 0; i < element.getSpecialDesignation().size(); i++)
10429      composeMedicinalProductMedicinalProductSpecialDesignationComponent(t, "MedicinalProduct", "specialDesignation", element.getSpecialDesignation().get(i), i);
10430  }
10431
10432  protected void composeMedicinalProductMedicinalProductNameComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameComponent element, int index) {
10433    if (element == null) 
10434      return;
10435    Complex t;
10436    if (Utilities.noString(parentType))
10437      t = parent;
10438    else {
10439      t = parent.predicate("fhir:"+parentType+'.'+name);
10440    }
10441    composeBackboneElement(t, "name", name, element, index);
10442    if (element.hasProductNameElement())
10443      composeString(t, "MedicinalProduct", "productName", element.getProductNameElement(), -1);
10444    for (int i = 0; i < element.getNamePart().size(); i++)
10445      composeMedicinalProductMedicinalProductNameNamePartComponent(t, "MedicinalProduct", "namePart", element.getNamePart().get(i), i);
10446    for (int i = 0; i < element.getCountryLanguage().size(); i++)
10447      composeMedicinalProductMedicinalProductNameCountryLanguageComponent(t, "MedicinalProduct", "countryLanguage", element.getCountryLanguage().get(i), i);
10448  }
10449
10450  protected void composeMedicinalProductMedicinalProductNameNamePartComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameNamePartComponent element, int index) {
10451    if (element == null) 
10452      return;
10453    Complex t;
10454    if (Utilities.noString(parentType))
10455      t = parent;
10456    else {
10457      t = parent.predicate("fhir:"+parentType+'.'+name);
10458    }
10459    composeBackboneElement(t, "namePart", name, element, index);
10460    if (element.hasPartElement())
10461      composeString(t, "MedicinalProduct", "part", element.getPartElement(), -1);
10462    if (element.hasType())
10463      composeCoding(t, "MedicinalProduct", "type", element.getType(), -1);
10464  }
10465
10466  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameCountryLanguageComponent element, int index) {
10467    if (element == null) 
10468      return;
10469    Complex t;
10470    if (Utilities.noString(parentType))
10471      t = parent;
10472    else {
10473      t = parent.predicate("fhir:"+parentType+'.'+name);
10474    }
10475    composeBackboneElement(t, "countryLanguage", name, element, index);
10476    if (element.hasCountry())
10477      composeCodeableConcept(t, "MedicinalProduct", "country", element.getCountry(), -1);
10478    if (element.hasJurisdiction())
10479      composeCodeableConcept(t, "MedicinalProduct", "jurisdiction", element.getJurisdiction(), -1);
10480    if (element.hasLanguage())
10481      composeCodeableConcept(t, "MedicinalProduct", "language", element.getLanguage(), -1);
10482  }
10483
10484  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element, int index) {
10485    if (element == null) 
10486      return;
10487    Complex t;
10488    if (Utilities.noString(parentType))
10489      t = parent;
10490    else {
10491      t = parent.predicate("fhir:"+parentType+'.'+name);
10492    }
10493    composeBackboneElement(t, "manufacturingBusinessOperation", name, element, index);
10494    if (element.hasOperationType())
10495      composeCodeableConcept(t, "MedicinalProduct", "operationType", element.getOperationType(), -1);
10496    if (element.hasAuthorisationReferenceNumber())
10497      composeIdentifier(t, "MedicinalProduct", "authorisationReferenceNumber", element.getAuthorisationReferenceNumber(), -1);
10498    if (element.hasEffectiveDateElement())
10499      composeDateTime(t, "MedicinalProduct", "effectiveDate", element.getEffectiveDateElement(), -1);
10500    if (element.hasConfidentialityIndicator())
10501      composeCodeableConcept(t, "MedicinalProduct", "confidentialityIndicator", element.getConfidentialityIndicator(), -1);
10502    for (int i = 0; i < element.getManufacturer().size(); i++)
10503      composeReference(t, "MedicinalProduct", "manufacturer", element.getManufacturer().get(i), i);
10504    if (element.hasRegulator())
10505      composeReference(t, "MedicinalProduct", "regulator", element.getRegulator(), -1);
10506  }
10507
10508  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductSpecialDesignationComponent element, int index) {
10509    if (element == null) 
10510      return;
10511    Complex t;
10512    if (Utilities.noString(parentType))
10513      t = parent;
10514    else {
10515      t = parent.predicate("fhir:"+parentType+'.'+name);
10516    }
10517    composeBackboneElement(t, "specialDesignation", name, element, index);
10518    for (int i = 0; i < element.getIdentifier().size(); i++)
10519      composeIdentifier(t, "MedicinalProduct", "identifier", element.getIdentifier().get(i), i);
10520    if (element.hasIntendedUse())
10521      composeCodeableConcept(t, "MedicinalProduct", "intendedUse", element.getIntendedUse(), -1);
10522    if (element.hasIndication())
10523      composeCodeableConcept(t, "MedicinalProduct", "indication", element.getIndication(), -1);
10524    if (element.hasStatus())
10525      composeCodeableConcept(t, "MedicinalProduct", "status", element.getStatus(), -1);
10526    if (element.hasDateElement())
10527      composeDateTime(t, "MedicinalProduct", "date", element.getDateElement(), -1);
10528    if (element.hasSpecies())
10529      composeCodeableConcept(t, "MedicinalProduct", "species", element.getSpecies(), -1);
10530  }
10531
10532  protected void composeMedicinalProductAuthorization(Complex parent, String parentType, String name, MedicinalProductAuthorization element, int index) {
10533    if (element == null) 
10534      return;
10535    Complex t;
10536    if (Utilities.noString(parentType))
10537      t = parent;
10538    else {
10539      t = parent.predicate("fhir:"+parentType+'.'+name);
10540    }
10541    composeDomainResource(t, "MedicinalProductAuthorization", name, element, index);
10542    for (int i = 0; i < element.getIdentifier().size(); i++)
10543      composeIdentifier(t, "MedicinalProductAuthorization", "identifier", element.getIdentifier().get(i), i);
10544    if (element.hasSubject())
10545      composeReference(t, "MedicinalProductAuthorization", "subject", element.getSubject(), -1);
10546    for (int i = 0; i < element.getCountry().size(); i++)
10547      composeCodeableConcept(t, "MedicinalProductAuthorization", "country", element.getCountry().get(i), i);
10548    for (int i = 0; i < element.getJurisdiction().size(); i++)
10549      composeCodeableConcept(t, "MedicinalProductAuthorization", "jurisdiction", element.getJurisdiction().get(i), i);
10550    if (element.hasLegalStatusOfSupply())
10551      composeCodeableConcept(t, "MedicinalProductAuthorization", "legalStatusOfSupply", element.getLegalStatusOfSupply(), -1);
10552    if (element.hasStatus())
10553      composeCodeableConcept(t, "MedicinalProductAuthorization", "status", element.getStatus(), -1);
10554    if (element.hasStatusDateElement())
10555      composeDateTime(t, "MedicinalProductAuthorization", "statusDate", element.getStatusDateElement(), -1);
10556    if (element.hasRestoreDateElement())
10557      composeDateTime(t, "MedicinalProductAuthorization", "restoreDate", element.getRestoreDateElement(), -1);
10558    if (element.hasValidityPeriod())
10559      composePeriod(t, "MedicinalProductAuthorization", "validityPeriod", element.getValidityPeriod(), -1);
10560    if (element.hasDataExclusivityPeriod())
10561      composePeriod(t, "MedicinalProductAuthorization", "dataExclusivityPeriod", element.getDataExclusivityPeriod(), -1);
10562    if (element.hasDateOfFirstAuthorizationElement())
10563      composeDateTime(t, "MedicinalProductAuthorization", "dateOfFirstAuthorization", element.getDateOfFirstAuthorizationElement(), -1);
10564    if (element.hasInternationalBirthDateElement())
10565      composeDateTime(t, "MedicinalProductAuthorization", "internationalBirthDate", element.getInternationalBirthDateElement(), -1);
10566    if (element.hasLegalBasis())
10567      composeCodeableConcept(t, "MedicinalProductAuthorization", "legalBasis", element.getLegalBasis(), -1);
10568    for (int i = 0; i < element.getJurisdictionalAuthorization().size(); i++)
10569      composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(t, "MedicinalProductAuthorization", "jurisdictionalAuthorization", element.getJurisdictionalAuthorization().get(i), i);
10570    if (element.hasHolder())
10571      composeReference(t, "MedicinalProductAuthorization", "holder", element.getHolder(), -1);
10572    if (element.hasRegulator())
10573      composeReference(t, "MedicinalProductAuthorization", "regulator", element.getRegulator(), -1);
10574    if (element.hasProcedure())
10575      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(t, "MedicinalProductAuthorization", "procedure", element.getProcedure(), -1);
10576  }
10577
10578  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(Complex parent, String parentType, String name, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element, int index) {
10579    if (element == null) 
10580      return;
10581    Complex t;
10582    if (Utilities.noString(parentType))
10583      t = parent;
10584    else {
10585      t = parent.predicate("fhir:"+parentType+'.'+name);
10586    }
10587    composeBackboneElement(t, "jurisdictionalAuthorization", name, element, index);
10588    for (int i = 0; i < element.getIdentifier().size(); i++)
10589      composeIdentifier(t, "MedicinalProductAuthorization", "identifier", element.getIdentifier().get(i), i);
10590    if (element.hasCountry())
10591      composeCodeableConcept(t, "MedicinalProductAuthorization", "country", element.getCountry(), -1);
10592    for (int i = 0; i < element.getJurisdiction().size(); i++)
10593      composeCodeableConcept(t, "MedicinalProductAuthorization", "jurisdiction", element.getJurisdiction().get(i), i);
10594    if (element.hasLegalStatusOfSupply())
10595      composeCodeableConcept(t, "MedicinalProductAuthorization", "legalStatusOfSupply", element.getLegalStatusOfSupply(), -1);
10596    if (element.hasValidityPeriod())
10597      composePeriod(t, "MedicinalProductAuthorization", "validityPeriod", element.getValidityPeriod(), -1);
10598  }
10599
10600  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(Complex parent, String parentType, String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element, int index) {
10601    if (element == null) 
10602      return;
10603    Complex t;
10604    if (Utilities.noString(parentType))
10605      t = parent;
10606    else {
10607      t = parent.predicate("fhir:"+parentType+'.'+name);
10608    }
10609    composeBackboneElement(t, "procedure", name, element, index);
10610    if (element.hasIdentifier())
10611      composeIdentifier(t, "MedicinalProductAuthorization", "identifier", element.getIdentifier(), -1);
10612    if (element.hasType())
10613      composeCodeableConcept(t, "MedicinalProductAuthorization", "type", element.getType(), -1);
10614    if (element.hasDate())
10615      composeType(t, "MedicinalProductAuthorization", "date", element.getDate(), -1);
10616    for (int i = 0; i < element.getApplication().size(); i++)
10617      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(t, "MedicinalProductAuthorization", "application", element.getApplication().get(i), i);
10618  }
10619
10620  protected void composeMedicinalProductClinicals(Complex parent, String parentType, String name, MedicinalProductClinicals element, int index) {
10621    if (element == null) 
10622      return;
10623    Complex t;
10624    if (Utilities.noString(parentType))
10625      t = parent;
10626    else {
10627      t = parent.predicate("fhir:"+parentType+'.'+name);
10628    }
10629    composeDomainResource(t, "MedicinalProductClinicals", name, element, index);
10630    for (int i = 0; i < element.getUndesirableEffects().size(); i++)
10631      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(t, "MedicinalProductClinicals", "undesirableEffects", element.getUndesirableEffects().get(i), i);
10632    for (int i = 0; i < element.getTherapeuticIndication().size(); i++)
10633      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(t, "MedicinalProductClinicals", "therapeuticIndication", element.getTherapeuticIndication().get(i), i);
10634    for (int i = 0; i < element.getContraindication().size(); i++)
10635      composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(t, "MedicinalProductClinicals", "contraindication", element.getContraindication().get(i), i);
10636    for (int i = 0; i < element.getInteractions().size(); i++)
10637      composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(t, "MedicinalProductClinicals", "interactions", element.getInteractions().get(i), i);
10638  }
10639
10640  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent element, int index) {
10641    if (element == null) 
10642      return;
10643    Complex t;
10644    if (Utilities.noString(parentType))
10645      t = parent;
10646    else {
10647      t = parent.predicate("fhir:"+parentType+'.'+name);
10648    }
10649    composeBackboneElement(t, "undesirableEffects", name, element, index);
10650    if (element.hasSymptomConditionEffect())
10651      composeCodeableConcept(t, "MedicinalProductClinicals", "symptomConditionEffect", element.getSymptomConditionEffect(), -1);
10652    if (element.hasClassification())
10653      composeCodeableConcept(t, "MedicinalProductClinicals", "classification", element.getClassification(), -1);
10654    if (element.hasFrequencyOfOccurrence())
10655      composeCodeableConcept(t, "MedicinalProductClinicals", "frequencyOfOccurrence", element.getFrequencyOfOccurrence(), -1);
10656    for (int i = 0; i < element.getPopulation().size(); i++)
10657      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(t, "MedicinalProductClinicals", "population", element.getPopulation().get(i), i);
10658  }
10659
10660  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent element, int index) {
10661    if (element == null) 
10662      return;
10663    Complex t;
10664    if (Utilities.noString(parentType))
10665      t = parent;
10666    else {
10667      t = parent.predicate("fhir:"+parentType+'.'+name);
10668    }
10669    composeBackboneElement(t, "population", name, element, index);
10670    if (element.hasAge())
10671      composeType(t, "MedicinalProductClinicals", "age", element.getAge(), -1);
10672    if (element.hasGender())
10673      composeCodeableConcept(t, "MedicinalProductClinicals", "gender", element.getGender(), -1);
10674    if (element.hasRace())
10675      composeCodeableConcept(t, "MedicinalProductClinicals", "race", element.getRace(), -1);
10676    if (element.hasPhysiologicalCondition())
10677      composeCodeableConcept(t, "MedicinalProductClinicals", "physiologicalCondition", element.getPhysiologicalCondition(), -1);
10678  }
10679
10680  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent element, int index) {
10681    if (element == null) 
10682      return;
10683    Complex t;
10684    if (Utilities.noString(parentType))
10685      t = parent;
10686    else {
10687      t = parent.predicate("fhir:"+parentType+'.'+name);
10688    }
10689    composeBackboneElement(t, "therapeuticIndication", name, element, index);
10690    if (element.hasDiseaseSymptomProcedure())
10691      composeCodeableConcept(t, "MedicinalProductClinicals", "diseaseSymptomProcedure", element.getDiseaseSymptomProcedure(), -1);
10692    if (element.hasDiseaseStatus())
10693      composeCodeableConcept(t, "MedicinalProductClinicals", "diseaseStatus", element.getDiseaseStatus(), -1);
10694    for (int i = 0; i < element.getComorbidity().size(); i++)
10695      composeCodeableConcept(t, "MedicinalProductClinicals", "comorbidity", element.getComorbidity().get(i), i);
10696    if (element.hasIntendedEffect())
10697      composeCodeableConcept(t, "MedicinalProductClinicals", "intendedEffect", element.getIntendedEffect(), -1);
10698    if (element.hasDuration())
10699      composeQuantity(t, "MedicinalProductClinicals", "duration", element.getDuration(), -1);
10700    for (int i = 0; i < element.getUndesirableEffects().size(); i++)
10701      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(t, "MedicinalProductClinicals", "undesirableEffects", element.getUndesirableEffects().get(i), i);
10702    for (int i = 0; i < element.getOtherTherapy().size(); i++)
10703      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(t, "MedicinalProductClinicals", "otherTherapy", element.getOtherTherapy().get(i), i);
10704    for (int i = 0; i < element.getPopulation().size(); i++)
10705      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(t, "MedicinalProductClinicals", "population", element.getPopulation().get(i), i);
10706  }
10707
10708  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent element, int index) {
10709    if (element == null) 
10710      return;
10711    Complex t;
10712    if (Utilities.noString(parentType))
10713      t = parent;
10714    else {
10715      t = parent.predicate("fhir:"+parentType+'.'+name);
10716    }
10717    composeBackboneElement(t, "otherTherapy", name, element, index);
10718    if (element.hasTherapyRelationshipType())
10719      composeCodeableConcept(t, "MedicinalProductClinicals", "therapyRelationshipType", element.getTherapyRelationshipType(), -1);
10720    if (element.hasMedication())
10721      composeType(t, "MedicinalProductClinicals", "medication", element.getMedication(), -1);
10722  }
10723
10724  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent element, int index) {
10725    if (element == null) 
10726      return;
10727    Complex t;
10728    if (Utilities.noString(parentType))
10729      t = parent;
10730    else {
10731      t = parent.predicate("fhir:"+parentType+'.'+name);
10732    }
10733    composeBackboneElement(t, "contraindication", name, element, index);
10734    if (element.hasDisease())
10735      composeCodeableConcept(t, "MedicinalProductClinicals", "disease", element.getDisease(), -1);
10736    if (element.hasDiseaseStatus())
10737      composeCodeableConcept(t, "MedicinalProductClinicals", "diseaseStatus", element.getDiseaseStatus(), -1);
10738    for (int i = 0; i < element.getComorbidity().size(); i++)
10739      composeCodeableConcept(t, "MedicinalProductClinicals", "comorbidity", element.getComorbidity().get(i), i);
10740    for (int i = 0; i < element.getTherapeuticIndication().size(); i++)
10741      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(t, "MedicinalProductClinicals", "therapeuticIndication", element.getTherapeuticIndication().get(i), i);
10742    for (int i = 0; i < element.getOtherTherapy().size(); i++)
10743      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(t, "MedicinalProductClinicals", "otherTherapy", element.getOtherTherapy().get(i), i);
10744    for (int i = 0; i < element.getPopulation().size(); i++)
10745      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(t, "MedicinalProductClinicals", "population", element.getPopulation().get(i), i);
10746  }
10747
10748  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(Complex parent, String parentType, String name, MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent element, int index) {
10749    if (element == null) 
10750      return;
10751    Complex t;
10752    if (Utilities.noString(parentType))
10753      t = parent;
10754    else {
10755      t = parent.predicate("fhir:"+parentType+'.'+name);
10756    }
10757    composeBackboneElement(t, "interactions", name, element, index);
10758    if (element.hasInteractionElement())
10759      composeString(t, "MedicinalProductClinicals", "interaction", element.getInteractionElement(), -1);
10760    for (int i = 0; i < element.getInteractant().size(); i++)
10761      composeCodeableConcept(t, "MedicinalProductClinicals", "interactant", element.getInteractant().get(i), i);
10762    if (element.hasType())
10763      composeCodeableConcept(t, "MedicinalProductClinicals", "type", element.getType(), -1);
10764    if (element.hasEffect())
10765      composeCodeableConcept(t, "MedicinalProductClinicals", "effect", element.getEffect(), -1);
10766    if (element.hasIncidence())
10767      composeCodeableConcept(t, "MedicinalProductClinicals", "incidence", element.getIncidence(), -1);
10768    if (element.hasManagement())
10769      composeCodeableConcept(t, "MedicinalProductClinicals", "management", element.getManagement(), -1);
10770  }
10771
10772  protected void composeMedicinalProductContraindication(Complex parent, String parentType, String name, MedicinalProductContraindication element, int index) {
10773    if (element == null) 
10774      return;
10775    Complex t;
10776    if (Utilities.noString(parentType))
10777      t = parent;
10778    else {
10779      t = parent.predicate("fhir:"+parentType+'.'+name);
10780    }
10781    composeDomainResource(t, "MedicinalProductContraindication", name, element, index);
10782    for (int i = 0; i < element.getSubject().size(); i++)
10783      composeReference(t, "MedicinalProductContraindication", "subject", element.getSubject().get(i), i);
10784    if (element.hasDisease())
10785      composeCodeableConcept(t, "MedicinalProductContraindication", "disease", element.getDisease(), -1);
10786    if (element.hasDiseaseStatus())
10787      composeCodeableConcept(t, "MedicinalProductContraindication", "diseaseStatus", element.getDiseaseStatus(), -1);
10788    for (int i = 0; i < element.getComorbidity().size(); i++)
10789      composeCodeableConcept(t, "MedicinalProductContraindication", "comorbidity", element.getComorbidity().get(i), i);
10790    for (int i = 0; i < element.getTherapeuticIndication().size(); i++)
10791      composeReference(t, "MedicinalProductContraindication", "therapeuticIndication", element.getTherapeuticIndication().get(i), i);
10792    for (int i = 0; i < element.getOtherTherapy().size(); i++)
10793      composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(t, "MedicinalProductContraindication", "otherTherapy", element.getOtherTherapy().get(i), i);
10794    for (int i = 0; i < element.getPopulation().size(); i++)
10795      composeMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponent(t, "MedicinalProductContraindication", "population", element.getPopulation().get(i), i);
10796  }
10797
10798  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(Complex parent, String parentType, String name, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element, int index) {
10799    if (element == null) 
10800      return;
10801    Complex t;
10802    if (Utilities.noString(parentType))
10803      t = parent;
10804    else {
10805      t = parent.predicate("fhir:"+parentType+'.'+name);
10806    }
10807    composeBackboneElement(t, "otherTherapy", name, element, index);
10808    if (element.hasTherapyRelationshipType())
10809      composeCodeableConcept(t, "MedicinalProductContraindication", "therapyRelationshipType", element.getTherapyRelationshipType(), -1);
10810    if (element.hasMedication())
10811      composeType(t, "MedicinalProductContraindication", "medication", element.getMedication(), -1);
10812  }
10813
10814  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponent(Complex parent, String parentType, String name, MedicinalProductContraindication.MedicinalProductContraindicationPopulationComponent element, int index) {
10815    if (element == null) 
10816      return;
10817    Complex t;
10818    if (Utilities.noString(parentType))
10819      t = parent;
10820    else {
10821      t = parent.predicate("fhir:"+parentType+'.'+name);
10822    }
10823    composeBackboneElement(t, "population", name, element, index);
10824    if (element.hasAge())
10825      composeType(t, "MedicinalProductContraindication", "age", element.getAge(), -1);
10826    if (element.hasGender())
10827      composeCodeableConcept(t, "MedicinalProductContraindication", "gender", element.getGender(), -1);
10828    if (element.hasRace())
10829      composeCodeableConcept(t, "MedicinalProductContraindication", "race", element.getRace(), -1);
10830    if (element.hasPhysiologicalCondition())
10831      composeCodeableConcept(t, "MedicinalProductContraindication", "physiologicalCondition", element.getPhysiologicalCondition(), -1);
10832  }
10833
10834  protected void composeMedicinalProductDeviceSpec(Complex parent, String parentType, String name, MedicinalProductDeviceSpec element, int index) {
10835    if (element == null) 
10836      return;
10837    Complex t;
10838    if (Utilities.noString(parentType))
10839      t = parent;
10840    else {
10841      t = parent.predicate("fhir:"+parentType+'.'+name);
10842    }
10843    composeDomainResource(t, "MedicinalProductDeviceSpec", name, element, index);
10844    if (element.hasIdentifier())
10845      composeIdentifier(t, "MedicinalProductDeviceSpec", "identifier", element.getIdentifier(), -1);
10846    if (element.hasType())
10847      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "type", element.getType(), -1);
10848    if (element.hasTradeNameElement())
10849      composeString(t, "MedicinalProductDeviceSpec", "tradeName", element.getTradeNameElement(), -1);
10850    if (element.hasQuantity())
10851      composeQuantity(t, "MedicinalProductDeviceSpec", "quantity", element.getQuantity(), -1);
10852    if (element.hasListingNumberElement())
10853      composeString(t, "MedicinalProductDeviceSpec", "listingNumber", element.getListingNumberElement(), -1);
10854    if (element.hasModelNumberElement())
10855      composeString(t, "MedicinalProductDeviceSpec", "modelNumber", element.getModelNumberElement(), -1);
10856    if (element.hasSterilityIndicator())
10857      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "sterilityIndicator", element.getSterilityIndicator(), -1);
10858    if (element.hasSterilisationRequirement())
10859      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "sterilisationRequirement", element.getSterilisationRequirement(), -1);
10860    if (element.hasUsage())
10861      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "usage", element.getUsage(), -1);
10862    for (int i = 0; i < element.getNomenclature().size(); i++)
10863      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "nomenclature", element.getNomenclature().get(i), i);
10864    for (int i = 0; i < element.getShelfLifeStorage().size(); i++)
10865      composeProductShelfLife(t, "MedicinalProductDeviceSpec", "shelfLifeStorage", element.getShelfLifeStorage().get(i), i);
10866    if (element.hasPhysicalCharacteristics())
10867      composeProdCharacteristic(t, "MedicinalProductDeviceSpec", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
10868    for (int i = 0; i < element.getOtherCharacteristics().size(); i++)
10869      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "otherCharacteristics", element.getOtherCharacteristics().get(i), i);
10870    for (int i = 0; i < element.getBatchIdentifier().size(); i++)
10871      composeIdentifier(t, "MedicinalProductDeviceSpec", "batchIdentifier", element.getBatchIdentifier().get(i), i);
10872    for (int i = 0; i < element.getManufacturer().size(); i++)
10873      composeReference(t, "MedicinalProductDeviceSpec", "manufacturer", element.getManufacturer().get(i), i);
10874    for (int i = 0; i < element.getMaterial().size(); i++)
10875      composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(t, "MedicinalProductDeviceSpec", "material", element.getMaterial().get(i), i);
10876  }
10877
10878  protected void composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(Complex parent, String parentType, String name, MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent element, int index) {
10879    if (element == null) 
10880      return;
10881    Complex t;
10882    if (Utilities.noString(parentType))
10883      t = parent;
10884    else {
10885      t = parent.predicate("fhir:"+parentType+'.'+name);
10886    }
10887    composeBackboneElement(t, "material", name, element, index);
10888    if (element.hasSubstance())
10889      composeCodeableConcept(t, "MedicinalProductDeviceSpec", "substance", element.getSubstance(), -1);
10890    if (element.hasAlternateElement())
10891      composeBoolean(t, "MedicinalProductDeviceSpec", "alternate", element.getAlternateElement(), -1);
10892    if (element.hasAllergenicIndicatorElement())
10893      composeBoolean(t, "MedicinalProductDeviceSpec", "allergenicIndicator", element.getAllergenicIndicatorElement(), -1);
10894  }
10895
10896  protected void composeMedicinalProductIndication(Complex parent, String parentType, String name, MedicinalProductIndication element, int index) {
10897    if (element == null) 
10898      return;
10899    Complex t;
10900    if (Utilities.noString(parentType))
10901      t = parent;
10902    else {
10903      t = parent.predicate("fhir:"+parentType+'.'+name);
10904    }
10905    composeDomainResource(t, "MedicinalProductIndication", name, element, index);
10906    for (int i = 0; i < element.getSubject().size(); i++)
10907      composeReference(t, "MedicinalProductIndication", "subject", element.getSubject().get(i), i);
10908    if (element.hasDiseaseSymptomProcedure())
10909      composeCodeableConcept(t, "MedicinalProductIndication", "diseaseSymptomProcedure", element.getDiseaseSymptomProcedure(), -1);
10910    if (element.hasDiseaseStatus())
10911      composeCodeableConcept(t, "MedicinalProductIndication", "diseaseStatus", element.getDiseaseStatus(), -1);
10912    for (int i = 0; i < element.getComorbidity().size(); i++)
10913      composeCodeableConcept(t, "MedicinalProductIndication", "comorbidity", element.getComorbidity().get(i), i);
10914    if (element.hasIntendedEffect())
10915      composeCodeableConcept(t, "MedicinalProductIndication", "intendedEffect", element.getIntendedEffect(), -1);
10916    if (element.hasDuration())
10917      composeQuantity(t, "MedicinalProductIndication", "duration", element.getDuration(), -1);
10918    for (int i = 0; i < element.getOtherTherapy().size(); i++)
10919      composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(t, "MedicinalProductIndication", "otherTherapy", element.getOtherTherapy().get(i), i);
10920    for (int i = 0; i < element.getUndesirableEffect().size(); i++)
10921      composeReference(t, "MedicinalProductIndication", "undesirableEffect", element.getUndesirableEffect().get(i), i);
10922    for (int i = 0; i < element.getPopulation().size(); i++)
10923      composeMedicinalProductIndicationMedicinalProductIndicationPopulationComponent(t, "MedicinalProductIndication", "population", element.getPopulation().get(i), i);
10924  }
10925
10926  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(Complex parent, String parentType, String name, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element, int index) {
10927    if (element == null) 
10928      return;
10929    Complex t;
10930    if (Utilities.noString(parentType))
10931      t = parent;
10932    else {
10933      t = parent.predicate("fhir:"+parentType+'.'+name);
10934    }
10935    composeBackboneElement(t, "otherTherapy", name, element, index);
10936    if (element.hasTherapyRelationshipType())
10937      composeCodeableConcept(t, "MedicinalProductIndication", "therapyRelationshipType", element.getTherapyRelationshipType(), -1);
10938    if (element.hasMedication())
10939      composeType(t, "MedicinalProductIndication", "medication", element.getMedication(), -1);
10940  }
10941
10942  protected void composeMedicinalProductIndicationMedicinalProductIndicationPopulationComponent(Complex parent, String parentType, String name, MedicinalProductIndication.MedicinalProductIndicationPopulationComponent element, int index) {
10943    if (element == null) 
10944      return;
10945    Complex t;
10946    if (Utilities.noString(parentType))
10947      t = parent;
10948    else {
10949      t = parent.predicate("fhir:"+parentType+'.'+name);
10950    }
10951    composeBackboneElement(t, "population", name, element, index);
10952    if (element.hasAge())
10953      composeType(t, "MedicinalProductIndication", "age", element.getAge(), -1);
10954    if (element.hasGender())
10955      composeCodeableConcept(t, "MedicinalProductIndication", "gender", element.getGender(), -1);
10956    if (element.hasRace())
10957      composeCodeableConcept(t, "MedicinalProductIndication", "race", element.getRace(), -1);
10958    if (element.hasPhysiologicalCondition())
10959      composeCodeableConcept(t, "MedicinalProductIndication", "physiologicalCondition", element.getPhysiologicalCondition(), -1);
10960  }
10961
10962  protected void composeMedicinalProductIngredient(Complex parent, String parentType, String name, MedicinalProductIngredient element, int index) {
10963    if (element == null) 
10964      return;
10965    Complex t;
10966    if (Utilities.noString(parentType))
10967      t = parent;
10968    else {
10969      t = parent.predicate("fhir:"+parentType+'.'+name);
10970    }
10971    composeDomainResource(t, "MedicinalProductIngredient", name, element, index);
10972    if (element.hasIdentifier())
10973      composeIdentifier(t, "MedicinalProductIngredient", "identifier", element.getIdentifier(), -1);
10974    if (element.hasRole())
10975      composeCodeableConcept(t, "MedicinalProductIngredient", "role", element.getRole(), -1);
10976    if (element.hasAllergenicIndicatorElement())
10977      composeBoolean(t, "MedicinalProductIngredient", "allergenicIndicator", element.getAllergenicIndicatorElement(), -1);
10978    for (int i = 0; i < element.getManufacturer().size(); i++)
10979      composeReference(t, "MedicinalProductIngredient", "manufacturer", element.getManufacturer().get(i), i);
10980    for (int i = 0; i < element.getSpecifiedSubstance().size(); i++)
10981      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(t, "MedicinalProductIngredient", "specifiedSubstance", element.getSpecifiedSubstance().get(i), i);
10982    if (element.hasSubstance())
10983      composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(t, "MedicinalProductIngredient", "substance", element.getSubstance(), -1);
10984  }
10985
10986  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element, int index) {
10987    if (element == null) 
10988      return;
10989    Complex t;
10990    if (Utilities.noString(parentType))
10991      t = parent;
10992    else {
10993      t = parent.predicate("fhir:"+parentType+'.'+name);
10994    }
10995    composeBackboneElement(t, "specifiedSubstance", name, element, index);
10996    if (element.hasCode())
10997      composeCodeableConcept(t, "MedicinalProductIngredient", "code", element.getCode(), -1);
10998    if (element.hasGroup())
10999      composeCodeableConcept(t, "MedicinalProductIngredient", "group", element.getGroup(), -1);
11000    if (element.hasConfidentiality())
11001      composeCodeableConcept(t, "MedicinalProductIngredient", "confidentiality", element.getConfidentiality(), -1);
11002    for (int i = 0; i < element.getStrength().size(); i++)
11003      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(t, "MedicinalProductIngredient", "strength", element.getStrength().get(i), i);
11004  }
11005
11006  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element, int index) {
11007    if (element == null) 
11008      return;
11009    Complex t;
11010    if (Utilities.noString(parentType))
11011      t = parent;
11012    else {
11013      t = parent.predicate("fhir:"+parentType+'.'+name);
11014    }
11015    composeBackboneElement(t, "strength", name, element, index);
11016    if (element.hasPresentation())
11017      composeRatio(t, "MedicinalProductIngredient", "presentation", element.getPresentation(), -1);
11018    if (element.hasPresentationLowLimit())
11019      composeRatio(t, "MedicinalProductIngredient", "presentationLowLimit", element.getPresentationLowLimit(), -1);
11020    if (element.hasConcentration())
11021      composeRatio(t, "MedicinalProductIngredient", "concentration", element.getConcentration(), -1);
11022    if (element.hasConcentrationLowLimit())
11023      composeRatio(t, "MedicinalProductIngredient", "concentrationLowLimit", element.getConcentrationLowLimit(), -1);
11024    if (element.hasMeasurementPointElement())
11025      composeString(t, "MedicinalProductIngredient", "measurementPoint", element.getMeasurementPointElement(), -1);
11026    for (int i = 0; i < element.getCountry().size(); i++)
11027      composeCodeableConcept(t, "MedicinalProductIngredient", "country", element.getCountry().get(i), i);
11028    for (int i = 0; i < element.getReferenceStrength().size(); i++)
11029      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(t, "MedicinalProductIngredient", "referenceStrength", element.getReferenceStrength().get(i), i);
11030  }
11031
11032  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element, int index) {
11033    if (element == null) 
11034      return;
11035    Complex t;
11036    if (Utilities.noString(parentType))
11037      t = parent;
11038    else {
11039      t = parent.predicate("fhir:"+parentType+'.'+name);
11040    }
11041    composeBackboneElement(t, "referenceStrength", name, element, index);
11042    if (element.hasSubstance())
11043      composeCodeableConcept(t, "MedicinalProductIngredient", "substance", element.getSubstance(), -1);
11044    if (element.hasStrength())
11045      composeRatio(t, "MedicinalProductIngredient", "strength", element.getStrength(), -1);
11046    if (element.hasMeasurementPointElement())
11047      composeString(t, "MedicinalProductIngredient", "measurementPoint", element.getMeasurementPointElement(), -1);
11048    for (int i = 0; i < element.getCountry().size(); i++)
11049      composeCodeableConcept(t, "MedicinalProductIngredient", "country", element.getCountry().get(i), i);
11050  }
11051
11052  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element, int index) {
11053    if (element == null) 
11054      return;
11055    Complex t;
11056    if (Utilities.noString(parentType))
11057      t = parent;
11058    else {
11059      t = parent.predicate("fhir:"+parentType+'.'+name);
11060    }
11061    composeBackboneElement(t, "substance", name, element, index);
11062    if (element.hasCode())
11063      composeCodeableConcept(t, "MedicinalProductIngredient", "code", element.getCode(), -1);
11064    for (int i = 0; i < element.getStrength().size(); i++)
11065      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(t, "MedicinalProductIngredient", "strength", element.getStrength().get(i), i);
11066  }
11067
11068  protected void composeMedicinalProductInteraction(Complex parent, String parentType, String name, MedicinalProductInteraction element, int index) {
11069    if (element == null) 
11070      return;
11071    Complex t;
11072    if (Utilities.noString(parentType))
11073      t = parent;
11074    else {
11075      t = parent.predicate("fhir:"+parentType+'.'+name);
11076    }
11077    composeDomainResource(t, "MedicinalProductInteraction", name, element, index);
11078    for (int i = 0; i < element.getSubject().size(); i++)
11079      composeReference(t, "MedicinalProductInteraction", "subject", element.getSubject().get(i), i);
11080    if (element.hasInteractionElement())
11081      composeString(t, "MedicinalProductInteraction", "interaction", element.getInteractionElement(), -1);
11082    for (int i = 0; i < element.getInteractant().size(); i++)
11083      composeCodeableConcept(t, "MedicinalProductInteraction", "interactant", element.getInteractant().get(i), i);
11084    if (element.hasType())
11085      composeCodeableConcept(t, "MedicinalProductInteraction", "type", element.getType(), -1);
11086    if (element.hasEffect())
11087      composeCodeableConcept(t, "MedicinalProductInteraction", "effect", element.getEffect(), -1);
11088    if (element.hasIncidence())
11089      composeCodeableConcept(t, "MedicinalProductInteraction", "incidence", element.getIncidence(), -1);
11090    if (element.hasManagement())
11091      composeCodeableConcept(t, "MedicinalProductInteraction", "management", element.getManagement(), -1);
11092  }
11093
11094  protected void composeMedicinalProductManufactured(Complex parent, String parentType, String name, MedicinalProductManufactured element, int index) {
11095    if (element == null) 
11096      return;
11097    Complex t;
11098    if (Utilities.noString(parentType))
11099      t = parent;
11100    else {
11101      t = parent.predicate("fhir:"+parentType+'.'+name);
11102    }
11103    composeDomainResource(t, "MedicinalProductManufactured", name, element, index);
11104    if (element.hasManufacturedDoseForm())
11105      composeCodeableConcept(t, "MedicinalProductManufactured", "manufacturedDoseForm", element.getManufacturedDoseForm(), -1);
11106    if (element.hasUnitOfPresentation())
11107      composeCodeableConcept(t, "MedicinalProductManufactured", "unitOfPresentation", element.getUnitOfPresentation(), -1);
11108    if (element.hasQuantity())
11109      composeQuantity(t, "MedicinalProductManufactured", "quantity", element.getQuantity(), -1);
11110    for (int i = 0; i < element.getManufacturer().size(); i++)
11111      composeReference(t, "MedicinalProductManufactured", "manufacturer", element.getManufacturer().get(i), i);
11112    for (int i = 0; i < element.getIngredient().size(); i++)
11113      composeReference(t, "MedicinalProductManufactured", "ingredient", element.getIngredient().get(i), i);
11114    if (element.hasPhysicalCharacteristics())
11115      composeProdCharacteristic(t, "MedicinalProductManufactured", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
11116    for (int i = 0; i < element.getOtherCharacteristics().size(); i++)
11117      composeCodeableConcept(t, "MedicinalProductManufactured", "otherCharacteristics", element.getOtherCharacteristics().get(i), i);
11118  }
11119
11120  protected void composeMedicinalProductPackaged(Complex parent, String parentType, String name, MedicinalProductPackaged element, int index) {
11121    if (element == null) 
11122      return;
11123    Complex t;
11124    if (Utilities.noString(parentType))
11125      t = parent;
11126    else {
11127      t = parent.predicate("fhir:"+parentType+'.'+name);
11128    }
11129    composeDomainResource(t, "MedicinalProductPackaged", name, element, index);
11130    if (element.hasIdentifier())
11131      composeIdentifier(t, "MedicinalProductPackaged", "identifier", element.getIdentifier(), -1);
11132    if (element.hasDescriptionElement())
11133      composeString(t, "MedicinalProductPackaged", "description", element.getDescriptionElement(), -1);
11134    for (int i = 0; i < element.getMarketingStatus().size(); i++)
11135      composeMarketingStatus(t, "MedicinalProductPackaged", "marketingStatus", element.getMarketingStatus().get(i), i);
11136    if (element.hasMarketingAuthorization())
11137      composeReference(t, "MedicinalProductPackaged", "marketingAuthorization", element.getMarketingAuthorization(), -1);
11138    for (int i = 0; i < element.getManufacturer().size(); i++)
11139      composeReference(t, "MedicinalProductPackaged", "manufacturer", element.getManufacturer().get(i), i);
11140    for (int i = 0; i < element.getBatchIdentifier().size(); i++)
11141      composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(t, "MedicinalProductPackaged", "batchIdentifier", element.getBatchIdentifier().get(i), i);
11142    for (int i = 0; i < element.getPackageItem().size(); i++)
11143      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(t, "MedicinalProductPackaged", "packageItem", element.getPackageItem().get(i), i);
11144  }
11145
11146  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(Complex parent, String parentType, String name, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element, int index) {
11147    if (element == null) 
11148      return;
11149    Complex t;
11150    if (Utilities.noString(parentType))
11151      t = parent;
11152    else {
11153      t = parent.predicate("fhir:"+parentType+'.'+name);
11154    }
11155    composeBackboneElement(t, "batchIdentifier", name, element, index);
11156    if (element.hasOuterPackaging())
11157      composeIdentifier(t, "MedicinalProductPackaged", "outerPackaging", element.getOuterPackaging(), -1);
11158    if (element.hasImmediatePackaging())
11159      composeIdentifier(t, "MedicinalProductPackaged", "immediatePackaging", element.getImmediatePackaging(), -1);
11160  }
11161
11162  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(Complex parent, String parentType, String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element, int index) {
11163    if (element == null) 
11164      return;
11165    Complex t;
11166    if (Utilities.noString(parentType))
11167      t = parent;
11168    else {
11169      t = parent.predicate("fhir:"+parentType+'.'+name);
11170    }
11171    composeBackboneElement(t, "packageItem", name, element, index);
11172    for (int i = 0; i < element.getIdentifier().size(); i++)
11173      composeIdentifier(t, "MedicinalProductPackaged", "identifier", element.getIdentifier().get(i), i);
11174    if (element.hasType())
11175      composeCodeableConcept(t, "MedicinalProductPackaged", "type", element.getType(), -1);
11176    if (element.hasQuantity())
11177      composeQuantity(t, "MedicinalProductPackaged", "quantity", element.getQuantity(), -1);
11178    for (int i = 0; i < element.getMaterial().size(); i++)
11179      composeCodeableConcept(t, "MedicinalProductPackaged", "material", element.getMaterial().get(i), i);
11180    for (int i = 0; i < element.getAlternateMaterial().size(); i++)
11181      composeCodeableConcept(t, "MedicinalProductPackaged", "alternateMaterial", element.getAlternateMaterial().get(i), i);
11182    for (int i = 0; i < element.getDevice().size(); i++)
11183      composeReference(t, "MedicinalProductPackaged", "device", element.getDevice().get(i), i);
11184    for (int i = 0; i < element.getManufacturedItem().size(); i++)
11185      composeReference(t, "MedicinalProductPackaged", "manufacturedItem", element.getManufacturedItem().get(i), i);
11186    for (int i = 0; i < element.getPackageItem().size(); i++)
11187      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(t, "MedicinalProductPackaged", "packageItem", element.getPackageItem().get(i), i);
11188    if (element.hasPhysicalCharacteristics())
11189      composeProdCharacteristic(t, "MedicinalProductPackaged", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
11190    for (int i = 0; i < element.getOtherCharacteristics().size(); i++)
11191      composeCodeableConcept(t, "MedicinalProductPackaged", "otherCharacteristics", element.getOtherCharacteristics().get(i), i);
11192    for (int i = 0; i < element.getShelfLifeStorage().size(); i++)
11193      composeProductShelfLife(t, "MedicinalProductPackaged", "shelfLifeStorage", element.getShelfLifeStorage().get(i), i);
11194    for (int i = 0; i < element.getManufacturer().size(); i++)
11195      composeReference(t, "MedicinalProductPackaged", "manufacturer", element.getManufacturer().get(i), i);
11196  }
11197
11198  protected void composeMedicinalProductPharmaceutical(Complex parent, String parentType, String name, MedicinalProductPharmaceutical element, int index) {
11199    if (element == null) 
11200      return;
11201    Complex t;
11202    if (Utilities.noString(parentType))
11203      t = parent;
11204    else {
11205      t = parent.predicate("fhir:"+parentType+'.'+name);
11206    }
11207    composeDomainResource(t, "MedicinalProductPharmaceutical", name, element, index);
11208    for (int i = 0; i < element.getIdentifier().size(); i++)
11209      composeIdentifier(t, "MedicinalProductPharmaceutical", "identifier", element.getIdentifier().get(i), i);
11210    if (element.hasAdministrableDoseForm())
11211      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "administrableDoseForm", element.getAdministrableDoseForm(), -1);
11212    if (element.hasUnitOfPresentation())
11213      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "unitOfPresentation", element.getUnitOfPresentation(), -1);
11214    for (int i = 0; i < element.getIngredient().size(); i++)
11215      composeReference(t, "MedicinalProductPharmaceutical", "ingredient", element.getIngredient().get(i), i);
11216    for (int i = 0; i < element.getDevice().size(); i++)
11217      composeReference(t, "MedicinalProductPharmaceutical", "device", element.getDevice().get(i), i);
11218    for (int i = 0; i < element.getCharacteristics().size(); i++)
11219      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(t, "MedicinalProductPharmaceutical", "characteristics", element.getCharacteristics().get(i), i);
11220    for (int i = 0; i < element.getRouteOfAdministration().size(); i++)
11221      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(t, "MedicinalProductPharmaceutical", "routeOfAdministration", element.getRouteOfAdministration().get(i), i);
11222  }
11223
11224  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element, int index) {
11225    if (element == null) 
11226      return;
11227    Complex t;
11228    if (Utilities.noString(parentType))
11229      t = parent;
11230    else {
11231      t = parent.predicate("fhir:"+parentType+'.'+name);
11232    }
11233    composeBackboneElement(t, "characteristics", name, element, index);
11234    if (element.hasCode())
11235      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "code", element.getCode(), -1);
11236    if (element.hasStatus())
11237      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "status", element.getStatus(), -1);
11238  }
11239
11240  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element, int index) {
11241    if (element == null) 
11242      return;
11243    Complex t;
11244    if (Utilities.noString(parentType))
11245      t = parent;
11246    else {
11247      t = parent.predicate("fhir:"+parentType+'.'+name);
11248    }
11249    composeBackboneElement(t, "routeOfAdministration", name, element, index);
11250    if (element.hasCode())
11251      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "code", element.getCode(), -1);
11252    if (element.hasFirstDose())
11253      composeQuantity(t, "MedicinalProductPharmaceutical", "firstDose", element.getFirstDose(), -1);
11254    if (element.hasMaxSingleDose())
11255      composeQuantity(t, "MedicinalProductPharmaceutical", "maxSingleDose", element.getMaxSingleDose(), -1);
11256    if (element.hasMaxDosePerDay())
11257      composeQuantity(t, "MedicinalProductPharmaceutical", "maxDosePerDay", element.getMaxDosePerDay(), -1);
11258    if (element.hasMaxDosePerTreatmentPeriod())
11259      composeRatio(t, "MedicinalProductPharmaceutical", "maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod(), -1);
11260    if (element.hasMaxTreatmentPeriod())
11261      composeDuration(t, "MedicinalProductPharmaceutical", "maxTreatmentPeriod", element.getMaxTreatmentPeriod(), -1);
11262    for (int i = 0; i < element.getTargetSpecies().size(); i++)
11263      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(t, "MedicinalProductPharmaceutical", "targetSpecies", element.getTargetSpecies().get(i), i);
11264  }
11265
11266  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element, int index) {
11267    if (element == null) 
11268      return;
11269    Complex t;
11270    if (Utilities.noString(parentType))
11271      t = parent;
11272    else {
11273      t = parent.predicate("fhir:"+parentType+'.'+name);
11274    }
11275    composeBackboneElement(t, "targetSpecies", name, element, index);
11276    if (element.hasCode())
11277      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "code", element.getCode(), -1);
11278    for (int i = 0; i < element.getWithdrawalPeriod().size(); i++)
11279      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(t, "MedicinalProductPharmaceutical", "withdrawalPeriod", element.getWithdrawalPeriod().get(i), i);
11280  }
11281
11282  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element, int index) {
11283    if (element == null) 
11284      return;
11285    Complex t;
11286    if (Utilities.noString(parentType))
11287      t = parent;
11288    else {
11289      t = parent.predicate("fhir:"+parentType+'.'+name);
11290    }
11291    composeBackboneElement(t, "withdrawalPeriod", name, element, index);
11292    if (element.hasTissue())
11293      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "tissue", element.getTissue(), -1);
11294    if (element.hasValue())
11295      composeQuantity(t, "MedicinalProductPharmaceutical", "value", element.getValue(), -1);
11296    if (element.hasSupportingInformationElement())
11297      composeString(t, "MedicinalProductPharmaceutical", "supportingInformation", element.getSupportingInformationElement(), -1);
11298  }
11299
11300  protected void composeMedicinalProductUndesirableEffect(Complex parent, String parentType, String name, MedicinalProductUndesirableEffect element, int index) {
11301    if (element == null) 
11302      return;
11303    Complex t;
11304    if (Utilities.noString(parentType))
11305      t = parent;
11306    else {
11307      t = parent.predicate("fhir:"+parentType+'.'+name);
11308    }
11309    composeDomainResource(t, "MedicinalProductUndesirableEffect", name, element, index);
11310    for (int i = 0; i < element.getSubject().size(); i++)
11311      composeReference(t, "MedicinalProductUndesirableEffect", "subject", element.getSubject().get(i), i);
11312    if (element.hasSymptomConditionEffect())
11313      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "symptomConditionEffect", element.getSymptomConditionEffect(), -1);
11314    if (element.hasClassification())
11315      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "classification", element.getClassification(), -1);
11316    if (element.hasFrequencyOfOccurrence())
11317      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "frequencyOfOccurrence", element.getFrequencyOfOccurrence(), -1);
11318    for (int i = 0; i < element.getPopulation().size(); i++)
11319      composeMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponent(t, "MedicinalProductUndesirableEffect", "population", element.getPopulation().get(i), i);
11320  }
11321
11322  protected void composeMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponent(Complex parent, String parentType, String name, MedicinalProductUndesirableEffect.MedicinalProductUndesirableEffectPopulationComponent element, int index) {
11323    if (element == null) 
11324      return;
11325    Complex t;
11326    if (Utilities.noString(parentType))
11327      t = parent;
11328    else {
11329      t = parent.predicate("fhir:"+parentType+'.'+name);
11330    }
11331    composeBackboneElement(t, "population", name, element, index);
11332    if (element.hasAge())
11333      composeType(t, "MedicinalProductUndesirableEffect", "age", element.getAge(), -1);
11334    if (element.hasGender())
11335      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "gender", element.getGender(), -1);
11336    if (element.hasRace())
11337      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "race", element.getRace(), -1);
11338    if (element.hasPhysiologicalCondition())
11339      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "physiologicalCondition", element.getPhysiologicalCondition(), -1);
11340  }
11341
11342  protected void composeMessageDefinition(Complex parent, String parentType, String name, MessageDefinition element, int index) {
11343    if (element == null) 
11344      return;
11345    Complex t;
11346    if (Utilities.noString(parentType))
11347      t = parent;
11348    else {
11349      t = parent.predicate("fhir:"+parentType+'.'+name);
11350    }
11351    composeDomainResource(t, "MessageDefinition", name, element, index);
11352    if (element.hasUrlElement())
11353      composeUri(t, "MessageDefinition", "url", element.getUrlElement(), -1);
11354    for (int i = 0; i < element.getIdentifier().size(); i++)
11355      composeIdentifier(t, "MessageDefinition", "identifier", element.getIdentifier().get(i), i);
11356    if (element.hasVersionElement())
11357      composeString(t, "MessageDefinition", "version", element.getVersionElement(), -1);
11358    if (element.hasNameElement())
11359      composeString(t, "MessageDefinition", "name", element.getNameElement(), -1);
11360    if (element.hasTitleElement())
11361      composeString(t, "MessageDefinition", "title", element.getTitleElement(), -1);
11362    for (int i = 0; i < element.getReplaces().size(); i++)
11363      composeCanonical(t, "MessageDefinition", "replaces", element.getReplaces().get(i), i);
11364    if (element.hasStatusElement())
11365      composeEnum(t, "MessageDefinition", "status", element.getStatusElement(), -1);
11366    if (element.hasExperimentalElement())
11367      composeBoolean(t, "MessageDefinition", "experimental", element.getExperimentalElement(), -1);
11368    if (element.hasDateElement())
11369      composeDateTime(t, "MessageDefinition", "date", element.getDateElement(), -1);
11370    if (element.hasPublisherElement())
11371      composeString(t, "MessageDefinition", "publisher", element.getPublisherElement(), -1);
11372    for (int i = 0; i < element.getContact().size(); i++)
11373      composeContactDetail(t, "MessageDefinition", "contact", element.getContact().get(i), i);
11374    if (element.hasDescriptionElement())
11375      composeMarkdown(t, "MessageDefinition", "description", element.getDescriptionElement(), -1);
11376    for (int i = 0; i < element.getUseContext().size(); i++)
11377      composeUsageContext(t, "MessageDefinition", "useContext", element.getUseContext().get(i), i);
11378    for (int i = 0; i < element.getJurisdiction().size(); i++)
11379      composeCodeableConcept(t, "MessageDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
11380    if (element.hasPurposeElement())
11381      composeMarkdown(t, "MessageDefinition", "purpose", element.getPurposeElement(), -1);
11382    if (element.hasCopyrightElement())
11383      composeMarkdown(t, "MessageDefinition", "copyright", element.getCopyrightElement(), -1);
11384    if (element.hasBaseElement())
11385      composeCanonical(t, "MessageDefinition", "base", element.getBaseElement(), -1);
11386    for (int i = 0; i < element.getParent().size(); i++)
11387      composeCanonical(t, "MessageDefinition", "parent", element.getParent().get(i), i);
11388    if (element.hasEvent())
11389      composeType(t, "MessageDefinition", "event", element.getEvent(), -1);
11390    if (element.hasCategoryElement())
11391      composeEnum(t, "MessageDefinition", "category", element.getCategoryElement(), -1);
11392    for (int i = 0; i < element.getFocus().size(); i++)
11393      composeMessageDefinitionMessageDefinitionFocusComponent(t, "MessageDefinition", "focus", element.getFocus().get(i), i);
11394    if (element.hasResponseRequiredElement())
11395      composeEnum(t, "MessageDefinition", "responseRequired", element.getResponseRequiredElement(), -1);
11396    for (int i = 0; i < element.getAllowedResponse().size(); i++)
11397      composeMessageDefinitionMessageDefinitionAllowedResponseComponent(t, "MessageDefinition", "allowedResponse", element.getAllowedResponse().get(i), i);
11398    for (int i = 0; i < element.getGraph().size(); i++)
11399      composeCanonical(t, "MessageDefinition", "graph", element.getGraph().get(i), i);
11400  }
11401
11402  protected void composeMessageDefinitionMessageDefinitionFocusComponent(Complex parent, String parentType, String name, MessageDefinition.MessageDefinitionFocusComponent element, int index) {
11403    if (element == null) 
11404      return;
11405    Complex t;
11406    if (Utilities.noString(parentType))
11407      t = parent;
11408    else {
11409      t = parent.predicate("fhir:"+parentType+'.'+name);
11410    }
11411    composeBackboneElement(t, "focus", name, element, index);
11412    if (element.hasCodeElement())
11413      composeCode(t, "MessageDefinition", "code", element.getCodeElement(), -1);
11414    if (element.hasProfileElement())
11415      composeCanonical(t, "MessageDefinition", "profile", element.getProfileElement(), -1);
11416    if (element.hasMinElement())
11417      composeUnsignedInt(t, "MessageDefinition", "min", element.getMinElement(), -1);
11418    if (element.hasMaxElement())
11419      composeString(t, "MessageDefinition", "max", element.getMaxElement(), -1);
11420  }
11421
11422  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(Complex parent, String parentType, String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element, int index) {
11423    if (element == null) 
11424      return;
11425    Complex t;
11426    if (Utilities.noString(parentType))
11427      t = parent;
11428    else {
11429      t = parent.predicate("fhir:"+parentType+'.'+name);
11430    }
11431    composeBackboneElement(t, "allowedResponse", name, element, index);
11432    if (element.hasMessageElement())
11433      composeCanonical(t, "MessageDefinition", "message", element.getMessageElement(), -1);
11434    if (element.hasSituationElement())
11435      composeMarkdown(t, "MessageDefinition", "situation", element.getSituationElement(), -1);
11436  }
11437
11438  protected void composeMessageHeader(Complex parent, String parentType, String name, MessageHeader element, int index) {
11439    if (element == null) 
11440      return;
11441    Complex t;
11442    if (Utilities.noString(parentType))
11443      t = parent;
11444    else {
11445      t = parent.predicate("fhir:"+parentType+'.'+name);
11446    }
11447    composeDomainResource(t, "MessageHeader", name, element, index);
11448    if (element.hasEvent())
11449      composeType(t, "MessageHeader", "event", element.getEvent(), -1);
11450    for (int i = 0; i < element.getDestination().size(); i++)
11451      composeMessageHeaderMessageDestinationComponent(t, "MessageHeader", "destination", element.getDestination().get(i), i);
11452    if (element.hasSender())
11453      composeReference(t, "MessageHeader", "sender", element.getSender(), -1);
11454    if (element.hasEnterer())
11455      composeReference(t, "MessageHeader", "enterer", element.getEnterer(), -1);
11456    if (element.hasAuthor())
11457      composeReference(t, "MessageHeader", "author", element.getAuthor(), -1);
11458    if (element.hasSource())
11459      composeMessageHeaderMessageSourceComponent(t, "MessageHeader", "source", element.getSource(), -1);
11460    if (element.hasResponsible())
11461      composeReference(t, "MessageHeader", "responsible", element.getResponsible(), -1);
11462    if (element.hasReason())
11463      composeCodeableConcept(t, "MessageHeader", "reason", element.getReason(), -1);
11464    if (element.hasResponse())
11465      composeMessageHeaderMessageHeaderResponseComponent(t, "MessageHeader", "response", element.getResponse(), -1);
11466    for (int i = 0; i < element.getFocus().size(); i++)
11467      composeReference(t, "MessageHeader", "focus", element.getFocus().get(i), i);
11468    if (element.hasDefinitionElement())
11469      composeCanonical(t, "MessageHeader", "definition", element.getDefinitionElement(), -1);
11470  }
11471
11472  protected void composeMessageHeaderMessageDestinationComponent(Complex parent, String parentType, String name, MessageHeader.MessageDestinationComponent element, int index) {
11473    if (element == null) 
11474      return;
11475    Complex t;
11476    if (Utilities.noString(parentType))
11477      t = parent;
11478    else {
11479      t = parent.predicate("fhir:"+parentType+'.'+name);
11480    }
11481    composeBackboneElement(t, "destination", name, element, index);
11482    if (element.hasNameElement())
11483      composeString(t, "MessageHeader", "name", element.getNameElement(), -1);
11484    if (element.hasTarget())
11485      composeReference(t, "MessageHeader", "target", element.getTarget(), -1);
11486    if (element.hasEndpointElement())
11487      composeUrl(t, "MessageHeader", "endpoint", element.getEndpointElement(), -1);
11488    if (element.hasReceiver())
11489      composeReference(t, "MessageHeader", "receiver", element.getReceiver(), -1);
11490  }
11491
11492  protected void composeMessageHeaderMessageSourceComponent(Complex parent, String parentType, String name, MessageHeader.MessageSourceComponent element, int index) {
11493    if (element == null) 
11494      return;
11495    Complex t;
11496    if (Utilities.noString(parentType))
11497      t = parent;
11498    else {
11499      t = parent.predicate("fhir:"+parentType+'.'+name);
11500    }
11501    composeBackboneElement(t, "source", name, element, index);
11502    if (element.hasNameElement())
11503      composeString(t, "MessageHeader", "name", element.getNameElement(), -1);
11504    if (element.hasSoftwareElement())
11505      composeString(t, "MessageHeader", "software", element.getSoftwareElement(), -1);
11506    if (element.hasVersionElement())
11507      composeString(t, "MessageHeader", "version", element.getVersionElement(), -1);
11508    if (element.hasContact())
11509      composeContactPoint(t, "MessageHeader", "contact", element.getContact(), -1);
11510    if (element.hasEndpointElement())
11511      composeUrl(t, "MessageHeader", "endpoint", element.getEndpointElement(), -1);
11512  }
11513
11514  protected void composeMessageHeaderMessageHeaderResponseComponent(Complex parent, String parentType, String name, MessageHeader.MessageHeaderResponseComponent element, int index) {
11515    if (element == null) 
11516      return;
11517    Complex t;
11518    if (Utilities.noString(parentType))
11519      t = parent;
11520    else {
11521      t = parent.predicate("fhir:"+parentType+'.'+name);
11522    }
11523    composeBackboneElement(t, "response", name, element, index);
11524    if (element.hasIdentifierElement())
11525      composeId(t, "MessageHeader", "identifier", element.getIdentifierElement(), -1);
11526    if (element.hasCodeElement())
11527      composeEnum(t, "MessageHeader", "code", element.getCodeElement(), -1);
11528    if (element.hasDetails())
11529      composeReference(t, "MessageHeader", "details", element.getDetails(), -1);
11530  }
11531
11532  protected void composeNamingSystem(Complex parent, String parentType, String name, NamingSystem element, int index) {
11533    if (element == null) 
11534      return;
11535    Complex t;
11536    if (Utilities.noString(parentType))
11537      t = parent;
11538    else {
11539      t = parent.predicate("fhir:"+parentType+'.'+name);
11540    }
11541    composeDomainResource(t, "NamingSystem", name, element, index);
11542    if (element.hasNameElement())
11543      composeString(t, "NamingSystem", "name", element.getNameElement(), -1);
11544    if (element.hasStatusElement())
11545      composeEnum(t, "NamingSystem", "status", element.getStatusElement(), -1);
11546    if (element.hasKindElement())
11547      composeEnum(t, "NamingSystem", "kind", element.getKindElement(), -1);
11548    if (element.hasDateElement())
11549      composeDateTime(t, "NamingSystem", "date", element.getDateElement(), -1);
11550    if (element.hasPublisherElement())
11551      composeString(t, "NamingSystem", "publisher", element.getPublisherElement(), -1);
11552    for (int i = 0; i < element.getContact().size(); i++)
11553      composeContactDetail(t, "NamingSystem", "contact", element.getContact().get(i), i);
11554    if (element.hasResponsibleElement())
11555      composeString(t, "NamingSystem", "responsible", element.getResponsibleElement(), -1);
11556    if (element.hasType())
11557      composeCodeableConcept(t, "NamingSystem", "type", element.getType(), -1);
11558    if (element.hasDescriptionElement())
11559      composeMarkdown(t, "NamingSystem", "description", element.getDescriptionElement(), -1);
11560    for (int i = 0; i < element.getUseContext().size(); i++)
11561      composeUsageContext(t, "NamingSystem", "useContext", element.getUseContext().get(i), i);
11562    for (int i = 0; i < element.getJurisdiction().size(); i++)
11563      composeCodeableConcept(t, "NamingSystem", "jurisdiction", element.getJurisdiction().get(i), i);
11564    if (element.hasUsageElement())
11565      composeString(t, "NamingSystem", "usage", element.getUsageElement(), -1);
11566    for (int i = 0; i < element.getUniqueId().size(); i++)
11567      composeNamingSystemNamingSystemUniqueIdComponent(t, "NamingSystem", "uniqueId", element.getUniqueId().get(i), i);
11568  }
11569
11570  protected void composeNamingSystemNamingSystemUniqueIdComponent(Complex parent, String parentType, String name, NamingSystem.NamingSystemUniqueIdComponent element, int index) {
11571    if (element == null) 
11572      return;
11573    Complex t;
11574    if (Utilities.noString(parentType))
11575      t = parent;
11576    else {
11577      t = parent.predicate("fhir:"+parentType+'.'+name);
11578    }
11579    composeBackboneElement(t, "uniqueId", name, element, index);
11580    if (element.hasTypeElement())
11581      composeEnum(t, "NamingSystem", "type", element.getTypeElement(), -1);
11582    if (element.hasValueElement())
11583      composeString(t, "NamingSystem", "value", element.getValueElement(), -1);
11584    if (element.hasPreferredElement())
11585      composeBoolean(t, "NamingSystem", "preferred", element.getPreferredElement(), -1);
11586    if (element.hasCommentElement())
11587      composeString(t, "NamingSystem", "comment", element.getCommentElement(), -1);
11588    if (element.hasPeriod())
11589      composePeriod(t, "NamingSystem", "period", element.getPeriod(), -1);
11590  }
11591
11592  protected void composeNutritionOrder(Complex parent, String parentType, String name, NutritionOrder element, int index) {
11593    if (element == null) 
11594      return;
11595    Complex t;
11596    if (Utilities.noString(parentType))
11597      t = parent;
11598    else {
11599      t = parent.predicate("fhir:"+parentType+'.'+name);
11600    }
11601    composeDomainResource(t, "NutritionOrder", name, element, index);
11602    for (int i = 0; i < element.getIdentifier().size(); i++)
11603      composeIdentifier(t, "NutritionOrder", "identifier", element.getIdentifier().get(i), i);
11604    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
11605      composeCanonical(t, "NutritionOrder", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
11606    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
11607      composeUri(t, "NutritionOrder", "instantiatesUri", element.getInstantiatesUri().get(i), i);
11608    for (int i = 0; i < element.getInstantiates().size(); i++)
11609      composeUri(t, "NutritionOrder", "instantiates", element.getInstantiates().get(i), i);
11610    if (element.hasStatusElement())
11611      composeEnum(t, "NutritionOrder", "status", element.getStatusElement(), -1);
11612    if (element.hasIntentElement())
11613      composeEnum(t, "NutritionOrder", "intent", element.getIntentElement(), -1);
11614    if (element.hasPatient())
11615      composeReference(t, "NutritionOrder", "patient", element.getPatient(), -1);
11616    if (element.hasContext())
11617      composeReference(t, "NutritionOrder", "context", element.getContext(), -1);
11618    if (element.hasDateTimeElement())
11619      composeDateTime(t, "NutritionOrder", "dateTime", element.getDateTimeElement(), -1);
11620    if (element.hasOrderer())
11621      composeReference(t, "NutritionOrder", "orderer", element.getOrderer(), -1);
11622    for (int i = 0; i < element.getAllergyIntolerance().size(); i++)
11623      composeReference(t, "NutritionOrder", "allergyIntolerance", element.getAllergyIntolerance().get(i), i);
11624    for (int i = 0; i < element.getFoodPreferenceModifier().size(); i++)
11625      composeCodeableConcept(t, "NutritionOrder", "foodPreferenceModifier", element.getFoodPreferenceModifier().get(i), i);
11626    for (int i = 0; i < element.getExcludeFoodModifier().size(); i++)
11627      composeCodeableConcept(t, "NutritionOrder", "excludeFoodModifier", element.getExcludeFoodModifier().get(i), i);
11628    if (element.hasOralDiet())
11629      composeNutritionOrderNutritionOrderOralDietComponent(t, "NutritionOrder", "oralDiet", element.getOralDiet(), -1);
11630    for (int i = 0; i < element.getSupplement().size(); i++)
11631      composeNutritionOrderNutritionOrderSupplementComponent(t, "NutritionOrder", "supplement", element.getSupplement().get(i), i);
11632    if (element.hasEnteralFormula())
11633      composeNutritionOrderNutritionOrderEnteralFormulaComponent(t, "NutritionOrder", "enteralFormula", element.getEnteralFormula(), -1);
11634    for (int i = 0; i < element.getNote().size(); i++)
11635      composeAnnotation(t, "NutritionOrder", "note", element.getNote().get(i), i);
11636  }
11637
11638  protected void composeNutritionOrderNutritionOrderOralDietComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietComponent element, int index) {
11639    if (element == null) 
11640      return;
11641    Complex t;
11642    if (Utilities.noString(parentType))
11643      t = parent;
11644    else {
11645      t = parent.predicate("fhir:"+parentType+'.'+name);
11646    }
11647    composeBackboneElement(t, "oralDiet", name, element, index);
11648    for (int i = 0; i < element.getType().size(); i++)
11649      composeCodeableConcept(t, "NutritionOrder", "type", element.getType().get(i), i);
11650    for (int i = 0; i < element.getSchedule().size(); i++)
11651      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule().get(i), i);
11652    for (int i = 0; i < element.getNutrient().size(); i++)
11653      composeNutritionOrderNutritionOrderOralDietNutrientComponent(t, "NutritionOrder", "nutrient", element.getNutrient().get(i), i);
11654    for (int i = 0; i < element.getTexture().size(); i++)
11655      composeNutritionOrderNutritionOrderOralDietTextureComponent(t, "NutritionOrder", "texture", element.getTexture().get(i), i);
11656    for (int i = 0; i < element.getFluidConsistencyType().size(); i++)
11657      composeCodeableConcept(t, "NutritionOrder", "fluidConsistencyType", element.getFluidConsistencyType().get(i), i);
11658    if (element.hasInstructionElement())
11659      composeString(t, "NutritionOrder", "instruction", element.getInstructionElement(), -1);
11660  }
11661
11662  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element, int index) {
11663    if (element == null) 
11664      return;
11665    Complex t;
11666    if (Utilities.noString(parentType))
11667      t = parent;
11668    else {
11669      t = parent.predicate("fhir:"+parentType+'.'+name);
11670    }
11671    composeBackboneElement(t, "nutrient", name, element, index);
11672    if (element.hasModifier())
11673      composeCodeableConcept(t, "NutritionOrder", "modifier", element.getModifier(), -1);
11674    if (element.hasAmount())
11675      composeQuantity(t, "NutritionOrder", "amount", element.getAmount(), -1);
11676  }
11677
11678  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietTextureComponent element, int index) {
11679    if (element == null) 
11680      return;
11681    Complex t;
11682    if (Utilities.noString(parentType))
11683      t = parent;
11684    else {
11685      t = parent.predicate("fhir:"+parentType+'.'+name);
11686    }
11687    composeBackboneElement(t, "texture", name, element, index);
11688    if (element.hasModifier())
11689      composeCodeableConcept(t, "NutritionOrder", "modifier", element.getModifier(), -1);
11690    if (element.hasFoodType())
11691      composeCodeableConcept(t, "NutritionOrder", "foodType", element.getFoodType(), -1);
11692  }
11693
11694  protected void composeNutritionOrderNutritionOrderSupplementComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderSupplementComponent element, int index) {
11695    if (element == null) 
11696      return;
11697    Complex t;
11698    if (Utilities.noString(parentType))
11699      t = parent;
11700    else {
11701      t = parent.predicate("fhir:"+parentType+'.'+name);
11702    }
11703    composeBackboneElement(t, "supplement", name, element, index);
11704    if (element.hasType())
11705      composeCodeableConcept(t, "NutritionOrder", "type", element.getType(), -1);
11706    if (element.hasProductNameElement())
11707      composeString(t, "NutritionOrder", "productName", element.getProductNameElement(), -1);
11708    for (int i = 0; i < element.getSchedule().size(); i++)
11709      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule().get(i), i);
11710    if (element.hasQuantity())
11711      composeQuantity(t, "NutritionOrder", "quantity", element.getQuantity(), -1);
11712    if (element.hasInstructionElement())
11713      composeString(t, "NutritionOrder", "instruction", element.getInstructionElement(), -1);
11714  }
11715
11716  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element, int index) {
11717    if (element == null) 
11718      return;
11719    Complex t;
11720    if (Utilities.noString(parentType))
11721      t = parent;
11722    else {
11723      t = parent.predicate("fhir:"+parentType+'.'+name);
11724    }
11725    composeBackboneElement(t, "enteralFormula", name, element, index);
11726    if (element.hasBaseFormulaType())
11727      composeCodeableConcept(t, "NutritionOrder", "baseFormulaType", element.getBaseFormulaType(), -1);
11728    if (element.hasBaseFormulaProductNameElement())
11729      composeString(t, "NutritionOrder", "baseFormulaProductName", element.getBaseFormulaProductNameElement(), -1);
11730    if (element.hasAdditiveType())
11731      composeCodeableConcept(t, "NutritionOrder", "additiveType", element.getAdditiveType(), -1);
11732    if (element.hasAdditiveProductNameElement())
11733      composeString(t, "NutritionOrder", "additiveProductName", element.getAdditiveProductNameElement(), -1);
11734    if (element.hasCaloricDensity())
11735      composeQuantity(t, "NutritionOrder", "caloricDensity", element.getCaloricDensity(), -1);
11736    if (element.hasRouteofAdministration())
11737      composeCodeableConcept(t, "NutritionOrder", "routeofAdministration", element.getRouteofAdministration(), -1);
11738    for (int i = 0; i < element.getAdministration().size(); i++)
11739      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(t, "NutritionOrder", "administration", element.getAdministration().get(i), i);
11740    if (element.hasMaxVolumeToDeliver())
11741      composeQuantity(t, "NutritionOrder", "maxVolumeToDeliver", element.getMaxVolumeToDeliver(), -1);
11742    if (element.hasAdministrationInstructionElement())
11743      composeString(t, "NutritionOrder", "administrationInstruction", element.getAdministrationInstructionElement(), -1);
11744  }
11745
11746  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element, int index) {
11747    if (element == null) 
11748      return;
11749    Complex t;
11750    if (Utilities.noString(parentType))
11751      t = parent;
11752    else {
11753      t = parent.predicate("fhir:"+parentType+'.'+name);
11754    }
11755    composeBackboneElement(t, "administration", name, element, index);
11756    if (element.hasSchedule())
11757      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule(), -1);
11758    if (element.hasQuantity())
11759      composeQuantity(t, "NutritionOrder", "quantity", element.getQuantity(), -1);
11760    if (element.hasRate())
11761      composeType(t, "NutritionOrder", "rate", element.getRate(), -1);
11762  }
11763
11764  protected void composeObservation(Complex parent, String parentType, String name, Observation element, int index) {
11765    if (element == null) 
11766      return;
11767    Complex t;
11768    if (Utilities.noString(parentType))
11769      t = parent;
11770    else {
11771      t = parent.predicate("fhir:"+parentType+'.'+name);
11772    }
11773    composeDomainResource(t, "Observation", name, element, index);
11774    for (int i = 0; i < element.getIdentifier().size(); i++)
11775      composeIdentifier(t, "Observation", "identifier", element.getIdentifier().get(i), i);
11776    for (int i = 0; i < element.getBasedOn().size(); i++)
11777      composeReference(t, "Observation", "basedOn", element.getBasedOn().get(i), i);
11778    for (int i = 0; i < element.getPartOf().size(); i++)
11779      composeReference(t, "Observation", "partOf", element.getPartOf().get(i), i);
11780    if (element.hasStatusElement())
11781      composeEnum(t, "Observation", "status", element.getStatusElement(), -1);
11782    for (int i = 0; i < element.getCategory().size(); i++)
11783      composeCodeableConcept(t, "Observation", "category", element.getCategory().get(i), i);
11784    if (element.hasCode())
11785      composeCodeableConcept(t, "Observation", "code", element.getCode(), -1);
11786    if (element.hasSubject())
11787      composeReference(t, "Observation", "subject", element.getSubject(), -1);
11788    for (int i = 0; i < element.getFocus().size(); i++)
11789      composeReference(t, "Observation", "focus", element.getFocus().get(i), i);
11790    if (element.hasEncounter())
11791      composeReference(t, "Observation", "encounter", element.getEncounter(), -1);
11792    if (element.hasEffective())
11793      composeType(t, "Observation", "effective", element.getEffective(), -1);
11794    if (element.hasIssuedElement())
11795      composeInstant(t, "Observation", "issued", element.getIssuedElement(), -1);
11796    for (int i = 0; i < element.getPerformer().size(); i++)
11797      composeReference(t, "Observation", "performer", element.getPerformer().get(i), i);
11798    if (element.hasValue())
11799      composeType(t, "Observation", "value", element.getValue(), -1);
11800    if (element.hasDataAbsentReason())
11801      composeCodeableConcept(t, "Observation", "dataAbsentReason", element.getDataAbsentReason(), -1);
11802    for (int i = 0; i < element.getInterpretation().size(); i++)
11803      composeCodeableConcept(t, "Observation", "interpretation", element.getInterpretation().get(i), i);
11804    if (element.hasCommentElement())
11805      composeString(t, "Observation", "comment", element.getCommentElement(), -1);
11806    if (element.hasBodySite())
11807      composeCodeableConcept(t, "Observation", "bodySite", element.getBodySite(), -1);
11808    if (element.hasMethod())
11809      composeCodeableConcept(t, "Observation", "method", element.getMethod(), -1);
11810    if (element.hasSpecimen())
11811      composeReference(t, "Observation", "specimen", element.getSpecimen(), -1);
11812    if (element.hasDevice())
11813      composeReference(t, "Observation", "device", element.getDevice(), -1);
11814    for (int i = 0; i < element.getReferenceRange().size(); i++)
11815      composeObservationObservationReferenceRangeComponent(t, "Observation", "referenceRange", element.getReferenceRange().get(i), i);
11816    for (int i = 0; i < element.getHasMember().size(); i++)
11817      composeReference(t, "Observation", "hasMember", element.getHasMember().get(i), i);
11818    for (int i = 0; i < element.getDerivedFrom().size(); i++)
11819      composeReference(t, "Observation", "derivedFrom", element.getDerivedFrom().get(i), i);
11820    for (int i = 0; i < element.getComponent().size(); i++)
11821      composeObservationObservationComponentComponent(t, "Observation", "component", element.getComponent().get(i), i);
11822  }
11823
11824  protected void composeObservationObservationReferenceRangeComponent(Complex parent, String parentType, String name, Observation.ObservationReferenceRangeComponent element, int index) {
11825    if (element == null) 
11826      return;
11827    Complex t;
11828    if (Utilities.noString(parentType))
11829      t = parent;
11830    else {
11831      t = parent.predicate("fhir:"+parentType+'.'+name);
11832    }
11833    composeBackboneElement(t, "referenceRange", name, element, index);
11834    if (element.hasLow())
11835      composeQuantity(t, "Observation", "low", element.getLow(), -1);
11836    if (element.hasHigh())
11837      composeQuantity(t, "Observation", "high", element.getHigh(), -1);
11838    if (element.hasType())
11839      composeCodeableConcept(t, "Observation", "type", element.getType(), -1);
11840    for (int i = 0; i < element.getAppliesTo().size(); i++)
11841      composeCodeableConcept(t, "Observation", "appliesTo", element.getAppliesTo().get(i), i);
11842    if (element.hasAge())
11843      composeRange(t, "Observation", "age", element.getAge(), -1);
11844    if (element.hasTextElement())
11845      composeString(t, "Observation", "text", element.getTextElement(), -1);
11846  }
11847
11848  protected void composeObservationObservationComponentComponent(Complex parent, String parentType, String name, Observation.ObservationComponentComponent element, int index) {
11849    if (element == null) 
11850      return;
11851    Complex t;
11852    if (Utilities.noString(parentType))
11853      t = parent;
11854    else {
11855      t = parent.predicate("fhir:"+parentType+'.'+name);
11856    }
11857    composeBackboneElement(t, "component", name, element, index);
11858    if (element.hasCode())
11859      composeCodeableConcept(t, "Observation", "code", element.getCode(), -1);
11860    if (element.hasValue())
11861      composeType(t, "Observation", "value", element.getValue(), -1);
11862    if (element.hasDataAbsentReason())
11863      composeCodeableConcept(t, "Observation", "dataAbsentReason", element.getDataAbsentReason(), -1);
11864    for (int i = 0; i < element.getInterpretation().size(); i++)
11865      composeCodeableConcept(t, "Observation", "interpretation", element.getInterpretation().get(i), i);
11866    for (int i = 0; i < element.getReferenceRange().size(); i++)
11867      composeObservationObservationReferenceRangeComponent(t, "Observation", "referenceRange", element.getReferenceRange().get(i), i);
11868  }
11869
11870  protected void composeObservationDefinition(Complex parent, String parentType, String name, ObservationDefinition element, int index) {
11871    if (element == null) 
11872      return;
11873    Complex t;
11874    if (Utilities.noString(parentType))
11875      t = parent;
11876    else {
11877      t = parent.predicate("fhir:"+parentType+'.'+name);
11878    }
11879    composeDomainResource(t, "ObservationDefinition", name, element, index);
11880    if (element.hasCategory())
11881      composeCodeableConcept(t, "ObservationDefinition", "category", element.getCategory(), -1);
11882    if (element.hasCode())
11883      composeCodeableConcept(t, "ObservationDefinition", "code", element.getCode(), -1);
11884    for (int i = 0; i < element.getIdentifier().size(); i++)
11885      composeIdentifier(t, "ObservationDefinition", "identifier", element.getIdentifier().get(i), i);
11886    for (int i = 0; i < element.getPermittedDataType().size(); i++)
11887      composeCoding(t, "ObservationDefinition", "permittedDataType", element.getPermittedDataType().get(i), i);
11888    if (element.hasMultipleResultsAllowedElement())
11889      composeBoolean(t, "ObservationDefinition", "multipleResultsAllowed", element.getMultipleResultsAllowedElement(), -1);
11890    if (element.hasMethod())
11891      composeCodeableConcept(t, "ObservationDefinition", "method", element.getMethod(), -1);
11892    if (element.hasPreferredReportNameElement())
11893      composeString(t, "ObservationDefinition", "preferredReportName", element.getPreferredReportNameElement(), -1);
11894    if (element.hasQuantitativeDetails())
11895      composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(t, "ObservationDefinition", "quantitativeDetails", element.getQuantitativeDetails(), -1);
11896    for (int i = 0; i < element.getQualifiedInterval().size(); i++)
11897      composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(t, "ObservationDefinition", "qualifiedInterval", element.getQualifiedInterval().get(i), i);
11898    if (element.hasValidCodedValueSetElement())
11899      composeUri(t, "ObservationDefinition", "validCodedValueSet", element.getValidCodedValueSetElement(), -1);
11900    if (element.hasNormalCodedValueSetElement())
11901      composeUri(t, "ObservationDefinition", "normalCodedValueSet", element.getNormalCodedValueSetElement(), -1);
11902    if (element.hasAbnormalCodedValueSetElement())
11903      composeUri(t, "ObservationDefinition", "abnormalCodedValueSet", element.getAbnormalCodedValueSetElement(), -1);
11904    if (element.hasCriticalCodedValueSetElement())
11905      composeUri(t, "ObservationDefinition", "criticalCodedValueSet", element.getCriticalCodedValueSetElement(), -1);
11906  }
11907
11908  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(Complex parent, String parentType, String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element, int index) {
11909    if (element == null) 
11910      return;
11911    Complex t;
11912    if (Utilities.noString(parentType))
11913      t = parent;
11914    else {
11915      t = parent.predicate("fhir:"+parentType+'.'+name);
11916    }
11917    composeBackboneElement(t, "quantitativeDetails", name, element, index);
11918    if (element.hasCustomaryUnit())
11919      composeCoding(t, "ObservationDefinition", "customaryUnit", element.getCustomaryUnit(), -1);
11920    if (element.hasUnit())
11921      composeCoding(t, "ObservationDefinition", "unit", element.getUnit(), -1);
11922    if (element.hasConversionFactorElement())
11923      composeDecimal(t, "ObservationDefinition", "conversionFactor", element.getConversionFactorElement(), -1);
11924    if (element.hasDecimalPrecisionElement())
11925      composeInteger(t, "ObservationDefinition", "decimalPrecision", element.getDecimalPrecisionElement(), -1);
11926  }
11927
11928  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(Complex parent, String parentType, String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element, int index) {
11929    if (element == null) 
11930      return;
11931    Complex t;
11932    if (Utilities.noString(parentType))
11933      t = parent;
11934    else {
11935      t = parent.predicate("fhir:"+parentType+'.'+name);
11936    }
11937    composeBackboneElement(t, "qualifiedInterval", name, element, index);
11938    if (element.hasCategory())
11939      composeCodeableConcept(t, "ObservationDefinition", "category", element.getCategory(), -1);
11940    if (element.hasRange())
11941      composeRange(t, "ObservationDefinition", "range", element.getRange(), -1);
11942    if (element.hasType())
11943      composeCodeableConcept(t, "ObservationDefinition", "type", element.getType(), -1);
11944    for (int i = 0; i < element.getAppliesTo().size(); i++)
11945      composeCodeableConcept(t, "ObservationDefinition", "appliesTo", element.getAppliesTo().get(i), i);
11946    if (element.hasAge())
11947      composeRange(t, "ObservationDefinition", "age", element.getAge(), -1);
11948    if (element.hasGestationalAge())
11949      composeRange(t, "ObservationDefinition", "gestationalAge", element.getGestationalAge(), -1);
11950    if (element.hasConditionElement())
11951      composeString(t, "ObservationDefinition", "condition", element.getConditionElement(), -1);
11952  }
11953
11954  protected void composeOperationDefinition(Complex parent, String parentType, String name, OperationDefinition element, int index) {
11955    if (element == null) 
11956      return;
11957    Complex t;
11958    if (Utilities.noString(parentType))
11959      t = parent;
11960    else {
11961      t = parent.predicate("fhir:"+parentType+'.'+name);
11962    }
11963    composeDomainResource(t, "OperationDefinition", name, element, index);
11964    if (element.hasUrlElement())
11965      composeUri(t, "OperationDefinition", "url", element.getUrlElement(), -1);
11966    if (element.hasVersionElement())
11967      composeString(t, "OperationDefinition", "version", element.getVersionElement(), -1);
11968    if (element.hasNameElement())
11969      composeString(t, "OperationDefinition", "name", element.getNameElement(), -1);
11970    if (element.hasTitleElement())
11971      composeString(t, "OperationDefinition", "title", element.getTitleElement(), -1);
11972    if (element.hasStatusElement())
11973      composeEnum(t, "OperationDefinition", "status", element.getStatusElement(), -1);
11974    if (element.hasKindElement())
11975      composeEnum(t, "OperationDefinition", "kind", element.getKindElement(), -1);
11976    if (element.hasExperimentalElement())
11977      composeBoolean(t, "OperationDefinition", "experimental", element.getExperimentalElement(), -1);
11978    if (element.hasDateElement())
11979      composeDateTime(t, "OperationDefinition", "date", element.getDateElement(), -1);
11980    if (element.hasPublisherElement())
11981      composeString(t, "OperationDefinition", "publisher", element.getPublisherElement(), -1);
11982    for (int i = 0; i < element.getContact().size(); i++)
11983      composeContactDetail(t, "OperationDefinition", "contact", element.getContact().get(i), i);
11984    if (element.hasDescriptionElement())
11985      composeMarkdown(t, "OperationDefinition", "description", element.getDescriptionElement(), -1);
11986    for (int i = 0; i < element.getUseContext().size(); i++)
11987      composeUsageContext(t, "OperationDefinition", "useContext", element.getUseContext().get(i), i);
11988    for (int i = 0; i < element.getJurisdiction().size(); i++)
11989      composeCodeableConcept(t, "OperationDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
11990    if (element.hasPurposeElement())
11991      composeMarkdown(t, "OperationDefinition", "purpose", element.getPurposeElement(), -1);
11992    if (element.hasAffectsStateElement())
11993      composeBoolean(t, "OperationDefinition", "affectsState", element.getAffectsStateElement(), -1);
11994    if (element.hasCodeElement())
11995      composeCode(t, "OperationDefinition", "code", element.getCodeElement(), -1);
11996    if (element.hasCommentElement())
11997      composeMarkdown(t, "OperationDefinition", "comment", element.getCommentElement(), -1);
11998    if (element.hasBaseElement())
11999      composeCanonical(t, "OperationDefinition", "base", element.getBaseElement(), -1);
12000    for (int i = 0; i < element.getResource().size(); i++)
12001      composeCode(t, "OperationDefinition", "resource", element.getResource().get(i), i);
12002    if (element.hasSystemElement())
12003      composeBoolean(t, "OperationDefinition", "system", element.getSystemElement(), -1);
12004    if (element.hasTypeElement())
12005      composeBoolean(t, "OperationDefinition", "type", element.getTypeElement(), -1);
12006    if (element.hasInstanceElement())
12007      composeBoolean(t, "OperationDefinition", "instance", element.getInstanceElement(), -1);
12008    if (element.hasInputProfileElement())
12009      composeCanonical(t, "OperationDefinition", "inputProfile", element.getInputProfileElement(), -1);
12010    if (element.hasOutputProfileElement())
12011      composeCanonical(t, "OperationDefinition", "outputProfile", element.getOutputProfileElement(), -1);
12012    for (int i = 0; i < element.getParameter().size(); i++)
12013      composeOperationDefinitionOperationDefinitionParameterComponent(t, "OperationDefinition", "parameter", element.getParameter().get(i), i);
12014    for (int i = 0; i < element.getOverload().size(); i++)
12015      composeOperationDefinitionOperationDefinitionOverloadComponent(t, "OperationDefinition", "overload", element.getOverload().get(i), i);
12016  }
12017
12018  protected void composeOperationDefinitionOperationDefinitionParameterComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionParameterComponent element, int index) {
12019    if (element == null) 
12020      return;
12021    Complex t;
12022    if (Utilities.noString(parentType))
12023      t = parent;
12024    else {
12025      t = parent.predicate("fhir:"+parentType+'.'+name);
12026    }
12027    composeBackboneElement(t, "parameter", name, element, index);
12028    if (element.hasNameElement())
12029      composeCode(t, "OperationDefinition", "name", element.getNameElement(), -1);
12030    if (element.hasUseElement())
12031      composeEnum(t, "OperationDefinition", "use", element.getUseElement(), -1);
12032    if (element.hasMinElement())
12033      composeInteger(t, "OperationDefinition", "min", element.getMinElement(), -1);
12034    if (element.hasMaxElement())
12035      composeString(t, "OperationDefinition", "max", element.getMaxElement(), -1);
12036    if (element.hasDocumentationElement())
12037      composeString(t, "OperationDefinition", "documentation", element.getDocumentationElement(), -1);
12038    if (element.hasTypeElement())
12039      composeCode(t, "OperationDefinition", "type", element.getTypeElement(), -1);
12040    for (int i = 0; i < element.getTargetProfile().size(); i++)
12041      composeCanonical(t, "OperationDefinition", "targetProfile", element.getTargetProfile().get(i), i);
12042    if (element.hasSearchTypeElement())
12043      composeEnum(t, "OperationDefinition", "searchType", element.getSearchTypeElement(), -1);
12044    if (element.hasBinding())
12045      composeOperationDefinitionOperationDefinitionParameterBindingComponent(t, "OperationDefinition", "binding", element.getBinding(), -1);
12046    for (int i = 0; i < element.getReferencedFrom().size(); i++)
12047      composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent(t, "OperationDefinition", "referencedFrom", element.getReferencedFrom().get(i), i);
12048    for (int i = 0; i < element.getPart().size(); i++)
12049      composeOperationDefinitionOperationDefinitionParameterComponent(t, "OperationDefinition", "part", element.getPart().get(i), i);
12050  }
12051
12052  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionParameterBindingComponent element, int index) {
12053    if (element == null) 
12054      return;
12055    Complex t;
12056    if (Utilities.noString(parentType))
12057      t = parent;
12058    else {
12059      t = parent.predicate("fhir:"+parentType+'.'+name);
12060    }
12061    composeBackboneElement(t, "binding", name, element, index);
12062    if (element.hasStrengthElement())
12063      composeEnum(t, "OperationDefinition", "strength", element.getStrengthElement(), -1);
12064    if (element.hasValueSetElement())
12065      composeCanonical(t, "OperationDefinition", "valueSet", element.getValueSetElement(), -1);
12066  }
12067
12068  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element, int index) {
12069    if (element == null) 
12070      return;
12071    Complex t;
12072    if (Utilities.noString(parentType))
12073      t = parent;
12074    else {
12075      t = parent.predicate("fhir:"+parentType+'.'+name);
12076    }
12077    composeBackboneElement(t, "referencedFrom", name, element, index);
12078    if (element.hasSourceElement())
12079      composeString(t, "OperationDefinition", "source", element.getSourceElement(), -1);
12080    if (element.hasSourceIdElement())
12081      composeString(t, "OperationDefinition", "sourceId", element.getSourceIdElement(), -1);
12082  }
12083
12084  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionOverloadComponent element, int index) {
12085    if (element == null) 
12086      return;
12087    Complex t;
12088    if (Utilities.noString(parentType))
12089      t = parent;
12090    else {
12091      t = parent.predicate("fhir:"+parentType+'.'+name);
12092    }
12093    composeBackboneElement(t, "overload", name, element, index);
12094    for (int i = 0; i < element.getParameterName().size(); i++)
12095      composeString(t, "OperationDefinition", "parameterName", element.getParameterName().get(i), i);
12096    if (element.hasCommentElement())
12097      composeString(t, "OperationDefinition", "comment", element.getCommentElement(), -1);
12098  }
12099
12100  protected void composeOperationOutcome(Complex parent, String parentType, String name, OperationOutcome element, int index) {
12101    if (element == null) 
12102      return;
12103    Complex t;
12104    if (Utilities.noString(parentType))
12105      t = parent;
12106    else {
12107      t = parent.predicate("fhir:"+parentType+'.'+name);
12108    }
12109    composeDomainResource(t, "OperationOutcome", name, element, index);
12110    for (int i = 0; i < element.getIssue().size(); i++)
12111      composeOperationOutcomeOperationOutcomeIssueComponent(t, "OperationOutcome", "issue", element.getIssue().get(i), i);
12112  }
12113
12114  protected void composeOperationOutcomeOperationOutcomeIssueComponent(Complex parent, String parentType, String name, OperationOutcome.OperationOutcomeIssueComponent element, int index) {
12115    if (element == null) 
12116      return;
12117    Complex t;
12118    if (Utilities.noString(parentType))
12119      t = parent;
12120    else {
12121      t = parent.predicate("fhir:"+parentType+'.'+name);
12122    }
12123    composeBackboneElement(t, "issue", name, element, index);
12124    if (element.hasSeverityElement())
12125      composeEnum(t, "OperationOutcome", "severity", element.getSeverityElement(), -1);
12126    if (element.hasCodeElement())
12127      composeEnum(t, "OperationOutcome", "code", element.getCodeElement(), -1);
12128    if (element.hasDetails())
12129      composeCodeableConcept(t, "OperationOutcome", "details", element.getDetails(), -1);
12130    if (element.hasDiagnosticsElement())
12131      composeString(t, "OperationOutcome", "diagnostics", element.getDiagnosticsElement(), -1);
12132    for (int i = 0; i < element.getLocation().size(); i++)
12133      composeString(t, "OperationOutcome", "location", element.getLocation().get(i), i);
12134    for (int i = 0; i < element.getExpression().size(); i++)
12135      composeString(t, "OperationOutcome", "expression", element.getExpression().get(i), i);
12136  }
12137
12138  protected void composeOrganization(Complex parent, String parentType, String name, Organization element, int index) {
12139    if (element == null) 
12140      return;
12141    Complex t;
12142    if (Utilities.noString(parentType))
12143      t = parent;
12144    else {
12145      t = parent.predicate("fhir:"+parentType+'.'+name);
12146    }
12147    composeDomainResource(t, "Organization", name, element, index);
12148    for (int i = 0; i < element.getIdentifier().size(); i++)
12149      composeIdentifier(t, "Organization", "identifier", element.getIdentifier().get(i), i);
12150    if (element.hasActiveElement())
12151      composeBoolean(t, "Organization", "active", element.getActiveElement(), -1);
12152    for (int i = 0; i < element.getType().size(); i++)
12153      composeCodeableConcept(t, "Organization", "type", element.getType().get(i), i);
12154    if (element.hasNameElement())
12155      composeString(t, "Organization", "name", element.getNameElement(), -1);
12156    for (int i = 0; i < element.getAlias().size(); i++)
12157      composeString(t, "Organization", "alias", element.getAlias().get(i), i);
12158    for (int i = 0; i < element.getTelecom().size(); i++)
12159      composeContactPoint(t, "Organization", "telecom", element.getTelecom().get(i), i);
12160    for (int i = 0; i < element.getAddress().size(); i++)
12161      composeAddress(t, "Organization", "address", element.getAddress().get(i), i);
12162    if (element.hasPartOf())
12163      composeReference(t, "Organization", "partOf", element.getPartOf(), -1);
12164    for (int i = 0; i < element.getContact().size(); i++)
12165      composeOrganizationOrganizationContactComponent(t, "Organization", "contact", element.getContact().get(i), i);
12166    for (int i = 0; i < element.getEndpoint().size(); i++)
12167      composeReference(t, "Organization", "endpoint", element.getEndpoint().get(i), i);
12168  }
12169
12170  protected void composeOrganizationOrganizationContactComponent(Complex parent, String parentType, String name, Organization.OrganizationContactComponent element, int index) {
12171    if (element == null) 
12172      return;
12173    Complex t;
12174    if (Utilities.noString(parentType))
12175      t = parent;
12176    else {
12177      t = parent.predicate("fhir:"+parentType+'.'+name);
12178    }
12179    composeBackboneElement(t, "contact", name, element, index);
12180    if (element.hasPurpose())
12181      composeCodeableConcept(t, "Organization", "purpose", element.getPurpose(), -1);
12182    if (element.hasName())
12183      composeHumanName(t, "Organization", "name", element.getName(), -1);
12184    for (int i = 0; i < element.getTelecom().size(); i++)
12185      composeContactPoint(t, "Organization", "telecom", element.getTelecom().get(i), i);
12186    if (element.hasAddress())
12187      composeAddress(t, "Organization", "address", element.getAddress(), -1);
12188  }
12189
12190  protected void composeOrganizationAffiliation(Complex parent, String parentType, String name, OrganizationAffiliation element, int index) {
12191    if (element == null) 
12192      return;
12193    Complex t;
12194    if (Utilities.noString(parentType))
12195      t = parent;
12196    else {
12197      t = parent.predicate("fhir:"+parentType+'.'+name);
12198    }
12199    composeDomainResource(t, "OrganizationAffiliation", name, element, index);
12200    for (int i = 0; i < element.getIdentifier().size(); i++)
12201      composeIdentifier(t, "OrganizationAffiliation", "identifier", element.getIdentifier().get(i), i);
12202    if (element.hasActiveElement())
12203      composeBoolean(t, "OrganizationAffiliation", "active", element.getActiveElement(), -1);
12204    if (element.hasPeriod())
12205      composePeriod(t, "OrganizationAffiliation", "period", element.getPeriod(), -1);
12206    if (element.hasOrganization())
12207      composeReference(t, "OrganizationAffiliation", "organization", element.getOrganization(), -1);
12208    if (element.hasParticipatingOrganization())
12209      composeReference(t, "OrganizationAffiliation", "participatingOrganization", element.getParticipatingOrganization(), -1);
12210    for (int i = 0; i < element.getNetwork().size(); i++)
12211      composeReference(t, "OrganizationAffiliation", "network", element.getNetwork().get(i), i);
12212    for (int i = 0; i < element.getCode().size(); i++)
12213      composeCodeableConcept(t, "OrganizationAffiliation", "code", element.getCode().get(i), i);
12214    for (int i = 0; i < element.getSpecialty().size(); i++)
12215      composeCodeableConcept(t, "OrganizationAffiliation", "specialty", element.getSpecialty().get(i), i);
12216    for (int i = 0; i < element.getLocation().size(); i++)
12217      composeReference(t, "OrganizationAffiliation", "location", element.getLocation().get(i), i);
12218    for (int i = 0; i < element.getHealthcareService().size(); i++)
12219      composeReference(t, "OrganizationAffiliation", "healthcareService", element.getHealthcareService().get(i), i);
12220    for (int i = 0; i < element.getTelecom().size(); i++)
12221      composeContactPoint(t, "OrganizationAffiliation", "telecom", element.getTelecom().get(i), i);
12222    for (int i = 0; i < element.getEndpoint().size(); i++)
12223      composeReference(t, "OrganizationAffiliation", "endpoint", element.getEndpoint().get(i), i);
12224  }
12225
12226  protected void composePatient(Complex parent, String parentType, String name, Patient element, int index) {
12227    if (element == null) 
12228      return;
12229    Complex t;
12230    if (Utilities.noString(parentType))
12231      t = parent;
12232    else {
12233      t = parent.predicate("fhir:"+parentType+'.'+name);
12234    }
12235    composeDomainResource(t, "Patient", name, element, index);
12236    for (int i = 0; i < element.getIdentifier().size(); i++)
12237      composeIdentifier(t, "Patient", "identifier", element.getIdentifier().get(i), i);
12238    if (element.hasActiveElement())
12239      composeBoolean(t, "Patient", "active", element.getActiveElement(), -1);
12240    for (int i = 0; i < element.getName().size(); i++)
12241      composeHumanName(t, "Patient", "name", element.getName().get(i), i);
12242    for (int i = 0; i < element.getTelecom().size(); i++)
12243      composeContactPoint(t, "Patient", "telecom", element.getTelecom().get(i), i);
12244    if (element.hasGenderElement())
12245      composeEnum(t, "Patient", "gender", element.getGenderElement(), -1);
12246    if (element.hasBirthDateElement())
12247      composeDate(t, "Patient", "birthDate", element.getBirthDateElement(), -1);
12248    if (element.hasDeceased())
12249      composeType(t, "Patient", "deceased", element.getDeceased(), -1);
12250    for (int i = 0; i < element.getAddress().size(); i++)
12251      composeAddress(t, "Patient", "address", element.getAddress().get(i), i);
12252    if (element.hasMaritalStatus())
12253      composeCodeableConcept(t, "Patient", "maritalStatus", element.getMaritalStatus(), -1);
12254    if (element.hasMultipleBirth())
12255      composeType(t, "Patient", "multipleBirth", element.getMultipleBirth(), -1);
12256    for (int i = 0; i < element.getPhoto().size(); i++)
12257      composeAttachment(t, "Patient", "photo", element.getPhoto().get(i), i);
12258    for (int i = 0; i < element.getContact().size(); i++)
12259      composePatientContactComponent(t, "Patient", "contact", element.getContact().get(i), i);
12260    for (int i = 0; i < element.getCommunication().size(); i++)
12261      composePatientPatientCommunicationComponent(t, "Patient", "communication", element.getCommunication().get(i), i);
12262    for (int i = 0; i < element.getGeneralPractitioner().size(); i++)
12263      composeReference(t, "Patient", "generalPractitioner", element.getGeneralPractitioner().get(i), i);
12264    if (element.hasManagingOrganization())
12265      composeReference(t, "Patient", "managingOrganization", element.getManagingOrganization(), -1);
12266    for (int i = 0; i < element.getLink().size(); i++)
12267      composePatientPatientLinkComponent(t, "Patient", "link", element.getLink().get(i), i);
12268  }
12269
12270  protected void composePatientContactComponent(Complex parent, String parentType, String name, Patient.ContactComponent element, int index) {
12271    if (element == null) 
12272      return;
12273    Complex t;
12274    if (Utilities.noString(parentType))
12275      t = parent;
12276    else {
12277      t = parent.predicate("fhir:"+parentType+'.'+name);
12278    }
12279    composeBackboneElement(t, "contact", name, element, index);
12280    for (int i = 0; i < element.getRelationship().size(); i++)
12281      composeCodeableConcept(t, "Patient", "relationship", element.getRelationship().get(i), i);
12282    if (element.hasName())
12283      composeHumanName(t, "Patient", "name", element.getName(), -1);
12284    for (int i = 0; i < element.getTelecom().size(); i++)
12285      composeContactPoint(t, "Patient", "telecom", element.getTelecom().get(i), i);
12286    if (element.hasAddress())
12287      composeAddress(t, "Patient", "address", element.getAddress(), -1);
12288    if (element.hasGenderElement())
12289      composeEnum(t, "Patient", "gender", element.getGenderElement(), -1);
12290    if (element.hasOrganization())
12291      composeReference(t, "Patient", "organization", element.getOrganization(), -1);
12292    if (element.hasPeriod())
12293      composePeriod(t, "Patient", "period", element.getPeriod(), -1);
12294  }
12295
12296  protected void composePatientPatientCommunicationComponent(Complex parent, String parentType, String name, Patient.PatientCommunicationComponent element, int index) {
12297    if (element == null) 
12298      return;
12299    Complex t;
12300    if (Utilities.noString(parentType))
12301      t = parent;
12302    else {
12303      t = parent.predicate("fhir:"+parentType+'.'+name);
12304    }
12305    composeBackboneElement(t, "communication", name, element, index);
12306    if (element.hasLanguage())
12307      composeCodeableConcept(t, "Patient", "language", element.getLanguage(), -1);
12308    if (element.hasPreferredElement())
12309      composeBoolean(t, "Patient", "preferred", element.getPreferredElement(), -1);
12310  }
12311
12312  protected void composePatientPatientLinkComponent(Complex parent, String parentType, String name, Patient.PatientLinkComponent element, int index) {
12313    if (element == null) 
12314      return;
12315    Complex t;
12316    if (Utilities.noString(parentType))
12317      t = parent;
12318    else {
12319      t = parent.predicate("fhir:"+parentType+'.'+name);
12320    }
12321    composeBackboneElement(t, "link", name, element, index);
12322    if (element.hasOther())
12323      composeReference(t, "Patient", "other", element.getOther(), -1);
12324    if (element.hasTypeElement())
12325      composeEnum(t, "Patient", "type", element.getTypeElement(), -1);
12326  }
12327
12328  protected void composePaymentNotice(Complex parent, String parentType, String name, PaymentNotice element, int index) {
12329    if (element == null) 
12330      return;
12331    Complex t;
12332    if (Utilities.noString(parentType))
12333      t = parent;
12334    else {
12335      t = parent.predicate("fhir:"+parentType+'.'+name);
12336    }
12337    composeDomainResource(t, "PaymentNotice", name, element, index);
12338    for (int i = 0; i < element.getIdentifier().size(); i++)
12339      composeIdentifier(t, "PaymentNotice", "identifier", element.getIdentifier().get(i), i);
12340    if (element.hasStatusElement())
12341      composeEnum(t, "PaymentNotice", "status", element.getStatusElement(), -1);
12342    if (element.hasRequest())
12343      composeReference(t, "PaymentNotice", "request", element.getRequest(), -1);
12344    if (element.hasResponse())
12345      composeReference(t, "PaymentNotice", "response", element.getResponse(), -1);
12346    if (element.hasStatusDateElement())
12347      composeDate(t, "PaymentNotice", "statusDate", element.getStatusDateElement(), -1);
12348    if (element.hasCreatedElement())
12349      composeDateTime(t, "PaymentNotice", "created", element.getCreatedElement(), -1);
12350    if (element.hasTarget())
12351      composeReference(t, "PaymentNotice", "target", element.getTarget(), -1);
12352    if (element.hasProvider())
12353      composeReference(t, "PaymentNotice", "provider", element.getProvider(), -1);
12354    if (element.hasPaymentStatus())
12355      composeCodeableConcept(t, "PaymentNotice", "paymentStatus", element.getPaymentStatus(), -1);
12356  }
12357
12358  protected void composePaymentReconciliation(Complex parent, String parentType, String name, PaymentReconciliation element, int index) {
12359    if (element == null) 
12360      return;
12361    Complex t;
12362    if (Utilities.noString(parentType))
12363      t = parent;
12364    else {
12365      t = parent.predicate("fhir:"+parentType+'.'+name);
12366    }
12367    composeDomainResource(t, "PaymentReconciliation", name, element, index);
12368    for (int i = 0; i < element.getIdentifier().size(); i++)
12369      composeIdentifier(t, "PaymentReconciliation", "identifier", element.getIdentifier().get(i), i);
12370    if (element.hasStatusElement())
12371      composeEnum(t, "PaymentReconciliation", "status", element.getStatusElement(), -1);
12372    if (element.hasPeriod())
12373      composePeriod(t, "PaymentReconciliation", "period", element.getPeriod(), -1);
12374    if (element.hasCreatedElement())
12375      composeDateTime(t, "PaymentReconciliation", "created", element.getCreatedElement(), -1);
12376    if (element.hasOrganization())
12377      composeReference(t, "PaymentReconciliation", "organization", element.getOrganization(), -1);
12378    if (element.hasRequest())
12379      composeReference(t, "PaymentReconciliation", "request", element.getRequest(), -1);
12380    if (element.hasOutcomeElement())
12381      composeEnum(t, "PaymentReconciliation", "outcome", element.getOutcomeElement(), -1);
12382    if (element.hasDispositionElement())
12383      composeString(t, "PaymentReconciliation", "disposition", element.getDispositionElement(), -1);
12384    if (element.hasRequestProvider())
12385      composeReference(t, "PaymentReconciliation", "requestProvider", element.getRequestProvider(), -1);
12386    for (int i = 0; i < element.getDetail().size(); i++)
12387      composePaymentReconciliationDetailsComponent(t, "PaymentReconciliation", "detail", element.getDetail().get(i), i);
12388    if (element.hasForm())
12389      composeCodeableConcept(t, "PaymentReconciliation", "form", element.getForm(), -1);
12390    if (element.hasTotal())
12391      composeMoney(t, "PaymentReconciliation", "total", element.getTotal(), -1);
12392    for (int i = 0; i < element.getProcessNote().size(); i++)
12393      composePaymentReconciliationNotesComponent(t, "PaymentReconciliation", "processNote", element.getProcessNote().get(i), i);
12394  }
12395
12396  protected void composePaymentReconciliationDetailsComponent(Complex parent, String parentType, String name, PaymentReconciliation.DetailsComponent element, int index) {
12397    if (element == null) 
12398      return;
12399    Complex t;
12400    if (Utilities.noString(parentType))
12401      t = parent;
12402    else {
12403      t = parent.predicate("fhir:"+parentType+'.'+name);
12404    }
12405    composeBackboneElement(t, "detail", name, element, index);
12406    if (element.hasType())
12407      composeCodeableConcept(t, "PaymentReconciliation", "type", element.getType(), -1);
12408    if (element.hasRequest())
12409      composeReference(t, "PaymentReconciliation", "request", element.getRequest(), -1);
12410    if (element.hasResponse())
12411      composeReference(t, "PaymentReconciliation", "response", element.getResponse(), -1);
12412    if (element.hasSubmitter())
12413      composeReference(t, "PaymentReconciliation", "submitter", element.getSubmitter(), -1);
12414    if (element.hasPayee())
12415      composeReference(t, "PaymentReconciliation", "payee", element.getPayee(), -1);
12416    if (element.hasDateElement())
12417      composeDate(t, "PaymentReconciliation", "date", element.getDateElement(), -1);
12418    if (element.hasAmount())
12419      composeMoney(t, "PaymentReconciliation", "amount", element.getAmount(), -1);
12420  }
12421
12422  protected void composePaymentReconciliationNotesComponent(Complex parent, String parentType, String name, PaymentReconciliation.NotesComponent element, int index) {
12423    if (element == null) 
12424      return;
12425    Complex t;
12426    if (Utilities.noString(parentType))
12427      t = parent;
12428    else {
12429      t = parent.predicate("fhir:"+parentType+'.'+name);
12430    }
12431    composeBackboneElement(t, "processNote", name, element, index);
12432    if (element.hasTypeElement())
12433      composeEnum(t, "PaymentReconciliation", "type", element.getTypeElement(), -1);
12434    if (element.hasTextElement())
12435      composeString(t, "PaymentReconciliation", "text", element.getTextElement(), -1);
12436  }
12437
12438  protected void composePerson(Complex parent, String parentType, String name, Person element, int index) {
12439    if (element == null) 
12440      return;
12441    Complex t;
12442    if (Utilities.noString(parentType))
12443      t = parent;
12444    else {
12445      t = parent.predicate("fhir:"+parentType+'.'+name);
12446    }
12447    composeDomainResource(t, "Person", name, element, index);
12448    for (int i = 0; i < element.getIdentifier().size(); i++)
12449      composeIdentifier(t, "Person", "identifier", element.getIdentifier().get(i), i);
12450    for (int i = 0; i < element.getName().size(); i++)
12451      composeHumanName(t, "Person", "name", element.getName().get(i), i);
12452    for (int i = 0; i < element.getTelecom().size(); i++)
12453      composeContactPoint(t, "Person", "telecom", element.getTelecom().get(i), i);
12454    if (element.hasGenderElement())
12455      composeEnum(t, "Person", "gender", element.getGenderElement(), -1);
12456    if (element.hasBirthDateElement())
12457      composeDate(t, "Person", "birthDate", element.getBirthDateElement(), -1);
12458    for (int i = 0; i < element.getAddress().size(); i++)
12459      composeAddress(t, "Person", "address", element.getAddress().get(i), i);
12460    if (element.hasPhoto())
12461      composeAttachment(t, "Person", "photo", element.getPhoto(), -1);
12462    if (element.hasManagingOrganization())
12463      composeReference(t, "Person", "managingOrganization", element.getManagingOrganization(), -1);
12464    if (element.hasActiveElement())
12465      composeBoolean(t, "Person", "active", element.getActiveElement(), -1);
12466    for (int i = 0; i < element.getLink().size(); i++)
12467      composePersonPersonLinkComponent(t, "Person", "link", element.getLink().get(i), i);
12468  }
12469
12470  protected void composePersonPersonLinkComponent(Complex parent, String parentType, String name, Person.PersonLinkComponent element, int index) {
12471    if (element == null) 
12472      return;
12473    Complex t;
12474    if (Utilities.noString(parentType))
12475      t = parent;
12476    else {
12477      t = parent.predicate("fhir:"+parentType+'.'+name);
12478    }
12479    composeBackboneElement(t, "link", name, element, index);
12480    if (element.hasTarget())
12481      composeReference(t, "Person", "target", element.getTarget(), -1);
12482    if (element.hasAssuranceElement())
12483      composeEnum(t, "Person", "assurance", element.getAssuranceElement(), -1);
12484  }
12485
12486  protected void composePlanDefinition(Complex parent, String parentType, String name, PlanDefinition element, int index) {
12487    if (element == null) 
12488      return;
12489    Complex t;
12490    if (Utilities.noString(parentType))
12491      t = parent;
12492    else {
12493      t = parent.predicate("fhir:"+parentType+'.'+name);
12494    }
12495    composeDomainResource(t, "PlanDefinition", name, element, index);
12496    if (element.hasUrlElement())
12497      composeUri(t, "PlanDefinition", "url", element.getUrlElement(), -1);
12498    for (int i = 0; i < element.getIdentifier().size(); i++)
12499      composeIdentifier(t, "PlanDefinition", "identifier", element.getIdentifier().get(i), i);
12500    if (element.hasVersionElement())
12501      composeString(t, "PlanDefinition", "version", element.getVersionElement(), -1);
12502    if (element.hasNameElement())
12503      composeString(t, "PlanDefinition", "name", element.getNameElement(), -1);
12504    if (element.hasTitleElement())
12505      composeString(t, "PlanDefinition", "title", element.getTitleElement(), -1);
12506    if (element.hasSubtitleElement())
12507      composeString(t, "PlanDefinition", "subtitle", element.getSubtitleElement(), -1);
12508    if (element.hasType())
12509      composeCodeableConcept(t, "PlanDefinition", "type", element.getType(), -1);
12510    if (element.hasStatusElement())
12511      composeEnum(t, "PlanDefinition", "status", element.getStatusElement(), -1);
12512    if (element.hasExperimentalElement())
12513      composeBoolean(t, "PlanDefinition", "experimental", element.getExperimentalElement(), -1);
12514    if (element.hasSubject())
12515      composeType(t, "PlanDefinition", "subject", element.getSubject(), -1);
12516    if (element.hasDateElement())
12517      composeDateTime(t, "PlanDefinition", "date", element.getDateElement(), -1);
12518    if (element.hasPublisherElement())
12519      composeString(t, "PlanDefinition", "publisher", element.getPublisherElement(), -1);
12520    for (int i = 0; i < element.getContact().size(); i++)
12521      composeContactDetail(t, "PlanDefinition", "contact", element.getContact().get(i), i);
12522    if (element.hasDescriptionElement())
12523      composeMarkdown(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
12524    for (int i = 0; i < element.getUseContext().size(); i++)
12525      composeUsageContext(t, "PlanDefinition", "useContext", element.getUseContext().get(i), i);
12526    for (int i = 0; i < element.getJurisdiction().size(); i++)
12527      composeCodeableConcept(t, "PlanDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
12528    if (element.hasPurposeElement())
12529      composeMarkdown(t, "PlanDefinition", "purpose", element.getPurposeElement(), -1);
12530    if (element.hasUsageElement())
12531      composeString(t, "PlanDefinition", "usage", element.getUsageElement(), -1);
12532    if (element.hasCopyrightElement())
12533      composeMarkdown(t, "PlanDefinition", "copyright", element.getCopyrightElement(), -1);
12534    if (element.hasApprovalDateElement())
12535      composeDate(t, "PlanDefinition", "approvalDate", element.getApprovalDateElement(), -1);
12536    if (element.hasLastReviewDateElement())
12537      composeDate(t, "PlanDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
12538    if (element.hasEffectivePeriod())
12539      composePeriod(t, "PlanDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
12540    for (int i = 0; i < element.getTopic().size(); i++)
12541      composeCodeableConcept(t, "PlanDefinition", "topic", element.getTopic().get(i), i);
12542    for (int i = 0; i < element.getAuthor().size(); i++)
12543      composeContactDetail(t, "PlanDefinition", "author", element.getAuthor().get(i), i);
12544    for (int i = 0; i < element.getEditor().size(); i++)
12545      composeContactDetail(t, "PlanDefinition", "editor", element.getEditor().get(i), i);
12546    for (int i = 0; i < element.getReviewer().size(); i++)
12547      composeContactDetail(t, "PlanDefinition", "reviewer", element.getReviewer().get(i), i);
12548    for (int i = 0; i < element.getEndorser().size(); i++)
12549      composeContactDetail(t, "PlanDefinition", "endorser", element.getEndorser().get(i), i);
12550    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
12551      composeRelatedArtifact(t, "PlanDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
12552    for (int i = 0; i < element.getLibrary().size(); i++)
12553      composeCanonical(t, "PlanDefinition", "library", element.getLibrary().get(i), i);
12554    for (int i = 0; i < element.getGoal().size(); i++)
12555      composePlanDefinitionPlanDefinitionGoalComponent(t, "PlanDefinition", "goal", element.getGoal().get(i), i);
12556    for (int i = 0; i < element.getAction().size(); i++)
12557      composePlanDefinitionPlanDefinitionActionComponent(t, "PlanDefinition", "action", element.getAction().get(i), i);
12558  }
12559
12560  protected void composePlanDefinitionPlanDefinitionGoalComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionGoalComponent element, int index) {
12561    if (element == null) 
12562      return;
12563    Complex t;
12564    if (Utilities.noString(parentType))
12565      t = parent;
12566    else {
12567      t = parent.predicate("fhir:"+parentType+'.'+name);
12568    }
12569    composeBackboneElement(t, "goal", name, element, index);
12570    if (element.hasCategory())
12571      composeCodeableConcept(t, "PlanDefinition", "category", element.getCategory(), -1);
12572    if (element.hasDescription())
12573      composeCodeableConcept(t, "PlanDefinition", "description", element.getDescription(), -1);
12574    if (element.hasPriority())
12575      composeCodeableConcept(t, "PlanDefinition", "priority", element.getPriority(), -1);
12576    if (element.hasStart())
12577      composeCodeableConcept(t, "PlanDefinition", "start", element.getStart(), -1);
12578    for (int i = 0; i < element.getAddresses().size(); i++)
12579      composeCodeableConcept(t, "PlanDefinition", "addresses", element.getAddresses().get(i), i);
12580    for (int i = 0; i < element.getDocumentation().size(); i++)
12581      composeRelatedArtifact(t, "PlanDefinition", "documentation", element.getDocumentation().get(i), i);
12582    for (int i = 0; i < element.getTarget().size(); i++)
12583      composePlanDefinitionPlanDefinitionGoalTargetComponent(t, "PlanDefinition", "target", element.getTarget().get(i), i);
12584  }
12585
12586  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionGoalTargetComponent element, int index) {
12587    if (element == null) 
12588      return;
12589    Complex t;
12590    if (Utilities.noString(parentType))
12591      t = parent;
12592    else {
12593      t = parent.predicate("fhir:"+parentType+'.'+name);
12594    }
12595    composeBackboneElement(t, "target", name, element, index);
12596    if (element.hasMeasure())
12597      composeCodeableConcept(t, "PlanDefinition", "measure", element.getMeasure(), -1);
12598    if (element.hasDetail())
12599      composeType(t, "PlanDefinition", "detail", element.getDetail(), -1);
12600    if (element.hasDue())
12601      composeDuration(t, "PlanDefinition", "due", element.getDue(), -1);
12602  }
12603
12604  protected void composePlanDefinitionPlanDefinitionActionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionComponent element, int index) {
12605    if (element == null) 
12606      return;
12607    Complex t;
12608    if (Utilities.noString(parentType))
12609      t = parent;
12610    else {
12611      t = parent.predicate("fhir:"+parentType+'.'+name);
12612    }
12613    composeBackboneElement(t, "action", name, element, index);
12614    if (element.hasPrefixElement())
12615      composeString(t, "PlanDefinition", "prefix", element.getPrefixElement(), -1);
12616    if (element.hasTitleElement())
12617      composeString(t, "PlanDefinition", "title", element.getTitleElement(), -1);
12618    if (element.hasDescriptionElement())
12619      composeString(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
12620    if (element.hasTextEquivalentElement())
12621      composeString(t, "PlanDefinition", "textEquivalent", element.getTextEquivalentElement(), -1);
12622    if (element.hasPriorityElement())
12623      composeEnum(t, "PlanDefinition", "priority", element.getPriorityElement(), -1);
12624    for (int i = 0; i < element.getCode().size(); i++)
12625      composeCodeableConcept(t, "PlanDefinition", "code", element.getCode().get(i), i);
12626    for (int i = 0; i < element.getReason().size(); i++)
12627      composeCodeableConcept(t, "PlanDefinition", "reason", element.getReason().get(i), i);
12628    for (int i = 0; i < element.getDocumentation().size(); i++)
12629      composeRelatedArtifact(t, "PlanDefinition", "documentation", element.getDocumentation().get(i), i);
12630    for (int i = 0; i < element.getGoalId().size(); i++)
12631      composeId(t, "PlanDefinition", "goalId", element.getGoalId().get(i), i);
12632    for (int i = 0; i < element.getTrigger().size(); i++)
12633      composeTriggerDefinition(t, "PlanDefinition", "trigger", element.getTrigger().get(i), i);
12634    for (int i = 0; i < element.getCondition().size(); i++)
12635      composePlanDefinitionPlanDefinitionActionConditionComponent(t, "PlanDefinition", "condition", element.getCondition().get(i), i);
12636    for (int i = 0; i < element.getInput().size(); i++)
12637      composeDataRequirement(t, "PlanDefinition", "input", element.getInput().get(i), i);
12638    for (int i = 0; i < element.getOutput().size(); i++)
12639      composeDataRequirement(t, "PlanDefinition", "output", element.getOutput().get(i), i);
12640    for (int i = 0; i < element.getRelatedAction().size(); i++)
12641      composePlanDefinitionPlanDefinitionActionRelatedActionComponent(t, "PlanDefinition", "relatedAction", element.getRelatedAction().get(i), i);
12642    if (element.hasTiming())
12643      composeType(t, "PlanDefinition", "timing", element.getTiming(), -1);
12644    for (int i = 0; i < element.getParticipant().size(); i++)
12645      composePlanDefinitionPlanDefinitionActionParticipantComponent(t, "PlanDefinition", "participant", element.getParticipant().get(i), i);
12646    if (element.hasType())
12647      composeCodeableConcept(t, "PlanDefinition", "type", element.getType(), -1);
12648    if (element.hasGroupingBehaviorElement())
12649      composeEnum(t, "PlanDefinition", "groupingBehavior", element.getGroupingBehaviorElement(), -1);
12650    if (element.hasSelectionBehaviorElement())
12651      composeEnum(t, "PlanDefinition", "selectionBehavior", element.getSelectionBehaviorElement(), -1);
12652    if (element.hasRequiredBehaviorElement())
12653      composeEnum(t, "PlanDefinition", "requiredBehavior", element.getRequiredBehaviorElement(), -1);
12654    if (element.hasPrecheckBehaviorElement())
12655      composeEnum(t, "PlanDefinition", "precheckBehavior", element.getPrecheckBehaviorElement(), -1);
12656    if (element.hasCardinalityBehaviorElement())
12657      composeEnum(t, "PlanDefinition", "cardinalityBehavior", element.getCardinalityBehaviorElement(), -1);
12658    if (element.hasDefinitionElement())
12659      composeCanonical(t, "PlanDefinition", "definition", element.getDefinitionElement(), -1);
12660    if (element.hasTransformElement())
12661      composeCanonical(t, "PlanDefinition", "transform", element.getTransformElement(), -1);
12662    for (int i = 0; i < element.getDynamicValue().size(); i++)
12663      composePlanDefinitionPlanDefinitionActionDynamicValueComponent(t, "PlanDefinition", "dynamicValue", element.getDynamicValue().get(i), i);
12664    for (int i = 0; i < element.getAction().size(); i++)
12665      composePlanDefinitionPlanDefinitionActionComponent(t, "PlanDefinition", "action", element.getAction().get(i), i);
12666  }
12667
12668  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionConditionComponent element, int index) {
12669    if (element == null) 
12670      return;
12671    Complex t;
12672    if (Utilities.noString(parentType))
12673      t = parent;
12674    else {
12675      t = parent.predicate("fhir:"+parentType+'.'+name);
12676    }
12677    composeBackboneElement(t, "condition", name, element, index);
12678    if (element.hasKindElement())
12679      composeEnum(t, "PlanDefinition", "kind", element.getKindElement(), -1);
12680    if (element.hasExpression())
12681      composeExpression(t, "PlanDefinition", "expression", element.getExpression(), -1);
12682  }
12683
12684  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element, int index) {
12685    if (element == null) 
12686      return;
12687    Complex t;
12688    if (Utilities.noString(parentType))
12689      t = parent;
12690    else {
12691      t = parent.predicate("fhir:"+parentType+'.'+name);
12692    }
12693    composeBackboneElement(t, "relatedAction", name, element, index);
12694    if (element.hasActionIdElement())
12695      composeId(t, "PlanDefinition", "actionId", element.getActionIdElement(), -1);
12696    if (element.hasRelationshipElement())
12697      composeEnum(t, "PlanDefinition", "relationship", element.getRelationshipElement(), -1);
12698    if (element.hasOffset())
12699      composeType(t, "PlanDefinition", "offset", element.getOffset(), -1);
12700  }
12701
12702  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionParticipantComponent element, int index) {
12703    if (element == null) 
12704      return;
12705    Complex t;
12706    if (Utilities.noString(parentType))
12707      t = parent;
12708    else {
12709      t = parent.predicate("fhir:"+parentType+'.'+name);
12710    }
12711    composeBackboneElement(t, "participant", name, element, index);
12712    if (element.hasTypeElement())
12713      composeEnum(t, "PlanDefinition", "type", element.getTypeElement(), -1);
12714    if (element.hasRole())
12715      composeCodeableConcept(t, "PlanDefinition", "role", element.getRole(), -1);
12716  }
12717
12718  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element, int index) {
12719    if (element == null) 
12720      return;
12721    Complex t;
12722    if (Utilities.noString(parentType))
12723      t = parent;
12724    else {
12725      t = parent.predicate("fhir:"+parentType+'.'+name);
12726    }
12727    composeBackboneElement(t, "dynamicValue", name, element, index);
12728    if (element.hasPathElement())
12729      composeString(t, "PlanDefinition", "path", element.getPathElement(), -1);
12730    if (element.hasExpression())
12731      composeExpression(t, "PlanDefinition", "expression", element.getExpression(), -1);
12732  }
12733
12734  protected void composePractitioner(Complex parent, String parentType, String name, Practitioner element, int index) {
12735    if (element == null) 
12736      return;
12737    Complex t;
12738    if (Utilities.noString(parentType))
12739      t = parent;
12740    else {
12741      t = parent.predicate("fhir:"+parentType+'.'+name);
12742    }
12743    composeDomainResource(t, "Practitioner", name, element, index);
12744    for (int i = 0; i < element.getIdentifier().size(); i++)
12745      composeIdentifier(t, "Practitioner", "identifier", element.getIdentifier().get(i), i);
12746    if (element.hasActiveElement())
12747      composeBoolean(t, "Practitioner", "active", element.getActiveElement(), -1);
12748    for (int i = 0; i < element.getName().size(); i++)
12749      composeHumanName(t, "Practitioner", "name", element.getName().get(i), i);
12750    for (int i = 0; i < element.getTelecom().size(); i++)
12751      composeContactPoint(t, "Practitioner", "telecom", element.getTelecom().get(i), i);
12752    for (int i = 0; i < element.getAddress().size(); i++)
12753      composeAddress(t, "Practitioner", "address", element.getAddress().get(i), i);
12754    if (element.hasGenderElement())
12755      composeEnum(t, "Practitioner", "gender", element.getGenderElement(), -1);
12756    if (element.hasBirthDateElement())
12757      composeDate(t, "Practitioner", "birthDate", element.getBirthDateElement(), -1);
12758    for (int i = 0; i < element.getPhoto().size(); i++)
12759      composeAttachment(t, "Practitioner", "photo", element.getPhoto().get(i), i);
12760    for (int i = 0; i < element.getQualification().size(); i++)
12761      composePractitionerPractitionerQualificationComponent(t, "Practitioner", "qualification", element.getQualification().get(i), i);
12762    for (int i = 0; i < element.getCommunication().size(); i++)
12763      composeCodeableConcept(t, "Practitioner", "communication", element.getCommunication().get(i), i);
12764  }
12765
12766  protected void composePractitionerPractitionerQualificationComponent(Complex parent, String parentType, String name, Practitioner.PractitionerQualificationComponent element, int index) {
12767    if (element == null) 
12768      return;
12769    Complex t;
12770    if (Utilities.noString(parentType))
12771      t = parent;
12772    else {
12773      t = parent.predicate("fhir:"+parentType+'.'+name);
12774    }
12775    composeBackboneElement(t, "qualification", name, element, index);
12776    for (int i = 0; i < element.getIdentifier().size(); i++)
12777      composeIdentifier(t, "Practitioner", "identifier", element.getIdentifier().get(i), i);
12778    if (element.hasCode())
12779      composeCodeableConcept(t, "Practitioner", "code", element.getCode(), -1);
12780    if (element.hasPeriod())
12781      composePeriod(t, "Practitioner", "period", element.getPeriod(), -1);
12782    if (element.hasIssuer())
12783      composeReference(t, "Practitioner", "issuer", element.getIssuer(), -1);
12784  }
12785
12786  protected void composePractitionerRole(Complex parent, String parentType, String name, PractitionerRole element, int index) {
12787    if (element == null) 
12788      return;
12789    Complex t;
12790    if (Utilities.noString(parentType))
12791      t = parent;
12792    else {
12793      t = parent.predicate("fhir:"+parentType+'.'+name);
12794    }
12795    composeDomainResource(t, "PractitionerRole", name, element, index);
12796    for (int i = 0; i < element.getIdentifier().size(); i++)
12797      composeIdentifier(t, "PractitionerRole", "identifier", element.getIdentifier().get(i), i);
12798    if (element.hasActiveElement())
12799      composeBoolean(t, "PractitionerRole", "active", element.getActiveElement(), -1);
12800    if (element.hasPeriod())
12801      composePeriod(t, "PractitionerRole", "period", element.getPeriod(), -1);
12802    if (element.hasPractitioner())
12803      composeReference(t, "PractitionerRole", "practitioner", element.getPractitioner(), -1);
12804    if (element.hasOrganization())
12805      composeReference(t, "PractitionerRole", "organization", element.getOrganization(), -1);
12806    for (int i = 0; i < element.getCode().size(); i++)
12807      composeCodeableConcept(t, "PractitionerRole", "code", element.getCode().get(i), i);
12808    for (int i = 0; i < element.getSpecialty().size(); i++)
12809      composeCodeableConcept(t, "PractitionerRole", "specialty", element.getSpecialty().get(i), i);
12810    for (int i = 0; i < element.getLocation().size(); i++)
12811      composeReference(t, "PractitionerRole", "location", element.getLocation().get(i), i);
12812    for (int i = 0; i < element.getHealthcareService().size(); i++)
12813      composeReference(t, "PractitionerRole", "healthcareService", element.getHealthcareService().get(i), i);
12814    for (int i = 0; i < element.getTelecom().size(); i++)
12815      composeContactPoint(t, "PractitionerRole", "telecom", element.getTelecom().get(i), i);
12816    for (int i = 0; i < element.getAvailableTime().size(); i++)
12817      composePractitionerRolePractitionerRoleAvailableTimeComponent(t, "PractitionerRole", "availableTime", element.getAvailableTime().get(i), i);
12818    for (int i = 0; i < element.getNotAvailable().size(); i++)
12819      composePractitionerRolePractitionerRoleNotAvailableComponent(t, "PractitionerRole", "notAvailable", element.getNotAvailable().get(i), i);
12820    if (element.hasAvailabilityExceptionsElement())
12821      composeString(t, "PractitionerRole", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
12822    for (int i = 0; i < element.getEndpoint().size(); i++)
12823      composeReference(t, "PractitionerRole", "endpoint", element.getEndpoint().get(i), i);
12824  }
12825
12826  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(Complex parent, String parentType, String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element, int index) {
12827    if (element == null) 
12828      return;
12829    Complex t;
12830    if (Utilities.noString(parentType))
12831      t = parent;
12832    else {
12833      t = parent.predicate("fhir:"+parentType+'.'+name);
12834    }
12835    composeBackboneElement(t, "availableTime", name, element, index);
12836    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
12837      composeEnum(t, "PractitionerRole", "daysOfWeek", element.getDaysOfWeek().get(i), i);
12838    if (element.hasAllDayElement())
12839      composeBoolean(t, "PractitionerRole", "allDay", element.getAllDayElement(), -1);
12840    if (element.hasAvailableStartTimeElement())
12841      composeTime(t, "PractitionerRole", "availableStartTime", element.getAvailableStartTimeElement(), -1);
12842    if (element.hasAvailableEndTimeElement())
12843      composeTime(t, "PractitionerRole", "availableEndTime", element.getAvailableEndTimeElement(), -1);
12844  }
12845
12846  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(Complex parent, String parentType, String name, PractitionerRole.PractitionerRoleNotAvailableComponent element, int index) {
12847    if (element == null) 
12848      return;
12849    Complex t;
12850    if (Utilities.noString(parentType))
12851      t = parent;
12852    else {
12853      t = parent.predicate("fhir:"+parentType+'.'+name);
12854    }
12855    composeBackboneElement(t, "notAvailable", name, element, index);
12856    if (element.hasDescriptionElement())
12857      composeString(t, "PractitionerRole", "description", element.getDescriptionElement(), -1);
12858    if (element.hasDuring())
12859      composePeriod(t, "PractitionerRole", "during", element.getDuring(), -1);
12860  }
12861
12862  protected void composeProcedure(Complex parent, String parentType, String name, Procedure element, int index) {
12863    if (element == null) 
12864      return;
12865    Complex t;
12866    if (Utilities.noString(parentType))
12867      t = parent;
12868    else {
12869      t = parent.predicate("fhir:"+parentType+'.'+name);
12870    }
12871    composeDomainResource(t, "Procedure", name, element, index);
12872    for (int i = 0; i < element.getIdentifier().size(); i++)
12873      composeIdentifier(t, "Procedure", "identifier", element.getIdentifier().get(i), i);
12874    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
12875      composeCanonical(t, "Procedure", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
12876    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
12877      composeUri(t, "Procedure", "instantiatesUri", element.getInstantiatesUri().get(i), i);
12878    for (int i = 0; i < element.getBasedOn().size(); i++)
12879      composeReference(t, "Procedure", "basedOn", element.getBasedOn().get(i), i);
12880    for (int i = 0; i < element.getPartOf().size(); i++)
12881      composeReference(t, "Procedure", "partOf", element.getPartOf().get(i), i);
12882    if (element.hasStatusElement())
12883      composeEnum(t, "Procedure", "status", element.getStatusElement(), -1);
12884    if (element.hasStatusReason())
12885      composeCodeableConcept(t, "Procedure", "statusReason", element.getStatusReason(), -1);
12886    if (element.hasCategory())
12887      composeCodeableConcept(t, "Procedure", "category", element.getCategory(), -1);
12888    if (element.hasCode())
12889      composeCodeableConcept(t, "Procedure", "code", element.getCode(), -1);
12890    if (element.hasSubject())
12891      composeReference(t, "Procedure", "subject", element.getSubject(), -1);
12892    if (element.hasContext())
12893      composeReference(t, "Procedure", "context", element.getContext(), -1);
12894    if (element.hasPerformed())
12895      composeType(t, "Procedure", "performed", element.getPerformed(), -1);
12896    if (element.hasRecorder())
12897      composeReference(t, "Procedure", "recorder", element.getRecorder(), -1);
12898    if (element.hasAsserter())
12899      composeReference(t, "Procedure", "asserter", element.getAsserter(), -1);
12900    for (int i = 0; i < element.getPerformer().size(); i++)
12901      composeProcedureProcedurePerformerComponent(t, "Procedure", "performer", element.getPerformer().get(i), i);
12902    if (element.hasLocation())
12903      composeReference(t, "Procedure", "location", element.getLocation(), -1);
12904    for (int i = 0; i < element.getReasonCode().size(); i++)
12905      composeCodeableConcept(t, "Procedure", "reasonCode", element.getReasonCode().get(i), i);
12906    for (int i = 0; i < element.getReasonReference().size(); i++)
12907      composeReference(t, "Procedure", "reasonReference", element.getReasonReference().get(i), i);
12908    for (int i = 0; i < element.getBodySite().size(); i++)
12909      composeCodeableConcept(t, "Procedure", "bodySite", element.getBodySite().get(i), i);
12910    if (element.hasOutcome())
12911      composeCodeableConcept(t, "Procedure", "outcome", element.getOutcome(), -1);
12912    for (int i = 0; i < element.getReport().size(); i++)
12913      composeReference(t, "Procedure", "report", element.getReport().get(i), i);
12914    for (int i = 0; i < element.getComplication().size(); i++)
12915      composeCodeableConcept(t, "Procedure", "complication", element.getComplication().get(i), i);
12916    for (int i = 0; i < element.getComplicationDetail().size(); i++)
12917      composeReference(t, "Procedure", "complicationDetail", element.getComplicationDetail().get(i), i);
12918    for (int i = 0; i < element.getFollowUp().size(); i++)
12919      composeCodeableConcept(t, "Procedure", "followUp", element.getFollowUp().get(i), i);
12920    for (int i = 0; i < element.getNote().size(); i++)
12921      composeAnnotation(t, "Procedure", "note", element.getNote().get(i), i);
12922    for (int i = 0; i < element.getFocalDevice().size(); i++)
12923      composeProcedureProcedureFocalDeviceComponent(t, "Procedure", "focalDevice", element.getFocalDevice().get(i), i);
12924    for (int i = 0; i < element.getUsedReference().size(); i++)
12925      composeReference(t, "Procedure", "usedReference", element.getUsedReference().get(i), i);
12926    for (int i = 0; i < element.getUsedCode().size(); i++)
12927      composeCodeableConcept(t, "Procedure", "usedCode", element.getUsedCode().get(i), i);
12928  }
12929
12930  protected void composeProcedureProcedurePerformerComponent(Complex parent, String parentType, String name, Procedure.ProcedurePerformerComponent element, int index) {
12931    if (element == null) 
12932      return;
12933    Complex t;
12934    if (Utilities.noString(parentType))
12935      t = parent;
12936    else {
12937      t = parent.predicate("fhir:"+parentType+'.'+name);
12938    }
12939    composeBackboneElement(t, "performer", name, element, index);
12940    if (element.hasFunction())
12941      composeCodeableConcept(t, "Procedure", "function", element.getFunction(), -1);
12942    if (element.hasActor())
12943      composeReference(t, "Procedure", "actor", element.getActor(), -1);
12944    if (element.hasOnBehalfOf())
12945      composeReference(t, "Procedure", "onBehalfOf", element.getOnBehalfOf(), -1);
12946  }
12947
12948  protected void composeProcedureProcedureFocalDeviceComponent(Complex parent, String parentType, String name, Procedure.ProcedureFocalDeviceComponent element, int index) {
12949    if (element == null) 
12950      return;
12951    Complex t;
12952    if (Utilities.noString(parentType))
12953      t = parent;
12954    else {
12955      t = parent.predicate("fhir:"+parentType+'.'+name);
12956    }
12957    composeBackboneElement(t, "focalDevice", name, element, index);
12958    if (element.hasAction())
12959      composeCodeableConcept(t, "Procedure", "action", element.getAction(), -1);
12960    if (element.hasManipulated())
12961      composeReference(t, "Procedure", "manipulated", element.getManipulated(), -1);
12962  }
12963
12964  protected void composeProcessRequest(Complex parent, String parentType, String name, ProcessRequest element, int index) {
12965    if (element == null) 
12966      return;
12967    Complex t;
12968    if (Utilities.noString(parentType))
12969      t = parent;
12970    else {
12971      t = parent.predicate("fhir:"+parentType+'.'+name);
12972    }
12973    composeDomainResource(t, "ProcessRequest", name, element, index);
12974    for (int i = 0; i < element.getIdentifier().size(); i++)
12975      composeIdentifier(t, "ProcessRequest", "identifier", element.getIdentifier().get(i), i);
12976    if (element.hasStatusElement())
12977      composeEnum(t, "ProcessRequest", "status", element.getStatusElement(), -1);
12978    if (element.hasActionElement())
12979      composeEnum(t, "ProcessRequest", "action", element.getActionElement(), -1);
12980    if (element.hasTarget())
12981      composeReference(t, "ProcessRequest", "target", element.getTarget(), -1);
12982    if (element.hasCreatedElement())
12983      composeDateTime(t, "ProcessRequest", "created", element.getCreatedElement(), -1);
12984    if (element.hasProvider())
12985      composeReference(t, "ProcessRequest", "provider", element.getProvider(), -1);
12986    if (element.hasRequest())
12987      composeReference(t, "ProcessRequest", "request", element.getRequest(), -1);
12988    if (element.hasResponse())
12989      composeReference(t, "ProcessRequest", "response", element.getResponse(), -1);
12990    if (element.hasNullifyElement())
12991      composeBoolean(t, "ProcessRequest", "nullify", element.getNullifyElement(), -1);
12992    if (element.hasReferenceElement())
12993      composeString(t, "ProcessRequest", "reference", element.getReferenceElement(), -1);
12994    for (int i = 0; i < element.getItem().size(); i++)
12995      composeProcessRequestItemsComponent(t, "ProcessRequest", "item", element.getItem().get(i), i);
12996    for (int i = 0; i < element.getInclude().size(); i++)
12997      composeString(t, "ProcessRequest", "include", element.getInclude().get(i), i);
12998    for (int i = 0; i < element.getExclude().size(); i++)
12999      composeString(t, "ProcessRequest", "exclude", element.getExclude().get(i), i);
13000    if (element.hasPeriod())
13001      composePeriod(t, "ProcessRequest", "period", element.getPeriod(), -1);
13002  }
13003
13004  protected void composeProcessRequestItemsComponent(Complex parent, String parentType, String name, ProcessRequest.ItemsComponent element, int index) {
13005    if (element == null) 
13006      return;
13007    Complex t;
13008    if (Utilities.noString(parentType))
13009      t = parent;
13010    else {
13011      t = parent.predicate("fhir:"+parentType+'.'+name);
13012    }
13013    composeBackboneElement(t, "item", name, element, index);
13014    if (element.hasSequenceLinkIdElement())
13015      composeInteger(t, "ProcessRequest", "sequenceLinkId", element.getSequenceLinkIdElement(), -1);
13016  }
13017
13018  protected void composeProcessResponse(Complex parent, String parentType, String name, ProcessResponse element, int index) {
13019    if (element == null) 
13020      return;
13021    Complex t;
13022    if (Utilities.noString(parentType))
13023      t = parent;
13024    else {
13025      t = parent.predicate("fhir:"+parentType+'.'+name);
13026    }
13027    composeDomainResource(t, "ProcessResponse", name, element, index);
13028    for (int i = 0; i < element.getIdentifier().size(); i++)
13029      composeIdentifier(t, "ProcessResponse", "identifier", element.getIdentifier().get(i), i);
13030    if (element.hasStatusElement())
13031      composeEnum(t, "ProcessResponse", "status", element.getStatusElement(), -1);
13032    if (element.hasCreatedElement())
13033      composeDateTime(t, "ProcessResponse", "created", element.getCreatedElement(), -1);
13034    if (element.hasOrganization())
13035      composeReference(t, "ProcessResponse", "organization", element.getOrganization(), -1);
13036    if (element.hasRequest())
13037      composeReference(t, "ProcessResponse", "request", element.getRequest(), -1);
13038    if (element.hasOutcomeElement())
13039      composeEnum(t, "ProcessResponse", "outcome", element.getOutcomeElement(), -1);
13040    if (element.hasDispositionElement())
13041      composeString(t, "ProcessResponse", "disposition", element.getDispositionElement(), -1);
13042    if (element.hasRequestProvider())
13043      composeReference(t, "ProcessResponse", "requestProvider", element.getRequestProvider(), -1);
13044    if (element.hasForm())
13045      composeCodeableConcept(t, "ProcessResponse", "form", element.getForm(), -1);
13046    for (int i = 0; i < element.getProcessNote().size(); i++)
13047      composeProcessResponseProcessResponseProcessNoteComponent(t, "ProcessResponse", "processNote", element.getProcessNote().get(i), i);
13048    for (int i = 0; i < element.getError().size(); i++)
13049      composeCodeableConcept(t, "ProcessResponse", "error", element.getError().get(i), i);
13050    for (int i = 0; i < element.getCommunicationRequest().size(); i++)
13051      composeReference(t, "ProcessResponse", "communicationRequest", element.getCommunicationRequest().get(i), i);
13052  }
13053
13054  protected void composeProcessResponseProcessResponseProcessNoteComponent(Complex parent, String parentType, String name, ProcessResponse.ProcessResponseProcessNoteComponent element, int index) {
13055    if (element == null) 
13056      return;
13057    Complex t;
13058    if (Utilities.noString(parentType))
13059      t = parent;
13060    else {
13061      t = parent.predicate("fhir:"+parentType+'.'+name);
13062    }
13063    composeBackboneElement(t, "processNote", name, element, index);
13064    if (element.hasTypeElement())
13065      composeEnum(t, "ProcessResponse", "type", element.getTypeElement(), -1);
13066    if (element.hasTextElement())
13067      composeString(t, "ProcessResponse", "text", element.getTextElement(), -1);
13068  }
13069
13070  protected void composeProvenance(Complex parent, String parentType, String name, Provenance element, int index) {
13071    if (element == null) 
13072      return;
13073    Complex t;
13074    if (Utilities.noString(parentType))
13075      t = parent;
13076    else {
13077      t = parent.predicate("fhir:"+parentType+'.'+name);
13078    }
13079    composeDomainResource(t, "Provenance", name, element, index);
13080    for (int i = 0; i < element.getTarget().size(); i++)
13081      composeReference(t, "Provenance", "target", element.getTarget().get(i), i);
13082    if (element.hasOccurred())
13083      composeType(t, "Provenance", "occurred", element.getOccurred(), -1);
13084    if (element.hasRecordedElement())
13085      composeInstant(t, "Provenance", "recorded", element.getRecordedElement(), -1);
13086    for (int i = 0; i < element.getPolicy().size(); i++)
13087      composeUri(t, "Provenance", "policy", element.getPolicy().get(i), i);
13088    if (element.hasLocation())
13089      composeReference(t, "Provenance", "location", element.getLocation(), -1);
13090    for (int i = 0; i < element.getReason().size(); i++)
13091      composeCodeableConcept(t, "Provenance", "reason", element.getReason().get(i), i);
13092    if (element.hasActivity())
13093      composeCodeableConcept(t, "Provenance", "activity", element.getActivity(), -1);
13094    for (int i = 0; i < element.getAgent().size(); i++)
13095      composeProvenanceProvenanceAgentComponent(t, "Provenance", "agent", element.getAgent().get(i), i);
13096    for (int i = 0; i < element.getEntity().size(); i++)
13097      composeProvenanceProvenanceEntityComponent(t, "Provenance", "entity", element.getEntity().get(i), i);
13098    for (int i = 0; i < element.getSignature().size(); i++)
13099      composeSignature(t, "Provenance", "signature", element.getSignature().get(i), i);
13100  }
13101
13102  protected void composeProvenanceProvenanceAgentComponent(Complex parent, String parentType, String name, Provenance.ProvenanceAgentComponent element, int index) {
13103    if (element == null) 
13104      return;
13105    Complex t;
13106    if (Utilities.noString(parentType))
13107      t = parent;
13108    else {
13109      t = parent.predicate("fhir:"+parentType+'.'+name);
13110    }
13111    composeBackboneElement(t, "agent", name, element, index);
13112    if (element.hasType())
13113      composeCodeableConcept(t, "Provenance", "type", element.getType(), -1);
13114    for (int i = 0; i < element.getRole().size(); i++)
13115      composeCodeableConcept(t, "Provenance", "role", element.getRole().get(i), i);
13116    if (element.hasWho())
13117      composeReference(t, "Provenance", "who", element.getWho(), -1);
13118    if (element.hasOnBehalfOf())
13119      composeReference(t, "Provenance", "onBehalfOf", element.getOnBehalfOf(), -1);
13120  }
13121
13122  protected void composeProvenanceProvenanceEntityComponent(Complex parent, String parentType, String name, Provenance.ProvenanceEntityComponent element, int index) {
13123    if (element == null) 
13124      return;
13125    Complex t;
13126    if (Utilities.noString(parentType))
13127      t = parent;
13128    else {
13129      t = parent.predicate("fhir:"+parentType+'.'+name);
13130    }
13131    composeBackboneElement(t, "entity", name, element, index);
13132    if (element.hasRoleElement())
13133      composeEnum(t, "Provenance", "role", element.getRoleElement(), -1);
13134    if (element.hasWhat())
13135      composeReference(t, "Provenance", "what", element.getWhat(), -1);
13136    for (int i = 0; i < element.getAgent().size(); i++)
13137      composeProvenanceProvenanceAgentComponent(t, "Provenance", "agent", element.getAgent().get(i), i);
13138  }
13139
13140  protected void composeQuestionnaire(Complex parent, String parentType, String name, Questionnaire element, int index) {
13141    if (element == null) 
13142      return;
13143    Complex t;
13144    if (Utilities.noString(parentType))
13145      t = parent;
13146    else {
13147      t = parent.predicate("fhir:"+parentType+'.'+name);
13148    }
13149    composeDomainResource(t, "Questionnaire", name, element, index);
13150    if (element.hasUrlElement())
13151      composeUri(t, "Questionnaire", "url", element.getUrlElement(), -1);
13152    for (int i = 0; i < element.getIdentifier().size(); i++)
13153      composeIdentifier(t, "Questionnaire", "identifier", element.getIdentifier().get(i), i);
13154    if (element.hasVersionElement())
13155      composeString(t, "Questionnaire", "version", element.getVersionElement(), -1);
13156    if (element.hasNameElement())
13157      composeString(t, "Questionnaire", "name", element.getNameElement(), -1);
13158    if (element.hasTitleElement())
13159      composeString(t, "Questionnaire", "title", element.getTitleElement(), -1);
13160    for (int i = 0; i < element.getDerivedFrom().size(); i++)
13161      composeCanonical(t, "Questionnaire", "derivedFrom", element.getDerivedFrom().get(i), i);
13162    if (element.hasStatusElement())
13163      composeEnum(t, "Questionnaire", "status", element.getStatusElement(), -1);
13164    if (element.hasExperimentalElement())
13165      composeBoolean(t, "Questionnaire", "experimental", element.getExperimentalElement(), -1);
13166    for (int i = 0; i < element.getSubjectType().size(); i++)
13167      composeCode(t, "Questionnaire", "subjectType", element.getSubjectType().get(i), i);
13168    if (element.hasDateElement())
13169      composeDateTime(t, "Questionnaire", "date", element.getDateElement(), -1);
13170    if (element.hasPublisherElement())
13171      composeString(t, "Questionnaire", "publisher", element.getPublisherElement(), -1);
13172    for (int i = 0; i < element.getContact().size(); i++)
13173      composeContactDetail(t, "Questionnaire", "contact", element.getContact().get(i), i);
13174    if (element.hasDescriptionElement())
13175      composeMarkdown(t, "Questionnaire", "description", element.getDescriptionElement(), -1);
13176    for (int i = 0; i < element.getUseContext().size(); i++)
13177      composeUsageContext(t, "Questionnaire", "useContext", element.getUseContext().get(i), i);
13178    for (int i = 0; i < element.getJurisdiction().size(); i++)
13179      composeCodeableConcept(t, "Questionnaire", "jurisdiction", element.getJurisdiction().get(i), i);
13180    if (element.hasPurposeElement())
13181      composeMarkdown(t, "Questionnaire", "purpose", element.getPurposeElement(), -1);
13182    if (element.hasCopyrightElement())
13183      composeMarkdown(t, "Questionnaire", "copyright", element.getCopyrightElement(), -1);
13184    if (element.hasApprovalDateElement())
13185      composeDate(t, "Questionnaire", "approvalDate", element.getApprovalDateElement(), -1);
13186    if (element.hasLastReviewDateElement())
13187      composeDate(t, "Questionnaire", "lastReviewDate", element.getLastReviewDateElement(), -1);
13188    if (element.hasEffectivePeriod())
13189      composePeriod(t, "Questionnaire", "effectivePeriod", element.getEffectivePeriod(), -1);
13190    for (int i = 0; i < element.getCode().size(); i++)
13191      composeCoding(t, "Questionnaire", "code", element.getCode().get(i), i);
13192    for (int i = 0; i < element.getItem().size(); i++)
13193      composeQuestionnaireQuestionnaireItemComponent(t, "Questionnaire", "item", element.getItem().get(i), i);
13194  }
13195
13196  protected void composeQuestionnaireQuestionnaireItemComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemComponent element, int index) {
13197    if (element == null) 
13198      return;
13199    Complex t;
13200    if (Utilities.noString(parentType))
13201      t = parent;
13202    else {
13203      t = parent.predicate("fhir:"+parentType+'.'+name);
13204    }
13205    composeBackboneElement(t, "item", name, element, index);
13206    if (element.hasLinkIdElement())
13207      composeString(t, "Questionnaire", "linkId", element.getLinkIdElement(), -1);
13208    if (element.hasDefinitionElement())
13209      composeUri(t, "Questionnaire", "definition", element.getDefinitionElement(), -1);
13210    for (int i = 0; i < element.getCode().size(); i++)
13211      composeCoding(t, "Questionnaire", "code", element.getCode().get(i), i);
13212    if (element.hasPrefixElement())
13213      composeString(t, "Questionnaire", "prefix", element.getPrefixElement(), -1);
13214    if (element.hasTextElement())
13215      composeString(t, "Questionnaire", "text", element.getTextElement(), -1);
13216    if (element.hasTypeElement())
13217      composeEnum(t, "Questionnaire", "type", element.getTypeElement(), -1);
13218    for (int i = 0; i < element.getEnableWhen().size(); i++)
13219      composeQuestionnaireQuestionnaireItemEnableWhenComponent(t, "Questionnaire", "enableWhen", element.getEnableWhen().get(i), i);
13220    if (element.hasEnableBehaviorElement())
13221      composeEnum(t, "Questionnaire", "enableBehavior", element.getEnableBehaviorElement(), -1);
13222    if (element.hasRequiredElement())
13223      composeBoolean(t, "Questionnaire", "required", element.getRequiredElement(), -1);
13224    if (element.hasRepeatsElement())
13225      composeBoolean(t, "Questionnaire", "repeats", element.getRepeatsElement(), -1);
13226    if (element.hasReadOnlyElement())
13227      composeBoolean(t, "Questionnaire", "readOnly", element.getReadOnlyElement(), -1);
13228    if (element.hasMaxLengthElement())
13229      composeInteger(t, "Questionnaire", "maxLength", element.getMaxLengthElement(), -1);
13230    if (element.hasAnswerValueSetElement())
13231      composeCanonical(t, "Questionnaire", "answerValueSet", element.getAnswerValueSetElement(), -1);
13232    for (int i = 0; i < element.getAnswerOption().size(); i++)
13233      composeQuestionnaireQuestionnaireItemAnswerOptionComponent(t, "Questionnaire", "answerOption", element.getAnswerOption().get(i), i);
13234    for (int i = 0; i < element.getInitial().size(); i++)
13235      composeQuestionnaireQuestionnaireItemInitialComponent(t, "Questionnaire", "initial", element.getInitial().get(i), i);
13236    for (int i = 0; i < element.getItem().size(); i++)
13237      composeQuestionnaireQuestionnaireItemComponent(t, "Questionnaire", "item", element.getItem().get(i), i);
13238  }
13239
13240  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemEnableWhenComponent element, int index) {
13241    if (element == null) 
13242      return;
13243    Complex t;
13244    if (Utilities.noString(parentType))
13245      t = parent;
13246    else {
13247      t = parent.predicate("fhir:"+parentType+'.'+name);
13248    }
13249    composeBackboneElement(t, "enableWhen", name, element, index);
13250    if (element.hasQuestionElement())
13251      composeString(t, "Questionnaire", "question", element.getQuestionElement(), -1);
13252    if (element.hasOperatorElement())
13253      composeEnum(t, "Questionnaire", "operator", element.getOperatorElement(), -1);
13254    if (element.hasAnswer())
13255      composeType(t, "Questionnaire", "answer", element.getAnswer(), -1);
13256  }
13257
13258  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element, int index) {
13259    if (element == null) 
13260      return;
13261    Complex t;
13262    if (Utilities.noString(parentType))
13263      t = parent;
13264    else {
13265      t = parent.predicate("fhir:"+parentType+'.'+name);
13266    }
13267    composeBackboneElement(t, "answerOption", name, element, index);
13268    if (element.hasValue())
13269      composeType(t, "Questionnaire", "value", element.getValue(), -1);
13270    if (element.hasInitialSelectedElement())
13271      composeBoolean(t, "Questionnaire", "initialSelected", element.getInitialSelectedElement(), -1);
13272  }
13273
13274  protected void composeQuestionnaireQuestionnaireItemInitialComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemInitialComponent element, int index) {
13275    if (element == null) 
13276      return;
13277    Complex t;
13278    if (Utilities.noString(parentType))
13279      t = parent;
13280    else {
13281      t = parent.predicate("fhir:"+parentType+'.'+name);
13282    }
13283    composeBackboneElement(t, "initial", name, element, index);
13284    if (element.hasValue())
13285      composeType(t, "Questionnaire", "value", element.getValue(), -1);
13286  }
13287
13288  protected void composeQuestionnaireResponse(Complex parent, String parentType, String name, QuestionnaireResponse element, int index) {
13289    if (element == null) 
13290      return;
13291    Complex t;
13292    if (Utilities.noString(parentType))
13293      t = parent;
13294    else {
13295      t = parent.predicate("fhir:"+parentType+'.'+name);
13296    }
13297    composeDomainResource(t, "QuestionnaireResponse", name, element, index);
13298    if (element.hasIdentifier())
13299      composeIdentifier(t, "QuestionnaireResponse", "identifier", element.getIdentifier(), -1);
13300    for (int i = 0; i < element.getBasedOn().size(); i++)
13301      composeReference(t, "QuestionnaireResponse", "basedOn", element.getBasedOn().get(i), i);
13302    for (int i = 0; i < element.getPartOf().size(); i++)
13303      composeReference(t, "QuestionnaireResponse", "partOf", element.getPartOf().get(i), i);
13304    if (element.hasQuestionnaireElement())
13305      composeCanonical(t, "QuestionnaireResponse", "questionnaire", element.getQuestionnaireElement(), -1);
13306    if (element.hasStatusElement())
13307      composeEnum(t, "QuestionnaireResponse", "status", element.getStatusElement(), -1);
13308    if (element.hasSubject())
13309      composeReference(t, "QuestionnaireResponse", "subject", element.getSubject(), -1);
13310    if (element.hasContext())
13311      composeReference(t, "QuestionnaireResponse", "context", element.getContext(), -1);
13312    if (element.hasAuthoredElement())
13313      composeDateTime(t, "QuestionnaireResponse", "authored", element.getAuthoredElement(), -1);
13314    if (element.hasAuthor())
13315      composeReference(t, "QuestionnaireResponse", "author", element.getAuthor(), -1);
13316    if (element.hasSource())
13317      composeReference(t, "QuestionnaireResponse", "source", element.getSource(), -1);
13318    for (int i = 0; i < element.getItem().size(); i++)
13319      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
13320  }
13321
13322  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(Complex parent, String parentType, String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element, int index) {
13323    if (element == null) 
13324      return;
13325    Complex t;
13326    if (Utilities.noString(parentType))
13327      t = parent;
13328    else {
13329      t = parent.predicate("fhir:"+parentType+'.'+name);
13330    }
13331    composeBackboneElement(t, "item", name, element, index);
13332    if (element.hasLinkIdElement())
13333      composeString(t, "QuestionnaireResponse", "linkId", element.getLinkIdElement(), -1);
13334    if (element.hasDefinitionElement())
13335      composeUri(t, "QuestionnaireResponse", "definition", element.getDefinitionElement(), -1);
13336    if (element.hasTextElement())
13337      composeString(t, "QuestionnaireResponse", "text", element.getTextElement(), -1);
13338    for (int i = 0; i < element.getAnswer().size(); i++)
13339      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(t, "QuestionnaireResponse", "answer", element.getAnswer().get(i), i);
13340    for (int i = 0; i < element.getItem().size(); i++)
13341      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
13342  }
13343
13344  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(Complex parent, String parentType, String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element, int index) {
13345    if (element == null) 
13346      return;
13347    Complex t;
13348    if (Utilities.noString(parentType))
13349      t = parent;
13350    else {
13351      t = parent.predicate("fhir:"+parentType+'.'+name);
13352    }
13353    composeBackboneElement(t, "answer", name, element, index);
13354    if (element.hasValue())
13355      composeType(t, "QuestionnaireResponse", "value", element.getValue(), -1);
13356    for (int i = 0; i < element.getItem().size(); i++)
13357      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
13358  }
13359
13360  protected void composeRelatedPerson(Complex parent, String parentType, String name, RelatedPerson element, int index) {
13361    if (element == null) 
13362      return;
13363    Complex t;
13364    if (Utilities.noString(parentType))
13365      t = parent;
13366    else {
13367      t = parent.predicate("fhir:"+parentType+'.'+name);
13368    }
13369    composeDomainResource(t, "RelatedPerson", name, element, index);
13370    for (int i = 0; i < element.getIdentifier().size(); i++)
13371      composeIdentifier(t, "RelatedPerson", "identifier", element.getIdentifier().get(i), i);
13372    if (element.hasActiveElement())
13373      composeBoolean(t, "RelatedPerson", "active", element.getActiveElement(), -1);
13374    if (element.hasPatient())
13375      composeReference(t, "RelatedPerson", "patient", element.getPatient(), -1);
13376    for (int i = 0; i < element.getRelationship().size(); i++)
13377      composeCodeableConcept(t, "RelatedPerson", "relationship", element.getRelationship().get(i), i);
13378    for (int i = 0; i < element.getName().size(); i++)
13379      composeHumanName(t, "RelatedPerson", "name", element.getName().get(i), i);
13380    for (int i = 0; i < element.getTelecom().size(); i++)
13381      composeContactPoint(t, "RelatedPerson", "telecom", element.getTelecom().get(i), i);
13382    if (element.hasGenderElement())
13383      composeEnum(t, "RelatedPerson", "gender", element.getGenderElement(), -1);
13384    if (element.hasBirthDateElement())
13385      composeDate(t, "RelatedPerson", "birthDate", element.getBirthDateElement(), -1);
13386    for (int i = 0; i < element.getAddress().size(); i++)
13387      composeAddress(t, "RelatedPerson", "address", element.getAddress().get(i), i);
13388    for (int i = 0; i < element.getPhoto().size(); i++)
13389      composeAttachment(t, "RelatedPerson", "photo", element.getPhoto().get(i), i);
13390    if (element.hasPeriod())
13391      composePeriod(t, "RelatedPerson", "period", element.getPeriod(), -1);
13392  }
13393
13394  protected void composeRequestGroup(Complex parent, String parentType, String name, RequestGroup element, int index) {
13395    if (element == null) 
13396      return;
13397    Complex t;
13398    if (Utilities.noString(parentType))
13399      t = parent;
13400    else {
13401      t = parent.predicate("fhir:"+parentType+'.'+name);
13402    }
13403    composeDomainResource(t, "RequestGroup", name, element, index);
13404    for (int i = 0; i < element.getIdentifier().size(); i++)
13405      composeIdentifier(t, "RequestGroup", "identifier", element.getIdentifier().get(i), i);
13406    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
13407      composeCanonical(t, "RequestGroup", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
13408    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
13409      composeUri(t, "RequestGroup", "instantiatesUri", element.getInstantiatesUri().get(i), i);
13410    for (int i = 0; i < element.getBasedOn().size(); i++)
13411      composeReference(t, "RequestGroup", "basedOn", element.getBasedOn().get(i), i);
13412    for (int i = 0; i < element.getReplaces().size(); i++)
13413      composeReference(t, "RequestGroup", "replaces", element.getReplaces().get(i), i);
13414    if (element.hasGroupIdentifier())
13415      composeIdentifier(t, "RequestGroup", "groupIdentifier", element.getGroupIdentifier(), -1);
13416    if (element.hasStatusElement())
13417      composeEnum(t, "RequestGroup", "status", element.getStatusElement(), -1);
13418    if (element.hasIntentElement())
13419      composeEnum(t, "RequestGroup", "intent", element.getIntentElement(), -1);
13420    if (element.hasPriorityElement())
13421      composeEnum(t, "RequestGroup", "priority", element.getPriorityElement(), -1);
13422    if (element.hasCode())
13423      composeCodeableConcept(t, "RequestGroup", "code", element.getCode(), -1);
13424    if (element.hasSubject())
13425      composeReference(t, "RequestGroup", "subject", element.getSubject(), -1);
13426    if (element.hasContext())
13427      composeReference(t, "RequestGroup", "context", element.getContext(), -1);
13428    if (element.hasAuthoredOnElement())
13429      composeDateTime(t, "RequestGroup", "authoredOn", element.getAuthoredOnElement(), -1);
13430    if (element.hasAuthor())
13431      composeReference(t, "RequestGroup", "author", element.getAuthor(), -1);
13432    for (int i = 0; i < element.getReasonCode().size(); i++)
13433      composeCodeableConcept(t, "RequestGroup", "reasonCode", element.getReasonCode().get(i), i);
13434    for (int i = 0; i < element.getReasonReference().size(); i++)
13435      composeReference(t, "RequestGroup", "reasonReference", element.getReasonReference().get(i), i);
13436    for (int i = 0; i < element.getNote().size(); i++)
13437      composeAnnotation(t, "RequestGroup", "note", element.getNote().get(i), i);
13438    for (int i = 0; i < element.getAction().size(); i++)
13439      composeRequestGroupRequestGroupActionComponent(t, "RequestGroup", "action", element.getAction().get(i), i);
13440  }
13441
13442  protected void composeRequestGroupRequestGroupActionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionComponent element, int index) {
13443    if (element == null) 
13444      return;
13445    Complex t;
13446    if (Utilities.noString(parentType))
13447      t = parent;
13448    else {
13449      t = parent.predicate("fhir:"+parentType+'.'+name);
13450    }
13451    composeBackboneElement(t, "action", name, element, index);
13452    if (element.hasPrefixElement())
13453      composeString(t, "RequestGroup", "prefix", element.getPrefixElement(), -1);
13454    if (element.hasTitleElement())
13455      composeString(t, "RequestGroup", "title", element.getTitleElement(), -1);
13456    if (element.hasDescriptionElement())
13457      composeString(t, "RequestGroup", "description", element.getDescriptionElement(), -1);
13458    if (element.hasTextEquivalentElement())
13459      composeString(t, "RequestGroup", "textEquivalent", element.getTextEquivalentElement(), -1);
13460    if (element.hasPriorityElement())
13461      composeEnum(t, "RequestGroup", "priority", element.getPriorityElement(), -1);
13462    for (int i = 0; i < element.getCode().size(); i++)
13463      composeCodeableConcept(t, "RequestGroup", "code", element.getCode().get(i), i);
13464    for (int i = 0; i < element.getDocumentation().size(); i++)
13465      composeRelatedArtifact(t, "RequestGroup", "documentation", element.getDocumentation().get(i), i);
13466    for (int i = 0; i < element.getCondition().size(); i++)
13467      composeRequestGroupRequestGroupActionConditionComponent(t, "RequestGroup", "condition", element.getCondition().get(i), i);
13468    for (int i = 0; i < element.getRelatedAction().size(); i++)
13469      composeRequestGroupRequestGroupActionRelatedActionComponent(t, "RequestGroup", "relatedAction", element.getRelatedAction().get(i), i);
13470    if (element.hasTiming())
13471      composeType(t, "RequestGroup", "timing", element.getTiming(), -1);
13472    for (int i = 0; i < element.getParticipant().size(); i++)
13473      composeReference(t, "RequestGroup", "participant", element.getParticipant().get(i), i);
13474    if (element.hasType())
13475      composeCodeableConcept(t, "RequestGroup", "type", element.getType(), -1);
13476    if (element.hasGroupingBehaviorElement())
13477      composeEnum(t, "RequestGroup", "groupingBehavior", element.getGroupingBehaviorElement(), -1);
13478    if (element.hasSelectionBehaviorElement())
13479      composeEnum(t, "RequestGroup", "selectionBehavior", element.getSelectionBehaviorElement(), -1);
13480    if (element.hasRequiredBehaviorElement())
13481      composeEnum(t, "RequestGroup", "requiredBehavior", element.getRequiredBehaviorElement(), -1);
13482    if (element.hasPrecheckBehaviorElement())
13483      composeEnum(t, "RequestGroup", "precheckBehavior", element.getPrecheckBehaviorElement(), -1);
13484    if (element.hasCardinalityBehaviorElement())
13485      composeEnum(t, "RequestGroup", "cardinalityBehavior", element.getCardinalityBehaviorElement(), -1);
13486    if (element.hasResource())
13487      composeReference(t, "RequestGroup", "resource", element.getResource(), -1);
13488    for (int i = 0; i < element.getAction().size(); i++)
13489      composeRequestGroupRequestGroupActionComponent(t, "RequestGroup", "action", element.getAction().get(i), i);
13490  }
13491
13492  protected void composeRequestGroupRequestGroupActionConditionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionConditionComponent element, int index) {
13493    if (element == null) 
13494      return;
13495    Complex t;
13496    if (Utilities.noString(parentType))
13497      t = parent;
13498    else {
13499      t = parent.predicate("fhir:"+parentType+'.'+name);
13500    }
13501    composeBackboneElement(t, "condition", name, element, index);
13502    if (element.hasKindElement())
13503      composeEnum(t, "RequestGroup", "kind", element.getKindElement(), -1);
13504    if (element.hasDescriptionElement())
13505      composeString(t, "RequestGroup", "description", element.getDescriptionElement(), -1);
13506    if (element.hasLanguageElement())
13507      composeString(t, "RequestGroup", "language", element.getLanguageElement(), -1);
13508    if (element.hasExpressionElement())
13509      composeString(t, "RequestGroup", "expression", element.getExpressionElement(), -1);
13510  }
13511
13512  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionRelatedActionComponent element, int index) {
13513    if (element == null) 
13514      return;
13515    Complex t;
13516    if (Utilities.noString(parentType))
13517      t = parent;
13518    else {
13519      t = parent.predicate("fhir:"+parentType+'.'+name);
13520    }
13521    composeBackboneElement(t, "relatedAction", name, element, index);
13522    if (element.hasActionIdElement())
13523      composeId(t, "RequestGroup", "actionId", element.getActionIdElement(), -1);
13524    if (element.hasRelationshipElement())
13525      composeEnum(t, "RequestGroup", "relationship", element.getRelationshipElement(), -1);
13526    if (element.hasOffset())
13527      composeType(t, "RequestGroup", "offset", element.getOffset(), -1);
13528  }
13529
13530  protected void composeResearchStudy(Complex parent, String parentType, String name, ResearchStudy element, int index) {
13531    if (element == null) 
13532      return;
13533    Complex t;
13534    if (Utilities.noString(parentType))
13535      t = parent;
13536    else {
13537      t = parent.predicate("fhir:"+parentType+'.'+name);
13538    }
13539    composeDomainResource(t, "ResearchStudy", name, element, index);
13540    for (int i = 0; i < element.getIdentifier().size(); i++)
13541      composeIdentifier(t, "ResearchStudy", "identifier", element.getIdentifier().get(i), i);
13542    if (element.hasTitleElement())
13543      composeString(t, "ResearchStudy", "title", element.getTitleElement(), -1);
13544    for (int i = 0; i < element.getProtocol().size(); i++)
13545      composeReference(t, "ResearchStudy", "protocol", element.getProtocol().get(i), i);
13546    for (int i = 0; i < element.getPartOf().size(); i++)
13547      composeReference(t, "ResearchStudy", "partOf", element.getPartOf().get(i), i);
13548    if (element.hasStatusElement())
13549      composeEnum(t, "ResearchStudy", "status", element.getStatusElement(), -1);
13550    if (element.hasPrimaryPurposeType())
13551      composeCodeableConcept(t, "ResearchStudy", "primaryPurposeType", element.getPrimaryPurposeType(), -1);
13552    if (element.hasPhase())
13553      composeCodeableConcept(t, "ResearchStudy", "phase", element.getPhase(), -1);
13554    for (int i = 0; i < element.getCategory().size(); i++)
13555      composeCodeableConcept(t, "ResearchStudy", "category", element.getCategory().get(i), i);
13556    for (int i = 0; i < element.getFocus().size(); i++)
13557      composeCodeableConcept(t, "ResearchStudy", "focus", element.getFocus().get(i), i);
13558    for (int i = 0; i < element.getCondition().size(); i++)
13559      composeCodeableConcept(t, "ResearchStudy", "condition", element.getCondition().get(i), i);
13560    for (int i = 0; i < element.getContact().size(); i++)
13561      composeContactDetail(t, "ResearchStudy", "contact", element.getContact().get(i), i);
13562    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
13563      composeRelatedArtifact(t, "ResearchStudy", "relatedArtifact", element.getRelatedArtifact().get(i), i);
13564    for (int i = 0; i < element.getKeyword().size(); i++)
13565      composeCodeableConcept(t, "ResearchStudy", "keyword", element.getKeyword().get(i), i);
13566    for (int i = 0; i < element.getLocation().size(); i++)
13567      composeCodeableConcept(t, "ResearchStudy", "location", element.getLocation().get(i), i);
13568    if (element.hasDescriptionElement())
13569      composeMarkdown(t, "ResearchStudy", "description", element.getDescriptionElement(), -1);
13570    for (int i = 0; i < element.getEnrollment().size(); i++)
13571      composeReference(t, "ResearchStudy", "enrollment", element.getEnrollment().get(i), i);
13572    if (element.hasPeriod())
13573      composePeriod(t, "ResearchStudy", "period", element.getPeriod(), -1);
13574    if (element.hasSponsor())
13575      composeReference(t, "ResearchStudy", "sponsor", element.getSponsor(), -1);
13576    if (element.hasPrincipalInvestigator())
13577      composeReference(t, "ResearchStudy", "principalInvestigator", element.getPrincipalInvestigator(), -1);
13578    for (int i = 0; i < element.getSite().size(); i++)
13579      composeReference(t, "ResearchStudy", "site", element.getSite().get(i), i);
13580    if (element.hasReasonStopped())
13581      composeCodeableConcept(t, "ResearchStudy", "reasonStopped", element.getReasonStopped(), -1);
13582    for (int i = 0; i < element.getNote().size(); i++)
13583      composeAnnotation(t, "ResearchStudy", "note", element.getNote().get(i), i);
13584    for (int i = 0; i < element.getArm().size(); i++)
13585      composeResearchStudyResearchStudyArmComponent(t, "ResearchStudy", "arm", element.getArm().get(i), i);
13586    for (int i = 0; i < element.getObjective().size(); i++)
13587      composeResearchStudyResearchStudyObjectiveComponent(t, "ResearchStudy", "objective", element.getObjective().get(i), i);
13588  }
13589
13590  protected void composeResearchStudyResearchStudyArmComponent(Complex parent, String parentType, String name, ResearchStudy.ResearchStudyArmComponent element, int index) {
13591    if (element == null) 
13592      return;
13593    Complex t;
13594    if (Utilities.noString(parentType))
13595      t = parent;
13596    else {
13597      t = parent.predicate("fhir:"+parentType+'.'+name);
13598    }
13599    composeBackboneElement(t, "arm", name, element, index);
13600    if (element.hasNameElement())
13601      composeString(t, "ResearchStudy", "name", element.getNameElement(), -1);
13602    if (element.hasType())
13603      composeCodeableConcept(t, "ResearchStudy", "type", element.getType(), -1);
13604    if (element.hasDescriptionElement())
13605      composeString(t, "ResearchStudy", "description", element.getDescriptionElement(), -1);
13606  }
13607
13608  protected void composeResearchStudyResearchStudyObjectiveComponent(Complex parent, String parentType, String name, ResearchStudy.ResearchStudyObjectiveComponent element, int index) {
13609    if (element == null) 
13610      return;
13611    Complex t;
13612    if (Utilities.noString(parentType))
13613      t = parent;
13614    else {
13615      t = parent.predicate("fhir:"+parentType+'.'+name);
13616    }
13617    composeBackboneElement(t, "objective", name, element, index);
13618    if (element.hasNameElement())
13619      composeString(t, "ResearchStudy", "name", element.getNameElement(), -1);
13620    if (element.hasType())
13621      composeCodeableConcept(t, "ResearchStudy", "type", element.getType(), -1);
13622  }
13623
13624  protected void composeResearchSubject(Complex parent, String parentType, String name, ResearchSubject element, int index) {
13625    if (element == null) 
13626      return;
13627    Complex t;
13628    if (Utilities.noString(parentType))
13629      t = parent;
13630    else {
13631      t = parent.predicate("fhir:"+parentType+'.'+name);
13632    }
13633    composeDomainResource(t, "ResearchSubject", name, element, index);
13634    for (int i = 0; i < element.getIdentifier().size(); i++)
13635      composeIdentifier(t, "ResearchSubject", "identifier", element.getIdentifier().get(i), i);
13636    if (element.hasStatusElement())
13637      composeEnum(t, "ResearchSubject", "status", element.getStatusElement(), -1);
13638    if (element.hasPeriod())
13639      composePeriod(t, "ResearchSubject", "period", element.getPeriod(), -1);
13640    if (element.hasStudy())
13641      composeReference(t, "ResearchSubject", "study", element.getStudy(), -1);
13642    if (element.hasIndividual())
13643      composeReference(t, "ResearchSubject", "individual", element.getIndividual(), -1);
13644    if (element.hasAssignedArmElement())
13645      composeString(t, "ResearchSubject", "assignedArm", element.getAssignedArmElement(), -1);
13646    if (element.hasActualArmElement())
13647      composeString(t, "ResearchSubject", "actualArm", element.getActualArmElement(), -1);
13648    if (element.hasConsent())
13649      composeReference(t, "ResearchSubject", "consent", element.getConsent(), -1);
13650  }
13651
13652  protected void composeRiskAssessment(Complex parent, String parentType, String name, RiskAssessment element, int index) {
13653    if (element == null) 
13654      return;
13655    Complex t;
13656    if (Utilities.noString(parentType))
13657      t = parent;
13658    else {
13659      t = parent.predicate("fhir:"+parentType+'.'+name);
13660    }
13661    composeDomainResource(t, "RiskAssessment", name, element, index);
13662    for (int i = 0; i < element.getIdentifier().size(); i++)
13663      composeIdentifier(t, "RiskAssessment", "identifier", element.getIdentifier().get(i), i);
13664    if (element.hasBasedOn())
13665      composeReference(t, "RiskAssessment", "basedOn", element.getBasedOn(), -1);
13666    if (element.hasParent())
13667      composeReference(t, "RiskAssessment", "parent", element.getParent(), -1);
13668    if (element.hasStatusElement())
13669      composeEnum(t, "RiskAssessment", "status", element.getStatusElement(), -1);
13670    if (element.hasMethod())
13671      composeCodeableConcept(t, "RiskAssessment", "method", element.getMethod(), -1);
13672    if (element.hasCode())
13673      composeCodeableConcept(t, "RiskAssessment", "code", element.getCode(), -1);
13674    if (element.hasSubject())
13675      composeReference(t, "RiskAssessment", "subject", element.getSubject(), -1);
13676    if (element.hasContext())
13677      composeReference(t, "RiskAssessment", "context", element.getContext(), -1);
13678    if (element.hasOccurrence())
13679      composeType(t, "RiskAssessment", "occurrence", element.getOccurrence(), -1);
13680    if (element.hasCondition())
13681      composeReference(t, "RiskAssessment", "condition", element.getCondition(), -1);
13682    if (element.hasPerformer())
13683      composeReference(t, "RiskAssessment", "performer", element.getPerformer(), -1);
13684    for (int i = 0; i < element.getReasonCode().size(); i++)
13685      composeCodeableConcept(t, "RiskAssessment", "reasonCode", element.getReasonCode().get(i), i);
13686    for (int i = 0; i < element.getReasonReference().size(); i++)
13687      composeReference(t, "RiskAssessment", "reasonReference", element.getReasonReference().get(i), i);
13688    for (int i = 0; i < element.getBasis().size(); i++)
13689      composeReference(t, "RiskAssessment", "basis", element.getBasis().get(i), i);
13690    for (int i = 0; i < element.getPrediction().size(); i++)
13691      composeRiskAssessmentRiskAssessmentPredictionComponent(t, "RiskAssessment", "prediction", element.getPrediction().get(i), i);
13692    if (element.hasMitigationElement())
13693      composeString(t, "RiskAssessment", "mitigation", element.getMitigationElement(), -1);
13694    for (int i = 0; i < element.getNote().size(); i++)
13695      composeAnnotation(t, "RiskAssessment", "note", element.getNote().get(i), i);
13696  }
13697
13698  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(Complex parent, String parentType, String name, RiskAssessment.RiskAssessmentPredictionComponent element, int index) {
13699    if (element == null) 
13700      return;
13701    Complex t;
13702    if (Utilities.noString(parentType))
13703      t = parent;
13704    else {
13705      t = parent.predicate("fhir:"+parentType+'.'+name);
13706    }
13707    composeBackboneElement(t, "prediction", name, element, index);
13708    if (element.hasOutcome())
13709      composeCodeableConcept(t, "RiskAssessment", "outcome", element.getOutcome(), -1);
13710    if (element.hasProbability())
13711      composeType(t, "RiskAssessment", "probability", element.getProbability(), -1);
13712    if (element.hasQualitativeRisk())
13713      composeCodeableConcept(t, "RiskAssessment", "qualitativeRisk", element.getQualitativeRisk(), -1);
13714    if (element.hasRelativeRiskElement())
13715      composeDecimal(t, "RiskAssessment", "relativeRisk", element.getRelativeRiskElement(), -1);
13716    if (element.hasWhen())
13717      composeType(t, "RiskAssessment", "when", element.getWhen(), -1);
13718    if (element.hasRationaleElement())
13719      composeString(t, "RiskAssessment", "rationale", element.getRationaleElement(), -1);
13720  }
13721
13722  protected void composeSchedule(Complex parent, String parentType, String name, Schedule element, int index) {
13723    if (element == null) 
13724      return;
13725    Complex t;
13726    if (Utilities.noString(parentType))
13727      t = parent;
13728    else {
13729      t = parent.predicate("fhir:"+parentType+'.'+name);
13730    }
13731    composeDomainResource(t, "Schedule", name, element, index);
13732    for (int i = 0; i < element.getIdentifier().size(); i++)
13733      composeIdentifier(t, "Schedule", "identifier", element.getIdentifier().get(i), i);
13734    if (element.hasActiveElement())
13735      composeBoolean(t, "Schedule", "active", element.getActiveElement(), -1);
13736    for (int i = 0; i < element.getServiceCategory().size(); i++)
13737      composeCodeableConcept(t, "Schedule", "serviceCategory", element.getServiceCategory().get(i), i);
13738    for (int i = 0; i < element.getServiceType().size(); i++)
13739      composeCodeableConcept(t, "Schedule", "serviceType", element.getServiceType().get(i), i);
13740    for (int i = 0; i < element.getSpecialty().size(); i++)
13741      composeCodeableConcept(t, "Schedule", "specialty", element.getSpecialty().get(i), i);
13742    for (int i = 0; i < element.getActor().size(); i++)
13743      composeReference(t, "Schedule", "actor", element.getActor().get(i), i);
13744    if (element.hasPlanningHorizon())
13745      composePeriod(t, "Schedule", "planningHorizon", element.getPlanningHorizon(), -1);
13746    if (element.hasCommentElement())
13747      composeString(t, "Schedule", "comment", element.getCommentElement(), -1);
13748  }
13749
13750  protected void composeSearchParameter(Complex parent, String parentType, String name, SearchParameter element, int index) {
13751    if (element == null) 
13752      return;
13753    Complex t;
13754    if (Utilities.noString(parentType))
13755      t = parent;
13756    else {
13757      t = parent.predicate("fhir:"+parentType+'.'+name);
13758    }
13759    composeDomainResource(t, "SearchParameter", name, element, index);
13760    if (element.hasUrlElement())
13761      composeUri(t, "SearchParameter", "url", element.getUrlElement(), -1);
13762    if (element.hasVersionElement())
13763      composeString(t, "SearchParameter", "version", element.getVersionElement(), -1);
13764    if (element.hasNameElement())
13765      composeString(t, "SearchParameter", "name", element.getNameElement(), -1);
13766    if (element.hasDerivedFromElement())
13767      composeCanonical(t, "SearchParameter", "derivedFrom", element.getDerivedFromElement(), -1);
13768    if (element.hasStatusElement())
13769      composeEnum(t, "SearchParameter", "status", element.getStatusElement(), -1);
13770    if (element.hasExperimentalElement())
13771      composeBoolean(t, "SearchParameter", "experimental", element.getExperimentalElement(), -1);
13772    if (element.hasDateElement())
13773      composeDateTime(t, "SearchParameter", "date", element.getDateElement(), -1);
13774    if (element.hasPublisherElement())
13775      composeString(t, "SearchParameter", "publisher", element.getPublisherElement(), -1);
13776    for (int i = 0; i < element.getContact().size(); i++)
13777      composeContactDetail(t, "SearchParameter", "contact", element.getContact().get(i), i);
13778    if (element.hasDescriptionElement())
13779      composeMarkdown(t, "SearchParameter", "description", element.getDescriptionElement(), -1);
13780    for (int i = 0; i < element.getUseContext().size(); i++)
13781      composeUsageContext(t, "SearchParameter", "useContext", element.getUseContext().get(i), i);
13782    for (int i = 0; i < element.getJurisdiction().size(); i++)
13783      composeCodeableConcept(t, "SearchParameter", "jurisdiction", element.getJurisdiction().get(i), i);
13784    if (element.hasPurposeElement())
13785      composeMarkdown(t, "SearchParameter", "purpose", element.getPurposeElement(), -1);
13786    if (element.hasCodeElement())
13787      composeCode(t, "SearchParameter", "code", element.getCodeElement(), -1);
13788    for (int i = 0; i < element.getBase().size(); i++)
13789      composeCode(t, "SearchParameter", "base", element.getBase().get(i), i);
13790    if (element.hasTypeElement())
13791      composeEnum(t, "SearchParameter", "type", element.getTypeElement(), -1);
13792    if (element.hasExpressionElement())
13793      composeString(t, "SearchParameter", "expression", element.getExpressionElement(), -1);
13794    if (element.hasXpathElement())
13795      composeString(t, "SearchParameter", "xpath", element.getXpathElement(), -1);
13796    if (element.hasXpathUsageElement())
13797      composeEnum(t, "SearchParameter", "xpathUsage", element.getXpathUsageElement(), -1);
13798    for (int i = 0; i < element.getTarget().size(); i++)
13799      composeCode(t, "SearchParameter", "target", element.getTarget().get(i), i);
13800    if (element.hasMultipleOrElement())
13801      composeBoolean(t, "SearchParameter", "multipleOr", element.getMultipleOrElement(), -1);
13802    if (element.hasMultipleAndElement())
13803      composeBoolean(t, "SearchParameter", "multipleAnd", element.getMultipleAndElement(), -1);
13804    for (int i = 0; i < element.getComparator().size(); i++)
13805      composeEnum(t, "SearchParameter", "comparator", element.getComparator().get(i), i);
13806    for (int i = 0; i < element.getModifier().size(); i++)
13807      composeEnum(t, "SearchParameter", "modifier", element.getModifier().get(i), i);
13808    for (int i = 0; i < element.getChain().size(); i++)
13809      composeString(t, "SearchParameter", "chain", element.getChain().get(i), i);
13810    for (int i = 0; i < element.getComponent().size(); i++)
13811      composeSearchParameterSearchParameterComponentComponent(t, "SearchParameter", "component", element.getComponent().get(i), i);
13812  }
13813
13814  protected void composeSearchParameterSearchParameterComponentComponent(Complex parent, String parentType, String name, SearchParameter.SearchParameterComponentComponent element, int index) {
13815    if (element == null) 
13816      return;
13817    Complex t;
13818    if (Utilities.noString(parentType))
13819      t = parent;
13820    else {
13821      t = parent.predicate("fhir:"+parentType+'.'+name);
13822    }
13823    composeBackboneElement(t, "component", name, element, index);
13824    if (element.hasDefinitionElement())
13825      composeCanonical(t, "SearchParameter", "definition", element.getDefinitionElement(), -1);
13826    if (element.hasExpressionElement())
13827      composeString(t, "SearchParameter", "expression", element.getExpressionElement(), -1);
13828  }
13829
13830  protected void composeSequence(Complex parent, String parentType, String name, Sequence element, int index) {
13831    if (element == null) 
13832      return;
13833    Complex t;
13834    if (Utilities.noString(parentType))
13835      t = parent;
13836    else {
13837      t = parent.predicate("fhir:"+parentType+'.'+name);
13838    }
13839    composeDomainResource(t, "Sequence", name, element, index);
13840    for (int i = 0; i < element.getIdentifier().size(); i++)
13841      composeIdentifier(t, "Sequence", "identifier", element.getIdentifier().get(i), i);
13842    if (element.hasTypeElement())
13843      composeEnum(t, "Sequence", "type", element.getTypeElement(), -1);
13844    if (element.hasCoordinateSystemElement())
13845      composeInteger(t, "Sequence", "coordinateSystem", element.getCoordinateSystemElement(), -1);
13846    if (element.hasPatient())
13847      composeReference(t, "Sequence", "patient", element.getPatient(), -1);
13848    if (element.hasSpecimen())
13849      composeReference(t, "Sequence", "specimen", element.getSpecimen(), -1);
13850    if (element.hasDevice())
13851      composeReference(t, "Sequence", "device", element.getDevice(), -1);
13852    if (element.hasPerformer())
13853      composeReference(t, "Sequence", "performer", element.getPerformer(), -1);
13854    if (element.hasQuantity())
13855      composeQuantity(t, "Sequence", "quantity", element.getQuantity(), -1);
13856    if (element.hasReferenceSeq())
13857      composeSequenceSequenceReferenceSeqComponent(t, "Sequence", "referenceSeq", element.getReferenceSeq(), -1);
13858    for (int i = 0; i < element.getVariant().size(); i++)
13859      composeSequenceSequenceVariantComponent(t, "Sequence", "variant", element.getVariant().get(i), i);
13860    if (element.hasObservedSeqElement())
13861      composeString(t, "Sequence", "observedSeq", element.getObservedSeqElement(), -1);
13862    for (int i = 0; i < element.getQuality().size(); i++)
13863      composeSequenceSequenceQualityComponent(t, "Sequence", "quality", element.getQuality().get(i), i);
13864    if (element.hasReadCoverageElement())
13865      composeInteger(t, "Sequence", "readCoverage", element.getReadCoverageElement(), -1);
13866    for (int i = 0; i < element.getRepository().size(); i++)
13867      composeSequenceSequenceRepositoryComponent(t, "Sequence", "repository", element.getRepository().get(i), i);
13868    for (int i = 0; i < element.getPointer().size(); i++)
13869      composeReference(t, "Sequence", "pointer", element.getPointer().get(i), i);
13870    for (int i = 0; i < element.getStructureVariant().size(); i++)
13871      composeSequenceSequenceStructureVariantComponent(t, "Sequence", "structureVariant", element.getStructureVariant().get(i), i);
13872  }
13873
13874  protected void composeSequenceSequenceReferenceSeqComponent(Complex parent, String parentType, String name, Sequence.SequenceReferenceSeqComponent element, int index) {
13875    if (element == null) 
13876      return;
13877    Complex t;
13878    if (Utilities.noString(parentType))
13879      t = parent;
13880    else {
13881      t = parent.predicate("fhir:"+parentType+'.'+name);
13882    }
13883    composeBackboneElement(t, "referenceSeq", name, element, index);
13884    if (element.hasChromosome())
13885      composeCodeableConcept(t, "Sequence", "chromosome", element.getChromosome(), -1);
13886    if (element.hasGenomeBuildElement())
13887      composeString(t, "Sequence", "genomeBuild", element.getGenomeBuildElement(), -1);
13888    if (element.hasOrientationElement())
13889      composeEnum(t, "Sequence", "orientation", element.getOrientationElement(), -1);
13890    if (element.hasReferenceSeqId())
13891      composeCodeableConcept(t, "Sequence", "referenceSeqId", element.getReferenceSeqId(), -1);
13892    if (element.hasReferenceSeqPointer())
13893      composeReference(t, "Sequence", "referenceSeqPointer", element.getReferenceSeqPointer(), -1);
13894    if (element.hasReferenceSeqStringElement())
13895      composeString(t, "Sequence", "referenceSeqString", element.getReferenceSeqStringElement(), -1);
13896    if (element.hasStrandElement())
13897      composeEnum(t, "Sequence", "strand", element.getStrandElement(), -1);
13898    if (element.hasWindowStartElement())
13899      composeInteger(t, "Sequence", "windowStart", element.getWindowStartElement(), -1);
13900    if (element.hasWindowEndElement())
13901      composeInteger(t, "Sequence", "windowEnd", element.getWindowEndElement(), -1);
13902  }
13903
13904  protected void composeSequenceSequenceVariantComponent(Complex parent, String parentType, String name, Sequence.SequenceVariantComponent element, int index) {
13905    if (element == null) 
13906      return;
13907    Complex t;
13908    if (Utilities.noString(parentType))
13909      t = parent;
13910    else {
13911      t = parent.predicate("fhir:"+parentType+'.'+name);
13912    }
13913    composeBackboneElement(t, "variant", name, element, index);
13914    if (element.hasStartElement())
13915      composeInteger(t, "Sequence", "start", element.getStartElement(), -1);
13916    if (element.hasEndElement())
13917      composeInteger(t, "Sequence", "end", element.getEndElement(), -1);
13918    if (element.hasObservedAlleleElement())
13919      composeString(t, "Sequence", "observedAllele", element.getObservedAlleleElement(), -1);
13920    if (element.hasReferenceAlleleElement())
13921      composeString(t, "Sequence", "referenceAllele", element.getReferenceAlleleElement(), -1);
13922    if (element.hasCigarElement())
13923      composeString(t, "Sequence", "cigar", element.getCigarElement(), -1);
13924    if (element.hasVariantPointer())
13925      composeReference(t, "Sequence", "variantPointer", element.getVariantPointer(), -1);
13926  }
13927
13928  protected void composeSequenceSequenceQualityComponent(Complex parent, String parentType, String name, Sequence.SequenceQualityComponent element, int index) {
13929    if (element == null) 
13930      return;
13931    Complex t;
13932    if (Utilities.noString(parentType))
13933      t = parent;
13934    else {
13935      t = parent.predicate("fhir:"+parentType+'.'+name);
13936    }
13937    composeBackboneElement(t, "quality", name, element, index);
13938    if (element.hasTypeElement())
13939      composeEnum(t, "Sequence", "type", element.getTypeElement(), -1);
13940    if (element.hasStandardSequence())
13941      composeCodeableConcept(t, "Sequence", "standardSequence", element.getStandardSequence(), -1);
13942    if (element.hasStartElement())
13943      composeInteger(t, "Sequence", "start", element.getStartElement(), -1);
13944    if (element.hasEndElement())
13945      composeInteger(t, "Sequence", "end", element.getEndElement(), -1);
13946    if (element.hasScore())
13947      composeQuantity(t, "Sequence", "score", element.getScore(), -1);
13948    if (element.hasMethod())
13949      composeCodeableConcept(t, "Sequence", "method", element.getMethod(), -1);
13950    if (element.hasTruthTPElement())
13951      composeDecimal(t, "Sequence", "truthTP", element.getTruthTPElement(), -1);
13952    if (element.hasQueryTPElement())
13953      composeDecimal(t, "Sequence", "queryTP", element.getQueryTPElement(), -1);
13954    if (element.hasTruthFNElement())
13955      composeDecimal(t, "Sequence", "truthFN", element.getTruthFNElement(), -1);
13956    if (element.hasQueryFPElement())
13957      composeDecimal(t, "Sequence", "queryFP", element.getQueryFPElement(), -1);
13958    if (element.hasGtFPElement())
13959      composeDecimal(t, "Sequence", "gtFP", element.getGtFPElement(), -1);
13960    if (element.hasPrecisionElement())
13961      composeDecimal(t, "Sequence", "precision", element.getPrecisionElement(), -1);
13962    if (element.hasRecallElement())
13963      composeDecimal(t, "Sequence", "recall", element.getRecallElement(), -1);
13964    if (element.hasFScoreElement())
13965      composeDecimal(t, "Sequence", "fScore", element.getFScoreElement(), -1);
13966    if (element.hasRoc())
13967      composeSequenceSequenceQualityRocComponent(t, "Sequence", "roc", element.getRoc(), -1);
13968  }
13969
13970  protected void composeSequenceSequenceQualityRocComponent(Complex parent, String parentType, String name, Sequence.SequenceQualityRocComponent element, int index) {
13971    if (element == null) 
13972      return;
13973    Complex t;
13974    if (Utilities.noString(parentType))
13975      t = parent;
13976    else {
13977      t = parent.predicate("fhir:"+parentType+'.'+name);
13978    }
13979    composeBackboneElement(t, "roc", name, element, index);
13980    for (int i = 0; i < element.getScore().size(); i++)
13981      composeInteger(t, "Sequence", "score", element.getScore().get(i), i);
13982    for (int i = 0; i < element.getNumTP().size(); i++)
13983      composeInteger(t, "Sequence", "numTP", element.getNumTP().get(i), i);
13984    for (int i = 0; i < element.getNumFP().size(); i++)
13985      composeInteger(t, "Sequence", "numFP", element.getNumFP().get(i), i);
13986    for (int i = 0; i < element.getNumFN().size(); i++)
13987      composeInteger(t, "Sequence", "numFN", element.getNumFN().get(i), i);
13988    for (int i = 0; i < element.getPrecision().size(); i++)
13989      composeDecimal(t, "Sequence", "precision", element.getPrecision().get(i), i);
13990    for (int i = 0; i < element.getSensitivity().size(); i++)
13991      composeDecimal(t, "Sequence", "sensitivity", element.getSensitivity().get(i), i);
13992    for (int i = 0; i < element.getFMeasure().size(); i++)
13993      composeDecimal(t, "Sequence", "fMeasure", element.getFMeasure().get(i), i);
13994  }
13995
13996  protected void composeSequenceSequenceRepositoryComponent(Complex parent, String parentType, String name, Sequence.SequenceRepositoryComponent element, int index) {
13997    if (element == null) 
13998      return;
13999    Complex t;
14000    if (Utilities.noString(parentType))
14001      t = parent;
14002    else {
14003      t = parent.predicate("fhir:"+parentType+'.'+name);
14004    }
14005    composeBackboneElement(t, "repository", name, element, index);
14006    if (element.hasTypeElement())
14007      composeEnum(t, "Sequence", "type", element.getTypeElement(), -1);
14008    if (element.hasUrlElement())
14009      composeUri(t, "Sequence", "url", element.getUrlElement(), -1);
14010    if (element.hasNameElement())
14011      composeString(t, "Sequence", "name", element.getNameElement(), -1);
14012    if (element.hasDatasetIdElement())
14013      composeString(t, "Sequence", "datasetId", element.getDatasetIdElement(), -1);
14014    if (element.hasVariantsetIdElement())
14015      composeString(t, "Sequence", "variantsetId", element.getVariantsetIdElement(), -1);
14016    if (element.hasReadsetIdElement())
14017      composeString(t, "Sequence", "readsetId", element.getReadsetIdElement(), -1);
14018  }
14019
14020  protected void composeSequenceSequenceStructureVariantComponent(Complex parent, String parentType, String name, Sequence.SequenceStructureVariantComponent element, int index) {
14021    if (element == null) 
14022      return;
14023    Complex t;
14024    if (Utilities.noString(parentType))
14025      t = parent;
14026    else {
14027      t = parent.predicate("fhir:"+parentType+'.'+name);
14028    }
14029    composeBackboneElement(t, "structureVariant", name, element, index);
14030    if (element.hasPrecisionElement())
14031      composeString(t, "Sequence", "precision", element.getPrecisionElement(), -1);
14032    if (element.hasReportedaCGHRatioElement())
14033      composeDecimal(t, "Sequence", "reportedaCGHRatio", element.getReportedaCGHRatioElement(), -1);
14034    if (element.hasLengthElement())
14035      composeInteger(t, "Sequence", "length", element.getLengthElement(), -1);
14036    if (element.hasOuter())
14037      composeSequenceSequenceStructureVariantOuterComponent(t, "Sequence", "outer", element.getOuter(), -1);
14038    if (element.hasInner())
14039      composeSequenceSequenceStructureVariantInnerComponent(t, "Sequence", "inner", element.getInner(), -1);
14040  }
14041
14042  protected void composeSequenceSequenceStructureVariantOuterComponent(Complex parent, String parentType, String name, Sequence.SequenceStructureVariantOuterComponent element, int index) {
14043    if (element == null) 
14044      return;
14045    Complex t;
14046    if (Utilities.noString(parentType))
14047      t = parent;
14048    else {
14049      t = parent.predicate("fhir:"+parentType+'.'+name);
14050    }
14051    composeBackboneElement(t, "outer", name, element, index);
14052    if (element.hasStartElement())
14053      composeInteger(t, "Sequence", "start", element.getStartElement(), -1);
14054    if (element.hasEndElement())
14055      composeInteger(t, "Sequence", "end", element.getEndElement(), -1);
14056  }
14057
14058  protected void composeSequenceSequenceStructureVariantInnerComponent(Complex parent, String parentType, String name, Sequence.SequenceStructureVariantInnerComponent element, int index) {
14059    if (element == null) 
14060      return;
14061    Complex t;
14062    if (Utilities.noString(parentType))
14063      t = parent;
14064    else {
14065      t = parent.predicate("fhir:"+parentType+'.'+name);
14066    }
14067    composeBackboneElement(t, "inner", name, element, index);
14068    if (element.hasStartElement())
14069      composeInteger(t, "Sequence", "start", element.getStartElement(), -1);
14070    if (element.hasEndElement())
14071      composeInteger(t, "Sequence", "end", element.getEndElement(), -1);
14072  }
14073
14074  protected void composeServiceRequest(Complex parent, String parentType, String name, ServiceRequest element, int index) {
14075    if (element == null) 
14076      return;
14077    Complex t;
14078    if (Utilities.noString(parentType))
14079      t = parent;
14080    else {
14081      t = parent.predicate("fhir:"+parentType+'.'+name);
14082    }
14083    composeDomainResource(t, "ServiceRequest", name, element, index);
14084    for (int i = 0; i < element.getIdentifier().size(); i++)
14085      composeIdentifier(t, "ServiceRequest", "identifier", element.getIdentifier().get(i), i);
14086    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
14087      composeCanonical(t, "ServiceRequest", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
14088    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
14089      composeUri(t, "ServiceRequest", "instantiatesUri", element.getInstantiatesUri().get(i), i);
14090    for (int i = 0; i < element.getBasedOn().size(); i++)
14091      composeReference(t, "ServiceRequest", "basedOn", element.getBasedOn().get(i), i);
14092    for (int i = 0; i < element.getReplaces().size(); i++)
14093      composeReference(t, "ServiceRequest", "replaces", element.getReplaces().get(i), i);
14094    if (element.hasRequisition())
14095      composeIdentifier(t, "ServiceRequest", "requisition", element.getRequisition(), -1);
14096    if (element.hasStatusElement())
14097      composeEnum(t, "ServiceRequest", "status", element.getStatusElement(), -1);
14098    if (element.hasIntentElement())
14099      composeEnum(t, "ServiceRequest", "intent", element.getIntentElement(), -1);
14100    for (int i = 0; i < element.getCategory().size(); i++)
14101      composeCodeableConcept(t, "ServiceRequest", "category", element.getCategory().get(i), i);
14102    if (element.hasPriorityElement())
14103      composeEnum(t, "ServiceRequest", "priority", element.getPriorityElement(), -1);
14104    if (element.hasDoNotPerformElement())
14105      composeBoolean(t, "ServiceRequest", "doNotPerform", element.getDoNotPerformElement(), -1);
14106    if (element.hasCode())
14107      composeCodeableConcept(t, "ServiceRequest", "code", element.getCode(), -1);
14108    for (int i = 0; i < element.getOrderDetail().size(); i++)
14109      composeCodeableConcept(t, "ServiceRequest", "orderDetail", element.getOrderDetail().get(i), i);
14110    if (element.hasQuantity())
14111      composeType(t, "ServiceRequest", "quantity", element.getQuantity(), -1);
14112    if (element.hasSubject())
14113      composeReference(t, "ServiceRequest", "subject", element.getSubject(), -1);
14114    if (element.hasContext())
14115      composeReference(t, "ServiceRequest", "context", element.getContext(), -1);
14116    if (element.hasOccurrence())
14117      composeType(t, "ServiceRequest", "occurrence", element.getOccurrence(), -1);
14118    if (element.hasAsNeeded())
14119      composeType(t, "ServiceRequest", "asNeeded", element.getAsNeeded(), -1);
14120    if (element.hasAuthoredOnElement())
14121      composeDateTime(t, "ServiceRequest", "authoredOn", element.getAuthoredOnElement(), -1);
14122    if (element.hasRequester())
14123      composeReference(t, "ServiceRequest", "requester", element.getRequester(), -1);
14124    if (element.hasPerformerType())
14125      composeCodeableConcept(t, "ServiceRequest", "performerType", element.getPerformerType(), -1);
14126    for (int i = 0; i < element.getPerformer().size(); i++)
14127      composeReference(t, "ServiceRequest", "performer", element.getPerformer().get(i), i);
14128    for (int i = 0; i < element.getLocationCode().size(); i++)
14129      composeCodeableConcept(t, "ServiceRequest", "locationCode", element.getLocationCode().get(i), i);
14130    for (int i = 0; i < element.getLocationReference().size(); i++)
14131      composeReference(t, "ServiceRequest", "locationReference", element.getLocationReference().get(i), i);
14132    for (int i = 0; i < element.getReasonCode().size(); i++)
14133      composeCodeableConcept(t, "ServiceRequest", "reasonCode", element.getReasonCode().get(i), i);
14134    for (int i = 0; i < element.getReasonReference().size(); i++)
14135      composeReference(t, "ServiceRequest", "reasonReference", element.getReasonReference().get(i), i);
14136    for (int i = 0; i < element.getInsurance().size(); i++)
14137      composeReference(t, "ServiceRequest", "insurance", element.getInsurance().get(i), i);
14138    for (int i = 0; i < element.getSupportingInfo().size(); i++)
14139      composeReference(t, "ServiceRequest", "supportingInfo", element.getSupportingInfo().get(i), i);
14140    for (int i = 0; i < element.getSpecimen().size(); i++)
14141      composeReference(t, "ServiceRequest", "specimen", element.getSpecimen().get(i), i);
14142    for (int i = 0; i < element.getBodySite().size(); i++)
14143      composeCodeableConcept(t, "ServiceRequest", "bodySite", element.getBodySite().get(i), i);
14144    for (int i = 0; i < element.getNote().size(); i++)
14145      composeAnnotation(t, "ServiceRequest", "note", element.getNote().get(i), i);
14146    if (element.hasPatientInstructionElement())
14147      composeString(t, "ServiceRequest", "patientInstruction", element.getPatientInstructionElement(), -1);
14148    for (int i = 0; i < element.getRelevantHistory().size(); i++)
14149      composeReference(t, "ServiceRequest", "relevantHistory", element.getRelevantHistory().get(i), i);
14150  }
14151
14152  protected void composeSlot(Complex parent, String parentType, String name, Slot element, int index) {
14153    if (element == null) 
14154      return;
14155    Complex t;
14156    if (Utilities.noString(parentType))
14157      t = parent;
14158    else {
14159      t = parent.predicate("fhir:"+parentType+'.'+name);
14160    }
14161    composeDomainResource(t, "Slot", name, element, index);
14162    for (int i = 0; i < element.getIdentifier().size(); i++)
14163      composeIdentifier(t, "Slot", "identifier", element.getIdentifier().get(i), i);
14164    for (int i = 0; i < element.getServiceCategory().size(); i++)
14165      composeCodeableConcept(t, "Slot", "serviceCategory", element.getServiceCategory().get(i), i);
14166    for (int i = 0; i < element.getServiceType().size(); i++)
14167      composeCodeableConcept(t, "Slot", "serviceType", element.getServiceType().get(i), i);
14168    for (int i = 0; i < element.getSpecialty().size(); i++)
14169      composeCodeableConcept(t, "Slot", "specialty", element.getSpecialty().get(i), i);
14170    if (element.hasAppointmentType())
14171      composeCodeableConcept(t, "Slot", "appointmentType", element.getAppointmentType(), -1);
14172    if (element.hasSchedule())
14173      composeReference(t, "Slot", "schedule", element.getSchedule(), -1);
14174    if (element.hasStatusElement())
14175      composeEnum(t, "Slot", "status", element.getStatusElement(), -1);
14176    if (element.hasStartElement())
14177      composeInstant(t, "Slot", "start", element.getStartElement(), -1);
14178    if (element.hasEndElement())
14179      composeInstant(t, "Slot", "end", element.getEndElement(), -1);
14180    if (element.hasOverbookedElement())
14181      composeBoolean(t, "Slot", "overbooked", element.getOverbookedElement(), -1);
14182    if (element.hasCommentElement())
14183      composeString(t, "Slot", "comment", element.getCommentElement(), -1);
14184  }
14185
14186  protected void composeSpecimen(Complex parent, String parentType, String name, Specimen element, int index) {
14187    if (element == null) 
14188      return;
14189    Complex t;
14190    if (Utilities.noString(parentType))
14191      t = parent;
14192    else {
14193      t = parent.predicate("fhir:"+parentType+'.'+name);
14194    }
14195    composeDomainResource(t, "Specimen", name, element, index);
14196    for (int i = 0; i < element.getIdentifier().size(); i++)
14197      composeIdentifier(t, "Specimen", "identifier", element.getIdentifier().get(i), i);
14198    if (element.hasAccessionIdentifier())
14199      composeIdentifier(t, "Specimen", "accessionIdentifier", element.getAccessionIdentifier(), -1);
14200    if (element.hasStatusElement())
14201      composeEnum(t, "Specimen", "status", element.getStatusElement(), -1);
14202    if (element.hasType())
14203      composeCodeableConcept(t, "Specimen", "type", element.getType(), -1);
14204    if (element.hasSubject())
14205      composeReference(t, "Specimen", "subject", element.getSubject(), -1);
14206    if (element.hasReceivedTimeElement())
14207      composeDateTime(t, "Specimen", "receivedTime", element.getReceivedTimeElement(), -1);
14208    for (int i = 0; i < element.getParent().size(); i++)
14209      composeReference(t, "Specimen", "parent", element.getParent().get(i), i);
14210    for (int i = 0; i < element.getRequest().size(); i++)
14211      composeReference(t, "Specimen", "request", element.getRequest().get(i), i);
14212    if (element.hasCollection())
14213      composeSpecimenSpecimenCollectionComponent(t, "Specimen", "collection", element.getCollection(), -1);
14214    for (int i = 0; i < element.getProcessing().size(); i++)
14215      composeSpecimenSpecimenProcessingComponent(t, "Specimen", "processing", element.getProcessing().get(i), i);
14216    for (int i = 0; i < element.getContainer().size(); i++)
14217      composeSpecimenSpecimenContainerComponent(t, "Specimen", "container", element.getContainer().get(i), i);
14218    for (int i = 0; i < element.getCondition().size(); i++)
14219      composeCodeableConcept(t, "Specimen", "condition", element.getCondition().get(i), i);
14220    for (int i = 0; i < element.getNote().size(); i++)
14221      composeAnnotation(t, "Specimen", "note", element.getNote().get(i), i);
14222  }
14223
14224  protected void composeSpecimenSpecimenCollectionComponent(Complex parent, String parentType, String name, Specimen.SpecimenCollectionComponent element, int index) {
14225    if (element == null) 
14226      return;
14227    Complex t;
14228    if (Utilities.noString(parentType))
14229      t = parent;
14230    else {
14231      t = parent.predicate("fhir:"+parentType+'.'+name);
14232    }
14233    composeBackboneElement(t, "collection", name, element, index);
14234    if (element.hasCollector())
14235      composeReference(t, "Specimen", "collector", element.getCollector(), -1);
14236    if (element.hasCollected())
14237      composeType(t, "Specimen", "collected", element.getCollected(), -1);
14238    if (element.hasDuration())
14239      composeDuration(t, "Specimen", "duration", element.getDuration(), -1);
14240    if (element.hasQuantity())
14241      composeQuantity(t, "Specimen", "quantity", element.getQuantity(), -1);
14242    if (element.hasMethod())
14243      composeCodeableConcept(t, "Specimen", "method", element.getMethod(), -1);
14244    if (element.hasBodySite())
14245      composeCodeableConcept(t, "Specimen", "bodySite", element.getBodySite(), -1);
14246    if (element.hasFastingStatus())
14247      composeType(t, "Specimen", "fastingStatus", element.getFastingStatus(), -1);
14248  }
14249
14250  protected void composeSpecimenSpecimenProcessingComponent(Complex parent, String parentType, String name, Specimen.SpecimenProcessingComponent element, int index) {
14251    if (element == null) 
14252      return;
14253    Complex t;
14254    if (Utilities.noString(parentType))
14255      t = parent;
14256    else {
14257      t = parent.predicate("fhir:"+parentType+'.'+name);
14258    }
14259    composeBackboneElement(t, "processing", name, element, index);
14260    if (element.hasDescriptionElement())
14261      composeString(t, "Specimen", "description", element.getDescriptionElement(), -1);
14262    if (element.hasProcedure())
14263      composeCodeableConcept(t, "Specimen", "procedure", element.getProcedure(), -1);
14264    for (int i = 0; i < element.getAdditive().size(); i++)
14265      composeReference(t, "Specimen", "additive", element.getAdditive().get(i), i);
14266    if (element.hasTime())
14267      composeType(t, "Specimen", "time", element.getTime(), -1);
14268  }
14269
14270  protected void composeSpecimenSpecimenContainerComponent(Complex parent, String parentType, String name, Specimen.SpecimenContainerComponent element, int index) {
14271    if (element == null) 
14272      return;
14273    Complex t;
14274    if (Utilities.noString(parentType))
14275      t = parent;
14276    else {
14277      t = parent.predicate("fhir:"+parentType+'.'+name);
14278    }
14279    composeBackboneElement(t, "container", name, element, index);
14280    for (int i = 0; i < element.getIdentifier().size(); i++)
14281      composeIdentifier(t, "Specimen", "identifier", element.getIdentifier().get(i), i);
14282    if (element.hasDescriptionElement())
14283      composeString(t, "Specimen", "description", element.getDescriptionElement(), -1);
14284    if (element.hasType())
14285      composeCodeableConcept(t, "Specimen", "type", element.getType(), -1);
14286    if (element.hasCapacity())
14287      composeQuantity(t, "Specimen", "capacity", element.getCapacity(), -1);
14288    if (element.hasSpecimenQuantity())
14289      composeQuantity(t, "Specimen", "specimenQuantity", element.getSpecimenQuantity(), -1);
14290    if (element.hasAdditive())
14291      composeType(t, "Specimen", "additive", element.getAdditive(), -1);
14292  }
14293
14294  protected void composeSpecimenDefinition(Complex parent, String parentType, String name, SpecimenDefinition element, int index) {
14295    if (element == null) 
14296      return;
14297    Complex t;
14298    if (Utilities.noString(parentType))
14299      t = parent;
14300    else {
14301      t = parent.predicate("fhir:"+parentType+'.'+name);
14302    }
14303    composeDomainResource(t, "SpecimenDefinition", name, element, index);
14304    if (element.hasIdentifier())
14305      composeIdentifier(t, "SpecimenDefinition", "identifier", element.getIdentifier(), -1);
14306    if (element.hasTypeCollected())
14307      composeCodeableConcept(t, "SpecimenDefinition", "typeCollected", element.getTypeCollected(), -1);
14308    if (element.hasPatientPreparationElement())
14309      composeString(t, "SpecimenDefinition", "patientPreparation", element.getPatientPreparationElement(), -1);
14310    if (element.hasTimeAspectElement())
14311      composeString(t, "SpecimenDefinition", "timeAspect", element.getTimeAspectElement(), -1);
14312    for (int i = 0; i < element.getCollection().size(); i++)
14313      composeCodeableConcept(t, "SpecimenDefinition", "collection", element.getCollection().get(i), i);
14314    for (int i = 0; i < element.getTypeTested().size(); i++)
14315      composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(t, "SpecimenDefinition", "typeTested", element.getTypeTested().get(i), i);
14316  }
14317
14318  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element, int index) {
14319    if (element == null) 
14320      return;
14321    Complex t;
14322    if (Utilities.noString(parentType))
14323      t = parent;
14324    else {
14325      t = parent.predicate("fhir:"+parentType+'.'+name);
14326    }
14327    composeBackboneElement(t, "typeTested", name, element, index);
14328    if (element.hasIsDerivedElement())
14329      composeBoolean(t, "SpecimenDefinition", "isDerived", element.getIsDerivedElement(), -1);
14330    if (element.hasType())
14331      composeCodeableConcept(t, "SpecimenDefinition", "type", element.getType(), -1);
14332    if (element.hasPreferenceElement())
14333      composeEnum(t, "SpecimenDefinition", "preference", element.getPreferenceElement(), -1);
14334    if (element.hasContainer())
14335      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(t, "SpecimenDefinition", "container", element.getContainer(), -1);
14336    if (element.hasRequirementElement())
14337      composeString(t, "SpecimenDefinition", "requirement", element.getRequirementElement(), -1);
14338    if (element.hasRetentionTime())
14339      composeDuration(t, "SpecimenDefinition", "retentionTime", element.getRetentionTime(), -1);
14340    for (int i = 0; i < element.getRejectionCriterion().size(); i++)
14341      composeCodeableConcept(t, "SpecimenDefinition", "rejectionCriterion", element.getRejectionCriterion().get(i), i);
14342    for (int i = 0; i < element.getHandling().size(); i++)
14343      composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(t, "SpecimenDefinition", "handling", element.getHandling().get(i), i);
14344  }
14345
14346  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element, int index) {
14347    if (element == null) 
14348      return;
14349    Complex t;
14350    if (Utilities.noString(parentType))
14351      t = parent;
14352    else {
14353      t = parent.predicate("fhir:"+parentType+'.'+name);
14354    }
14355    composeBackboneElement(t, "container", name, element, index);
14356    if (element.hasMaterial())
14357      composeCodeableConcept(t, "SpecimenDefinition", "material", element.getMaterial(), -1);
14358    if (element.hasType())
14359      composeCodeableConcept(t, "SpecimenDefinition", "type", element.getType(), -1);
14360    if (element.hasCap())
14361      composeCodeableConcept(t, "SpecimenDefinition", "cap", element.getCap(), -1);
14362    if (element.hasDescriptionElement())
14363      composeString(t, "SpecimenDefinition", "description", element.getDescriptionElement(), -1);
14364    if (element.hasCapacity())
14365      composeQuantity(t, "SpecimenDefinition", "capacity", element.getCapacity(), -1);
14366    if (element.hasMinimumVolume())
14367      composeQuantity(t, "SpecimenDefinition", "minimumVolume", element.getMinimumVolume(), -1);
14368    for (int i = 0; i < element.getAdditive().size(); i++)
14369      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(t, "SpecimenDefinition", "additive", element.getAdditive().get(i), i);
14370    if (element.hasPreparationElement())
14371      composeString(t, "SpecimenDefinition", "preparation", element.getPreparationElement(), -1);
14372  }
14373
14374  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element, int index) {
14375    if (element == null) 
14376      return;
14377    Complex t;
14378    if (Utilities.noString(parentType))
14379      t = parent;
14380    else {
14381      t = parent.predicate("fhir:"+parentType+'.'+name);
14382    }
14383    composeBackboneElement(t, "additive", name, element, index);
14384    if (element.hasAdditive())
14385      composeType(t, "SpecimenDefinition", "additive", element.getAdditive(), -1);
14386  }
14387
14388  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element, int index) {
14389    if (element == null) 
14390      return;
14391    Complex t;
14392    if (Utilities.noString(parentType))
14393      t = parent;
14394    else {
14395      t = parent.predicate("fhir:"+parentType+'.'+name);
14396    }
14397    composeBackboneElement(t, "handling", name, element, index);
14398    if (element.hasTemperatureQualifier())
14399      composeCodeableConcept(t, "SpecimenDefinition", "temperatureQualifier", element.getTemperatureQualifier(), -1);
14400    if (element.hasTemperatureRange())
14401      composeRange(t, "SpecimenDefinition", "temperatureRange", element.getTemperatureRange(), -1);
14402    if (element.hasMaxDuration())
14403      composeDuration(t, "SpecimenDefinition", "maxDuration", element.getMaxDuration(), -1);
14404    if (element.hasInstructionElement())
14405      composeString(t, "SpecimenDefinition", "instruction", element.getInstructionElement(), -1);
14406  }
14407
14408  protected void composeStructureDefinition(Complex parent, String parentType, String name, StructureDefinition element, int index) {
14409    if (element == null) 
14410      return;
14411    Complex t;
14412    if (Utilities.noString(parentType))
14413      t = parent;
14414    else {
14415      t = parent.predicate("fhir:"+parentType+'.'+name);
14416    }
14417    composeDomainResource(t, "StructureDefinition", name, element, index);
14418    if (element.hasUrlElement())
14419      composeUri(t, "StructureDefinition", "url", element.getUrlElement(), -1);
14420    for (int i = 0; i < element.getIdentifier().size(); i++)
14421      composeIdentifier(t, "StructureDefinition", "identifier", element.getIdentifier().get(i), i);
14422    if (element.hasVersionElement())
14423      composeString(t, "StructureDefinition", "version", element.getVersionElement(), -1);
14424    if (element.hasNameElement())
14425      composeString(t, "StructureDefinition", "name", element.getNameElement(), -1);
14426    if (element.hasTitleElement())
14427      composeString(t, "StructureDefinition", "title", element.getTitleElement(), -1);
14428    if (element.hasStatusElement())
14429      composeEnum(t, "StructureDefinition", "status", element.getStatusElement(), -1);
14430    if (element.hasExperimentalElement())
14431      composeBoolean(t, "StructureDefinition", "experimental", element.getExperimentalElement(), -1);
14432    if (element.hasDateElement())
14433      composeDateTime(t, "StructureDefinition", "date", element.getDateElement(), -1);
14434    if (element.hasPublisherElement())
14435      composeString(t, "StructureDefinition", "publisher", element.getPublisherElement(), -1);
14436    for (int i = 0; i < element.getContact().size(); i++)
14437      composeContactDetail(t, "StructureDefinition", "contact", element.getContact().get(i), i);
14438    if (element.hasDescriptionElement())
14439      composeMarkdown(t, "StructureDefinition", "description", element.getDescriptionElement(), -1);
14440    for (int i = 0; i < element.getUseContext().size(); i++)
14441      composeUsageContext(t, "StructureDefinition", "useContext", element.getUseContext().get(i), i);
14442    for (int i = 0; i < element.getJurisdiction().size(); i++)
14443      composeCodeableConcept(t, "StructureDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
14444    if (element.hasPurposeElement())
14445      composeMarkdown(t, "StructureDefinition", "purpose", element.getPurposeElement(), -1);
14446    if (element.hasCopyrightElement())
14447      composeMarkdown(t, "StructureDefinition", "copyright", element.getCopyrightElement(), -1);
14448    for (int i = 0; i < element.getKeyword().size(); i++)
14449      composeCoding(t, "StructureDefinition", "keyword", element.getKeyword().get(i), i);
14450    if (element.hasFhirVersionElement())
14451      composeId(t, "StructureDefinition", "fhirVersion", element.getFhirVersionElement(), -1);
14452    for (int i = 0; i < element.getMapping().size(); i++)
14453      composeStructureDefinitionStructureDefinitionMappingComponent(t, "StructureDefinition", "mapping", element.getMapping().get(i), i);
14454    if (element.hasKindElement())
14455      composeEnum(t, "StructureDefinition", "kind", element.getKindElement(), -1);
14456    if (element.hasAbstractElement())
14457      composeBoolean(t, "StructureDefinition", "abstract", element.getAbstractElement(), -1);
14458    for (int i = 0; i < element.getContext().size(); i++)
14459      composeStructureDefinitionStructureDefinitionContextComponent(t, "StructureDefinition", "context", element.getContext().get(i), i);
14460    for (int i = 0; i < element.getContextInvariant().size(); i++)
14461      composeString(t, "StructureDefinition", "contextInvariant", element.getContextInvariant().get(i), i);
14462    if (element.hasTypeElement())
14463      composeUri(t, "StructureDefinition", "type", element.getTypeElement(), -1);
14464    if (element.hasBaseDefinitionElement())
14465      composeCanonical(t, "StructureDefinition", "baseDefinition", element.getBaseDefinitionElement(), -1);
14466    if (element.hasDerivationElement())
14467      composeEnum(t, "StructureDefinition", "derivation", element.getDerivationElement(), -1);
14468    if (element.hasSnapshot())
14469      composeStructureDefinitionStructureDefinitionSnapshotComponent(t, "StructureDefinition", "snapshot", element.getSnapshot(), -1);
14470    if (element.hasDifferential())
14471      composeStructureDefinitionStructureDefinitionDifferentialComponent(t, "StructureDefinition", "differential", element.getDifferential(), -1);
14472  }
14473
14474  protected void composeStructureDefinitionStructureDefinitionMappingComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionMappingComponent element, int index) {
14475    if (element == null) 
14476      return;
14477    Complex t;
14478    if (Utilities.noString(parentType))
14479      t = parent;
14480    else {
14481      t = parent.predicate("fhir:"+parentType+'.'+name);
14482    }
14483    composeBackboneElement(t, "mapping", name, element, index);
14484    if (element.hasIdentityElement())
14485      composeId(t, "StructureDefinition", "identity", element.getIdentityElement(), -1);
14486    if (element.hasUriElement())
14487      composeUri(t, "StructureDefinition", "uri", element.getUriElement(), -1);
14488    if (element.hasNameElement())
14489      composeString(t, "StructureDefinition", "name", element.getNameElement(), -1);
14490    if (element.hasCommentElement())
14491      composeString(t, "StructureDefinition", "comment", element.getCommentElement(), -1);
14492  }
14493
14494  protected void composeStructureDefinitionStructureDefinitionContextComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionContextComponent element, int index) {
14495    if (element == null) 
14496      return;
14497    Complex t;
14498    if (Utilities.noString(parentType))
14499      t = parent;
14500    else {
14501      t = parent.predicate("fhir:"+parentType+'.'+name);
14502    }
14503    composeBackboneElement(t, "context", name, element, index);
14504    if (element.hasTypeElement())
14505      composeEnum(t, "StructureDefinition", "type", element.getTypeElement(), -1);
14506    if (element.hasExpressionElement())
14507      composeString(t, "StructureDefinition", "expression", element.getExpressionElement(), -1);
14508  }
14509
14510  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionSnapshotComponent element, int index) {
14511    if (element == null) 
14512      return;
14513    Complex t;
14514    if (Utilities.noString(parentType))
14515      t = parent;
14516    else {
14517      t = parent.predicate("fhir:"+parentType+'.'+name);
14518    }
14519    composeBackboneElement(t, "snapshot", name, element, index);
14520    for (int i = 0; i < element.getElement().size(); i++)
14521      composeElementDefinition(t, "StructureDefinition", "element", element.getElement().get(i), i);
14522  }
14523
14524  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionDifferentialComponent element, int index) {
14525    if (element == null) 
14526      return;
14527    Complex t;
14528    if (Utilities.noString(parentType))
14529      t = parent;
14530    else {
14531      t = parent.predicate("fhir:"+parentType+'.'+name);
14532    }
14533    composeBackboneElement(t, "differential", name, element, index);
14534    for (int i = 0; i < element.getElement().size(); i++)
14535      composeElementDefinition(t, "StructureDefinition", "element", element.getElement().get(i), i);
14536  }
14537
14538  protected void composeStructureMap(Complex parent, String parentType, String name, StructureMap element, int index) {
14539    if (element == null) 
14540      return;
14541    Complex t;
14542    if (Utilities.noString(parentType))
14543      t = parent;
14544    else {
14545      t = parent.predicate("fhir:"+parentType+'.'+name);
14546    }
14547    composeDomainResource(t, "StructureMap", name, element, index);
14548    if (element.hasUrlElement())
14549      composeUri(t, "StructureMap", "url", element.getUrlElement(), -1);
14550    for (int i = 0; i < element.getIdentifier().size(); i++)
14551      composeIdentifier(t, "StructureMap", "identifier", element.getIdentifier().get(i), i);
14552    if (element.hasVersionElement())
14553      composeString(t, "StructureMap", "version", element.getVersionElement(), -1);
14554    if (element.hasNameElement())
14555      composeString(t, "StructureMap", "name", element.getNameElement(), -1);
14556    if (element.hasTitleElement())
14557      composeString(t, "StructureMap", "title", element.getTitleElement(), -1);
14558    if (element.hasStatusElement())
14559      composeEnum(t, "StructureMap", "status", element.getStatusElement(), -1);
14560    if (element.hasExperimentalElement())
14561      composeBoolean(t, "StructureMap", "experimental", element.getExperimentalElement(), -1);
14562    if (element.hasDateElement())
14563      composeDateTime(t, "StructureMap", "date", element.getDateElement(), -1);
14564    if (element.hasPublisherElement())
14565      composeString(t, "StructureMap", "publisher", element.getPublisherElement(), -1);
14566    for (int i = 0; i < element.getContact().size(); i++)
14567      composeContactDetail(t, "StructureMap", "contact", element.getContact().get(i), i);
14568    if (element.hasDescriptionElement())
14569      composeMarkdown(t, "StructureMap", "description", element.getDescriptionElement(), -1);
14570    for (int i = 0; i < element.getUseContext().size(); i++)
14571      composeUsageContext(t, "StructureMap", "useContext", element.getUseContext().get(i), i);
14572    for (int i = 0; i < element.getJurisdiction().size(); i++)
14573      composeCodeableConcept(t, "StructureMap", "jurisdiction", element.getJurisdiction().get(i), i);
14574    if (element.hasPurposeElement())
14575      composeMarkdown(t, "StructureMap", "purpose", element.getPurposeElement(), -1);
14576    if (element.hasCopyrightElement())
14577      composeMarkdown(t, "StructureMap", "copyright", element.getCopyrightElement(), -1);
14578    for (int i = 0; i < element.getStructure().size(); i++)
14579      composeStructureMapStructureMapStructureComponent(t, "StructureMap", "structure", element.getStructure().get(i), i);
14580    for (int i = 0; i < element.getImport().size(); i++)
14581      composeCanonical(t, "StructureMap", "import", element.getImport().get(i), i);
14582    for (int i = 0; i < element.getGroup().size(); i++)
14583      composeStructureMapStructureMapGroupComponent(t, "StructureMap", "group", element.getGroup().get(i), i);
14584  }
14585
14586  protected void composeStructureMapStructureMapStructureComponent(Complex parent, String parentType, String name, StructureMap.StructureMapStructureComponent element, int index) {
14587    if (element == null) 
14588      return;
14589    Complex t;
14590    if (Utilities.noString(parentType))
14591      t = parent;
14592    else {
14593      t = parent.predicate("fhir:"+parentType+'.'+name);
14594    }
14595    composeBackboneElement(t, "structure", name, element, index);
14596    if (element.hasUrlElement())
14597      composeCanonical(t, "StructureMap", "url", element.getUrlElement(), -1);
14598    if (element.hasModeElement())
14599      composeEnum(t, "StructureMap", "mode", element.getModeElement(), -1);
14600    if (element.hasAliasElement())
14601      composeString(t, "StructureMap", "alias", element.getAliasElement(), -1);
14602    if (element.hasDocumentationElement())
14603      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
14604  }
14605
14606  protected void composeStructureMapStructureMapGroupComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupComponent element, int index) {
14607    if (element == null) 
14608      return;
14609    Complex t;
14610    if (Utilities.noString(parentType))
14611      t = parent;
14612    else {
14613      t = parent.predicate("fhir:"+parentType+'.'+name);
14614    }
14615    composeBackboneElement(t, "group", name, element, index);
14616    if (element.hasNameElement())
14617      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
14618    if (element.hasExtendsElement())
14619      composeId(t, "StructureMap", "extends", element.getExtendsElement(), -1);
14620    if (element.hasTypeModeElement())
14621      composeEnum(t, "StructureMap", "typeMode", element.getTypeModeElement(), -1);
14622    if (element.hasDocumentationElement())
14623      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
14624    for (int i = 0; i < element.getInput().size(); i++)
14625      composeStructureMapStructureMapGroupInputComponent(t, "StructureMap", "input", element.getInput().get(i), i);
14626    for (int i = 0; i < element.getRule().size(); i++)
14627      composeStructureMapStructureMapGroupRuleComponent(t, "StructureMap", "rule", element.getRule().get(i), i);
14628  }
14629
14630  protected void composeStructureMapStructureMapGroupInputComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupInputComponent element, int index) {
14631    if (element == null) 
14632      return;
14633    Complex t;
14634    if (Utilities.noString(parentType))
14635      t = parent;
14636    else {
14637      t = parent.predicate("fhir:"+parentType+'.'+name);
14638    }
14639    composeBackboneElement(t, "input", name, element, index);
14640    if (element.hasNameElement())
14641      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
14642    if (element.hasTypeElement())
14643      composeString(t, "StructureMap", "type", element.getTypeElement(), -1);
14644    if (element.hasModeElement())
14645      composeEnum(t, "StructureMap", "mode", element.getModeElement(), -1);
14646    if (element.hasDocumentationElement())
14647      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
14648  }
14649
14650  protected void composeStructureMapStructureMapGroupRuleComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleComponent element, int index) {
14651    if (element == null) 
14652      return;
14653    Complex t;
14654    if (Utilities.noString(parentType))
14655      t = parent;
14656    else {
14657      t = parent.predicate("fhir:"+parentType+'.'+name);
14658    }
14659    composeBackboneElement(t, "rule", name, element, index);
14660    if (element.hasNameElement())
14661      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
14662    for (int i = 0; i < element.getSource().size(); i++)
14663      composeStructureMapStructureMapGroupRuleSourceComponent(t, "StructureMap", "source", element.getSource().get(i), i);
14664    for (int i = 0; i < element.getTarget().size(); i++)
14665      composeStructureMapStructureMapGroupRuleTargetComponent(t, "StructureMap", "target", element.getTarget().get(i), i);
14666    for (int i = 0; i < element.getRule().size(); i++)
14667      composeStructureMapStructureMapGroupRuleComponent(t, "StructureMap", "rule", element.getRule().get(i), i);
14668    for (int i = 0; i < element.getDependent().size(); i++)
14669      composeStructureMapStructureMapGroupRuleDependentComponent(t, "StructureMap", "dependent", element.getDependent().get(i), i);
14670    if (element.hasDocumentationElement())
14671      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
14672  }
14673
14674  protected void composeStructureMapStructureMapGroupRuleSourceComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleSourceComponent element, int index) {
14675    if (element == null) 
14676      return;
14677    Complex t;
14678    if (Utilities.noString(parentType))
14679      t = parent;
14680    else {
14681      t = parent.predicate("fhir:"+parentType+'.'+name);
14682    }
14683    composeBackboneElement(t, "source", name, element, index);
14684    if (element.hasContextElement())
14685      composeId(t, "StructureMap", "context", element.getContextElement(), -1);
14686    if (element.hasMinElement())
14687      composeInteger(t, "StructureMap", "min", element.getMinElement(), -1);
14688    if (element.hasMaxElement())
14689      composeString(t, "StructureMap", "max", element.getMaxElement(), -1);
14690    if (element.hasTypeElement())
14691      composeString(t, "StructureMap", "type", element.getTypeElement(), -1);
14692    if (element.hasDefaultValue())
14693      composeType(t, "StructureMap", "defaultValue", element.getDefaultValue(), -1);
14694    if (element.hasElementElement())
14695      composeString(t, "StructureMap", "element", element.getElementElement(), -1);
14696    if (element.hasListModeElement())
14697      composeEnum(t, "StructureMap", "listMode", element.getListModeElement(), -1);
14698    if (element.hasVariableElement())
14699      composeId(t, "StructureMap", "variable", element.getVariableElement(), -1);
14700    if (element.hasConditionElement())
14701      composeString(t, "StructureMap", "condition", element.getConditionElement(), -1);
14702    if (element.hasCheckElement())
14703      composeString(t, "StructureMap", "check", element.getCheckElement(), -1);
14704    if (element.hasLogMessageElement())
14705      composeString(t, "StructureMap", "logMessage", element.getLogMessageElement(), -1);
14706  }
14707
14708  protected void composeStructureMapStructureMapGroupRuleTargetComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleTargetComponent element, int index) {
14709    if (element == null) 
14710      return;
14711    Complex t;
14712    if (Utilities.noString(parentType))
14713      t = parent;
14714    else {
14715      t = parent.predicate("fhir:"+parentType+'.'+name);
14716    }
14717    composeBackboneElement(t, "target", name, element, index);
14718    if (element.hasContextElement())
14719      composeId(t, "StructureMap", "context", element.getContextElement(), -1);
14720    if (element.hasContextTypeElement())
14721      composeEnum(t, "StructureMap", "contextType", element.getContextTypeElement(), -1);
14722    if (element.hasElementElement())
14723      composeString(t, "StructureMap", "element", element.getElementElement(), -1);
14724    if (element.hasVariableElement())
14725      composeId(t, "StructureMap", "variable", element.getVariableElement(), -1);
14726    for (int i = 0; i < element.getListMode().size(); i++)
14727      composeEnum(t, "StructureMap", "listMode", element.getListMode().get(i), i);
14728    if (element.hasListRuleIdElement())
14729      composeId(t, "StructureMap", "listRuleId", element.getListRuleIdElement(), -1);
14730    if (element.hasTransformElement())
14731      composeEnum(t, "StructureMap", "transform", element.getTransformElement(), -1);
14732    for (int i = 0; i < element.getParameter().size(); i++)
14733      composeStructureMapStructureMapGroupRuleTargetParameterComponent(t, "StructureMap", "parameter", element.getParameter().get(i), i);
14734  }
14735
14736  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element, int index) {
14737    if (element == null) 
14738      return;
14739    Complex t;
14740    if (Utilities.noString(parentType))
14741      t = parent;
14742    else {
14743      t = parent.predicate("fhir:"+parentType+'.'+name);
14744    }
14745    composeBackboneElement(t, "parameter", name, element, index);
14746    if (element.hasValue())
14747      composeType(t, "StructureMap", "value", element.getValue(), -1);
14748  }
14749
14750  protected void composeStructureMapStructureMapGroupRuleDependentComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleDependentComponent element, int index) {
14751    if (element == null) 
14752      return;
14753    Complex t;
14754    if (Utilities.noString(parentType))
14755      t = parent;
14756    else {
14757      t = parent.predicate("fhir:"+parentType+'.'+name);
14758    }
14759    composeBackboneElement(t, "dependent", name, element, index);
14760    if (element.hasNameElement())
14761      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
14762    for (int i = 0; i < element.getVariable().size(); i++)
14763      composeString(t, "StructureMap", "variable", element.getVariable().get(i), i);
14764  }
14765
14766  protected void composeSubscription(Complex parent, String parentType, String name, Subscription element, int index) {
14767    if (element == null) 
14768      return;
14769    Complex t;
14770    if (Utilities.noString(parentType))
14771      t = parent;
14772    else {
14773      t = parent.predicate("fhir:"+parentType+'.'+name);
14774    }
14775    composeDomainResource(t, "Subscription", name, element, index);
14776    if (element.hasStatusElement())
14777      composeEnum(t, "Subscription", "status", element.getStatusElement(), -1);
14778    for (int i = 0; i < element.getContact().size(); i++)
14779      composeContactPoint(t, "Subscription", "contact", element.getContact().get(i), i);
14780    if (element.hasEndElement())
14781      composeInstant(t, "Subscription", "end", element.getEndElement(), -1);
14782    if (element.hasReasonElement())
14783      composeString(t, "Subscription", "reason", element.getReasonElement(), -1);
14784    if (element.hasCriteriaElement())
14785      composeString(t, "Subscription", "criteria", element.getCriteriaElement(), -1);
14786    if (element.hasErrorElement())
14787      composeString(t, "Subscription", "error", element.getErrorElement(), -1);
14788    if (element.hasChannel())
14789      composeSubscriptionSubscriptionChannelComponent(t, "Subscription", "channel", element.getChannel(), -1);
14790    for (int i = 0; i < element.getTag().size(); i++)
14791      composeCoding(t, "Subscription", "tag", element.getTag().get(i), i);
14792  }
14793
14794  protected void composeSubscriptionSubscriptionChannelComponent(Complex parent, String parentType, String name, Subscription.SubscriptionChannelComponent element, int index) {
14795    if (element == null) 
14796      return;
14797    Complex t;
14798    if (Utilities.noString(parentType))
14799      t = parent;
14800    else {
14801      t = parent.predicate("fhir:"+parentType+'.'+name);
14802    }
14803    composeBackboneElement(t, "channel", name, element, index);
14804    if (element.hasTypeElement())
14805      composeEnum(t, "Subscription", "type", element.getTypeElement(), -1);
14806    if (element.hasEndpointElement())
14807      composeUrl(t, "Subscription", "endpoint", element.getEndpointElement(), -1);
14808    if (element.hasPayloadElement())
14809      composeString(t, "Subscription", "payload", element.getPayloadElement(), -1);
14810    for (int i = 0; i < element.getHeader().size(); i++)
14811      composeString(t, "Subscription", "header", element.getHeader().get(i), i);
14812  }
14813
14814  protected void composeSubstance(Complex parent, String parentType, String name, Substance element, int index) {
14815    if (element == null) 
14816      return;
14817    Complex t;
14818    if (Utilities.noString(parentType))
14819      t = parent;
14820    else {
14821      t = parent.predicate("fhir:"+parentType+'.'+name);
14822    }
14823    composeDomainResource(t, "Substance", name, element, index);
14824    for (int i = 0; i < element.getIdentifier().size(); i++)
14825      composeIdentifier(t, "Substance", "identifier", element.getIdentifier().get(i), i);
14826    if (element.hasStatusElement())
14827      composeEnum(t, "Substance", "status", element.getStatusElement(), -1);
14828    for (int i = 0; i < element.getCategory().size(); i++)
14829      composeCodeableConcept(t, "Substance", "category", element.getCategory().get(i), i);
14830    if (element.hasCode())
14831      composeCodeableConcept(t, "Substance", "code", element.getCode(), -1);
14832    if (element.hasDescriptionElement())
14833      composeString(t, "Substance", "description", element.getDescriptionElement(), -1);
14834    for (int i = 0; i < element.getInstance().size(); i++)
14835      composeSubstanceSubstanceInstanceComponent(t, "Substance", "instance", element.getInstance().get(i), i);
14836    for (int i = 0; i < element.getIngredient().size(); i++)
14837      composeSubstanceSubstanceIngredientComponent(t, "Substance", "ingredient", element.getIngredient().get(i), i);
14838  }
14839
14840  protected void composeSubstanceSubstanceInstanceComponent(Complex parent, String parentType, String name, Substance.SubstanceInstanceComponent element, int index) {
14841    if (element == null) 
14842      return;
14843    Complex t;
14844    if (Utilities.noString(parentType))
14845      t = parent;
14846    else {
14847      t = parent.predicate("fhir:"+parentType+'.'+name);
14848    }
14849    composeBackboneElement(t, "instance", name, element, index);
14850    if (element.hasIdentifier())
14851      composeIdentifier(t, "Substance", "identifier", element.getIdentifier(), -1);
14852    if (element.hasExpiryElement())
14853      composeDateTime(t, "Substance", "expiry", element.getExpiryElement(), -1);
14854    if (element.hasQuantity())
14855      composeQuantity(t, "Substance", "quantity", element.getQuantity(), -1);
14856  }
14857
14858  protected void composeSubstanceSubstanceIngredientComponent(Complex parent, String parentType, String name, Substance.SubstanceIngredientComponent element, int index) {
14859    if (element == null) 
14860      return;
14861    Complex t;
14862    if (Utilities.noString(parentType))
14863      t = parent;
14864    else {
14865      t = parent.predicate("fhir:"+parentType+'.'+name);
14866    }
14867    composeBackboneElement(t, "ingredient", name, element, index);
14868    if (element.hasQuantity())
14869      composeRatio(t, "Substance", "quantity", element.getQuantity(), -1);
14870    if (element.hasSubstance())
14871      composeType(t, "Substance", "substance", element.getSubstance(), -1);
14872  }
14873
14874  protected void composeSubstancePolymer(Complex parent, String parentType, String name, SubstancePolymer element, int index) {
14875    if (element == null) 
14876      return;
14877    Complex t;
14878    if (Utilities.noString(parentType))
14879      t = parent;
14880    else {
14881      t = parent.predicate("fhir:"+parentType+'.'+name);
14882    }
14883    composeDomainResource(t, "SubstancePolymer", name, element, index);
14884    if (element.hasClass_())
14885      composeCodeableConcept(t, "SubstancePolymer", "class", element.getClass_(), -1);
14886    if (element.hasGeometry())
14887      composeCodeableConcept(t, "SubstancePolymer", "geometry", element.getGeometry(), -1);
14888    for (int i = 0; i < element.getCopolymerConnectivity().size(); i++)
14889      composeCodeableConcept(t, "SubstancePolymer", "copolymerConnectivity", element.getCopolymerConnectivity().get(i), i);
14890    for (int i = 0; i < element.getModification().size(); i++)
14891      composeString(t, "SubstancePolymer", "modification", element.getModification().get(i), i);
14892    for (int i = 0; i < element.getMonomerSet().size(); i++)
14893      composeSubstancePolymerSubstancePolymerMonomerSetComponent(t, "SubstancePolymer", "monomerSet", element.getMonomerSet().get(i), i);
14894    for (int i = 0; i < element.getRepeat().size(); i++)
14895      composeSubstancePolymerSubstancePolymerRepeatComponent(t, "SubstancePolymer", "repeat", element.getRepeat().get(i), i);
14896  }
14897
14898  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element, int index) {
14899    if (element == null) 
14900      return;
14901    Complex t;
14902    if (Utilities.noString(parentType))
14903      t = parent;
14904    else {
14905      t = parent.predicate("fhir:"+parentType+'.'+name);
14906    }
14907    composeBackboneElement(t, "monomerSet", name, element, index);
14908    if (element.hasRatioType())
14909      composeCodeableConcept(t, "SubstancePolymer", "ratioType", element.getRatioType(), -1);
14910    for (int i = 0; i < element.getStartingMaterial().size(); i++)
14911      composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(t, "SubstancePolymer", "startingMaterial", element.getStartingMaterial().get(i), i);
14912  }
14913
14914  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element, int index) {
14915    if (element == null) 
14916      return;
14917    Complex t;
14918    if (Utilities.noString(parentType))
14919      t = parent;
14920    else {
14921      t = parent.predicate("fhir:"+parentType+'.'+name);
14922    }
14923    composeBackboneElement(t, "startingMaterial", name, element, index);
14924    if (element.hasMaterial())
14925      composeCodeableConcept(t, "SubstancePolymer", "material", element.getMaterial(), -1);
14926    if (element.hasType())
14927      composeCodeableConcept(t, "SubstancePolymer", "type", element.getType(), -1);
14928    if (element.hasIsDefiningElement())
14929      composeBoolean(t, "SubstancePolymer", "isDefining", element.getIsDefiningElement(), -1);
14930    if (element.hasAmount())
14931      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
14932  }
14933
14934  protected void composeSubstancePolymerSubstancePolymerRepeatComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatComponent element, int index) {
14935    if (element == null) 
14936      return;
14937    Complex t;
14938    if (Utilities.noString(parentType))
14939      t = parent;
14940    else {
14941      t = parent.predicate("fhir:"+parentType+'.'+name);
14942    }
14943    composeBackboneElement(t, "repeat", name, element, index);
14944    if (element.hasNumberOfUnitsElement())
14945      composeInteger(t, "SubstancePolymer", "numberOfUnits", element.getNumberOfUnitsElement(), -1);
14946    if (element.hasAverageMolecularFormulaElement())
14947      composeString(t, "SubstancePolymer", "averageMolecularFormula", element.getAverageMolecularFormulaElement(), -1);
14948    if (element.hasRepeatUnitAmountType())
14949      composeCodeableConcept(t, "SubstancePolymer", "repeatUnitAmountType", element.getRepeatUnitAmountType(), -1);
14950    for (int i = 0; i < element.getRepeatUnit().size(); i++)
14951      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(t, "SubstancePolymer", "repeatUnit", element.getRepeatUnit().get(i), i);
14952  }
14953
14954  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element, int index) {
14955    if (element == null) 
14956      return;
14957    Complex t;
14958    if (Utilities.noString(parentType))
14959      t = parent;
14960    else {
14961      t = parent.predicate("fhir:"+parentType+'.'+name);
14962    }
14963    composeBackboneElement(t, "repeatUnit", name, element, index);
14964    if (element.hasOrientationOfPolymerisation())
14965      composeCodeableConcept(t, "SubstancePolymer", "orientationOfPolymerisation", element.getOrientationOfPolymerisation(), -1);
14966    if (element.hasRepeatUnitElement())
14967      composeString(t, "SubstancePolymer", "repeatUnit", element.getRepeatUnitElement(), -1);
14968    if (element.hasAmount())
14969      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
14970    for (int i = 0; i < element.getDegreeOfPolymerisation().size(); i++)
14971      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(t, "SubstancePolymer", "degreeOfPolymerisation", element.getDegreeOfPolymerisation().get(i), i);
14972    for (int i = 0; i < element.getStructuralRepresentation().size(); i++)
14973      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(t, "SubstancePolymer", "structuralRepresentation", element.getStructuralRepresentation().get(i), i);
14974  }
14975
14976  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element, int index) {
14977    if (element == null) 
14978      return;
14979    Complex t;
14980    if (Utilities.noString(parentType))
14981      t = parent;
14982    else {
14983      t = parent.predicate("fhir:"+parentType+'.'+name);
14984    }
14985    composeBackboneElement(t, "degreeOfPolymerisation", name, element, index);
14986    if (element.hasDegree())
14987      composeCodeableConcept(t, "SubstancePolymer", "degree", element.getDegree(), -1);
14988    if (element.hasAmount())
14989      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
14990  }
14991
14992  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element, int index) {
14993    if (element == null) 
14994      return;
14995    Complex t;
14996    if (Utilities.noString(parentType))
14997      t = parent;
14998    else {
14999      t = parent.predicate("fhir:"+parentType+'.'+name);
15000    }
15001    composeBackboneElement(t, "structuralRepresentation", name, element, index);
15002    if (element.hasType())
15003      composeCodeableConcept(t, "SubstancePolymer", "type", element.getType(), -1);
15004    if (element.hasRepresentationElement())
15005      composeString(t, "SubstancePolymer", "representation", element.getRepresentationElement(), -1);
15006    if (element.hasAttachment())
15007      composeAttachment(t, "SubstancePolymer", "attachment", element.getAttachment(), -1);
15008  }
15009
15010  protected void composeSubstanceReferenceInformation(Complex parent, String parentType, String name, SubstanceReferenceInformation element, int index) {
15011    if (element == null) 
15012      return;
15013    Complex t;
15014    if (Utilities.noString(parentType))
15015      t = parent;
15016    else {
15017      t = parent.predicate("fhir:"+parentType+'.'+name);
15018    }
15019    composeDomainResource(t, "SubstanceReferenceInformation", name, element, index);
15020    if (element.hasCommentElement())
15021      composeString(t, "SubstanceReferenceInformation", "comment", element.getCommentElement(), -1);
15022    for (int i = 0; i < element.getGene().size(); i++)
15023      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(t, "SubstanceReferenceInformation", "gene", element.getGene().get(i), i);
15024    for (int i = 0; i < element.getGene().size(); i++)
15025      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(t, "SubstanceReferenceInformation", "geneElement", null, i);
15026    for (int i = 0; i < element.getClassification().size(); i++)
15027      composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(t, "SubstanceReferenceInformation", "classification", element.getClassification().get(i), i);
15028    for (int i = 0; i < element.getRelationship().size(); i++)
15029      composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(t, "SubstanceReferenceInformation", "relationship", element.getRelationship().get(i), i);
15030    for (int i = 0; i < element.getTarget().size(); i++)
15031      composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(t, "SubstanceReferenceInformation", "target", element.getTarget().get(i), i);
15032  }
15033
15034  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element, int index) {
15035    if (element == null) 
15036      return;
15037    Complex t;
15038    if (Utilities.noString(parentType))
15039      t = parent;
15040    else {
15041      t = parent.predicate("fhir:"+parentType+'.'+name);
15042    }
15043    composeBackboneElement(t, "gene", name, element, index);
15044    if (element.hasGeneSequenceOrigin())
15045      composeCodeableConcept(t, "SubstanceReferenceInformation", "geneSequenceOrigin", element.getGeneSequenceOrigin(), -1);
15046    if (element.hasGene())
15047      composeCodeableConcept(t, "SubstanceReferenceInformation", "gene", element.getGene(), -1);
15048    for (int i = 0; i < element.getSource().size(); i++)
15049      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15050  }
15051
15052  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element, int index) {
15053    if (element == null) 
15054      return;
15055    Complex t;
15056    if (Utilities.noString(parentType))
15057      t = parent;
15058    else {
15059      t = parent.predicate("fhir:"+parentType+'.'+name);
15060    }
15061    composeBackboneElement(t, "geneElement", name, element, index);
15062    if (element.hasType())
15063      composeCodeableConcept(t, "SubstanceReferenceInformation", "type", element.getType(), -1);
15064    if (element.hasElement())
15065      composeIdentifier(t, "SubstanceReferenceInformation", "element", element.getElement(), -1);
15066    for (int i = 0; i < element.getSource().size(); i++)
15067      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15068  }
15069
15070  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element, int index) {
15071    if (element == null) 
15072      return;
15073    Complex t;
15074    if (Utilities.noString(parentType))
15075      t = parent;
15076    else {
15077      t = parent.predicate("fhir:"+parentType+'.'+name);
15078    }
15079    composeBackboneElement(t, "classification", name, element, index);
15080    if (element.hasDomain())
15081      composeCodeableConcept(t, "SubstanceReferenceInformation", "domain", element.getDomain(), -1);
15082    if (element.hasClassification())
15083      composeCodeableConcept(t, "SubstanceReferenceInformation", "classification", element.getClassification(), -1);
15084    for (int i = 0; i < element.getSubtype().size(); i++)
15085      composeCodeableConcept(t, "SubstanceReferenceInformation", "subtype", element.getSubtype().get(i), i);
15086    for (int i = 0; i < element.getSource().size(); i++)
15087      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15088  }
15089
15090  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent element, int index) {
15091    if (element == null) 
15092      return;
15093    Complex t;
15094    if (Utilities.noString(parentType))
15095      t = parent;
15096    else {
15097      t = parent.predicate("fhir:"+parentType+'.'+name);
15098    }
15099    composeBackboneElement(t, "relationship", name, element, index);
15100    if (element.hasSubstance())
15101      composeType(t, "SubstanceReferenceInformation", "substance", element.getSubstance(), -1);
15102    if (element.hasRelationship())
15103      composeCodeableConcept(t, "SubstanceReferenceInformation", "relationship", element.getRelationship(), -1);
15104    if (element.hasInteraction())
15105      composeCodeableConcept(t, "SubstanceReferenceInformation", "interaction", element.getInteraction(), -1);
15106    if (element.hasIsDefiningElement())
15107      composeBoolean(t, "SubstanceReferenceInformation", "isDefining", element.getIsDefiningElement(), -1);
15108    if (element.hasAmount())
15109      composeType(t, "SubstanceReferenceInformation", "amount", element.getAmount(), -1);
15110    if (element.hasAmountType())
15111      composeCodeableConcept(t, "SubstanceReferenceInformation", "amountType", element.getAmountType(), -1);
15112    if (element.hasAmountTextElement())
15113      composeString(t, "SubstanceReferenceInformation", "amountText", element.getAmountTextElement(), -1);
15114    for (int i = 0; i < element.getSource().size(); i++)
15115      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15116  }
15117
15118  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element, int index) {
15119    if (element == null) 
15120      return;
15121    Complex t;
15122    if (Utilities.noString(parentType))
15123      t = parent;
15124    else {
15125      t = parent.predicate("fhir:"+parentType+'.'+name);
15126    }
15127    composeBackboneElement(t, "target", name, element, index);
15128    if (element.hasTarget())
15129      composeIdentifier(t, "SubstanceReferenceInformation", "target", element.getTarget(), -1);
15130    if (element.hasType())
15131      composeCodeableConcept(t, "SubstanceReferenceInformation", "type", element.getType(), -1);
15132    if (element.hasInteraction())
15133      composeCodeableConcept(t, "SubstanceReferenceInformation", "interaction", element.getInteraction(), -1);
15134    if (element.hasOrganism())
15135      composeCodeableConcept(t, "SubstanceReferenceInformation", "organism", element.getOrganism(), -1);
15136    if (element.hasOrganismType())
15137      composeCodeableConcept(t, "SubstanceReferenceInformation", "organismType", element.getOrganismType(), -1);
15138    for (int i = 0; i < element.getSource().size(); i++)
15139      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15140    if (element.hasAmount())
15141      composeType(t, "SubstanceReferenceInformation", "amount", element.getAmount(), -1);
15142    if (element.hasAmountType())
15143      composeCodeableConcept(t, "SubstanceReferenceInformation", "amountType", element.getAmountType(), -1);
15144  }
15145
15146  protected void composeSubstanceSpecification(Complex parent, String parentType, String name, SubstanceSpecification element, int index) {
15147    if (element == null) 
15148      return;
15149    Complex t;
15150    if (Utilities.noString(parentType))
15151      t = parent;
15152    else {
15153      t = parent.predicate("fhir:"+parentType+'.'+name);
15154    }
15155    composeDomainResource(t, "SubstanceSpecification", name, element, index);
15156    if (element.hasCommentElement())
15157      composeString(t, "SubstanceSpecification", "comment", element.getCommentElement(), -1);
15158    if (element.hasStoichiometricElement())
15159      composeBoolean(t, "SubstanceSpecification", "stoichiometric", element.getStoichiometricElement(), -1);
15160    if (element.hasIdentifier())
15161      composeIdentifier(t, "SubstanceSpecification", "identifier", element.getIdentifier(), -1);
15162    if (element.hasType())
15163      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
15164    for (int i = 0; i < element.getReferenceSource().size(); i++)
15165      composeString(t, "SubstanceSpecification", "referenceSource", element.getReferenceSource().get(i), i);
15166    for (int i = 0; i < element.getMoiety().size(); i++)
15167      composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(t, "SubstanceSpecification", "moiety", element.getMoiety().get(i), i);
15168    for (int i = 0; i < element.getProperty().size(); i++)
15169      composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(t, "SubstanceSpecification", "property", element.getProperty().get(i), i);
15170    if (element.hasReferenceInformation())
15171      composeReference(t, "SubstanceSpecification", "referenceInformation", element.getReferenceInformation(), -1);
15172    if (element.hasStructure())
15173      composeSubstanceSpecificationSubstanceSpecificationStructureComponent(t, "SubstanceSpecification", "structure", element.getStructure(), -1);
15174    for (int i = 0; i < element.getSubstanceCode().size(); i++)
15175      composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(t, "SubstanceSpecification", "substanceCode", element.getSubstanceCode().get(i), i);
15176    for (int i = 0; i < element.getSubstanceName().size(); i++)
15177      composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(t, "SubstanceSpecification", "substanceName", element.getSubstanceName().get(i), i);
15178    for (int i = 0; i < element.getMolecularWeight().size(); i++)
15179      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight().get(i), i);
15180    if (element.hasPolymer())
15181      composeReference(t, "SubstanceSpecification", "polymer", element.getPolymer(), -1);
15182  }
15183
15184  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationMoietyComponent element, int index) {
15185    if (element == null) 
15186      return;
15187    Complex t;
15188    if (Utilities.noString(parentType))
15189      t = parent;
15190    else {
15191      t = parent.predicate("fhir:"+parentType+'.'+name);
15192    }
15193    composeBackboneElement(t, "moiety", name, element, index);
15194    if (element.hasRole())
15195      composeCodeableConcept(t, "SubstanceSpecification", "role", element.getRole(), -1);
15196    if (element.hasIdentifier())
15197      composeIdentifier(t, "SubstanceSpecification", "identifier", element.getIdentifier(), -1);
15198    if (element.hasNameElement())
15199      composeString(t, "SubstanceSpecification", "name", element.getNameElement(), -1);
15200    if (element.hasStereochemistry())
15201      composeCodeableConcept(t, "SubstanceSpecification", "stereochemistry", element.getStereochemistry(), -1);
15202    if (element.hasOpticalActivity())
15203      composeCodeableConcept(t, "SubstanceSpecification", "opticalActivity", element.getOpticalActivity(), -1);
15204    if (element.hasMolecularFormulaElement())
15205      composeString(t, "SubstanceSpecification", "molecularFormula", element.getMolecularFormulaElement(), -1);
15206    if (element.hasAmountElement())
15207      composeString(t, "SubstanceSpecification", "amount", element.getAmountElement(), -1);
15208  }
15209
15210  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationPropertyComponent element, int index) {
15211    if (element == null) 
15212      return;
15213    Complex t;
15214    if (Utilities.noString(parentType))
15215      t = parent;
15216    else {
15217      t = parent.predicate("fhir:"+parentType+'.'+name);
15218    }
15219    composeBackboneElement(t, "property", name, element, index);
15220    if (element.hasType())
15221      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
15222    if (element.hasName())
15223      composeCodeableConcept(t, "SubstanceSpecification", "name", element.getName(), -1);
15224    if (element.hasParametersElement())
15225      composeString(t, "SubstanceSpecification", "parameters", element.getParametersElement(), -1);
15226    if (element.hasSubstanceId())
15227      composeIdentifier(t, "SubstanceSpecification", "substanceId", element.getSubstanceId(), -1);
15228    if (element.hasSubstanceNameElement())
15229      composeString(t, "SubstanceSpecification", "substanceName", element.getSubstanceNameElement(), -1);
15230    if (element.hasAmountElement())
15231      composeString(t, "SubstanceSpecification", "amount", element.getAmountElement(), -1);
15232  }
15233
15234  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureComponent element, int index) {
15235    if (element == null) 
15236      return;
15237    Complex t;
15238    if (Utilities.noString(parentType))
15239      t = parent;
15240    else {
15241      t = parent.predicate("fhir:"+parentType+'.'+name);
15242    }
15243    composeBackboneElement(t, "structure", name, element, index);
15244    if (element.hasStereochemistry())
15245      composeCodeableConcept(t, "SubstanceSpecification", "stereochemistry", element.getStereochemistry(), -1);
15246    if (element.hasOpticalActivity())
15247      composeCodeableConcept(t, "SubstanceSpecification", "opticalActivity", element.getOpticalActivity(), -1);
15248    if (element.hasMolecularFormulaElement())
15249      composeString(t, "SubstanceSpecification", "molecularFormula", element.getMolecularFormulaElement(), -1);
15250    if (element.hasMolecularFormulaByMoietyElement())
15251      composeString(t, "SubstanceSpecification", "molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement(), -1);
15252    for (int i = 0; i < element.getIsotope().size(); i++)
15253      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(t, "SubstanceSpecification", "isotope", element.getIsotope().get(i), i);
15254    if (element.hasMolecularWeight())
15255      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight(), -1);
15256    for (int i = 0; i < element.getReferenceSource().size(); i++)
15257      composeReference(t, "SubstanceSpecification", "referenceSource", element.getReferenceSource().get(i), i);
15258    for (int i = 0; i < element.getStructuralRepresentation().size(); i++)
15259      composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(t, "SubstanceSpecification", "structuralRepresentation", element.getStructuralRepresentation().get(i), i);
15260  }
15261
15262  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element, int index) {
15263    if (element == null) 
15264      return;
15265    Complex t;
15266    if (Utilities.noString(parentType))
15267      t = parent;
15268    else {
15269      t = parent.predicate("fhir:"+parentType+'.'+name);
15270    }
15271    composeBackboneElement(t, "isotope", name, element, index);
15272    if (element.hasNuclideId())
15273      composeIdentifier(t, "SubstanceSpecification", "nuclideId", element.getNuclideId(), -1);
15274    if (element.hasNuclideName())
15275      composeCodeableConcept(t, "SubstanceSpecification", "nuclideName", element.getNuclideName(), -1);
15276    if (element.hasSubstitutionType())
15277      composeCodeableConcept(t, "SubstanceSpecification", "substitutionType", element.getSubstitutionType(), -1);
15278    if (element.hasNuclideHalfLife())
15279      composeQuantity(t, "SubstanceSpecification", "nuclideHalfLife", element.getNuclideHalfLife(), -1);
15280    if (element.hasAmountElement())
15281      composeString(t, "SubstanceSpecification", "amount", element.getAmountElement(), -1);
15282    if (element.hasMolecularWeight())
15283      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight(), -1);
15284  }
15285
15286  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element, int index) {
15287    if (element == null) 
15288      return;
15289    Complex t;
15290    if (Utilities.noString(parentType))
15291      t = parent;
15292    else {
15293      t = parent.predicate("fhir:"+parentType+'.'+name);
15294    }
15295    composeBackboneElement(t, "molecularWeight", name, element, index);
15296    if (element.hasMethod())
15297      composeCodeableConcept(t, "SubstanceSpecification", "method", element.getMethod(), -1);
15298    if (element.hasType())
15299      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
15300    if (element.hasAmountElement())
15301      composeString(t, "SubstanceSpecification", "amount", element.getAmountElement(), -1);
15302  }
15303
15304  protected void composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent element, int index) {
15305    if (element == null) 
15306      return;
15307    Complex t;
15308    if (Utilities.noString(parentType))
15309      t = parent;
15310    else {
15311      t = parent.predicate("fhir:"+parentType+'.'+name);
15312    }
15313    composeBackboneElement(t, "structuralRepresentation", name, element, index);
15314    if (element.hasType())
15315      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
15316    if (element.hasRepresentationElement())
15317      composeString(t, "SubstanceSpecification", "representation", element.getRepresentationElement(), -1);
15318    if (element.hasAttachment())
15319      composeAttachment(t, "SubstanceSpecification", "attachment", element.getAttachment(), -1);
15320  }
15321
15322  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent element, int index) {
15323    if (element == null) 
15324      return;
15325    Complex t;
15326    if (Utilities.noString(parentType))
15327      t = parent;
15328    else {
15329      t = parent.predicate("fhir:"+parentType+'.'+name);
15330    }
15331    composeBackboneElement(t, "substanceCode", name, element, index);
15332    if (element.hasCode())
15333      composeCodeableConcept(t, "SubstanceSpecification", "code", element.getCode(), -1);
15334    if (element.hasStatus())
15335      composeCodeableConcept(t, "SubstanceSpecification", "status", element.getStatus(), -1);
15336    if (element.hasStatusDateElement())
15337      composeDateTime(t, "SubstanceSpecification", "statusDate", element.getStatusDateElement(), -1);
15338    if (element.hasCommentElement())
15339      composeString(t, "SubstanceSpecification", "comment", element.getCommentElement(), -1);
15340    for (int i = 0; i < element.getReferenceSource().size(); i++)
15341      composeString(t, "SubstanceSpecification", "referenceSource", element.getReferenceSource().get(i), i);
15342  }
15343
15344  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent element, int index) {
15345    if (element == null) 
15346      return;
15347    Complex t;
15348    if (Utilities.noString(parentType))
15349      t = parent;
15350    else {
15351      t = parent.predicate("fhir:"+parentType+'.'+name);
15352    }
15353    composeBackboneElement(t, "substanceName", name, element, index);
15354    if (element.hasNameElement())
15355      composeString(t, "SubstanceSpecification", "name", element.getNameElement(), -1);
15356    if (element.hasType())
15357      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
15358    for (int i = 0; i < element.getLanguage().size(); i++)
15359      composeCodeableConcept(t, "SubstanceSpecification", "language", element.getLanguage().get(i), i);
15360    for (int i = 0; i < element.getDomain().size(); i++)
15361      composeCodeableConcept(t, "SubstanceSpecification", "domain", element.getDomain().get(i), i);
15362    for (int i = 0; i < element.getJurisdiction().size(); i++)
15363      composeCodeableConcept(t, "SubstanceSpecification", "jurisdiction", element.getJurisdiction().get(i), i);
15364    for (int i = 0; i < element.getOfficialName().size(); i++)
15365      composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(t, "SubstanceSpecification", "officialName", element.getOfficialName().get(i), i);
15366    for (int i = 0; i < element.getReferenceSource().size(); i++)
15367      composeString(t, "SubstanceSpecification", "referenceSource", element.getReferenceSource().get(i), i);
15368  }
15369
15370  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent element, int index) {
15371    if (element == null) 
15372      return;
15373    Complex t;
15374    if (Utilities.noString(parentType))
15375      t = parent;
15376    else {
15377      t = parent.predicate("fhir:"+parentType+'.'+name);
15378    }
15379    composeBackboneElement(t, "officialName", name, element, index);
15380    if (element.hasAuthority())
15381      composeCodeableConcept(t, "SubstanceSpecification", "authority", element.getAuthority(), -1);
15382    if (element.hasStatus())
15383      composeCodeableConcept(t, "SubstanceSpecification", "status", element.getStatus(), -1);
15384    if (element.hasDateElement())
15385      composeDateTime(t, "SubstanceSpecification", "date", element.getDateElement(), -1);
15386  }
15387
15388  protected void composeSupplyDelivery(Complex parent, String parentType, String name, SupplyDelivery element, int index) {
15389    if (element == null) 
15390      return;
15391    Complex t;
15392    if (Utilities.noString(parentType))
15393      t = parent;
15394    else {
15395      t = parent.predicate("fhir:"+parentType+'.'+name);
15396    }
15397    composeDomainResource(t, "SupplyDelivery", name, element, index);
15398    for (int i = 0; i < element.getIdentifier().size(); i++)
15399      composeIdentifier(t, "SupplyDelivery", "identifier", element.getIdentifier().get(i), i);
15400    for (int i = 0; i < element.getBasedOn().size(); i++)
15401      composeReference(t, "SupplyDelivery", "basedOn", element.getBasedOn().get(i), i);
15402    for (int i = 0; i < element.getPartOf().size(); i++)
15403      composeReference(t, "SupplyDelivery", "partOf", element.getPartOf().get(i), i);
15404    if (element.hasStatusElement())
15405      composeEnum(t, "SupplyDelivery", "status", element.getStatusElement(), -1);
15406    if (element.hasPatient())
15407      composeReference(t, "SupplyDelivery", "patient", element.getPatient(), -1);
15408    if (element.hasType())
15409      composeCodeableConcept(t, "SupplyDelivery", "type", element.getType(), -1);
15410    if (element.hasSuppliedItem())
15411      composeSupplyDeliverySupplyDeliverySuppliedItemComponent(t, "SupplyDelivery", "suppliedItem", element.getSuppliedItem(), -1);
15412    if (element.hasOccurrence())
15413      composeType(t, "SupplyDelivery", "occurrence", element.getOccurrence(), -1);
15414    if (element.hasSupplier())
15415      composeReference(t, "SupplyDelivery", "supplier", element.getSupplier(), -1);
15416    if (element.hasDestination())
15417      composeReference(t, "SupplyDelivery", "destination", element.getDestination(), -1);
15418    for (int i = 0; i < element.getReceiver().size(); i++)
15419      composeReference(t, "SupplyDelivery", "receiver", element.getReceiver().get(i), i);
15420  }
15421
15422  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(Complex parent, String parentType, String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element, int index) {
15423    if (element == null) 
15424      return;
15425    Complex t;
15426    if (Utilities.noString(parentType))
15427      t = parent;
15428    else {
15429      t = parent.predicate("fhir:"+parentType+'.'+name);
15430    }
15431    composeBackboneElement(t, "suppliedItem", name, element, index);
15432    if (element.hasQuantity())
15433      composeQuantity(t, "SupplyDelivery", "quantity", element.getQuantity(), -1);
15434    if (element.hasItem())
15435      composeType(t, "SupplyDelivery", "item", element.getItem(), -1);
15436  }
15437
15438  protected void composeSupplyRequest(Complex parent, String parentType, String name, SupplyRequest element, int index) {
15439    if (element == null) 
15440      return;
15441    Complex t;
15442    if (Utilities.noString(parentType))
15443      t = parent;
15444    else {
15445      t = parent.predicate("fhir:"+parentType+'.'+name);
15446    }
15447    composeDomainResource(t, "SupplyRequest", name, element, index);
15448    if (element.hasIdentifier())
15449      composeIdentifier(t, "SupplyRequest", "identifier", element.getIdentifier(), -1);
15450    if (element.hasStatusElement())
15451      composeEnum(t, "SupplyRequest", "status", element.getStatusElement(), -1);
15452    if (element.hasCategory())
15453      composeCodeableConcept(t, "SupplyRequest", "category", element.getCategory(), -1);
15454    if (element.hasPriorityElement())
15455      composeEnum(t, "SupplyRequest", "priority", element.getPriorityElement(), -1);
15456    if (element.hasItem())
15457      composeType(t, "SupplyRequest", "item", element.getItem(), -1);
15458    if (element.hasQuantity())
15459      composeQuantity(t, "SupplyRequest", "quantity", element.getQuantity(), -1);
15460    for (int i = 0; i < element.getParameter().size(); i++)
15461      composeSupplyRequestSupplyRequestParameterComponent(t, "SupplyRequest", "parameter", element.getParameter().get(i), i);
15462    if (element.hasOccurrence())
15463      composeType(t, "SupplyRequest", "occurrence", element.getOccurrence(), -1);
15464    if (element.hasAuthoredOnElement())
15465      composeDateTime(t, "SupplyRequest", "authoredOn", element.getAuthoredOnElement(), -1);
15466    if (element.hasRequester())
15467      composeReference(t, "SupplyRequest", "requester", element.getRequester(), -1);
15468    for (int i = 0; i < element.getSupplier().size(); i++)
15469      composeReference(t, "SupplyRequest", "supplier", element.getSupplier().get(i), i);
15470    for (int i = 0; i < element.getReasonCode().size(); i++)
15471      composeCodeableConcept(t, "SupplyRequest", "reasonCode", element.getReasonCode().get(i), i);
15472    for (int i = 0; i < element.getReasonReference().size(); i++)
15473      composeReference(t, "SupplyRequest", "reasonReference", element.getReasonReference().get(i), i);
15474    if (element.hasDeliverFrom())
15475      composeReference(t, "SupplyRequest", "deliverFrom", element.getDeliverFrom(), -1);
15476    if (element.hasDeliverTo())
15477      composeReference(t, "SupplyRequest", "deliverTo", element.getDeliverTo(), -1);
15478  }
15479
15480  protected void composeSupplyRequestSupplyRequestParameterComponent(Complex parent, String parentType, String name, SupplyRequest.SupplyRequestParameterComponent element, int index) {
15481    if (element == null) 
15482      return;
15483    Complex t;
15484    if (Utilities.noString(parentType))
15485      t = parent;
15486    else {
15487      t = parent.predicate("fhir:"+parentType+'.'+name);
15488    }
15489    composeBackboneElement(t, "parameter", name, element, index);
15490    if (element.hasCode())
15491      composeCodeableConcept(t, "SupplyRequest", "code", element.getCode(), -1);
15492    if (element.hasValue())
15493      composeType(t, "SupplyRequest", "value", element.getValue(), -1);
15494  }
15495
15496  protected void composeTask(Complex parent, String parentType, String name, Task element, int index) {
15497    if (element == null) 
15498      return;
15499    Complex t;
15500    if (Utilities.noString(parentType))
15501      t = parent;
15502    else {
15503      t = parent.predicate("fhir:"+parentType+'.'+name);
15504    }
15505    composeDomainResource(t, "Task", name, element, index);
15506    for (int i = 0; i < element.getIdentifier().size(); i++)
15507      composeIdentifier(t, "Task", "identifier", element.getIdentifier().get(i), i);
15508    if (element.hasInstantiatesCanonicalElement())
15509      composeCanonical(t, "Task", "instantiatesCanonical", element.getInstantiatesCanonicalElement(), -1);
15510    if (element.hasInstantiatesUriElement())
15511      composeUri(t, "Task", "instantiatesUri", element.getInstantiatesUriElement(), -1);
15512    for (int i = 0; i < element.getBasedOn().size(); i++)
15513      composeReference(t, "Task", "basedOn", element.getBasedOn().get(i), i);
15514    if (element.hasGroupIdentifier())
15515      composeIdentifier(t, "Task", "groupIdentifier", element.getGroupIdentifier(), -1);
15516    for (int i = 0; i < element.getPartOf().size(); i++)
15517      composeReference(t, "Task", "partOf", element.getPartOf().get(i), i);
15518    if (element.hasStatusElement())
15519      composeEnum(t, "Task", "status", element.getStatusElement(), -1);
15520    if (element.hasStatusReason())
15521      composeCodeableConcept(t, "Task", "statusReason", element.getStatusReason(), -1);
15522    if (element.hasBusinessStatus())
15523      composeCodeableConcept(t, "Task", "businessStatus", element.getBusinessStatus(), -1);
15524    if (element.hasIntentElement())
15525      composeEnum(t, "Task", "intent", element.getIntentElement(), -1);
15526    if (element.hasPriorityElement())
15527      composeEnum(t, "Task", "priority", element.getPriorityElement(), -1);
15528    if (element.hasCode())
15529      composeCodeableConcept(t, "Task", "code", element.getCode(), -1);
15530    if (element.hasDescriptionElement())
15531      composeString(t, "Task", "description", element.getDescriptionElement(), -1);
15532    if (element.hasFocus())
15533      composeReference(t, "Task", "focus", element.getFocus(), -1);
15534    if (element.hasFor())
15535      composeReference(t, "Task", "for", element.getFor(), -1);
15536    if (element.hasContext())
15537      composeReference(t, "Task", "context", element.getContext(), -1);
15538    if (element.hasExecutionPeriod())
15539      composePeriod(t, "Task", "executionPeriod", element.getExecutionPeriod(), -1);
15540    if (element.hasAuthoredOnElement())
15541      composeDateTime(t, "Task", "authoredOn", element.getAuthoredOnElement(), -1);
15542    if (element.hasLastModifiedElement())
15543      composeDateTime(t, "Task", "lastModified", element.getLastModifiedElement(), -1);
15544    if (element.hasRequester())
15545      composeReference(t, "Task", "requester", element.getRequester(), -1);
15546    for (int i = 0; i < element.getPerformerType().size(); i++)
15547      composeCodeableConcept(t, "Task", "performerType", element.getPerformerType().get(i), i);
15548    if (element.hasOwner())
15549      composeReference(t, "Task", "owner", element.getOwner(), -1);
15550    if (element.hasLocation())
15551      composeReference(t, "Task", "location", element.getLocation(), -1);
15552    if (element.hasReasonCode())
15553      composeCodeableConcept(t, "Task", "reasonCode", element.getReasonCode(), -1);
15554    if (element.hasReasonReference())
15555      composeReference(t, "Task", "reasonReference", element.getReasonReference(), -1);
15556    for (int i = 0; i < element.getInsurance().size(); i++)
15557      composeReference(t, "Task", "insurance", element.getInsurance().get(i), i);
15558    for (int i = 0; i < element.getNote().size(); i++)
15559      composeAnnotation(t, "Task", "note", element.getNote().get(i), i);
15560    for (int i = 0; i < element.getRelevantHistory().size(); i++)
15561      composeReference(t, "Task", "relevantHistory", element.getRelevantHistory().get(i), i);
15562    if (element.hasRestriction())
15563      composeTaskTaskRestrictionComponent(t, "Task", "restriction", element.getRestriction(), -1);
15564    for (int i = 0; i < element.getInput().size(); i++)
15565      composeTaskParameterComponent(t, "Task", "input", element.getInput().get(i), i);
15566    for (int i = 0; i < element.getOutput().size(); i++)
15567      composeTaskTaskOutputComponent(t, "Task", "output", element.getOutput().get(i), i);
15568  }
15569
15570  protected void composeTaskTaskRestrictionComponent(Complex parent, String parentType, String name, Task.TaskRestrictionComponent element, int index) {
15571    if (element == null) 
15572      return;
15573    Complex t;
15574    if (Utilities.noString(parentType))
15575      t = parent;
15576    else {
15577      t = parent.predicate("fhir:"+parentType+'.'+name);
15578    }
15579    composeBackboneElement(t, "restriction", name, element, index);
15580    if (element.hasRepetitionsElement())
15581      composePositiveInt(t, "Task", "repetitions", element.getRepetitionsElement(), -1);
15582    if (element.hasPeriod())
15583      composePeriod(t, "Task", "period", element.getPeriod(), -1);
15584    for (int i = 0; i < element.getRecipient().size(); i++)
15585      composeReference(t, "Task", "recipient", element.getRecipient().get(i), i);
15586  }
15587
15588  protected void composeTaskParameterComponent(Complex parent, String parentType, String name, Task.ParameterComponent element, int index) {
15589    if (element == null) 
15590      return;
15591    Complex t;
15592    if (Utilities.noString(parentType))
15593      t = parent;
15594    else {
15595      t = parent.predicate("fhir:"+parentType+'.'+name);
15596    }
15597    composeBackboneElement(t, "input", name, element, index);
15598    if (element.hasType())
15599      composeCodeableConcept(t, "Task", "type", element.getType(), -1);
15600    if (element.hasValue())
15601      composeType(t, "Task", "value", element.getValue(), -1);
15602  }
15603
15604  protected void composeTaskTaskOutputComponent(Complex parent, String parentType, String name, Task.TaskOutputComponent element, int index) {
15605    if (element == null) 
15606      return;
15607    Complex t;
15608    if (Utilities.noString(parentType))
15609      t = parent;
15610    else {
15611      t = parent.predicate("fhir:"+parentType+'.'+name);
15612    }
15613    composeBackboneElement(t, "output", name, element, index);
15614    if (element.hasType())
15615      composeCodeableConcept(t, "Task", "type", element.getType(), -1);
15616    if (element.hasValue())
15617      composeType(t, "Task", "value", element.getValue(), -1);
15618  }
15619
15620  protected void composeTerminologyCapabilities(Complex parent, String parentType, String name, TerminologyCapabilities element, int index) {
15621    if (element == null) 
15622      return;
15623    Complex t;
15624    if (Utilities.noString(parentType))
15625      t = parent;
15626    else {
15627      t = parent.predicate("fhir:"+parentType+'.'+name);
15628    }
15629    composeDomainResource(t, "TerminologyCapabilities", name, element, index);
15630    if (element.hasUrlElement())
15631      composeUri(t, "TerminologyCapabilities", "url", element.getUrlElement(), -1);
15632    if (element.hasVersionElement())
15633      composeString(t, "TerminologyCapabilities", "version", element.getVersionElement(), -1);
15634    if (element.hasNameElement())
15635      composeString(t, "TerminologyCapabilities", "name", element.getNameElement(), -1);
15636    if (element.hasTitleElement())
15637      composeString(t, "TerminologyCapabilities", "title", element.getTitleElement(), -1);
15638    if (element.hasStatusElement())
15639      composeEnum(t, "TerminologyCapabilities", "status", element.getStatusElement(), -1);
15640    if (element.hasExperimentalElement())
15641      composeBoolean(t, "TerminologyCapabilities", "experimental", element.getExperimentalElement(), -1);
15642    if (element.hasDateElement())
15643      composeDateTime(t, "TerminologyCapabilities", "date", element.getDateElement(), -1);
15644    if (element.hasPublisherElement())
15645      composeString(t, "TerminologyCapabilities", "publisher", element.getPublisherElement(), -1);
15646    for (int i = 0; i < element.getContact().size(); i++)
15647      composeContactDetail(t, "TerminologyCapabilities", "contact", element.getContact().get(i), i);
15648    if (element.hasDescriptionElement())
15649      composeMarkdown(t, "TerminologyCapabilities", "description", element.getDescriptionElement(), -1);
15650    for (int i = 0; i < element.getUseContext().size(); i++)
15651      composeUsageContext(t, "TerminologyCapabilities", "useContext", element.getUseContext().get(i), i);
15652    for (int i = 0; i < element.getJurisdiction().size(); i++)
15653      composeCodeableConcept(t, "TerminologyCapabilities", "jurisdiction", element.getJurisdiction().get(i), i);
15654    if (element.hasPurposeElement())
15655      composeMarkdown(t, "TerminologyCapabilities", "purpose", element.getPurposeElement(), -1);
15656    if (element.hasCopyrightElement())
15657      composeMarkdown(t, "TerminologyCapabilities", "copyright", element.getCopyrightElement(), -1);
15658    if (element.hasKindElement())
15659      composeEnum(t, "TerminologyCapabilities", "kind", element.getKindElement(), -1);
15660    if (element.hasSoftware())
15661      composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(t, "TerminologyCapabilities", "software", element.getSoftware(), -1);
15662    if (element.hasImplementation())
15663      composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(t, "TerminologyCapabilities", "implementation", element.getImplementation(), -1);
15664    if (element.hasLockedDateElement())
15665      composeBoolean(t, "TerminologyCapabilities", "lockedDate", element.getLockedDateElement(), -1);
15666    for (int i = 0; i < element.getCodeSystem().size(); i++)
15667      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(t, "TerminologyCapabilities", "codeSystem", element.getCodeSystem().get(i), i);
15668    if (element.hasExpansion())
15669      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(t, "TerminologyCapabilities", "expansion", element.getExpansion(), -1);
15670    if (element.hasCodeSearchElement())
15671      composeEnum(t, "TerminologyCapabilities", "codeSearch", element.getCodeSearchElement(), -1);
15672    if (element.hasValidateCode())
15673      composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(t, "TerminologyCapabilities", "validateCode", element.getValidateCode(), -1);
15674    if (element.hasTranslation())
15675      composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(t, "TerminologyCapabilities", "translation", element.getTranslation(), -1);
15676    if (element.hasClosure())
15677      composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(t, "TerminologyCapabilities", "closure", element.getClosure(), -1);
15678  }
15679
15680  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element, int index) {
15681    if (element == null) 
15682      return;
15683    Complex t;
15684    if (Utilities.noString(parentType))
15685      t = parent;
15686    else {
15687      t = parent.predicate("fhir:"+parentType+'.'+name);
15688    }
15689    composeBackboneElement(t, "software", name, element, index);
15690    if (element.hasNameElement())
15691      composeString(t, "TerminologyCapabilities", "name", element.getNameElement(), -1);
15692    if (element.hasVersionElement())
15693      composeString(t, "TerminologyCapabilities", "version", element.getVersionElement(), -1);
15694  }
15695
15696  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element, int index) {
15697    if (element == null) 
15698      return;
15699    Complex t;
15700    if (Utilities.noString(parentType))
15701      t = parent;
15702    else {
15703      t = parent.predicate("fhir:"+parentType+'.'+name);
15704    }
15705    composeBackboneElement(t, "implementation", name, element, index);
15706    if (element.hasDescriptionElement())
15707      composeString(t, "TerminologyCapabilities", "description", element.getDescriptionElement(), -1);
15708    if (element.hasUrlElement())
15709      composeUrl(t, "TerminologyCapabilities", "url", element.getUrlElement(), -1);
15710  }
15711
15712  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element, int index) {
15713    if (element == null) 
15714      return;
15715    Complex t;
15716    if (Utilities.noString(parentType))
15717      t = parent;
15718    else {
15719      t = parent.predicate("fhir:"+parentType+'.'+name);
15720    }
15721    composeBackboneElement(t, "codeSystem", name, element, index);
15722    if (element.hasUriElement())
15723      composeCanonical(t, "TerminologyCapabilities", "uri", element.getUriElement(), -1);
15724    for (int i = 0; i < element.getVersion().size(); i++)
15725      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(t, "TerminologyCapabilities", "version", element.getVersion().get(i), i);
15726    if (element.hasSubsumptionElement())
15727      composeBoolean(t, "TerminologyCapabilities", "subsumption", element.getSubsumptionElement(), -1);
15728  }
15729
15730  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element, int index) {
15731    if (element == null) 
15732      return;
15733    Complex t;
15734    if (Utilities.noString(parentType))
15735      t = parent;
15736    else {
15737      t = parent.predicate("fhir:"+parentType+'.'+name);
15738    }
15739    composeBackboneElement(t, "version", name, element, index);
15740    if (element.hasCodeElement())
15741      composeString(t, "TerminologyCapabilities", "code", element.getCodeElement(), -1);
15742    if (element.hasIsDefaultElement())
15743      composeBoolean(t, "TerminologyCapabilities", "isDefault", element.getIsDefaultElement(), -1);
15744    if (element.hasCompositionalElement())
15745      composeBoolean(t, "TerminologyCapabilities", "compositional", element.getCompositionalElement(), -1);
15746    for (int i = 0; i < element.getLanguage().size(); i++)
15747      composeCode(t, "TerminologyCapabilities", "language", element.getLanguage().get(i), i);
15748    for (int i = 0; i < element.getFilter().size(); i++)
15749      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(t, "TerminologyCapabilities", "filter", element.getFilter().get(i), i);
15750    for (int i = 0; i < element.getProperty().size(); i++)
15751      composeCode(t, "TerminologyCapabilities", "property", element.getProperty().get(i), i);
15752  }
15753
15754  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element, int index) {
15755    if (element == null) 
15756      return;
15757    Complex t;
15758    if (Utilities.noString(parentType))
15759      t = parent;
15760    else {
15761      t = parent.predicate("fhir:"+parentType+'.'+name);
15762    }
15763    composeBackboneElement(t, "filter", name, element, index);
15764    if (element.hasCodeElement())
15765      composeCode(t, "TerminologyCapabilities", "code", element.getCodeElement(), -1);
15766    for (int i = 0; i < element.getOp().size(); i++)
15767      composeCode(t, "TerminologyCapabilities", "op", element.getOp().get(i), i);
15768  }
15769
15770  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element, int index) {
15771    if (element == null) 
15772      return;
15773    Complex t;
15774    if (Utilities.noString(parentType))
15775      t = parent;
15776    else {
15777      t = parent.predicate("fhir:"+parentType+'.'+name);
15778    }
15779    composeBackboneElement(t, "expansion", name, element, index);
15780    if (element.hasHierarchicalElement())
15781      composeBoolean(t, "TerminologyCapabilities", "hierarchical", element.getHierarchicalElement(), -1);
15782    if (element.hasPagingElement())
15783      composeBoolean(t, "TerminologyCapabilities", "paging", element.getPagingElement(), -1);
15784    if (element.hasIncompleteElement())
15785      composeBoolean(t, "TerminologyCapabilities", "incomplete", element.getIncompleteElement(), -1);
15786    for (int i = 0; i < element.getParameter().size(); i++)
15787      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(t, "TerminologyCapabilities", "parameter", element.getParameter().get(i), i);
15788    if (element.hasTextFilterElement())
15789      composeMarkdown(t, "TerminologyCapabilities", "textFilter", element.getTextFilterElement(), -1);
15790  }
15791
15792  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element, int index) {
15793    if (element == null) 
15794      return;
15795    Complex t;
15796    if (Utilities.noString(parentType))
15797      t = parent;
15798    else {
15799      t = parent.predicate("fhir:"+parentType+'.'+name);
15800    }
15801    composeBackboneElement(t, "parameter", name, element, index);
15802    if (element.hasNameElement())
15803      composeCode(t, "TerminologyCapabilities", "name", element.getNameElement(), -1);
15804    if (element.hasDocumentationElement())
15805      composeString(t, "TerminologyCapabilities", "documentation", element.getDocumentationElement(), -1);
15806  }
15807
15808  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element, int index) {
15809    if (element == null) 
15810      return;
15811    Complex t;
15812    if (Utilities.noString(parentType))
15813      t = parent;
15814    else {
15815      t = parent.predicate("fhir:"+parentType+'.'+name);
15816    }
15817    composeBackboneElement(t, "validateCode", name, element, index);
15818    if (element.hasTranslationsElement())
15819      composeBoolean(t, "TerminologyCapabilities", "translations", element.getTranslationsElement(), -1);
15820  }
15821
15822  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element, int index) {
15823    if (element == null) 
15824      return;
15825    Complex t;
15826    if (Utilities.noString(parentType))
15827      t = parent;
15828    else {
15829      t = parent.predicate("fhir:"+parentType+'.'+name);
15830    }
15831    composeBackboneElement(t, "translation", name, element, index);
15832    if (element.hasNeedsMapElement())
15833      composeBoolean(t, "TerminologyCapabilities", "needsMap", element.getNeedsMapElement(), -1);
15834  }
15835
15836  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element, int index) {
15837    if (element == null) 
15838      return;
15839    Complex t;
15840    if (Utilities.noString(parentType))
15841      t = parent;
15842    else {
15843      t = parent.predicate("fhir:"+parentType+'.'+name);
15844    }
15845    composeBackboneElement(t, "closure", name, element, index);
15846    if (element.hasTranslationElement())
15847      composeBoolean(t, "TerminologyCapabilities", "translation", element.getTranslationElement(), -1);
15848  }
15849
15850  protected void composeTestReport(Complex parent, String parentType, String name, TestReport element, int index) {
15851    if (element == null) 
15852      return;
15853    Complex t;
15854    if (Utilities.noString(parentType))
15855      t = parent;
15856    else {
15857      t = parent.predicate("fhir:"+parentType+'.'+name);
15858    }
15859    composeDomainResource(t, "TestReport", name, element, index);
15860    if (element.hasIdentifier())
15861      composeIdentifier(t, "TestReport", "identifier", element.getIdentifier(), -1);
15862    if (element.hasNameElement())
15863      composeString(t, "TestReport", "name", element.getNameElement(), -1);
15864    if (element.hasStatusElement())
15865      composeEnum(t, "TestReport", "status", element.getStatusElement(), -1);
15866    if (element.hasTestScript())
15867      composeReference(t, "TestReport", "testScript", element.getTestScript(), -1);
15868    if (element.hasResultElement())
15869      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
15870    if (element.hasScoreElement())
15871      composeDecimal(t, "TestReport", "score", element.getScoreElement(), -1);
15872    if (element.hasTesterElement())
15873      composeString(t, "TestReport", "tester", element.getTesterElement(), -1);
15874    if (element.hasIssuedElement())
15875      composeDateTime(t, "TestReport", "issued", element.getIssuedElement(), -1);
15876    for (int i = 0; i < element.getParticipant().size(); i++)
15877      composeTestReportTestReportParticipantComponent(t, "TestReport", "participant", element.getParticipant().get(i), i);
15878    if (element.hasSetup())
15879      composeTestReportTestReportSetupComponent(t, "TestReport", "setup", element.getSetup(), -1);
15880    for (int i = 0; i < element.getTest().size(); i++)
15881      composeTestReportTestReportTestComponent(t, "TestReport", "test", element.getTest().get(i), i);
15882    if (element.hasTeardown())
15883      composeTestReportTestReportTeardownComponent(t, "TestReport", "teardown", element.getTeardown(), -1);
15884  }
15885
15886  protected void composeTestReportTestReportParticipantComponent(Complex parent, String parentType, String name, TestReport.TestReportParticipantComponent element, int index) {
15887    if (element == null) 
15888      return;
15889    Complex t;
15890    if (Utilities.noString(parentType))
15891      t = parent;
15892    else {
15893      t = parent.predicate("fhir:"+parentType+'.'+name);
15894    }
15895    composeBackboneElement(t, "participant", name, element, index);
15896    if (element.hasTypeElement())
15897      composeEnum(t, "TestReport", "type", element.getTypeElement(), -1);
15898    if (element.hasUriElement())
15899      composeUri(t, "TestReport", "uri", element.getUriElement(), -1);
15900    if (element.hasDisplayElement())
15901      composeString(t, "TestReport", "display", element.getDisplayElement(), -1);
15902  }
15903
15904  protected void composeTestReportTestReportSetupComponent(Complex parent, String parentType, String name, TestReport.TestReportSetupComponent element, int index) {
15905    if (element == null) 
15906      return;
15907    Complex t;
15908    if (Utilities.noString(parentType))
15909      t = parent;
15910    else {
15911      t = parent.predicate("fhir:"+parentType+'.'+name);
15912    }
15913    composeBackboneElement(t, "setup", name, element, index);
15914    for (int i = 0; i < element.getAction().size(); i++)
15915      composeTestReportSetupActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
15916  }
15917
15918  protected void composeTestReportSetupActionComponent(Complex parent, String parentType, String name, TestReport.SetupActionComponent element, int index) {
15919    if (element == null) 
15920      return;
15921    Complex t;
15922    if (Utilities.noString(parentType))
15923      t = parent;
15924    else {
15925      t = parent.predicate("fhir:"+parentType+'.'+name);
15926    }
15927    composeBackboneElement(t, "action", name, element, index);
15928    if (element.hasOperation())
15929      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
15930    if (element.hasAssert())
15931      composeTestReportSetupActionAssertComponent(t, "TestReport", "assert", element.getAssert(), -1);
15932  }
15933
15934  protected void composeTestReportSetupActionOperationComponent(Complex parent, String parentType, String name, TestReport.SetupActionOperationComponent element, int index) {
15935    if (element == null) 
15936      return;
15937    Complex t;
15938    if (Utilities.noString(parentType))
15939      t = parent;
15940    else {
15941      t = parent.predicate("fhir:"+parentType+'.'+name);
15942    }
15943    composeBackboneElement(t, "operation", name, element, index);
15944    if (element.hasResultElement())
15945      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
15946    if (element.hasMessageElement())
15947      composeMarkdown(t, "TestReport", "message", element.getMessageElement(), -1);
15948    if (element.hasDetailElement())
15949      composeUri(t, "TestReport", "detail", element.getDetailElement(), -1);
15950  }
15951
15952  protected void composeTestReportSetupActionAssertComponent(Complex parent, String parentType, String name, TestReport.SetupActionAssertComponent element, int index) {
15953    if (element == null) 
15954      return;
15955    Complex t;
15956    if (Utilities.noString(parentType))
15957      t = parent;
15958    else {
15959      t = parent.predicate("fhir:"+parentType+'.'+name);
15960    }
15961    composeBackboneElement(t, "assert", name, element, index);
15962    if (element.hasResultElement())
15963      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
15964    if (element.hasMessageElement())
15965      composeMarkdown(t, "TestReport", "message", element.getMessageElement(), -1);
15966    if (element.hasDetailElement())
15967      composeString(t, "TestReport", "detail", element.getDetailElement(), -1);
15968  }
15969
15970  protected void composeTestReportTestReportTestComponent(Complex parent, String parentType, String name, TestReport.TestReportTestComponent element, int index) {
15971    if (element == null) 
15972      return;
15973    Complex t;
15974    if (Utilities.noString(parentType))
15975      t = parent;
15976    else {
15977      t = parent.predicate("fhir:"+parentType+'.'+name);
15978    }
15979    composeBackboneElement(t, "test", name, element, index);
15980    if (element.hasNameElement())
15981      composeString(t, "TestReport", "name", element.getNameElement(), -1);
15982    if (element.hasDescriptionElement())
15983      composeString(t, "TestReport", "description", element.getDescriptionElement(), -1);
15984    for (int i = 0; i < element.getAction().size(); i++)
15985      composeTestReportTestActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
15986  }
15987
15988  protected void composeTestReportTestActionComponent(Complex parent, String parentType, String name, TestReport.TestActionComponent element, int index) {
15989    if (element == null) 
15990      return;
15991    Complex t;
15992    if (Utilities.noString(parentType))
15993      t = parent;
15994    else {
15995      t = parent.predicate("fhir:"+parentType+'.'+name);
15996    }
15997    composeBackboneElement(t, "action", name, element, index);
15998    if (element.hasOperation())
15999      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
16000    if (element.hasAssert())
16001      composeTestReportSetupActionAssertComponent(t, "TestReport", "assert", element.getAssert(), -1);
16002  }
16003
16004  protected void composeTestReportTestReportTeardownComponent(Complex parent, String parentType, String name, TestReport.TestReportTeardownComponent element, int index) {
16005    if (element == null) 
16006      return;
16007    Complex t;
16008    if (Utilities.noString(parentType))
16009      t = parent;
16010    else {
16011      t = parent.predicate("fhir:"+parentType+'.'+name);
16012    }
16013    composeBackboneElement(t, "teardown", name, element, index);
16014    for (int i = 0; i < element.getAction().size(); i++)
16015      composeTestReportTeardownActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
16016  }
16017
16018  protected void composeTestReportTeardownActionComponent(Complex parent, String parentType, String name, TestReport.TeardownActionComponent element, int index) {
16019    if (element == null) 
16020      return;
16021    Complex t;
16022    if (Utilities.noString(parentType))
16023      t = parent;
16024    else {
16025      t = parent.predicate("fhir:"+parentType+'.'+name);
16026    }
16027    composeBackboneElement(t, "action", name, element, index);
16028    if (element.hasOperation())
16029      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
16030  }
16031
16032  protected void composeTestScript(Complex parent, String parentType, String name, TestScript element, int index) {
16033    if (element == null) 
16034      return;
16035    Complex t;
16036    if (Utilities.noString(parentType))
16037      t = parent;
16038    else {
16039      t = parent.predicate("fhir:"+parentType+'.'+name);
16040    }
16041    composeDomainResource(t, "TestScript", name, element, index);
16042    if (element.hasUrlElement())
16043      composeUri(t, "TestScript", "url", element.getUrlElement(), -1);
16044    if (element.hasIdentifier())
16045      composeIdentifier(t, "TestScript", "identifier", element.getIdentifier(), -1);
16046    if (element.hasVersionElement())
16047      composeString(t, "TestScript", "version", element.getVersionElement(), -1);
16048    if (element.hasNameElement())
16049      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16050    if (element.hasTitleElement())
16051      composeString(t, "TestScript", "title", element.getTitleElement(), -1);
16052    if (element.hasStatusElement())
16053      composeEnum(t, "TestScript", "status", element.getStatusElement(), -1);
16054    if (element.hasExperimentalElement())
16055      composeBoolean(t, "TestScript", "experimental", element.getExperimentalElement(), -1);
16056    if (element.hasDateElement())
16057      composeDateTime(t, "TestScript", "date", element.getDateElement(), -1);
16058    if (element.hasPublisherElement())
16059      composeString(t, "TestScript", "publisher", element.getPublisherElement(), -1);
16060    for (int i = 0; i < element.getContact().size(); i++)
16061      composeContactDetail(t, "TestScript", "contact", element.getContact().get(i), i);
16062    if (element.hasDescriptionElement())
16063      composeMarkdown(t, "TestScript", "description", element.getDescriptionElement(), -1);
16064    for (int i = 0; i < element.getUseContext().size(); i++)
16065      composeUsageContext(t, "TestScript", "useContext", element.getUseContext().get(i), i);
16066    for (int i = 0; i < element.getJurisdiction().size(); i++)
16067      composeCodeableConcept(t, "TestScript", "jurisdiction", element.getJurisdiction().get(i), i);
16068    if (element.hasPurposeElement())
16069      composeMarkdown(t, "TestScript", "purpose", element.getPurposeElement(), -1);
16070    if (element.hasCopyrightElement())
16071      composeMarkdown(t, "TestScript", "copyright", element.getCopyrightElement(), -1);
16072    for (int i = 0; i < element.getOrigin().size(); i++)
16073      composeTestScriptTestScriptOriginComponent(t, "TestScript", "origin", element.getOrigin().get(i), i);
16074    for (int i = 0; i < element.getDestination().size(); i++)
16075      composeTestScriptTestScriptDestinationComponent(t, "TestScript", "destination", element.getDestination().get(i), i);
16076    if (element.hasMetadata())
16077      composeTestScriptTestScriptMetadataComponent(t, "TestScript", "metadata", element.getMetadata(), -1);
16078    for (int i = 0; i < element.getFixture().size(); i++)
16079      composeTestScriptTestScriptFixtureComponent(t, "TestScript", "fixture", element.getFixture().get(i), i);
16080    for (int i = 0; i < element.getProfile().size(); i++)
16081      composeReference(t, "TestScript", "profile", element.getProfile().get(i), i);
16082    for (int i = 0; i < element.getVariable().size(); i++)
16083      composeTestScriptTestScriptVariableComponent(t, "TestScript", "variable", element.getVariable().get(i), i);
16084    for (int i = 0; i < element.getRule().size(); i++)
16085      composeTestScriptTestScriptRuleComponent(t, "TestScript", "rule", element.getRule().get(i), i);
16086    for (int i = 0; i < element.getRuleset().size(); i++)
16087      composeTestScriptTestScriptRulesetComponent(t, "TestScript", "ruleset", element.getRuleset().get(i), i);
16088    if (element.hasSetup())
16089      composeTestScriptTestScriptSetupComponent(t, "TestScript", "setup", element.getSetup(), -1);
16090    for (int i = 0; i < element.getTest().size(); i++)
16091      composeTestScriptTestScriptTestComponent(t, "TestScript", "test", element.getTest().get(i), i);
16092    if (element.hasTeardown())
16093      composeTestScriptTestScriptTeardownComponent(t, "TestScript", "teardown", element.getTeardown(), -1);
16094  }
16095
16096  protected void composeTestScriptTestScriptOriginComponent(Complex parent, String parentType, String name, TestScript.TestScriptOriginComponent element, int index) {
16097    if (element == null) 
16098      return;
16099    Complex t;
16100    if (Utilities.noString(parentType))
16101      t = parent;
16102    else {
16103      t = parent.predicate("fhir:"+parentType+'.'+name);
16104    }
16105    composeBackboneElement(t, "origin", name, element, index);
16106    if (element.hasIndexElement())
16107      composeInteger(t, "TestScript", "index", element.getIndexElement(), -1);
16108    if (element.hasProfile())
16109      composeCoding(t, "TestScript", "profile", element.getProfile(), -1);
16110  }
16111
16112  protected void composeTestScriptTestScriptDestinationComponent(Complex parent, String parentType, String name, TestScript.TestScriptDestinationComponent element, int index) {
16113    if (element == null) 
16114      return;
16115    Complex t;
16116    if (Utilities.noString(parentType))
16117      t = parent;
16118    else {
16119      t = parent.predicate("fhir:"+parentType+'.'+name);
16120    }
16121    composeBackboneElement(t, "destination", name, element, index);
16122    if (element.hasIndexElement())
16123      composeInteger(t, "TestScript", "index", element.getIndexElement(), -1);
16124    if (element.hasProfile())
16125      composeCoding(t, "TestScript", "profile", element.getProfile(), -1);
16126  }
16127
16128  protected void composeTestScriptTestScriptMetadataComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataComponent element, int index) {
16129    if (element == null) 
16130      return;
16131    Complex t;
16132    if (Utilities.noString(parentType))
16133      t = parent;
16134    else {
16135      t = parent.predicate("fhir:"+parentType+'.'+name);
16136    }
16137    composeBackboneElement(t, "metadata", name, element, index);
16138    for (int i = 0; i < element.getLink().size(); i++)
16139      composeTestScriptTestScriptMetadataLinkComponent(t, "TestScript", "link", element.getLink().get(i), i);
16140    for (int i = 0; i < element.getCapability().size(); i++)
16141      composeTestScriptTestScriptMetadataCapabilityComponent(t, "TestScript", "capability", element.getCapability().get(i), i);
16142  }
16143
16144  protected void composeTestScriptTestScriptMetadataLinkComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataLinkComponent element, int index) {
16145    if (element == null) 
16146      return;
16147    Complex t;
16148    if (Utilities.noString(parentType))
16149      t = parent;
16150    else {
16151      t = parent.predicate("fhir:"+parentType+'.'+name);
16152    }
16153    composeBackboneElement(t, "link", name, element, index);
16154    if (element.hasUrlElement())
16155      composeUri(t, "TestScript", "url", element.getUrlElement(), -1);
16156    if (element.hasDescriptionElement())
16157      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16158  }
16159
16160  protected void composeTestScriptTestScriptMetadataCapabilityComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataCapabilityComponent element, int index) {
16161    if (element == null) 
16162      return;
16163    Complex t;
16164    if (Utilities.noString(parentType))
16165      t = parent;
16166    else {
16167      t = parent.predicate("fhir:"+parentType+'.'+name);
16168    }
16169    composeBackboneElement(t, "capability", name, element, index);
16170    if (element.hasRequiredElement())
16171      composeBoolean(t, "TestScript", "required", element.getRequiredElement(), -1);
16172    if (element.hasValidatedElement())
16173      composeBoolean(t, "TestScript", "validated", element.getValidatedElement(), -1);
16174    if (element.hasDescriptionElement())
16175      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16176    for (int i = 0; i < element.getOrigin().size(); i++)
16177      composeInteger(t, "TestScript", "origin", element.getOrigin().get(i), i);
16178    if (element.hasDestinationElement())
16179      composeInteger(t, "TestScript", "destination", element.getDestinationElement(), -1);
16180    for (int i = 0; i < element.getLink().size(); i++)
16181      composeUri(t, "TestScript", "link", element.getLink().get(i), i);
16182    if (element.hasCapabilitiesElement())
16183      composeCanonical(t, "TestScript", "capabilities", element.getCapabilitiesElement(), -1);
16184  }
16185
16186  protected void composeTestScriptTestScriptFixtureComponent(Complex parent, String parentType, String name, TestScript.TestScriptFixtureComponent element, int index) {
16187    if (element == null) 
16188      return;
16189    Complex t;
16190    if (Utilities.noString(parentType))
16191      t = parent;
16192    else {
16193      t = parent.predicate("fhir:"+parentType+'.'+name);
16194    }
16195    composeBackboneElement(t, "fixture", name, element, index);
16196    if (element.hasAutocreateElement())
16197      composeBoolean(t, "TestScript", "autocreate", element.getAutocreateElement(), -1);
16198    if (element.hasAutodeleteElement())
16199      composeBoolean(t, "TestScript", "autodelete", element.getAutodeleteElement(), -1);
16200    if (element.hasResource())
16201      composeReference(t, "TestScript", "resource", element.getResource(), -1);
16202  }
16203
16204  protected void composeTestScriptTestScriptVariableComponent(Complex parent, String parentType, String name, TestScript.TestScriptVariableComponent element, int index) {
16205    if (element == null) 
16206      return;
16207    Complex t;
16208    if (Utilities.noString(parentType))
16209      t = parent;
16210    else {
16211      t = parent.predicate("fhir:"+parentType+'.'+name);
16212    }
16213    composeBackboneElement(t, "variable", name, element, index);
16214    if (element.hasNameElement())
16215      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16216    if (element.hasDefaultValueElement())
16217      composeString(t, "TestScript", "defaultValue", element.getDefaultValueElement(), -1);
16218    if (element.hasDescriptionElement())
16219      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16220    if (element.hasExpressionElement())
16221      composeString(t, "TestScript", "expression", element.getExpressionElement(), -1);
16222    if (element.hasHeaderFieldElement())
16223      composeString(t, "TestScript", "headerField", element.getHeaderFieldElement(), -1);
16224    if (element.hasHintElement())
16225      composeString(t, "TestScript", "hint", element.getHintElement(), -1);
16226    if (element.hasPathElement())
16227      composeString(t, "TestScript", "path", element.getPathElement(), -1);
16228    if (element.hasSourceIdElement())
16229      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
16230  }
16231
16232  protected void composeTestScriptTestScriptRuleComponent(Complex parent, String parentType, String name, TestScript.TestScriptRuleComponent element, int index) {
16233    if (element == null) 
16234      return;
16235    Complex t;
16236    if (Utilities.noString(parentType))
16237      t = parent;
16238    else {
16239      t = parent.predicate("fhir:"+parentType+'.'+name);
16240    }
16241    composeBackboneElement(t, "rule", name, element, index);
16242    if (element.hasResource())
16243      composeReference(t, "TestScript", "resource", element.getResource(), -1);
16244    for (int i = 0; i < element.getParam().size(); i++)
16245      composeTestScriptRuleParamComponent(t, "TestScript", "param", element.getParam().get(i), i);
16246  }
16247
16248  protected void composeTestScriptRuleParamComponent(Complex parent, String parentType, String name, TestScript.RuleParamComponent element, int index) {
16249    if (element == null) 
16250      return;
16251    Complex t;
16252    if (Utilities.noString(parentType))
16253      t = parent;
16254    else {
16255      t = parent.predicate("fhir:"+parentType+'.'+name);
16256    }
16257    composeBackboneElement(t, "param", name, element, index);
16258    if (element.hasNameElement())
16259      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16260    if (element.hasValueElement())
16261      composeString(t, "TestScript", "value", element.getValueElement(), -1);
16262  }
16263
16264  protected void composeTestScriptTestScriptRulesetComponent(Complex parent, String parentType, String name, TestScript.TestScriptRulesetComponent element, int index) {
16265    if (element == null) 
16266      return;
16267    Complex t;
16268    if (Utilities.noString(parentType))
16269      t = parent;
16270    else {
16271      t = parent.predicate("fhir:"+parentType+'.'+name);
16272    }
16273    composeBackboneElement(t, "ruleset", name, element, index);
16274    if (element.hasResource())
16275      composeReference(t, "TestScript", "resource", element.getResource(), -1);
16276    for (int i = 0; i < element.getRule().size(); i++)
16277      composeTestScriptRulesetRuleComponent(t, "TestScript", "rule", element.getRule().get(i), i);
16278  }
16279
16280  protected void composeTestScriptRulesetRuleComponent(Complex parent, String parentType, String name, TestScript.RulesetRuleComponent element, int index) {
16281    if (element == null) 
16282      return;
16283    Complex t;
16284    if (Utilities.noString(parentType))
16285      t = parent;
16286    else {
16287      t = parent.predicate("fhir:"+parentType+'.'+name);
16288    }
16289    composeBackboneElement(t, "rule", name, element, index);
16290    if (element.hasRuleIdElement())
16291      composeId(t, "TestScript", "ruleId", element.getRuleIdElement(), -1);
16292    for (int i = 0; i < element.getParam().size(); i++)
16293      composeTestScriptRulesetRuleParamComponent(t, "TestScript", "param", element.getParam().get(i), i);
16294  }
16295
16296  protected void composeTestScriptRulesetRuleParamComponent(Complex parent, String parentType, String name, TestScript.RulesetRuleParamComponent element, int index) {
16297    if (element == null) 
16298      return;
16299    Complex t;
16300    if (Utilities.noString(parentType))
16301      t = parent;
16302    else {
16303      t = parent.predicate("fhir:"+parentType+'.'+name);
16304    }
16305    composeBackboneElement(t, "param", name, element, index);
16306    if (element.hasNameElement())
16307      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16308    if (element.hasValueElement())
16309      composeString(t, "TestScript", "value", element.getValueElement(), -1);
16310  }
16311
16312  protected void composeTestScriptTestScriptSetupComponent(Complex parent, String parentType, String name, TestScript.TestScriptSetupComponent element, int index) {
16313    if (element == null) 
16314      return;
16315    Complex t;
16316    if (Utilities.noString(parentType))
16317      t = parent;
16318    else {
16319      t = parent.predicate("fhir:"+parentType+'.'+name);
16320    }
16321    composeBackboneElement(t, "setup", name, element, index);
16322    for (int i = 0; i < element.getAction().size(); i++)
16323      composeTestScriptSetupActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
16324  }
16325
16326  protected void composeTestScriptSetupActionComponent(Complex parent, String parentType, String name, TestScript.SetupActionComponent element, int index) {
16327    if (element == null) 
16328      return;
16329    Complex t;
16330    if (Utilities.noString(parentType))
16331      t = parent;
16332    else {
16333      t = parent.predicate("fhir:"+parentType+'.'+name);
16334    }
16335    composeBackboneElement(t, "action", name, element, index);
16336    if (element.hasOperation())
16337      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
16338    if (element.hasAssert())
16339      composeTestScriptSetupActionAssertComponent(t, "TestScript", "assert", element.getAssert(), -1);
16340  }
16341
16342  protected void composeTestScriptSetupActionOperationComponent(Complex parent, String parentType, String name, TestScript.SetupActionOperationComponent element, int index) {
16343    if (element == null) 
16344      return;
16345    Complex t;
16346    if (Utilities.noString(parentType))
16347      t = parent;
16348    else {
16349      t = parent.predicate("fhir:"+parentType+'.'+name);
16350    }
16351    composeBackboneElement(t, "operation", name, element, index);
16352    if (element.hasType())
16353      composeCoding(t, "TestScript", "type", element.getType(), -1);
16354    if (element.hasResourceElement())
16355      composeCode(t, "TestScript", "resource", element.getResourceElement(), -1);
16356    if (element.hasLabelElement())
16357      composeString(t, "TestScript", "label", element.getLabelElement(), -1);
16358    if (element.hasDescriptionElement())
16359      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16360    if (element.hasAcceptElement())
16361      composeCode(t, "TestScript", "accept", element.getAcceptElement(), -1);
16362    if (element.hasContentTypeElement())
16363      composeCode(t, "TestScript", "contentType", element.getContentTypeElement(), -1);
16364    if (element.hasDestinationElement())
16365      composeInteger(t, "TestScript", "destination", element.getDestinationElement(), -1);
16366    if (element.hasEncodeRequestUrlElement())
16367      composeBoolean(t, "TestScript", "encodeRequestUrl", element.getEncodeRequestUrlElement(), -1);
16368    if (element.hasOriginElement())
16369      composeInteger(t, "TestScript", "origin", element.getOriginElement(), -1);
16370    if (element.hasParamsElement())
16371      composeString(t, "TestScript", "params", element.getParamsElement(), -1);
16372    for (int i = 0; i < element.getRequestHeader().size(); i++)
16373      composeTestScriptSetupActionOperationRequestHeaderComponent(t, "TestScript", "requestHeader", element.getRequestHeader().get(i), i);
16374    if (element.hasRequestIdElement())
16375      composeId(t, "TestScript", "requestId", element.getRequestIdElement(), -1);
16376    if (element.hasResponseIdElement())
16377      composeId(t, "TestScript", "responseId", element.getResponseIdElement(), -1);
16378    if (element.hasSourceIdElement())
16379      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
16380    if (element.hasTargetIdElement())
16381      composeId(t, "TestScript", "targetId", element.getTargetIdElement(), -1);
16382    if (element.hasUrlElement())
16383      composeString(t, "TestScript", "url", element.getUrlElement(), -1);
16384  }
16385
16386  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(Complex parent, String parentType, String name, TestScript.SetupActionOperationRequestHeaderComponent element, int index) {
16387    if (element == null) 
16388      return;
16389    Complex t;
16390    if (Utilities.noString(parentType))
16391      t = parent;
16392    else {
16393      t = parent.predicate("fhir:"+parentType+'.'+name);
16394    }
16395    composeBackboneElement(t, "requestHeader", name, element, index);
16396    if (element.hasFieldElement())
16397      composeString(t, "TestScript", "field", element.getFieldElement(), -1);
16398    if (element.hasValueElement())
16399      composeString(t, "TestScript", "value", element.getValueElement(), -1);
16400  }
16401
16402  protected void composeTestScriptSetupActionAssertComponent(Complex parent, String parentType, String name, TestScript.SetupActionAssertComponent element, int index) {
16403    if (element == null) 
16404      return;
16405    Complex t;
16406    if (Utilities.noString(parentType))
16407      t = parent;
16408    else {
16409      t = parent.predicate("fhir:"+parentType+'.'+name);
16410    }
16411    composeBackboneElement(t, "assert", name, element, index);
16412    if (element.hasLabelElement())
16413      composeString(t, "TestScript", "label", element.getLabelElement(), -1);
16414    if (element.hasDescriptionElement())
16415      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16416    if (element.hasDirectionElement())
16417      composeEnum(t, "TestScript", "direction", element.getDirectionElement(), -1);
16418    if (element.hasCompareToSourceIdElement())
16419      composeString(t, "TestScript", "compareToSourceId", element.getCompareToSourceIdElement(), -1);
16420    if (element.hasCompareToSourceExpressionElement())
16421      composeString(t, "TestScript", "compareToSourceExpression", element.getCompareToSourceExpressionElement(), -1);
16422    if (element.hasCompareToSourcePathElement())
16423      composeString(t, "TestScript", "compareToSourcePath", element.getCompareToSourcePathElement(), -1);
16424    if (element.hasContentTypeElement())
16425      composeCode(t, "TestScript", "contentType", element.getContentTypeElement(), -1);
16426    if (element.hasExpressionElement())
16427      composeString(t, "TestScript", "expression", element.getExpressionElement(), -1);
16428    if (element.hasHeaderFieldElement())
16429      composeString(t, "TestScript", "headerField", element.getHeaderFieldElement(), -1);
16430    if (element.hasMinimumIdElement())
16431      composeString(t, "TestScript", "minimumId", element.getMinimumIdElement(), -1);
16432    if (element.hasNavigationLinksElement())
16433      composeBoolean(t, "TestScript", "navigationLinks", element.getNavigationLinksElement(), -1);
16434    if (element.hasOperatorElement())
16435      composeEnum(t, "TestScript", "operator", element.getOperatorElement(), -1);
16436    if (element.hasPathElement())
16437      composeString(t, "TestScript", "path", element.getPathElement(), -1);
16438    if (element.hasRequestMethodElement())
16439      composeEnum(t, "TestScript", "requestMethod", element.getRequestMethodElement(), -1);
16440    if (element.hasRequestURLElement())
16441      composeString(t, "TestScript", "requestURL", element.getRequestURLElement(), -1);
16442    if (element.hasResourceElement())
16443      composeCode(t, "TestScript", "resource", element.getResourceElement(), -1);
16444    if (element.hasResponseElement())
16445      composeEnum(t, "TestScript", "response", element.getResponseElement(), -1);
16446    if (element.hasResponseCodeElement())
16447      composeString(t, "TestScript", "responseCode", element.getResponseCodeElement(), -1);
16448    if (element.hasRule())
16449      composeTestScriptActionAssertRuleComponent(t, "TestScript", "rule", element.getRule(), -1);
16450    if (element.hasRuleset())
16451      composeTestScriptActionAssertRulesetComponent(t, "TestScript", "ruleset", element.getRuleset(), -1);
16452    if (element.hasSourceIdElement())
16453      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
16454    if (element.hasValidateProfileIdElement())
16455      composeId(t, "TestScript", "validateProfileId", element.getValidateProfileIdElement(), -1);
16456    if (element.hasValueElement())
16457      composeString(t, "TestScript", "value", element.getValueElement(), -1);
16458    if (element.hasWarningOnlyElement())
16459      composeBoolean(t, "TestScript", "warningOnly", element.getWarningOnlyElement(), -1);
16460  }
16461
16462  protected void composeTestScriptActionAssertRuleComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRuleComponent element, int index) {
16463    if (element == null) 
16464      return;
16465    Complex t;
16466    if (Utilities.noString(parentType))
16467      t = parent;
16468    else {
16469      t = parent.predicate("fhir:"+parentType+'.'+name);
16470    }
16471    composeBackboneElement(t, "rule", name, element, index);
16472    if (element.hasRuleIdElement())
16473      composeId(t, "TestScript", "ruleId", element.getRuleIdElement(), -1);
16474    for (int i = 0; i < element.getParam().size(); i++)
16475      composeTestScriptActionAssertRuleParamComponent(t, "TestScript", "param", element.getParam().get(i), i);
16476  }
16477
16478  protected void composeTestScriptActionAssertRuleParamComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRuleParamComponent element, int index) {
16479    if (element == null) 
16480      return;
16481    Complex t;
16482    if (Utilities.noString(parentType))
16483      t = parent;
16484    else {
16485      t = parent.predicate("fhir:"+parentType+'.'+name);
16486    }
16487    composeBackboneElement(t, "param", name, element, index);
16488    if (element.hasNameElement())
16489      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16490    if (element.hasValueElement())
16491      composeString(t, "TestScript", "value", element.getValueElement(), -1);
16492  }
16493
16494  protected void composeTestScriptActionAssertRulesetComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRulesetComponent element, int index) {
16495    if (element == null) 
16496      return;
16497    Complex t;
16498    if (Utilities.noString(parentType))
16499      t = parent;
16500    else {
16501      t = parent.predicate("fhir:"+parentType+'.'+name);
16502    }
16503    composeBackboneElement(t, "ruleset", name, element, index);
16504    if (element.hasRulesetIdElement())
16505      composeId(t, "TestScript", "rulesetId", element.getRulesetIdElement(), -1);
16506    for (int i = 0; i < element.getRule().size(); i++)
16507      composeTestScriptActionAssertRulesetRuleComponent(t, "TestScript", "rule", element.getRule().get(i), i);
16508  }
16509
16510  protected void composeTestScriptActionAssertRulesetRuleComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRulesetRuleComponent element, int index) {
16511    if (element == null) 
16512      return;
16513    Complex t;
16514    if (Utilities.noString(parentType))
16515      t = parent;
16516    else {
16517      t = parent.predicate("fhir:"+parentType+'.'+name);
16518    }
16519    composeBackboneElement(t, "rule", name, element, index);
16520    if (element.hasRuleIdElement())
16521      composeId(t, "TestScript", "ruleId", element.getRuleIdElement(), -1);
16522    for (int i = 0; i < element.getParam().size(); i++)
16523      composeTestScriptActionAssertRulesetRuleParamComponent(t, "TestScript", "param", element.getParam().get(i), i);
16524  }
16525
16526  protected void composeTestScriptActionAssertRulesetRuleParamComponent(Complex parent, String parentType, String name, TestScript.ActionAssertRulesetRuleParamComponent element, int index) {
16527    if (element == null) 
16528      return;
16529    Complex t;
16530    if (Utilities.noString(parentType))
16531      t = parent;
16532    else {
16533      t = parent.predicate("fhir:"+parentType+'.'+name);
16534    }
16535    composeBackboneElement(t, "param", name, element, index);
16536    if (element.hasNameElement())
16537      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16538    if (element.hasValueElement())
16539      composeString(t, "TestScript", "value", element.getValueElement(), -1);
16540  }
16541
16542  protected void composeTestScriptTestScriptTestComponent(Complex parent, String parentType, String name, TestScript.TestScriptTestComponent element, int index) {
16543    if (element == null) 
16544      return;
16545    Complex t;
16546    if (Utilities.noString(parentType))
16547      t = parent;
16548    else {
16549      t = parent.predicate("fhir:"+parentType+'.'+name);
16550    }
16551    composeBackboneElement(t, "test", name, element, index);
16552    if (element.hasNameElement())
16553      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16554    if (element.hasDescriptionElement())
16555      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16556    for (int i = 0; i < element.getAction().size(); i++)
16557      composeTestScriptTestActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
16558  }
16559
16560  protected void composeTestScriptTestActionComponent(Complex parent, String parentType, String name, TestScript.TestActionComponent element, int index) {
16561    if (element == null) 
16562      return;
16563    Complex t;
16564    if (Utilities.noString(parentType))
16565      t = parent;
16566    else {
16567      t = parent.predicate("fhir:"+parentType+'.'+name);
16568    }
16569    composeBackboneElement(t, "action", name, element, index);
16570    if (element.hasOperation())
16571      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
16572    if (element.hasAssert())
16573      composeTestScriptSetupActionAssertComponent(t, "TestScript", "assert", element.getAssert(), -1);
16574  }
16575
16576  protected void composeTestScriptTestScriptTeardownComponent(Complex parent, String parentType, String name, TestScript.TestScriptTeardownComponent element, int index) {
16577    if (element == null) 
16578      return;
16579    Complex t;
16580    if (Utilities.noString(parentType))
16581      t = parent;
16582    else {
16583      t = parent.predicate("fhir:"+parentType+'.'+name);
16584    }
16585    composeBackboneElement(t, "teardown", name, element, index);
16586    for (int i = 0; i < element.getAction().size(); i++)
16587      composeTestScriptTeardownActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
16588  }
16589
16590  protected void composeTestScriptTeardownActionComponent(Complex parent, String parentType, String name, TestScript.TeardownActionComponent element, int index) {
16591    if (element == null) 
16592      return;
16593    Complex t;
16594    if (Utilities.noString(parentType))
16595      t = parent;
16596    else {
16597      t = parent.predicate("fhir:"+parentType+'.'+name);
16598    }
16599    composeBackboneElement(t, "action", name, element, index);
16600    if (element.hasOperation())
16601      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
16602  }
16603
16604  protected void composeUserSession(Complex parent, String parentType, String name, UserSession element, int index) {
16605    if (element == null) 
16606      return;
16607    Complex t;
16608    if (Utilities.noString(parentType))
16609      t = parent;
16610    else {
16611      t = parent.predicate("fhir:"+parentType+'.'+name);
16612    }
16613    composeDomainResource(t, "UserSession", name, element, index);
16614    if (element.hasIdentifier())
16615      composeIdentifier(t, "UserSession", "identifier", element.getIdentifier(), -1);
16616    if (element.hasUser())
16617      composeReference(t, "UserSession", "user", element.getUser(), -1);
16618    if (element.hasStatus())
16619      composeUserSessionUserSessionStatusComponent(t, "UserSession", "status", element.getStatus(), -1);
16620    if (element.hasWorkstation())
16621      composeIdentifier(t, "UserSession", "workstation", element.getWorkstation(), -1);
16622    for (int i = 0; i < element.getFocus().size(); i++)
16623      composeReference(t, "UserSession", "focus", element.getFocus().get(i), i);
16624    if (element.hasCreatedElement())
16625      composeInstant(t, "UserSession", "created", element.getCreatedElement(), -1);
16626    if (element.hasExpiresElement())
16627      composeInstant(t, "UserSession", "expires", element.getExpiresElement(), -1);
16628    for (int i = 0; i < element.getContext().size(); i++)
16629      composeUserSessionUserSessionContextComponent(t, "UserSession", "context", element.getContext().get(i), i);
16630  }
16631
16632  protected void composeUserSessionUserSessionStatusComponent(Complex parent, String parentType, String name, UserSession.UserSessionStatusComponent element, int index) {
16633    if (element == null) 
16634      return;
16635    Complex t;
16636    if (Utilities.noString(parentType))
16637      t = parent;
16638    else {
16639      t = parent.predicate("fhir:"+parentType+'.'+name);
16640    }
16641    composeBackboneElement(t, "status", name, element, index);
16642    if (element.hasCodeElement())
16643      composeEnum(t, "UserSession", "code", element.getCodeElement(), -1);
16644    if (element.hasSourceElement())
16645      composeEnum(t, "UserSession", "source", element.getSourceElement(), -1);
16646  }
16647
16648  protected void composeUserSessionUserSessionContextComponent(Complex parent, String parentType, String name, UserSession.UserSessionContextComponent element, int index) {
16649    if (element == null) 
16650      return;
16651    Complex t;
16652    if (Utilities.noString(parentType))
16653      t = parent;
16654    else {
16655      t = parent.predicate("fhir:"+parentType+'.'+name);
16656    }
16657    composeBackboneElement(t, "context", name, element, index);
16658    if (element.hasTypeElement())
16659      composeString(t, "UserSession", "type", element.getTypeElement(), -1);
16660    if (element.hasValue())
16661      composeType(t, "UserSession", "value", element.getValue(), -1);
16662  }
16663
16664  protected void composeValueSet(Complex parent, String parentType, String name, ValueSet element, int index) {
16665    if (element == null) 
16666      return;
16667    Complex t;
16668    if (Utilities.noString(parentType))
16669      t = parent;
16670    else {
16671      t = parent.predicate("fhir:"+parentType+'.'+name);
16672    }
16673    composeDomainResource(t, "ValueSet", name, element, index);
16674    if (element.hasUrlElement())
16675      composeUri(t, "ValueSet", "url", element.getUrlElement(), -1);
16676    for (int i = 0; i < element.getIdentifier().size(); i++)
16677      composeIdentifier(t, "ValueSet", "identifier", element.getIdentifier().get(i), i);
16678    if (element.hasVersionElement())
16679      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
16680    if (element.hasNameElement())
16681      composeString(t, "ValueSet", "name", element.getNameElement(), -1);
16682    if (element.hasTitleElement())
16683      composeString(t, "ValueSet", "title", element.getTitleElement(), -1);
16684    if (element.hasStatusElement())
16685      composeEnum(t, "ValueSet", "status", element.getStatusElement(), -1);
16686    if (element.hasExperimentalElement())
16687      composeBoolean(t, "ValueSet", "experimental", element.getExperimentalElement(), -1);
16688    if (element.hasDateElement())
16689      composeDateTime(t, "ValueSet", "date", element.getDateElement(), -1);
16690    if (element.hasPublisherElement())
16691      composeString(t, "ValueSet", "publisher", element.getPublisherElement(), -1);
16692    for (int i = 0; i < element.getContact().size(); i++)
16693      composeContactDetail(t, "ValueSet", "contact", element.getContact().get(i), i);
16694    if (element.hasDescriptionElement())
16695      composeMarkdown(t, "ValueSet", "description", element.getDescriptionElement(), -1);
16696    for (int i = 0; i < element.getUseContext().size(); i++)
16697      composeUsageContext(t, "ValueSet", "useContext", element.getUseContext().get(i), i);
16698    for (int i = 0; i < element.getJurisdiction().size(); i++)
16699      composeCodeableConcept(t, "ValueSet", "jurisdiction", element.getJurisdiction().get(i), i);
16700    if (element.hasImmutableElement())
16701      composeBoolean(t, "ValueSet", "immutable", element.getImmutableElement(), -1);
16702    if (element.hasPurposeElement())
16703      composeMarkdown(t, "ValueSet", "purpose", element.getPurposeElement(), -1);
16704    if (element.hasCopyrightElement())
16705      composeMarkdown(t, "ValueSet", "copyright", element.getCopyrightElement(), -1);
16706    if (element.hasCompose())
16707      composeValueSetValueSetComposeComponent(t, "ValueSet", "compose", element.getCompose(), -1);
16708    if (element.hasExpansion())
16709      composeValueSetValueSetExpansionComponent(t, "ValueSet", "expansion", element.getExpansion(), -1);
16710  }
16711
16712  protected void composeValueSetValueSetComposeComponent(Complex parent, String parentType, String name, ValueSet.ValueSetComposeComponent element, int index) {
16713    if (element == null) 
16714      return;
16715    Complex t;
16716    if (Utilities.noString(parentType))
16717      t = parent;
16718    else {
16719      t = parent.predicate("fhir:"+parentType+'.'+name);
16720    }
16721    composeBackboneElement(t, "compose", name, element, index);
16722    if (element.hasLockedDateElement())
16723      composeDate(t, "ValueSet", "lockedDate", element.getLockedDateElement(), -1);
16724    if (element.hasInactiveElement())
16725      composeBoolean(t, "ValueSet", "inactive", element.getInactiveElement(), -1);
16726    for (int i = 0; i < element.getInclude().size(); i++)
16727      composeValueSetConceptSetComponent(t, "ValueSet", "include", element.getInclude().get(i), i);
16728    for (int i = 0; i < element.getExclude().size(); i++)
16729      composeValueSetConceptSetComponent(t, "ValueSet", "exclude", element.getExclude().get(i), i);
16730  }
16731
16732  protected void composeValueSetConceptSetComponent(Complex parent, String parentType, String name, ValueSet.ConceptSetComponent element, int index) {
16733    if (element == null) 
16734      return;
16735    Complex t;
16736    if (Utilities.noString(parentType))
16737      t = parent;
16738    else {
16739      t = parent.predicate("fhir:"+parentType+'.'+name);
16740    }
16741    composeBackboneElement(t, "include", name, element, index);
16742    if (element.hasSystemElement())
16743      composeUri(t, "ValueSet", "system", element.getSystemElement(), -1);
16744    if (element.hasVersionElement())
16745      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
16746    for (int i = 0; i < element.getConcept().size(); i++)
16747      composeValueSetConceptReferenceComponent(t, "ValueSet", "concept", element.getConcept().get(i), i);
16748    for (int i = 0; i < element.getFilter().size(); i++)
16749      composeValueSetConceptSetFilterComponent(t, "ValueSet", "filter", element.getFilter().get(i), i);
16750    for (int i = 0; i < element.getValueSet().size(); i++)
16751      composeCanonical(t, "ValueSet", "valueSet", element.getValueSet().get(i), i);
16752  }
16753
16754  protected void composeValueSetConceptReferenceComponent(Complex parent, String parentType, String name, ValueSet.ConceptReferenceComponent element, int index) {
16755    if (element == null) 
16756      return;
16757    Complex t;
16758    if (Utilities.noString(parentType))
16759      t = parent;
16760    else {
16761      t = parent.predicate("fhir:"+parentType+'.'+name);
16762    }
16763    composeBackboneElement(t, "concept", name, element, index);
16764    if (element.hasCodeElement())
16765      composeCode(t, "ValueSet", "code", element.getCodeElement(), -1);
16766    if (element.hasDisplayElement())
16767      composeString(t, "ValueSet", "display", element.getDisplayElement(), -1);
16768    for (int i = 0; i < element.getDesignation().size(); i++)
16769      composeValueSetConceptReferenceDesignationComponent(t, "ValueSet", "designation", element.getDesignation().get(i), i);
16770  }
16771
16772  protected void composeValueSetConceptReferenceDesignationComponent(Complex parent, String parentType, String name, ValueSet.ConceptReferenceDesignationComponent element, int index) {
16773    if (element == null) 
16774      return;
16775    Complex t;
16776    if (Utilities.noString(parentType))
16777      t = parent;
16778    else {
16779      t = parent.predicate("fhir:"+parentType+'.'+name);
16780    }
16781    composeBackboneElement(t, "designation", name, element, index);
16782    if (element.hasLanguageElement())
16783      composeCode(t, "ValueSet", "language", element.getLanguageElement(), -1);
16784    if (element.hasUse())
16785      composeCoding(t, "ValueSet", "use", element.getUse(), -1);
16786    if (element.hasValueElement())
16787      composeString(t, "ValueSet", "value", element.getValueElement(), -1);
16788  }
16789
16790  protected void composeValueSetConceptSetFilterComponent(Complex parent, String parentType, String name, ValueSet.ConceptSetFilterComponent element, int index) {
16791    if (element == null) 
16792      return;
16793    Complex t;
16794    if (Utilities.noString(parentType))
16795      t = parent;
16796    else {
16797      t = parent.predicate("fhir:"+parentType+'.'+name);
16798    }
16799    composeBackboneElement(t, "filter", name, element, index);
16800    if (element.hasPropertyElement())
16801      composeCode(t, "ValueSet", "property", element.getPropertyElement(), -1);
16802    if (element.hasOpElement())
16803      composeEnum(t, "ValueSet", "op", element.getOpElement(), -1);
16804    if (element.hasValueElement())
16805      composeString(t, "ValueSet", "value", element.getValueElement(), -1);
16806  }
16807
16808  protected void composeValueSetValueSetExpansionComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionComponent element, int index) {
16809    if (element == null) 
16810      return;
16811    Complex t;
16812    if (Utilities.noString(parentType))
16813      t = parent;
16814    else {
16815      t = parent.predicate("fhir:"+parentType+'.'+name);
16816    }
16817    composeBackboneElement(t, "expansion", name, element, index);
16818    if (element.hasIdentifierElement())
16819      composeUri(t, "ValueSet", "identifier", element.getIdentifierElement(), -1);
16820    if (element.hasTimestampElement())
16821      composeDateTime(t, "ValueSet", "timestamp", element.getTimestampElement(), -1);
16822    if (element.hasTotalElement())
16823      composeInteger(t, "ValueSet", "total", element.getTotalElement(), -1);
16824    if (element.hasOffsetElement())
16825      composeInteger(t, "ValueSet", "offset", element.getOffsetElement(), -1);
16826    for (int i = 0; i < element.getParameter().size(); i++)
16827      composeValueSetValueSetExpansionParameterComponent(t, "ValueSet", "parameter", element.getParameter().get(i), i);
16828    for (int i = 0; i < element.getContains().size(); i++)
16829      composeValueSetValueSetExpansionContainsComponent(t, "ValueSet", "contains", element.getContains().get(i), i);
16830  }
16831
16832  protected void composeValueSetValueSetExpansionParameterComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionParameterComponent element, int index) {
16833    if (element == null) 
16834      return;
16835    Complex t;
16836    if (Utilities.noString(parentType))
16837      t = parent;
16838    else {
16839      t = parent.predicate("fhir:"+parentType+'.'+name);
16840    }
16841    composeBackboneElement(t, "parameter", name, element, index);
16842    if (element.hasNameElement())
16843      composeString(t, "ValueSet", "name", element.getNameElement(), -1);
16844    if (element.hasValue())
16845      composeType(t, "ValueSet", "value", element.getValue(), -1);
16846  }
16847
16848  protected void composeValueSetValueSetExpansionContainsComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionContainsComponent element, int index) {
16849    if (element == null) 
16850      return;
16851    Complex t;
16852    if (Utilities.noString(parentType))
16853      t = parent;
16854    else {
16855      t = parent.predicate("fhir:"+parentType+'.'+name);
16856    }
16857    composeBackboneElement(t, "contains", name, element, index);
16858    if (element.hasSystemElement())
16859      composeUri(t, "ValueSet", "system", element.getSystemElement(), -1);
16860    if (element.hasAbstractElement())
16861      composeBoolean(t, "ValueSet", "abstract", element.getAbstractElement(), -1);
16862    if (element.hasInactiveElement())
16863      composeBoolean(t, "ValueSet", "inactive", element.getInactiveElement(), -1);
16864    if (element.hasVersionElement())
16865      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
16866    if (element.hasCodeElement())
16867      composeCode(t, "ValueSet", "code", element.getCodeElement(), -1);
16868    if (element.hasDisplayElement())
16869      composeString(t, "ValueSet", "display", element.getDisplayElement(), -1);
16870    for (int i = 0; i < element.getDesignation().size(); i++)
16871      composeValueSetConceptReferenceDesignationComponent(t, "ValueSet", "designation", element.getDesignation().get(i), i);
16872    for (int i = 0; i < element.getContains().size(); i++)
16873      composeValueSetValueSetExpansionContainsComponent(t, "ValueSet", "contains", element.getContains().get(i), i);
16874  }
16875
16876  protected void composeVerificationResult(Complex parent, String parentType, String name, VerificationResult element, int index) {
16877    if (element == null) 
16878      return;
16879    Complex t;
16880    if (Utilities.noString(parentType))
16881      t = parent;
16882    else {
16883      t = parent.predicate("fhir:"+parentType+'.'+name);
16884    }
16885    composeDomainResource(t, "VerificationResult", name, element, index);
16886    for (int i = 0; i < element.getTarget().size(); i++)
16887      composeReference(t, "VerificationResult", "target", element.getTarget().get(i), i);
16888    for (int i = 0; i < element.getTargetLocation().size(); i++)
16889      composeString(t, "VerificationResult", "targetLocation", element.getTargetLocation().get(i), i);
16890    if (element.hasNeed())
16891      composeCodeableConcept(t, "VerificationResult", "need", element.getNeed(), -1);
16892    if (element.hasStatusElement())
16893      composeEnum(t, "VerificationResult", "status", element.getStatusElement(), -1);
16894    if (element.hasStatusDateElement())
16895      composeDateTime(t, "VerificationResult", "statusDate", element.getStatusDateElement(), -1);
16896    if (element.hasValidationType())
16897      composeCodeableConcept(t, "VerificationResult", "validationType", element.getValidationType(), -1);
16898    for (int i = 0; i < element.getValidationProcess().size(); i++)
16899      composeCodeableConcept(t, "VerificationResult", "validationProcess", element.getValidationProcess().get(i), i);
16900    if (element.hasFrequency())
16901      composeTiming(t, "VerificationResult", "frequency", element.getFrequency(), -1);
16902    if (element.hasLastPerformedElement())
16903      composeDateTime(t, "VerificationResult", "lastPerformed", element.getLastPerformedElement(), -1);
16904    if (element.hasNextScheduledElement())
16905      composeDate(t, "VerificationResult", "nextScheduled", element.getNextScheduledElement(), -1);
16906    if (element.hasFailureAction())
16907      composeCodeableConcept(t, "VerificationResult", "failureAction", element.getFailureAction(), -1);
16908    for (int i = 0; i < element.getPrimarySource().size(); i++)
16909      composeVerificationResultVerificationResultPrimarySourceComponent(t, "VerificationResult", "primarySource", element.getPrimarySource().get(i), i);
16910    if (element.hasAttestation())
16911      composeVerificationResultVerificationResultAttestationComponent(t, "VerificationResult", "attestation", element.getAttestation(), -1);
16912    for (int i = 0; i < element.getValidator().size(); i++)
16913      composeVerificationResultVerificationResultValidatorComponent(t, "VerificationResult", "validator", element.getValidator().get(i), i);
16914  }
16915
16916  protected void composeVerificationResultVerificationResultPrimarySourceComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultPrimarySourceComponent element, int index) {
16917    if (element == null) 
16918      return;
16919    Complex t;
16920    if (Utilities.noString(parentType))
16921      t = parent;
16922    else {
16923      t = parent.predicate("fhir:"+parentType+'.'+name);
16924    }
16925    composeBackboneElement(t, "primarySource", name, element, index);
16926    if (element.hasOrganization())
16927      composeReference(t, "VerificationResult", "organization", element.getOrganization(), -1);
16928    for (int i = 0; i < element.getType().size(); i++)
16929      composeCodeableConcept(t, "VerificationResult", "type", element.getType().get(i), i);
16930    for (int i = 0; i < element.getValidationProcess().size(); i++)
16931      composeCodeableConcept(t, "VerificationResult", "validationProcess", element.getValidationProcess().get(i), i);
16932    if (element.hasValidationStatus())
16933      composeCodeableConcept(t, "VerificationResult", "validationStatus", element.getValidationStatus(), -1);
16934    if (element.hasValidationDateElement())
16935      composeDateTime(t, "VerificationResult", "validationDate", element.getValidationDateElement(), -1);
16936    if (element.hasCanPushUpdates())
16937      composeCodeableConcept(t, "VerificationResult", "canPushUpdates", element.getCanPushUpdates(), -1);
16938    for (int i = 0; i < element.getPushTypeAvailable().size(); i++)
16939      composeCodeableConcept(t, "VerificationResult", "pushTypeAvailable", element.getPushTypeAvailable().get(i), i);
16940  }
16941
16942  protected void composeVerificationResultVerificationResultAttestationComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultAttestationComponent element, int index) {
16943    if (element == null) 
16944      return;
16945    Complex t;
16946    if (Utilities.noString(parentType))
16947      t = parent;
16948    else {
16949      t = parent.predicate("fhir:"+parentType+'.'+name);
16950    }
16951    composeBackboneElement(t, "attestation", name, element, index);
16952    if (element.hasSource())
16953      composeReference(t, "VerificationResult", "source", element.getSource(), -1);
16954    if (element.hasOrganization())
16955      composeReference(t, "VerificationResult", "organization", element.getOrganization(), -1);
16956    if (element.hasMethod())
16957      composeCodeableConcept(t, "VerificationResult", "method", element.getMethod(), -1);
16958    if (element.hasDateElement())
16959      composeDate(t, "VerificationResult", "date", element.getDateElement(), -1);
16960    if (element.hasSourceIdentityCertificateElement())
16961      composeString(t, "VerificationResult", "sourceIdentityCertificate", element.getSourceIdentityCertificateElement(), -1);
16962    if (element.hasProxyIdentityCertificateElement())
16963      composeString(t, "VerificationResult", "proxyIdentityCertificate", element.getProxyIdentityCertificateElement(), -1);
16964    if (element.hasSignedProxyRight())
16965      composeType(t, "VerificationResult", "signedProxyRight", element.getSignedProxyRight(), -1);
16966    if (element.hasSignedSourceAttestation())
16967      composeType(t, "VerificationResult", "signedSourceAttestation", element.getSignedSourceAttestation(), -1);
16968  }
16969
16970  protected void composeVerificationResultVerificationResultValidatorComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultValidatorComponent element, int index) {
16971    if (element == null) 
16972      return;
16973    Complex t;
16974    if (Utilities.noString(parentType))
16975      t = parent;
16976    else {
16977      t = parent.predicate("fhir:"+parentType+'.'+name);
16978    }
16979    composeBackboneElement(t, "validator", name, element, index);
16980    if (element.hasOrganization())
16981      composeReference(t, "VerificationResult", "organization", element.getOrganization(), -1);
16982    if (element.hasIdentityCertificateElement())
16983      composeString(t, "VerificationResult", "identityCertificate", element.getIdentityCertificateElement(), -1);
16984    if (element.hasSignedValidatorAttestation())
16985      composeType(t, "VerificationResult", "signedValidatorAttestation", element.getSignedValidatorAttestation(), -1);
16986  }
16987
16988  protected void composeVisionPrescription(Complex parent, String parentType, String name, VisionPrescription element, int index) {
16989    if (element == null) 
16990      return;
16991    Complex t;
16992    if (Utilities.noString(parentType))
16993      t = parent;
16994    else {
16995      t = parent.predicate("fhir:"+parentType+'.'+name);
16996    }
16997    composeDomainResource(t, "VisionPrescription", name, element, index);
16998    for (int i = 0; i < element.getIdentifier().size(); i++)
16999      composeIdentifier(t, "VisionPrescription", "identifier", element.getIdentifier().get(i), i);
17000    if (element.hasStatusElement())
17001      composeEnum(t, "VisionPrescription", "status", element.getStatusElement(), -1);
17002    if (element.hasPatient())
17003      composeReference(t, "VisionPrescription", "patient", element.getPatient(), -1);
17004    if (element.hasEncounter())
17005      composeReference(t, "VisionPrescription", "encounter", element.getEncounter(), -1);
17006    if (element.hasDateWrittenElement())
17007      composeDateTime(t, "VisionPrescription", "dateWritten", element.getDateWrittenElement(), -1);
17008    if (element.hasPrescriber())
17009      composeReference(t, "VisionPrescription", "prescriber", element.getPrescriber(), -1);
17010    if (element.hasReason())
17011      composeType(t, "VisionPrescription", "reason", element.getReason(), -1);
17012    for (int i = 0; i < element.getDispense().size(); i++)
17013      composeVisionPrescriptionVisionPrescriptionDispenseComponent(t, "VisionPrescription", "dispense", element.getDispense().get(i), i);
17014  }
17015
17016  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(Complex parent, String parentType, String name, VisionPrescription.VisionPrescriptionDispenseComponent element, int index) {
17017    if (element == null) 
17018      return;
17019    Complex t;
17020    if (Utilities.noString(parentType))
17021      t = parent;
17022    else {
17023      t = parent.predicate("fhir:"+parentType+'.'+name);
17024    }
17025    composeBackboneElement(t, "dispense", name, element, index);
17026    if (element.hasProduct())
17027      composeCodeableConcept(t, "VisionPrescription", "product", element.getProduct(), -1);
17028    if (element.hasEyeElement())
17029      composeEnum(t, "VisionPrescription", "eye", element.getEyeElement(), -1);
17030    if (element.hasSphereElement())
17031      composeDecimal(t, "VisionPrescription", "sphere", element.getSphereElement(), -1);
17032    if (element.hasCylinderElement())
17033      composeDecimal(t, "VisionPrescription", "cylinder", element.getCylinderElement(), -1);
17034    if (element.hasAxisElement())
17035      composeInteger(t, "VisionPrescription", "axis", element.getAxisElement(), -1);
17036    for (int i = 0; i < element.getPrism().size(); i++)
17037      composeVisionPrescriptionPrismComponent(t, "VisionPrescription", "prism", element.getPrism().get(i), i);
17038    if (element.hasAddElement())
17039      composeDecimal(t, "VisionPrescription", "add", element.getAddElement(), -1);
17040    if (element.hasPowerElement())
17041      composeDecimal(t, "VisionPrescription", "power", element.getPowerElement(), -1);
17042    if (element.hasBackCurveElement())
17043      composeDecimal(t, "VisionPrescription", "backCurve", element.getBackCurveElement(), -1);
17044    if (element.hasDiameterElement())
17045      composeDecimal(t, "VisionPrescription", "diameter", element.getDiameterElement(), -1);
17046    if (element.hasDuration())
17047      composeQuantity(t, "VisionPrescription", "duration", element.getDuration(), -1);
17048    if (element.hasColorElement())
17049      composeString(t, "VisionPrescription", "color", element.getColorElement(), -1);
17050    if (element.hasBrandElement())
17051      composeString(t, "VisionPrescription", "brand", element.getBrandElement(), -1);
17052    for (int i = 0; i < element.getNote().size(); i++)
17053      composeAnnotation(t, "VisionPrescription", "note", element.getNote().get(i), i);
17054  }
17055
17056  protected void composeVisionPrescriptionPrismComponent(Complex parent, String parentType, String name, VisionPrescription.PrismComponent element, int index) {
17057    if (element == null) 
17058      return;
17059    Complex t;
17060    if (Utilities.noString(parentType))
17061      t = parent;
17062    else {
17063      t = parent.predicate("fhir:"+parentType+'.'+name);
17064    }
17065    composeBackboneElement(t, "prism", name, element, index);
17066    if (element.hasAmountElement())
17067      composeDecimal(t, "VisionPrescription", "amount", element.getAmountElement(), -1);
17068    if (element.hasBaseElement())
17069      composeEnum(t, "VisionPrescription", "base", element.getBaseElement(), -1);
17070  }
17071
17072  @Override
17073  protected void composeResource(Complex parent, Resource resource) {
17074    if (resource instanceof Parameters)
17075      composeParameters(parent, null, "Parameters", (Parameters)resource, -1);
17076    else if (resource instanceof Account)
17077      composeAccount(parent, null, "Account", (Account)resource, -1);
17078    else if (resource instanceof ActivityDefinition)
17079      composeActivityDefinition(parent, null, "ActivityDefinition", (ActivityDefinition)resource, -1);
17080    else if (resource instanceof AdverseEvent)
17081      composeAdverseEvent(parent, null, "AdverseEvent", (AdverseEvent)resource, -1);
17082    else if (resource instanceof AllergyIntolerance)
17083      composeAllergyIntolerance(parent, null, "AllergyIntolerance", (AllergyIntolerance)resource, -1);
17084    else if (resource instanceof Appointment)
17085      composeAppointment(parent, null, "Appointment", (Appointment)resource, -1);
17086    else if (resource instanceof AppointmentResponse)
17087      composeAppointmentResponse(parent, null, "AppointmentResponse", (AppointmentResponse)resource, -1);
17088    else if (resource instanceof AuditEvent)
17089      composeAuditEvent(parent, null, "AuditEvent", (AuditEvent)resource, -1);
17090    else if (resource instanceof Basic)
17091      composeBasic(parent, null, "Basic", (Basic)resource, -1);
17092    else if (resource instanceof Binary)
17093      composeBinary(parent, null, "Binary", (Binary)resource, -1);
17094    else if (resource instanceof BiologicallyDerivedProduct)
17095      composeBiologicallyDerivedProduct(parent, null, "BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource, -1);
17096    else if (resource instanceof BodyStructure)
17097      composeBodyStructure(parent, null, "BodyStructure", (BodyStructure)resource, -1);
17098    else if (resource instanceof Bundle)
17099      composeBundle(parent, null, "Bundle", (Bundle)resource, -1);
17100    else if (resource instanceof CapabilityStatement)
17101      composeCapabilityStatement(parent, null, "CapabilityStatement", (CapabilityStatement)resource, -1);
17102    else if (resource instanceof CarePlan)
17103      composeCarePlan(parent, null, "CarePlan", (CarePlan)resource, -1);
17104    else if (resource instanceof CareTeam)
17105      composeCareTeam(parent, null, "CareTeam", (CareTeam)resource, -1);
17106    else if (resource instanceof CatalogEntry)
17107      composeCatalogEntry(parent, null, "CatalogEntry", (CatalogEntry)resource, -1);
17108    else if (resource instanceof ChargeItem)
17109      composeChargeItem(parent, null, "ChargeItem", (ChargeItem)resource, -1);
17110    else if (resource instanceof ChargeItemDefinition)
17111      composeChargeItemDefinition(parent, null, "ChargeItemDefinition", (ChargeItemDefinition)resource, -1);
17112    else if (resource instanceof Claim)
17113      composeClaim(parent, null, "Claim", (Claim)resource, -1);
17114    else if (resource instanceof ClaimResponse)
17115      composeClaimResponse(parent, null, "ClaimResponse", (ClaimResponse)resource, -1);
17116    else if (resource instanceof ClinicalImpression)
17117      composeClinicalImpression(parent, null, "ClinicalImpression", (ClinicalImpression)resource, -1);
17118    else if (resource instanceof CodeSystem)
17119      composeCodeSystem(parent, null, "CodeSystem", (CodeSystem)resource, -1);
17120    else if (resource instanceof Communication)
17121      composeCommunication(parent, null, "Communication", (Communication)resource, -1);
17122    else if (resource instanceof CommunicationRequest)
17123      composeCommunicationRequest(parent, null, "CommunicationRequest", (CommunicationRequest)resource, -1);
17124    else if (resource instanceof CompartmentDefinition)
17125      composeCompartmentDefinition(parent, null, "CompartmentDefinition", (CompartmentDefinition)resource, -1);
17126    else if (resource instanceof Composition)
17127      composeComposition(parent, null, "Composition", (Composition)resource, -1);
17128    else if (resource instanceof ConceptMap)
17129      composeConceptMap(parent, null, "ConceptMap", (ConceptMap)resource, -1);
17130    else if (resource instanceof Condition)
17131      composeCondition(parent, null, "Condition", (Condition)resource, -1);
17132    else if (resource instanceof Consent)
17133      composeConsent(parent, null, "Consent", (Consent)resource, -1);
17134    else if (resource instanceof Contract)
17135      composeContract(parent, null, "Contract", (Contract)resource, -1);
17136    else if (resource instanceof Coverage)
17137      composeCoverage(parent, null, "Coverage", (Coverage)resource, -1);
17138    else if (resource instanceof CoverageEligibilityRequest)
17139      composeCoverageEligibilityRequest(parent, null, "CoverageEligibilityRequest", (CoverageEligibilityRequest)resource, -1);
17140    else if (resource instanceof CoverageEligibilityResponse)
17141      composeCoverageEligibilityResponse(parent, null, "CoverageEligibilityResponse", (CoverageEligibilityResponse)resource, -1);
17142    else if (resource instanceof DetectedIssue)
17143      composeDetectedIssue(parent, null, "DetectedIssue", (DetectedIssue)resource, -1);
17144    else if (resource instanceof Device)
17145      composeDevice(parent, null, "Device", (Device)resource, -1);
17146    else if (resource instanceof DeviceDefinition)
17147      composeDeviceDefinition(parent, null, "DeviceDefinition", (DeviceDefinition)resource, -1);
17148    else if (resource instanceof DeviceMetric)
17149      composeDeviceMetric(parent, null, "DeviceMetric", (DeviceMetric)resource, -1);
17150    else if (resource instanceof DeviceRequest)
17151      composeDeviceRequest(parent, null, "DeviceRequest", (DeviceRequest)resource, -1);
17152    else if (resource instanceof DeviceUseStatement)
17153      composeDeviceUseStatement(parent, null, "DeviceUseStatement", (DeviceUseStatement)resource, -1);
17154    else if (resource instanceof DiagnosticReport)
17155      composeDiagnosticReport(parent, null, "DiagnosticReport", (DiagnosticReport)resource, -1);
17156    else if (resource instanceof DocumentManifest)
17157      composeDocumentManifest(parent, null, "DocumentManifest", (DocumentManifest)resource, -1);
17158    else if (resource instanceof DocumentReference)
17159      composeDocumentReference(parent, null, "DocumentReference", (DocumentReference)resource, -1);
17160    else if (resource instanceof Encounter)
17161      composeEncounter(parent, null, "Encounter", (Encounter)resource, -1);
17162    else if (resource instanceof Endpoint)
17163      composeEndpoint(parent, null, "Endpoint", (Endpoint)resource, -1);
17164    else if (resource instanceof EnrollmentRequest)
17165      composeEnrollmentRequest(parent, null, "EnrollmentRequest", (EnrollmentRequest)resource, -1);
17166    else if (resource instanceof EnrollmentResponse)
17167      composeEnrollmentResponse(parent, null, "EnrollmentResponse", (EnrollmentResponse)resource, -1);
17168    else if (resource instanceof EpisodeOfCare)
17169      composeEpisodeOfCare(parent, null, "EpisodeOfCare", (EpisodeOfCare)resource, -1);
17170    else if (resource instanceof EventDefinition)
17171      composeEventDefinition(parent, null, "EventDefinition", (EventDefinition)resource, -1);
17172    else if (resource instanceof ExampleScenario)
17173      composeExampleScenario(parent, null, "ExampleScenario", (ExampleScenario)resource, -1);
17174    else if (resource instanceof ExplanationOfBenefit)
17175      composeExplanationOfBenefit(parent, null, "ExplanationOfBenefit", (ExplanationOfBenefit)resource, -1);
17176    else if (resource instanceof FamilyMemberHistory)
17177      composeFamilyMemberHistory(parent, null, "FamilyMemberHistory", (FamilyMemberHistory)resource, -1);
17178    else if (resource instanceof Flag)
17179      composeFlag(parent, null, "Flag", (Flag)resource, -1);
17180    else if (resource instanceof Goal)
17181      composeGoal(parent, null, "Goal", (Goal)resource, -1);
17182    else if (resource instanceof GraphDefinition)
17183      composeGraphDefinition(parent, null, "GraphDefinition", (GraphDefinition)resource, -1);
17184    else if (resource instanceof Group)
17185      composeGroup(parent, null, "Group", (Group)resource, -1);
17186    else if (resource instanceof GuidanceResponse)
17187      composeGuidanceResponse(parent, null, "GuidanceResponse", (GuidanceResponse)resource, -1);
17188    else if (resource instanceof HealthcareService)
17189      composeHealthcareService(parent, null, "HealthcareService", (HealthcareService)resource, -1);
17190    else if (resource instanceof ImagingStudy)
17191      composeImagingStudy(parent, null, "ImagingStudy", (ImagingStudy)resource, -1);
17192    else if (resource instanceof Immunization)
17193      composeImmunization(parent, null, "Immunization", (Immunization)resource, -1);
17194    else if (resource instanceof ImmunizationEvaluation)
17195      composeImmunizationEvaluation(parent, null, "ImmunizationEvaluation", (ImmunizationEvaluation)resource, -1);
17196    else if (resource instanceof ImmunizationRecommendation)
17197      composeImmunizationRecommendation(parent, null, "ImmunizationRecommendation", (ImmunizationRecommendation)resource, -1);
17198    else if (resource instanceof ImplementationGuide)
17199      composeImplementationGuide(parent, null, "ImplementationGuide", (ImplementationGuide)resource, -1);
17200    else if (resource instanceof InsurancePlan)
17201      composeInsurancePlan(parent, null, "InsurancePlan", (InsurancePlan)resource, -1);
17202    else if (resource instanceof Invoice)
17203      composeInvoice(parent, null, "Invoice", (Invoice)resource, -1);
17204    else if (resource instanceof ItemInstance)
17205      composeItemInstance(parent, null, "ItemInstance", (ItemInstance)resource, -1);
17206    else if (resource instanceof Library)
17207      composeLibrary(parent, null, "Library", (Library)resource, -1);
17208    else if (resource instanceof Linkage)
17209      composeLinkage(parent, null, "Linkage", (Linkage)resource, -1);
17210    else if (resource instanceof ListResource)
17211      composeListResource(parent, null, "ListResource", (ListResource)resource, -1);
17212    else if (resource instanceof Location)
17213      composeLocation(parent, null, "Location", (Location)resource, -1);
17214    else if (resource instanceof Measure)
17215      composeMeasure(parent, null, "Measure", (Measure)resource, -1);
17216    else if (resource instanceof MeasureReport)
17217      composeMeasureReport(parent, null, "MeasureReport", (MeasureReport)resource, -1);
17218    else if (resource instanceof Media)
17219      composeMedia(parent, null, "Media", (Media)resource, -1);
17220    else if (resource instanceof Medication)
17221      composeMedication(parent, null, "Medication", (Medication)resource, -1);
17222    else if (resource instanceof MedicationAdministration)
17223      composeMedicationAdministration(parent, null, "MedicationAdministration", (MedicationAdministration)resource, -1);
17224    else if (resource instanceof MedicationDispense)
17225      composeMedicationDispense(parent, null, "MedicationDispense", (MedicationDispense)resource, -1);
17226    else if (resource instanceof MedicationKnowledge)
17227      composeMedicationKnowledge(parent, null, "MedicationKnowledge", (MedicationKnowledge)resource, -1);
17228    else if (resource instanceof MedicationRequest)
17229      composeMedicationRequest(parent, null, "MedicationRequest", (MedicationRequest)resource, -1);
17230    else if (resource instanceof MedicationStatement)
17231      composeMedicationStatement(parent, null, "MedicationStatement", (MedicationStatement)resource, -1);
17232    else if (resource instanceof MedicinalProduct)
17233      composeMedicinalProduct(parent, null, "MedicinalProduct", (MedicinalProduct)resource, -1);
17234    else if (resource instanceof MedicinalProductAuthorization)
17235      composeMedicinalProductAuthorization(parent, null, "MedicinalProductAuthorization", (MedicinalProductAuthorization)resource, -1);
17236    else if (resource instanceof MedicinalProductClinicals)
17237      composeMedicinalProductClinicals(parent, null, "MedicinalProductClinicals", (MedicinalProductClinicals)resource, -1);
17238    else if (resource instanceof MedicinalProductContraindication)
17239      composeMedicinalProductContraindication(parent, null, "MedicinalProductContraindication", (MedicinalProductContraindication)resource, -1);
17240    else if (resource instanceof MedicinalProductDeviceSpec)
17241      composeMedicinalProductDeviceSpec(parent, null, "MedicinalProductDeviceSpec", (MedicinalProductDeviceSpec)resource, -1);
17242    else if (resource instanceof MedicinalProductIndication)
17243      composeMedicinalProductIndication(parent, null, "MedicinalProductIndication", (MedicinalProductIndication)resource, -1);
17244    else if (resource instanceof MedicinalProductIngredient)
17245      composeMedicinalProductIngredient(parent, null, "MedicinalProductIngredient", (MedicinalProductIngredient)resource, -1);
17246    else if (resource instanceof MedicinalProductInteraction)
17247      composeMedicinalProductInteraction(parent, null, "MedicinalProductInteraction", (MedicinalProductInteraction)resource, -1);
17248    else if (resource instanceof MedicinalProductManufactured)
17249      composeMedicinalProductManufactured(parent, null, "MedicinalProductManufactured", (MedicinalProductManufactured)resource, -1);
17250    else if (resource instanceof MedicinalProductPackaged)
17251      composeMedicinalProductPackaged(parent, null, "MedicinalProductPackaged", (MedicinalProductPackaged)resource, -1);
17252    else if (resource instanceof MedicinalProductPharmaceutical)
17253      composeMedicinalProductPharmaceutical(parent, null, "MedicinalProductPharmaceutical", (MedicinalProductPharmaceutical)resource, -1);
17254    else if (resource instanceof MedicinalProductUndesirableEffect)
17255      composeMedicinalProductUndesirableEffect(parent, null, "MedicinalProductUndesirableEffect", (MedicinalProductUndesirableEffect)resource, -1);
17256    else if (resource instanceof MessageDefinition)
17257      composeMessageDefinition(parent, null, "MessageDefinition", (MessageDefinition)resource, -1);
17258    else if (resource instanceof MessageHeader)
17259      composeMessageHeader(parent, null, "MessageHeader", (MessageHeader)resource, -1);
17260    else if (resource instanceof NamingSystem)
17261      composeNamingSystem(parent, null, "NamingSystem", (NamingSystem)resource, -1);
17262    else if (resource instanceof NutritionOrder)
17263      composeNutritionOrder(parent, null, "NutritionOrder", (NutritionOrder)resource, -1);
17264    else if (resource instanceof Observation)
17265      composeObservation(parent, null, "Observation", (Observation)resource, -1);
17266    else if (resource instanceof ObservationDefinition)
17267      composeObservationDefinition(parent, null, "ObservationDefinition", (ObservationDefinition)resource, -1);
17268    else if (resource instanceof OperationDefinition)
17269      composeOperationDefinition(parent, null, "OperationDefinition", (OperationDefinition)resource, -1);
17270    else if (resource instanceof OperationOutcome)
17271      composeOperationOutcome(parent, null, "OperationOutcome", (OperationOutcome)resource, -1);
17272    else if (resource instanceof Organization)
17273      composeOrganization(parent, null, "Organization", (Organization)resource, -1);
17274    else if (resource instanceof OrganizationAffiliation)
17275      composeOrganizationAffiliation(parent, null, "OrganizationAffiliation", (OrganizationAffiliation)resource, -1);
17276    else if (resource instanceof Patient)
17277      composePatient(parent, null, "Patient", (Patient)resource, -1);
17278    else if (resource instanceof PaymentNotice)
17279      composePaymentNotice(parent, null, "PaymentNotice", (PaymentNotice)resource, -1);
17280    else if (resource instanceof PaymentReconciliation)
17281      composePaymentReconciliation(parent, null, "PaymentReconciliation", (PaymentReconciliation)resource, -1);
17282    else if (resource instanceof Person)
17283      composePerson(parent, null, "Person", (Person)resource, -1);
17284    else if (resource instanceof PlanDefinition)
17285      composePlanDefinition(parent, null, "PlanDefinition", (PlanDefinition)resource, -1);
17286    else if (resource instanceof Practitioner)
17287      composePractitioner(parent, null, "Practitioner", (Practitioner)resource, -1);
17288    else if (resource instanceof PractitionerRole)
17289      composePractitionerRole(parent, null, "PractitionerRole", (PractitionerRole)resource, -1);
17290    else if (resource instanceof Procedure)
17291      composeProcedure(parent, null, "Procedure", (Procedure)resource, -1);
17292    else if (resource instanceof ProcessRequest)
17293      composeProcessRequest(parent, null, "ProcessRequest", (ProcessRequest)resource, -1);
17294    else if (resource instanceof ProcessResponse)
17295      composeProcessResponse(parent, null, "ProcessResponse", (ProcessResponse)resource, -1);
17296    else if (resource instanceof Provenance)
17297      composeProvenance(parent, null, "Provenance", (Provenance)resource, -1);
17298    else if (resource instanceof Questionnaire)
17299      composeQuestionnaire(parent, null, "Questionnaire", (Questionnaire)resource, -1);
17300    else if (resource instanceof QuestionnaireResponse)
17301      composeQuestionnaireResponse(parent, null, "QuestionnaireResponse", (QuestionnaireResponse)resource, -1);
17302    else if (resource instanceof RelatedPerson)
17303      composeRelatedPerson(parent, null, "RelatedPerson", (RelatedPerson)resource, -1);
17304    else if (resource instanceof RequestGroup)
17305      composeRequestGroup(parent, null, "RequestGroup", (RequestGroup)resource, -1);
17306    else if (resource instanceof ResearchStudy)
17307      composeResearchStudy(parent, null, "ResearchStudy", (ResearchStudy)resource, -1);
17308    else if (resource instanceof ResearchSubject)
17309      composeResearchSubject(parent, null, "ResearchSubject", (ResearchSubject)resource, -1);
17310    else if (resource instanceof RiskAssessment)
17311      composeRiskAssessment(parent, null, "RiskAssessment", (RiskAssessment)resource, -1);
17312    else if (resource instanceof Schedule)
17313      composeSchedule(parent, null, "Schedule", (Schedule)resource, -1);
17314    else if (resource instanceof SearchParameter)
17315      composeSearchParameter(parent, null, "SearchParameter", (SearchParameter)resource, -1);
17316    else if (resource instanceof Sequence)
17317      composeSequence(parent, null, "Sequence", (Sequence)resource, -1);
17318    else if (resource instanceof ServiceRequest)
17319      composeServiceRequest(parent, null, "ServiceRequest", (ServiceRequest)resource, -1);
17320    else if (resource instanceof Slot)
17321      composeSlot(parent, null, "Slot", (Slot)resource, -1);
17322    else if (resource instanceof Specimen)
17323      composeSpecimen(parent, null, "Specimen", (Specimen)resource, -1);
17324    else if (resource instanceof SpecimenDefinition)
17325      composeSpecimenDefinition(parent, null, "SpecimenDefinition", (SpecimenDefinition)resource, -1);
17326    else if (resource instanceof StructureDefinition)
17327      composeStructureDefinition(parent, null, "StructureDefinition", (StructureDefinition)resource, -1);
17328    else if (resource instanceof StructureMap)
17329      composeStructureMap(parent, null, "StructureMap", (StructureMap)resource, -1);
17330    else if (resource instanceof Subscription)
17331      composeSubscription(parent, null, "Subscription", (Subscription)resource, -1);
17332    else if (resource instanceof Substance)
17333      composeSubstance(parent, null, "Substance", (Substance)resource, -1);
17334    else if (resource instanceof SubstancePolymer)
17335      composeSubstancePolymer(parent, null, "SubstancePolymer", (SubstancePolymer)resource, -1);
17336    else if (resource instanceof SubstanceReferenceInformation)
17337      composeSubstanceReferenceInformation(parent, null, "SubstanceReferenceInformation", (SubstanceReferenceInformation)resource, -1);
17338    else if (resource instanceof SubstanceSpecification)
17339      composeSubstanceSpecification(parent, null, "SubstanceSpecification", (SubstanceSpecification)resource, -1);
17340    else if (resource instanceof SupplyDelivery)
17341      composeSupplyDelivery(parent, null, "SupplyDelivery", (SupplyDelivery)resource, -1);
17342    else if (resource instanceof SupplyRequest)
17343      composeSupplyRequest(parent, null, "SupplyRequest", (SupplyRequest)resource, -1);
17344    else if (resource instanceof Task)
17345      composeTask(parent, null, "Task", (Task)resource, -1);
17346    else if (resource instanceof TerminologyCapabilities)
17347      composeTerminologyCapabilities(parent, null, "TerminologyCapabilities", (TerminologyCapabilities)resource, -1);
17348    else if (resource instanceof TestReport)
17349      composeTestReport(parent, null, "TestReport", (TestReport)resource, -1);
17350    else if (resource instanceof TestScript)
17351      composeTestScript(parent, null, "TestScript", (TestScript)resource, -1);
17352    else if (resource instanceof UserSession)
17353      composeUserSession(parent, null, "UserSession", (UserSession)resource, -1);
17354    else if (resource instanceof ValueSet)
17355      composeValueSet(parent, null, "ValueSet", (ValueSet)resource, -1);
17356    else if (resource instanceof VerificationResult)
17357      composeVerificationResult(parent, null, "VerificationResult", (VerificationResult)resource, -1);
17358    else if (resource instanceof VisionPrescription)
17359      composeVisionPrescription(parent, null, "VisionPrescription", (VisionPrescription)resource, -1);
17360    else
17361      throw new Error("Unhandled resource type "+resource.getClass().getName());
17362  }
17363
17364  protected void composeType(Complex parent, String parentType, String name, Type value, int index) {
17365    if (value == null)
17366      return;
17367    else if (value instanceof DateType)
17368      composeDate(parent, parentType, name, (DateType)value, index);
17369    else if (value instanceof DateTimeType)
17370      composeDateTime(parent, parentType, name, (DateTimeType)value, index);
17371    else if (value instanceof CodeType)
17372      composeCode(parent, parentType, name, (CodeType)value, index);
17373    else if (value instanceof StringType)
17374      composeString(parent, parentType, name, (StringType)value, index);
17375    else if (value instanceof IntegerType)
17376      composeInteger(parent, parentType, name, (IntegerType)value, index);
17377    else if (value instanceof OidType)
17378      composeOid(parent, parentType, name, (OidType)value, index);
17379    else if (value instanceof CanonicalType)
17380      composeCanonical(parent, parentType, name, (CanonicalType)value, index);
17381    else if (value instanceof UriType)
17382      composeUri(parent, parentType, name, (UriType)value, index);
17383    else if (value instanceof UuidType)
17384      composeUuid(parent, parentType, name, (UuidType)value, index);
17385    else if (value instanceof UrlType)
17386      composeUrl(parent, parentType, name, (UrlType)value, index);
17387    else if (value instanceof InstantType)
17388      composeInstant(parent, parentType, name, (InstantType)value, index);
17389    else if (value instanceof BooleanType)
17390      composeBoolean(parent, parentType, name, (BooleanType)value, index);
17391    else if (value instanceof Base64BinaryType)
17392      composeBase64Binary(parent, parentType, name, (Base64BinaryType)value, index);
17393    else if (value instanceof UnsignedIntType)
17394      composeUnsignedInt(parent, parentType, name, (UnsignedIntType)value, index);
17395    else if (value instanceof MarkdownType)
17396      composeMarkdown(parent, parentType, name, (MarkdownType)value, index);
17397    else if (value instanceof TimeType)
17398      composeTime(parent, parentType, name, (TimeType)value, index);
17399    else if (value instanceof IdType)
17400      composeId(parent, parentType, name, (IdType)value, index);
17401    else if (value instanceof PositiveIntType)
17402      composePositiveInt(parent, parentType, name, (PositiveIntType)value, index);
17403    else if (value instanceof DecimalType)
17404      composeDecimal(parent, parentType, name, (DecimalType)value, index);
17405    else if (value instanceof Extension)
17406      composeExtension(parent, parentType, name, (Extension)value, index);
17407    else if (value instanceof Narrative)
17408      composeNarrative(parent, parentType, name, (Narrative)value, index);
17409    else if (value instanceof Meta)
17410      composeMeta(parent, parentType, name, (Meta)value, index);
17411    else if (value instanceof Address)
17412      composeAddress(parent, parentType, name, (Address)value, index);
17413    else if (value instanceof Contributor)
17414      composeContributor(parent, parentType, name, (Contributor)value, index);
17415    else if (value instanceof Attachment)
17416      composeAttachment(parent, parentType, name, (Attachment)value, index);
17417    else if (value instanceof Count)
17418      composeCount(parent, parentType, name, (Count)value, index);
17419    else if (value instanceof DataRequirement)
17420      composeDataRequirement(parent, parentType, name, (DataRequirement)value, index);
17421    else if (value instanceof Dosage)
17422      composeDosage(parent, parentType, name, (Dosage)value, index);
17423    else if (value instanceof Money)
17424      composeMoney(parent, parentType, name, (Money)value, index);
17425    else if (value instanceof HumanName)
17426      composeHumanName(parent, parentType, name, (HumanName)value, index);
17427    else if (value instanceof ContactPoint)
17428      composeContactPoint(parent, parentType, name, (ContactPoint)value, index);
17429    else if (value instanceof Identifier)
17430      composeIdentifier(parent, parentType, name, (Identifier)value, index);
17431    else if (value instanceof Coding)
17432      composeCoding(parent, parentType, name, (Coding)value, index);
17433    else if (value instanceof SampledData)
17434      composeSampledData(parent, parentType, name, (SampledData)value, index);
17435    else if (value instanceof Ratio)
17436      composeRatio(parent, parentType, name, (Ratio)value, index);
17437    else if (value instanceof Distance)
17438      composeDistance(parent, parentType, name, (Distance)value, index);
17439    else if (value instanceof Age)
17440      composeAge(parent, parentType, name, (Age)value, index);
17441    else if (value instanceof Reference)
17442      composeReference(parent, parentType, name, (Reference)value, index);
17443    else if (value instanceof TriggerDefinition)
17444      composeTriggerDefinition(parent, parentType, name, (TriggerDefinition)value, index);
17445    else if (value instanceof Quantity)
17446      composeQuantity(parent, parentType, name, (Quantity)value, index);
17447    else if (value instanceof Period)
17448      composePeriod(parent, parentType, name, (Period)value, index);
17449    else if (value instanceof Duration)
17450      composeDuration(parent, parentType, name, (Duration)value, index);
17451    else if (value instanceof Range)
17452      composeRange(parent, parentType, name, (Range)value, index);
17453    else if (value instanceof RelatedArtifact)
17454      composeRelatedArtifact(parent, parentType, name, (RelatedArtifact)value, index);
17455    else if (value instanceof Annotation)
17456      composeAnnotation(parent, parentType, name, (Annotation)value, index);
17457    else if (value instanceof ContactDetail)
17458      composeContactDetail(parent, parentType, name, (ContactDetail)value, index);
17459    else if (value instanceof UsageContext)
17460      composeUsageContext(parent, parentType, name, (UsageContext)value, index);
17461    else if (value instanceof Expression)
17462      composeExpression(parent, parentType, name, (Expression)value, index);
17463    else if (value instanceof Signature)
17464      composeSignature(parent, parentType, name, (Signature)value, index);
17465    else if (value instanceof Timing)
17466      composeTiming(parent, parentType, name, (Timing)value, index);
17467    else if (value instanceof CodeableConcept)
17468      composeCodeableConcept(parent, parentType, name, (CodeableConcept)value, index);
17469    else if (value instanceof ParameterDefinition)
17470      composeParameterDefinition(parent, parentType, name, (ParameterDefinition)value, index);
17471    else
17472      throw new Error("Unhandled type");
17473  }
17474
17475}
17476