001package org.hl7.fhir.r4.formats;
002
003
004
005/*
006  Copyright (c) 2011+, HL7, Inc.
007  All rights reserved.
008  
009  Redistribution and use in source and binary forms, with or without modification, 
010  are permitted provided that the following conditions are met:
011  
012   * Redistributions of source code must retain the above copyright notice, this 
013     list of conditions and the following disclaimer.
014   * Redistributions in binary form must reproduce the above copyright notice, 
015     this list of conditions and the following disclaimer in the documentation 
016     and/or other materials provided with the distribution.
017   * Neither the name of HL7 nor the names of its contributors may be used to 
018     endorse or promote products derived from this software without specific 
019     prior written permission.
020  
021  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
022  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
023  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
024  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
025  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
026  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
027  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
028  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
029  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
030  POSSIBILITY OF SUCH DAMAGE.
031  
032*/
033
034
035// Generated on Tue, May 12, 2020 07:48+1000 for FHIR v4.0.1
036
037import org.hl7.fhir.r4.model.DateType;
038import org.hl7.fhir.r4.model.DateTimeType;
039import org.hl7.fhir.r4.model.CodeType;
040import org.hl7.fhir.r4.model.StringType;
041import org.hl7.fhir.r4.model.IntegerType;
042import org.hl7.fhir.r4.model.OidType;
043import org.hl7.fhir.r4.model.CanonicalType;
044import org.hl7.fhir.r4.model.UriType;
045import org.hl7.fhir.r4.model.UuidType;
046import org.hl7.fhir.r4.model.UrlType;
047import org.hl7.fhir.r4.model.InstantType;
048import org.hl7.fhir.r4.model.BooleanType;
049import org.hl7.fhir.r4.model.Base64BinaryType;
050import org.hl7.fhir.r4.model.UnsignedIntType;
051import org.hl7.fhir.r4.model.MarkdownType;
052import org.hl7.fhir.r4.model.TimeType;
053import org.hl7.fhir.r4.model.IdType;
054import org.hl7.fhir.r4.model.PositiveIntType;
055import org.hl7.fhir.r4.model.DecimalType;
056import org.hl7.fhir.r4.model.*;
057import org.xmlpull.v1.*;
058import org.hl7.fhir.utilities.Utilities;
059import org.hl7.fhir.exceptions.FHIRFormatError;
060import org.hl7.fhir.exceptions.FHIRException;
061import org.hl7.fhir.r4.utils.formats.Turtle.Complex;
062import java.io.IOException;
063
064public class RdfParser extends RdfParserBase {
065
066  public RdfParser() {
067    super();
068  }
069
070  public RdfParser(boolean allowUnknownContent) {
071    super();
072    setAllowUnknownContent(allowUnknownContent);
073  }
074
075
076  protected void composeElement(Complex t, String parentType, String name, Element element, int index) {
077    if (element == null) 
078      return;
079    if (index > -1)
080      t.predicate("fhir:index", Integer.toString(index));
081    if (element.hasIdElement())
082      composeString(t, "Element", "id", element.getIdElement(), -1);
083    for (int i = 0; i < element.getExtension().size(); i++)
084      composeExtension(t, "Element", "extension", element.getExtension().get(i), i);
085  }
086
087  protected void composeBackboneElement(Complex t, String tType, String name, BackboneElement element, int index) {
088    composeElement(t, tType, name, element, index);
089    for (int i = 0; i < element.getModifierExtension().size(); i++)
090      composeExtension(t, "Element", "modifierExtension", element.getModifierExtension().get(i), i);
091  }
092
093  private void composeEnum(Complex parent, String parentType, String name, Enumeration<? extends Enum> value, int index) {
094    if (value == null)
095      return;
096    Complex t = parent.predicate("fhir:"+parentType+"."+name);
097    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
098    composeElement(t, parentType, name, value, index);
099    decorateCode(t, value);
100  }
101
102
103  protected void composeDate(Complex parent, String parentType, String name, DateType value, int index) {
104    if (value == null)
105      return;
106    Complex t = parent.predicate("fhir:"+parentType+"."+name);
107    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
108    composeElement(t, parentType, name, value, index);
109  }
110
111  protected void composeDateTime(Complex parent, String parentType, String name, DateTimeType value, int index) {
112    if (value == null)
113      return;
114    Complex t = parent.predicate("fhir:"+parentType+"."+name);
115    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
116    composeElement(t, parentType, name, value, index);
117  }
118
119  protected void composeCode(Complex parent, String parentType, String name, CodeType value, int index) {
120    if (value == null)
121      return;
122    Complex t = parent.predicate("fhir:"+parentType+"."+name);
123    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
124    composeElement(t, parentType, name, value, index);
125    decorateCode(t, value);
126  }
127
128  protected void composeString(Complex parent, String parentType, String name, StringType value, int index) {
129    if (value == null)
130      return;
131    Complex t = parent.predicate("fhir:"+parentType+"."+name);
132    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
133    composeElement(t, parentType, name, value, index);
134  }
135
136  protected void composeInteger(Complex parent, String parentType, String name, IntegerType value, int index) {
137    if (value == null)
138      return;
139    Complex t = parent.predicate("fhir:"+parentType+"."+name);
140    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
141    composeElement(t, parentType, name, value, index);
142  }
143
144  protected void composeOid(Complex parent, String parentType, String name, OidType value, int index) {
145    if (value == null)
146      return;
147    Complex t = parent.predicate("fhir:"+parentType+"."+name);
148    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
149    composeElement(t, parentType, name, value, index);
150  }
151
152  protected void composeCanonical(Complex parent, String parentType, String name, CanonicalType value, int index) {
153    if (value == null)
154      return;
155    Complex t = parent.predicate("fhir:"+parentType+"."+name);
156    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
157    composeElement(t, parentType, name, value, index);
158  }
159
160  protected void composeUri(Complex parent, String parentType, String name, UriType value, int index) {
161    if (value == null)
162      return;
163    Complex t = parent.predicate("fhir:"+parentType+"."+name);
164    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
165    composeElement(t, parentType, name, value, index);
166  }
167
168  protected void composeUuid(Complex parent, String parentType, String name, UuidType value, int index) {
169    if (value == null)
170      return;
171    Complex t = parent.predicate("fhir:"+parentType+"."+name);
172    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
173    composeElement(t, parentType, name, value, index);
174  }
175
176  protected void composeUrl(Complex parent, String parentType, String name, UrlType value, int index) {
177    if (value == null)
178      return;
179    Complex t = parent.predicate("fhir:"+parentType+"."+name);
180    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
181    composeElement(t, parentType, name, value, index);
182  }
183
184  protected void composeInstant(Complex parent, String parentType, String name, InstantType value, int index) {
185    if (value == null)
186      return;
187    Complex t = parent.predicate("fhir:"+parentType+"."+name);
188    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
189    composeElement(t, parentType, name, value, index);
190  }
191
192  protected void composeBoolean(Complex parent, String parentType, String name, BooleanType value, int index) {
193    if (value == null)
194      return;
195    Complex t = parent.predicate("fhir:"+parentType+"."+name);
196    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
197    composeElement(t, parentType, name, value, index);
198  }
199
200  protected void composeBase64Binary(Complex parent, String parentType, String name, Base64BinaryType value, int index) {
201    if (value == null)
202      return;
203    Complex t = parent.predicate("fhir:"+parentType+"."+name);
204    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
205    composeElement(t, parentType, name, value, index);
206  }
207
208  protected void composeUnsignedInt(Complex parent, String parentType, String name, UnsignedIntType value, int index) {
209    if (value == null)
210      return;
211    Complex t = parent.predicate("fhir:"+parentType+"."+name);
212    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
213    composeElement(t, parentType, name, value, index);
214  }
215
216  protected void composeMarkdown(Complex parent, String parentType, String name, MarkdownType value, int index) {
217    if (value == null)
218      return;
219    Complex t = parent.predicate("fhir:"+parentType+"."+name);
220    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
221    composeElement(t, parentType, name, value, index);
222  }
223
224  protected void composeTime(Complex parent, String parentType, String name, TimeType value, int index) {
225    if (value == null)
226      return;
227    Complex t = parent.predicate("fhir:"+parentType+"."+name);
228    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
229    composeElement(t, parentType, name, value, index);
230  }
231
232  protected void composeId(Complex parent, String parentType, String name, IdType value, int index) {
233    if (value == null)
234      return;
235    Complex t = parent.predicate("fhir:"+parentType+"."+name);
236    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
237    composeElement(t, parentType, name, value, index);
238  }
239
240  protected void composePositiveInt(Complex parent, String parentType, String name, PositiveIntType value, int index) {
241    if (value == null)
242      return;
243    Complex t = parent.predicate("fhir:"+parentType+"."+name);
244    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
245    composeElement(t, parentType, name, value, index);
246  }
247
248  protected void composeDecimal(Complex parent, String parentType, String name, DecimalType value, int index) {
249    if (value == null)
250      return;
251    Complex t = parent.predicate("fhir:"+parentType+"."+name);
252    t.predicate("fhir:value", ttlLiteral(value.asStringValue()));
253    composeElement(t, parentType, name, value, index);
254  }
255
256  protected void composeExtension(Complex parent, String parentType, String name, Extension element, int index) {
257    if (element == null) 
258      return;
259    Complex t;
260    if (Utilities.noString(parentType))
261      t = parent;
262    else {
263      t = parent.predicate("fhir:"+parentType+'.'+name);
264    }
265    composeElement(t, "Extension", name, element, index);
266    if (element.hasUrlElement())
267      composeUri(t, "Extension", "url", element.getUrlElement(), -1);
268    if (element.hasValue())
269      composeType(t, "Extension", "value", element.getValue(), -1);
270  }
271
272  protected void composeNarrative(Complex parent, String parentType, String name, Narrative element, int index) {
273    if (element == null) 
274      return;
275    Complex t;
276    if (Utilities.noString(parentType))
277      t = parent;
278    else {
279      t = parent.predicate("fhir:"+parentType+'.'+name);
280    }
281    composeElement(t, "Narrative", name, element, index);
282    if (element.hasStatusElement())
283      composeEnum(t, "Narrative", "status", element.getStatusElement(), -1);
284    if (element.hasDiv())
285      composeXhtml(t, "Narrative", "div", element.getDiv(), -1);
286  }
287
288  protected void composeMeta(Complex parent, String parentType, String name, Meta element, int index) {
289    if (element == null) 
290      return;
291    Complex t;
292    if (Utilities.noString(parentType))
293      t = parent;
294    else {
295      t = parent.predicate("fhir:"+parentType+'.'+name);
296    }
297    composeElement(t, "Meta", name, element, index);
298    if (element.hasVersionIdElement())
299      composeId(t, "Meta", "versionId", element.getVersionIdElement(), -1);
300    if (element.hasLastUpdatedElement())
301      composeInstant(t, "Meta", "lastUpdated", element.getLastUpdatedElement(), -1);
302    if (element.hasSourceElement())
303      composeUri(t, "Meta", "source", element.getSourceElement(), -1);
304    for (int i = 0; i < element.getProfile().size(); i++)
305      composeCanonical(t, "Meta", "profile", element.getProfile().get(i), i);
306    for (int i = 0; i < element.getSecurity().size(); i++)
307      composeCoding(t, "Meta", "security", element.getSecurity().get(i), i);
308    for (int i = 0; i < element.getTag().size(); i++)
309      composeCoding(t, "Meta", "tag", element.getTag().get(i), i);
310  }
311
312  protected void composeAddress(Complex parent, String parentType, String name, Address element, int index) {
313    if (element == null) 
314      return;
315    Complex t;
316    if (Utilities.noString(parentType))
317      t = parent;
318    else {
319      t = parent.predicate("fhir:"+parentType+'.'+name);
320    }
321    composeElement(t, "Address", name, element, index);
322    if (element.hasUseElement())
323      composeEnum(t, "Address", "use", element.getUseElement(), -1);
324    if (element.hasTypeElement())
325      composeEnum(t, "Address", "type", element.getTypeElement(), -1);
326    if (element.hasTextElement())
327      composeString(t, "Address", "text", element.getTextElement(), -1);
328    for (int i = 0; i < element.getLine().size(); i++)
329      composeString(t, "Address", "line", element.getLine().get(i), i);
330    if (element.hasCityElement())
331      composeString(t, "Address", "city", element.getCityElement(), -1);
332    if (element.hasDistrictElement())
333      composeString(t, "Address", "district", element.getDistrictElement(), -1);
334    if (element.hasStateElement())
335      composeString(t, "Address", "state", element.getStateElement(), -1);
336    if (element.hasPostalCodeElement())
337      composeString(t, "Address", "postalCode", element.getPostalCodeElement(), -1);
338    if (element.hasCountryElement())
339      composeString(t, "Address", "country", element.getCountryElement(), -1);
340    if (element.hasPeriod())
341      composePeriod(t, "Address", "period", element.getPeriod(), -1);
342  }
343
344  protected void composeContributor(Complex parent, String parentType, String name, Contributor element, int index) {
345    if (element == null) 
346      return;
347    Complex t;
348    if (Utilities.noString(parentType))
349      t = parent;
350    else {
351      t = parent.predicate("fhir:"+parentType+'.'+name);
352    }
353    composeElement(t, "Contributor", name, element, index);
354    if (element.hasTypeElement())
355      composeEnum(t, "Contributor", "type", element.getTypeElement(), -1);
356    if (element.hasNameElement())
357      composeString(t, "Contributor", "name", element.getNameElement(), -1);
358    for (int i = 0; i < element.getContact().size(); i++)
359      composeContactDetail(t, "Contributor", "contact", element.getContact().get(i), i);
360  }
361
362  protected void composeAttachment(Complex parent, String parentType, String name, Attachment element, int index) {
363    if (element == null) 
364      return;
365    Complex t;
366    if (Utilities.noString(parentType))
367      t = parent;
368    else {
369      t = parent.predicate("fhir:"+parentType+'.'+name);
370    }
371    composeElement(t, "Attachment", name, element, index);
372    if (element.hasContentTypeElement())
373      composeCode(t, "Attachment", "contentType", element.getContentTypeElement(), -1);
374    if (element.hasLanguageElement())
375      composeCode(t, "Attachment", "language", element.getLanguageElement(), -1);
376    if (element.hasDataElement())
377      composeBase64Binary(t, "Attachment", "data", element.getDataElement(), -1);
378    if (element.hasUrlElement())
379      composeUrl(t, "Attachment", "url", element.getUrlElement(), -1);
380    if (element.hasSizeElement())
381      composeUnsignedInt(t, "Attachment", "size", element.getSizeElement(), -1);
382    if (element.hasHashElement())
383      composeBase64Binary(t, "Attachment", "hash", element.getHashElement(), -1);
384    if (element.hasTitleElement())
385      composeString(t, "Attachment", "title", element.getTitleElement(), -1);
386    if (element.hasCreationElement())
387      composeDateTime(t, "Attachment", "creation", element.getCreationElement(), -1);
388  }
389
390  protected void composeCount(Complex parent, String parentType, String name, Count element, int index) {
391    if (element == null) 
392      return;
393    Complex t;
394    if (Utilities.noString(parentType))
395      t = parent;
396    else {
397      t = parent.predicate("fhir:"+parentType+'.'+name);
398    }
399    composeElement(t, "Count", name, element, index);
400  }
401
402  protected void composeDataRequirement(Complex parent, String parentType, String name, DataRequirement element, int index) {
403    if (element == null) 
404      return;
405    Complex t;
406    if (Utilities.noString(parentType))
407      t = parent;
408    else {
409      t = parent.predicate("fhir:"+parentType+'.'+name);
410    }
411    composeElement(t, "DataRequirement", name, element, index);
412    if (element.hasTypeElement())
413      composeCode(t, "DataRequirement", "type", element.getTypeElement(), -1);
414    for (int i = 0; i < element.getProfile().size(); i++)
415      composeCanonical(t, "DataRequirement", "profile", element.getProfile().get(i), i);
416    if (element.hasSubject())
417      composeType(t, "DataRequirement", "subject", element.getSubject(), -1);
418    for (int i = 0; i < element.getMustSupport().size(); i++)
419      composeString(t, "DataRequirement", "mustSupport", element.getMustSupport().get(i), i);
420    for (int i = 0; i < element.getCodeFilter().size(); i++)
421      composeDataRequirementDataRequirementCodeFilterComponent(t, "DataRequirement", "codeFilter", element.getCodeFilter().get(i), i);
422    for (int i = 0; i < element.getDateFilter().size(); i++)
423      composeDataRequirementDataRequirementDateFilterComponent(t, "DataRequirement", "dateFilter", element.getDateFilter().get(i), i);
424    if (element.hasLimitElement())
425      composePositiveInt(t, "DataRequirement", "limit", element.getLimitElement(), -1);
426    for (int i = 0; i < element.getSort().size(); i++)
427      composeDataRequirementDataRequirementSortComponent(t, "DataRequirement", "sort", element.getSort().get(i), i);
428  }
429
430  protected void composeDataRequirementDataRequirementCodeFilterComponent(Complex parent, String parentType, String name, DataRequirement.DataRequirementCodeFilterComponent element, int index) {
431    if (element == null) 
432      return;
433    Complex t;
434    if (Utilities.noString(parentType))
435      t = parent;
436    else {
437      t = parent.predicate("fhir:"+parentType+'.'+name);
438    }
439    composeElement(t, "codeFilter", name, element, index);
440    if (element.hasPathElement())
441      composeString(t, "DataRequirement", "path", element.getPathElement(), -1);
442    if (element.hasSearchParamElement())
443      composeString(t, "DataRequirement", "searchParam", element.getSearchParamElement(), -1);
444    if (element.hasValueSetElement())
445      composeCanonical(t, "DataRequirement", "valueSet", element.getValueSetElement(), -1);
446    for (int i = 0; i < element.getCode().size(); i++)
447      composeCoding(t, "DataRequirement", "code", element.getCode().get(i), i);
448  }
449
450  protected void composeDataRequirementDataRequirementDateFilterComponent(Complex parent, String parentType, String name, DataRequirement.DataRequirementDateFilterComponent element, int index) {
451    if (element == null) 
452      return;
453    Complex t;
454    if (Utilities.noString(parentType))
455      t = parent;
456    else {
457      t = parent.predicate("fhir:"+parentType+'.'+name);
458    }
459    composeElement(t, "dateFilter", name, element, index);
460    if (element.hasPathElement())
461      composeString(t, "DataRequirement", "path", element.getPathElement(), -1);
462    if (element.hasSearchParamElement())
463      composeString(t, "DataRequirement", "searchParam", element.getSearchParamElement(), -1);
464    if (element.hasValue())
465      composeType(t, "DataRequirement", "value", element.getValue(), -1);
466  }
467
468  protected void composeDataRequirementDataRequirementSortComponent(Complex parent, String parentType, String name, DataRequirement.DataRequirementSortComponent element, int index) {
469    if (element == null) 
470      return;
471    Complex t;
472    if (Utilities.noString(parentType))
473      t = parent;
474    else {
475      t = parent.predicate("fhir:"+parentType+'.'+name);
476    }
477    composeElement(t, "sort", name, element, index);
478    if (element.hasPathElement())
479      composeString(t, "DataRequirement", "path", element.getPathElement(), -1);
480    if (element.hasDirectionElement())
481      composeEnum(t, "DataRequirement", "direction", element.getDirectionElement(), -1);
482  }
483
484  protected void composeDosage(Complex parent, String parentType, String name, Dosage element, int index) {
485    if (element == null) 
486      return;
487    Complex t;
488    if (Utilities.noString(parentType))
489      t = parent;
490    else {
491      t = parent.predicate("fhir:"+parentType+'.'+name);
492    }
493    composeElement(t, "Dosage", name, element, index);
494    if (element.hasSequenceElement())
495      composeInteger(t, "Dosage", "sequence", element.getSequenceElement(), -1);
496    if (element.hasTextElement())
497      composeString(t, "Dosage", "text", element.getTextElement(), -1);
498    for (int i = 0; i < element.getAdditionalInstruction().size(); i++)
499      composeCodeableConcept(t, "Dosage", "additionalInstruction", element.getAdditionalInstruction().get(i), i);
500    if (element.hasPatientInstructionElement())
501      composeString(t, "Dosage", "patientInstruction", element.getPatientInstructionElement(), -1);
502    if (element.hasTiming())
503      composeTiming(t, "Dosage", "timing", element.getTiming(), -1);
504    if (element.hasAsNeeded())
505      composeType(t, "Dosage", "asNeeded", element.getAsNeeded(), -1);
506    if (element.hasSite())
507      composeCodeableConcept(t, "Dosage", "site", element.getSite(), -1);
508    if (element.hasRoute())
509      composeCodeableConcept(t, "Dosage", "route", element.getRoute(), -1);
510    if (element.hasMethod())
511      composeCodeableConcept(t, "Dosage", "method", element.getMethod(), -1);
512    for (int i = 0; i < element.getDoseAndRate().size(); i++)
513      composeDosageDosageDoseAndRateComponent(t, "Dosage", "doseAndRate", element.getDoseAndRate().get(i), i);
514    if (element.hasMaxDosePerPeriod())
515      composeRatio(t, "Dosage", "maxDosePerPeriod", element.getMaxDosePerPeriod(), -1);
516    if (element.hasMaxDosePerAdministration())
517      composeQuantity(t, "Dosage", "maxDosePerAdministration", element.getMaxDosePerAdministration(), -1);
518    if (element.hasMaxDosePerLifetime())
519      composeQuantity(t, "Dosage", "maxDosePerLifetime", element.getMaxDosePerLifetime(), -1);
520  }
521
522  protected void composeDosageDosageDoseAndRateComponent(Complex parent, String parentType, String name, Dosage.DosageDoseAndRateComponent element, int index) {
523    if (element == null) 
524      return;
525    Complex t;
526    if (Utilities.noString(parentType))
527      t = parent;
528    else {
529      t = parent.predicate("fhir:"+parentType+'.'+name);
530    }
531    composeElement(t, "doseAndRate", name, element, index);
532    if (element.hasType())
533      composeCodeableConcept(t, "Dosage", "type", element.getType(), -1);
534    if (element.hasDose())
535      composeType(t, "Dosage", "dose", element.getDose(), -1);
536    if (element.hasRate())
537      composeType(t, "Dosage", "rate", element.getRate(), -1);
538  }
539
540  protected void composeMoney(Complex parent, String parentType, String name, Money element, int index) {
541    if (element == null) 
542      return;
543    Complex t;
544    if (Utilities.noString(parentType))
545      t = parent;
546    else {
547      t = parent.predicate("fhir:"+parentType+'.'+name);
548    }
549    composeElement(t, "Money", name, element, index);
550    if (element.hasValueElement())
551      composeDecimal(t, "Money", "value", element.getValueElement(), -1);
552    if (element.hasCurrencyElement())
553      composeCode(t, "Money", "currency", element.getCurrencyElement(), -1);
554  }
555
556  protected void composeHumanName(Complex parent, String parentType, String name, HumanName element, int index) {
557    if (element == null) 
558      return;
559    Complex t;
560    if (Utilities.noString(parentType))
561      t = parent;
562    else {
563      t = parent.predicate("fhir:"+parentType+'.'+name);
564    }
565    composeElement(t, "HumanName", name, element, index);
566    if (element.hasUseElement())
567      composeEnum(t, "HumanName", "use", element.getUseElement(), -1);
568    if (element.hasTextElement())
569      composeString(t, "HumanName", "text", element.getTextElement(), -1);
570    if (element.hasFamilyElement())
571      composeString(t, "HumanName", "family", element.getFamilyElement(), -1);
572    for (int i = 0; i < element.getGiven().size(); i++)
573      composeString(t, "HumanName", "given", element.getGiven().get(i), i);
574    for (int i = 0; i < element.getPrefix().size(); i++)
575      composeString(t, "HumanName", "prefix", element.getPrefix().get(i), i);
576    for (int i = 0; i < element.getSuffix().size(); i++)
577      composeString(t, "HumanName", "suffix", element.getSuffix().get(i), i);
578    if (element.hasPeriod())
579      composePeriod(t, "HumanName", "period", element.getPeriod(), -1);
580  }
581
582  protected void composeContactPoint(Complex parent, String parentType, String name, ContactPoint element, int index) {
583    if (element == null) 
584      return;
585    Complex t;
586    if (Utilities.noString(parentType))
587      t = parent;
588    else {
589      t = parent.predicate("fhir:"+parentType+'.'+name);
590    }
591    composeElement(t, "ContactPoint", name, element, index);
592    if (element.hasSystemElement())
593      composeEnum(t, "ContactPoint", "system", element.getSystemElement(), -1);
594    if (element.hasValueElement())
595      composeString(t, "ContactPoint", "value", element.getValueElement(), -1);
596    if (element.hasUseElement())
597      composeEnum(t, "ContactPoint", "use", element.getUseElement(), -1);
598    if (element.hasRankElement())
599      composePositiveInt(t, "ContactPoint", "rank", element.getRankElement(), -1);
600    if (element.hasPeriod())
601      composePeriod(t, "ContactPoint", "period", element.getPeriod(), -1);
602  }
603
604  protected void composeMarketingStatus(Complex parent, String parentType, String name, MarketingStatus element, int index) {
605    if (element == null) 
606      return;
607    Complex t;
608    if (Utilities.noString(parentType))
609      t = parent;
610    else {
611      t = parent.predicate("fhir:"+parentType+'.'+name);
612    }
613    composeElement(t, "MarketingStatus", name, element, index);
614    if (element.hasCountry())
615      composeCodeableConcept(t, "MarketingStatus", "country", element.getCountry(), -1);
616    if (element.hasJurisdiction())
617      composeCodeableConcept(t, "MarketingStatus", "jurisdiction", element.getJurisdiction(), -1);
618    if (element.hasStatus())
619      composeCodeableConcept(t, "MarketingStatus", "status", element.getStatus(), -1);
620    if (element.hasDateRange())
621      composePeriod(t, "MarketingStatus", "dateRange", element.getDateRange(), -1);
622    if (element.hasRestoreDateElement())
623      composeDateTime(t, "MarketingStatus", "restoreDate", element.getRestoreDateElement(), -1);
624  }
625
626  protected void composeIdentifier(Complex parent, String parentType, String name, Identifier element, int index) {
627    if (element == null) 
628      return;
629    Complex t;
630    if (Utilities.noString(parentType))
631      t = parent;
632    else {
633      t = parent.predicate("fhir:"+parentType+'.'+name);
634    }
635    composeElement(t, "Identifier", name, element, index);
636    if (element.hasUseElement())
637      composeEnum(t, "Identifier", "use", element.getUseElement(), -1);
638    if (element.hasType())
639      composeCodeableConcept(t, "Identifier", "type", element.getType(), -1);
640    if (element.hasSystemElement())
641      composeUri(t, "Identifier", "system", element.getSystemElement(), -1);
642    if (element.hasValueElement())
643      composeString(t, "Identifier", "value", element.getValueElement(), -1);
644    if (element.hasPeriod())
645      composePeriod(t, "Identifier", "period", element.getPeriod(), -1);
646    if (element.hasAssigner())
647      composeReference(t, "Identifier", "assigner", element.getAssigner(), -1);
648  }
649
650  protected void composeSubstanceAmount(Complex parent, String parentType, String name, SubstanceAmount element, int index) {
651    if (element == null) 
652      return;
653    Complex t;
654    if (Utilities.noString(parentType))
655      t = parent;
656    else {
657      t = parent.predicate("fhir:"+parentType+'.'+name);
658    }
659    composeElement(t, "SubstanceAmount", name, element, index);
660    if (element.hasAmount())
661      composeType(t, "SubstanceAmount", "amount", element.getAmount(), -1);
662    if (element.hasAmountType())
663      composeCodeableConcept(t, "SubstanceAmount", "amountType", element.getAmountType(), -1);
664    if (element.hasAmountTextElement())
665      composeString(t, "SubstanceAmount", "amountText", element.getAmountTextElement(), -1);
666    if (element.hasReferenceRange())
667      composeSubstanceAmountSubstanceAmountReferenceRangeComponent(t, "SubstanceAmount", "referenceRange", element.getReferenceRange(), -1);
668  }
669
670  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponent(Complex parent, String parentType, String name, SubstanceAmount.SubstanceAmountReferenceRangeComponent element, int index) {
671    if (element == null) 
672      return;
673    Complex t;
674    if (Utilities.noString(parentType))
675      t = parent;
676    else {
677      t = parent.predicate("fhir:"+parentType+'.'+name);
678    }
679    composeElement(t, "referenceRange", name, element, index);
680    if (element.hasLowLimit())
681      composeQuantity(t, "SubstanceAmount", "lowLimit", element.getLowLimit(), -1);
682    if (element.hasHighLimit())
683      composeQuantity(t, "SubstanceAmount", "highLimit", element.getHighLimit(), -1);
684  }
685
686  protected void composeCoding(Complex parent, String parentType, String name, Coding element, int index) {
687    if (element == null) 
688      return;
689    Complex t;
690    if (Utilities.noString(parentType))
691      t = parent;
692    else {
693      t = parent.predicate("fhir:"+parentType+'.'+name);
694    }
695    composeElement(t, "Coding", name, element, index);
696    decorateCoding(t, element);
697    if (element.hasSystemElement())
698      composeUri(t, "Coding", "system", element.getSystemElement(), -1);
699    if (element.hasVersionElement())
700      composeString(t, "Coding", "version", element.getVersionElement(), -1);
701    if (element.hasCodeElement())
702      composeCode(t, "Coding", "code", element.getCodeElement(), -1);
703    if (element.hasDisplayElement())
704      composeString(t, "Coding", "display", element.getDisplayElement(), -1);
705    if (element.hasUserSelectedElement())
706      composeBoolean(t, "Coding", "userSelected", element.getUserSelectedElement(), -1);
707  }
708
709  protected void composeSampledData(Complex parent, String parentType, String name, SampledData element, int index) {
710    if (element == null) 
711      return;
712    Complex t;
713    if (Utilities.noString(parentType))
714      t = parent;
715    else {
716      t = parent.predicate("fhir:"+parentType+'.'+name);
717    }
718    composeElement(t, "SampledData", name, element, index);
719    if (element.hasOrigin())
720      composeQuantity(t, "SampledData", "origin", element.getOrigin(), -1);
721    if (element.hasPeriodElement())
722      composeDecimal(t, "SampledData", "period", element.getPeriodElement(), -1);
723    if (element.hasFactorElement())
724      composeDecimal(t, "SampledData", "factor", element.getFactorElement(), -1);
725    if (element.hasLowerLimitElement())
726      composeDecimal(t, "SampledData", "lowerLimit", element.getLowerLimitElement(), -1);
727    if (element.hasUpperLimitElement())
728      composeDecimal(t, "SampledData", "upperLimit", element.getUpperLimitElement(), -1);
729    if (element.hasDimensionsElement())
730      composePositiveInt(t, "SampledData", "dimensions", element.getDimensionsElement(), -1);
731    if (element.hasDataElement())
732      composeString(t, "SampledData", "data", element.getDataElement(), -1);
733  }
734
735  protected void composePopulation(Complex parent, String parentType, String name, Population element, int index) {
736    if (element == null) 
737      return;
738    Complex t;
739    if (Utilities.noString(parentType))
740      t = parent;
741    else {
742      t = parent.predicate("fhir:"+parentType+'.'+name);
743    }
744    composeElement(t, "Population", name, element, index);
745    if (element.hasAge())
746      composeType(t, "Population", "age", element.getAge(), -1);
747    if (element.hasGender())
748      composeCodeableConcept(t, "Population", "gender", element.getGender(), -1);
749    if (element.hasRace())
750      composeCodeableConcept(t, "Population", "race", element.getRace(), -1);
751    if (element.hasPhysiologicalCondition())
752      composeCodeableConcept(t, "Population", "physiologicalCondition", element.getPhysiologicalCondition(), -1);
753  }
754
755  protected void composeRatio(Complex parent, String parentType, String name, Ratio element, int index) {
756    if (element == null) 
757      return;
758    Complex t;
759    if (Utilities.noString(parentType))
760      t = parent;
761    else {
762      t = parent.predicate("fhir:"+parentType+'.'+name);
763    }
764    composeElement(t, "Ratio", name, element, index);
765    if (element.hasNumerator())
766      composeQuantity(t, "Ratio", "numerator", element.getNumerator(), -1);
767    if (element.hasDenominator())
768      composeQuantity(t, "Ratio", "denominator", element.getDenominator(), -1);
769  }
770
771  protected void composeDistance(Complex parent, String parentType, String name, Distance element, int index) {
772    if (element == null) 
773      return;
774    Complex t;
775    if (Utilities.noString(parentType))
776      t = parent;
777    else {
778      t = parent.predicate("fhir:"+parentType+'.'+name);
779    }
780    composeElement(t, "Distance", name, element, index);
781  }
782
783  protected void composeAge(Complex parent, String parentType, String name, Age element, int index) {
784    if (element == null) 
785      return;
786    Complex t;
787    if (Utilities.noString(parentType))
788      t = parent;
789    else {
790      t = parent.predicate("fhir:"+parentType+'.'+name);
791    }
792    composeElement(t, "Age", name, element, index);
793  }
794
795  protected void composeReference(Complex parent, String parentType, String name, Reference element, int index) {
796    if (element == null) 
797      return;
798    Complex t;
799    if (Utilities.noString(parentType))
800      t = parent;
801    else {
802      t = parent.predicate("fhir:"+parentType+'.'+name);
803    }
804    composeElement(t, "Reference", name, element, index);
805    if (element.hasReferenceElement())
806      composeString(t, "Reference", "reference", element.getReferenceElement_(), -1);
807    if (element.hasTypeElement())
808      composeUri(t, "Reference", "type", element.getTypeElement(), -1);
809    if (element.hasIdentifier())
810      composeIdentifier(t, "Reference", "identifier", element.getIdentifier(), -1);
811    if (element.hasDisplayElement())
812      composeString(t, "Reference", "display", element.getDisplayElement(), -1);
813  }
814
815  protected void composeTriggerDefinition(Complex parent, String parentType, String name, TriggerDefinition element, int index) {
816    if (element == null) 
817      return;
818    Complex t;
819    if (Utilities.noString(parentType))
820      t = parent;
821    else {
822      t = parent.predicate("fhir:"+parentType+'.'+name);
823    }
824    composeElement(t, "TriggerDefinition", name, element, index);
825    if (element.hasTypeElement())
826      composeEnum(t, "TriggerDefinition", "type", element.getTypeElement(), -1);
827    if (element.hasNameElement())
828      composeString(t, "TriggerDefinition", "name", element.getNameElement(), -1);
829    if (element.hasTiming())
830      composeType(t, "TriggerDefinition", "timing", element.getTiming(), -1);
831    for (int i = 0; i < element.getData().size(); i++)
832      composeDataRequirement(t, "TriggerDefinition", "data", element.getData().get(i), i);
833    if (element.hasCondition())
834      composeExpression(t, "TriggerDefinition", "condition", element.getCondition(), -1);
835  }
836
837  protected void composeQuantity(Complex parent, String parentType, String name, Quantity element, int index) {
838    if (element == null) 
839      return;
840    Complex t;
841    if (Utilities.noString(parentType))
842      t = parent;
843    else {
844      t = parent.predicate("fhir:"+parentType+'.'+name);
845    }
846    composeElement(t, "Quantity", name, element, index);
847    if (element.hasValueElement())
848      composeDecimal(t, "Quantity", "value", element.getValueElement(), -1);
849    if (element.hasComparatorElement())
850      composeEnum(t, "Quantity", "comparator", element.getComparatorElement(), -1);
851    if (element.hasUnitElement())
852      composeString(t, "Quantity", "unit", element.getUnitElement(), -1);
853    if (element.hasSystemElement())
854      composeUri(t, "Quantity", "system", element.getSystemElement(), -1);
855    if (element.hasCodeElement())
856      composeCode(t, "Quantity", "code", element.getCodeElement(), -1);
857  }
858
859  protected void composePeriod(Complex parent, String parentType, String name, Period element, int index) {
860    if (element == null) 
861      return;
862    Complex t;
863    if (Utilities.noString(parentType))
864      t = parent;
865    else {
866      t = parent.predicate("fhir:"+parentType+'.'+name);
867    }
868    composeElement(t, "Period", name, element, index);
869    if (element.hasStartElement())
870      composeDateTime(t, "Period", "start", element.getStartElement(), -1);
871    if (element.hasEndElement())
872      composeDateTime(t, "Period", "end", element.getEndElement(), -1);
873  }
874
875  protected void composeDuration(Complex parent, String parentType, String name, Duration element, int index) {
876    if (element == null) 
877      return;
878    Complex t;
879    if (Utilities.noString(parentType))
880      t = parent;
881    else {
882      t = parent.predicate("fhir:"+parentType+'.'+name);
883    }
884    composeElement(t, "Duration", name, element, index);
885  }
886
887  protected void composeRange(Complex parent, String parentType, String name, Range element, int index) {
888    if (element == null) 
889      return;
890    Complex t;
891    if (Utilities.noString(parentType))
892      t = parent;
893    else {
894      t = parent.predicate("fhir:"+parentType+'.'+name);
895    }
896    composeElement(t, "Range", name, element, index);
897    if (element.hasLow())
898      composeQuantity(t, "Range", "low", element.getLow(), -1);
899    if (element.hasHigh())
900      composeQuantity(t, "Range", "high", element.getHigh(), -1);
901  }
902
903  protected void composeRelatedArtifact(Complex parent, String parentType, String name, RelatedArtifact element, int index) {
904    if (element == null) 
905      return;
906    Complex t;
907    if (Utilities.noString(parentType))
908      t = parent;
909    else {
910      t = parent.predicate("fhir:"+parentType+'.'+name);
911    }
912    composeElement(t, "RelatedArtifact", name, element, index);
913    if (element.hasTypeElement())
914      composeEnum(t, "RelatedArtifact", "type", element.getTypeElement(), -1);
915    if (element.hasLabelElement())
916      composeString(t, "RelatedArtifact", "label", element.getLabelElement(), -1);
917    if (element.hasDisplayElement())
918      composeString(t, "RelatedArtifact", "display", element.getDisplayElement(), -1);
919    if (element.hasCitationElement())
920      composeMarkdown(t, "RelatedArtifact", "citation", element.getCitationElement(), -1);
921    if (element.hasUrlElement())
922      composeUrl(t, "RelatedArtifact", "url", element.getUrlElement(), -1);
923    if (element.hasDocument())
924      composeAttachment(t, "RelatedArtifact", "document", element.getDocument(), -1);
925    if (element.hasResourceElement())
926      composeCanonical(t, "RelatedArtifact", "resource", element.getResourceElement(), -1);
927  }
928
929  protected void composeAnnotation(Complex parent, String parentType, String name, Annotation element, int index) {
930    if (element == null) 
931      return;
932    Complex t;
933    if (Utilities.noString(parentType))
934      t = parent;
935    else {
936      t = parent.predicate("fhir:"+parentType+'.'+name);
937    }
938    composeElement(t, "Annotation", name, element, index);
939    if (element.hasAuthor())
940      composeType(t, "Annotation", "author", element.getAuthor(), -1);
941    if (element.hasTimeElement())
942      composeDateTime(t, "Annotation", "time", element.getTimeElement(), -1);
943    if (element.hasTextElement())
944      composeMarkdown(t, "Annotation", "text", element.getTextElement(), -1);
945  }
946
947  protected void composeProductShelfLife(Complex parent, String parentType, String name, ProductShelfLife element, int index) {
948    if (element == null) 
949      return;
950    Complex t;
951    if (Utilities.noString(parentType))
952      t = parent;
953    else {
954      t = parent.predicate("fhir:"+parentType+'.'+name);
955    }
956    composeElement(t, "ProductShelfLife", name, element, index);
957    if (element.hasIdentifier())
958      composeIdentifier(t, "ProductShelfLife", "identifier", element.getIdentifier(), -1);
959    if (element.hasType())
960      composeCodeableConcept(t, "ProductShelfLife", "type", element.getType(), -1);
961    if (element.hasPeriod())
962      composeQuantity(t, "ProductShelfLife", "period", element.getPeriod(), -1);
963    for (int i = 0; i < element.getSpecialPrecautionsForStorage().size(); i++)
964      composeCodeableConcept(t, "ProductShelfLife", "specialPrecautionsForStorage", element.getSpecialPrecautionsForStorage().get(i), i);
965  }
966
967  protected void composeContactDetail(Complex parent, String parentType, String name, ContactDetail element, int index) {
968    if (element == null) 
969      return;
970    Complex t;
971    if (Utilities.noString(parentType))
972      t = parent;
973    else {
974      t = parent.predicate("fhir:"+parentType+'.'+name);
975    }
976    composeElement(t, "ContactDetail", name, element, index);
977    if (element.hasNameElement())
978      composeString(t, "ContactDetail", "name", element.getNameElement(), -1);
979    for (int i = 0; i < element.getTelecom().size(); i++)
980      composeContactPoint(t, "ContactDetail", "telecom", element.getTelecom().get(i), i);
981  }
982
983  protected void composeUsageContext(Complex parent, String parentType, String name, UsageContext element, int index) {
984    if (element == null) 
985      return;
986    Complex t;
987    if (Utilities.noString(parentType))
988      t = parent;
989    else {
990      t = parent.predicate("fhir:"+parentType+'.'+name);
991    }
992    composeElement(t, "UsageContext", name, element, index);
993    if (element.hasCode())
994      composeCoding(t, "UsageContext", "code", element.getCode(), -1);
995    if (element.hasValue())
996      composeType(t, "UsageContext", "value", element.getValue(), -1);
997  }
998
999  protected void composeExpression(Complex parent, String parentType, String name, Expression element, int index) {
1000    if (element == null) 
1001      return;
1002    Complex t;
1003    if (Utilities.noString(parentType))
1004      t = parent;
1005    else {
1006      t = parent.predicate("fhir:"+parentType+'.'+name);
1007    }
1008    composeElement(t, "Expression", name, element, index);
1009    if (element.hasDescriptionElement())
1010      composeString(t, "Expression", "description", element.getDescriptionElement(), -1);
1011    if (element.hasNameElement())
1012      composeId(t, "Expression", "name", element.getNameElement(), -1);
1013    if (element.hasLanguageElement())
1014      composeCode(t, "Expression", "language", element.getLanguageElement(), -1);
1015    if (element.hasExpressionElement())
1016      composeString(t, "Expression", "expression", element.getExpressionElement(), -1);
1017    if (element.hasReferenceElement())
1018      composeUri(t, "Expression", "reference", element.getReferenceElement(), -1);
1019  }
1020
1021  protected void composeSignature(Complex parent, String parentType, String name, Signature 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, "Signature", name, element, index);
1031    for (int i = 0; i < element.getType().size(); i++)
1032      composeCoding(t, "Signature", "type", element.getType().get(i), i);
1033    if (element.hasWhenElement())
1034      composeInstant(t, "Signature", "when", element.getWhenElement(), -1);
1035    if (element.hasWho())
1036      composeReference(t, "Signature", "who", element.getWho(), -1);
1037    if (element.hasOnBehalfOf())
1038      composeReference(t, "Signature", "onBehalfOf", element.getOnBehalfOf(), -1);
1039    if (element.hasTargetFormatElement())
1040      composeCode(t, "Signature", "targetFormat", element.getTargetFormatElement(), -1);
1041    if (element.hasSigFormatElement())
1042      composeCode(t, "Signature", "sigFormat", element.getSigFormatElement(), -1);
1043    if (element.hasDataElement())
1044      composeBase64Binary(t, "Signature", "data", element.getDataElement(), -1);
1045  }
1046
1047  protected void composeTiming(Complex parent, String parentType, String name, Timing 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, "Timing", name, element, index);
1057    for (int i = 0; i < element.getEvent().size(); i++)
1058      composeDateTime(t, "Timing", "event", element.getEvent().get(i), i);
1059    if (element.hasRepeat())
1060      composeTimingTimingRepeatComponent(t, "Timing", "repeat", element.getRepeat(), -1);
1061    if (element.hasCode())
1062      composeCodeableConcept(t, "Timing", "code", element.getCode(), -1);
1063  }
1064
1065  protected void composeTimingTimingRepeatComponent(Complex parent, String parentType, String name, Timing.TimingRepeatComponent element, int index) {
1066    if (element == null) 
1067      return;
1068    Complex t;
1069    if (Utilities.noString(parentType))
1070      t = parent;
1071    else {
1072      t = parent.predicate("fhir:"+parentType+'.'+name);
1073    }
1074    composeElement(t, "repeat", name, element, index);
1075    if (element.hasBounds())
1076      composeType(t, "Timing", "bounds", element.getBounds(), -1);
1077    if (element.hasCountElement())
1078      composePositiveInt(t, "Timing", "count", element.getCountElement(), -1);
1079    if (element.hasCountMaxElement())
1080      composePositiveInt(t, "Timing", "countMax", element.getCountMaxElement(), -1);
1081    if (element.hasDurationElement())
1082      composeDecimal(t, "Timing", "duration", element.getDurationElement(), -1);
1083    if (element.hasDurationMaxElement())
1084      composeDecimal(t, "Timing", "durationMax", element.getDurationMaxElement(), -1);
1085    if (element.hasDurationUnitElement())
1086      composeEnum(t, "Timing", "durationUnit", element.getDurationUnitElement(), -1);
1087    if (element.hasFrequencyElement())
1088      composePositiveInt(t, "Timing", "frequency", element.getFrequencyElement(), -1);
1089    if (element.hasFrequencyMaxElement())
1090      composePositiveInt(t, "Timing", "frequencyMax", element.getFrequencyMaxElement(), -1);
1091    if (element.hasPeriodElement())
1092      composeDecimal(t, "Timing", "period", element.getPeriodElement(), -1);
1093    if (element.hasPeriodMaxElement())
1094      composeDecimal(t, "Timing", "periodMax", element.getPeriodMaxElement(), -1);
1095    if (element.hasPeriodUnitElement())
1096      composeEnum(t, "Timing", "periodUnit", element.getPeriodUnitElement(), -1);
1097    for (int i = 0; i < element.getDayOfWeek().size(); i++)
1098      composeEnum(t, "Timing", "dayOfWeek", element.getDayOfWeek().get(i), i);
1099    for (int i = 0; i < element.getTimeOfDay().size(); i++)
1100      composeTime(t, "Timing", "timeOfDay", element.getTimeOfDay().get(i), i);
1101    for (int i = 0; i < element.getWhen().size(); i++)
1102      composeEnum(t, "Timing", "when", element.getWhen().get(i), i);
1103    if (element.hasOffsetElement())
1104      composeUnsignedInt(t, "Timing", "offset", element.getOffsetElement(), -1);
1105  }
1106
1107  protected void composeProdCharacteristic(Complex parent, String parentType, String name, ProdCharacteristic element, int index) {
1108    if (element == null) 
1109      return;
1110    Complex t;
1111    if (Utilities.noString(parentType))
1112      t = parent;
1113    else {
1114      t = parent.predicate("fhir:"+parentType+'.'+name);
1115    }
1116    composeElement(t, "ProdCharacteristic", name, element, index);
1117    if (element.hasHeight())
1118      composeQuantity(t, "ProdCharacteristic", "height", element.getHeight(), -1);
1119    if (element.hasWidth())
1120      composeQuantity(t, "ProdCharacteristic", "width", element.getWidth(), -1);
1121    if (element.hasDepth())
1122      composeQuantity(t, "ProdCharacteristic", "depth", element.getDepth(), -1);
1123    if (element.hasWeight())
1124      composeQuantity(t, "ProdCharacteristic", "weight", element.getWeight(), -1);
1125    if (element.hasNominalVolume())
1126      composeQuantity(t, "ProdCharacteristic", "nominalVolume", element.getNominalVolume(), -1);
1127    if (element.hasExternalDiameter())
1128      composeQuantity(t, "ProdCharacteristic", "externalDiameter", element.getExternalDiameter(), -1);
1129    if (element.hasShapeElement())
1130      composeString(t, "ProdCharacteristic", "shape", element.getShapeElement(), -1);
1131    for (int i = 0; i < element.getColor().size(); i++)
1132      composeString(t, "ProdCharacteristic", "color", element.getColor().get(i), i);
1133    for (int i = 0; i < element.getImprint().size(); i++)
1134      composeString(t, "ProdCharacteristic", "imprint", element.getImprint().get(i), i);
1135    for (int i = 0; i < element.getImage().size(); i++)
1136      composeAttachment(t, "ProdCharacteristic", "image", element.getImage().get(i), i);
1137    if (element.hasScoring())
1138      composeCodeableConcept(t, "ProdCharacteristic", "scoring", element.getScoring(), -1);
1139  }
1140
1141  protected void composeCodeableConcept(Complex parent, String parentType, String name, CodeableConcept element, int index) {
1142    if (element == null) 
1143      return;
1144    Complex t;
1145    if (Utilities.noString(parentType))
1146      t = parent;
1147    else {
1148      t = parent.predicate("fhir:"+parentType+'.'+name);
1149    }
1150    composeElement(t, "CodeableConcept", name, element, index);
1151    decorateCodeableConcept(t, element);
1152    for (int i = 0; i < element.getCoding().size(); i++)
1153      composeCoding(t, "CodeableConcept", "coding", element.getCoding().get(i), i);
1154    if (element.hasTextElement())
1155      composeString(t, "CodeableConcept", "text", element.getTextElement(), -1);
1156  }
1157
1158  protected void composeParameterDefinition(Complex parent, String parentType, String name, ParameterDefinition element, int index) {
1159    if (element == null) 
1160      return;
1161    Complex t;
1162    if (Utilities.noString(parentType))
1163      t = parent;
1164    else {
1165      t = parent.predicate("fhir:"+parentType+'.'+name);
1166    }
1167    composeElement(t, "ParameterDefinition", name, element, index);
1168    if (element.hasNameElement())
1169      composeCode(t, "ParameterDefinition", "name", element.getNameElement(), -1);
1170    if (element.hasUseElement())
1171      composeEnum(t, "ParameterDefinition", "use", element.getUseElement(), -1);
1172    if (element.hasMinElement())
1173      composeInteger(t, "ParameterDefinition", "min", element.getMinElement(), -1);
1174    if (element.hasMaxElement())
1175      composeString(t, "ParameterDefinition", "max", element.getMaxElement(), -1);
1176    if (element.hasDocumentationElement())
1177      composeString(t, "ParameterDefinition", "documentation", element.getDocumentationElement(), -1);
1178    if (element.hasTypeElement())
1179      composeCode(t, "ParameterDefinition", "type", element.getTypeElement(), -1);
1180    if (element.hasProfileElement())
1181      composeCanonical(t, "ParameterDefinition", "profile", element.getProfileElement(), -1);
1182  }
1183
1184  protected void composeElementDefinition(Complex parent, String parentType, String name, ElementDefinition element, int index) {
1185    if (element == null) 
1186      return;
1187    Complex t;
1188    if (Utilities.noString(parentType))
1189      t = parent;
1190    else {
1191      t = parent.predicate("fhir:"+parentType+'.'+name);
1192    }
1193    composeElement(t, "ElementDefinition", name, element, index);
1194    if (element.hasPathElement())
1195      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1196    for (int i = 0; i < element.getRepresentation().size(); i++)
1197      composeEnum(t, "ElementDefinition", "representation", element.getRepresentation().get(i), i);
1198    if (element.hasSliceNameElement())
1199      composeString(t, "ElementDefinition", "sliceName", element.getSliceNameElement(), -1);
1200    if (element.hasSliceIsConstrainingElement())
1201      composeBoolean(t, "ElementDefinition", "sliceIsConstraining", element.getSliceIsConstrainingElement(), -1);
1202    if (element.hasLabelElement())
1203      composeString(t, "ElementDefinition", "label", element.getLabelElement(), -1);
1204    for (int i = 0; i < element.getCode().size(); i++)
1205      composeCoding(t, "ElementDefinition", "code", element.getCode().get(i), i);
1206    if (element.hasSlicing())
1207      composeElementDefinitionElementDefinitionSlicingComponent(t, "ElementDefinition", "slicing", element.getSlicing(), -1);
1208    if (element.hasShortElement())
1209      composeString(t, "ElementDefinition", "short", element.getShortElement(), -1);
1210    if (element.hasDefinitionElement())
1211      composeMarkdown(t, "ElementDefinition", "definition", element.getDefinitionElement(), -1);
1212    if (element.hasCommentElement())
1213      composeMarkdown(t, "ElementDefinition", "comment", element.getCommentElement(), -1);
1214    if (element.hasRequirementsElement())
1215      composeMarkdown(t, "ElementDefinition", "requirements", element.getRequirementsElement(), -1);
1216    for (int i = 0; i < element.getAlias().size(); i++)
1217      composeString(t, "ElementDefinition", "alias", element.getAlias().get(i), i);
1218    if (element.hasMinElement())
1219      composeUnsignedInt(t, "ElementDefinition", "min", element.getMinElement(), -1);
1220    if (element.hasMaxElement())
1221      composeString(t, "ElementDefinition", "max", element.getMaxElement(), -1);
1222    if (element.hasBase())
1223      composeElementDefinitionElementDefinitionBaseComponent(t, "ElementDefinition", "base", element.getBase(), -1);
1224    if (element.hasContentReferenceElement())
1225      composeUri(t, "ElementDefinition", "contentReference", element.getContentReferenceElement(), -1);
1226    for (int i = 0; i < element.getType().size(); i++)
1227      composeElementDefinitionTypeRefComponent(t, "ElementDefinition", "type", element.getType().get(i), i);
1228    if (element.hasDefaultValue())
1229      composeType(t, "ElementDefinition", "defaultValue", element.getDefaultValue(), -1);
1230    if (element.hasMeaningWhenMissingElement())
1231      composeMarkdown(t, "ElementDefinition", "meaningWhenMissing", element.getMeaningWhenMissingElement(), -1);
1232    if (element.hasOrderMeaningElement())
1233      composeString(t, "ElementDefinition", "orderMeaning", element.getOrderMeaningElement(), -1);
1234    if (element.hasFixed())
1235      composeType(t, "ElementDefinition", "fixed", element.getFixed(), -1);
1236    if (element.hasPattern())
1237      composeType(t, "ElementDefinition", "pattern", element.getPattern(), -1);
1238    for (int i = 0; i < element.getExample().size(); i++)
1239      composeElementDefinitionElementDefinitionExampleComponent(t, "ElementDefinition", "example", element.getExample().get(i), i);
1240    if (element.hasMinValue())
1241      composeType(t, "ElementDefinition", "minValue", element.getMinValue(), -1);
1242    if (element.hasMaxValue())
1243      composeType(t, "ElementDefinition", "maxValue", element.getMaxValue(), -1);
1244    if (element.hasMaxLengthElement())
1245      composeInteger(t, "ElementDefinition", "maxLength", element.getMaxLengthElement(), -1);
1246    for (int i = 0; i < element.getCondition().size(); i++)
1247      composeId(t, "ElementDefinition", "condition", element.getCondition().get(i), i);
1248    for (int i = 0; i < element.getConstraint().size(); i++)
1249      composeElementDefinitionElementDefinitionConstraintComponent(t, "ElementDefinition", "constraint", element.getConstraint().get(i), i);
1250    if (element.hasMustSupportElement())
1251      composeBoolean(t, "ElementDefinition", "mustSupport", element.getMustSupportElement(), -1);
1252    if (element.hasIsModifierElement())
1253      composeBoolean(t, "ElementDefinition", "isModifier", element.getIsModifierElement(), -1);
1254    if (element.hasIsModifierReasonElement())
1255      composeString(t, "ElementDefinition", "isModifierReason", element.getIsModifierReasonElement(), -1);
1256    if (element.hasIsSummaryElement())
1257      composeBoolean(t, "ElementDefinition", "isSummary", element.getIsSummaryElement(), -1);
1258    if (element.hasBinding())
1259      composeElementDefinitionElementDefinitionBindingComponent(t, "ElementDefinition", "binding", element.getBinding(), -1);
1260    for (int i = 0; i < element.getMapping().size(); i++)
1261      composeElementDefinitionElementDefinitionMappingComponent(t, "ElementDefinition", "mapping", element.getMapping().get(i), i);
1262  }
1263
1264  protected void composeElementDefinitionElementDefinitionSlicingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionSlicingComponent element, int index) {
1265    if (element == null) 
1266      return;
1267    Complex t;
1268    if (Utilities.noString(parentType))
1269      t = parent;
1270    else {
1271      t = parent.predicate("fhir:"+parentType+'.'+name);
1272    }
1273    composeElement(t, "slicing", name, element, index);
1274    for (int i = 0; i < element.getDiscriminator().size(); i++)
1275      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(t, "ElementDefinition", "discriminator", element.getDiscriminator().get(i), i);
1276    if (element.hasDescriptionElement())
1277      composeString(t, "ElementDefinition", "description", element.getDescriptionElement(), -1);
1278    if (element.hasOrderedElement())
1279      composeBoolean(t, "ElementDefinition", "ordered", element.getOrderedElement(), -1);
1280    if (element.hasRulesElement())
1281      composeEnum(t, "ElementDefinition", "rules", element.getRulesElement(), -1);
1282  }
1283
1284  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element, int index) {
1285    if (element == null) 
1286      return;
1287    Complex t;
1288    if (Utilities.noString(parentType))
1289      t = parent;
1290    else {
1291      t = parent.predicate("fhir:"+parentType+'.'+name);
1292    }
1293    composeElement(t, "discriminator", name, element, index);
1294    if (element.hasTypeElement())
1295      composeEnum(t, "ElementDefinition", "type", element.getTypeElement(), -1);
1296    if (element.hasPathElement())
1297      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1298  }
1299
1300  protected void composeElementDefinitionElementDefinitionBaseComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionBaseComponent element, int index) {
1301    if (element == null) 
1302      return;
1303    Complex t;
1304    if (Utilities.noString(parentType))
1305      t = parent;
1306    else {
1307      t = parent.predicate("fhir:"+parentType+'.'+name);
1308    }
1309    composeElement(t, "base", name, element, index);
1310    if (element.hasPathElement())
1311      composeString(t, "ElementDefinition", "path", element.getPathElement(), -1);
1312    if (element.hasMinElement())
1313      composeUnsignedInt(t, "ElementDefinition", "min", element.getMinElement(), -1);
1314    if (element.hasMaxElement())
1315      composeString(t, "ElementDefinition", "max", element.getMaxElement(), -1);
1316  }
1317
1318  protected void composeElementDefinitionTypeRefComponent(Complex parent, String parentType, String name, ElementDefinition.TypeRefComponent element, int index) {
1319    if (element == null) 
1320      return;
1321    Complex t;
1322    if (Utilities.noString(parentType))
1323      t = parent;
1324    else {
1325      t = parent.predicate("fhir:"+parentType+'.'+name);
1326    }
1327    composeElement(t, "type", name, element, index);
1328    if (element.hasCodeElement())
1329      composeUri(t, "ElementDefinition", "code", element.getCodeElement(), -1);
1330    for (int i = 0; i < element.getProfile().size(); i++)
1331      composeCanonical(t, "ElementDefinition", "profile", element.getProfile().get(i), i);
1332    for (int i = 0; i < element.getTargetProfile().size(); i++)
1333      composeCanonical(t, "ElementDefinition", "targetProfile", element.getTargetProfile().get(i), i);
1334    for (int i = 0; i < element.getAggregation().size(); i++)
1335      composeEnum(t, "ElementDefinition", "aggregation", element.getAggregation().get(i), i);
1336    if (element.hasVersioningElement())
1337      composeEnum(t, "ElementDefinition", "versioning", element.getVersioningElement(), -1);
1338  }
1339
1340  protected void composeElementDefinitionElementDefinitionExampleComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionExampleComponent element, int index) {
1341    if (element == null) 
1342      return;
1343    Complex t;
1344    if (Utilities.noString(parentType))
1345      t = parent;
1346    else {
1347      t = parent.predicate("fhir:"+parentType+'.'+name);
1348    }
1349    composeElement(t, "example", name, element, index);
1350    if (element.hasLabelElement())
1351      composeString(t, "ElementDefinition", "label", element.getLabelElement(), -1);
1352    if (element.hasValue())
1353      composeType(t, "ElementDefinition", "value", element.getValue(), -1);
1354  }
1355
1356  protected void composeElementDefinitionElementDefinitionConstraintComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionConstraintComponent element, int index) {
1357    if (element == null) 
1358      return;
1359    Complex t;
1360    if (Utilities.noString(parentType))
1361      t = parent;
1362    else {
1363      t = parent.predicate("fhir:"+parentType+'.'+name);
1364    }
1365    composeElement(t, "constraint", name, element, index);
1366    if (element.hasKeyElement())
1367      composeId(t, "ElementDefinition", "key", element.getKeyElement(), -1);
1368    if (element.hasRequirementsElement())
1369      composeString(t, "ElementDefinition", "requirements", element.getRequirementsElement(), -1);
1370    if (element.hasSeverityElement())
1371      composeEnum(t, "ElementDefinition", "severity", element.getSeverityElement(), -1);
1372    if (element.hasHumanElement())
1373      composeString(t, "ElementDefinition", "human", element.getHumanElement(), -1);
1374    if (element.hasExpressionElement())
1375      composeString(t, "ElementDefinition", "expression", element.getExpressionElement(), -1);
1376    if (element.hasXpathElement())
1377      composeString(t, "ElementDefinition", "xpath", element.getXpathElement(), -1);
1378    if (element.hasSourceElement())
1379      composeCanonical(t, "ElementDefinition", "source", element.getSourceElement(), -1);
1380  }
1381
1382  protected void composeElementDefinitionElementDefinitionBindingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionBindingComponent element, int index) {
1383    if (element == null) 
1384      return;
1385    Complex t;
1386    if (Utilities.noString(parentType))
1387      t = parent;
1388    else {
1389      t = parent.predicate("fhir:"+parentType+'.'+name);
1390    }
1391    composeElement(t, "binding", name, element, index);
1392    if (element.hasStrengthElement())
1393      composeEnum(t, "ElementDefinition", "strength", element.getStrengthElement(), -1);
1394    if (element.hasDescriptionElement())
1395      composeString(t, "ElementDefinition", "description", element.getDescriptionElement(), -1);
1396    if (element.hasValueSetElement())
1397      composeCanonical(t, "ElementDefinition", "valueSet", element.getValueSetElement(), -1);
1398  }
1399
1400  protected void composeElementDefinitionElementDefinitionMappingComponent(Complex parent, String parentType, String name, ElementDefinition.ElementDefinitionMappingComponent element, int index) {
1401    if (element == null) 
1402      return;
1403    Complex t;
1404    if (Utilities.noString(parentType))
1405      t = parent;
1406    else {
1407      t = parent.predicate("fhir:"+parentType+'.'+name);
1408    }
1409    composeElement(t, "mapping", name, element, index);
1410    if (element.hasIdentityElement())
1411      composeId(t, "ElementDefinition", "identity", element.getIdentityElement(), -1);
1412    if (element.hasLanguageElement())
1413      composeCode(t, "ElementDefinition", "language", element.getLanguageElement(), -1);
1414    if (element.hasMapElement())
1415      composeString(t, "ElementDefinition", "map", element.getMapElement(), -1);
1416    if (element.hasCommentElement())
1417      composeString(t, "ElementDefinition", "comment", element.getCommentElement(), -1);
1418  }
1419
1420  protected void composeDomainResource(Complex t, String parentType, String name, DomainResource element, int index) {
1421    composeResource(t, parentType, name, element, index);
1422    if (element.hasText())
1423      composeNarrative(t, "DomainResource", "text", element.getText(), -1);
1424    for (int i = 0; i < element.getContained().size(); i++)
1425      composeResource(t, "DomainResource", "contained", element.getContained().get(i), i);
1426    for (int i = 0; i < element.getExtension().size(); i++)
1427      composeExtension(t, "DomainResource", "extension", element.getExtension().get(i), i);
1428    for (int i = 0; i < element.getModifierExtension().size(); i++)
1429      composeExtension(t, "DomainResource", "modifierExtension", element.getModifierExtension().get(i), i);
1430  }
1431
1432  protected void composeParameters(Complex parent, String parentType, String name, Parameters element, int index) {
1433    if (element == null) 
1434      return;
1435    Complex t;
1436    if (Utilities.noString(parentType))
1437      t = parent;
1438    else {
1439      t = parent.predicate("fhir:"+parentType+'.'+name);
1440    }
1441    composeResource(t, "Parameters", name, element, index);
1442    for (int i = 0; i < element.getParameter().size(); i++)
1443      composeParametersParametersParameterComponent(t, "Parameters", "parameter", element.getParameter().get(i), i);
1444  }
1445
1446  protected void composeParametersParametersParameterComponent(Complex parent, String parentType, String name, Parameters.ParametersParameterComponent element, int index) {
1447    if (element == null) 
1448      return;
1449    Complex t;
1450    if (Utilities.noString(parentType))
1451      t = parent;
1452    else {
1453      t = parent.predicate("fhir:"+parentType+'.'+name);
1454    }
1455    composeBackboneElement(t, "parameter", name, element, index);
1456    if (element.hasNameElement())
1457      composeString(t, "Parameters", "name", element.getNameElement(), -1);
1458    if (element.hasValue())
1459      composeType(t, "Parameters", "value", element.getValue(), -1);
1460    if (element.hasResource())
1461      composeResource(t, "Parameters", "resource", element.getResource(), -1);
1462    for (int i = 0; i < element.getPart().size(); i++)
1463      composeParametersParametersParameterComponent(t, "Parameters", "part", element.getPart().get(i), i);
1464  }
1465
1466  protected void composeResource(Complex t, String parentType, String name, Resource element, int index) {
1467    if (element.hasIdElement())
1468      composeId(t, "Resource", "id", element.getIdElement(), -1);
1469    if (element.hasMeta())
1470      composeMeta(t, "Resource", "meta", element.getMeta(), -1);
1471    if (element.hasImplicitRulesElement())
1472      composeUri(t, "Resource", "implicitRules", element.getImplicitRulesElement(), -1);
1473    if (element.hasLanguageElement())
1474      composeCode(t, "Resource", "language", element.getLanguageElement(), -1);
1475  }
1476
1477  protected void composeAccount(Complex parent, String parentType, String name, Account element, int index) {
1478    if (element == null) 
1479      return;
1480    Complex t;
1481    if (Utilities.noString(parentType))
1482      t = parent;
1483    else {
1484      t = parent.predicate("fhir:"+parentType+'.'+name);
1485    }
1486    composeDomainResource(t, "Account", name, element, index);
1487    for (int i = 0; i < element.getIdentifier().size(); i++)
1488      composeIdentifier(t, "Account", "identifier", element.getIdentifier().get(i), i);
1489    if (element.hasStatusElement())
1490      composeEnum(t, "Account", "status", element.getStatusElement(), -1);
1491    if (element.hasType())
1492      composeCodeableConcept(t, "Account", "type", element.getType(), -1);
1493    if (element.hasNameElement())
1494      composeString(t, "Account", "name", element.getNameElement(), -1);
1495    for (int i = 0; i < element.getSubject().size(); i++)
1496      composeReference(t, "Account", "subject", element.getSubject().get(i), i);
1497    if (element.hasServicePeriod())
1498      composePeriod(t, "Account", "servicePeriod", element.getServicePeriod(), -1);
1499    for (int i = 0; i < element.getCoverage().size(); i++)
1500      composeAccountCoverageComponent(t, "Account", "coverage", element.getCoverage().get(i), i);
1501    if (element.hasOwner())
1502      composeReference(t, "Account", "owner", element.getOwner(), -1);
1503    if (element.hasDescriptionElement())
1504      composeString(t, "Account", "description", element.getDescriptionElement(), -1);
1505    for (int i = 0; i < element.getGuarantor().size(); i++)
1506      composeAccountGuarantorComponent(t, "Account", "guarantor", element.getGuarantor().get(i), i);
1507    if (element.hasPartOf())
1508      composeReference(t, "Account", "partOf", element.getPartOf(), -1);
1509  }
1510
1511  protected void composeAccountCoverageComponent(Complex parent, String parentType, String name, Account.CoverageComponent element, int index) {
1512    if (element == null) 
1513      return;
1514    Complex t;
1515    if (Utilities.noString(parentType))
1516      t = parent;
1517    else {
1518      t = parent.predicate("fhir:"+parentType+'.'+name);
1519    }
1520    composeBackboneElement(t, "coverage", name, element, index);
1521    if (element.hasCoverage())
1522      composeReference(t, "Account", "coverage", element.getCoverage(), -1);
1523    if (element.hasPriorityElement())
1524      composePositiveInt(t, "Account", "priority", element.getPriorityElement(), -1);
1525  }
1526
1527  protected void composeAccountGuarantorComponent(Complex parent, String parentType, String name, Account.GuarantorComponent element, int index) {
1528    if (element == null) 
1529      return;
1530    Complex t;
1531    if (Utilities.noString(parentType))
1532      t = parent;
1533    else {
1534      t = parent.predicate("fhir:"+parentType+'.'+name);
1535    }
1536    composeBackboneElement(t, "guarantor", name, element, index);
1537    if (element.hasParty())
1538      composeReference(t, "Account", "party", element.getParty(), -1);
1539    if (element.hasOnHoldElement())
1540      composeBoolean(t, "Account", "onHold", element.getOnHoldElement(), -1);
1541    if (element.hasPeriod())
1542      composePeriod(t, "Account", "period", element.getPeriod(), -1);
1543  }
1544
1545  protected void composeActivityDefinition(Complex parent, String parentType, String name, ActivityDefinition element, int index) {
1546    if (element == null) 
1547      return;
1548    Complex t;
1549    if (Utilities.noString(parentType))
1550      t = parent;
1551    else {
1552      t = parent.predicate("fhir:"+parentType+'.'+name);
1553    }
1554    composeDomainResource(t, "ActivityDefinition", name, element, index);
1555    if (element.hasUrlElement())
1556      composeUri(t, "ActivityDefinition", "url", element.getUrlElement(), -1);
1557    for (int i = 0; i < element.getIdentifier().size(); i++)
1558      composeIdentifier(t, "ActivityDefinition", "identifier", element.getIdentifier().get(i), i);
1559    if (element.hasVersionElement())
1560      composeString(t, "ActivityDefinition", "version", element.getVersionElement(), -1);
1561    if (element.hasNameElement())
1562      composeString(t, "ActivityDefinition", "name", element.getNameElement(), -1);
1563    if (element.hasTitleElement())
1564      composeString(t, "ActivityDefinition", "title", element.getTitleElement(), -1);
1565    if (element.hasSubtitleElement())
1566      composeString(t, "ActivityDefinition", "subtitle", element.getSubtitleElement(), -1);
1567    if (element.hasStatusElement())
1568      composeEnum(t, "ActivityDefinition", "status", element.getStatusElement(), -1);
1569    if (element.hasExperimentalElement())
1570      composeBoolean(t, "ActivityDefinition", "experimental", element.getExperimentalElement(), -1);
1571    if (element.hasSubject())
1572      composeType(t, "ActivityDefinition", "subject", element.getSubject(), -1);
1573    if (element.hasDateElement())
1574      composeDateTime(t, "ActivityDefinition", "date", element.getDateElement(), -1);
1575    if (element.hasPublisherElement())
1576      composeString(t, "ActivityDefinition", "publisher", element.getPublisherElement(), -1);
1577    for (int i = 0; i < element.getContact().size(); i++)
1578      composeContactDetail(t, "ActivityDefinition", "contact", element.getContact().get(i), i);
1579    if (element.hasDescriptionElement())
1580      composeMarkdown(t, "ActivityDefinition", "description", element.getDescriptionElement(), -1);
1581    for (int i = 0; i < element.getUseContext().size(); i++)
1582      composeUsageContext(t, "ActivityDefinition", "useContext", element.getUseContext().get(i), i);
1583    for (int i = 0; i < element.getJurisdiction().size(); i++)
1584      composeCodeableConcept(t, "ActivityDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
1585    if (element.hasPurposeElement())
1586      composeMarkdown(t, "ActivityDefinition", "purpose", element.getPurposeElement(), -1);
1587    if (element.hasUsageElement())
1588      composeString(t, "ActivityDefinition", "usage", element.getUsageElement(), -1);
1589    if (element.hasCopyrightElement())
1590      composeMarkdown(t, "ActivityDefinition", "copyright", element.getCopyrightElement(), -1);
1591    if (element.hasApprovalDateElement())
1592      composeDate(t, "ActivityDefinition", "approvalDate", element.getApprovalDateElement(), -1);
1593    if (element.hasLastReviewDateElement())
1594      composeDate(t, "ActivityDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
1595    if (element.hasEffectivePeriod())
1596      composePeriod(t, "ActivityDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
1597    for (int i = 0; i < element.getTopic().size(); i++)
1598      composeCodeableConcept(t, "ActivityDefinition", "topic", element.getTopic().get(i), i);
1599    for (int i = 0; i < element.getAuthor().size(); i++)
1600      composeContactDetail(t, "ActivityDefinition", "author", element.getAuthor().get(i), i);
1601    for (int i = 0; i < element.getEditor().size(); i++)
1602      composeContactDetail(t, "ActivityDefinition", "editor", element.getEditor().get(i), i);
1603    for (int i = 0; i < element.getReviewer().size(); i++)
1604      composeContactDetail(t, "ActivityDefinition", "reviewer", element.getReviewer().get(i), i);
1605    for (int i = 0; i < element.getEndorser().size(); i++)
1606      composeContactDetail(t, "ActivityDefinition", "endorser", element.getEndorser().get(i), i);
1607    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
1608      composeRelatedArtifact(t, "ActivityDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
1609    for (int i = 0; i < element.getLibrary().size(); i++)
1610      composeCanonical(t, "ActivityDefinition", "library", element.getLibrary().get(i), i);
1611    if (element.hasKindElement())
1612      composeEnum(t, "ActivityDefinition", "kind", element.getKindElement(), -1);
1613    if (element.hasProfileElement())
1614      composeCanonical(t, "ActivityDefinition", "profile", element.getProfileElement(), -1);
1615    if (element.hasCode())
1616      composeCodeableConcept(t, "ActivityDefinition", "code", element.getCode(), -1);
1617    if (element.hasIntentElement())
1618      composeEnum(t, "ActivityDefinition", "intent", element.getIntentElement(), -1);
1619    if (element.hasPriorityElement())
1620      composeEnum(t, "ActivityDefinition", "priority", element.getPriorityElement(), -1);
1621    if (element.hasDoNotPerformElement())
1622      composeBoolean(t, "ActivityDefinition", "doNotPerform", element.getDoNotPerformElement(), -1);
1623    if (element.hasTiming())
1624      composeType(t, "ActivityDefinition", "timing", element.getTiming(), -1);
1625    if (element.hasLocation())
1626      composeReference(t, "ActivityDefinition", "location", element.getLocation(), -1);
1627    for (int i = 0; i < element.getParticipant().size(); i++)
1628      composeActivityDefinitionActivityDefinitionParticipantComponent(t, "ActivityDefinition", "participant", element.getParticipant().get(i), i);
1629    if (element.hasProduct())
1630      composeType(t, "ActivityDefinition", "product", element.getProduct(), -1);
1631    if (element.hasQuantity())
1632      composeQuantity(t, "ActivityDefinition", "quantity", element.getQuantity(), -1);
1633    for (int i = 0; i < element.getDosage().size(); i++)
1634      composeDosage(t, "ActivityDefinition", "dosage", element.getDosage().get(i), i);
1635    for (int i = 0; i < element.getBodySite().size(); i++)
1636      composeCodeableConcept(t, "ActivityDefinition", "bodySite", element.getBodySite().get(i), i);
1637    for (int i = 0; i < element.getSpecimenRequirement().size(); i++)
1638      composeReference(t, "ActivityDefinition", "specimenRequirement", element.getSpecimenRequirement().get(i), i);
1639    for (int i = 0; i < element.getObservationRequirement().size(); i++)
1640      composeReference(t, "ActivityDefinition", "observationRequirement", element.getObservationRequirement().get(i), i);
1641    for (int i = 0; i < element.getObservationResultRequirement().size(); i++)
1642      composeReference(t, "ActivityDefinition", "observationResultRequirement", element.getObservationResultRequirement().get(i), i);
1643    if (element.hasTransformElement())
1644      composeCanonical(t, "ActivityDefinition", "transform", element.getTransformElement(), -1);
1645    for (int i = 0; i < element.getDynamicValue().size(); i++)
1646      composeActivityDefinitionActivityDefinitionDynamicValueComponent(t, "ActivityDefinition", "dynamicValue", element.getDynamicValue().get(i), i);
1647  }
1648
1649  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(Complex parent, String parentType, String name, ActivityDefinition.ActivityDefinitionParticipantComponent element, int index) {
1650    if (element == null) 
1651      return;
1652    Complex t;
1653    if (Utilities.noString(parentType))
1654      t = parent;
1655    else {
1656      t = parent.predicate("fhir:"+parentType+'.'+name);
1657    }
1658    composeBackboneElement(t, "participant", name, element, index);
1659    if (element.hasTypeElement())
1660      composeEnum(t, "ActivityDefinition", "type", element.getTypeElement(), -1);
1661    if (element.hasRole())
1662      composeCodeableConcept(t, "ActivityDefinition", "role", element.getRole(), -1);
1663  }
1664
1665  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(Complex parent, String parentType, String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element, int index) {
1666    if (element == null) 
1667      return;
1668    Complex t;
1669    if (Utilities.noString(parentType))
1670      t = parent;
1671    else {
1672      t = parent.predicate("fhir:"+parentType+'.'+name);
1673    }
1674    composeBackboneElement(t, "dynamicValue", name, element, index);
1675    if (element.hasPathElement())
1676      composeString(t, "ActivityDefinition", "path", element.getPathElement(), -1);
1677    if (element.hasExpression())
1678      composeExpression(t, "ActivityDefinition", "expression", element.getExpression(), -1);
1679  }
1680
1681  protected void composeAdverseEvent(Complex parent, String parentType, String name, AdverseEvent element, int index) {
1682    if (element == null) 
1683      return;
1684    Complex t;
1685    if (Utilities.noString(parentType))
1686      t = parent;
1687    else {
1688      t = parent.predicate("fhir:"+parentType+'.'+name);
1689    }
1690    composeDomainResource(t, "AdverseEvent", name, element, index);
1691    if (element.hasIdentifier())
1692      composeIdentifier(t, "AdverseEvent", "identifier", element.getIdentifier(), -1);
1693    if (element.hasActualityElement())
1694      composeEnum(t, "AdverseEvent", "actuality", element.getActualityElement(), -1);
1695    for (int i = 0; i < element.getCategory().size(); i++)
1696      composeCodeableConcept(t, "AdverseEvent", "category", element.getCategory().get(i), i);
1697    if (element.hasEvent())
1698      composeCodeableConcept(t, "AdverseEvent", "event", element.getEvent(), -1);
1699    if (element.hasSubject())
1700      composeReference(t, "AdverseEvent", "subject", element.getSubject(), -1);
1701    if (element.hasEncounter())
1702      composeReference(t, "AdverseEvent", "encounter", element.getEncounter(), -1);
1703    if (element.hasDateElement())
1704      composeDateTime(t, "AdverseEvent", "date", element.getDateElement(), -1);
1705    if (element.hasDetectedElement())
1706      composeDateTime(t, "AdverseEvent", "detected", element.getDetectedElement(), -1);
1707    if (element.hasRecordedDateElement())
1708      composeDateTime(t, "AdverseEvent", "recordedDate", element.getRecordedDateElement(), -1);
1709    for (int i = 0; i < element.getResultingCondition().size(); i++)
1710      composeReference(t, "AdverseEvent", "resultingCondition", element.getResultingCondition().get(i), i);
1711    if (element.hasLocation())
1712      composeReference(t, "AdverseEvent", "location", element.getLocation(), -1);
1713    if (element.hasSeriousness())
1714      composeCodeableConcept(t, "AdverseEvent", "seriousness", element.getSeriousness(), -1);
1715    if (element.hasSeverity())
1716      composeCodeableConcept(t, "AdverseEvent", "severity", element.getSeverity(), -1);
1717    if (element.hasOutcome())
1718      composeCodeableConcept(t, "AdverseEvent", "outcome", element.getOutcome(), -1);
1719    if (element.hasRecorder())
1720      composeReference(t, "AdverseEvent", "recorder", element.getRecorder(), -1);
1721    for (int i = 0; i < element.getContributor().size(); i++)
1722      composeReference(t, "AdverseEvent", "contributor", element.getContributor().get(i), i);
1723    for (int i = 0; i < element.getSuspectEntity().size(); i++)
1724      composeAdverseEventAdverseEventSuspectEntityComponent(t, "AdverseEvent", "suspectEntity", element.getSuspectEntity().get(i), i);
1725    for (int i = 0; i < element.getSubjectMedicalHistory().size(); i++)
1726      composeReference(t, "AdverseEvent", "subjectMedicalHistory", element.getSubjectMedicalHistory().get(i), i);
1727    for (int i = 0; i < element.getReferenceDocument().size(); i++)
1728      composeReference(t, "AdverseEvent", "referenceDocument", element.getReferenceDocument().get(i), i);
1729    for (int i = 0; i < element.getStudy().size(); i++)
1730      composeReference(t, "AdverseEvent", "study", element.getStudy().get(i), i);
1731  }
1732
1733  protected void composeAdverseEventAdverseEventSuspectEntityComponent(Complex parent, String parentType, String name, AdverseEvent.AdverseEventSuspectEntityComponent element, int index) {
1734    if (element == null) 
1735      return;
1736    Complex t;
1737    if (Utilities.noString(parentType))
1738      t = parent;
1739    else {
1740      t = parent.predicate("fhir:"+parentType+'.'+name);
1741    }
1742    composeBackboneElement(t, "suspectEntity", name, element, index);
1743    if (element.hasInstance())
1744      composeReference(t, "AdverseEvent", "instance", element.getInstance(), -1);
1745    for (int i = 0; i < element.getCausality().size(); i++)
1746      composeAdverseEventAdverseEventSuspectEntityCausalityComponent(t, "AdverseEvent", "causality", element.getCausality().get(i), i);
1747  }
1748
1749  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponent(Complex parent, String parentType, String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element, int index) {
1750    if (element == null) 
1751      return;
1752    Complex t;
1753    if (Utilities.noString(parentType))
1754      t = parent;
1755    else {
1756      t = parent.predicate("fhir:"+parentType+'.'+name);
1757    }
1758    composeBackboneElement(t, "causality", name, element, index);
1759    if (element.hasAssessment())
1760      composeCodeableConcept(t, "AdverseEvent", "assessment", element.getAssessment(), -1);
1761    if (element.hasProductRelatednessElement())
1762      composeString(t, "AdverseEvent", "productRelatedness", element.getProductRelatednessElement(), -1);
1763    if (element.hasAuthor())
1764      composeReference(t, "AdverseEvent", "author", element.getAuthor(), -1);
1765    if (element.hasMethod())
1766      composeCodeableConcept(t, "AdverseEvent", "method", element.getMethod(), -1);
1767  }
1768
1769  protected void composeAllergyIntolerance(Complex parent, String parentType, String name, AllergyIntolerance element, int index) {
1770    if (element == null) 
1771      return;
1772    Complex t;
1773    if (Utilities.noString(parentType))
1774      t = parent;
1775    else {
1776      t = parent.predicate("fhir:"+parentType+'.'+name);
1777    }
1778    composeDomainResource(t, "AllergyIntolerance", name, element, index);
1779    for (int i = 0; i < element.getIdentifier().size(); i++)
1780      composeIdentifier(t, "AllergyIntolerance", "identifier", element.getIdentifier().get(i), i);
1781    if (element.hasClinicalStatus())
1782      composeCodeableConcept(t, "AllergyIntolerance", "clinicalStatus", element.getClinicalStatus(), -1);
1783    if (element.hasVerificationStatus())
1784      composeCodeableConcept(t, "AllergyIntolerance", "verificationStatus", element.getVerificationStatus(), -1);
1785    if (element.hasTypeElement())
1786      composeEnum(t, "AllergyIntolerance", "type", element.getTypeElement(), -1);
1787    for (int i = 0; i < element.getCategory().size(); i++)
1788      composeEnum(t, "AllergyIntolerance", "category", element.getCategory().get(i), i);
1789    if (element.hasCriticalityElement())
1790      composeEnum(t, "AllergyIntolerance", "criticality", element.getCriticalityElement(), -1);
1791    if (element.hasCode())
1792      composeCodeableConcept(t, "AllergyIntolerance", "code", element.getCode(), -1);
1793    if (element.hasPatient())
1794      composeReference(t, "AllergyIntolerance", "patient", element.getPatient(), -1);
1795    if (element.hasEncounter())
1796      composeReference(t, "AllergyIntolerance", "encounter", element.getEncounter(), -1);
1797    if (element.hasOnset())
1798      composeType(t, "AllergyIntolerance", "onset", element.getOnset(), -1);
1799    if (element.hasRecordedDateElement())
1800      composeDateTime(t, "AllergyIntolerance", "recordedDate", element.getRecordedDateElement(), -1);
1801    if (element.hasRecorder())
1802      composeReference(t, "AllergyIntolerance", "recorder", element.getRecorder(), -1);
1803    if (element.hasAsserter())
1804      composeReference(t, "AllergyIntolerance", "asserter", element.getAsserter(), -1);
1805    if (element.hasLastOccurrenceElement())
1806      composeDateTime(t, "AllergyIntolerance", "lastOccurrence", element.getLastOccurrenceElement(), -1);
1807    for (int i = 0; i < element.getNote().size(); i++)
1808      composeAnnotation(t, "AllergyIntolerance", "note", element.getNote().get(i), i);
1809    for (int i = 0; i < element.getReaction().size(); i++)
1810      composeAllergyIntoleranceAllergyIntoleranceReactionComponent(t, "AllergyIntolerance", "reaction", element.getReaction().get(i), i);
1811  }
1812
1813  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(Complex parent, String parentType, String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element, int index) {
1814    if (element == null) 
1815      return;
1816    Complex t;
1817    if (Utilities.noString(parentType))
1818      t = parent;
1819    else {
1820      t = parent.predicate("fhir:"+parentType+'.'+name);
1821    }
1822    composeBackboneElement(t, "reaction", name, element, index);
1823    if (element.hasSubstance())
1824      composeCodeableConcept(t, "AllergyIntolerance", "substance", element.getSubstance(), -1);
1825    for (int i = 0; i < element.getManifestation().size(); i++)
1826      composeCodeableConcept(t, "AllergyIntolerance", "manifestation", element.getManifestation().get(i), i);
1827    if (element.hasDescriptionElement())
1828      composeString(t, "AllergyIntolerance", "description", element.getDescriptionElement(), -1);
1829    if (element.hasOnsetElement())
1830      composeDateTime(t, "AllergyIntolerance", "onset", element.getOnsetElement(), -1);
1831    if (element.hasSeverityElement())
1832      composeEnum(t, "AllergyIntolerance", "severity", element.getSeverityElement(), -1);
1833    if (element.hasExposureRoute())
1834      composeCodeableConcept(t, "AllergyIntolerance", "exposureRoute", element.getExposureRoute(), -1);
1835    for (int i = 0; i < element.getNote().size(); i++)
1836      composeAnnotation(t, "AllergyIntolerance", "note", element.getNote().get(i), i);
1837  }
1838
1839  protected void composeAppointment(Complex parent, String parentType, String name, Appointment element, int index) {
1840    if (element == null) 
1841      return;
1842    Complex t;
1843    if (Utilities.noString(parentType))
1844      t = parent;
1845    else {
1846      t = parent.predicate("fhir:"+parentType+'.'+name);
1847    }
1848    composeDomainResource(t, "Appointment", name, element, index);
1849    for (int i = 0; i < element.getIdentifier().size(); i++)
1850      composeIdentifier(t, "Appointment", "identifier", element.getIdentifier().get(i), i);
1851    if (element.hasStatusElement())
1852      composeEnum(t, "Appointment", "status", element.getStatusElement(), -1);
1853    if (element.hasCancelationReason())
1854      composeCodeableConcept(t, "Appointment", "cancelationReason", element.getCancelationReason(), -1);
1855    for (int i = 0; i < element.getServiceCategory().size(); i++)
1856      composeCodeableConcept(t, "Appointment", "serviceCategory", element.getServiceCategory().get(i), i);
1857    for (int i = 0; i < element.getServiceType().size(); i++)
1858      composeCodeableConcept(t, "Appointment", "serviceType", element.getServiceType().get(i), i);
1859    for (int i = 0; i < element.getSpecialty().size(); i++)
1860      composeCodeableConcept(t, "Appointment", "specialty", element.getSpecialty().get(i), i);
1861    if (element.hasAppointmentType())
1862      composeCodeableConcept(t, "Appointment", "appointmentType", element.getAppointmentType(), -1);
1863    for (int i = 0; i < element.getReasonCode().size(); i++)
1864      composeCodeableConcept(t, "Appointment", "reasonCode", element.getReasonCode().get(i), i);
1865    for (int i = 0; i < element.getReasonReference().size(); i++)
1866      composeReference(t, "Appointment", "reasonReference", element.getReasonReference().get(i), i);
1867    if (element.hasPriorityElement())
1868      composeUnsignedInt(t, "Appointment", "priority", element.getPriorityElement(), -1);
1869    if (element.hasDescriptionElement())
1870      composeString(t, "Appointment", "description", element.getDescriptionElement(), -1);
1871    for (int i = 0; i < element.getSupportingInformation().size(); i++)
1872      composeReference(t, "Appointment", "supportingInformation", element.getSupportingInformation().get(i), i);
1873    if (element.hasStartElement())
1874      composeInstant(t, "Appointment", "start", element.getStartElement(), -1);
1875    if (element.hasEndElement())
1876      composeInstant(t, "Appointment", "end", element.getEndElement(), -1);
1877    if (element.hasMinutesDurationElement())
1878      composePositiveInt(t, "Appointment", "minutesDuration", element.getMinutesDurationElement(), -1);
1879    for (int i = 0; i < element.getSlot().size(); i++)
1880      composeReference(t, "Appointment", "slot", element.getSlot().get(i), i);
1881    if (element.hasCreatedElement())
1882      composeDateTime(t, "Appointment", "created", element.getCreatedElement(), -1);
1883    if (element.hasCommentElement())
1884      composeString(t, "Appointment", "comment", element.getCommentElement(), -1);
1885    if (element.hasPatientInstructionElement())
1886      composeString(t, "Appointment", "patientInstruction", element.getPatientInstructionElement(), -1);
1887    for (int i = 0; i < element.getBasedOn().size(); i++)
1888      composeReference(t, "Appointment", "basedOn", element.getBasedOn().get(i), i);
1889    for (int i = 0; i < element.getParticipant().size(); i++)
1890      composeAppointmentAppointmentParticipantComponent(t, "Appointment", "participant", element.getParticipant().get(i), i);
1891    for (int i = 0; i < element.getRequestedPeriod().size(); i++)
1892      composePeriod(t, "Appointment", "requestedPeriod", element.getRequestedPeriod().get(i), i);
1893  }
1894
1895  protected void composeAppointmentAppointmentParticipantComponent(Complex parent, String parentType, String name, Appointment.AppointmentParticipantComponent element, int index) {
1896    if (element == null) 
1897      return;
1898    Complex t;
1899    if (Utilities.noString(parentType))
1900      t = parent;
1901    else {
1902      t = parent.predicate("fhir:"+parentType+'.'+name);
1903    }
1904    composeBackboneElement(t, "participant", name, element, index);
1905    for (int i = 0; i < element.getType().size(); i++)
1906      composeCodeableConcept(t, "Appointment", "type", element.getType().get(i), i);
1907    if (element.hasActor())
1908      composeReference(t, "Appointment", "actor", element.getActor(), -1);
1909    if (element.hasRequiredElement())
1910      composeEnum(t, "Appointment", "required", element.getRequiredElement(), -1);
1911    if (element.hasStatusElement())
1912      composeEnum(t, "Appointment", "status", element.getStatusElement(), -1);
1913    if (element.hasPeriod())
1914      composePeriod(t, "Appointment", "period", element.getPeriod(), -1);
1915  }
1916
1917  protected void composeAppointmentResponse(Complex parent, String parentType, String name, AppointmentResponse element, int index) {
1918    if (element == null) 
1919      return;
1920    Complex t;
1921    if (Utilities.noString(parentType))
1922      t = parent;
1923    else {
1924      t = parent.predicate("fhir:"+parentType+'.'+name);
1925    }
1926    composeDomainResource(t, "AppointmentResponse", name, element, index);
1927    for (int i = 0; i < element.getIdentifier().size(); i++)
1928      composeIdentifier(t, "AppointmentResponse", "identifier", element.getIdentifier().get(i), i);
1929    if (element.hasAppointment())
1930      composeReference(t, "AppointmentResponse", "appointment", element.getAppointment(), -1);
1931    if (element.hasStartElement())
1932      composeInstant(t, "AppointmentResponse", "start", element.getStartElement(), -1);
1933    if (element.hasEndElement())
1934      composeInstant(t, "AppointmentResponse", "end", element.getEndElement(), -1);
1935    for (int i = 0; i < element.getParticipantType().size(); i++)
1936      composeCodeableConcept(t, "AppointmentResponse", "participantType", element.getParticipantType().get(i), i);
1937    if (element.hasActor())
1938      composeReference(t, "AppointmentResponse", "actor", element.getActor(), -1);
1939    if (element.hasParticipantStatusElement())
1940      composeEnum(t, "AppointmentResponse", "participantStatus", element.getParticipantStatusElement(), -1);
1941    if (element.hasCommentElement())
1942      composeString(t, "AppointmentResponse", "comment", element.getCommentElement(), -1);
1943  }
1944
1945  protected void composeAuditEvent(Complex parent, String parentType, String name, AuditEvent element, int index) {
1946    if (element == null) 
1947      return;
1948    Complex t;
1949    if (Utilities.noString(parentType))
1950      t = parent;
1951    else {
1952      t = parent.predicate("fhir:"+parentType+'.'+name);
1953    }
1954    composeDomainResource(t, "AuditEvent", name, element, index);
1955    if (element.hasType())
1956      composeCoding(t, "AuditEvent", "type", element.getType(), -1);
1957    for (int i = 0; i < element.getSubtype().size(); i++)
1958      composeCoding(t, "AuditEvent", "subtype", element.getSubtype().get(i), i);
1959    if (element.hasActionElement())
1960      composeEnum(t, "AuditEvent", "action", element.getActionElement(), -1);
1961    if (element.hasPeriod())
1962      composePeriod(t, "AuditEvent", "period", element.getPeriod(), -1);
1963    if (element.hasRecordedElement())
1964      composeInstant(t, "AuditEvent", "recorded", element.getRecordedElement(), -1);
1965    if (element.hasOutcomeElement())
1966      composeEnum(t, "AuditEvent", "outcome", element.getOutcomeElement(), -1);
1967    if (element.hasOutcomeDescElement())
1968      composeString(t, "AuditEvent", "outcomeDesc", element.getOutcomeDescElement(), -1);
1969    for (int i = 0; i < element.getPurposeOfEvent().size(); i++)
1970      composeCodeableConcept(t, "AuditEvent", "purposeOfEvent", element.getPurposeOfEvent().get(i), i);
1971    for (int i = 0; i < element.getAgent().size(); i++)
1972      composeAuditEventAuditEventAgentComponent(t, "AuditEvent", "agent", element.getAgent().get(i), i);
1973    if (element.hasSource())
1974      composeAuditEventAuditEventSourceComponent(t, "AuditEvent", "source", element.getSource(), -1);
1975    for (int i = 0; i < element.getEntity().size(); i++)
1976      composeAuditEventAuditEventEntityComponent(t, "AuditEvent", "entity", element.getEntity().get(i), i);
1977  }
1978
1979  protected void composeAuditEventAuditEventAgentComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventAgentComponent element, int index) {
1980    if (element == null) 
1981      return;
1982    Complex t;
1983    if (Utilities.noString(parentType))
1984      t = parent;
1985    else {
1986      t = parent.predicate("fhir:"+parentType+'.'+name);
1987    }
1988    composeBackboneElement(t, "agent", name, element, index);
1989    if (element.hasType())
1990      composeCodeableConcept(t, "AuditEvent", "type", element.getType(), -1);
1991    for (int i = 0; i < element.getRole().size(); i++)
1992      composeCodeableConcept(t, "AuditEvent", "role", element.getRole().get(i), i);
1993    if (element.hasWho())
1994      composeReference(t, "AuditEvent", "who", element.getWho(), -1);
1995    if (element.hasAltIdElement())
1996      composeString(t, "AuditEvent", "altId", element.getAltIdElement(), -1);
1997    if (element.hasNameElement())
1998      composeString(t, "AuditEvent", "name", element.getNameElement(), -1);
1999    if (element.hasRequestorElement())
2000      composeBoolean(t, "AuditEvent", "requestor", element.getRequestorElement(), -1);
2001    if (element.hasLocation())
2002      composeReference(t, "AuditEvent", "location", element.getLocation(), -1);
2003    for (int i = 0; i < element.getPolicy().size(); i++)
2004      composeUri(t, "AuditEvent", "policy", element.getPolicy().get(i), i);
2005    if (element.hasMedia())
2006      composeCoding(t, "AuditEvent", "media", element.getMedia(), -1);
2007    if (element.hasNetwork())
2008      composeAuditEventAuditEventAgentNetworkComponent(t, "AuditEvent", "network", element.getNetwork(), -1);
2009    for (int i = 0; i < element.getPurposeOfUse().size(); i++)
2010      composeCodeableConcept(t, "AuditEvent", "purposeOfUse", element.getPurposeOfUse().get(i), i);
2011  }
2012
2013  protected void composeAuditEventAuditEventAgentNetworkComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventAgentNetworkComponent element, int index) {
2014    if (element == null) 
2015      return;
2016    Complex t;
2017    if (Utilities.noString(parentType))
2018      t = parent;
2019    else {
2020      t = parent.predicate("fhir:"+parentType+'.'+name);
2021    }
2022    composeBackboneElement(t, "network", name, element, index);
2023    if (element.hasAddressElement())
2024      composeString(t, "AuditEvent", "address", element.getAddressElement(), -1);
2025    if (element.hasTypeElement())
2026      composeEnum(t, "AuditEvent", "type", element.getTypeElement(), -1);
2027  }
2028
2029  protected void composeAuditEventAuditEventSourceComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventSourceComponent element, int index) {
2030    if (element == null) 
2031      return;
2032    Complex t;
2033    if (Utilities.noString(parentType))
2034      t = parent;
2035    else {
2036      t = parent.predicate("fhir:"+parentType+'.'+name);
2037    }
2038    composeBackboneElement(t, "source", name, element, index);
2039    if (element.hasSiteElement())
2040      composeString(t, "AuditEvent", "site", element.getSiteElement(), -1);
2041    if (element.hasObserver())
2042      composeReference(t, "AuditEvent", "observer", element.getObserver(), -1);
2043    for (int i = 0; i < element.getType().size(); i++)
2044      composeCoding(t, "AuditEvent", "type", element.getType().get(i), i);
2045  }
2046
2047  protected void composeAuditEventAuditEventEntityComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventEntityComponent element, int index) {
2048    if (element == null) 
2049      return;
2050    Complex t;
2051    if (Utilities.noString(parentType))
2052      t = parent;
2053    else {
2054      t = parent.predicate("fhir:"+parentType+'.'+name);
2055    }
2056    composeBackboneElement(t, "entity", name, element, index);
2057    if (element.hasWhat())
2058      composeReference(t, "AuditEvent", "what", element.getWhat(), -1);
2059    if (element.hasType())
2060      composeCoding(t, "AuditEvent", "type", element.getType(), -1);
2061    if (element.hasRole())
2062      composeCoding(t, "AuditEvent", "role", element.getRole(), -1);
2063    if (element.hasLifecycle())
2064      composeCoding(t, "AuditEvent", "lifecycle", element.getLifecycle(), -1);
2065    for (int i = 0; i < element.getSecurityLabel().size(); i++)
2066      composeCoding(t, "AuditEvent", "securityLabel", element.getSecurityLabel().get(i), i);
2067    if (element.hasNameElement())
2068      composeString(t, "AuditEvent", "name", element.getNameElement(), -1);
2069    if (element.hasDescriptionElement())
2070      composeString(t, "AuditEvent", "description", element.getDescriptionElement(), -1);
2071    if (element.hasQueryElement())
2072      composeBase64Binary(t, "AuditEvent", "query", element.getQueryElement(), -1);
2073    for (int i = 0; i < element.getDetail().size(); i++)
2074      composeAuditEventAuditEventEntityDetailComponent(t, "AuditEvent", "detail", element.getDetail().get(i), i);
2075  }
2076
2077  protected void composeAuditEventAuditEventEntityDetailComponent(Complex parent, String parentType, String name, AuditEvent.AuditEventEntityDetailComponent element, int index) {
2078    if (element == null) 
2079      return;
2080    Complex t;
2081    if (Utilities.noString(parentType))
2082      t = parent;
2083    else {
2084      t = parent.predicate("fhir:"+parentType+'.'+name);
2085    }
2086    composeBackboneElement(t, "detail", name, element, index);
2087    if (element.hasTypeElement())
2088      composeString(t, "AuditEvent", "type", element.getTypeElement(), -1);
2089    if (element.hasValue())
2090      composeType(t, "AuditEvent", "value", element.getValue(), -1);
2091  }
2092
2093  protected void composeBasic(Complex parent, String parentType, String name, Basic element, int index) {
2094    if (element == null) 
2095      return;
2096    Complex t;
2097    if (Utilities.noString(parentType))
2098      t = parent;
2099    else {
2100      t = parent.predicate("fhir:"+parentType+'.'+name);
2101    }
2102    composeDomainResource(t, "Basic", name, element, index);
2103    for (int i = 0; i < element.getIdentifier().size(); i++)
2104      composeIdentifier(t, "Basic", "identifier", element.getIdentifier().get(i), i);
2105    if (element.hasCode())
2106      composeCodeableConcept(t, "Basic", "code", element.getCode(), -1);
2107    if (element.hasSubject())
2108      composeReference(t, "Basic", "subject", element.getSubject(), -1);
2109    if (element.hasCreatedElement())
2110      composeDate(t, "Basic", "created", element.getCreatedElement(), -1);
2111    if (element.hasAuthor())
2112      composeReference(t, "Basic", "author", element.getAuthor(), -1);
2113  }
2114
2115  protected void composeBinary(Complex parent, String parentType, String name, Binary element, int index) {
2116    if (element == null) 
2117      return;
2118    Complex t;
2119    if (Utilities.noString(parentType))
2120      t = parent;
2121    else {
2122      t = parent.predicate("fhir:"+parentType+'.'+name);
2123    }
2124    composeResource(t, "Binary", name, element, index);
2125    if (element.hasContentTypeElement())
2126      composeCode(t, "Binary", "contentType", element.getContentTypeElement(), -1);
2127    if (element.hasSecurityContext())
2128      composeReference(t, "Binary", "securityContext", element.getSecurityContext(), -1);
2129    if (element.hasDataElement())
2130      composeBase64Binary(t, "Binary", "data", element.getDataElement(), -1);
2131  }
2132
2133  protected void composeBiologicallyDerivedProduct(Complex parent, String parentType, String name, BiologicallyDerivedProduct element, int index) {
2134    if (element == null) 
2135      return;
2136    Complex t;
2137    if (Utilities.noString(parentType))
2138      t = parent;
2139    else {
2140      t = parent.predicate("fhir:"+parentType+'.'+name);
2141    }
2142    composeDomainResource(t, "BiologicallyDerivedProduct", name, element, index);
2143    for (int i = 0; i < element.getIdentifier().size(); i++)
2144      composeIdentifier(t, "BiologicallyDerivedProduct", "identifier", element.getIdentifier().get(i), i);
2145    if (element.hasProductCategoryElement())
2146      composeEnum(t, "BiologicallyDerivedProduct", "productCategory", element.getProductCategoryElement(), -1);
2147    if (element.hasProductCode())
2148      composeCodeableConcept(t, "BiologicallyDerivedProduct", "productCode", element.getProductCode(), -1);
2149    if (element.hasStatusElement())
2150      composeEnum(t, "BiologicallyDerivedProduct", "status", element.getStatusElement(), -1);
2151    for (int i = 0; i < element.getRequest().size(); i++)
2152      composeReference(t, "BiologicallyDerivedProduct", "request", element.getRequest().get(i), i);
2153    if (element.hasQuantityElement())
2154      composeInteger(t, "BiologicallyDerivedProduct", "quantity", element.getQuantityElement(), -1);
2155    for (int i = 0; i < element.getParent().size(); i++)
2156      composeReference(t, "BiologicallyDerivedProduct", "parent", element.getParent().get(i), i);
2157    if (element.hasCollection())
2158      composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(t, "BiologicallyDerivedProduct", "collection", element.getCollection(), -1);
2159    for (int i = 0; i < element.getProcessing().size(); i++)
2160      composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(t, "BiologicallyDerivedProduct", "processing", element.getProcessing().get(i), i);
2161    if (element.hasManipulation())
2162      composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(t, "BiologicallyDerivedProduct", "manipulation", element.getManipulation(), -1);
2163    for (int i = 0; i < element.getStorage().size(); i++)
2164      composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(t, "BiologicallyDerivedProduct", "storage", element.getStorage().get(i), i);
2165  }
2166
2167  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element, int index) {
2168    if (element == null) 
2169      return;
2170    Complex t;
2171    if (Utilities.noString(parentType))
2172      t = parent;
2173    else {
2174      t = parent.predicate("fhir:"+parentType+'.'+name);
2175    }
2176    composeBackboneElement(t, "collection", name, element, index);
2177    if (element.hasCollector())
2178      composeReference(t, "BiologicallyDerivedProduct", "collector", element.getCollector(), -1);
2179    if (element.hasSource())
2180      composeReference(t, "BiologicallyDerivedProduct", "source", element.getSource(), -1);
2181    if (element.hasCollected())
2182      composeType(t, "BiologicallyDerivedProduct", "collected", element.getCollected(), -1);
2183  }
2184
2185  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element, int index) {
2186    if (element == null) 
2187      return;
2188    Complex t;
2189    if (Utilities.noString(parentType))
2190      t = parent;
2191    else {
2192      t = parent.predicate("fhir:"+parentType+'.'+name);
2193    }
2194    composeBackboneElement(t, "processing", name, element, index);
2195    if (element.hasDescriptionElement())
2196      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2197    if (element.hasProcedure())
2198      composeCodeableConcept(t, "BiologicallyDerivedProduct", "procedure", element.getProcedure(), -1);
2199    if (element.hasAdditive())
2200      composeReference(t, "BiologicallyDerivedProduct", "additive", element.getAdditive(), -1);
2201    if (element.hasTime())
2202      composeType(t, "BiologicallyDerivedProduct", "time", element.getTime(), -1);
2203  }
2204
2205  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element, int index) {
2206    if (element == null) 
2207      return;
2208    Complex t;
2209    if (Utilities.noString(parentType))
2210      t = parent;
2211    else {
2212      t = parent.predicate("fhir:"+parentType+'.'+name);
2213    }
2214    composeBackboneElement(t, "manipulation", name, element, index);
2215    if (element.hasDescriptionElement())
2216      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2217    if (element.hasTime())
2218      composeType(t, "BiologicallyDerivedProduct", "time", element.getTime(), -1);
2219  }
2220
2221  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(Complex parent, String parentType, String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element, int index) {
2222    if (element == null) 
2223      return;
2224    Complex t;
2225    if (Utilities.noString(parentType))
2226      t = parent;
2227    else {
2228      t = parent.predicate("fhir:"+parentType+'.'+name);
2229    }
2230    composeBackboneElement(t, "storage", name, element, index);
2231    if (element.hasDescriptionElement())
2232      composeString(t, "BiologicallyDerivedProduct", "description", element.getDescriptionElement(), -1);
2233    if (element.hasTemperatureElement())
2234      composeDecimal(t, "BiologicallyDerivedProduct", "temperature", element.getTemperatureElement(), -1);
2235    if (element.hasScaleElement())
2236      composeEnum(t, "BiologicallyDerivedProduct", "scale", element.getScaleElement(), -1);
2237    if (element.hasDuration())
2238      composePeriod(t, "BiologicallyDerivedProduct", "duration", element.getDuration(), -1);
2239  }
2240
2241  protected void composeBodyStructure(Complex parent, String parentType, String name, BodyStructure element, int index) {
2242    if (element == null) 
2243      return;
2244    Complex t;
2245    if (Utilities.noString(parentType))
2246      t = parent;
2247    else {
2248      t = parent.predicate("fhir:"+parentType+'.'+name);
2249    }
2250    composeDomainResource(t, "BodyStructure", name, element, index);
2251    for (int i = 0; i < element.getIdentifier().size(); i++)
2252      composeIdentifier(t, "BodyStructure", "identifier", element.getIdentifier().get(i), i);
2253    if (element.hasActiveElement())
2254      composeBoolean(t, "BodyStructure", "active", element.getActiveElement(), -1);
2255    if (element.hasMorphology())
2256      composeCodeableConcept(t, "BodyStructure", "morphology", element.getMorphology(), -1);
2257    if (element.hasLocation())
2258      composeCodeableConcept(t, "BodyStructure", "location", element.getLocation(), -1);
2259    for (int i = 0; i < element.getLocationQualifier().size(); i++)
2260      composeCodeableConcept(t, "BodyStructure", "locationQualifier", element.getLocationQualifier().get(i), i);
2261    if (element.hasDescriptionElement())
2262      composeString(t, "BodyStructure", "description", element.getDescriptionElement(), -1);
2263    for (int i = 0; i < element.getImage().size(); i++)
2264      composeAttachment(t, "BodyStructure", "image", element.getImage().get(i), i);
2265    if (element.hasPatient())
2266      composeReference(t, "BodyStructure", "patient", element.getPatient(), -1);
2267  }
2268
2269  protected void composeBundle(Complex parent, String parentType, String name, Bundle element, int index) {
2270    if (element == null) 
2271      return;
2272    Complex t;
2273    if (Utilities.noString(parentType))
2274      t = parent;
2275    else {
2276      t = parent.predicate("fhir:"+parentType+'.'+name);
2277    }
2278    composeResource(t, "Bundle", name, element, index);
2279    if (element.hasIdentifier())
2280      composeIdentifier(t, "Bundle", "identifier", element.getIdentifier(), -1);
2281    if (element.hasTypeElement())
2282      composeEnum(t, "Bundle", "type", element.getTypeElement(), -1);
2283    if (element.hasTimestampElement())
2284      composeInstant(t, "Bundle", "timestamp", element.getTimestampElement(), -1);
2285    if (element.hasTotalElement())
2286      composeUnsignedInt(t, "Bundle", "total", element.getTotalElement(), -1);
2287    for (int i = 0; i < element.getLink().size(); i++)
2288      composeBundleBundleLinkComponent(t, "Bundle", "link", element.getLink().get(i), i);
2289    for (int i = 0; i < element.getEntry().size(); i++)
2290      composeBundleBundleEntryComponent(t, "Bundle", "entry", element.getEntry().get(i), i);
2291    if (element.hasSignature())
2292      composeSignature(t, "Bundle", "signature", element.getSignature(), -1);
2293  }
2294
2295  protected void composeBundleBundleLinkComponent(Complex parent, String parentType, String name, Bundle.BundleLinkComponent element, int index) {
2296    if (element == null) 
2297      return;
2298    Complex t;
2299    if (Utilities.noString(parentType))
2300      t = parent;
2301    else {
2302      t = parent.predicate("fhir:"+parentType+'.'+name);
2303    }
2304    composeBackboneElement(t, "link", name, element, index);
2305    if (element.hasRelationElement())
2306      composeString(t, "Bundle", "relation", element.getRelationElement(), -1);
2307    if (element.hasUrlElement())
2308      composeUri(t, "Bundle", "url", element.getUrlElement(), -1);
2309  }
2310
2311  protected void composeBundleBundleEntryComponent(Complex parent, String parentType, String name, Bundle.BundleEntryComponent element, int index) {
2312    if (element == null) 
2313      return;
2314    Complex t;
2315    if (Utilities.noString(parentType))
2316      t = parent;
2317    else {
2318      t = parent.predicate("fhir:"+parentType+'.'+name);
2319    }
2320    composeBackboneElement(t, "entry", name, element, index);
2321    for (int i = 0; i < element.getLink().size(); i++)
2322      composeBundleBundleLinkComponent(t, "Bundle", "link", element.getLink().get(i), i);
2323    if (element.hasFullUrlElement())
2324      composeUri(t, "Bundle", "fullUrl", element.getFullUrlElement(), -1);
2325    if (element.hasResource())
2326      composeResource(t, "Bundle", "resource", element.getResource(), -1);
2327    if (element.hasSearch())
2328      composeBundleBundleEntrySearchComponent(t, "Bundle", "search", element.getSearch(), -1);
2329    if (element.hasRequest())
2330      composeBundleBundleEntryRequestComponent(t, "Bundle", "request", element.getRequest(), -1);
2331    if (element.hasResponse())
2332      composeBundleBundleEntryResponseComponent(t, "Bundle", "response", element.getResponse(), -1);
2333  }
2334
2335  protected void composeBundleBundleEntrySearchComponent(Complex parent, String parentType, String name, Bundle.BundleEntrySearchComponent element, int index) {
2336    if (element == null) 
2337      return;
2338    Complex t;
2339    if (Utilities.noString(parentType))
2340      t = parent;
2341    else {
2342      t = parent.predicate("fhir:"+parentType+'.'+name);
2343    }
2344    composeBackboneElement(t, "search", name, element, index);
2345    if (element.hasModeElement())
2346      composeEnum(t, "Bundle", "mode", element.getModeElement(), -1);
2347    if (element.hasScoreElement())
2348      composeDecimal(t, "Bundle", "score", element.getScoreElement(), -1);
2349  }
2350
2351  protected void composeBundleBundleEntryRequestComponent(Complex parent, String parentType, String name, Bundle.BundleEntryRequestComponent element, int index) {
2352    if (element == null) 
2353      return;
2354    Complex t;
2355    if (Utilities.noString(parentType))
2356      t = parent;
2357    else {
2358      t = parent.predicate("fhir:"+parentType+'.'+name);
2359    }
2360    composeBackboneElement(t, "request", name, element, index);
2361    if (element.hasMethodElement())
2362      composeEnum(t, "Bundle", "method", element.getMethodElement(), -1);
2363    if (element.hasUrlElement())
2364      composeUri(t, "Bundle", "url", element.getUrlElement(), -1);
2365    if (element.hasIfNoneMatchElement())
2366      composeString(t, "Bundle", "ifNoneMatch", element.getIfNoneMatchElement(), -1);
2367    if (element.hasIfModifiedSinceElement())
2368      composeInstant(t, "Bundle", "ifModifiedSince", element.getIfModifiedSinceElement(), -1);
2369    if (element.hasIfMatchElement())
2370      composeString(t, "Bundle", "ifMatch", element.getIfMatchElement(), -1);
2371    if (element.hasIfNoneExistElement())
2372      composeString(t, "Bundle", "ifNoneExist", element.getIfNoneExistElement(), -1);
2373  }
2374
2375  protected void composeBundleBundleEntryResponseComponent(Complex parent, String parentType, String name, Bundle.BundleEntryResponseComponent element, int index) {
2376    if (element == null) 
2377      return;
2378    Complex t;
2379    if (Utilities.noString(parentType))
2380      t = parent;
2381    else {
2382      t = parent.predicate("fhir:"+parentType+'.'+name);
2383    }
2384    composeBackboneElement(t, "response", name, element, index);
2385    if (element.hasStatusElement())
2386      composeString(t, "Bundle", "status", element.getStatusElement(), -1);
2387    if (element.hasLocationElement())
2388      composeUri(t, "Bundle", "location", element.getLocationElement(), -1);
2389    if (element.hasEtagElement())
2390      composeString(t, "Bundle", "etag", element.getEtagElement(), -1);
2391    if (element.hasLastModifiedElement())
2392      composeInstant(t, "Bundle", "lastModified", element.getLastModifiedElement(), -1);
2393    if (element.hasOutcome())
2394      composeResource(t, "Bundle", "outcome", element.getOutcome(), -1);
2395  }
2396
2397  protected void composeCapabilityStatement(Complex parent, String parentType, String name, CapabilityStatement element, int index) {
2398    if (element == null) 
2399      return;
2400    Complex t;
2401    if (Utilities.noString(parentType))
2402      t = parent;
2403    else {
2404      t = parent.predicate("fhir:"+parentType+'.'+name);
2405    }
2406    composeDomainResource(t, "CapabilityStatement", name, element, index);
2407    if (element.hasUrlElement())
2408      composeUri(t, "CapabilityStatement", "url", element.getUrlElement(), -1);
2409    if (element.hasVersionElement())
2410      composeString(t, "CapabilityStatement", "version", element.getVersionElement(), -1);
2411    if (element.hasNameElement())
2412      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2413    if (element.hasTitleElement())
2414      composeString(t, "CapabilityStatement", "title", element.getTitleElement(), -1);
2415    if (element.hasStatusElement())
2416      composeEnum(t, "CapabilityStatement", "status", element.getStatusElement(), -1);
2417    if (element.hasExperimentalElement())
2418      composeBoolean(t, "CapabilityStatement", "experimental", element.getExperimentalElement(), -1);
2419    if (element.hasDateElement())
2420      composeDateTime(t, "CapabilityStatement", "date", element.getDateElement(), -1);
2421    if (element.hasPublisherElement())
2422      composeString(t, "CapabilityStatement", "publisher", element.getPublisherElement(), -1);
2423    for (int i = 0; i < element.getContact().size(); i++)
2424      composeContactDetail(t, "CapabilityStatement", "contact", element.getContact().get(i), i);
2425    if (element.hasDescriptionElement())
2426      composeMarkdown(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2427    for (int i = 0; i < element.getUseContext().size(); i++)
2428      composeUsageContext(t, "CapabilityStatement", "useContext", element.getUseContext().get(i), i);
2429    for (int i = 0; i < element.getJurisdiction().size(); i++)
2430      composeCodeableConcept(t, "CapabilityStatement", "jurisdiction", element.getJurisdiction().get(i), i);
2431    if (element.hasPurposeElement())
2432      composeMarkdown(t, "CapabilityStatement", "purpose", element.getPurposeElement(), -1);
2433    if (element.hasCopyrightElement())
2434      composeMarkdown(t, "CapabilityStatement", "copyright", element.getCopyrightElement(), -1);
2435    if (element.hasKindElement())
2436      composeEnum(t, "CapabilityStatement", "kind", element.getKindElement(), -1);
2437    for (int i = 0; i < element.getInstantiates().size(); i++)
2438      composeCanonical(t, "CapabilityStatement", "instantiates", element.getInstantiates().get(i), i);
2439    for (int i = 0; i < element.getImports().size(); i++)
2440      composeCanonical(t, "CapabilityStatement", "imports", element.getImports().get(i), i);
2441    if (element.hasSoftware())
2442      composeCapabilityStatementCapabilityStatementSoftwareComponent(t, "CapabilityStatement", "software", element.getSoftware(), -1);
2443    if (element.hasImplementation())
2444      composeCapabilityStatementCapabilityStatementImplementationComponent(t, "CapabilityStatement", "implementation", element.getImplementation(), -1);
2445    if (element.hasFhirVersionElement())
2446      composeEnum(t, "CapabilityStatement", "fhirVersion", element.getFhirVersionElement(), -1);
2447    for (int i = 0; i < element.getFormat().size(); i++)
2448      composeCode(t, "CapabilityStatement", "format", element.getFormat().get(i), i);
2449    for (int i = 0; i < element.getPatchFormat().size(); i++)
2450      composeCode(t, "CapabilityStatement", "patchFormat", element.getPatchFormat().get(i), i);
2451    for (int i = 0; i < element.getImplementationGuide().size(); i++)
2452      composeCanonical(t, "CapabilityStatement", "implementationGuide", element.getImplementationGuide().get(i), i);
2453    for (int i = 0; i < element.getRest().size(); i++)
2454      composeCapabilityStatementCapabilityStatementRestComponent(t, "CapabilityStatement", "rest", element.getRest().get(i), i);
2455    for (int i = 0; i < element.getMessaging().size(); i++)
2456      composeCapabilityStatementCapabilityStatementMessagingComponent(t, "CapabilityStatement", "messaging", element.getMessaging().get(i), i);
2457    for (int i = 0; i < element.getDocument().size(); i++)
2458      composeCapabilityStatementCapabilityStatementDocumentComponent(t, "CapabilityStatement", "document", element.getDocument().get(i), i);
2459  }
2460
2461  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementSoftwareComponent element, int index) {
2462    if (element == null) 
2463      return;
2464    Complex t;
2465    if (Utilities.noString(parentType))
2466      t = parent;
2467    else {
2468      t = parent.predicate("fhir:"+parentType+'.'+name);
2469    }
2470    composeBackboneElement(t, "software", name, element, index);
2471    if (element.hasNameElement())
2472      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2473    if (element.hasVersionElement())
2474      composeString(t, "CapabilityStatement", "version", element.getVersionElement(), -1);
2475    if (element.hasReleaseDateElement())
2476      composeDateTime(t, "CapabilityStatement", "releaseDate", element.getReleaseDateElement(), -1);
2477  }
2478
2479  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementImplementationComponent element, int index) {
2480    if (element == null) 
2481      return;
2482    Complex t;
2483    if (Utilities.noString(parentType))
2484      t = parent;
2485    else {
2486      t = parent.predicate("fhir:"+parentType+'.'+name);
2487    }
2488    composeBackboneElement(t, "implementation", name, element, index);
2489    if (element.hasDescriptionElement())
2490      composeString(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2491    if (element.hasUrlElement())
2492      composeUrl(t, "CapabilityStatement", "url", element.getUrlElement(), -1);
2493    if (element.hasCustodian())
2494      composeReference(t, "CapabilityStatement", "custodian", element.getCustodian(), -1);
2495  }
2496
2497  protected void composeCapabilityStatementCapabilityStatementRestComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestComponent element, int index) {
2498    if (element == null) 
2499      return;
2500    Complex t;
2501    if (Utilities.noString(parentType))
2502      t = parent;
2503    else {
2504      t = parent.predicate("fhir:"+parentType+'.'+name);
2505    }
2506    composeBackboneElement(t, "rest", name, element, index);
2507    if (element.hasModeElement())
2508      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2509    if (element.hasDocumentationElement())
2510      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2511    if (element.hasSecurity())
2512      composeCapabilityStatementCapabilityStatementRestSecurityComponent(t, "CapabilityStatement", "security", element.getSecurity(), -1);
2513    for (int i = 0; i < element.getResource().size(); i++)
2514      composeCapabilityStatementCapabilityStatementRestResourceComponent(t, "CapabilityStatement", "resource", element.getResource().get(i), i);
2515    for (int i = 0; i < element.getInteraction().size(); i++)
2516      composeCapabilityStatementSystemInteractionComponent(t, "CapabilityStatement", "interaction", element.getInteraction().get(i), i);
2517    for (int i = 0; i < element.getSearchParam().size(); i++)
2518      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(t, "CapabilityStatement", "searchParam", element.getSearchParam().get(i), i);
2519    for (int i = 0; i < element.getOperation().size(); i++)
2520      composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(t, "CapabilityStatement", "operation", element.getOperation().get(i), i);
2521    for (int i = 0; i < element.getCompartment().size(); i++)
2522      composeCanonical(t, "CapabilityStatement", "compartment", element.getCompartment().get(i), i);
2523  }
2524
2525  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element, int index) {
2526    if (element == null) 
2527      return;
2528    Complex t;
2529    if (Utilities.noString(parentType))
2530      t = parent;
2531    else {
2532      t = parent.predicate("fhir:"+parentType+'.'+name);
2533    }
2534    composeBackboneElement(t, "security", name, element, index);
2535    if (element.hasCorsElement())
2536      composeBoolean(t, "CapabilityStatement", "cors", element.getCorsElement(), -1);
2537    for (int i = 0; i < element.getService().size(); i++)
2538      composeCodeableConcept(t, "CapabilityStatement", "service", element.getService().get(i), i);
2539    if (element.hasDescriptionElement())
2540      composeMarkdown(t, "CapabilityStatement", "description", element.getDescriptionElement(), -1);
2541  }
2542
2543  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceComponent element, int index) {
2544    if (element == null) 
2545      return;
2546    Complex t;
2547    if (Utilities.noString(parentType))
2548      t = parent;
2549    else {
2550      t = parent.predicate("fhir:"+parentType+'.'+name);
2551    }
2552    composeBackboneElement(t, "resource", name, element, index);
2553    if (element.hasTypeElement())
2554      composeCode(t, "CapabilityStatement", "type", element.getTypeElement(), -1);
2555    if (element.hasProfileElement())
2556      composeCanonical(t, "CapabilityStatement", "profile", element.getProfileElement(), -1);
2557    for (int i = 0; i < element.getSupportedProfile().size(); i++)
2558      composeCanonical(t, "CapabilityStatement", "supportedProfile", element.getSupportedProfile().get(i), i);
2559    if (element.hasDocumentationElement())
2560      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2561    for (int i = 0; i < element.getInteraction().size(); i++)
2562      composeCapabilityStatementResourceInteractionComponent(t, "CapabilityStatement", "interaction", element.getInteraction().get(i), i);
2563    if (element.hasVersioningElement())
2564      composeEnum(t, "CapabilityStatement", "versioning", element.getVersioningElement(), -1);
2565    if (element.hasReadHistoryElement())
2566      composeBoolean(t, "CapabilityStatement", "readHistory", element.getReadHistoryElement(), -1);
2567    if (element.hasUpdateCreateElement())
2568      composeBoolean(t, "CapabilityStatement", "updateCreate", element.getUpdateCreateElement(), -1);
2569    if (element.hasConditionalCreateElement())
2570      composeBoolean(t, "CapabilityStatement", "conditionalCreate", element.getConditionalCreateElement(), -1);
2571    if (element.hasConditionalReadElement())
2572      composeEnum(t, "CapabilityStatement", "conditionalRead", element.getConditionalReadElement(), -1);
2573    if (element.hasConditionalUpdateElement())
2574      composeBoolean(t, "CapabilityStatement", "conditionalUpdate", element.getConditionalUpdateElement(), -1);
2575    if (element.hasConditionalDeleteElement())
2576      composeEnum(t, "CapabilityStatement", "conditionalDelete", element.getConditionalDeleteElement(), -1);
2577    for (int i = 0; i < element.getReferencePolicy().size(); i++)
2578      composeEnum(t, "CapabilityStatement", "referencePolicy", element.getReferencePolicy().get(i), i);
2579    for (int i = 0; i < element.getSearchInclude().size(); i++)
2580      composeString(t, "CapabilityStatement", "searchInclude", element.getSearchInclude().get(i), i);
2581    for (int i = 0; i < element.getSearchRevInclude().size(); i++)
2582      composeString(t, "CapabilityStatement", "searchRevInclude", element.getSearchRevInclude().get(i), i);
2583    for (int i = 0; i < element.getSearchParam().size(); i++)
2584      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(t, "CapabilityStatement", "searchParam", element.getSearchParam().get(i), i);
2585    for (int i = 0; i < element.getOperation().size(); i++)
2586      composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(t, "CapabilityStatement", "operation", element.getOperation().get(i), i);
2587  }
2588
2589  protected void composeCapabilityStatementResourceInteractionComponent(Complex parent, String parentType, String name, CapabilityStatement.ResourceInteractionComponent element, int index) {
2590    if (element == null) 
2591      return;
2592    Complex t;
2593    if (Utilities.noString(parentType))
2594      t = parent;
2595    else {
2596      t = parent.predicate("fhir:"+parentType+'.'+name);
2597    }
2598    composeBackboneElement(t, "interaction", name, element, index);
2599    if (element.hasCodeElement())
2600      composeEnum(t, "CapabilityStatement", "code", element.getCodeElement(), -1);
2601    if (element.hasDocumentationElement())
2602      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2603  }
2604
2605  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element, int index) {
2606    if (element == null) 
2607      return;
2608    Complex t;
2609    if (Utilities.noString(parentType))
2610      t = parent;
2611    else {
2612      t = parent.predicate("fhir:"+parentType+'.'+name);
2613    }
2614    composeBackboneElement(t, "searchParam", name, element, index);
2615    if (element.hasNameElement())
2616      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2617    if (element.hasDefinitionElement())
2618      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2619    if (element.hasTypeElement())
2620      composeEnum(t, "CapabilityStatement", "type", element.getTypeElement(), -1);
2621    if (element.hasDocumentationElement())
2622      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2623  }
2624
2625  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element, int index) {
2626    if (element == null) 
2627      return;
2628    Complex t;
2629    if (Utilities.noString(parentType))
2630      t = parent;
2631    else {
2632      t = parent.predicate("fhir:"+parentType+'.'+name);
2633    }
2634    composeBackboneElement(t, "operation", name, element, index);
2635    if (element.hasNameElement())
2636      composeString(t, "CapabilityStatement", "name", element.getNameElement(), -1);
2637    if (element.hasDefinitionElement())
2638      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2639    if (element.hasDocumentationElement())
2640      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2641  }
2642
2643  protected void composeCapabilityStatementSystemInteractionComponent(Complex parent, String parentType, String name, CapabilityStatement.SystemInteractionComponent element, int index) {
2644    if (element == null) 
2645      return;
2646    Complex t;
2647    if (Utilities.noString(parentType))
2648      t = parent;
2649    else {
2650      t = parent.predicate("fhir:"+parentType+'.'+name);
2651    }
2652    composeBackboneElement(t, "interaction", name, element, index);
2653    if (element.hasCodeElement())
2654      composeEnum(t, "CapabilityStatement", "code", element.getCodeElement(), -1);
2655    if (element.hasDocumentationElement())
2656      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2657  }
2658
2659  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingComponent element, int index) {
2660    if (element == null) 
2661      return;
2662    Complex t;
2663    if (Utilities.noString(parentType))
2664      t = parent;
2665    else {
2666      t = parent.predicate("fhir:"+parentType+'.'+name);
2667    }
2668    composeBackboneElement(t, "messaging", name, element, index);
2669    for (int i = 0; i < element.getEndpoint().size(); i++)
2670      composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(t, "CapabilityStatement", "endpoint", element.getEndpoint().get(i), i);
2671    if (element.hasReliableCacheElement())
2672      composeUnsignedInt(t, "CapabilityStatement", "reliableCache", element.getReliableCacheElement(), -1);
2673    if (element.hasDocumentationElement())
2674      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2675    for (int i = 0; i < element.getSupportedMessage().size(); i++)
2676      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(t, "CapabilityStatement", "supportedMessage", element.getSupportedMessage().get(i), i);
2677  }
2678
2679  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element, int index) {
2680    if (element == null) 
2681      return;
2682    Complex t;
2683    if (Utilities.noString(parentType))
2684      t = parent;
2685    else {
2686      t = parent.predicate("fhir:"+parentType+'.'+name);
2687    }
2688    composeBackboneElement(t, "endpoint", name, element, index);
2689    if (element.hasProtocol())
2690      composeCoding(t, "CapabilityStatement", "protocol", element.getProtocol(), -1);
2691    if (element.hasAddressElement())
2692      composeUrl(t, "CapabilityStatement", "address", element.getAddressElement(), -1);
2693  }
2694
2695  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element, int index) {
2696    if (element == null) 
2697      return;
2698    Complex t;
2699    if (Utilities.noString(parentType))
2700      t = parent;
2701    else {
2702      t = parent.predicate("fhir:"+parentType+'.'+name);
2703    }
2704    composeBackboneElement(t, "supportedMessage", name, element, index);
2705    if (element.hasModeElement())
2706      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2707    if (element.hasDefinitionElement())
2708      composeCanonical(t, "CapabilityStatement", "definition", element.getDefinitionElement(), -1);
2709  }
2710
2711  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(Complex parent, String parentType, String name, CapabilityStatement.CapabilityStatementDocumentComponent element, int index) {
2712    if (element == null) 
2713      return;
2714    Complex t;
2715    if (Utilities.noString(parentType))
2716      t = parent;
2717    else {
2718      t = parent.predicate("fhir:"+parentType+'.'+name);
2719    }
2720    composeBackboneElement(t, "document", name, element, index);
2721    if (element.hasModeElement())
2722      composeEnum(t, "CapabilityStatement", "mode", element.getModeElement(), -1);
2723    if (element.hasDocumentationElement())
2724      composeMarkdown(t, "CapabilityStatement", "documentation", element.getDocumentationElement(), -1);
2725    if (element.hasProfileElement())
2726      composeCanonical(t, "CapabilityStatement", "profile", element.getProfileElement(), -1);
2727  }
2728
2729  protected void composeCarePlan(Complex parent, String parentType, String name, CarePlan element, int index) {
2730    if (element == null) 
2731      return;
2732    Complex t;
2733    if (Utilities.noString(parentType))
2734      t = parent;
2735    else {
2736      t = parent.predicate("fhir:"+parentType+'.'+name);
2737    }
2738    composeDomainResource(t, "CarePlan", name, element, index);
2739    for (int i = 0; i < element.getIdentifier().size(); i++)
2740      composeIdentifier(t, "CarePlan", "identifier", element.getIdentifier().get(i), i);
2741    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
2742      composeCanonical(t, "CarePlan", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
2743    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
2744      composeUri(t, "CarePlan", "instantiatesUri", element.getInstantiatesUri().get(i), i);
2745    for (int i = 0; i < element.getBasedOn().size(); i++)
2746      composeReference(t, "CarePlan", "basedOn", element.getBasedOn().get(i), i);
2747    for (int i = 0; i < element.getReplaces().size(); i++)
2748      composeReference(t, "CarePlan", "replaces", element.getReplaces().get(i), i);
2749    for (int i = 0; i < element.getPartOf().size(); i++)
2750      composeReference(t, "CarePlan", "partOf", element.getPartOf().get(i), i);
2751    if (element.hasStatusElement())
2752      composeEnum(t, "CarePlan", "status", element.getStatusElement(), -1);
2753    if (element.hasIntentElement())
2754      composeEnum(t, "CarePlan", "intent", element.getIntentElement(), -1);
2755    for (int i = 0; i < element.getCategory().size(); i++)
2756      composeCodeableConcept(t, "CarePlan", "category", element.getCategory().get(i), i);
2757    if (element.hasTitleElement())
2758      composeString(t, "CarePlan", "title", element.getTitleElement(), -1);
2759    if (element.hasDescriptionElement())
2760      composeString(t, "CarePlan", "description", element.getDescriptionElement(), -1);
2761    if (element.hasSubject())
2762      composeReference(t, "CarePlan", "subject", element.getSubject(), -1);
2763    if (element.hasEncounter())
2764      composeReference(t, "CarePlan", "encounter", element.getEncounter(), -1);
2765    if (element.hasPeriod())
2766      composePeriod(t, "CarePlan", "period", element.getPeriod(), -1);
2767    if (element.hasCreatedElement())
2768      composeDateTime(t, "CarePlan", "created", element.getCreatedElement(), -1);
2769    if (element.hasAuthor())
2770      composeReference(t, "CarePlan", "author", element.getAuthor(), -1);
2771    for (int i = 0; i < element.getContributor().size(); i++)
2772      composeReference(t, "CarePlan", "contributor", element.getContributor().get(i), i);
2773    for (int i = 0; i < element.getCareTeam().size(); i++)
2774      composeReference(t, "CarePlan", "careTeam", element.getCareTeam().get(i), i);
2775    for (int i = 0; i < element.getAddresses().size(); i++)
2776      composeReference(t, "CarePlan", "addresses", element.getAddresses().get(i), i);
2777    for (int i = 0; i < element.getSupportingInfo().size(); i++)
2778      composeReference(t, "CarePlan", "supportingInfo", element.getSupportingInfo().get(i), i);
2779    for (int i = 0; i < element.getGoal().size(); i++)
2780      composeReference(t, "CarePlan", "goal", element.getGoal().get(i), i);
2781    for (int i = 0; i < element.getActivity().size(); i++)
2782      composeCarePlanCarePlanActivityComponent(t, "CarePlan", "activity", element.getActivity().get(i), i);
2783    for (int i = 0; i < element.getNote().size(); i++)
2784      composeAnnotation(t, "CarePlan", "note", element.getNote().get(i), i);
2785  }
2786
2787  protected void composeCarePlanCarePlanActivityComponent(Complex parent, String parentType, String name, CarePlan.CarePlanActivityComponent element, int index) {
2788    if (element == null) 
2789      return;
2790    Complex t;
2791    if (Utilities.noString(parentType))
2792      t = parent;
2793    else {
2794      t = parent.predicate("fhir:"+parentType+'.'+name);
2795    }
2796    composeBackboneElement(t, "activity", name, element, index);
2797    for (int i = 0; i < element.getOutcomeCodeableConcept().size(); i++)
2798      composeCodeableConcept(t, "CarePlan", "outcomeCodeableConcept", element.getOutcomeCodeableConcept().get(i), i);
2799    for (int i = 0; i < element.getOutcomeReference().size(); i++)
2800      composeReference(t, "CarePlan", "outcomeReference", element.getOutcomeReference().get(i), i);
2801    for (int i = 0; i < element.getProgress().size(); i++)
2802      composeAnnotation(t, "CarePlan", "progress", element.getProgress().get(i), i);
2803    if (element.hasReference())
2804      composeReference(t, "CarePlan", "reference", element.getReference(), -1);
2805    if (element.hasDetail())
2806      composeCarePlanCarePlanActivityDetailComponent(t, "CarePlan", "detail", element.getDetail(), -1);
2807  }
2808
2809  protected void composeCarePlanCarePlanActivityDetailComponent(Complex parent, String parentType, String name, CarePlan.CarePlanActivityDetailComponent element, int index) {
2810    if (element == null) 
2811      return;
2812    Complex t;
2813    if (Utilities.noString(parentType))
2814      t = parent;
2815    else {
2816      t = parent.predicate("fhir:"+parentType+'.'+name);
2817    }
2818    composeBackboneElement(t, "detail", name, element, index);
2819    if (element.hasKindElement())
2820      composeEnum(t, "CarePlan", "kind", element.getKindElement(), -1);
2821    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
2822      composeCanonical(t, "CarePlan", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
2823    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
2824      composeUri(t, "CarePlan", "instantiatesUri", element.getInstantiatesUri().get(i), i);
2825    if (element.hasCode())
2826      composeCodeableConcept(t, "CarePlan", "code", element.getCode(), -1);
2827    for (int i = 0; i < element.getReasonCode().size(); i++)
2828      composeCodeableConcept(t, "CarePlan", "reasonCode", element.getReasonCode().get(i), i);
2829    for (int i = 0; i < element.getReasonReference().size(); i++)
2830      composeReference(t, "CarePlan", "reasonReference", element.getReasonReference().get(i), i);
2831    for (int i = 0; i < element.getGoal().size(); i++)
2832      composeReference(t, "CarePlan", "goal", element.getGoal().get(i), i);
2833    if (element.hasStatusElement())
2834      composeEnum(t, "CarePlan", "status", element.getStatusElement(), -1);
2835    if (element.hasStatusReason())
2836      composeCodeableConcept(t, "CarePlan", "statusReason", element.getStatusReason(), -1);
2837    if (element.hasDoNotPerformElement())
2838      composeBoolean(t, "CarePlan", "doNotPerform", element.getDoNotPerformElement(), -1);
2839    if (element.hasScheduled())
2840      composeType(t, "CarePlan", "scheduled", element.getScheduled(), -1);
2841    if (element.hasLocation())
2842      composeReference(t, "CarePlan", "location", element.getLocation(), -1);
2843    for (int i = 0; i < element.getPerformer().size(); i++)
2844      composeReference(t, "CarePlan", "performer", element.getPerformer().get(i), i);
2845    if (element.hasProduct())
2846      composeType(t, "CarePlan", "product", element.getProduct(), -1);
2847    if (element.hasDailyAmount())
2848      composeQuantity(t, "CarePlan", "dailyAmount", element.getDailyAmount(), -1);
2849    if (element.hasQuantity())
2850      composeQuantity(t, "CarePlan", "quantity", element.getQuantity(), -1);
2851    if (element.hasDescriptionElement())
2852      composeString(t, "CarePlan", "description", element.getDescriptionElement(), -1);
2853  }
2854
2855  protected void composeCareTeam(Complex parent, String parentType, String name, CareTeam element, int index) {
2856    if (element == null) 
2857      return;
2858    Complex t;
2859    if (Utilities.noString(parentType))
2860      t = parent;
2861    else {
2862      t = parent.predicate("fhir:"+parentType+'.'+name);
2863    }
2864    composeDomainResource(t, "CareTeam", name, element, index);
2865    for (int i = 0; i < element.getIdentifier().size(); i++)
2866      composeIdentifier(t, "CareTeam", "identifier", element.getIdentifier().get(i), i);
2867    if (element.hasStatusElement())
2868      composeEnum(t, "CareTeam", "status", element.getStatusElement(), -1);
2869    for (int i = 0; i < element.getCategory().size(); i++)
2870      composeCodeableConcept(t, "CareTeam", "category", element.getCategory().get(i), i);
2871    if (element.hasNameElement())
2872      composeString(t, "CareTeam", "name", element.getNameElement(), -1);
2873    if (element.hasSubject())
2874      composeReference(t, "CareTeam", "subject", element.getSubject(), -1);
2875    if (element.hasEncounter())
2876      composeReference(t, "CareTeam", "encounter", element.getEncounter(), -1);
2877    if (element.hasPeriod())
2878      composePeriod(t, "CareTeam", "period", element.getPeriod(), -1);
2879    for (int i = 0; i < element.getParticipant().size(); i++)
2880      composeCareTeamCareTeamParticipantComponent(t, "CareTeam", "participant", element.getParticipant().get(i), i);
2881    for (int i = 0; i < element.getReasonCode().size(); i++)
2882      composeCodeableConcept(t, "CareTeam", "reasonCode", element.getReasonCode().get(i), i);
2883    for (int i = 0; i < element.getReasonReference().size(); i++)
2884      composeReference(t, "CareTeam", "reasonReference", element.getReasonReference().get(i), i);
2885    for (int i = 0; i < element.getManagingOrganization().size(); i++)
2886      composeReference(t, "CareTeam", "managingOrganization", element.getManagingOrganization().get(i), i);
2887    for (int i = 0; i < element.getTelecom().size(); i++)
2888      composeContactPoint(t, "CareTeam", "telecom", element.getTelecom().get(i), i);
2889    for (int i = 0; i < element.getNote().size(); i++)
2890      composeAnnotation(t, "CareTeam", "note", element.getNote().get(i), i);
2891  }
2892
2893  protected void composeCareTeamCareTeamParticipantComponent(Complex parent, String parentType, String name, CareTeam.CareTeamParticipantComponent element, int index) {
2894    if (element == null) 
2895      return;
2896    Complex t;
2897    if (Utilities.noString(parentType))
2898      t = parent;
2899    else {
2900      t = parent.predicate("fhir:"+parentType+'.'+name);
2901    }
2902    composeBackboneElement(t, "participant", name, element, index);
2903    for (int i = 0; i < element.getRole().size(); i++)
2904      composeCodeableConcept(t, "CareTeam", "role", element.getRole().get(i), i);
2905    if (element.hasMember())
2906      composeReference(t, "CareTeam", "member", element.getMember(), -1);
2907    if (element.hasOnBehalfOf())
2908      composeReference(t, "CareTeam", "onBehalfOf", element.getOnBehalfOf(), -1);
2909    if (element.hasPeriod())
2910      composePeriod(t, "CareTeam", "period", element.getPeriod(), -1);
2911  }
2912
2913  protected void composeCatalogEntry(Complex parent, String parentType, String name, CatalogEntry element, int index) {
2914    if (element == null) 
2915      return;
2916    Complex t;
2917    if (Utilities.noString(parentType))
2918      t = parent;
2919    else {
2920      t = parent.predicate("fhir:"+parentType+'.'+name);
2921    }
2922    composeDomainResource(t, "CatalogEntry", name, element, index);
2923    for (int i = 0; i < element.getIdentifier().size(); i++)
2924      composeIdentifier(t, "CatalogEntry", "identifier", element.getIdentifier().get(i), i);
2925    if (element.hasType())
2926      composeCodeableConcept(t, "CatalogEntry", "type", element.getType(), -1);
2927    if (element.hasOrderableElement())
2928      composeBoolean(t, "CatalogEntry", "orderable", element.getOrderableElement(), -1);
2929    if (element.hasReferencedItem())
2930      composeReference(t, "CatalogEntry", "referencedItem", element.getReferencedItem(), -1);
2931    for (int i = 0; i < element.getAdditionalIdentifier().size(); i++)
2932      composeIdentifier(t, "CatalogEntry", "additionalIdentifier", element.getAdditionalIdentifier().get(i), i);
2933    for (int i = 0; i < element.getClassification().size(); i++)
2934      composeCodeableConcept(t, "CatalogEntry", "classification", element.getClassification().get(i), i);
2935    if (element.hasStatusElement())
2936      composeEnum(t, "CatalogEntry", "status", element.getStatusElement(), -1);
2937    if (element.hasValidityPeriod())
2938      composePeriod(t, "CatalogEntry", "validityPeriod", element.getValidityPeriod(), -1);
2939    if (element.hasValidToElement())
2940      composeDateTime(t, "CatalogEntry", "validTo", element.getValidToElement(), -1);
2941    if (element.hasLastUpdatedElement())
2942      composeDateTime(t, "CatalogEntry", "lastUpdated", element.getLastUpdatedElement(), -1);
2943    for (int i = 0; i < element.getAdditionalCharacteristic().size(); i++)
2944      composeCodeableConcept(t, "CatalogEntry", "additionalCharacteristic", element.getAdditionalCharacteristic().get(i), i);
2945    for (int i = 0; i < element.getAdditionalClassification().size(); i++)
2946      composeCodeableConcept(t, "CatalogEntry", "additionalClassification", element.getAdditionalClassification().get(i), i);
2947    for (int i = 0; i < element.getRelatedEntry().size(); i++)
2948      composeCatalogEntryCatalogEntryRelatedEntryComponent(t, "CatalogEntry", "relatedEntry", element.getRelatedEntry().get(i), i);
2949  }
2950
2951  protected void composeCatalogEntryCatalogEntryRelatedEntryComponent(Complex parent, String parentType, String name, CatalogEntry.CatalogEntryRelatedEntryComponent element, int index) {
2952    if (element == null) 
2953      return;
2954    Complex t;
2955    if (Utilities.noString(parentType))
2956      t = parent;
2957    else {
2958      t = parent.predicate("fhir:"+parentType+'.'+name);
2959    }
2960    composeBackboneElement(t, "relatedEntry", name, element, index);
2961    if (element.hasRelationtypeElement())
2962      composeEnum(t, "CatalogEntry", "relationtype", element.getRelationtypeElement(), -1);
2963    if (element.hasItem())
2964      composeReference(t, "CatalogEntry", "item", element.getItem(), -1);
2965  }
2966
2967  protected void composeChargeItem(Complex parent, String parentType, String name, ChargeItem element, int index) {
2968    if (element == null) 
2969      return;
2970    Complex t;
2971    if (Utilities.noString(parentType))
2972      t = parent;
2973    else {
2974      t = parent.predicate("fhir:"+parentType+'.'+name);
2975    }
2976    composeDomainResource(t, "ChargeItem", name, element, index);
2977    for (int i = 0; i < element.getIdentifier().size(); i++)
2978      composeIdentifier(t, "ChargeItem", "identifier", element.getIdentifier().get(i), i);
2979    for (int i = 0; i < element.getDefinitionUri().size(); i++)
2980      composeUri(t, "ChargeItem", "definitionUri", element.getDefinitionUri().get(i), i);
2981    for (int i = 0; i < element.getDefinitionCanonical().size(); i++)
2982      composeCanonical(t, "ChargeItem", "definitionCanonical", element.getDefinitionCanonical().get(i), i);
2983    if (element.hasStatusElement())
2984      composeEnum(t, "ChargeItem", "status", element.getStatusElement(), -1);
2985    for (int i = 0; i < element.getPartOf().size(); i++)
2986      composeReference(t, "ChargeItem", "partOf", element.getPartOf().get(i), i);
2987    if (element.hasCode())
2988      composeCodeableConcept(t, "ChargeItem", "code", element.getCode(), -1);
2989    if (element.hasSubject())
2990      composeReference(t, "ChargeItem", "subject", element.getSubject(), -1);
2991    if (element.hasContext())
2992      composeReference(t, "ChargeItem", "context", element.getContext(), -1);
2993    if (element.hasOccurrence())
2994      composeType(t, "ChargeItem", "occurrence", element.getOccurrence(), -1);
2995    for (int i = 0; i < element.getPerformer().size(); i++)
2996      composeChargeItemChargeItemPerformerComponent(t, "ChargeItem", "performer", element.getPerformer().get(i), i);
2997    if (element.hasPerformingOrganization())
2998      composeReference(t, "ChargeItem", "performingOrganization", element.getPerformingOrganization(), -1);
2999    if (element.hasRequestingOrganization())
3000      composeReference(t, "ChargeItem", "requestingOrganization", element.getRequestingOrganization(), -1);
3001    if (element.hasCostCenter())
3002      composeReference(t, "ChargeItem", "costCenter", element.getCostCenter(), -1);
3003    if (element.hasQuantity())
3004      composeQuantity(t, "ChargeItem", "quantity", element.getQuantity(), -1);
3005    for (int i = 0; i < element.getBodysite().size(); i++)
3006      composeCodeableConcept(t, "ChargeItem", "bodysite", element.getBodysite().get(i), i);
3007    if (element.hasFactorOverrideElement())
3008      composeDecimal(t, "ChargeItem", "factorOverride", element.getFactorOverrideElement(), -1);
3009    if (element.hasPriceOverride())
3010      composeMoney(t, "ChargeItem", "priceOverride", element.getPriceOverride(), -1);
3011    if (element.hasOverrideReasonElement())
3012      composeString(t, "ChargeItem", "overrideReason", element.getOverrideReasonElement(), -1);
3013    if (element.hasEnterer())
3014      composeReference(t, "ChargeItem", "enterer", element.getEnterer(), -1);
3015    if (element.hasEnteredDateElement())
3016      composeDateTime(t, "ChargeItem", "enteredDate", element.getEnteredDateElement(), -1);
3017    for (int i = 0; i < element.getReason().size(); i++)
3018      composeCodeableConcept(t, "ChargeItem", "reason", element.getReason().get(i), i);
3019    for (int i = 0; i < element.getService().size(); i++)
3020      composeReference(t, "ChargeItem", "service", element.getService().get(i), i);
3021    if (element.hasProduct())
3022      composeType(t, "ChargeItem", "product", element.getProduct(), -1);
3023    for (int i = 0; i < element.getAccount().size(); i++)
3024      composeReference(t, "ChargeItem", "account", element.getAccount().get(i), i);
3025    for (int i = 0; i < element.getNote().size(); i++)
3026      composeAnnotation(t, "ChargeItem", "note", element.getNote().get(i), i);
3027    for (int i = 0; i < element.getSupportingInformation().size(); i++)
3028      composeReference(t, "ChargeItem", "supportingInformation", element.getSupportingInformation().get(i), i);
3029  }
3030
3031  protected void composeChargeItemChargeItemPerformerComponent(Complex parent, String parentType, String name, ChargeItem.ChargeItemPerformerComponent element, int index) {
3032    if (element == null) 
3033      return;
3034    Complex t;
3035    if (Utilities.noString(parentType))
3036      t = parent;
3037    else {
3038      t = parent.predicate("fhir:"+parentType+'.'+name);
3039    }
3040    composeBackboneElement(t, "performer", name, element, index);
3041    if (element.hasFunction())
3042      composeCodeableConcept(t, "ChargeItem", "function", element.getFunction(), -1);
3043    if (element.hasActor())
3044      composeReference(t, "ChargeItem", "actor", element.getActor(), -1);
3045  }
3046
3047  protected void composeChargeItemDefinition(Complex parent, String parentType, String name, ChargeItemDefinition element, int index) {
3048    if (element == null) 
3049      return;
3050    Complex t;
3051    if (Utilities.noString(parentType))
3052      t = parent;
3053    else {
3054      t = parent.predicate("fhir:"+parentType+'.'+name);
3055    }
3056    composeDomainResource(t, "ChargeItemDefinition", name, element, index);
3057    if (element.hasUrlElement())
3058      composeUri(t, "ChargeItemDefinition", "url", element.getUrlElement(), -1);
3059    for (int i = 0; i < element.getIdentifier().size(); i++)
3060      composeIdentifier(t, "ChargeItemDefinition", "identifier", element.getIdentifier().get(i), i);
3061    if (element.hasVersionElement())
3062      composeString(t, "ChargeItemDefinition", "version", element.getVersionElement(), -1);
3063    if (element.hasTitleElement())
3064      composeString(t, "ChargeItemDefinition", "title", element.getTitleElement(), -1);
3065    for (int i = 0; i < element.getDerivedFromUri().size(); i++)
3066      composeUri(t, "ChargeItemDefinition", "derivedFromUri", element.getDerivedFromUri().get(i), i);
3067    for (int i = 0; i < element.getPartOf().size(); i++)
3068      composeCanonical(t, "ChargeItemDefinition", "partOf", element.getPartOf().get(i), i);
3069    for (int i = 0; i < element.getReplaces().size(); i++)
3070      composeCanonical(t, "ChargeItemDefinition", "replaces", element.getReplaces().get(i), i);
3071    if (element.hasStatusElement())
3072      composeEnum(t, "ChargeItemDefinition", "status", element.getStatusElement(), -1);
3073    if (element.hasExperimentalElement())
3074      composeBoolean(t, "ChargeItemDefinition", "experimental", element.getExperimentalElement(), -1);
3075    if (element.hasDateElement())
3076      composeDateTime(t, "ChargeItemDefinition", "date", element.getDateElement(), -1);
3077    if (element.hasPublisherElement())
3078      composeString(t, "ChargeItemDefinition", "publisher", element.getPublisherElement(), -1);
3079    for (int i = 0; i < element.getContact().size(); i++)
3080      composeContactDetail(t, "ChargeItemDefinition", "contact", element.getContact().get(i), i);
3081    if (element.hasDescriptionElement())
3082      composeMarkdown(t, "ChargeItemDefinition", "description", element.getDescriptionElement(), -1);
3083    for (int i = 0; i < element.getUseContext().size(); i++)
3084      composeUsageContext(t, "ChargeItemDefinition", "useContext", element.getUseContext().get(i), i);
3085    for (int i = 0; i < element.getJurisdiction().size(); i++)
3086      composeCodeableConcept(t, "ChargeItemDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
3087    if (element.hasCopyrightElement())
3088      composeMarkdown(t, "ChargeItemDefinition", "copyright", element.getCopyrightElement(), -1);
3089    if (element.hasApprovalDateElement())
3090      composeDate(t, "ChargeItemDefinition", "approvalDate", element.getApprovalDateElement(), -1);
3091    if (element.hasLastReviewDateElement())
3092      composeDate(t, "ChargeItemDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
3093    if (element.hasEffectivePeriod())
3094      composePeriod(t, "ChargeItemDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
3095    if (element.hasCode())
3096      composeCodeableConcept(t, "ChargeItemDefinition", "code", element.getCode(), -1);
3097    for (int i = 0; i < element.getInstance().size(); i++)
3098      composeReference(t, "ChargeItemDefinition", "instance", element.getInstance().get(i), i);
3099    for (int i = 0; i < element.getApplicability().size(); i++)
3100      composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(t, "ChargeItemDefinition", "applicability", element.getApplicability().get(i), i);
3101    for (int i = 0; i < element.getPropertyGroup().size(); i++)
3102      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(t, "ChargeItemDefinition", "propertyGroup", element.getPropertyGroup().get(i), i);
3103  }
3104
3105  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(Complex parent, String parentType, String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element, int index) {
3106    if (element == null) 
3107      return;
3108    Complex t;
3109    if (Utilities.noString(parentType))
3110      t = parent;
3111    else {
3112      t = parent.predicate("fhir:"+parentType+'.'+name);
3113    }
3114    composeBackboneElement(t, "applicability", name, element, index);
3115    if (element.hasDescriptionElement())
3116      composeString(t, "ChargeItemDefinition", "description", element.getDescriptionElement(), -1);
3117    if (element.hasLanguageElement())
3118      composeString(t, "ChargeItemDefinition", "language", element.getLanguageElement(), -1);
3119    if (element.hasExpressionElement())
3120      composeString(t, "ChargeItemDefinition", "expression", element.getExpressionElement(), -1);
3121  }
3122
3123  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(Complex parent, String parentType, String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element, int index) {
3124    if (element == null) 
3125      return;
3126    Complex t;
3127    if (Utilities.noString(parentType))
3128      t = parent;
3129    else {
3130      t = parent.predicate("fhir:"+parentType+'.'+name);
3131    }
3132    composeBackboneElement(t, "propertyGroup", name, element, index);
3133    for (int i = 0; i < element.getApplicability().size(); i++)
3134      composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(t, "ChargeItemDefinition", "applicability", element.getApplicability().get(i), i);
3135    for (int i = 0; i < element.getPriceComponent().size(); i++)
3136      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(t, "ChargeItemDefinition", "priceComponent", element.getPriceComponent().get(i), i);
3137  }
3138
3139  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(Complex parent, String parentType, String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element, int index) {
3140    if (element == null) 
3141      return;
3142    Complex t;
3143    if (Utilities.noString(parentType))
3144      t = parent;
3145    else {
3146      t = parent.predicate("fhir:"+parentType+'.'+name);
3147    }
3148    composeBackboneElement(t, "priceComponent", name, element, index);
3149    if (element.hasTypeElement())
3150      composeEnum(t, "ChargeItemDefinition", "type", element.getTypeElement(), -1);
3151    if (element.hasCode())
3152      composeCodeableConcept(t, "ChargeItemDefinition", "code", element.getCode(), -1);
3153    if (element.hasFactorElement())
3154      composeDecimal(t, "ChargeItemDefinition", "factor", element.getFactorElement(), -1);
3155    if (element.hasAmount())
3156      composeMoney(t, "ChargeItemDefinition", "amount", element.getAmount(), -1);
3157  }
3158
3159  protected void composeClaim(Complex parent, String parentType, String name, Claim element, int index) {
3160    if (element == null) 
3161      return;
3162    Complex t;
3163    if (Utilities.noString(parentType))
3164      t = parent;
3165    else {
3166      t = parent.predicate("fhir:"+parentType+'.'+name);
3167    }
3168    composeDomainResource(t, "Claim", name, element, index);
3169    for (int i = 0; i < element.getIdentifier().size(); i++)
3170      composeIdentifier(t, "Claim", "identifier", element.getIdentifier().get(i), i);
3171    if (element.hasStatusElement())
3172      composeEnum(t, "Claim", "status", element.getStatusElement(), -1);
3173    if (element.hasType())
3174      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
3175    if (element.hasSubType())
3176      composeCodeableConcept(t, "Claim", "subType", element.getSubType(), -1);
3177    if (element.hasUseElement())
3178      composeEnum(t, "Claim", "use", element.getUseElement(), -1);
3179    if (element.hasPatient())
3180      composeReference(t, "Claim", "patient", element.getPatient(), -1);
3181    if (element.hasBillablePeriod())
3182      composePeriod(t, "Claim", "billablePeriod", element.getBillablePeriod(), -1);
3183    if (element.hasCreatedElement())
3184      composeDateTime(t, "Claim", "created", element.getCreatedElement(), -1);
3185    if (element.hasEnterer())
3186      composeReference(t, "Claim", "enterer", element.getEnterer(), -1);
3187    if (element.hasInsurer())
3188      composeReference(t, "Claim", "insurer", element.getInsurer(), -1);
3189    if (element.hasProvider())
3190      composeReference(t, "Claim", "provider", element.getProvider(), -1);
3191    if (element.hasPriority())
3192      composeCodeableConcept(t, "Claim", "priority", element.getPriority(), -1);
3193    if (element.hasFundsReserve())
3194      composeCodeableConcept(t, "Claim", "fundsReserve", element.getFundsReserve(), -1);
3195    for (int i = 0; i < element.getRelated().size(); i++)
3196      composeClaimRelatedClaimComponent(t, "Claim", "related", element.getRelated().get(i), i);
3197    if (element.hasPrescription())
3198      composeReference(t, "Claim", "prescription", element.getPrescription(), -1);
3199    if (element.hasOriginalPrescription())
3200      composeReference(t, "Claim", "originalPrescription", element.getOriginalPrescription(), -1);
3201    if (element.hasPayee())
3202      composeClaimPayeeComponent(t, "Claim", "payee", element.getPayee(), -1);
3203    if (element.hasReferral())
3204      composeReference(t, "Claim", "referral", element.getReferral(), -1);
3205    if (element.hasFacility())
3206      composeReference(t, "Claim", "facility", element.getFacility(), -1);
3207    for (int i = 0; i < element.getCareTeam().size(); i++)
3208      composeClaimCareTeamComponent(t, "Claim", "careTeam", element.getCareTeam().get(i), i);
3209    for (int i = 0; i < element.getSupportingInfo().size(); i++)
3210      composeClaimSupportingInformationComponent(t, "Claim", "supportingInfo", element.getSupportingInfo().get(i), i);
3211    for (int i = 0; i < element.getDiagnosis().size(); i++)
3212      composeClaimDiagnosisComponent(t, "Claim", "diagnosis", element.getDiagnosis().get(i), i);
3213    for (int i = 0; i < element.getProcedure().size(); i++)
3214      composeClaimProcedureComponent(t, "Claim", "procedure", element.getProcedure().get(i), i);
3215    for (int i = 0; i < element.getInsurance().size(); i++)
3216      composeClaimInsuranceComponent(t, "Claim", "insurance", element.getInsurance().get(i), i);
3217    if (element.hasAccident())
3218      composeClaimAccidentComponent(t, "Claim", "accident", element.getAccident(), -1);
3219    for (int i = 0; i < element.getItem().size(); i++)
3220      composeClaimItemComponent(t, "Claim", "item", element.getItem().get(i), i);
3221    if (element.hasTotal())
3222      composeMoney(t, "Claim", "total", element.getTotal(), -1);
3223  }
3224
3225  protected void composeClaimRelatedClaimComponent(Complex parent, String parentType, String name, Claim.RelatedClaimComponent element, int index) {
3226    if (element == null) 
3227      return;
3228    Complex t;
3229    if (Utilities.noString(parentType))
3230      t = parent;
3231    else {
3232      t = parent.predicate("fhir:"+parentType+'.'+name);
3233    }
3234    composeBackboneElement(t, "related", name, element, index);
3235    if (element.hasClaim())
3236      composeReference(t, "Claim", "claim", element.getClaim(), -1);
3237    if (element.hasRelationship())
3238      composeCodeableConcept(t, "Claim", "relationship", element.getRelationship(), -1);
3239    if (element.hasReference())
3240      composeIdentifier(t, "Claim", "reference", element.getReference(), -1);
3241  }
3242
3243  protected void composeClaimPayeeComponent(Complex parent, String parentType, String name, Claim.PayeeComponent element, int index) {
3244    if (element == null) 
3245      return;
3246    Complex t;
3247    if (Utilities.noString(parentType))
3248      t = parent;
3249    else {
3250      t = parent.predicate("fhir:"+parentType+'.'+name);
3251    }
3252    composeBackboneElement(t, "payee", name, element, index);
3253    if (element.hasType())
3254      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
3255    if (element.hasParty())
3256      composeReference(t, "Claim", "party", element.getParty(), -1);
3257  }
3258
3259  protected void composeClaimCareTeamComponent(Complex parent, String parentType, String name, Claim.CareTeamComponent element, int index) {
3260    if (element == null) 
3261      return;
3262    Complex t;
3263    if (Utilities.noString(parentType))
3264      t = parent;
3265    else {
3266      t = parent.predicate("fhir:"+parentType+'.'+name);
3267    }
3268    composeBackboneElement(t, "careTeam", name, element, index);
3269    if (element.hasSequenceElement())
3270      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3271    if (element.hasProvider())
3272      composeReference(t, "Claim", "provider", element.getProvider(), -1);
3273    if (element.hasResponsibleElement())
3274      composeBoolean(t, "Claim", "responsible", element.getResponsibleElement(), -1);
3275    if (element.hasRole())
3276      composeCodeableConcept(t, "Claim", "role", element.getRole(), -1);
3277    if (element.hasQualification())
3278      composeCodeableConcept(t, "Claim", "qualification", element.getQualification(), -1);
3279  }
3280
3281  protected void composeClaimSupportingInformationComponent(Complex parent, String parentType, String name, Claim.SupportingInformationComponent element, int index) {
3282    if (element == null) 
3283      return;
3284    Complex t;
3285    if (Utilities.noString(parentType))
3286      t = parent;
3287    else {
3288      t = parent.predicate("fhir:"+parentType+'.'+name);
3289    }
3290    composeBackboneElement(t, "supportingInfo", name, element, index);
3291    if (element.hasSequenceElement())
3292      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3293    if (element.hasCategory())
3294      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3295    if (element.hasCode())
3296      composeCodeableConcept(t, "Claim", "code", element.getCode(), -1);
3297    if (element.hasTiming())
3298      composeType(t, "Claim", "timing", element.getTiming(), -1);
3299    if (element.hasValue())
3300      composeType(t, "Claim", "value", element.getValue(), -1);
3301    if (element.hasReason())
3302      composeCodeableConcept(t, "Claim", "reason", element.getReason(), -1);
3303  }
3304
3305  protected void composeClaimDiagnosisComponent(Complex parent, String parentType, String name, Claim.DiagnosisComponent element, int index) {
3306    if (element == null) 
3307      return;
3308    Complex t;
3309    if (Utilities.noString(parentType))
3310      t = parent;
3311    else {
3312      t = parent.predicate("fhir:"+parentType+'.'+name);
3313    }
3314    composeBackboneElement(t, "diagnosis", name, element, index);
3315    if (element.hasSequenceElement())
3316      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3317    if (element.hasDiagnosis())
3318      composeType(t, "Claim", "diagnosis", element.getDiagnosis(), -1);
3319    for (int i = 0; i < element.getType().size(); i++)
3320      composeCodeableConcept(t, "Claim", "type", element.getType().get(i), i);
3321    if (element.hasOnAdmission())
3322      composeCodeableConcept(t, "Claim", "onAdmission", element.getOnAdmission(), -1);
3323    if (element.hasPackageCode())
3324      composeCodeableConcept(t, "Claim", "packageCode", element.getPackageCode(), -1);
3325  }
3326
3327  protected void composeClaimProcedureComponent(Complex parent, String parentType, String name, Claim.ProcedureComponent element, int index) {
3328    if (element == null) 
3329      return;
3330    Complex t;
3331    if (Utilities.noString(parentType))
3332      t = parent;
3333    else {
3334      t = parent.predicate("fhir:"+parentType+'.'+name);
3335    }
3336    composeBackboneElement(t, "procedure", name, element, index);
3337    if (element.hasSequenceElement())
3338      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3339    for (int i = 0; i < element.getType().size(); i++)
3340      composeCodeableConcept(t, "Claim", "type", element.getType().get(i), i);
3341    if (element.hasDateElement())
3342      composeDateTime(t, "Claim", "date", element.getDateElement(), -1);
3343    if (element.hasProcedure())
3344      composeType(t, "Claim", "procedure", element.getProcedure(), -1);
3345    for (int i = 0; i < element.getUdi().size(); i++)
3346      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3347  }
3348
3349  protected void composeClaimInsuranceComponent(Complex parent, String parentType, String name, Claim.InsuranceComponent element, int index) {
3350    if (element == null) 
3351      return;
3352    Complex t;
3353    if (Utilities.noString(parentType))
3354      t = parent;
3355    else {
3356      t = parent.predicate("fhir:"+parentType+'.'+name);
3357    }
3358    composeBackboneElement(t, "insurance", name, element, index);
3359    if (element.hasSequenceElement())
3360      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3361    if (element.hasFocalElement())
3362      composeBoolean(t, "Claim", "focal", element.getFocalElement(), -1);
3363    if (element.hasIdentifier())
3364      composeIdentifier(t, "Claim", "identifier", element.getIdentifier(), -1);
3365    if (element.hasCoverage())
3366      composeReference(t, "Claim", "coverage", element.getCoverage(), -1);
3367    if (element.hasBusinessArrangementElement())
3368      composeString(t, "Claim", "businessArrangement", element.getBusinessArrangementElement(), -1);
3369    for (int i = 0; i < element.getPreAuthRef().size(); i++)
3370      composeString(t, "Claim", "preAuthRef", element.getPreAuthRef().get(i), i);
3371    if (element.hasClaimResponse())
3372      composeReference(t, "Claim", "claimResponse", element.getClaimResponse(), -1);
3373  }
3374
3375  protected void composeClaimAccidentComponent(Complex parent, String parentType, String name, Claim.AccidentComponent element, int index) {
3376    if (element == null) 
3377      return;
3378    Complex t;
3379    if (Utilities.noString(parentType))
3380      t = parent;
3381    else {
3382      t = parent.predicate("fhir:"+parentType+'.'+name);
3383    }
3384    composeBackboneElement(t, "accident", name, element, index);
3385    if (element.hasDateElement())
3386      composeDate(t, "Claim", "date", element.getDateElement(), -1);
3387    if (element.hasType())
3388      composeCodeableConcept(t, "Claim", "type", element.getType(), -1);
3389    if (element.hasLocation())
3390      composeType(t, "Claim", "location", element.getLocation(), -1);
3391  }
3392
3393  protected void composeClaimItemComponent(Complex parent, String parentType, String name, Claim.ItemComponent element, int index) {
3394    if (element == null) 
3395      return;
3396    Complex t;
3397    if (Utilities.noString(parentType))
3398      t = parent;
3399    else {
3400      t = parent.predicate("fhir:"+parentType+'.'+name);
3401    }
3402    composeBackboneElement(t, "item", name, element, index);
3403    if (element.hasSequenceElement())
3404      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3405    for (int i = 0; i < element.getCareTeamSequence().size(); i++)
3406      composePositiveInt(t, "Claim", "careTeamSequence", element.getCareTeamSequence().get(i), i);
3407    for (int i = 0; i < element.getDiagnosisSequence().size(); i++)
3408      composePositiveInt(t, "Claim", "diagnosisSequence", element.getDiagnosisSequence().get(i), i);
3409    for (int i = 0; i < element.getProcedureSequence().size(); i++)
3410      composePositiveInt(t, "Claim", "procedureSequence", element.getProcedureSequence().get(i), i);
3411    for (int i = 0; i < element.getInformationSequence().size(); i++)
3412      composePositiveInt(t, "Claim", "informationSequence", element.getInformationSequence().get(i), i);
3413    if (element.hasRevenue())
3414      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3415    if (element.hasCategory())
3416      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3417    if (element.hasProductOrService())
3418      composeCodeableConcept(t, "Claim", "productOrService", element.getProductOrService(), -1);
3419    for (int i = 0; i < element.getModifier().size(); i++)
3420      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3421    for (int i = 0; i < element.getProgramCode().size(); i++)
3422      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3423    if (element.hasServiced())
3424      composeType(t, "Claim", "serviced", element.getServiced(), -1);
3425    if (element.hasLocation())
3426      composeType(t, "Claim", "location", element.getLocation(), -1);
3427    if (element.hasQuantity())
3428      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3429    if (element.hasUnitPrice())
3430      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3431    if (element.hasFactorElement())
3432      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3433    if (element.hasNet())
3434      composeMoney(t, "Claim", "net", element.getNet(), -1);
3435    for (int i = 0; i < element.getUdi().size(); i++)
3436      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3437    if (element.hasBodySite())
3438      composeCodeableConcept(t, "Claim", "bodySite", element.getBodySite(), -1);
3439    for (int i = 0; i < element.getSubSite().size(); i++)
3440      composeCodeableConcept(t, "Claim", "subSite", element.getSubSite().get(i), i);
3441    for (int i = 0; i < element.getEncounter().size(); i++)
3442      composeReference(t, "Claim", "encounter", element.getEncounter().get(i), i);
3443    for (int i = 0; i < element.getDetail().size(); i++)
3444      composeClaimDetailComponent(t, "Claim", "detail", element.getDetail().get(i), i);
3445  }
3446
3447  protected void composeClaimDetailComponent(Complex parent, String parentType, String name, Claim.DetailComponent element, int index) {
3448    if (element == null) 
3449      return;
3450    Complex t;
3451    if (Utilities.noString(parentType))
3452      t = parent;
3453    else {
3454      t = parent.predicate("fhir:"+parentType+'.'+name);
3455    }
3456    composeBackboneElement(t, "detail", name, element, index);
3457    if (element.hasSequenceElement())
3458      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3459    if (element.hasRevenue())
3460      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3461    if (element.hasCategory())
3462      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3463    if (element.hasProductOrService())
3464      composeCodeableConcept(t, "Claim", "productOrService", element.getProductOrService(), -1);
3465    for (int i = 0; i < element.getModifier().size(); i++)
3466      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3467    for (int i = 0; i < element.getProgramCode().size(); i++)
3468      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3469    if (element.hasQuantity())
3470      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3471    if (element.hasUnitPrice())
3472      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3473    if (element.hasFactorElement())
3474      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3475    if (element.hasNet())
3476      composeMoney(t, "Claim", "net", element.getNet(), -1);
3477    for (int i = 0; i < element.getUdi().size(); i++)
3478      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3479    for (int i = 0; i < element.getSubDetail().size(); i++)
3480      composeClaimSubDetailComponent(t, "Claim", "subDetail", element.getSubDetail().get(i), i);
3481  }
3482
3483  protected void composeClaimSubDetailComponent(Complex parent, String parentType, String name, Claim.SubDetailComponent element, int index) {
3484    if (element == null) 
3485      return;
3486    Complex t;
3487    if (Utilities.noString(parentType))
3488      t = parent;
3489    else {
3490      t = parent.predicate("fhir:"+parentType+'.'+name);
3491    }
3492    composeBackboneElement(t, "subDetail", name, element, index);
3493    if (element.hasSequenceElement())
3494      composePositiveInt(t, "Claim", "sequence", element.getSequenceElement(), -1);
3495    if (element.hasRevenue())
3496      composeCodeableConcept(t, "Claim", "revenue", element.getRevenue(), -1);
3497    if (element.hasCategory())
3498      composeCodeableConcept(t, "Claim", "category", element.getCategory(), -1);
3499    if (element.hasProductOrService())
3500      composeCodeableConcept(t, "Claim", "productOrService", element.getProductOrService(), -1);
3501    for (int i = 0; i < element.getModifier().size(); i++)
3502      composeCodeableConcept(t, "Claim", "modifier", element.getModifier().get(i), i);
3503    for (int i = 0; i < element.getProgramCode().size(); i++)
3504      composeCodeableConcept(t, "Claim", "programCode", element.getProgramCode().get(i), i);
3505    if (element.hasQuantity())
3506      composeQuantity(t, "Claim", "quantity", element.getQuantity(), -1);
3507    if (element.hasUnitPrice())
3508      composeMoney(t, "Claim", "unitPrice", element.getUnitPrice(), -1);
3509    if (element.hasFactorElement())
3510      composeDecimal(t, "Claim", "factor", element.getFactorElement(), -1);
3511    if (element.hasNet())
3512      composeMoney(t, "Claim", "net", element.getNet(), -1);
3513    for (int i = 0; i < element.getUdi().size(); i++)
3514      composeReference(t, "Claim", "udi", element.getUdi().get(i), i);
3515  }
3516
3517  protected void composeClaimResponse(Complex parent, String parentType, String name, ClaimResponse element, int index) {
3518    if (element == null) 
3519      return;
3520    Complex t;
3521    if (Utilities.noString(parentType))
3522      t = parent;
3523    else {
3524      t = parent.predicate("fhir:"+parentType+'.'+name);
3525    }
3526    composeDomainResource(t, "ClaimResponse", name, element, index);
3527    for (int i = 0; i < element.getIdentifier().size(); i++)
3528      composeIdentifier(t, "ClaimResponse", "identifier", element.getIdentifier().get(i), i);
3529    if (element.hasStatusElement())
3530      composeEnum(t, "ClaimResponse", "status", element.getStatusElement(), -1);
3531    if (element.hasType())
3532      composeCodeableConcept(t, "ClaimResponse", "type", element.getType(), -1);
3533    if (element.hasSubType())
3534      composeCodeableConcept(t, "ClaimResponse", "subType", element.getSubType(), -1);
3535    if (element.hasUseElement())
3536      composeEnum(t, "ClaimResponse", "use", element.getUseElement(), -1);
3537    if (element.hasPatient())
3538      composeReference(t, "ClaimResponse", "patient", element.getPatient(), -1);
3539    if (element.hasCreatedElement())
3540      composeDateTime(t, "ClaimResponse", "created", element.getCreatedElement(), -1);
3541    if (element.hasInsurer())
3542      composeReference(t, "ClaimResponse", "insurer", element.getInsurer(), -1);
3543    if (element.hasRequestor())
3544      composeReference(t, "ClaimResponse", "requestor", element.getRequestor(), -1);
3545    if (element.hasRequest())
3546      composeReference(t, "ClaimResponse", "request", element.getRequest(), -1);
3547    if (element.hasOutcomeElement())
3548      composeEnum(t, "ClaimResponse", "outcome", element.getOutcomeElement(), -1);
3549    if (element.hasDispositionElement())
3550      composeString(t, "ClaimResponse", "disposition", element.getDispositionElement(), -1);
3551    if (element.hasPreAuthRefElement())
3552      composeString(t, "ClaimResponse", "preAuthRef", element.getPreAuthRefElement(), -1);
3553    if (element.hasPreAuthPeriod())
3554      composePeriod(t, "ClaimResponse", "preAuthPeriod", element.getPreAuthPeriod(), -1);
3555    if (element.hasPayeeType())
3556      composeCodeableConcept(t, "ClaimResponse", "payeeType", element.getPayeeType(), -1);
3557    for (int i = 0; i < element.getItem().size(); i++)
3558      composeClaimResponseItemComponent(t, "ClaimResponse", "item", element.getItem().get(i), i);
3559    for (int i = 0; i < element.getAddItem().size(); i++)
3560      composeClaimResponseAddedItemComponent(t, "ClaimResponse", "addItem", element.getAddItem().get(i), i);
3561    for (int i = 0; i < element.getAdjudication().size(); i++)
3562      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3563    for (int i = 0; i < element.getTotal().size(); i++)
3564      composeClaimResponseTotalComponent(t, "ClaimResponse", "total", element.getTotal().get(i), i);
3565    if (element.hasPayment())
3566      composeClaimResponsePaymentComponent(t, "ClaimResponse", "payment", element.getPayment(), -1);
3567    if (element.hasFundsReserve())
3568      composeCodeableConcept(t, "ClaimResponse", "fundsReserve", element.getFundsReserve(), -1);
3569    if (element.hasFormCode())
3570      composeCodeableConcept(t, "ClaimResponse", "formCode", element.getFormCode(), -1);
3571    if (element.hasForm())
3572      composeAttachment(t, "ClaimResponse", "form", element.getForm(), -1);
3573    for (int i = 0; i < element.getProcessNote().size(); i++)
3574      composeClaimResponseNoteComponent(t, "ClaimResponse", "processNote", element.getProcessNote().get(i), i);
3575    for (int i = 0; i < element.getCommunicationRequest().size(); i++)
3576      composeReference(t, "ClaimResponse", "communicationRequest", element.getCommunicationRequest().get(i), i);
3577    for (int i = 0; i < element.getInsurance().size(); i++)
3578      composeClaimResponseInsuranceComponent(t, "ClaimResponse", "insurance", element.getInsurance().get(i), i);
3579    for (int i = 0; i < element.getError().size(); i++)
3580      composeClaimResponseErrorComponent(t, "ClaimResponse", "error", element.getError().get(i), i);
3581  }
3582
3583  protected void composeClaimResponseItemComponent(Complex parent, String parentType, String name, ClaimResponse.ItemComponent element, int index) {
3584    if (element == null) 
3585      return;
3586    Complex t;
3587    if (Utilities.noString(parentType))
3588      t = parent;
3589    else {
3590      t = parent.predicate("fhir:"+parentType+'.'+name);
3591    }
3592    composeBackboneElement(t, "item", name, element, index);
3593    if (element.hasItemSequenceElement())
3594      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequenceElement(), -1);
3595    for (int i = 0; i < element.getNoteNumber().size(); i++)
3596      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3597    for (int i = 0; i < element.getAdjudication().size(); i++)
3598      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3599    for (int i = 0; i < element.getDetail().size(); i++)
3600      composeClaimResponseItemDetailComponent(t, "ClaimResponse", "detail", element.getDetail().get(i), i);
3601  }
3602
3603  protected void composeClaimResponseAdjudicationComponent(Complex parent, String parentType, String name, ClaimResponse.AdjudicationComponent element, int index) {
3604    if (element == null) 
3605      return;
3606    Complex t;
3607    if (Utilities.noString(parentType))
3608      t = parent;
3609    else {
3610      t = parent.predicate("fhir:"+parentType+'.'+name);
3611    }
3612    composeBackboneElement(t, "adjudication", name, element, index);
3613    if (element.hasCategory())
3614      composeCodeableConcept(t, "ClaimResponse", "category", element.getCategory(), -1);
3615    if (element.hasReason())
3616      composeCodeableConcept(t, "ClaimResponse", "reason", element.getReason(), -1);
3617    if (element.hasAmount())
3618      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3619    if (element.hasValueElement())
3620      composeDecimal(t, "ClaimResponse", "value", element.getValueElement(), -1);
3621  }
3622
3623  protected void composeClaimResponseItemDetailComponent(Complex parent, String parentType, String name, ClaimResponse.ItemDetailComponent element, int index) {
3624    if (element == null) 
3625      return;
3626    Complex t;
3627    if (Utilities.noString(parentType))
3628      t = parent;
3629    else {
3630      t = parent.predicate("fhir:"+parentType+'.'+name);
3631    }
3632    composeBackboneElement(t, "detail", name, element, index);
3633    if (element.hasDetailSequenceElement())
3634      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequenceElement(), -1);
3635    for (int i = 0; i < element.getNoteNumber().size(); i++)
3636      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3637    for (int i = 0; i < element.getAdjudication().size(); i++)
3638      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3639    for (int i = 0; i < element.getSubDetail().size(); i++)
3640      composeClaimResponseSubDetailComponent(t, "ClaimResponse", "subDetail", element.getSubDetail().get(i), i);
3641  }
3642
3643  protected void composeClaimResponseSubDetailComponent(Complex parent, String parentType, String name, ClaimResponse.SubDetailComponent element, int index) {
3644    if (element == null) 
3645      return;
3646    Complex t;
3647    if (Utilities.noString(parentType))
3648      t = parent;
3649    else {
3650      t = parent.predicate("fhir:"+parentType+'.'+name);
3651    }
3652    composeBackboneElement(t, "subDetail", name, element, index);
3653    if (element.hasSubDetailSequenceElement())
3654      composePositiveInt(t, "ClaimResponse", "subDetailSequence", element.getSubDetailSequenceElement(), -1);
3655    for (int i = 0; i < element.getNoteNumber().size(); i++)
3656      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3657    for (int i = 0; i < element.getAdjudication().size(); i++)
3658      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3659  }
3660
3661  protected void composeClaimResponseAddedItemComponent(Complex parent, String parentType, String name, ClaimResponse.AddedItemComponent element, int index) {
3662    if (element == null) 
3663      return;
3664    Complex t;
3665    if (Utilities.noString(parentType))
3666      t = parent;
3667    else {
3668      t = parent.predicate("fhir:"+parentType+'.'+name);
3669    }
3670    composeBackboneElement(t, "addItem", name, element, index);
3671    for (int i = 0; i < element.getItemSequence().size(); i++)
3672      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequence().get(i), i);
3673    for (int i = 0; i < element.getDetailSequence().size(); i++)
3674      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequence().get(i), i);
3675    for (int i = 0; i < element.getSubdetailSequence().size(); i++)
3676      composePositiveInt(t, "ClaimResponse", "subdetailSequence", element.getSubdetailSequence().get(i), i);
3677    for (int i = 0; i < element.getProvider().size(); i++)
3678      composeReference(t, "ClaimResponse", "provider", element.getProvider().get(i), i);
3679    if (element.hasProductOrService())
3680      composeCodeableConcept(t, "ClaimResponse", "productOrService", element.getProductOrService(), -1);
3681    for (int i = 0; i < element.getModifier().size(); i++)
3682      composeCodeableConcept(t, "ClaimResponse", "modifier", element.getModifier().get(i), i);
3683    for (int i = 0; i < element.getProgramCode().size(); i++)
3684      composeCodeableConcept(t, "ClaimResponse", "programCode", element.getProgramCode().get(i), i);
3685    if (element.hasServiced())
3686      composeType(t, "ClaimResponse", "serviced", element.getServiced(), -1);
3687    if (element.hasLocation())
3688      composeType(t, "ClaimResponse", "location", element.getLocation(), -1);
3689    if (element.hasQuantity())
3690      composeQuantity(t, "ClaimResponse", "quantity", element.getQuantity(), -1);
3691    if (element.hasUnitPrice())
3692      composeMoney(t, "ClaimResponse", "unitPrice", element.getUnitPrice(), -1);
3693    if (element.hasFactorElement())
3694      composeDecimal(t, "ClaimResponse", "factor", element.getFactorElement(), -1);
3695    if (element.hasNet())
3696      composeMoney(t, "ClaimResponse", "net", element.getNet(), -1);
3697    if (element.hasBodySite())
3698      composeCodeableConcept(t, "ClaimResponse", "bodySite", element.getBodySite(), -1);
3699    for (int i = 0; i < element.getSubSite().size(); i++)
3700      composeCodeableConcept(t, "ClaimResponse", "subSite", element.getSubSite().get(i), i);
3701    for (int i = 0; i < element.getNoteNumber().size(); i++)
3702      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3703    for (int i = 0; i < element.getAdjudication().size(); i++)
3704      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3705    for (int i = 0; i < element.getDetail().size(); i++)
3706      composeClaimResponseAddedItemDetailComponent(t, "ClaimResponse", "detail", element.getDetail().get(i), i);
3707  }
3708
3709  protected void composeClaimResponseAddedItemDetailComponent(Complex parent, String parentType, String name, ClaimResponse.AddedItemDetailComponent element, int index) {
3710    if (element == null) 
3711      return;
3712    Complex t;
3713    if (Utilities.noString(parentType))
3714      t = parent;
3715    else {
3716      t = parent.predicate("fhir:"+parentType+'.'+name);
3717    }
3718    composeBackboneElement(t, "detail", name, element, index);
3719    if (element.hasProductOrService())
3720      composeCodeableConcept(t, "ClaimResponse", "productOrService", element.getProductOrService(), -1);
3721    for (int i = 0; i < element.getModifier().size(); i++)
3722      composeCodeableConcept(t, "ClaimResponse", "modifier", element.getModifier().get(i), i);
3723    if (element.hasQuantity())
3724      composeQuantity(t, "ClaimResponse", "quantity", element.getQuantity(), -1);
3725    if (element.hasUnitPrice())
3726      composeMoney(t, "ClaimResponse", "unitPrice", element.getUnitPrice(), -1);
3727    if (element.hasFactorElement())
3728      composeDecimal(t, "ClaimResponse", "factor", element.getFactorElement(), -1);
3729    if (element.hasNet())
3730      composeMoney(t, "ClaimResponse", "net", element.getNet(), -1);
3731    for (int i = 0; i < element.getNoteNumber().size(); i++)
3732      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3733    for (int i = 0; i < element.getAdjudication().size(); i++)
3734      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3735    for (int i = 0; i < element.getSubDetail().size(); i++)
3736      composeClaimResponseAddedItemSubDetailComponent(t, "ClaimResponse", "subDetail", element.getSubDetail().get(i), i);
3737  }
3738
3739  protected void composeClaimResponseAddedItemSubDetailComponent(Complex parent, String parentType, String name, ClaimResponse.AddedItemSubDetailComponent element, int index) {
3740    if (element == null) 
3741      return;
3742    Complex t;
3743    if (Utilities.noString(parentType))
3744      t = parent;
3745    else {
3746      t = parent.predicate("fhir:"+parentType+'.'+name);
3747    }
3748    composeBackboneElement(t, "subDetail", name, element, index);
3749    if (element.hasProductOrService())
3750      composeCodeableConcept(t, "ClaimResponse", "productOrService", element.getProductOrService(), -1);
3751    for (int i = 0; i < element.getModifier().size(); i++)
3752      composeCodeableConcept(t, "ClaimResponse", "modifier", element.getModifier().get(i), i);
3753    if (element.hasQuantity())
3754      composeQuantity(t, "ClaimResponse", "quantity", element.getQuantity(), -1);
3755    if (element.hasUnitPrice())
3756      composeMoney(t, "ClaimResponse", "unitPrice", element.getUnitPrice(), -1);
3757    if (element.hasFactorElement())
3758      composeDecimal(t, "ClaimResponse", "factor", element.getFactorElement(), -1);
3759    if (element.hasNet())
3760      composeMoney(t, "ClaimResponse", "net", element.getNet(), -1);
3761    for (int i = 0; i < element.getNoteNumber().size(); i++)
3762      composePositiveInt(t, "ClaimResponse", "noteNumber", element.getNoteNumber().get(i), i);
3763    for (int i = 0; i < element.getAdjudication().size(); i++)
3764      composeClaimResponseAdjudicationComponent(t, "ClaimResponse", "adjudication", element.getAdjudication().get(i), i);
3765  }
3766
3767  protected void composeClaimResponseTotalComponent(Complex parent, String parentType, String name, ClaimResponse.TotalComponent element, int index) {
3768    if (element == null) 
3769      return;
3770    Complex t;
3771    if (Utilities.noString(parentType))
3772      t = parent;
3773    else {
3774      t = parent.predicate("fhir:"+parentType+'.'+name);
3775    }
3776    composeBackboneElement(t, "total", name, element, index);
3777    if (element.hasCategory())
3778      composeCodeableConcept(t, "ClaimResponse", "category", element.getCategory(), -1);
3779    if (element.hasAmount())
3780      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3781  }
3782
3783  protected void composeClaimResponsePaymentComponent(Complex parent, String parentType, String name, ClaimResponse.PaymentComponent element, int index) {
3784    if (element == null) 
3785      return;
3786    Complex t;
3787    if (Utilities.noString(parentType))
3788      t = parent;
3789    else {
3790      t = parent.predicate("fhir:"+parentType+'.'+name);
3791    }
3792    composeBackboneElement(t, "payment", name, element, index);
3793    if (element.hasType())
3794      composeCodeableConcept(t, "ClaimResponse", "type", element.getType(), -1);
3795    if (element.hasAdjustment())
3796      composeMoney(t, "ClaimResponse", "adjustment", element.getAdjustment(), -1);
3797    if (element.hasAdjustmentReason())
3798      composeCodeableConcept(t, "ClaimResponse", "adjustmentReason", element.getAdjustmentReason(), -1);
3799    if (element.hasDateElement())
3800      composeDate(t, "ClaimResponse", "date", element.getDateElement(), -1);
3801    if (element.hasAmount())
3802      composeMoney(t, "ClaimResponse", "amount", element.getAmount(), -1);
3803    if (element.hasIdentifier())
3804      composeIdentifier(t, "ClaimResponse", "identifier", element.getIdentifier(), -1);
3805  }
3806
3807  protected void composeClaimResponseNoteComponent(Complex parent, String parentType, String name, ClaimResponse.NoteComponent element, int index) {
3808    if (element == null) 
3809      return;
3810    Complex t;
3811    if (Utilities.noString(parentType))
3812      t = parent;
3813    else {
3814      t = parent.predicate("fhir:"+parentType+'.'+name);
3815    }
3816    composeBackboneElement(t, "processNote", name, element, index);
3817    if (element.hasNumberElement())
3818      composePositiveInt(t, "ClaimResponse", "number", element.getNumberElement(), -1);
3819    if (element.hasTypeElement())
3820      composeEnum(t, "ClaimResponse", "type", element.getTypeElement(), -1);
3821    if (element.hasTextElement())
3822      composeString(t, "ClaimResponse", "text", element.getTextElement(), -1);
3823    if (element.hasLanguage())
3824      composeCodeableConcept(t, "ClaimResponse", "language", element.getLanguage(), -1);
3825  }
3826
3827  protected void composeClaimResponseInsuranceComponent(Complex parent, String parentType, String name, ClaimResponse.InsuranceComponent element, int index) {
3828    if (element == null) 
3829      return;
3830    Complex t;
3831    if (Utilities.noString(parentType))
3832      t = parent;
3833    else {
3834      t = parent.predicate("fhir:"+parentType+'.'+name);
3835    }
3836    composeBackboneElement(t, "insurance", name, element, index);
3837    if (element.hasSequenceElement())
3838      composePositiveInt(t, "ClaimResponse", "sequence", element.getSequenceElement(), -1);
3839    if (element.hasFocalElement())
3840      composeBoolean(t, "ClaimResponse", "focal", element.getFocalElement(), -1);
3841    if (element.hasCoverage())
3842      composeReference(t, "ClaimResponse", "coverage", element.getCoverage(), -1);
3843    if (element.hasBusinessArrangementElement())
3844      composeString(t, "ClaimResponse", "businessArrangement", element.getBusinessArrangementElement(), -1);
3845    if (element.hasClaimResponse())
3846      composeReference(t, "ClaimResponse", "claimResponse", element.getClaimResponse(), -1);
3847  }
3848
3849  protected void composeClaimResponseErrorComponent(Complex parent, String parentType, String name, ClaimResponse.ErrorComponent element, int index) {
3850    if (element == null) 
3851      return;
3852    Complex t;
3853    if (Utilities.noString(parentType))
3854      t = parent;
3855    else {
3856      t = parent.predicate("fhir:"+parentType+'.'+name);
3857    }
3858    composeBackboneElement(t, "error", name, element, index);
3859    if (element.hasItemSequenceElement())
3860      composePositiveInt(t, "ClaimResponse", "itemSequence", element.getItemSequenceElement(), -1);
3861    if (element.hasDetailSequenceElement())
3862      composePositiveInt(t, "ClaimResponse", "detailSequence", element.getDetailSequenceElement(), -1);
3863    if (element.hasSubDetailSequenceElement())
3864      composePositiveInt(t, "ClaimResponse", "subDetailSequence", element.getSubDetailSequenceElement(), -1);
3865    if (element.hasCode())
3866      composeCodeableConcept(t, "ClaimResponse", "code", element.getCode(), -1);
3867  }
3868
3869  protected void composeClinicalImpression(Complex parent, String parentType, String name, ClinicalImpression element, int index) {
3870    if (element == null) 
3871      return;
3872    Complex t;
3873    if (Utilities.noString(parentType))
3874      t = parent;
3875    else {
3876      t = parent.predicate("fhir:"+parentType+'.'+name);
3877    }
3878    composeDomainResource(t, "ClinicalImpression", name, element, index);
3879    for (int i = 0; i < element.getIdentifier().size(); i++)
3880      composeIdentifier(t, "ClinicalImpression", "identifier", element.getIdentifier().get(i), i);
3881    if (element.hasStatusElement())
3882      composeEnum(t, "ClinicalImpression", "status", element.getStatusElement(), -1);
3883    if (element.hasStatusReason())
3884      composeCodeableConcept(t, "ClinicalImpression", "statusReason", element.getStatusReason(), -1);
3885    if (element.hasCode())
3886      composeCodeableConcept(t, "ClinicalImpression", "code", element.getCode(), -1);
3887    if (element.hasDescriptionElement())
3888      composeString(t, "ClinicalImpression", "description", element.getDescriptionElement(), -1);
3889    if (element.hasSubject())
3890      composeReference(t, "ClinicalImpression", "subject", element.getSubject(), -1);
3891    if (element.hasEncounter())
3892      composeReference(t, "ClinicalImpression", "encounter", element.getEncounter(), -1);
3893    if (element.hasEffective())
3894      composeType(t, "ClinicalImpression", "effective", element.getEffective(), -1);
3895    if (element.hasDateElement())
3896      composeDateTime(t, "ClinicalImpression", "date", element.getDateElement(), -1);
3897    if (element.hasAssessor())
3898      composeReference(t, "ClinicalImpression", "assessor", element.getAssessor(), -1);
3899    if (element.hasPrevious())
3900      composeReference(t, "ClinicalImpression", "previous", element.getPrevious(), -1);
3901    for (int i = 0; i < element.getProblem().size(); i++)
3902      composeReference(t, "ClinicalImpression", "problem", element.getProblem().get(i), i);
3903    for (int i = 0; i < element.getInvestigation().size(); i++)
3904      composeClinicalImpressionClinicalImpressionInvestigationComponent(t, "ClinicalImpression", "investigation", element.getInvestigation().get(i), i);
3905    for (int i = 0; i < element.getProtocol().size(); i++)
3906      composeUri(t, "ClinicalImpression", "protocol", element.getProtocol().get(i), i);
3907    if (element.hasSummaryElement())
3908      composeString(t, "ClinicalImpression", "summary", element.getSummaryElement(), -1);
3909    for (int i = 0; i < element.getFinding().size(); i++)
3910      composeClinicalImpressionClinicalImpressionFindingComponent(t, "ClinicalImpression", "finding", element.getFinding().get(i), i);
3911    for (int i = 0; i < element.getPrognosisCodeableConcept().size(); i++)
3912      composeCodeableConcept(t, "ClinicalImpression", "prognosisCodeableConcept", element.getPrognosisCodeableConcept().get(i), i);
3913    for (int i = 0; i < element.getPrognosisReference().size(); i++)
3914      composeReference(t, "ClinicalImpression", "prognosisReference", element.getPrognosisReference().get(i), i);
3915    for (int i = 0; i < element.getSupportingInfo().size(); i++)
3916      composeReference(t, "ClinicalImpression", "supportingInfo", element.getSupportingInfo().get(i), i);
3917    for (int i = 0; i < element.getNote().size(); i++)
3918      composeAnnotation(t, "ClinicalImpression", "note", element.getNote().get(i), i);
3919  }
3920
3921  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(Complex parent, String parentType, String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element, int index) {
3922    if (element == null) 
3923      return;
3924    Complex t;
3925    if (Utilities.noString(parentType))
3926      t = parent;
3927    else {
3928      t = parent.predicate("fhir:"+parentType+'.'+name);
3929    }
3930    composeBackboneElement(t, "investigation", name, element, index);
3931    if (element.hasCode())
3932      composeCodeableConcept(t, "ClinicalImpression", "code", element.getCode(), -1);
3933    for (int i = 0; i < element.getItem().size(); i++)
3934      composeReference(t, "ClinicalImpression", "item", element.getItem().get(i), i);
3935  }
3936
3937  protected void composeClinicalImpressionClinicalImpressionFindingComponent(Complex parent, String parentType, String name, ClinicalImpression.ClinicalImpressionFindingComponent element, int index) {
3938    if (element == null) 
3939      return;
3940    Complex t;
3941    if (Utilities.noString(parentType))
3942      t = parent;
3943    else {
3944      t = parent.predicate("fhir:"+parentType+'.'+name);
3945    }
3946    composeBackboneElement(t, "finding", name, element, index);
3947    if (element.hasItemCodeableConcept())
3948      composeCodeableConcept(t, "ClinicalImpression", "itemCodeableConcept", element.getItemCodeableConcept(), -1);
3949    if (element.hasItemReference())
3950      composeReference(t, "ClinicalImpression", "itemReference", element.getItemReference(), -1);
3951    if (element.hasBasisElement())
3952      composeString(t, "ClinicalImpression", "basis", element.getBasisElement(), -1);
3953  }
3954
3955  protected void composeCodeSystem(Complex parent, String parentType, String name, CodeSystem element, int index) {
3956    if (element == null) 
3957      return;
3958    Complex t;
3959    if (Utilities.noString(parentType))
3960      t = parent;
3961    else {
3962      t = parent.predicate("fhir:"+parentType+'.'+name);
3963    }
3964    composeDomainResource(t, "CodeSystem", name, element, index);
3965    if (element.hasUrlElement())
3966      composeUri(t, "CodeSystem", "url", element.getUrlElement(), -1);
3967    for (int i = 0; i < element.getIdentifier().size(); i++)
3968      composeIdentifier(t, "CodeSystem", "identifier", element.getIdentifier().get(i), i);
3969    if (element.hasVersionElement())
3970      composeString(t, "CodeSystem", "version", element.getVersionElement(), -1);
3971    if (element.hasNameElement())
3972      composeString(t, "CodeSystem", "name", element.getNameElement(), -1);
3973    if (element.hasTitleElement())
3974      composeString(t, "CodeSystem", "title", element.getTitleElement(), -1);
3975    if (element.hasStatusElement())
3976      composeEnum(t, "CodeSystem", "status", element.getStatusElement(), -1);
3977    if (element.hasExperimentalElement())
3978      composeBoolean(t, "CodeSystem", "experimental", element.getExperimentalElement(), -1);
3979    if (element.hasDateElement())
3980      composeDateTime(t, "CodeSystem", "date", element.getDateElement(), -1);
3981    if (element.hasPublisherElement())
3982      composeString(t, "CodeSystem", "publisher", element.getPublisherElement(), -1);
3983    for (int i = 0; i < element.getContact().size(); i++)
3984      composeContactDetail(t, "CodeSystem", "contact", element.getContact().get(i), i);
3985    if (element.hasDescriptionElement())
3986      composeMarkdown(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
3987    for (int i = 0; i < element.getUseContext().size(); i++)
3988      composeUsageContext(t, "CodeSystem", "useContext", element.getUseContext().get(i), i);
3989    for (int i = 0; i < element.getJurisdiction().size(); i++)
3990      composeCodeableConcept(t, "CodeSystem", "jurisdiction", element.getJurisdiction().get(i), i);
3991    if (element.hasPurposeElement())
3992      composeMarkdown(t, "CodeSystem", "purpose", element.getPurposeElement(), -1);
3993    if (element.hasCopyrightElement())
3994      composeMarkdown(t, "CodeSystem", "copyright", element.getCopyrightElement(), -1);
3995    if (element.hasCaseSensitiveElement())
3996      composeBoolean(t, "CodeSystem", "caseSensitive", element.getCaseSensitiveElement(), -1);
3997    if (element.hasValueSetElement())
3998      composeCanonical(t, "CodeSystem", "valueSet", element.getValueSetElement(), -1);
3999    if (element.hasHierarchyMeaningElement())
4000      composeEnum(t, "CodeSystem", "hierarchyMeaning", element.getHierarchyMeaningElement(), -1);
4001    if (element.hasCompositionalElement())
4002      composeBoolean(t, "CodeSystem", "compositional", element.getCompositionalElement(), -1);
4003    if (element.hasVersionNeededElement())
4004      composeBoolean(t, "CodeSystem", "versionNeeded", element.getVersionNeededElement(), -1);
4005    if (element.hasContentElement())
4006      composeEnum(t, "CodeSystem", "content", element.getContentElement(), -1);
4007    if (element.hasSupplementsElement())
4008      composeCanonical(t, "CodeSystem", "supplements", element.getSupplementsElement(), -1);
4009    if (element.hasCountElement())
4010      composeUnsignedInt(t, "CodeSystem", "count", element.getCountElement(), -1);
4011    for (int i = 0; i < element.getFilter().size(); i++)
4012      composeCodeSystemCodeSystemFilterComponent(t, "CodeSystem", "filter", element.getFilter().get(i), i);
4013    for (int i = 0; i < element.getProperty().size(); i++)
4014      composeCodeSystemPropertyComponent(t, "CodeSystem", "property", element.getProperty().get(i), i);
4015    for (int i = 0; i < element.getConcept().size(); i++)
4016      composeCodeSystemConceptDefinitionComponent(t, "CodeSystem", "concept", element.getConcept().get(i), i);
4017  }
4018
4019  protected void composeCodeSystemCodeSystemFilterComponent(Complex parent, String parentType, String name, CodeSystem.CodeSystemFilterComponent element, int index) {
4020    if (element == null) 
4021      return;
4022    Complex t;
4023    if (Utilities.noString(parentType))
4024      t = parent;
4025    else {
4026      t = parent.predicate("fhir:"+parentType+'.'+name);
4027    }
4028    composeBackboneElement(t, "filter", name, element, index);
4029    if (element.hasCodeElement())
4030      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
4031    if (element.hasDescriptionElement())
4032      composeString(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
4033    for (int i = 0; i < element.getOperator().size(); i++)
4034      composeEnum(t, "CodeSystem", "operator", element.getOperator().get(i), i);
4035    if (element.hasValueElement())
4036      composeString(t, "CodeSystem", "value", element.getValueElement(), -1);
4037  }
4038
4039  protected void composeCodeSystemPropertyComponent(Complex parent, String parentType, String name, CodeSystem.PropertyComponent element, int index) {
4040    if (element == null) 
4041      return;
4042    Complex t;
4043    if (Utilities.noString(parentType))
4044      t = parent;
4045    else {
4046      t = parent.predicate("fhir:"+parentType+'.'+name);
4047    }
4048    composeBackboneElement(t, "property", name, element, index);
4049    if (element.hasCodeElement())
4050      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
4051    if (element.hasUriElement())
4052      composeUri(t, "CodeSystem", "uri", element.getUriElement(), -1);
4053    if (element.hasDescriptionElement())
4054      composeString(t, "CodeSystem", "description", element.getDescriptionElement(), -1);
4055    if (element.hasTypeElement())
4056      composeEnum(t, "CodeSystem", "type", element.getTypeElement(), -1);
4057  }
4058
4059  protected void composeCodeSystemConceptDefinitionComponent(Complex parent, String parentType, String name, CodeSystem.ConceptDefinitionComponent element, int index) {
4060    if (element == null) 
4061      return;
4062    Complex t;
4063    if (Utilities.noString(parentType))
4064      t = parent;
4065    else {
4066      t = parent.predicate("fhir:"+parentType+'.'+name);
4067    }
4068    composeBackboneElement(t, "concept", name, element, index);
4069    if (element.hasCodeElement())
4070      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
4071    if (element.hasDisplayElement())
4072      composeString(t, "CodeSystem", "display", element.getDisplayElement(), -1);
4073    if (element.hasDefinitionElement())
4074      composeString(t, "CodeSystem", "definition", element.getDefinitionElement(), -1);
4075    for (int i = 0; i < element.getDesignation().size(); i++)
4076      composeCodeSystemConceptDefinitionDesignationComponent(t, "CodeSystem", "designation", element.getDesignation().get(i), i);
4077    for (int i = 0; i < element.getProperty().size(); i++)
4078      composeCodeSystemConceptPropertyComponent(t, "CodeSystem", "property", element.getProperty().get(i), i);
4079    for (int i = 0; i < element.getConcept().size(); i++)
4080      composeCodeSystemConceptDefinitionComponent(t, "CodeSystem", "concept", element.getConcept().get(i), i);
4081  }
4082
4083  protected void composeCodeSystemConceptDefinitionDesignationComponent(Complex parent, String parentType, String name, CodeSystem.ConceptDefinitionDesignationComponent element, int index) {
4084    if (element == null) 
4085      return;
4086    Complex t;
4087    if (Utilities.noString(parentType))
4088      t = parent;
4089    else {
4090      t = parent.predicate("fhir:"+parentType+'.'+name);
4091    }
4092    composeBackboneElement(t, "designation", name, element, index);
4093    if (element.hasLanguageElement())
4094      composeCode(t, "CodeSystem", "language", element.getLanguageElement(), -1);
4095    if (element.hasUse())
4096      composeCoding(t, "CodeSystem", "use", element.getUse(), -1);
4097    if (element.hasValueElement())
4098      composeString(t, "CodeSystem", "value", element.getValueElement(), -1);
4099  }
4100
4101  protected void composeCodeSystemConceptPropertyComponent(Complex parent, String parentType, String name, CodeSystem.ConceptPropertyComponent element, int index) {
4102    if (element == null) 
4103      return;
4104    Complex t;
4105    if (Utilities.noString(parentType))
4106      t = parent;
4107    else {
4108      t = parent.predicate("fhir:"+parentType+'.'+name);
4109    }
4110    composeBackboneElement(t, "property", name, element, index);
4111    if (element.hasCodeElement())
4112      composeCode(t, "CodeSystem", "code", element.getCodeElement(), -1);
4113    if (element.hasValue())
4114      composeType(t, "CodeSystem", "value", element.getValue(), -1);
4115  }
4116
4117  protected void composeCommunication(Complex parent, String parentType, String name, Communication element, int index) {
4118    if (element == null) 
4119      return;
4120    Complex t;
4121    if (Utilities.noString(parentType))
4122      t = parent;
4123    else {
4124      t = parent.predicate("fhir:"+parentType+'.'+name);
4125    }
4126    composeDomainResource(t, "Communication", name, element, index);
4127    for (int i = 0; i < element.getIdentifier().size(); i++)
4128      composeIdentifier(t, "Communication", "identifier", element.getIdentifier().get(i), i);
4129    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
4130      composeCanonical(t, "Communication", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
4131    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
4132      composeUri(t, "Communication", "instantiatesUri", element.getInstantiatesUri().get(i), i);
4133    for (int i = 0; i < element.getBasedOn().size(); i++)
4134      composeReference(t, "Communication", "basedOn", element.getBasedOn().get(i), i);
4135    for (int i = 0; i < element.getPartOf().size(); i++)
4136      composeReference(t, "Communication", "partOf", element.getPartOf().get(i), i);
4137    for (int i = 0; i < element.getInResponseTo().size(); i++)
4138      composeReference(t, "Communication", "inResponseTo", element.getInResponseTo().get(i), i);
4139    if (element.hasStatusElement())
4140      composeEnum(t, "Communication", "status", element.getStatusElement(), -1);
4141    if (element.hasStatusReason())
4142      composeCodeableConcept(t, "Communication", "statusReason", element.getStatusReason(), -1);
4143    for (int i = 0; i < element.getCategory().size(); i++)
4144      composeCodeableConcept(t, "Communication", "category", element.getCategory().get(i), i);
4145    if (element.hasPriorityElement())
4146      composeEnum(t, "Communication", "priority", element.getPriorityElement(), -1);
4147    for (int i = 0; i < element.getMedium().size(); i++)
4148      composeCodeableConcept(t, "Communication", "medium", element.getMedium().get(i), i);
4149    if (element.hasSubject())
4150      composeReference(t, "Communication", "subject", element.getSubject(), -1);
4151    if (element.hasTopic())
4152      composeCodeableConcept(t, "Communication", "topic", element.getTopic(), -1);
4153    for (int i = 0; i < element.getAbout().size(); i++)
4154      composeReference(t, "Communication", "about", element.getAbout().get(i), i);
4155    if (element.hasEncounter())
4156      composeReference(t, "Communication", "encounter", element.getEncounter(), -1);
4157    if (element.hasSentElement())
4158      composeDateTime(t, "Communication", "sent", element.getSentElement(), -1);
4159    if (element.hasReceivedElement())
4160      composeDateTime(t, "Communication", "received", element.getReceivedElement(), -1);
4161    for (int i = 0; i < element.getRecipient().size(); i++)
4162      composeReference(t, "Communication", "recipient", element.getRecipient().get(i), i);
4163    if (element.hasSender())
4164      composeReference(t, "Communication", "sender", element.getSender(), -1);
4165    for (int i = 0; i < element.getReasonCode().size(); i++)
4166      composeCodeableConcept(t, "Communication", "reasonCode", element.getReasonCode().get(i), i);
4167    for (int i = 0; i < element.getReasonReference().size(); i++)
4168      composeReference(t, "Communication", "reasonReference", element.getReasonReference().get(i), i);
4169    for (int i = 0; i < element.getPayload().size(); i++)
4170      composeCommunicationCommunicationPayloadComponent(t, "Communication", "payload", element.getPayload().get(i), i);
4171    for (int i = 0; i < element.getNote().size(); i++)
4172      composeAnnotation(t, "Communication", "note", element.getNote().get(i), i);
4173  }
4174
4175  protected void composeCommunicationCommunicationPayloadComponent(Complex parent, String parentType, String name, Communication.CommunicationPayloadComponent element, int index) {
4176    if (element == null) 
4177      return;
4178    Complex t;
4179    if (Utilities.noString(parentType))
4180      t = parent;
4181    else {
4182      t = parent.predicate("fhir:"+parentType+'.'+name);
4183    }
4184    composeBackboneElement(t, "payload", name, element, index);
4185    if (element.hasContent())
4186      composeType(t, "Communication", "content", element.getContent(), -1);
4187  }
4188
4189  protected void composeCommunicationRequest(Complex parent, String parentType, String name, CommunicationRequest element, int index) {
4190    if (element == null) 
4191      return;
4192    Complex t;
4193    if (Utilities.noString(parentType))
4194      t = parent;
4195    else {
4196      t = parent.predicate("fhir:"+parentType+'.'+name);
4197    }
4198    composeDomainResource(t, "CommunicationRequest", name, element, index);
4199    for (int i = 0; i < element.getIdentifier().size(); i++)
4200      composeIdentifier(t, "CommunicationRequest", "identifier", element.getIdentifier().get(i), i);
4201    for (int i = 0; i < element.getBasedOn().size(); i++)
4202      composeReference(t, "CommunicationRequest", "basedOn", element.getBasedOn().get(i), i);
4203    for (int i = 0; i < element.getReplaces().size(); i++)
4204      composeReference(t, "CommunicationRequest", "replaces", element.getReplaces().get(i), i);
4205    if (element.hasGroupIdentifier())
4206      composeIdentifier(t, "CommunicationRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
4207    if (element.hasStatusElement())
4208      composeEnum(t, "CommunicationRequest", "status", element.getStatusElement(), -1);
4209    if (element.hasStatusReason())
4210      composeCodeableConcept(t, "CommunicationRequest", "statusReason", element.getStatusReason(), -1);
4211    for (int i = 0; i < element.getCategory().size(); i++)
4212      composeCodeableConcept(t, "CommunicationRequest", "category", element.getCategory().get(i), i);
4213    if (element.hasPriorityElement())
4214      composeEnum(t, "CommunicationRequest", "priority", element.getPriorityElement(), -1);
4215    if (element.hasDoNotPerformElement())
4216      composeBoolean(t, "CommunicationRequest", "doNotPerform", element.getDoNotPerformElement(), -1);
4217    for (int i = 0; i < element.getMedium().size(); i++)
4218      composeCodeableConcept(t, "CommunicationRequest", "medium", element.getMedium().get(i), i);
4219    if (element.hasSubject())
4220      composeReference(t, "CommunicationRequest", "subject", element.getSubject(), -1);
4221    for (int i = 0; i < element.getAbout().size(); i++)
4222      composeReference(t, "CommunicationRequest", "about", element.getAbout().get(i), i);
4223    if (element.hasEncounter())
4224      composeReference(t, "CommunicationRequest", "encounter", element.getEncounter(), -1);
4225    for (int i = 0; i < element.getPayload().size(); i++)
4226      composeCommunicationRequestCommunicationRequestPayloadComponent(t, "CommunicationRequest", "payload", element.getPayload().get(i), i);
4227    if (element.hasOccurrence())
4228      composeType(t, "CommunicationRequest", "occurrence", element.getOccurrence(), -1);
4229    if (element.hasAuthoredOnElement())
4230      composeDateTime(t, "CommunicationRequest", "authoredOn", element.getAuthoredOnElement(), -1);
4231    if (element.hasRequester())
4232      composeReference(t, "CommunicationRequest", "requester", element.getRequester(), -1);
4233    for (int i = 0; i < element.getRecipient().size(); i++)
4234      composeReference(t, "CommunicationRequest", "recipient", element.getRecipient().get(i), i);
4235    if (element.hasSender())
4236      composeReference(t, "CommunicationRequest", "sender", element.getSender(), -1);
4237    for (int i = 0; i < element.getReasonCode().size(); i++)
4238      composeCodeableConcept(t, "CommunicationRequest", "reasonCode", element.getReasonCode().get(i), i);
4239    for (int i = 0; i < element.getReasonReference().size(); i++)
4240      composeReference(t, "CommunicationRequest", "reasonReference", element.getReasonReference().get(i), i);
4241    for (int i = 0; i < element.getNote().size(); i++)
4242      composeAnnotation(t, "CommunicationRequest", "note", element.getNote().get(i), i);
4243  }
4244
4245  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(Complex parent, String parentType, String name, CommunicationRequest.CommunicationRequestPayloadComponent element, int index) {
4246    if (element == null) 
4247      return;
4248    Complex t;
4249    if (Utilities.noString(parentType))
4250      t = parent;
4251    else {
4252      t = parent.predicate("fhir:"+parentType+'.'+name);
4253    }
4254    composeBackboneElement(t, "payload", name, element, index);
4255    if (element.hasContent())
4256      composeType(t, "CommunicationRequest", "content", element.getContent(), -1);
4257  }
4258
4259  protected void composeCompartmentDefinition(Complex parent, String parentType, String name, CompartmentDefinition element, int index) {
4260    if (element == null) 
4261      return;
4262    Complex t;
4263    if (Utilities.noString(parentType))
4264      t = parent;
4265    else {
4266      t = parent.predicate("fhir:"+parentType+'.'+name);
4267    }
4268    composeDomainResource(t, "CompartmentDefinition", name, element, index);
4269    if (element.hasUrlElement())
4270      composeUri(t, "CompartmentDefinition", "url", element.getUrlElement(), -1);
4271    if (element.hasVersionElement())
4272      composeString(t, "CompartmentDefinition", "version", element.getVersionElement(), -1);
4273    if (element.hasNameElement())
4274      composeString(t, "CompartmentDefinition", "name", element.getNameElement(), -1);
4275    if (element.hasStatusElement())
4276      composeEnum(t, "CompartmentDefinition", "status", element.getStatusElement(), -1);
4277    if (element.hasExperimentalElement())
4278      composeBoolean(t, "CompartmentDefinition", "experimental", element.getExperimentalElement(), -1);
4279    if (element.hasDateElement())
4280      composeDateTime(t, "CompartmentDefinition", "date", element.getDateElement(), -1);
4281    if (element.hasPublisherElement())
4282      composeString(t, "CompartmentDefinition", "publisher", element.getPublisherElement(), -1);
4283    for (int i = 0; i < element.getContact().size(); i++)
4284      composeContactDetail(t, "CompartmentDefinition", "contact", element.getContact().get(i), i);
4285    if (element.hasDescriptionElement())
4286      composeMarkdown(t, "CompartmentDefinition", "description", element.getDescriptionElement(), -1);
4287    for (int i = 0; i < element.getUseContext().size(); i++)
4288      composeUsageContext(t, "CompartmentDefinition", "useContext", element.getUseContext().get(i), i);
4289    if (element.hasPurposeElement())
4290      composeMarkdown(t, "CompartmentDefinition", "purpose", element.getPurposeElement(), -1);
4291    if (element.hasCodeElement())
4292      composeEnum(t, "CompartmentDefinition", "code", element.getCodeElement(), -1);
4293    if (element.hasSearchElement())
4294      composeBoolean(t, "CompartmentDefinition", "search", element.getSearchElement(), -1);
4295    for (int i = 0; i < element.getResource().size(); i++)
4296      composeCompartmentDefinitionCompartmentDefinitionResourceComponent(t, "CompartmentDefinition", "resource", element.getResource().get(i), i);
4297  }
4298
4299  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(Complex parent, String parentType, String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element, int index) {
4300    if (element == null) 
4301      return;
4302    Complex t;
4303    if (Utilities.noString(parentType))
4304      t = parent;
4305    else {
4306      t = parent.predicate("fhir:"+parentType+'.'+name);
4307    }
4308    composeBackboneElement(t, "resource", name, element, index);
4309    if (element.hasCodeElement())
4310      composeCode(t, "CompartmentDefinition", "code", element.getCodeElement(), -1);
4311    for (int i = 0; i < element.getParam().size(); i++)
4312      composeString(t, "CompartmentDefinition", "param", element.getParam().get(i), i);
4313    if (element.hasDocumentationElement())
4314      composeString(t, "CompartmentDefinition", "documentation", element.getDocumentationElement(), -1);
4315  }
4316
4317  protected void composeComposition(Complex parent, String parentType, String name, Composition element, int index) {
4318    if (element == null) 
4319      return;
4320    Complex t;
4321    if (Utilities.noString(parentType))
4322      t = parent;
4323    else {
4324      t = parent.predicate("fhir:"+parentType+'.'+name);
4325    }
4326    composeDomainResource(t, "Composition", name, element, index);
4327    if (element.hasIdentifier())
4328      composeIdentifier(t, "Composition", "identifier", element.getIdentifier(), -1);
4329    if (element.hasStatusElement())
4330      composeEnum(t, "Composition", "status", element.getStatusElement(), -1);
4331    if (element.hasType())
4332      composeCodeableConcept(t, "Composition", "type", element.getType(), -1);
4333    for (int i = 0; i < element.getCategory().size(); i++)
4334      composeCodeableConcept(t, "Composition", "category", element.getCategory().get(i), i);
4335    if (element.hasSubject())
4336      composeReference(t, "Composition", "subject", element.getSubject(), -1);
4337    if (element.hasEncounter())
4338      composeReference(t, "Composition", "encounter", element.getEncounter(), -1);
4339    if (element.hasDateElement())
4340      composeDateTime(t, "Composition", "date", element.getDateElement(), -1);
4341    for (int i = 0; i < element.getAuthor().size(); i++)
4342      composeReference(t, "Composition", "author", element.getAuthor().get(i), i);
4343    if (element.hasTitleElement())
4344      composeString(t, "Composition", "title", element.getTitleElement(), -1);
4345    if (element.hasConfidentialityElement())
4346      composeEnum(t, "Composition", "confidentiality", element.getConfidentialityElement(), -1);
4347    for (int i = 0; i < element.getAttester().size(); i++)
4348      composeCompositionCompositionAttesterComponent(t, "Composition", "attester", element.getAttester().get(i), i);
4349    if (element.hasCustodian())
4350      composeReference(t, "Composition", "custodian", element.getCustodian(), -1);
4351    for (int i = 0; i < element.getRelatesTo().size(); i++)
4352      composeCompositionCompositionRelatesToComponent(t, "Composition", "relatesTo", element.getRelatesTo().get(i), i);
4353    for (int i = 0; i < element.getEvent().size(); i++)
4354      composeCompositionCompositionEventComponent(t, "Composition", "event", element.getEvent().get(i), i);
4355    for (int i = 0; i < element.getSection().size(); i++)
4356      composeCompositionSectionComponent(t, "Composition", "section", element.getSection().get(i), i);
4357  }
4358
4359  protected void composeCompositionCompositionAttesterComponent(Complex parent, String parentType, String name, Composition.CompositionAttesterComponent element, int index) {
4360    if (element == null) 
4361      return;
4362    Complex t;
4363    if (Utilities.noString(parentType))
4364      t = parent;
4365    else {
4366      t = parent.predicate("fhir:"+parentType+'.'+name);
4367    }
4368    composeBackboneElement(t, "attester", name, element, index);
4369    if (element.hasModeElement())
4370      composeEnum(t, "Composition", "mode", element.getModeElement(), -1);
4371    if (element.hasTimeElement())
4372      composeDateTime(t, "Composition", "time", element.getTimeElement(), -1);
4373    if (element.hasParty())
4374      composeReference(t, "Composition", "party", element.getParty(), -1);
4375  }
4376
4377  protected void composeCompositionCompositionRelatesToComponent(Complex parent, String parentType, String name, Composition.CompositionRelatesToComponent element, int index) {
4378    if (element == null) 
4379      return;
4380    Complex t;
4381    if (Utilities.noString(parentType))
4382      t = parent;
4383    else {
4384      t = parent.predicate("fhir:"+parentType+'.'+name);
4385    }
4386    composeBackboneElement(t, "relatesTo", name, element, index);
4387    if (element.hasCodeElement())
4388      composeEnum(t, "Composition", "code", element.getCodeElement(), -1);
4389    if (element.hasTarget())
4390      composeType(t, "Composition", "target", element.getTarget(), -1);
4391  }
4392
4393  protected void composeCompositionCompositionEventComponent(Complex parent, String parentType, String name, Composition.CompositionEventComponent element, int index) {
4394    if (element == null) 
4395      return;
4396    Complex t;
4397    if (Utilities.noString(parentType))
4398      t = parent;
4399    else {
4400      t = parent.predicate("fhir:"+parentType+'.'+name);
4401    }
4402    composeBackboneElement(t, "event", name, element, index);
4403    for (int i = 0; i < element.getCode().size(); i++)
4404      composeCodeableConcept(t, "Composition", "code", element.getCode().get(i), i);
4405    if (element.hasPeriod())
4406      composePeriod(t, "Composition", "period", element.getPeriod(), -1);
4407    for (int i = 0; i < element.getDetail().size(); i++)
4408      composeReference(t, "Composition", "detail", element.getDetail().get(i), i);
4409  }
4410
4411  protected void composeCompositionSectionComponent(Complex parent, String parentType, String name, Composition.SectionComponent element, int index) {
4412    if (element == null) 
4413      return;
4414    Complex t;
4415    if (Utilities.noString(parentType))
4416      t = parent;
4417    else {
4418      t = parent.predicate("fhir:"+parentType+'.'+name);
4419    }
4420    composeBackboneElement(t, "section", name, element, index);
4421    if (element.hasTitleElement())
4422      composeString(t, "Composition", "title", element.getTitleElement(), -1);
4423    if (element.hasCode())
4424      composeCodeableConcept(t, "Composition", "code", element.getCode(), -1);
4425    for (int i = 0; i < element.getAuthor().size(); i++)
4426      composeReference(t, "Composition", "author", element.getAuthor().get(i), i);
4427    if (element.hasFocus())
4428      composeReference(t, "Composition", "focus", element.getFocus(), -1);
4429    if (element.hasText())
4430      composeNarrative(t, "Composition", "text", element.getText(), -1);
4431    if (element.hasModeElement())
4432      composeEnum(t, "Composition", "mode", element.getModeElement(), -1);
4433    if (element.hasOrderedBy())
4434      composeCodeableConcept(t, "Composition", "orderedBy", element.getOrderedBy(), -1);
4435    for (int i = 0; i < element.getEntry().size(); i++)
4436      composeReference(t, "Composition", "entry", element.getEntry().get(i), i);
4437    if (element.hasEmptyReason())
4438      composeCodeableConcept(t, "Composition", "emptyReason", element.getEmptyReason(), -1);
4439    for (int i = 0; i < element.getSection().size(); i++)
4440      composeCompositionSectionComponent(t, "Composition", "section", element.getSection().get(i), i);
4441  }
4442
4443  protected void composeConceptMap(Complex parent, String parentType, String name, ConceptMap element, int index) {
4444    if (element == null) 
4445      return;
4446    Complex t;
4447    if (Utilities.noString(parentType))
4448      t = parent;
4449    else {
4450      t = parent.predicate("fhir:"+parentType+'.'+name);
4451    }
4452    composeDomainResource(t, "ConceptMap", name, element, index);
4453    if (element.hasUrlElement())
4454      composeUri(t, "ConceptMap", "url", element.getUrlElement(), -1);
4455    if (element.hasIdentifier())
4456      composeIdentifier(t, "ConceptMap", "identifier", element.getIdentifier(), -1);
4457    if (element.hasVersionElement())
4458      composeString(t, "ConceptMap", "version", element.getVersionElement(), -1);
4459    if (element.hasNameElement())
4460      composeString(t, "ConceptMap", "name", element.getNameElement(), -1);
4461    if (element.hasTitleElement())
4462      composeString(t, "ConceptMap", "title", element.getTitleElement(), -1);
4463    if (element.hasStatusElement())
4464      composeEnum(t, "ConceptMap", "status", element.getStatusElement(), -1);
4465    if (element.hasExperimentalElement())
4466      composeBoolean(t, "ConceptMap", "experimental", element.getExperimentalElement(), -1);
4467    if (element.hasDateElement())
4468      composeDateTime(t, "ConceptMap", "date", element.getDateElement(), -1);
4469    if (element.hasPublisherElement())
4470      composeString(t, "ConceptMap", "publisher", element.getPublisherElement(), -1);
4471    for (int i = 0; i < element.getContact().size(); i++)
4472      composeContactDetail(t, "ConceptMap", "contact", element.getContact().get(i), i);
4473    if (element.hasDescriptionElement())
4474      composeMarkdown(t, "ConceptMap", "description", element.getDescriptionElement(), -1);
4475    for (int i = 0; i < element.getUseContext().size(); i++)
4476      composeUsageContext(t, "ConceptMap", "useContext", element.getUseContext().get(i), i);
4477    for (int i = 0; i < element.getJurisdiction().size(); i++)
4478      composeCodeableConcept(t, "ConceptMap", "jurisdiction", element.getJurisdiction().get(i), i);
4479    if (element.hasPurposeElement())
4480      composeMarkdown(t, "ConceptMap", "purpose", element.getPurposeElement(), -1);
4481    if (element.hasCopyrightElement())
4482      composeMarkdown(t, "ConceptMap", "copyright", element.getCopyrightElement(), -1);
4483    if (element.hasSource())
4484      composeType(t, "ConceptMap", "source", element.getSource(), -1);
4485    if (element.hasTarget())
4486      composeType(t, "ConceptMap", "target", element.getTarget(), -1);
4487    for (int i = 0; i < element.getGroup().size(); i++)
4488      composeConceptMapConceptMapGroupComponent(t, "ConceptMap", "group", element.getGroup().get(i), i);
4489  }
4490
4491  protected void composeConceptMapConceptMapGroupComponent(Complex parent, String parentType, String name, ConceptMap.ConceptMapGroupComponent element, int index) {
4492    if (element == null) 
4493      return;
4494    Complex t;
4495    if (Utilities.noString(parentType))
4496      t = parent;
4497    else {
4498      t = parent.predicate("fhir:"+parentType+'.'+name);
4499    }
4500    composeBackboneElement(t, "group", name, element, index);
4501    if (element.hasSourceElement())
4502      composeUri(t, "ConceptMap", "source", element.getSourceElement(), -1);
4503    if (element.hasSourceVersionElement())
4504      composeString(t, "ConceptMap", "sourceVersion", element.getSourceVersionElement(), -1);
4505    if (element.hasTargetElement())
4506      composeUri(t, "ConceptMap", "target", element.getTargetElement(), -1);
4507    if (element.hasTargetVersionElement())
4508      composeString(t, "ConceptMap", "targetVersion", element.getTargetVersionElement(), -1);
4509    for (int i = 0; i < element.getElement().size(); i++)
4510      composeConceptMapSourceElementComponent(t, "ConceptMap", "element", element.getElement().get(i), i);
4511    if (element.hasUnmapped())
4512      composeConceptMapConceptMapGroupUnmappedComponent(t, "ConceptMap", "unmapped", element.getUnmapped(), -1);
4513  }
4514
4515  protected void composeConceptMapSourceElementComponent(Complex parent, String parentType, String name, ConceptMap.SourceElementComponent element, int index) {
4516    if (element == null) 
4517      return;
4518    Complex t;
4519    if (Utilities.noString(parentType))
4520      t = parent;
4521    else {
4522      t = parent.predicate("fhir:"+parentType+'.'+name);
4523    }
4524    composeBackboneElement(t, "element", name, element, index);
4525    if (element.hasCodeElement())
4526      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4527    if (element.hasDisplayElement())
4528      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4529    for (int i = 0; i < element.getTarget().size(); i++)
4530      composeConceptMapTargetElementComponent(t, "ConceptMap", "target", element.getTarget().get(i), i);
4531  }
4532
4533  protected void composeConceptMapTargetElementComponent(Complex parent, String parentType, String name, ConceptMap.TargetElementComponent element, int index) {
4534    if (element == null) 
4535      return;
4536    Complex t;
4537    if (Utilities.noString(parentType))
4538      t = parent;
4539    else {
4540      t = parent.predicate("fhir:"+parentType+'.'+name);
4541    }
4542    composeBackboneElement(t, "target", name, element, index);
4543    if (element.hasCodeElement())
4544      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4545    if (element.hasDisplayElement())
4546      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4547    if (element.hasEquivalenceElement())
4548      composeEnum(t, "ConceptMap", "equivalence", element.getEquivalenceElement(), -1);
4549    if (element.hasCommentElement())
4550      composeString(t, "ConceptMap", "comment", element.getCommentElement(), -1);
4551    for (int i = 0; i < element.getDependsOn().size(); i++)
4552      composeConceptMapOtherElementComponent(t, "ConceptMap", "dependsOn", element.getDependsOn().get(i), i);
4553    for (int i = 0; i < element.getProduct().size(); i++)
4554      composeConceptMapOtherElementComponent(t, "ConceptMap", "product", element.getProduct().get(i), i);
4555  }
4556
4557  protected void composeConceptMapOtherElementComponent(Complex parent, String parentType, String name, ConceptMap.OtherElementComponent element, int index) {
4558    if (element == null) 
4559      return;
4560    Complex t;
4561    if (Utilities.noString(parentType))
4562      t = parent;
4563    else {
4564      t = parent.predicate("fhir:"+parentType+'.'+name);
4565    }
4566    composeBackboneElement(t, "dependsOn", name, element, index);
4567    if (element.hasPropertyElement())
4568      composeUri(t, "ConceptMap", "property", element.getPropertyElement(), -1);
4569    if (element.hasSystemElement())
4570      composeCanonical(t, "ConceptMap", "system", element.getSystemElement(), -1);
4571    if (element.hasValueElement())
4572      composeString(t, "ConceptMap", "value", element.getValueElement(), -1);
4573    if (element.hasDisplayElement())
4574      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4575  }
4576
4577  protected void composeConceptMapConceptMapGroupUnmappedComponent(Complex parent, String parentType, String name, ConceptMap.ConceptMapGroupUnmappedComponent element, int index) {
4578    if (element == null) 
4579      return;
4580    Complex t;
4581    if (Utilities.noString(parentType))
4582      t = parent;
4583    else {
4584      t = parent.predicate("fhir:"+parentType+'.'+name);
4585    }
4586    composeBackboneElement(t, "unmapped", name, element, index);
4587    if (element.hasModeElement())
4588      composeEnum(t, "ConceptMap", "mode", element.getModeElement(), -1);
4589    if (element.hasCodeElement())
4590      composeCode(t, "ConceptMap", "code", element.getCodeElement(), -1);
4591    if (element.hasDisplayElement())
4592      composeString(t, "ConceptMap", "display", element.getDisplayElement(), -1);
4593    if (element.hasUrlElement())
4594      composeCanonical(t, "ConceptMap", "url", element.getUrlElement(), -1);
4595  }
4596
4597  protected void composeCondition(Complex parent, String parentType, String name, Condition element, int index) {
4598    if (element == null) 
4599      return;
4600    Complex t;
4601    if (Utilities.noString(parentType))
4602      t = parent;
4603    else {
4604      t = parent.predicate("fhir:"+parentType+'.'+name);
4605    }
4606    composeDomainResource(t, "Condition", name, element, index);
4607    for (int i = 0; i < element.getIdentifier().size(); i++)
4608      composeIdentifier(t, "Condition", "identifier", element.getIdentifier().get(i), i);
4609    if (element.hasClinicalStatus())
4610      composeCodeableConcept(t, "Condition", "clinicalStatus", element.getClinicalStatus(), -1);
4611    if (element.hasVerificationStatus())
4612      composeCodeableConcept(t, "Condition", "verificationStatus", element.getVerificationStatus(), -1);
4613    for (int i = 0; i < element.getCategory().size(); i++)
4614      composeCodeableConcept(t, "Condition", "category", element.getCategory().get(i), i);
4615    if (element.hasSeverity())
4616      composeCodeableConcept(t, "Condition", "severity", element.getSeverity(), -1);
4617    if (element.hasCode())
4618      composeCodeableConcept(t, "Condition", "code", element.getCode(), -1);
4619    for (int i = 0; i < element.getBodySite().size(); i++)
4620      composeCodeableConcept(t, "Condition", "bodySite", element.getBodySite().get(i), i);
4621    if (element.hasSubject())
4622      composeReference(t, "Condition", "subject", element.getSubject(), -1);
4623    if (element.hasEncounter())
4624      composeReference(t, "Condition", "encounter", element.getEncounter(), -1);
4625    if (element.hasOnset())
4626      composeType(t, "Condition", "onset", element.getOnset(), -1);
4627    if (element.hasAbatement())
4628      composeType(t, "Condition", "abatement", element.getAbatement(), -1);
4629    if (element.hasRecordedDateElement())
4630      composeDateTime(t, "Condition", "recordedDate", element.getRecordedDateElement(), -1);
4631    if (element.hasRecorder())
4632      composeReference(t, "Condition", "recorder", element.getRecorder(), -1);
4633    if (element.hasAsserter())
4634      composeReference(t, "Condition", "asserter", element.getAsserter(), -1);
4635    for (int i = 0; i < element.getStage().size(); i++)
4636      composeConditionConditionStageComponent(t, "Condition", "stage", element.getStage().get(i), i);
4637    for (int i = 0; i < element.getEvidence().size(); i++)
4638      composeConditionConditionEvidenceComponent(t, "Condition", "evidence", element.getEvidence().get(i), i);
4639    for (int i = 0; i < element.getNote().size(); i++)
4640      composeAnnotation(t, "Condition", "note", element.getNote().get(i), i);
4641  }
4642
4643  protected void composeConditionConditionStageComponent(Complex parent, String parentType, String name, Condition.ConditionStageComponent element, int index) {
4644    if (element == null) 
4645      return;
4646    Complex t;
4647    if (Utilities.noString(parentType))
4648      t = parent;
4649    else {
4650      t = parent.predicate("fhir:"+parentType+'.'+name);
4651    }
4652    composeBackboneElement(t, "stage", name, element, index);
4653    if (element.hasSummary())
4654      composeCodeableConcept(t, "Condition", "summary", element.getSummary(), -1);
4655    for (int i = 0; i < element.getAssessment().size(); i++)
4656      composeReference(t, "Condition", "assessment", element.getAssessment().get(i), i);
4657    if (element.hasType())
4658      composeCodeableConcept(t, "Condition", "type", element.getType(), -1);
4659  }
4660
4661  protected void composeConditionConditionEvidenceComponent(Complex parent, String parentType, String name, Condition.ConditionEvidenceComponent element, int index) {
4662    if (element == null) 
4663      return;
4664    Complex t;
4665    if (Utilities.noString(parentType))
4666      t = parent;
4667    else {
4668      t = parent.predicate("fhir:"+parentType+'.'+name);
4669    }
4670    composeBackboneElement(t, "evidence", name, element, index);
4671    for (int i = 0; i < element.getCode().size(); i++)
4672      composeCodeableConcept(t, "Condition", "code", element.getCode().get(i), i);
4673    for (int i = 0; i < element.getDetail().size(); i++)
4674      composeReference(t, "Condition", "detail", element.getDetail().get(i), i);
4675  }
4676
4677  protected void composeConsent(Complex parent, String parentType, String name, Consent element, int index) {
4678    if (element == null) 
4679      return;
4680    Complex t;
4681    if (Utilities.noString(parentType))
4682      t = parent;
4683    else {
4684      t = parent.predicate("fhir:"+parentType+'.'+name);
4685    }
4686    composeDomainResource(t, "Consent", name, element, index);
4687    for (int i = 0; i < element.getIdentifier().size(); i++)
4688      composeIdentifier(t, "Consent", "identifier", element.getIdentifier().get(i), i);
4689    if (element.hasStatusElement())
4690      composeEnum(t, "Consent", "status", element.getStatusElement(), -1);
4691    if (element.hasScope())
4692      composeCodeableConcept(t, "Consent", "scope", element.getScope(), -1);
4693    for (int i = 0; i < element.getCategory().size(); i++)
4694      composeCodeableConcept(t, "Consent", "category", element.getCategory().get(i), i);
4695    if (element.hasPatient())
4696      composeReference(t, "Consent", "patient", element.getPatient(), -1);
4697    if (element.hasDateTimeElement())
4698      composeDateTime(t, "Consent", "dateTime", element.getDateTimeElement(), -1);
4699    for (int i = 0; i < element.getPerformer().size(); i++)
4700      composeReference(t, "Consent", "performer", element.getPerformer().get(i), i);
4701    for (int i = 0; i < element.getOrganization().size(); i++)
4702      composeReference(t, "Consent", "organization", element.getOrganization().get(i), i);
4703    if (element.hasSource())
4704      composeType(t, "Consent", "source", element.getSource(), -1);
4705    for (int i = 0; i < element.getPolicy().size(); i++)
4706      composeConsentConsentPolicyComponent(t, "Consent", "policy", element.getPolicy().get(i), i);
4707    if (element.hasPolicyRule())
4708      composeCodeableConcept(t, "Consent", "policyRule", element.getPolicyRule(), -1);
4709    for (int i = 0; i < element.getVerification().size(); i++)
4710      composeConsentConsentVerificationComponent(t, "Consent", "verification", element.getVerification().get(i), i);
4711    if (element.hasProvision())
4712      composeConsentprovisionComponent(t, "Consent", "provision", element.getProvision(), -1);
4713  }
4714
4715  protected void composeConsentConsentPolicyComponent(Complex parent, String parentType, String name, Consent.ConsentPolicyComponent element, int index) {
4716    if (element == null) 
4717      return;
4718    Complex t;
4719    if (Utilities.noString(parentType))
4720      t = parent;
4721    else {
4722      t = parent.predicate("fhir:"+parentType+'.'+name);
4723    }
4724    composeBackboneElement(t, "policy", name, element, index);
4725    if (element.hasAuthorityElement())
4726      composeUri(t, "Consent", "authority", element.getAuthorityElement(), -1);
4727    if (element.hasUriElement())
4728      composeUri(t, "Consent", "uri", element.getUriElement(), -1);
4729  }
4730
4731  protected void composeConsentConsentVerificationComponent(Complex parent, String parentType, String name, Consent.ConsentVerificationComponent element, int index) {
4732    if (element == null) 
4733      return;
4734    Complex t;
4735    if (Utilities.noString(parentType))
4736      t = parent;
4737    else {
4738      t = parent.predicate("fhir:"+parentType+'.'+name);
4739    }
4740    composeBackboneElement(t, "verification", name, element, index);
4741    if (element.hasVerifiedElement())
4742      composeBoolean(t, "Consent", "verified", element.getVerifiedElement(), -1);
4743    if (element.hasVerifiedWith())
4744      composeReference(t, "Consent", "verifiedWith", element.getVerifiedWith(), -1);
4745    if (element.hasVerificationDateElement())
4746      composeDateTime(t, "Consent", "verificationDate", element.getVerificationDateElement(), -1);
4747  }
4748
4749  protected void composeConsentprovisionComponent(Complex parent, String parentType, String name, Consent.provisionComponent element, int index) {
4750    if (element == null) 
4751      return;
4752    Complex t;
4753    if (Utilities.noString(parentType))
4754      t = parent;
4755    else {
4756      t = parent.predicate("fhir:"+parentType+'.'+name);
4757    }
4758    composeBackboneElement(t, "provision", name, element, index);
4759    if (element.hasTypeElement())
4760      composeEnum(t, "Consent", "type", element.getTypeElement(), -1);
4761    if (element.hasPeriod())
4762      composePeriod(t, "Consent", "period", element.getPeriod(), -1);
4763    for (int i = 0; i < element.getActor().size(); i++)
4764      composeConsentprovisionActorComponent(t, "Consent", "actor", element.getActor().get(i), i);
4765    for (int i = 0; i < element.getAction().size(); i++)
4766      composeCodeableConcept(t, "Consent", "action", element.getAction().get(i), i);
4767    for (int i = 0; i < element.getSecurityLabel().size(); i++)
4768      composeCoding(t, "Consent", "securityLabel", element.getSecurityLabel().get(i), i);
4769    for (int i = 0; i < element.getPurpose().size(); i++)
4770      composeCoding(t, "Consent", "purpose", element.getPurpose().get(i), i);
4771    for (int i = 0; i < element.getClass_().size(); i++)
4772      composeCoding(t, "Consent", "class", element.getClass_().get(i), i);
4773    for (int i = 0; i < element.getCode().size(); i++)
4774      composeCodeableConcept(t, "Consent", "code", element.getCode().get(i), i);
4775    if (element.hasDataPeriod())
4776      composePeriod(t, "Consent", "dataPeriod", element.getDataPeriod(), -1);
4777    for (int i = 0; i < element.getData().size(); i++)
4778      composeConsentprovisionDataComponent(t, "Consent", "data", element.getData().get(i), i);
4779    for (int i = 0; i < element.getProvision().size(); i++)
4780      composeConsentprovisionComponent(t, "Consent", "provision", element.getProvision().get(i), i);
4781  }
4782
4783  protected void composeConsentprovisionActorComponent(Complex parent, String parentType, String name, Consent.provisionActorComponent element, int index) {
4784    if (element == null) 
4785      return;
4786    Complex t;
4787    if (Utilities.noString(parentType))
4788      t = parent;
4789    else {
4790      t = parent.predicate("fhir:"+parentType+'.'+name);
4791    }
4792    composeBackboneElement(t, "actor", name, element, index);
4793    if (element.hasRole())
4794      composeCodeableConcept(t, "Consent", "role", element.getRole(), -1);
4795    if (element.hasReference())
4796      composeReference(t, "Consent", "reference", element.getReference(), -1);
4797  }
4798
4799  protected void composeConsentprovisionDataComponent(Complex parent, String parentType, String name, Consent.provisionDataComponent element, int index) {
4800    if (element == null) 
4801      return;
4802    Complex t;
4803    if (Utilities.noString(parentType))
4804      t = parent;
4805    else {
4806      t = parent.predicate("fhir:"+parentType+'.'+name);
4807    }
4808    composeBackboneElement(t, "data", name, element, index);
4809    if (element.hasMeaningElement())
4810      composeEnum(t, "Consent", "meaning", element.getMeaningElement(), -1);
4811    if (element.hasReference())
4812      composeReference(t, "Consent", "reference", element.getReference(), -1);
4813  }
4814
4815  protected void composeContract(Complex parent, String parentType, String name, Contract element, int index) {
4816    if (element == null) 
4817      return;
4818    Complex t;
4819    if (Utilities.noString(parentType))
4820      t = parent;
4821    else {
4822      t = parent.predicate("fhir:"+parentType+'.'+name);
4823    }
4824    composeDomainResource(t, "Contract", name, element, index);
4825    for (int i = 0; i < element.getIdentifier().size(); i++)
4826      composeIdentifier(t, "Contract", "identifier", element.getIdentifier().get(i), i);
4827    if (element.hasUrlElement())
4828      composeUri(t, "Contract", "url", element.getUrlElement(), -1);
4829    if (element.hasVersionElement())
4830      composeString(t, "Contract", "version", element.getVersionElement(), -1);
4831    if (element.hasStatusElement())
4832      composeEnum(t, "Contract", "status", element.getStatusElement(), -1);
4833    if (element.hasLegalState())
4834      composeCodeableConcept(t, "Contract", "legalState", element.getLegalState(), -1);
4835    if (element.hasInstantiatesCanonical())
4836      composeReference(t, "Contract", "instantiatesCanonical", element.getInstantiatesCanonical(), -1);
4837    if (element.hasInstantiatesUriElement())
4838      composeUri(t, "Contract", "instantiatesUri", element.getInstantiatesUriElement(), -1);
4839    if (element.hasContentDerivative())
4840      composeCodeableConcept(t, "Contract", "contentDerivative", element.getContentDerivative(), -1);
4841    if (element.hasIssuedElement())
4842      composeDateTime(t, "Contract", "issued", element.getIssuedElement(), -1);
4843    if (element.hasApplies())
4844      composePeriod(t, "Contract", "applies", element.getApplies(), -1);
4845    if (element.hasExpirationType())
4846      composeCodeableConcept(t, "Contract", "expirationType", element.getExpirationType(), -1);
4847    for (int i = 0; i < element.getSubject().size(); i++)
4848      composeReference(t, "Contract", "subject", element.getSubject().get(i), i);
4849    for (int i = 0; i < element.getAuthority().size(); i++)
4850      composeReference(t, "Contract", "authority", element.getAuthority().get(i), i);
4851    for (int i = 0; i < element.getDomain().size(); i++)
4852      composeReference(t, "Contract", "domain", element.getDomain().get(i), i);
4853    for (int i = 0; i < element.getSite().size(); i++)
4854      composeReference(t, "Contract", "site", element.getSite().get(i), i);
4855    if (element.hasNameElement())
4856      composeString(t, "Contract", "name", element.getNameElement(), -1);
4857    if (element.hasTitleElement())
4858      composeString(t, "Contract", "title", element.getTitleElement(), -1);
4859    if (element.hasSubtitleElement())
4860      composeString(t, "Contract", "subtitle", element.getSubtitleElement(), -1);
4861    for (int i = 0; i < element.getAlias().size(); i++)
4862      composeString(t, "Contract", "alias", element.getAlias().get(i), i);
4863    if (element.hasAuthor())
4864      composeReference(t, "Contract", "author", element.getAuthor(), -1);
4865    if (element.hasScope())
4866      composeCodeableConcept(t, "Contract", "scope", element.getScope(), -1);
4867    if (element.hasTopic())
4868      composeType(t, "Contract", "topic", element.getTopic(), -1);
4869    if (element.hasType())
4870      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4871    for (int i = 0; i < element.getSubType().size(); i++)
4872      composeCodeableConcept(t, "Contract", "subType", element.getSubType().get(i), i);
4873    if (element.hasContentDefinition())
4874      composeContractContentDefinitionComponent(t, "Contract", "contentDefinition", element.getContentDefinition(), -1);
4875    for (int i = 0; i < element.getTerm().size(); i++)
4876      composeContractTermComponent(t, "Contract", "term", element.getTerm().get(i), i);
4877    for (int i = 0; i < element.getSupportingInfo().size(); i++)
4878      composeReference(t, "Contract", "supportingInfo", element.getSupportingInfo().get(i), i);
4879    for (int i = 0; i < element.getRelevantHistory().size(); i++)
4880      composeReference(t, "Contract", "relevantHistory", element.getRelevantHistory().get(i), i);
4881    for (int i = 0; i < element.getSigner().size(); i++)
4882      composeContractSignatoryComponent(t, "Contract", "signer", element.getSigner().get(i), i);
4883    for (int i = 0; i < element.getFriendly().size(); i++)
4884      composeContractFriendlyLanguageComponent(t, "Contract", "friendly", element.getFriendly().get(i), i);
4885    for (int i = 0; i < element.getLegal().size(); i++)
4886      composeContractLegalLanguageComponent(t, "Contract", "legal", element.getLegal().get(i), i);
4887    for (int i = 0; i < element.getRule().size(); i++)
4888      composeContractComputableLanguageComponent(t, "Contract", "rule", element.getRule().get(i), i);
4889    if (element.hasLegallyBinding())
4890      composeType(t, "Contract", "legallyBinding", element.getLegallyBinding(), -1);
4891  }
4892
4893  protected void composeContractContentDefinitionComponent(Complex parent, String parentType, String name, Contract.ContentDefinitionComponent element, int index) {
4894    if (element == null) 
4895      return;
4896    Complex t;
4897    if (Utilities.noString(parentType))
4898      t = parent;
4899    else {
4900      t = parent.predicate("fhir:"+parentType+'.'+name);
4901    }
4902    composeBackboneElement(t, "contentDefinition", name, element, index);
4903    if (element.hasType())
4904      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4905    if (element.hasSubType())
4906      composeCodeableConcept(t, "Contract", "subType", element.getSubType(), -1);
4907    if (element.hasPublisher())
4908      composeReference(t, "Contract", "publisher", element.getPublisher(), -1);
4909    if (element.hasPublicationDateElement())
4910      composeDateTime(t, "Contract", "publicationDate", element.getPublicationDateElement(), -1);
4911    if (element.hasPublicationStatusElement())
4912      composeEnum(t, "Contract", "publicationStatus", element.getPublicationStatusElement(), -1);
4913    if (element.hasCopyrightElement())
4914      composeMarkdown(t, "Contract", "copyright", element.getCopyrightElement(), -1);
4915  }
4916
4917  protected void composeContractTermComponent(Complex parent, String parentType, String name, Contract.TermComponent element, int index) {
4918    if (element == null) 
4919      return;
4920    Complex t;
4921    if (Utilities.noString(parentType))
4922      t = parent;
4923    else {
4924      t = parent.predicate("fhir:"+parentType+'.'+name);
4925    }
4926    composeBackboneElement(t, "term", name, element, index);
4927    if (element.hasIdentifier())
4928      composeIdentifier(t, "Contract", "identifier", element.getIdentifier(), -1);
4929    if (element.hasIssuedElement())
4930      composeDateTime(t, "Contract", "issued", element.getIssuedElement(), -1);
4931    if (element.hasApplies())
4932      composePeriod(t, "Contract", "applies", element.getApplies(), -1);
4933    if (element.hasTopic())
4934      composeType(t, "Contract", "topic", element.getTopic(), -1);
4935    if (element.hasType())
4936      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4937    if (element.hasSubType())
4938      composeCodeableConcept(t, "Contract", "subType", element.getSubType(), -1);
4939    if (element.hasTextElement())
4940      composeString(t, "Contract", "text", element.getTextElement(), -1);
4941    for (int i = 0; i < element.getSecurityLabel().size(); i++)
4942      composeContractSecurityLabelComponent(t, "Contract", "securityLabel", element.getSecurityLabel().get(i), i);
4943    if (element.hasOffer())
4944      composeContractContractOfferComponent(t, "Contract", "offer", element.getOffer(), -1);
4945    for (int i = 0; i < element.getAsset().size(); i++)
4946      composeContractContractAssetComponent(t, "Contract", "asset", element.getAsset().get(i), i);
4947    for (int i = 0; i < element.getAction().size(); i++)
4948      composeContractActionComponent(t, "Contract", "action", element.getAction().get(i), i);
4949    for (int i = 0; i < element.getGroup().size(); i++)
4950      composeContractTermComponent(t, "Contract", "group", element.getGroup().get(i), i);
4951  }
4952
4953  protected void composeContractSecurityLabelComponent(Complex parent, String parentType, String name, Contract.SecurityLabelComponent element, int index) {
4954    if (element == null) 
4955      return;
4956    Complex t;
4957    if (Utilities.noString(parentType))
4958      t = parent;
4959    else {
4960      t = parent.predicate("fhir:"+parentType+'.'+name);
4961    }
4962    composeBackboneElement(t, "securityLabel", name, element, index);
4963    for (int i = 0; i < element.getNumber().size(); i++)
4964      composeUnsignedInt(t, "Contract", "number", element.getNumber().get(i), i);
4965    if (element.hasClassification())
4966      composeCoding(t, "Contract", "classification", element.getClassification(), -1);
4967    for (int i = 0; i < element.getCategory().size(); i++)
4968      composeCoding(t, "Contract", "category", element.getCategory().get(i), i);
4969    for (int i = 0; i < element.getControl().size(); i++)
4970      composeCoding(t, "Contract", "control", element.getControl().get(i), i);
4971  }
4972
4973  protected void composeContractContractOfferComponent(Complex parent, String parentType, String name, Contract.ContractOfferComponent element, int index) {
4974    if (element == null) 
4975      return;
4976    Complex t;
4977    if (Utilities.noString(parentType))
4978      t = parent;
4979    else {
4980      t = parent.predicate("fhir:"+parentType+'.'+name);
4981    }
4982    composeBackboneElement(t, "offer", name, element, index);
4983    for (int i = 0; i < element.getIdentifier().size(); i++)
4984      composeIdentifier(t, "Contract", "identifier", element.getIdentifier().get(i), i);
4985    for (int i = 0; i < element.getParty().size(); i++)
4986      composeContractContractPartyComponent(t, "Contract", "party", element.getParty().get(i), i);
4987    if (element.hasTopic())
4988      composeReference(t, "Contract", "topic", element.getTopic(), -1);
4989    if (element.hasType())
4990      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
4991    if (element.hasDecision())
4992      composeCodeableConcept(t, "Contract", "decision", element.getDecision(), -1);
4993    for (int i = 0; i < element.getDecisionMode().size(); i++)
4994      composeCodeableConcept(t, "Contract", "decisionMode", element.getDecisionMode().get(i), i);
4995    for (int i = 0; i < element.getAnswer().size(); i++)
4996      composeContractAnswerComponent(t, "Contract", "answer", element.getAnswer().get(i), i);
4997    if (element.hasTextElement())
4998      composeString(t, "Contract", "text", element.getTextElement(), -1);
4999    for (int i = 0; i < element.getLinkId().size(); i++)
5000      composeString(t, "Contract", "linkId", element.getLinkId().get(i), i);
5001    for (int i = 0; i < element.getSecurityLabelNumber().size(); i++)
5002      composeUnsignedInt(t, "Contract", "securityLabelNumber", element.getSecurityLabelNumber().get(i), i);
5003  }
5004
5005  protected void composeContractContractPartyComponent(Complex parent, String parentType, String name, Contract.ContractPartyComponent element, int index) {
5006    if (element == null) 
5007      return;
5008    Complex t;
5009    if (Utilities.noString(parentType))
5010      t = parent;
5011    else {
5012      t = parent.predicate("fhir:"+parentType+'.'+name);
5013    }
5014    composeBackboneElement(t, "party", name, element, index);
5015    for (int i = 0; i < element.getReference().size(); i++)
5016      composeReference(t, "Contract", "reference", element.getReference().get(i), i);
5017    if (element.hasRole())
5018      composeCodeableConcept(t, "Contract", "role", element.getRole(), -1);
5019  }
5020
5021  protected void composeContractAnswerComponent(Complex parent, String parentType, String name, Contract.AnswerComponent element, int index) {
5022    if (element == null) 
5023      return;
5024    Complex t;
5025    if (Utilities.noString(parentType))
5026      t = parent;
5027    else {
5028      t = parent.predicate("fhir:"+parentType+'.'+name);
5029    }
5030    composeBackboneElement(t, "answer", name, element, index);
5031    if (element.hasValue())
5032      composeType(t, "Contract", "value", element.getValue(), -1);
5033  }
5034
5035  protected void composeContractContractAssetComponent(Complex parent, String parentType, String name, Contract.ContractAssetComponent element, int index) {
5036    if (element == null) 
5037      return;
5038    Complex t;
5039    if (Utilities.noString(parentType))
5040      t = parent;
5041    else {
5042      t = parent.predicate("fhir:"+parentType+'.'+name);
5043    }
5044    composeBackboneElement(t, "asset", name, element, index);
5045    if (element.hasScope())
5046      composeCodeableConcept(t, "Contract", "scope", element.getScope(), -1);
5047    for (int i = 0; i < element.getType().size(); i++)
5048      composeCodeableConcept(t, "Contract", "type", element.getType().get(i), i);
5049    for (int i = 0; i < element.getTypeReference().size(); i++)
5050      composeReference(t, "Contract", "typeReference", element.getTypeReference().get(i), i);
5051    for (int i = 0; i < element.getSubtype().size(); i++)
5052      composeCodeableConcept(t, "Contract", "subtype", element.getSubtype().get(i), i);
5053    if (element.hasRelationship())
5054      composeCoding(t, "Contract", "relationship", element.getRelationship(), -1);
5055    for (int i = 0; i < element.getContext().size(); i++)
5056      composeContractAssetContextComponent(t, "Contract", "context", element.getContext().get(i), i);
5057    if (element.hasConditionElement())
5058      composeString(t, "Contract", "condition", element.getConditionElement(), -1);
5059    for (int i = 0; i < element.getPeriodType().size(); i++)
5060      composeCodeableConcept(t, "Contract", "periodType", element.getPeriodType().get(i), i);
5061    for (int i = 0; i < element.getPeriod().size(); i++)
5062      composePeriod(t, "Contract", "period", element.getPeriod().get(i), i);
5063    for (int i = 0; i < element.getUsePeriod().size(); i++)
5064      composePeriod(t, "Contract", "usePeriod", element.getUsePeriod().get(i), i);
5065    if (element.hasTextElement())
5066      composeString(t, "Contract", "text", element.getTextElement(), -1);
5067    for (int i = 0; i < element.getLinkId().size(); i++)
5068      composeString(t, "Contract", "linkId", element.getLinkId().get(i), i);
5069    for (int i = 0; i < element.getAnswer().size(); i++)
5070      composeContractAnswerComponent(t, "Contract", "answer", element.getAnswer().get(i), i);
5071    for (int i = 0; i < element.getSecurityLabelNumber().size(); i++)
5072      composeUnsignedInt(t, "Contract", "securityLabelNumber", element.getSecurityLabelNumber().get(i), i);
5073    for (int i = 0; i < element.getValuedItem().size(); i++)
5074      composeContractValuedItemComponent(t, "Contract", "valuedItem", element.getValuedItem().get(i), i);
5075  }
5076
5077  protected void composeContractAssetContextComponent(Complex parent, String parentType, String name, Contract.AssetContextComponent element, int index) {
5078    if (element == null) 
5079      return;
5080    Complex t;
5081    if (Utilities.noString(parentType))
5082      t = parent;
5083    else {
5084      t = parent.predicate("fhir:"+parentType+'.'+name);
5085    }
5086    composeBackboneElement(t, "context", name, element, index);
5087    if (element.hasReference())
5088      composeReference(t, "Contract", "reference", element.getReference(), -1);
5089    for (int i = 0; i < element.getCode().size(); i++)
5090      composeCodeableConcept(t, "Contract", "code", element.getCode().get(i), i);
5091    if (element.hasTextElement())
5092      composeString(t, "Contract", "text", element.getTextElement(), -1);
5093  }
5094
5095  protected void composeContractValuedItemComponent(Complex parent, String parentType, String name, Contract.ValuedItemComponent element, int index) {
5096    if (element == null) 
5097      return;
5098    Complex t;
5099    if (Utilities.noString(parentType))
5100      t = parent;
5101    else {
5102      t = parent.predicate("fhir:"+parentType+'.'+name);
5103    }
5104    composeBackboneElement(t, "valuedItem", name, element, index);
5105    if (element.hasEntity())
5106      composeType(t, "Contract", "entity", element.getEntity(), -1);
5107    if (element.hasIdentifier())
5108      composeIdentifier(t, "Contract", "identifier", element.getIdentifier(), -1);
5109    if (element.hasEffectiveTimeElement())
5110      composeDateTime(t, "Contract", "effectiveTime", element.getEffectiveTimeElement(), -1);
5111    if (element.hasQuantity())
5112      composeQuantity(t, "Contract", "quantity", element.getQuantity(), -1);
5113    if (element.hasUnitPrice())
5114      composeMoney(t, "Contract", "unitPrice", element.getUnitPrice(), -1);
5115    if (element.hasFactorElement())
5116      composeDecimal(t, "Contract", "factor", element.getFactorElement(), -1);
5117    if (element.hasPointsElement())
5118      composeDecimal(t, "Contract", "points", element.getPointsElement(), -1);
5119    if (element.hasNet())
5120      composeMoney(t, "Contract", "net", element.getNet(), -1);
5121    if (element.hasPaymentElement())
5122      composeString(t, "Contract", "payment", element.getPaymentElement(), -1);
5123    if (element.hasPaymentDateElement())
5124      composeDateTime(t, "Contract", "paymentDate", element.getPaymentDateElement(), -1);
5125    if (element.hasResponsible())
5126      composeReference(t, "Contract", "responsible", element.getResponsible(), -1);
5127    if (element.hasRecipient())
5128      composeReference(t, "Contract", "recipient", element.getRecipient(), -1);
5129    for (int i = 0; i < element.getLinkId().size(); i++)
5130      composeString(t, "Contract", "linkId", element.getLinkId().get(i), i);
5131    for (int i = 0; i < element.getSecurityLabelNumber().size(); i++)
5132      composeUnsignedInt(t, "Contract", "securityLabelNumber", element.getSecurityLabelNumber().get(i), i);
5133  }
5134
5135  protected void composeContractActionComponent(Complex parent, String parentType, String name, Contract.ActionComponent element, int index) {
5136    if (element == null) 
5137      return;
5138    Complex t;
5139    if (Utilities.noString(parentType))
5140      t = parent;
5141    else {
5142      t = parent.predicate("fhir:"+parentType+'.'+name);
5143    }
5144    composeBackboneElement(t, "action", name, element, index);
5145    if (element.hasDoNotPerformElement())
5146      composeBoolean(t, "Contract", "doNotPerform", element.getDoNotPerformElement(), -1);
5147    if (element.hasType())
5148      composeCodeableConcept(t, "Contract", "type", element.getType(), -1);
5149    for (int i = 0; i < element.getSubject().size(); i++)
5150      composeContractActionSubjectComponent(t, "Contract", "subject", element.getSubject().get(i), i);
5151    if (element.hasIntent())
5152      composeCodeableConcept(t, "Contract", "intent", element.getIntent(), -1);
5153    for (int i = 0; i < element.getLinkId().size(); i++)
5154      composeString(t, "Contract", "linkId", element.getLinkId().get(i), i);
5155    if (element.hasStatus())
5156      composeCodeableConcept(t, "Contract", "status", element.getStatus(), -1);
5157    if (element.hasContext())
5158      composeReference(t, "Contract", "context", element.getContext(), -1);
5159    for (int i = 0; i < element.getContextLinkId().size(); i++)
5160      composeString(t, "Contract", "contextLinkId", element.getContextLinkId().get(i), i);
5161    if (element.hasOccurrence())
5162      composeType(t, "Contract", "occurrence", element.getOccurrence(), -1);
5163    for (int i = 0; i < element.getRequester().size(); i++)
5164      composeReference(t, "Contract", "requester", element.getRequester().get(i), i);
5165    for (int i = 0; i < element.getRequesterLinkId().size(); i++)
5166      composeString(t, "Contract", "requesterLinkId", element.getRequesterLinkId().get(i), i);
5167    for (int i = 0; i < element.getPerformerType().size(); i++)
5168      composeCodeableConcept(t, "Contract", "performerType", element.getPerformerType().get(i), i);
5169    if (element.hasPerformerRole())
5170      composeCodeableConcept(t, "Contract", "performerRole", element.getPerformerRole(), -1);
5171    if (element.hasPerformer())
5172      composeReference(t, "Contract", "performer", element.getPerformer(), -1);
5173    for (int i = 0; i < element.getPerformerLinkId().size(); i++)
5174      composeString(t, "Contract", "performerLinkId", element.getPerformerLinkId().get(i), i);
5175    for (int i = 0; i < element.getReasonCode().size(); i++)
5176      composeCodeableConcept(t, "Contract", "reasonCode", element.getReasonCode().get(i), i);
5177    for (int i = 0; i < element.getReasonReference().size(); i++)
5178      composeReference(t, "Contract", "reasonReference", element.getReasonReference().get(i), i);
5179    for (int i = 0; i < element.getReason().size(); i++)
5180      composeString(t, "Contract", "reason", element.getReason().get(i), i);
5181    for (int i = 0; i < element.getReasonLinkId().size(); i++)
5182      composeString(t, "Contract", "reasonLinkId", element.getReasonLinkId().get(i), i);
5183    for (int i = 0; i < element.getNote().size(); i++)
5184      composeAnnotation(t, "Contract", "note", element.getNote().get(i), i);
5185    for (int i = 0; i < element.getSecurityLabelNumber().size(); i++)
5186      composeUnsignedInt(t, "Contract", "securityLabelNumber", element.getSecurityLabelNumber().get(i), i);
5187  }
5188
5189  protected void composeContractActionSubjectComponent(Complex parent, String parentType, String name, Contract.ActionSubjectComponent element, int index) {
5190    if (element == null) 
5191      return;
5192    Complex t;
5193    if (Utilities.noString(parentType))
5194      t = parent;
5195    else {
5196      t = parent.predicate("fhir:"+parentType+'.'+name);
5197    }
5198    composeBackboneElement(t, "subject", name, element, index);
5199    for (int i = 0; i < element.getReference().size(); i++)
5200      composeReference(t, "Contract", "reference", element.getReference().get(i), i);
5201    if (element.hasRole())
5202      composeCodeableConcept(t, "Contract", "role", element.getRole(), -1);
5203  }
5204
5205  protected void composeContractSignatoryComponent(Complex parent, String parentType, String name, Contract.SignatoryComponent element, int index) {
5206    if (element == null) 
5207      return;
5208    Complex t;
5209    if (Utilities.noString(parentType))
5210      t = parent;
5211    else {
5212      t = parent.predicate("fhir:"+parentType+'.'+name);
5213    }
5214    composeBackboneElement(t, "signer", name, element, index);
5215    if (element.hasType())
5216      composeCoding(t, "Contract", "type", element.getType(), -1);
5217    if (element.hasParty())
5218      composeReference(t, "Contract", "party", element.getParty(), -1);
5219    for (int i = 0; i < element.getSignature().size(); i++)
5220      composeSignature(t, "Contract", "signature", element.getSignature().get(i), i);
5221  }
5222
5223  protected void composeContractFriendlyLanguageComponent(Complex parent, String parentType, String name, Contract.FriendlyLanguageComponent element, int index) {
5224    if (element == null) 
5225      return;
5226    Complex t;
5227    if (Utilities.noString(parentType))
5228      t = parent;
5229    else {
5230      t = parent.predicate("fhir:"+parentType+'.'+name);
5231    }
5232    composeBackboneElement(t, "friendly", name, element, index);
5233    if (element.hasContent())
5234      composeType(t, "Contract", "content", element.getContent(), -1);
5235  }
5236
5237  protected void composeContractLegalLanguageComponent(Complex parent, String parentType, String name, Contract.LegalLanguageComponent element, int index) {
5238    if (element == null) 
5239      return;
5240    Complex t;
5241    if (Utilities.noString(parentType))
5242      t = parent;
5243    else {
5244      t = parent.predicate("fhir:"+parentType+'.'+name);
5245    }
5246    composeBackboneElement(t, "legal", name, element, index);
5247    if (element.hasContent())
5248      composeType(t, "Contract", "content", element.getContent(), -1);
5249  }
5250
5251  protected void composeContractComputableLanguageComponent(Complex parent, String parentType, String name, Contract.ComputableLanguageComponent element, int index) {
5252    if (element == null) 
5253      return;
5254    Complex t;
5255    if (Utilities.noString(parentType))
5256      t = parent;
5257    else {
5258      t = parent.predicate("fhir:"+parentType+'.'+name);
5259    }
5260    composeBackboneElement(t, "rule", name, element, index);
5261    if (element.hasContent())
5262      composeType(t, "Contract", "content", element.getContent(), -1);
5263  }
5264
5265  protected void composeCoverage(Complex parent, String parentType, String name, Coverage element, int index) {
5266    if (element == null) 
5267      return;
5268    Complex t;
5269    if (Utilities.noString(parentType))
5270      t = parent;
5271    else {
5272      t = parent.predicate("fhir:"+parentType+'.'+name);
5273    }
5274    composeDomainResource(t, "Coverage", name, element, index);
5275    for (int i = 0; i < element.getIdentifier().size(); i++)
5276      composeIdentifier(t, "Coverage", "identifier", element.getIdentifier().get(i), i);
5277    if (element.hasStatusElement())
5278      composeEnum(t, "Coverage", "status", element.getStatusElement(), -1);
5279    if (element.hasType())
5280      composeCodeableConcept(t, "Coverage", "type", element.getType(), -1);
5281    if (element.hasPolicyHolder())
5282      composeReference(t, "Coverage", "policyHolder", element.getPolicyHolder(), -1);
5283    if (element.hasSubscriber())
5284      composeReference(t, "Coverage", "subscriber", element.getSubscriber(), -1);
5285    if (element.hasSubscriberIdElement())
5286      composeString(t, "Coverage", "subscriberId", element.getSubscriberIdElement(), -1);
5287    if (element.hasBeneficiary())
5288      composeReference(t, "Coverage", "beneficiary", element.getBeneficiary(), -1);
5289    if (element.hasDependentElement())
5290      composeString(t, "Coverage", "dependent", element.getDependentElement(), -1);
5291    if (element.hasRelationship())
5292      composeCodeableConcept(t, "Coverage", "relationship", element.getRelationship(), -1);
5293    if (element.hasPeriod())
5294      composePeriod(t, "Coverage", "period", element.getPeriod(), -1);
5295    for (int i = 0; i < element.getPayor().size(); i++)
5296      composeReference(t, "Coverage", "payor", element.getPayor().get(i), i);
5297    for (int i = 0; i < element.getClass_().size(); i++)
5298      composeCoverageClassComponent(t, "Coverage", "class", element.getClass_().get(i), i);
5299    if (element.hasOrderElement())
5300      composePositiveInt(t, "Coverage", "order", element.getOrderElement(), -1);
5301    if (element.hasNetworkElement())
5302      composeString(t, "Coverage", "network", element.getNetworkElement(), -1);
5303    for (int i = 0; i < element.getCostToBeneficiary().size(); i++)
5304      composeCoverageCostToBeneficiaryComponent(t, "Coverage", "costToBeneficiary", element.getCostToBeneficiary().get(i), i);
5305    if (element.hasSubrogationElement())
5306      composeBoolean(t, "Coverage", "subrogation", element.getSubrogationElement(), -1);
5307    for (int i = 0; i < element.getContract().size(); i++)
5308      composeReference(t, "Coverage", "contract", element.getContract().get(i), i);
5309  }
5310
5311  protected void composeCoverageClassComponent(Complex parent, String parentType, String name, Coverage.ClassComponent element, int index) {
5312    if (element == null) 
5313      return;
5314    Complex t;
5315    if (Utilities.noString(parentType))
5316      t = parent;
5317    else {
5318      t = parent.predicate("fhir:"+parentType+'.'+name);
5319    }
5320    composeBackboneElement(t, "class", name, element, index);
5321    if (element.hasType())
5322      composeCodeableConcept(t, "Coverage", "type", element.getType(), -1);
5323    if (element.hasValueElement())
5324      composeString(t, "Coverage", "value", element.getValueElement(), -1);
5325    if (element.hasNameElement())
5326      composeString(t, "Coverage", "name", element.getNameElement(), -1);
5327  }
5328
5329  protected void composeCoverageCostToBeneficiaryComponent(Complex parent, String parentType, String name, Coverage.CostToBeneficiaryComponent element, int index) {
5330    if (element == null) 
5331      return;
5332    Complex t;
5333    if (Utilities.noString(parentType))
5334      t = parent;
5335    else {
5336      t = parent.predicate("fhir:"+parentType+'.'+name);
5337    }
5338    composeBackboneElement(t, "costToBeneficiary", name, element, index);
5339    if (element.hasType())
5340      composeCodeableConcept(t, "Coverage", "type", element.getType(), -1);
5341    if (element.hasValue())
5342      composeType(t, "Coverage", "value", element.getValue(), -1);
5343    for (int i = 0; i < element.getException().size(); i++)
5344      composeCoverageExemptionComponent(t, "Coverage", "exception", element.getException().get(i), i);
5345  }
5346
5347  protected void composeCoverageExemptionComponent(Complex parent, String parentType, String name, Coverage.ExemptionComponent element, int index) {
5348    if (element == null) 
5349      return;
5350    Complex t;
5351    if (Utilities.noString(parentType))
5352      t = parent;
5353    else {
5354      t = parent.predicate("fhir:"+parentType+'.'+name);
5355    }
5356    composeBackboneElement(t, "exception", name, element, index);
5357    if (element.hasType())
5358      composeCodeableConcept(t, "Coverage", "type", element.getType(), -1);
5359    if (element.hasPeriod())
5360      composePeriod(t, "Coverage", "period", element.getPeriod(), -1);
5361  }
5362
5363  protected void composeCoverageEligibilityRequest(Complex parent, String parentType, String name, CoverageEligibilityRequest element, int index) {
5364    if (element == null) 
5365      return;
5366    Complex t;
5367    if (Utilities.noString(parentType))
5368      t = parent;
5369    else {
5370      t = parent.predicate("fhir:"+parentType+'.'+name);
5371    }
5372    composeDomainResource(t, "CoverageEligibilityRequest", name, element, index);
5373    for (int i = 0; i < element.getIdentifier().size(); i++)
5374      composeIdentifier(t, "CoverageEligibilityRequest", "identifier", element.getIdentifier().get(i), i);
5375    if (element.hasStatusElement())
5376      composeEnum(t, "CoverageEligibilityRequest", "status", element.getStatusElement(), -1);
5377    if (element.hasPriority())
5378      composeCodeableConcept(t, "CoverageEligibilityRequest", "priority", element.getPriority(), -1);
5379    for (int i = 0; i < element.getPurpose().size(); i++)
5380      composeEnum(t, "CoverageEligibilityRequest", "purpose", element.getPurpose().get(i), i);
5381    if (element.hasPatient())
5382      composeReference(t, "CoverageEligibilityRequest", "patient", element.getPatient(), -1);
5383    if (element.hasServiced())
5384      composeType(t, "CoverageEligibilityRequest", "serviced", element.getServiced(), -1);
5385    if (element.hasCreatedElement())
5386      composeDateTime(t, "CoverageEligibilityRequest", "created", element.getCreatedElement(), -1);
5387    if (element.hasEnterer())
5388      composeReference(t, "CoverageEligibilityRequest", "enterer", element.getEnterer(), -1);
5389    if (element.hasProvider())
5390      composeReference(t, "CoverageEligibilityRequest", "provider", element.getProvider(), -1);
5391    if (element.hasInsurer())
5392      composeReference(t, "CoverageEligibilityRequest", "insurer", element.getInsurer(), -1);
5393    if (element.hasFacility())
5394      composeReference(t, "CoverageEligibilityRequest", "facility", element.getFacility(), -1);
5395    for (int i = 0; i < element.getSupportingInfo().size(); i++)
5396      composeCoverageEligibilityRequestSupportingInformationComponent(t, "CoverageEligibilityRequest", "supportingInfo", element.getSupportingInfo().get(i), i);
5397    for (int i = 0; i < element.getInsurance().size(); i++)
5398      composeCoverageEligibilityRequestInsuranceComponent(t, "CoverageEligibilityRequest", "insurance", element.getInsurance().get(i), i);
5399    for (int i = 0; i < element.getItem().size(); i++)
5400      composeCoverageEligibilityRequestDetailsComponent(t, "CoverageEligibilityRequest", "item", element.getItem().get(i), i);
5401  }
5402
5403  protected void composeCoverageEligibilityRequestSupportingInformationComponent(Complex parent, String parentType, String name, CoverageEligibilityRequest.SupportingInformationComponent element, int index) {
5404    if (element == null) 
5405      return;
5406    Complex t;
5407    if (Utilities.noString(parentType))
5408      t = parent;
5409    else {
5410      t = parent.predicate("fhir:"+parentType+'.'+name);
5411    }
5412    composeBackboneElement(t, "supportingInfo", name, element, index);
5413    if (element.hasSequenceElement())
5414      composePositiveInt(t, "CoverageEligibilityRequest", "sequence", element.getSequenceElement(), -1);
5415    if (element.hasInformation())
5416      composeReference(t, "CoverageEligibilityRequest", "information", element.getInformation(), -1);
5417    if (element.hasAppliesToAllElement())
5418      composeBoolean(t, "CoverageEligibilityRequest", "appliesToAll", element.getAppliesToAllElement(), -1);
5419  }
5420
5421  protected void composeCoverageEligibilityRequestInsuranceComponent(Complex parent, String parentType, String name, CoverageEligibilityRequest.InsuranceComponent element, int index) {
5422    if (element == null) 
5423      return;
5424    Complex t;
5425    if (Utilities.noString(parentType))
5426      t = parent;
5427    else {
5428      t = parent.predicate("fhir:"+parentType+'.'+name);
5429    }
5430    composeBackboneElement(t, "insurance", name, element, index);
5431    if (element.hasFocalElement())
5432      composeBoolean(t, "CoverageEligibilityRequest", "focal", element.getFocalElement(), -1);
5433    if (element.hasCoverage())
5434      composeReference(t, "CoverageEligibilityRequest", "coverage", element.getCoverage(), -1);
5435    if (element.hasBusinessArrangementElement())
5436      composeString(t, "CoverageEligibilityRequest", "businessArrangement", element.getBusinessArrangementElement(), -1);
5437  }
5438
5439  protected void composeCoverageEligibilityRequestDetailsComponent(Complex parent, String parentType, String name, CoverageEligibilityRequest.DetailsComponent element, int index) {
5440    if (element == null) 
5441      return;
5442    Complex t;
5443    if (Utilities.noString(parentType))
5444      t = parent;
5445    else {
5446      t = parent.predicate("fhir:"+parentType+'.'+name);
5447    }
5448    composeBackboneElement(t, "item", name, element, index);
5449    for (int i = 0; i < element.getSupportingInfoSequence().size(); i++)
5450      composePositiveInt(t, "CoverageEligibilityRequest", "supportingInfoSequence", element.getSupportingInfoSequence().get(i), i);
5451    if (element.hasCategory())
5452      composeCodeableConcept(t, "CoverageEligibilityRequest", "category", element.getCategory(), -1);
5453    if (element.hasProductOrService())
5454      composeCodeableConcept(t, "CoverageEligibilityRequest", "productOrService", element.getProductOrService(), -1);
5455    for (int i = 0; i < element.getModifier().size(); i++)
5456      composeCodeableConcept(t, "CoverageEligibilityRequest", "modifier", element.getModifier().get(i), i);
5457    if (element.hasProvider())
5458      composeReference(t, "CoverageEligibilityRequest", "provider", element.getProvider(), -1);
5459    if (element.hasQuantity())
5460      composeQuantity(t, "CoverageEligibilityRequest", "quantity", element.getQuantity(), -1);
5461    if (element.hasUnitPrice())
5462      composeMoney(t, "CoverageEligibilityRequest", "unitPrice", element.getUnitPrice(), -1);
5463    if (element.hasFacility())
5464      composeReference(t, "CoverageEligibilityRequest", "facility", element.getFacility(), -1);
5465    for (int i = 0; i < element.getDiagnosis().size(); i++)
5466      composeCoverageEligibilityRequestDiagnosisComponent(t, "CoverageEligibilityRequest", "diagnosis", element.getDiagnosis().get(i), i);
5467    for (int i = 0; i < element.getDetail().size(); i++)
5468      composeReference(t, "CoverageEligibilityRequest", "detail", element.getDetail().get(i), i);
5469  }
5470
5471  protected void composeCoverageEligibilityRequestDiagnosisComponent(Complex parent, String parentType, String name, CoverageEligibilityRequest.DiagnosisComponent element, int index) {
5472    if (element == null) 
5473      return;
5474    Complex t;
5475    if (Utilities.noString(parentType))
5476      t = parent;
5477    else {
5478      t = parent.predicate("fhir:"+parentType+'.'+name);
5479    }
5480    composeBackboneElement(t, "diagnosis", name, element, index);
5481    if (element.hasDiagnosis())
5482      composeType(t, "CoverageEligibilityRequest", "diagnosis", element.getDiagnosis(), -1);
5483  }
5484
5485  protected void composeCoverageEligibilityResponse(Complex parent, String parentType, String name, CoverageEligibilityResponse element, int index) {
5486    if (element == null) 
5487      return;
5488    Complex t;
5489    if (Utilities.noString(parentType))
5490      t = parent;
5491    else {
5492      t = parent.predicate("fhir:"+parentType+'.'+name);
5493    }
5494    composeDomainResource(t, "CoverageEligibilityResponse", name, element, index);
5495    for (int i = 0; i < element.getIdentifier().size(); i++)
5496      composeIdentifier(t, "CoverageEligibilityResponse", "identifier", element.getIdentifier().get(i), i);
5497    if (element.hasStatusElement())
5498      composeEnum(t, "CoverageEligibilityResponse", "status", element.getStatusElement(), -1);
5499    for (int i = 0; i < element.getPurpose().size(); i++)
5500      composeEnum(t, "CoverageEligibilityResponse", "purpose", element.getPurpose().get(i), i);
5501    if (element.hasPatient())
5502      composeReference(t, "CoverageEligibilityResponse", "patient", element.getPatient(), -1);
5503    if (element.hasServiced())
5504      composeType(t, "CoverageEligibilityResponse", "serviced", element.getServiced(), -1);
5505    if (element.hasCreatedElement())
5506      composeDateTime(t, "CoverageEligibilityResponse", "created", element.getCreatedElement(), -1);
5507    if (element.hasRequestor())
5508      composeReference(t, "CoverageEligibilityResponse", "requestor", element.getRequestor(), -1);
5509    if (element.hasRequest())
5510      composeReference(t, "CoverageEligibilityResponse", "request", element.getRequest(), -1);
5511    if (element.hasOutcomeElement())
5512      composeEnum(t, "CoverageEligibilityResponse", "outcome", element.getOutcomeElement(), -1);
5513    if (element.hasDispositionElement())
5514      composeString(t, "CoverageEligibilityResponse", "disposition", element.getDispositionElement(), -1);
5515    if (element.hasInsurer())
5516      composeReference(t, "CoverageEligibilityResponse", "insurer", element.getInsurer(), -1);
5517    for (int i = 0; i < element.getInsurance().size(); i++)
5518      composeCoverageEligibilityResponseInsuranceComponent(t, "CoverageEligibilityResponse", "insurance", element.getInsurance().get(i), i);
5519    if (element.hasPreAuthRefElement())
5520      composeString(t, "CoverageEligibilityResponse", "preAuthRef", element.getPreAuthRefElement(), -1);
5521    if (element.hasForm())
5522      composeCodeableConcept(t, "CoverageEligibilityResponse", "form", element.getForm(), -1);
5523    for (int i = 0; i < element.getError().size(); i++)
5524      composeCoverageEligibilityResponseErrorsComponent(t, "CoverageEligibilityResponse", "error", element.getError().get(i), i);
5525  }
5526
5527  protected void composeCoverageEligibilityResponseInsuranceComponent(Complex parent, String parentType, String name, CoverageEligibilityResponse.InsuranceComponent element, int index) {
5528    if (element == null) 
5529      return;
5530    Complex t;
5531    if (Utilities.noString(parentType))
5532      t = parent;
5533    else {
5534      t = parent.predicate("fhir:"+parentType+'.'+name);
5535    }
5536    composeBackboneElement(t, "insurance", name, element, index);
5537    if (element.hasCoverage())
5538      composeReference(t, "CoverageEligibilityResponse", "coverage", element.getCoverage(), -1);
5539    if (element.hasInforceElement())
5540      composeBoolean(t, "CoverageEligibilityResponse", "inforce", element.getInforceElement(), -1);
5541    if (element.hasBenefitPeriod())
5542      composePeriod(t, "CoverageEligibilityResponse", "benefitPeriod", element.getBenefitPeriod(), -1);
5543    for (int i = 0; i < element.getItem().size(); i++)
5544      composeCoverageEligibilityResponseItemsComponent(t, "CoverageEligibilityResponse", "item", element.getItem().get(i), i);
5545  }
5546
5547  protected void composeCoverageEligibilityResponseItemsComponent(Complex parent, String parentType, String name, CoverageEligibilityResponse.ItemsComponent element, int index) {
5548    if (element == null) 
5549      return;
5550    Complex t;
5551    if (Utilities.noString(parentType))
5552      t = parent;
5553    else {
5554      t = parent.predicate("fhir:"+parentType+'.'+name);
5555    }
5556    composeBackboneElement(t, "item", name, element, index);
5557    if (element.hasCategory())
5558      composeCodeableConcept(t, "CoverageEligibilityResponse", "category", element.getCategory(), -1);
5559    if (element.hasProductOrService())
5560      composeCodeableConcept(t, "CoverageEligibilityResponse", "productOrService", element.getProductOrService(), -1);
5561    for (int i = 0; i < element.getModifier().size(); i++)
5562      composeCodeableConcept(t, "CoverageEligibilityResponse", "modifier", element.getModifier().get(i), i);
5563    if (element.hasProvider())
5564      composeReference(t, "CoverageEligibilityResponse", "provider", element.getProvider(), -1);
5565    if (element.hasExcludedElement())
5566      composeBoolean(t, "CoverageEligibilityResponse", "excluded", element.getExcludedElement(), -1);
5567    if (element.hasNameElement())
5568      composeString(t, "CoverageEligibilityResponse", "name", element.getNameElement(), -1);
5569    if (element.hasDescriptionElement())
5570      composeString(t, "CoverageEligibilityResponse", "description", element.getDescriptionElement(), -1);
5571    if (element.hasNetwork())
5572      composeCodeableConcept(t, "CoverageEligibilityResponse", "network", element.getNetwork(), -1);
5573    if (element.hasUnit())
5574      composeCodeableConcept(t, "CoverageEligibilityResponse", "unit", element.getUnit(), -1);
5575    if (element.hasTerm())
5576      composeCodeableConcept(t, "CoverageEligibilityResponse", "term", element.getTerm(), -1);
5577    for (int i = 0; i < element.getBenefit().size(); i++)
5578      composeCoverageEligibilityResponseBenefitComponent(t, "CoverageEligibilityResponse", "benefit", element.getBenefit().get(i), i);
5579    if (element.hasAuthorizationRequiredElement())
5580      composeBoolean(t, "CoverageEligibilityResponse", "authorizationRequired", element.getAuthorizationRequiredElement(), -1);
5581    for (int i = 0; i < element.getAuthorizationSupporting().size(); i++)
5582      composeCodeableConcept(t, "CoverageEligibilityResponse", "authorizationSupporting", element.getAuthorizationSupporting().get(i), i);
5583    if (element.hasAuthorizationUrlElement())
5584      composeUri(t, "CoverageEligibilityResponse", "authorizationUrl", element.getAuthorizationUrlElement(), -1);
5585  }
5586
5587  protected void composeCoverageEligibilityResponseBenefitComponent(Complex parent, String parentType, String name, CoverageEligibilityResponse.BenefitComponent element, int index) {
5588    if (element == null) 
5589      return;
5590    Complex t;
5591    if (Utilities.noString(parentType))
5592      t = parent;
5593    else {
5594      t = parent.predicate("fhir:"+parentType+'.'+name);
5595    }
5596    composeBackboneElement(t, "benefit", name, element, index);
5597    if (element.hasType())
5598      composeCodeableConcept(t, "CoverageEligibilityResponse", "type", element.getType(), -1);
5599    if (element.hasAllowed())
5600      composeType(t, "CoverageEligibilityResponse", "allowed", element.getAllowed(), -1);
5601    if (element.hasUsed())
5602      composeType(t, "CoverageEligibilityResponse", "used", element.getUsed(), -1);
5603  }
5604
5605  protected void composeCoverageEligibilityResponseErrorsComponent(Complex parent, String parentType, String name, CoverageEligibilityResponse.ErrorsComponent element, int index) {
5606    if (element == null) 
5607      return;
5608    Complex t;
5609    if (Utilities.noString(parentType))
5610      t = parent;
5611    else {
5612      t = parent.predicate("fhir:"+parentType+'.'+name);
5613    }
5614    composeBackboneElement(t, "error", name, element, index);
5615    if (element.hasCode())
5616      composeCodeableConcept(t, "CoverageEligibilityResponse", "code", element.getCode(), -1);
5617  }
5618
5619  protected void composeDetectedIssue(Complex parent, String parentType, String name, DetectedIssue element, int index) {
5620    if (element == null) 
5621      return;
5622    Complex t;
5623    if (Utilities.noString(parentType))
5624      t = parent;
5625    else {
5626      t = parent.predicate("fhir:"+parentType+'.'+name);
5627    }
5628    composeDomainResource(t, "DetectedIssue", name, element, index);
5629    for (int i = 0; i < element.getIdentifier().size(); i++)
5630      composeIdentifier(t, "DetectedIssue", "identifier", element.getIdentifier().get(i), i);
5631    if (element.hasStatusElement())
5632      composeEnum(t, "DetectedIssue", "status", element.getStatusElement(), -1);
5633    if (element.hasCode())
5634      composeCodeableConcept(t, "DetectedIssue", "code", element.getCode(), -1);
5635    if (element.hasSeverityElement())
5636      composeEnum(t, "DetectedIssue", "severity", element.getSeverityElement(), -1);
5637    if (element.hasPatient())
5638      composeReference(t, "DetectedIssue", "patient", element.getPatient(), -1);
5639    if (element.hasIdentified())
5640      composeType(t, "DetectedIssue", "identified", element.getIdentified(), -1);
5641    if (element.hasAuthor())
5642      composeReference(t, "DetectedIssue", "author", element.getAuthor(), -1);
5643    for (int i = 0; i < element.getImplicated().size(); i++)
5644      composeReference(t, "DetectedIssue", "implicated", element.getImplicated().get(i), i);
5645    for (int i = 0; i < element.getEvidence().size(); i++)
5646      composeDetectedIssueDetectedIssueEvidenceComponent(t, "DetectedIssue", "evidence", element.getEvidence().get(i), i);
5647    if (element.hasDetailElement())
5648      composeString(t, "DetectedIssue", "detail", element.getDetailElement(), -1);
5649    if (element.hasReferenceElement())
5650      composeUri(t, "DetectedIssue", "reference", element.getReferenceElement(), -1);
5651    for (int i = 0; i < element.getMitigation().size(); i++)
5652      composeDetectedIssueDetectedIssueMitigationComponent(t, "DetectedIssue", "mitigation", element.getMitigation().get(i), i);
5653  }
5654
5655  protected void composeDetectedIssueDetectedIssueEvidenceComponent(Complex parent, String parentType, String name, DetectedIssue.DetectedIssueEvidenceComponent element, int index) {
5656    if (element == null) 
5657      return;
5658    Complex t;
5659    if (Utilities.noString(parentType))
5660      t = parent;
5661    else {
5662      t = parent.predicate("fhir:"+parentType+'.'+name);
5663    }
5664    composeBackboneElement(t, "evidence", name, element, index);
5665    for (int i = 0; i < element.getCode().size(); i++)
5666      composeCodeableConcept(t, "DetectedIssue", "code", element.getCode().get(i), i);
5667    for (int i = 0; i < element.getDetail().size(); i++)
5668      composeReference(t, "DetectedIssue", "detail", element.getDetail().get(i), i);
5669  }
5670
5671  protected void composeDetectedIssueDetectedIssueMitigationComponent(Complex parent, String parentType, String name, DetectedIssue.DetectedIssueMitigationComponent element, int index) {
5672    if (element == null) 
5673      return;
5674    Complex t;
5675    if (Utilities.noString(parentType))
5676      t = parent;
5677    else {
5678      t = parent.predicate("fhir:"+parentType+'.'+name);
5679    }
5680    composeBackboneElement(t, "mitigation", name, element, index);
5681    if (element.hasAction())
5682      composeCodeableConcept(t, "DetectedIssue", "action", element.getAction(), -1);
5683    if (element.hasDateElement())
5684      composeDateTime(t, "DetectedIssue", "date", element.getDateElement(), -1);
5685    if (element.hasAuthor())
5686      composeReference(t, "DetectedIssue", "author", element.getAuthor(), -1);
5687  }
5688
5689  protected void composeDevice(Complex parent, String parentType, String name, Device element, int index) {
5690    if (element == null) 
5691      return;
5692    Complex t;
5693    if (Utilities.noString(parentType))
5694      t = parent;
5695    else {
5696      t = parent.predicate("fhir:"+parentType+'.'+name);
5697    }
5698    composeDomainResource(t, "Device", name, element, index);
5699    for (int i = 0; i < element.getIdentifier().size(); i++)
5700      composeIdentifier(t, "Device", "identifier", element.getIdentifier().get(i), i);
5701    if (element.hasDefinition())
5702      composeReference(t, "Device", "definition", element.getDefinition(), -1);
5703    for (int i = 0; i < element.getUdiCarrier().size(); i++)
5704      composeDeviceDeviceUdiCarrierComponent(t, "Device", "udiCarrier", element.getUdiCarrier().get(i), i);
5705    if (element.hasStatusElement())
5706      composeEnum(t, "Device", "status", element.getStatusElement(), -1);
5707    for (int i = 0; i < element.getStatusReason().size(); i++)
5708      composeCodeableConcept(t, "Device", "statusReason", element.getStatusReason().get(i), i);
5709    if (element.hasDistinctIdentifierElement())
5710      composeString(t, "Device", "distinctIdentifier", element.getDistinctIdentifierElement(), -1);
5711    if (element.hasManufacturerElement())
5712      composeString(t, "Device", "manufacturer", element.getManufacturerElement(), -1);
5713    if (element.hasManufactureDateElement())
5714      composeDateTime(t, "Device", "manufactureDate", element.getManufactureDateElement(), -1);
5715    if (element.hasExpirationDateElement())
5716      composeDateTime(t, "Device", "expirationDate", element.getExpirationDateElement(), -1);
5717    if (element.hasLotNumberElement())
5718      composeString(t, "Device", "lotNumber", element.getLotNumberElement(), -1);
5719    if (element.hasSerialNumberElement())
5720      composeString(t, "Device", "serialNumber", element.getSerialNumberElement(), -1);
5721    for (int i = 0; i < element.getDeviceName().size(); i++)
5722      composeDeviceDeviceDeviceNameComponent(t, "Device", "deviceName", element.getDeviceName().get(i), i);
5723    if (element.hasModelNumberElement())
5724      composeString(t, "Device", "modelNumber", element.getModelNumberElement(), -1);
5725    if (element.hasPartNumberElement())
5726      composeString(t, "Device", "partNumber", element.getPartNumberElement(), -1);
5727    if (element.hasType())
5728      composeCodeableConcept(t, "Device", "type", element.getType(), -1);
5729    for (int i = 0; i < element.getSpecialization().size(); i++)
5730      composeDeviceDeviceSpecializationComponent(t, "Device", "specialization", element.getSpecialization().get(i), i);
5731    for (int i = 0; i < element.getVersion().size(); i++)
5732      composeDeviceDeviceVersionComponent(t, "Device", "version", element.getVersion().get(i), i);
5733    for (int i = 0; i < element.getProperty().size(); i++)
5734      composeDeviceDevicePropertyComponent(t, "Device", "property", element.getProperty().get(i), i);
5735    if (element.hasPatient())
5736      composeReference(t, "Device", "patient", element.getPatient(), -1);
5737    if (element.hasOwner())
5738      composeReference(t, "Device", "owner", element.getOwner(), -1);
5739    for (int i = 0; i < element.getContact().size(); i++)
5740      composeContactPoint(t, "Device", "contact", element.getContact().get(i), i);
5741    if (element.hasLocation())
5742      composeReference(t, "Device", "location", element.getLocation(), -1);
5743    if (element.hasUrlElement())
5744      composeUri(t, "Device", "url", element.getUrlElement(), -1);
5745    for (int i = 0; i < element.getNote().size(); i++)
5746      composeAnnotation(t, "Device", "note", element.getNote().get(i), i);
5747    for (int i = 0; i < element.getSafety().size(); i++)
5748      composeCodeableConcept(t, "Device", "safety", element.getSafety().get(i), i);
5749    if (element.hasParent())
5750      composeReference(t, "Device", "parent", element.getParent(), -1);
5751  }
5752
5753  protected void composeDeviceDeviceUdiCarrierComponent(Complex parent, String parentType, String name, Device.DeviceUdiCarrierComponent element, int index) {
5754    if (element == null) 
5755      return;
5756    Complex t;
5757    if (Utilities.noString(parentType))
5758      t = parent;
5759    else {
5760      t = parent.predicate("fhir:"+parentType+'.'+name);
5761    }
5762    composeBackboneElement(t, "udiCarrier", name, element, index);
5763    if (element.hasDeviceIdentifierElement())
5764      composeString(t, "Device", "deviceIdentifier", element.getDeviceIdentifierElement(), -1);
5765    if (element.hasIssuerElement())
5766      composeUri(t, "Device", "issuer", element.getIssuerElement(), -1);
5767    if (element.hasJurisdictionElement())
5768      composeUri(t, "Device", "jurisdiction", element.getJurisdictionElement(), -1);
5769    if (element.hasCarrierAIDCElement())
5770      composeBase64Binary(t, "Device", "carrierAIDC", element.getCarrierAIDCElement(), -1);
5771    if (element.hasCarrierHRFElement())
5772      composeString(t, "Device", "carrierHRF", element.getCarrierHRFElement(), -1);
5773    if (element.hasEntryTypeElement())
5774      composeEnum(t, "Device", "entryType", element.getEntryTypeElement(), -1);
5775  }
5776
5777  protected void composeDeviceDeviceDeviceNameComponent(Complex parent, String parentType, String name, Device.DeviceDeviceNameComponent element, int index) {
5778    if (element == null) 
5779      return;
5780    Complex t;
5781    if (Utilities.noString(parentType))
5782      t = parent;
5783    else {
5784      t = parent.predicate("fhir:"+parentType+'.'+name);
5785    }
5786    composeBackboneElement(t, "deviceName", name, element, index);
5787    if (element.hasNameElement())
5788      composeString(t, "Device", "name", element.getNameElement(), -1);
5789    if (element.hasTypeElement())
5790      composeEnum(t, "Device", "type", element.getTypeElement(), -1);
5791  }
5792
5793  protected void composeDeviceDeviceSpecializationComponent(Complex parent, String parentType, String name, Device.DeviceSpecializationComponent element, int index) {
5794    if (element == null) 
5795      return;
5796    Complex t;
5797    if (Utilities.noString(parentType))
5798      t = parent;
5799    else {
5800      t = parent.predicate("fhir:"+parentType+'.'+name);
5801    }
5802    composeBackboneElement(t, "specialization", name, element, index);
5803    if (element.hasSystemType())
5804      composeCodeableConcept(t, "Device", "systemType", element.getSystemType(), -1);
5805    if (element.hasVersionElement())
5806      composeString(t, "Device", "version", element.getVersionElement(), -1);
5807  }
5808
5809  protected void composeDeviceDeviceVersionComponent(Complex parent, String parentType, String name, Device.DeviceVersionComponent element, int index) {
5810    if (element == null) 
5811      return;
5812    Complex t;
5813    if (Utilities.noString(parentType))
5814      t = parent;
5815    else {
5816      t = parent.predicate("fhir:"+parentType+'.'+name);
5817    }
5818    composeBackboneElement(t, "version", name, element, index);
5819    if (element.hasType())
5820      composeCodeableConcept(t, "Device", "type", element.getType(), -1);
5821    if (element.hasComponent())
5822      composeIdentifier(t, "Device", "component", element.getComponent(), -1);
5823    if (element.hasValueElement())
5824      composeString(t, "Device", "value", element.getValueElement(), -1);
5825  }
5826
5827  protected void composeDeviceDevicePropertyComponent(Complex parent, String parentType, String name, Device.DevicePropertyComponent element, int index) {
5828    if (element == null) 
5829      return;
5830    Complex t;
5831    if (Utilities.noString(parentType))
5832      t = parent;
5833    else {
5834      t = parent.predicate("fhir:"+parentType+'.'+name);
5835    }
5836    composeBackboneElement(t, "property", name, element, index);
5837    if (element.hasType())
5838      composeCodeableConcept(t, "Device", "type", element.getType(), -1);
5839    for (int i = 0; i < element.getValueQuantity().size(); i++)
5840      composeQuantity(t, "Device", "valueQuantity", element.getValueQuantity().get(i), i);
5841    for (int i = 0; i < element.getValueCode().size(); i++)
5842      composeCodeableConcept(t, "Device", "valueCode", element.getValueCode().get(i), i);
5843  }
5844
5845  protected void composeDeviceDefinition(Complex parent, String parentType, String name, DeviceDefinition element, int index) {
5846    if (element == null) 
5847      return;
5848    Complex t;
5849    if (Utilities.noString(parentType))
5850      t = parent;
5851    else {
5852      t = parent.predicate("fhir:"+parentType+'.'+name);
5853    }
5854    composeDomainResource(t, "DeviceDefinition", name, element, index);
5855    for (int i = 0; i < element.getIdentifier().size(); i++)
5856      composeIdentifier(t, "DeviceDefinition", "identifier", element.getIdentifier().get(i), i);
5857    for (int i = 0; i < element.getUdiDeviceIdentifier().size(); i++)
5858      composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(t, "DeviceDefinition", "udiDeviceIdentifier", element.getUdiDeviceIdentifier().get(i), i);
5859    if (element.hasManufacturer())
5860      composeType(t, "DeviceDefinition", "manufacturer", element.getManufacturer(), -1);
5861    for (int i = 0; i < element.getDeviceName().size(); i++)
5862      composeDeviceDefinitionDeviceDefinitionDeviceNameComponent(t, "DeviceDefinition", "deviceName", element.getDeviceName().get(i), i);
5863    if (element.hasModelNumberElement())
5864      composeString(t, "DeviceDefinition", "modelNumber", element.getModelNumberElement(), -1);
5865    if (element.hasType())
5866      composeCodeableConcept(t, "DeviceDefinition", "type", element.getType(), -1);
5867    for (int i = 0; i < element.getSpecialization().size(); i++)
5868      composeDeviceDefinitionDeviceDefinitionSpecializationComponent(t, "DeviceDefinition", "specialization", element.getSpecialization().get(i), i);
5869    for (int i = 0; i < element.getVersion().size(); i++)
5870      composeString(t, "DeviceDefinition", "version", element.getVersion().get(i), i);
5871    for (int i = 0; i < element.getSafety().size(); i++)
5872      composeCodeableConcept(t, "DeviceDefinition", "safety", element.getSafety().get(i), i);
5873    for (int i = 0; i < element.getShelfLifeStorage().size(); i++)
5874      composeProductShelfLife(t, "DeviceDefinition", "shelfLifeStorage", element.getShelfLifeStorage().get(i), i);
5875    if (element.hasPhysicalCharacteristics())
5876      composeProdCharacteristic(t, "DeviceDefinition", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
5877    for (int i = 0; i < element.getLanguageCode().size(); i++)
5878      composeCodeableConcept(t, "DeviceDefinition", "languageCode", element.getLanguageCode().get(i), i);
5879    for (int i = 0; i < element.getCapability().size(); i++)
5880      composeDeviceDefinitionDeviceDefinitionCapabilityComponent(t, "DeviceDefinition", "capability", element.getCapability().get(i), i);
5881    for (int i = 0; i < element.getProperty().size(); i++)
5882      composeDeviceDefinitionDeviceDefinitionPropertyComponent(t, "DeviceDefinition", "property", element.getProperty().get(i), i);
5883    if (element.hasOwner())
5884      composeReference(t, "DeviceDefinition", "owner", element.getOwner(), -1);
5885    for (int i = 0; i < element.getContact().size(); i++)
5886      composeContactPoint(t, "DeviceDefinition", "contact", element.getContact().get(i), i);
5887    if (element.hasUrlElement())
5888      composeUri(t, "DeviceDefinition", "url", element.getUrlElement(), -1);
5889    if (element.hasOnlineInformationElement())
5890      composeUri(t, "DeviceDefinition", "onlineInformation", element.getOnlineInformationElement(), -1);
5891    for (int i = 0; i < element.getNote().size(); i++)
5892      composeAnnotation(t, "DeviceDefinition", "note", element.getNote().get(i), i);
5893    if (element.hasQuantity())
5894      composeQuantity(t, "DeviceDefinition", "quantity", element.getQuantity(), -1);
5895    if (element.hasParentDevice())
5896      composeReference(t, "DeviceDefinition", "parentDevice", element.getParentDevice(), -1);
5897    for (int i = 0; i < element.getMaterial().size(); i++)
5898      composeDeviceDefinitionDeviceDefinitionMaterialComponent(t, "DeviceDefinition", "material", element.getMaterial().get(i), i);
5899  }
5900
5901  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element, int index) {
5902    if (element == null) 
5903      return;
5904    Complex t;
5905    if (Utilities.noString(parentType))
5906      t = parent;
5907    else {
5908      t = parent.predicate("fhir:"+parentType+'.'+name);
5909    }
5910    composeBackboneElement(t, "udiDeviceIdentifier", name, element, index);
5911    if (element.hasDeviceIdentifierElement())
5912      composeString(t, "DeviceDefinition", "deviceIdentifier", element.getDeviceIdentifierElement(), -1);
5913    if (element.hasIssuerElement())
5914      composeUri(t, "DeviceDefinition", "issuer", element.getIssuerElement(), -1);
5915    if (element.hasJurisdictionElement())
5916      composeUri(t, "DeviceDefinition", "jurisdiction", element.getJurisdictionElement(), -1);
5917  }
5918
5919  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element, int index) {
5920    if (element == null) 
5921      return;
5922    Complex t;
5923    if (Utilities.noString(parentType))
5924      t = parent;
5925    else {
5926      t = parent.predicate("fhir:"+parentType+'.'+name);
5927    }
5928    composeBackboneElement(t, "deviceName", name, element, index);
5929    if (element.hasNameElement())
5930      composeString(t, "DeviceDefinition", "name", element.getNameElement(), -1);
5931    if (element.hasTypeElement())
5932      composeEnum(t, "DeviceDefinition", "type", element.getTypeElement(), -1);
5933  }
5934
5935  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionSpecializationComponent element, int index) {
5936    if (element == null) 
5937      return;
5938    Complex t;
5939    if (Utilities.noString(parentType))
5940      t = parent;
5941    else {
5942      t = parent.predicate("fhir:"+parentType+'.'+name);
5943    }
5944    composeBackboneElement(t, "specialization", name, element, index);
5945    if (element.hasSystemTypeElement())
5946      composeString(t, "DeviceDefinition", "systemType", element.getSystemTypeElement(), -1);
5947    if (element.hasVersionElement())
5948      composeString(t, "DeviceDefinition", "version", element.getVersionElement(), -1);
5949  }
5950
5951  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionCapabilityComponent element, int index) {
5952    if (element == null) 
5953      return;
5954    Complex t;
5955    if (Utilities.noString(parentType))
5956      t = parent;
5957    else {
5958      t = parent.predicate("fhir:"+parentType+'.'+name);
5959    }
5960    composeBackboneElement(t, "capability", name, element, index);
5961    if (element.hasType())
5962      composeCodeableConcept(t, "DeviceDefinition", "type", element.getType(), -1);
5963    for (int i = 0; i < element.getDescription().size(); i++)
5964      composeCodeableConcept(t, "DeviceDefinition", "description", element.getDescription().get(i), i);
5965  }
5966
5967  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionPropertyComponent element, int index) {
5968    if (element == null) 
5969      return;
5970    Complex t;
5971    if (Utilities.noString(parentType))
5972      t = parent;
5973    else {
5974      t = parent.predicate("fhir:"+parentType+'.'+name);
5975    }
5976    composeBackboneElement(t, "property", name, element, index);
5977    if (element.hasType())
5978      composeCodeableConcept(t, "DeviceDefinition", "type", element.getType(), -1);
5979    for (int i = 0; i < element.getValueQuantity().size(); i++)
5980      composeQuantity(t, "DeviceDefinition", "valueQuantity", element.getValueQuantity().get(i), i);
5981    for (int i = 0; i < element.getValueCode().size(); i++)
5982      composeCodeableConcept(t, "DeviceDefinition", "valueCode", element.getValueCode().get(i), i);
5983  }
5984
5985  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponent(Complex parent, String parentType, String name, DeviceDefinition.DeviceDefinitionMaterialComponent element, int index) {
5986    if (element == null) 
5987      return;
5988    Complex t;
5989    if (Utilities.noString(parentType))
5990      t = parent;
5991    else {
5992      t = parent.predicate("fhir:"+parentType+'.'+name);
5993    }
5994    composeBackboneElement(t, "material", name, element, index);
5995    if (element.hasSubstance())
5996      composeCodeableConcept(t, "DeviceDefinition", "substance", element.getSubstance(), -1);
5997    if (element.hasAlternateElement())
5998      composeBoolean(t, "DeviceDefinition", "alternate", element.getAlternateElement(), -1);
5999    if (element.hasAllergenicIndicatorElement())
6000      composeBoolean(t, "DeviceDefinition", "allergenicIndicator", element.getAllergenicIndicatorElement(), -1);
6001  }
6002
6003  protected void composeDeviceMetric(Complex parent, String parentType, String name, DeviceMetric element, int index) {
6004    if (element == null) 
6005      return;
6006    Complex t;
6007    if (Utilities.noString(parentType))
6008      t = parent;
6009    else {
6010      t = parent.predicate("fhir:"+parentType+'.'+name);
6011    }
6012    composeDomainResource(t, "DeviceMetric", name, element, index);
6013    for (int i = 0; i < element.getIdentifier().size(); i++)
6014      composeIdentifier(t, "DeviceMetric", "identifier", element.getIdentifier().get(i), i);
6015    if (element.hasType())
6016      composeCodeableConcept(t, "DeviceMetric", "type", element.getType(), -1);
6017    if (element.hasUnit())
6018      composeCodeableConcept(t, "DeviceMetric", "unit", element.getUnit(), -1);
6019    if (element.hasSource())
6020      composeReference(t, "DeviceMetric", "source", element.getSource(), -1);
6021    if (element.hasParent())
6022      composeReference(t, "DeviceMetric", "parent", element.getParent(), -1);
6023    if (element.hasOperationalStatusElement())
6024      composeEnum(t, "DeviceMetric", "operationalStatus", element.getOperationalStatusElement(), -1);
6025    if (element.hasColorElement())
6026      composeEnum(t, "DeviceMetric", "color", element.getColorElement(), -1);
6027    if (element.hasCategoryElement())
6028      composeEnum(t, "DeviceMetric", "category", element.getCategoryElement(), -1);
6029    if (element.hasMeasurementPeriod())
6030      composeTiming(t, "DeviceMetric", "measurementPeriod", element.getMeasurementPeriod(), -1);
6031    for (int i = 0; i < element.getCalibration().size(); i++)
6032      composeDeviceMetricDeviceMetricCalibrationComponent(t, "DeviceMetric", "calibration", element.getCalibration().get(i), i);
6033  }
6034
6035  protected void composeDeviceMetricDeviceMetricCalibrationComponent(Complex parent, String parentType, String name, DeviceMetric.DeviceMetricCalibrationComponent element, int index) {
6036    if (element == null) 
6037      return;
6038    Complex t;
6039    if (Utilities.noString(parentType))
6040      t = parent;
6041    else {
6042      t = parent.predicate("fhir:"+parentType+'.'+name);
6043    }
6044    composeBackboneElement(t, "calibration", name, element, index);
6045    if (element.hasTypeElement())
6046      composeEnum(t, "DeviceMetric", "type", element.getTypeElement(), -1);
6047    if (element.hasStateElement())
6048      composeEnum(t, "DeviceMetric", "state", element.getStateElement(), -1);
6049    if (element.hasTimeElement())
6050      composeInstant(t, "DeviceMetric", "time", element.getTimeElement(), -1);
6051  }
6052
6053  protected void composeDeviceRequest(Complex parent, String parentType, String name, DeviceRequest element, int index) {
6054    if (element == null) 
6055      return;
6056    Complex t;
6057    if (Utilities.noString(parentType))
6058      t = parent;
6059    else {
6060      t = parent.predicate("fhir:"+parentType+'.'+name);
6061    }
6062    composeDomainResource(t, "DeviceRequest", name, element, index);
6063    for (int i = 0; i < element.getIdentifier().size(); i++)
6064      composeIdentifier(t, "DeviceRequest", "identifier", element.getIdentifier().get(i), i);
6065    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
6066      composeCanonical(t, "DeviceRequest", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
6067    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
6068      composeUri(t, "DeviceRequest", "instantiatesUri", element.getInstantiatesUri().get(i), i);
6069    for (int i = 0; i < element.getBasedOn().size(); i++)
6070      composeReference(t, "DeviceRequest", "basedOn", element.getBasedOn().get(i), i);
6071    for (int i = 0; i < element.getPriorRequest().size(); i++)
6072      composeReference(t, "DeviceRequest", "priorRequest", element.getPriorRequest().get(i), i);
6073    if (element.hasGroupIdentifier())
6074      composeIdentifier(t, "DeviceRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
6075    if (element.hasStatusElement())
6076      composeEnum(t, "DeviceRequest", "status", element.getStatusElement(), -1);
6077    if (element.hasIntentElement())
6078      composeEnum(t, "DeviceRequest", "intent", element.getIntentElement(), -1);
6079    if (element.hasPriorityElement())
6080      composeEnum(t, "DeviceRequest", "priority", element.getPriorityElement(), -1);
6081    if (element.hasCode())
6082      composeType(t, "DeviceRequest", "code", element.getCode(), -1);
6083    for (int i = 0; i < element.getParameter().size(); i++)
6084      composeDeviceRequestDeviceRequestParameterComponent(t, "DeviceRequest", "parameter", element.getParameter().get(i), i);
6085    if (element.hasSubject())
6086      composeReference(t, "DeviceRequest", "subject", element.getSubject(), -1);
6087    if (element.hasEncounter())
6088      composeReference(t, "DeviceRequest", "encounter", element.getEncounter(), -1);
6089    if (element.hasOccurrence())
6090      composeType(t, "DeviceRequest", "occurrence", element.getOccurrence(), -1);
6091    if (element.hasAuthoredOnElement())
6092      composeDateTime(t, "DeviceRequest", "authoredOn", element.getAuthoredOnElement(), -1);
6093    if (element.hasRequester())
6094      composeReference(t, "DeviceRequest", "requester", element.getRequester(), -1);
6095    if (element.hasPerformerType())
6096      composeCodeableConcept(t, "DeviceRequest", "performerType", element.getPerformerType(), -1);
6097    if (element.hasPerformer())
6098      composeReference(t, "DeviceRequest", "performer", element.getPerformer(), -1);
6099    for (int i = 0; i < element.getReasonCode().size(); i++)
6100      composeCodeableConcept(t, "DeviceRequest", "reasonCode", element.getReasonCode().get(i), i);
6101    for (int i = 0; i < element.getReasonReference().size(); i++)
6102      composeReference(t, "DeviceRequest", "reasonReference", element.getReasonReference().get(i), i);
6103    for (int i = 0; i < element.getInsurance().size(); i++)
6104      composeReference(t, "DeviceRequest", "insurance", element.getInsurance().get(i), i);
6105    for (int i = 0; i < element.getSupportingInfo().size(); i++)
6106      composeReference(t, "DeviceRequest", "supportingInfo", element.getSupportingInfo().get(i), i);
6107    for (int i = 0; i < element.getNote().size(); i++)
6108      composeAnnotation(t, "DeviceRequest", "note", element.getNote().get(i), i);
6109    for (int i = 0; i < element.getRelevantHistory().size(); i++)
6110      composeReference(t, "DeviceRequest", "relevantHistory", element.getRelevantHistory().get(i), i);
6111  }
6112
6113  protected void composeDeviceRequestDeviceRequestParameterComponent(Complex parent, String parentType, String name, DeviceRequest.DeviceRequestParameterComponent element, int index) {
6114    if (element == null) 
6115      return;
6116    Complex t;
6117    if (Utilities.noString(parentType))
6118      t = parent;
6119    else {
6120      t = parent.predicate("fhir:"+parentType+'.'+name);
6121    }
6122    composeBackboneElement(t, "parameter", name, element, index);
6123    if (element.hasCode())
6124      composeCodeableConcept(t, "DeviceRequest", "code", element.getCode(), -1);
6125    if (element.hasValue())
6126      composeType(t, "DeviceRequest", "value", element.getValue(), -1);
6127  }
6128
6129  protected void composeDeviceUseStatement(Complex parent, String parentType, String name, DeviceUseStatement element, int index) {
6130    if (element == null) 
6131      return;
6132    Complex t;
6133    if (Utilities.noString(parentType))
6134      t = parent;
6135    else {
6136      t = parent.predicate("fhir:"+parentType+'.'+name);
6137    }
6138    composeDomainResource(t, "DeviceUseStatement", name, element, index);
6139    for (int i = 0; i < element.getIdentifier().size(); i++)
6140      composeIdentifier(t, "DeviceUseStatement", "identifier", element.getIdentifier().get(i), i);
6141    for (int i = 0; i < element.getBasedOn().size(); i++)
6142      composeReference(t, "DeviceUseStatement", "basedOn", element.getBasedOn().get(i), i);
6143    if (element.hasStatusElement())
6144      composeEnum(t, "DeviceUseStatement", "status", element.getStatusElement(), -1);
6145    if (element.hasSubject())
6146      composeReference(t, "DeviceUseStatement", "subject", element.getSubject(), -1);
6147    for (int i = 0; i < element.getDerivedFrom().size(); i++)
6148      composeReference(t, "DeviceUseStatement", "derivedFrom", element.getDerivedFrom().get(i), i);
6149    if (element.hasTiming())
6150      composeType(t, "DeviceUseStatement", "timing", element.getTiming(), -1);
6151    if (element.hasRecordedOnElement())
6152      composeDateTime(t, "DeviceUseStatement", "recordedOn", element.getRecordedOnElement(), -1);
6153    if (element.hasSource())
6154      composeReference(t, "DeviceUseStatement", "source", element.getSource(), -1);
6155    if (element.hasDevice())
6156      composeReference(t, "DeviceUseStatement", "device", element.getDevice(), -1);
6157    for (int i = 0; i < element.getReasonCode().size(); i++)
6158      composeCodeableConcept(t, "DeviceUseStatement", "reasonCode", element.getReasonCode().get(i), i);
6159    for (int i = 0; i < element.getReasonReference().size(); i++)
6160      composeReference(t, "DeviceUseStatement", "reasonReference", element.getReasonReference().get(i), i);
6161    if (element.hasBodySite())
6162      composeCodeableConcept(t, "DeviceUseStatement", "bodySite", element.getBodySite(), -1);
6163    for (int i = 0; i < element.getNote().size(); i++)
6164      composeAnnotation(t, "DeviceUseStatement", "note", element.getNote().get(i), i);
6165  }
6166
6167  protected void composeDiagnosticReport(Complex parent, String parentType, String name, DiagnosticReport element, int index) {
6168    if (element == null) 
6169      return;
6170    Complex t;
6171    if (Utilities.noString(parentType))
6172      t = parent;
6173    else {
6174      t = parent.predicate("fhir:"+parentType+'.'+name);
6175    }
6176    composeDomainResource(t, "DiagnosticReport", name, element, index);
6177    for (int i = 0; i < element.getIdentifier().size(); i++)
6178      composeIdentifier(t, "DiagnosticReport", "identifier", element.getIdentifier().get(i), i);
6179    for (int i = 0; i < element.getBasedOn().size(); i++)
6180      composeReference(t, "DiagnosticReport", "basedOn", element.getBasedOn().get(i), i);
6181    if (element.hasStatusElement())
6182      composeEnum(t, "DiagnosticReport", "status", element.getStatusElement(), -1);
6183    for (int i = 0; i < element.getCategory().size(); i++)
6184      composeCodeableConcept(t, "DiagnosticReport", "category", element.getCategory().get(i), i);
6185    if (element.hasCode())
6186      composeCodeableConcept(t, "DiagnosticReport", "code", element.getCode(), -1);
6187    if (element.hasSubject())
6188      composeReference(t, "DiagnosticReport", "subject", element.getSubject(), -1);
6189    if (element.hasEncounter())
6190      composeReference(t, "DiagnosticReport", "encounter", element.getEncounter(), -1);
6191    if (element.hasEffective())
6192      composeType(t, "DiagnosticReport", "effective", element.getEffective(), -1);
6193    if (element.hasIssuedElement())
6194      composeInstant(t, "DiagnosticReport", "issued", element.getIssuedElement(), -1);
6195    for (int i = 0; i < element.getPerformer().size(); i++)
6196      composeReference(t, "DiagnosticReport", "performer", element.getPerformer().get(i), i);
6197    for (int i = 0; i < element.getResultsInterpreter().size(); i++)
6198      composeReference(t, "DiagnosticReport", "resultsInterpreter", element.getResultsInterpreter().get(i), i);
6199    for (int i = 0; i < element.getSpecimen().size(); i++)
6200      composeReference(t, "DiagnosticReport", "specimen", element.getSpecimen().get(i), i);
6201    for (int i = 0; i < element.getResult().size(); i++)
6202      composeReference(t, "DiagnosticReport", "result", element.getResult().get(i), i);
6203    for (int i = 0; i < element.getImagingStudy().size(); i++)
6204      composeReference(t, "DiagnosticReport", "imagingStudy", element.getImagingStudy().get(i), i);
6205    for (int i = 0; i < element.getMedia().size(); i++)
6206      composeDiagnosticReportDiagnosticReportMediaComponent(t, "DiagnosticReport", "media", element.getMedia().get(i), i);
6207    if (element.hasConclusionElement())
6208      composeString(t, "DiagnosticReport", "conclusion", element.getConclusionElement(), -1);
6209    for (int i = 0; i < element.getConclusionCode().size(); i++)
6210      composeCodeableConcept(t, "DiagnosticReport", "conclusionCode", element.getConclusionCode().get(i), i);
6211    for (int i = 0; i < element.getPresentedForm().size(); i++)
6212      composeAttachment(t, "DiagnosticReport", "presentedForm", element.getPresentedForm().get(i), i);
6213  }
6214
6215  protected void composeDiagnosticReportDiagnosticReportMediaComponent(Complex parent, String parentType, String name, DiagnosticReport.DiagnosticReportMediaComponent element, int index) {
6216    if (element == null) 
6217      return;
6218    Complex t;
6219    if (Utilities.noString(parentType))
6220      t = parent;
6221    else {
6222      t = parent.predicate("fhir:"+parentType+'.'+name);
6223    }
6224    composeBackboneElement(t, "media", name, element, index);
6225    if (element.hasCommentElement())
6226      composeString(t, "DiagnosticReport", "comment", element.getCommentElement(), -1);
6227    if (element.hasLink())
6228      composeReference(t, "DiagnosticReport", "link", element.getLink(), -1);
6229  }
6230
6231  protected void composeDocumentManifest(Complex parent, String parentType, String name, DocumentManifest element, int index) {
6232    if (element == null) 
6233      return;
6234    Complex t;
6235    if (Utilities.noString(parentType))
6236      t = parent;
6237    else {
6238      t = parent.predicate("fhir:"+parentType+'.'+name);
6239    }
6240    composeDomainResource(t, "DocumentManifest", name, element, index);
6241    if (element.hasMasterIdentifier())
6242      composeIdentifier(t, "DocumentManifest", "masterIdentifier", element.getMasterIdentifier(), -1);
6243    for (int i = 0; i < element.getIdentifier().size(); i++)
6244      composeIdentifier(t, "DocumentManifest", "identifier", element.getIdentifier().get(i), i);
6245    if (element.hasStatusElement())
6246      composeEnum(t, "DocumentManifest", "status", element.getStatusElement(), -1);
6247    if (element.hasType())
6248      composeCodeableConcept(t, "DocumentManifest", "type", element.getType(), -1);
6249    if (element.hasSubject())
6250      composeReference(t, "DocumentManifest", "subject", element.getSubject(), -1);
6251    if (element.hasCreatedElement())
6252      composeDateTime(t, "DocumentManifest", "created", element.getCreatedElement(), -1);
6253    for (int i = 0; i < element.getAuthor().size(); i++)
6254      composeReference(t, "DocumentManifest", "author", element.getAuthor().get(i), i);
6255    for (int i = 0; i < element.getRecipient().size(); i++)
6256      composeReference(t, "DocumentManifest", "recipient", element.getRecipient().get(i), i);
6257    if (element.hasSourceElement())
6258      composeUri(t, "DocumentManifest", "source", element.getSourceElement(), -1);
6259    if (element.hasDescriptionElement())
6260      composeString(t, "DocumentManifest", "description", element.getDescriptionElement(), -1);
6261    for (int i = 0; i < element.getContent().size(); i++)
6262      composeReference(t, "DocumentManifest", "content", element.getContent().get(i), i);
6263    for (int i = 0; i < element.getRelated().size(); i++)
6264      composeDocumentManifestDocumentManifestRelatedComponent(t, "DocumentManifest", "related", element.getRelated().get(i), i);
6265  }
6266
6267  protected void composeDocumentManifestDocumentManifestRelatedComponent(Complex parent, String parentType, String name, DocumentManifest.DocumentManifestRelatedComponent element, int index) {
6268    if (element == null) 
6269      return;
6270    Complex t;
6271    if (Utilities.noString(parentType))
6272      t = parent;
6273    else {
6274      t = parent.predicate("fhir:"+parentType+'.'+name);
6275    }
6276    composeBackboneElement(t, "related", name, element, index);
6277    if (element.hasIdentifier())
6278      composeIdentifier(t, "DocumentManifest", "identifier", element.getIdentifier(), -1);
6279    if (element.hasRef())
6280      composeReference(t, "DocumentManifest", "ref", element.getRef(), -1);
6281  }
6282
6283  protected void composeDocumentReference(Complex parent, String parentType, String name, DocumentReference element, int index) {
6284    if (element == null) 
6285      return;
6286    Complex t;
6287    if (Utilities.noString(parentType))
6288      t = parent;
6289    else {
6290      t = parent.predicate("fhir:"+parentType+'.'+name);
6291    }
6292    composeDomainResource(t, "DocumentReference", name, element, index);
6293    if (element.hasMasterIdentifier())
6294      composeIdentifier(t, "DocumentReference", "masterIdentifier", element.getMasterIdentifier(), -1);
6295    for (int i = 0; i < element.getIdentifier().size(); i++)
6296      composeIdentifier(t, "DocumentReference", "identifier", element.getIdentifier().get(i), i);
6297    if (element.hasStatusElement())
6298      composeEnum(t, "DocumentReference", "status", element.getStatusElement(), -1);
6299    if (element.hasDocStatusElement())
6300      composeEnum(t, "DocumentReference", "docStatus", element.getDocStatusElement(), -1);
6301    if (element.hasType())
6302      composeCodeableConcept(t, "DocumentReference", "type", element.getType(), -1);
6303    for (int i = 0; i < element.getCategory().size(); i++)
6304      composeCodeableConcept(t, "DocumentReference", "category", element.getCategory().get(i), i);
6305    if (element.hasSubject())
6306      composeReference(t, "DocumentReference", "subject", element.getSubject(), -1);
6307    if (element.hasDateElement())
6308      composeInstant(t, "DocumentReference", "date", element.getDateElement(), -1);
6309    for (int i = 0; i < element.getAuthor().size(); i++)
6310      composeReference(t, "DocumentReference", "author", element.getAuthor().get(i), i);
6311    if (element.hasAuthenticator())
6312      composeReference(t, "DocumentReference", "authenticator", element.getAuthenticator(), -1);
6313    if (element.hasCustodian())
6314      composeReference(t, "DocumentReference", "custodian", element.getCustodian(), -1);
6315    for (int i = 0; i < element.getRelatesTo().size(); i++)
6316      composeDocumentReferenceDocumentReferenceRelatesToComponent(t, "DocumentReference", "relatesTo", element.getRelatesTo().get(i), i);
6317    if (element.hasDescriptionElement())
6318      composeString(t, "DocumentReference", "description", element.getDescriptionElement(), -1);
6319    for (int i = 0; i < element.getSecurityLabel().size(); i++)
6320      composeCodeableConcept(t, "DocumentReference", "securityLabel", element.getSecurityLabel().get(i), i);
6321    for (int i = 0; i < element.getContent().size(); i++)
6322      composeDocumentReferenceDocumentReferenceContentComponent(t, "DocumentReference", "content", element.getContent().get(i), i);
6323    if (element.hasContext())
6324      composeDocumentReferenceDocumentReferenceContextComponent(t, "DocumentReference", "context", element.getContext(), -1);
6325  }
6326
6327  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceRelatesToComponent element, int index) {
6328    if (element == null) 
6329      return;
6330    Complex t;
6331    if (Utilities.noString(parentType))
6332      t = parent;
6333    else {
6334      t = parent.predicate("fhir:"+parentType+'.'+name);
6335    }
6336    composeBackboneElement(t, "relatesTo", name, element, index);
6337    if (element.hasCodeElement())
6338      composeEnum(t, "DocumentReference", "code", element.getCodeElement(), -1);
6339    if (element.hasTarget())
6340      composeReference(t, "DocumentReference", "target", element.getTarget(), -1);
6341  }
6342
6343  protected void composeDocumentReferenceDocumentReferenceContentComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceContentComponent element, int index) {
6344    if (element == null) 
6345      return;
6346    Complex t;
6347    if (Utilities.noString(parentType))
6348      t = parent;
6349    else {
6350      t = parent.predicate("fhir:"+parentType+'.'+name);
6351    }
6352    composeBackboneElement(t, "content", name, element, index);
6353    if (element.hasAttachment())
6354      composeAttachment(t, "DocumentReference", "attachment", element.getAttachment(), -1);
6355    if (element.hasFormat())
6356      composeCoding(t, "DocumentReference", "format", element.getFormat(), -1);
6357  }
6358
6359  protected void composeDocumentReferenceDocumentReferenceContextComponent(Complex parent, String parentType, String name, DocumentReference.DocumentReferenceContextComponent element, int index) {
6360    if (element == null) 
6361      return;
6362    Complex t;
6363    if (Utilities.noString(parentType))
6364      t = parent;
6365    else {
6366      t = parent.predicate("fhir:"+parentType+'.'+name);
6367    }
6368    composeBackboneElement(t, "context", name, element, index);
6369    for (int i = 0; i < element.getEncounter().size(); i++)
6370      composeReference(t, "DocumentReference", "encounter", element.getEncounter().get(i), i);
6371    for (int i = 0; i < element.getEvent().size(); i++)
6372      composeCodeableConcept(t, "DocumentReference", "event", element.getEvent().get(i), i);
6373    if (element.hasPeriod())
6374      composePeriod(t, "DocumentReference", "period", element.getPeriod(), -1);
6375    if (element.hasFacilityType())
6376      composeCodeableConcept(t, "DocumentReference", "facilityType", element.getFacilityType(), -1);
6377    if (element.hasPracticeSetting())
6378      composeCodeableConcept(t, "DocumentReference", "practiceSetting", element.getPracticeSetting(), -1);
6379    if (element.hasSourcePatientInfo())
6380      composeReference(t, "DocumentReference", "sourcePatientInfo", element.getSourcePatientInfo(), -1);
6381    for (int i = 0; i < element.getRelated().size(); i++)
6382      composeReference(t, "DocumentReference", "related", element.getRelated().get(i), i);
6383  }
6384
6385  protected void composeEffectEvidenceSynthesis(Complex parent, String parentType, String name, EffectEvidenceSynthesis element, int index) {
6386    if (element == null) 
6387      return;
6388    Complex t;
6389    if (Utilities.noString(parentType))
6390      t = parent;
6391    else {
6392      t = parent.predicate("fhir:"+parentType+'.'+name);
6393    }
6394    composeDomainResource(t, "EffectEvidenceSynthesis", name, element, index);
6395    if (element.hasUrlElement())
6396      composeUri(t, "EffectEvidenceSynthesis", "url", element.getUrlElement(), -1);
6397    for (int i = 0; i < element.getIdentifier().size(); i++)
6398      composeIdentifier(t, "EffectEvidenceSynthesis", "identifier", element.getIdentifier().get(i), i);
6399    if (element.hasVersionElement())
6400      composeString(t, "EffectEvidenceSynthesis", "version", element.getVersionElement(), -1);
6401    if (element.hasNameElement())
6402      composeString(t, "EffectEvidenceSynthesis", "name", element.getNameElement(), -1);
6403    if (element.hasTitleElement())
6404      composeString(t, "EffectEvidenceSynthesis", "title", element.getTitleElement(), -1);
6405    if (element.hasStatusElement())
6406      composeEnum(t, "EffectEvidenceSynthesis", "status", element.getStatusElement(), -1);
6407    if (element.hasDateElement())
6408      composeDateTime(t, "EffectEvidenceSynthesis", "date", element.getDateElement(), -1);
6409    if (element.hasPublisherElement())
6410      composeString(t, "EffectEvidenceSynthesis", "publisher", element.getPublisherElement(), -1);
6411    for (int i = 0; i < element.getContact().size(); i++)
6412      composeContactDetail(t, "EffectEvidenceSynthesis", "contact", element.getContact().get(i), i);
6413    if (element.hasDescriptionElement())
6414      composeMarkdown(t, "EffectEvidenceSynthesis", "description", element.getDescriptionElement(), -1);
6415    for (int i = 0; i < element.getNote().size(); i++)
6416      composeAnnotation(t, "EffectEvidenceSynthesis", "note", element.getNote().get(i), i);
6417    for (int i = 0; i < element.getUseContext().size(); i++)
6418      composeUsageContext(t, "EffectEvidenceSynthesis", "useContext", element.getUseContext().get(i), i);
6419    for (int i = 0; i < element.getJurisdiction().size(); i++)
6420      composeCodeableConcept(t, "EffectEvidenceSynthesis", "jurisdiction", element.getJurisdiction().get(i), i);
6421    if (element.hasCopyrightElement())
6422      composeMarkdown(t, "EffectEvidenceSynthesis", "copyright", element.getCopyrightElement(), -1);
6423    if (element.hasApprovalDateElement())
6424      composeDate(t, "EffectEvidenceSynthesis", "approvalDate", element.getApprovalDateElement(), -1);
6425    if (element.hasLastReviewDateElement())
6426      composeDate(t, "EffectEvidenceSynthesis", "lastReviewDate", element.getLastReviewDateElement(), -1);
6427    if (element.hasEffectivePeriod())
6428      composePeriod(t, "EffectEvidenceSynthesis", "effectivePeriod", element.getEffectivePeriod(), -1);
6429    for (int i = 0; i < element.getTopic().size(); i++)
6430      composeCodeableConcept(t, "EffectEvidenceSynthesis", "topic", element.getTopic().get(i), i);
6431    for (int i = 0; i < element.getAuthor().size(); i++)
6432      composeContactDetail(t, "EffectEvidenceSynthesis", "author", element.getAuthor().get(i), i);
6433    for (int i = 0; i < element.getEditor().size(); i++)
6434      composeContactDetail(t, "EffectEvidenceSynthesis", "editor", element.getEditor().get(i), i);
6435    for (int i = 0; i < element.getReviewer().size(); i++)
6436      composeContactDetail(t, "EffectEvidenceSynthesis", "reviewer", element.getReviewer().get(i), i);
6437    for (int i = 0; i < element.getEndorser().size(); i++)
6438      composeContactDetail(t, "EffectEvidenceSynthesis", "endorser", element.getEndorser().get(i), i);
6439    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
6440      composeRelatedArtifact(t, "EffectEvidenceSynthesis", "relatedArtifact", element.getRelatedArtifact().get(i), i);
6441    if (element.hasSynthesisType())
6442      composeCodeableConcept(t, "EffectEvidenceSynthesis", "synthesisType", element.getSynthesisType(), -1);
6443    if (element.hasStudyType())
6444      composeCodeableConcept(t, "EffectEvidenceSynthesis", "studyType", element.getStudyType(), -1);
6445    if (element.hasPopulation())
6446      composeReference(t, "EffectEvidenceSynthesis", "population", element.getPopulation(), -1);
6447    if (element.hasExposure())
6448      composeReference(t, "EffectEvidenceSynthesis", "exposure", element.getExposure(), -1);
6449    if (element.hasExposureAlternative())
6450      composeReference(t, "EffectEvidenceSynthesis", "exposureAlternative", element.getExposureAlternative(), -1);
6451    if (element.hasOutcome())
6452      composeReference(t, "EffectEvidenceSynthesis", "outcome", element.getOutcome(), -1);
6453    if (element.hasSampleSize())
6454      composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(t, "EffectEvidenceSynthesis", "sampleSize", element.getSampleSize(), -1);
6455    for (int i = 0; i < element.getResultsByExposure().size(); i++)
6456      composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(t, "EffectEvidenceSynthesis", "resultsByExposure", element.getResultsByExposure().get(i), i);
6457    for (int i = 0; i < element.getEffectEstimate().size(); i++)
6458      composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(t, "EffectEvidenceSynthesis", "effectEstimate", element.getEffectEstimate().get(i), i);
6459    for (int i = 0; i < element.getCertainty().size(); i++)
6460      composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(t, "EffectEvidenceSynthesis", "certainty", element.getCertainty().get(i), i);
6461  }
6462
6463  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(Complex parent, String parentType, String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent element, int index) {
6464    if (element == null) 
6465      return;
6466    Complex t;
6467    if (Utilities.noString(parentType))
6468      t = parent;
6469    else {
6470      t = parent.predicate("fhir:"+parentType+'.'+name);
6471    }
6472    composeBackboneElement(t, "sampleSize", name, element, index);
6473    if (element.hasDescriptionElement())
6474      composeString(t, "EffectEvidenceSynthesis", "description", element.getDescriptionElement(), -1);
6475    if (element.hasNumberOfStudiesElement())
6476      composeInteger(t, "EffectEvidenceSynthesis", "numberOfStudies", element.getNumberOfStudiesElement(), -1);
6477    if (element.hasNumberOfParticipantsElement())
6478      composeInteger(t, "EffectEvidenceSynthesis", "numberOfParticipants", element.getNumberOfParticipantsElement(), -1);
6479  }
6480
6481  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(Complex parent, String parentType, String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent element, int index) {
6482    if (element == null) 
6483      return;
6484    Complex t;
6485    if (Utilities.noString(parentType))
6486      t = parent;
6487    else {
6488      t = parent.predicate("fhir:"+parentType+'.'+name);
6489    }
6490    composeBackboneElement(t, "resultsByExposure", name, element, index);
6491    if (element.hasDescriptionElement())
6492      composeString(t, "EffectEvidenceSynthesis", "description", element.getDescriptionElement(), -1);
6493    if (element.hasExposureStateElement())
6494      composeEnum(t, "EffectEvidenceSynthesis", "exposureState", element.getExposureStateElement(), -1);
6495    if (element.hasVariantState())
6496      composeCodeableConcept(t, "EffectEvidenceSynthesis", "variantState", element.getVariantState(), -1);
6497    if (element.hasRiskEvidenceSynthesis())
6498      composeReference(t, "EffectEvidenceSynthesis", "riskEvidenceSynthesis", element.getRiskEvidenceSynthesis(), -1);
6499  }
6500
6501  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(Complex parent, String parentType, String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent element, int index) {
6502    if (element == null) 
6503      return;
6504    Complex t;
6505    if (Utilities.noString(parentType))
6506      t = parent;
6507    else {
6508      t = parent.predicate("fhir:"+parentType+'.'+name);
6509    }
6510    composeBackboneElement(t, "effectEstimate", name, element, index);
6511    if (element.hasDescriptionElement())
6512      composeString(t, "EffectEvidenceSynthesis", "description", element.getDescriptionElement(), -1);
6513    if (element.hasType())
6514      composeCodeableConcept(t, "EffectEvidenceSynthesis", "type", element.getType(), -1);
6515    if (element.hasVariantState())
6516      composeCodeableConcept(t, "EffectEvidenceSynthesis", "variantState", element.getVariantState(), -1);
6517    if (element.hasValueElement())
6518      composeDecimal(t, "EffectEvidenceSynthesis", "value", element.getValueElement(), -1);
6519    if (element.hasUnitOfMeasure())
6520      composeCodeableConcept(t, "EffectEvidenceSynthesis", "unitOfMeasure", element.getUnitOfMeasure(), -1);
6521    for (int i = 0; i < element.getPrecisionEstimate().size(); i++)
6522      composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(t, "EffectEvidenceSynthesis", "precisionEstimate", element.getPrecisionEstimate().get(i), i);
6523  }
6524
6525  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(Complex parent, String parentType, String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent element, int index) {
6526    if (element == null) 
6527      return;
6528    Complex t;
6529    if (Utilities.noString(parentType))
6530      t = parent;
6531    else {
6532      t = parent.predicate("fhir:"+parentType+'.'+name);
6533    }
6534    composeBackboneElement(t, "precisionEstimate", name, element, index);
6535    if (element.hasType())
6536      composeCodeableConcept(t, "EffectEvidenceSynthesis", "type", element.getType(), -1);
6537    if (element.hasLevelElement())
6538      composeDecimal(t, "EffectEvidenceSynthesis", "level", element.getLevelElement(), -1);
6539    if (element.hasFromElement())
6540      composeDecimal(t, "EffectEvidenceSynthesis", "from", element.getFromElement(), -1);
6541    if (element.hasToElement())
6542      composeDecimal(t, "EffectEvidenceSynthesis", "to", element.getToElement(), -1);
6543  }
6544
6545  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(Complex parent, String parentType, String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent element, int index) {
6546    if (element == null) 
6547      return;
6548    Complex t;
6549    if (Utilities.noString(parentType))
6550      t = parent;
6551    else {
6552      t = parent.predicate("fhir:"+parentType+'.'+name);
6553    }
6554    composeBackboneElement(t, "certainty", name, element, index);
6555    for (int i = 0; i < element.getRating().size(); i++)
6556      composeCodeableConcept(t, "EffectEvidenceSynthesis", "rating", element.getRating().get(i), i);
6557    for (int i = 0; i < element.getNote().size(); i++)
6558      composeAnnotation(t, "EffectEvidenceSynthesis", "note", element.getNote().get(i), i);
6559    for (int i = 0; i < element.getCertaintySubcomponent().size(); i++)
6560      composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(t, "EffectEvidenceSynthesis", "certaintySubcomponent", element.getCertaintySubcomponent().get(i), i);
6561  }
6562
6563  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(Complex parent, String parentType, String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent element, int index) {
6564    if (element == null) 
6565      return;
6566    Complex t;
6567    if (Utilities.noString(parentType))
6568      t = parent;
6569    else {
6570      t = parent.predicate("fhir:"+parentType+'.'+name);
6571    }
6572    composeBackboneElement(t, "certaintySubcomponent", name, element, index);
6573    if (element.hasType())
6574      composeCodeableConcept(t, "EffectEvidenceSynthesis", "type", element.getType(), -1);
6575    for (int i = 0; i < element.getRating().size(); i++)
6576      composeCodeableConcept(t, "EffectEvidenceSynthesis", "rating", element.getRating().get(i), i);
6577    for (int i = 0; i < element.getNote().size(); i++)
6578      composeAnnotation(t, "EffectEvidenceSynthesis", "note", element.getNote().get(i), i);
6579  }
6580
6581  protected void composeEncounter(Complex parent, String parentType, String name, Encounter element, int index) {
6582    if (element == null) 
6583      return;
6584    Complex t;
6585    if (Utilities.noString(parentType))
6586      t = parent;
6587    else {
6588      t = parent.predicate("fhir:"+parentType+'.'+name);
6589    }
6590    composeDomainResource(t, "Encounter", name, element, index);
6591    for (int i = 0; i < element.getIdentifier().size(); i++)
6592      composeIdentifier(t, "Encounter", "identifier", element.getIdentifier().get(i), i);
6593    if (element.hasStatusElement())
6594      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
6595    for (int i = 0; i < element.getStatusHistory().size(); i++)
6596      composeEncounterStatusHistoryComponent(t, "Encounter", "statusHistory", element.getStatusHistory().get(i), i);
6597    if (element.hasClass_())
6598      composeCoding(t, "Encounter", "class", element.getClass_(), -1);
6599    for (int i = 0; i < element.getClassHistory().size(); i++)
6600      composeEncounterClassHistoryComponent(t, "Encounter", "classHistory", element.getClassHistory().get(i), i);
6601    for (int i = 0; i < element.getType().size(); i++)
6602      composeCodeableConcept(t, "Encounter", "type", element.getType().get(i), i);
6603    if (element.hasServiceType())
6604      composeCodeableConcept(t, "Encounter", "serviceType", element.getServiceType(), -1);
6605    if (element.hasPriority())
6606      composeCodeableConcept(t, "Encounter", "priority", element.getPriority(), -1);
6607    if (element.hasSubject())
6608      composeReference(t, "Encounter", "subject", element.getSubject(), -1);
6609    for (int i = 0; i < element.getEpisodeOfCare().size(); i++)
6610      composeReference(t, "Encounter", "episodeOfCare", element.getEpisodeOfCare().get(i), i);
6611    for (int i = 0; i < element.getBasedOn().size(); i++)
6612      composeReference(t, "Encounter", "basedOn", element.getBasedOn().get(i), i);
6613    for (int i = 0; i < element.getParticipant().size(); i++)
6614      composeEncounterEncounterParticipantComponent(t, "Encounter", "participant", element.getParticipant().get(i), i);
6615    for (int i = 0; i < element.getAppointment().size(); i++)
6616      composeReference(t, "Encounter", "appointment", element.getAppointment().get(i), i);
6617    if (element.hasPeriod())
6618      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6619    if (element.hasLength())
6620      composeDuration(t, "Encounter", "length", element.getLength(), -1);
6621    for (int i = 0; i < element.getReasonCode().size(); i++)
6622      composeCodeableConcept(t, "Encounter", "reasonCode", element.getReasonCode().get(i), i);
6623    for (int i = 0; i < element.getReasonReference().size(); i++)
6624      composeReference(t, "Encounter", "reasonReference", element.getReasonReference().get(i), i);
6625    for (int i = 0; i < element.getDiagnosis().size(); i++)
6626      composeEncounterDiagnosisComponent(t, "Encounter", "diagnosis", element.getDiagnosis().get(i), i);
6627    for (int i = 0; i < element.getAccount().size(); i++)
6628      composeReference(t, "Encounter", "account", element.getAccount().get(i), i);
6629    if (element.hasHospitalization())
6630      composeEncounterEncounterHospitalizationComponent(t, "Encounter", "hospitalization", element.getHospitalization(), -1);
6631    for (int i = 0; i < element.getLocation().size(); i++)
6632      composeEncounterEncounterLocationComponent(t, "Encounter", "location", element.getLocation().get(i), i);
6633    if (element.hasServiceProvider())
6634      composeReference(t, "Encounter", "serviceProvider", element.getServiceProvider(), -1);
6635    if (element.hasPartOf())
6636      composeReference(t, "Encounter", "partOf", element.getPartOf(), -1);
6637  }
6638
6639  protected void composeEncounterStatusHistoryComponent(Complex parent, String parentType, String name, Encounter.StatusHistoryComponent element, int index) {
6640    if (element == null) 
6641      return;
6642    Complex t;
6643    if (Utilities.noString(parentType))
6644      t = parent;
6645    else {
6646      t = parent.predicate("fhir:"+parentType+'.'+name);
6647    }
6648    composeBackboneElement(t, "statusHistory", name, element, index);
6649    if (element.hasStatusElement())
6650      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
6651    if (element.hasPeriod())
6652      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6653  }
6654
6655  protected void composeEncounterClassHistoryComponent(Complex parent, String parentType, String name, Encounter.ClassHistoryComponent element, int index) {
6656    if (element == null) 
6657      return;
6658    Complex t;
6659    if (Utilities.noString(parentType))
6660      t = parent;
6661    else {
6662      t = parent.predicate("fhir:"+parentType+'.'+name);
6663    }
6664    composeBackboneElement(t, "classHistory", name, element, index);
6665    if (element.hasClass_())
6666      composeCoding(t, "Encounter", "class", element.getClass_(), -1);
6667    if (element.hasPeriod())
6668      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6669  }
6670
6671  protected void composeEncounterEncounterParticipantComponent(Complex parent, String parentType, String name, Encounter.EncounterParticipantComponent element, int index) {
6672    if (element == null) 
6673      return;
6674    Complex t;
6675    if (Utilities.noString(parentType))
6676      t = parent;
6677    else {
6678      t = parent.predicate("fhir:"+parentType+'.'+name);
6679    }
6680    composeBackboneElement(t, "participant", name, element, index);
6681    for (int i = 0; i < element.getType().size(); i++)
6682      composeCodeableConcept(t, "Encounter", "type", element.getType().get(i), i);
6683    if (element.hasPeriod())
6684      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6685    if (element.hasIndividual())
6686      composeReference(t, "Encounter", "individual", element.getIndividual(), -1);
6687  }
6688
6689  protected void composeEncounterDiagnosisComponent(Complex parent, String parentType, String name, Encounter.DiagnosisComponent element, int index) {
6690    if (element == null) 
6691      return;
6692    Complex t;
6693    if (Utilities.noString(parentType))
6694      t = parent;
6695    else {
6696      t = parent.predicate("fhir:"+parentType+'.'+name);
6697    }
6698    composeBackboneElement(t, "diagnosis", name, element, index);
6699    if (element.hasCondition())
6700      composeReference(t, "Encounter", "condition", element.getCondition(), -1);
6701    if (element.hasUse())
6702      composeCodeableConcept(t, "Encounter", "use", element.getUse(), -1);
6703    if (element.hasRankElement())
6704      composePositiveInt(t, "Encounter", "rank", element.getRankElement(), -1);
6705  }
6706
6707  protected void composeEncounterEncounterHospitalizationComponent(Complex parent, String parentType, String name, Encounter.EncounterHospitalizationComponent element, int index) {
6708    if (element == null) 
6709      return;
6710    Complex t;
6711    if (Utilities.noString(parentType))
6712      t = parent;
6713    else {
6714      t = parent.predicate("fhir:"+parentType+'.'+name);
6715    }
6716    composeBackboneElement(t, "hospitalization", name, element, index);
6717    if (element.hasPreAdmissionIdentifier())
6718      composeIdentifier(t, "Encounter", "preAdmissionIdentifier", element.getPreAdmissionIdentifier(), -1);
6719    if (element.hasOrigin())
6720      composeReference(t, "Encounter", "origin", element.getOrigin(), -1);
6721    if (element.hasAdmitSource())
6722      composeCodeableConcept(t, "Encounter", "admitSource", element.getAdmitSource(), -1);
6723    if (element.hasReAdmission())
6724      composeCodeableConcept(t, "Encounter", "reAdmission", element.getReAdmission(), -1);
6725    for (int i = 0; i < element.getDietPreference().size(); i++)
6726      composeCodeableConcept(t, "Encounter", "dietPreference", element.getDietPreference().get(i), i);
6727    for (int i = 0; i < element.getSpecialCourtesy().size(); i++)
6728      composeCodeableConcept(t, "Encounter", "specialCourtesy", element.getSpecialCourtesy().get(i), i);
6729    for (int i = 0; i < element.getSpecialArrangement().size(); i++)
6730      composeCodeableConcept(t, "Encounter", "specialArrangement", element.getSpecialArrangement().get(i), i);
6731    if (element.hasDestination())
6732      composeReference(t, "Encounter", "destination", element.getDestination(), -1);
6733    if (element.hasDischargeDisposition())
6734      composeCodeableConcept(t, "Encounter", "dischargeDisposition", element.getDischargeDisposition(), -1);
6735  }
6736
6737  protected void composeEncounterEncounterLocationComponent(Complex parent, String parentType, String name, Encounter.EncounterLocationComponent element, int index) {
6738    if (element == null) 
6739      return;
6740    Complex t;
6741    if (Utilities.noString(parentType))
6742      t = parent;
6743    else {
6744      t = parent.predicate("fhir:"+parentType+'.'+name);
6745    }
6746    composeBackboneElement(t, "location", name, element, index);
6747    if (element.hasLocation())
6748      composeReference(t, "Encounter", "location", element.getLocation(), -1);
6749    if (element.hasStatusElement())
6750      composeEnum(t, "Encounter", "status", element.getStatusElement(), -1);
6751    if (element.hasPhysicalType())
6752      composeCodeableConcept(t, "Encounter", "physicalType", element.getPhysicalType(), -1);
6753    if (element.hasPeriod())
6754      composePeriod(t, "Encounter", "period", element.getPeriod(), -1);
6755  }
6756
6757  protected void composeEndpoint(Complex parent, String parentType, String name, Endpoint element, int index) {
6758    if (element == null) 
6759      return;
6760    Complex t;
6761    if (Utilities.noString(parentType))
6762      t = parent;
6763    else {
6764      t = parent.predicate("fhir:"+parentType+'.'+name);
6765    }
6766    composeDomainResource(t, "Endpoint", name, element, index);
6767    for (int i = 0; i < element.getIdentifier().size(); i++)
6768      composeIdentifier(t, "Endpoint", "identifier", element.getIdentifier().get(i), i);
6769    if (element.hasStatusElement())
6770      composeEnum(t, "Endpoint", "status", element.getStatusElement(), -1);
6771    if (element.hasConnectionType())
6772      composeCoding(t, "Endpoint", "connectionType", element.getConnectionType(), -1);
6773    if (element.hasNameElement())
6774      composeString(t, "Endpoint", "name", element.getNameElement(), -1);
6775    if (element.hasManagingOrganization())
6776      composeReference(t, "Endpoint", "managingOrganization", element.getManagingOrganization(), -1);
6777    for (int i = 0; i < element.getContact().size(); i++)
6778      composeContactPoint(t, "Endpoint", "contact", element.getContact().get(i), i);
6779    if (element.hasPeriod())
6780      composePeriod(t, "Endpoint", "period", element.getPeriod(), -1);
6781    for (int i = 0; i < element.getPayloadType().size(); i++)
6782      composeCodeableConcept(t, "Endpoint", "payloadType", element.getPayloadType().get(i), i);
6783    for (int i = 0; i < element.getPayloadMimeType().size(); i++)
6784      composeCode(t, "Endpoint", "payloadMimeType", element.getPayloadMimeType().get(i), i);
6785    if (element.hasAddressElement())
6786      composeUrl(t, "Endpoint", "address", element.getAddressElement(), -1);
6787    for (int i = 0; i < element.getHeader().size(); i++)
6788      composeString(t, "Endpoint", "header", element.getHeader().get(i), i);
6789  }
6790
6791  protected void composeEnrollmentRequest(Complex parent, String parentType, String name, EnrollmentRequest element, int index) {
6792    if (element == null) 
6793      return;
6794    Complex t;
6795    if (Utilities.noString(parentType))
6796      t = parent;
6797    else {
6798      t = parent.predicate("fhir:"+parentType+'.'+name);
6799    }
6800    composeDomainResource(t, "EnrollmentRequest", name, element, index);
6801    for (int i = 0; i < element.getIdentifier().size(); i++)
6802      composeIdentifier(t, "EnrollmentRequest", "identifier", element.getIdentifier().get(i), i);
6803    if (element.hasStatusElement())
6804      composeEnum(t, "EnrollmentRequest", "status", element.getStatusElement(), -1);
6805    if (element.hasCreatedElement())
6806      composeDateTime(t, "EnrollmentRequest", "created", element.getCreatedElement(), -1);
6807    if (element.hasInsurer())
6808      composeReference(t, "EnrollmentRequest", "insurer", element.getInsurer(), -1);
6809    if (element.hasProvider())
6810      composeReference(t, "EnrollmentRequest", "provider", element.getProvider(), -1);
6811    if (element.hasCandidate())
6812      composeReference(t, "EnrollmentRequest", "candidate", element.getCandidate(), -1);
6813    if (element.hasCoverage())
6814      composeReference(t, "EnrollmentRequest", "coverage", element.getCoverage(), -1);
6815  }
6816
6817  protected void composeEnrollmentResponse(Complex parent, String parentType, String name, EnrollmentResponse element, int index) {
6818    if (element == null) 
6819      return;
6820    Complex t;
6821    if (Utilities.noString(parentType))
6822      t = parent;
6823    else {
6824      t = parent.predicate("fhir:"+parentType+'.'+name);
6825    }
6826    composeDomainResource(t, "EnrollmentResponse", name, element, index);
6827    for (int i = 0; i < element.getIdentifier().size(); i++)
6828      composeIdentifier(t, "EnrollmentResponse", "identifier", element.getIdentifier().get(i), i);
6829    if (element.hasStatusElement())
6830      composeEnum(t, "EnrollmentResponse", "status", element.getStatusElement(), -1);
6831    if (element.hasRequest())
6832      composeReference(t, "EnrollmentResponse", "request", element.getRequest(), -1);
6833    if (element.hasOutcomeElement())
6834      composeEnum(t, "EnrollmentResponse", "outcome", element.getOutcomeElement(), -1);
6835    if (element.hasDispositionElement())
6836      composeString(t, "EnrollmentResponse", "disposition", element.getDispositionElement(), -1);
6837    if (element.hasCreatedElement())
6838      composeDateTime(t, "EnrollmentResponse", "created", element.getCreatedElement(), -1);
6839    if (element.hasOrganization())
6840      composeReference(t, "EnrollmentResponse", "organization", element.getOrganization(), -1);
6841    if (element.hasRequestProvider())
6842      composeReference(t, "EnrollmentResponse", "requestProvider", element.getRequestProvider(), -1);
6843  }
6844
6845  protected void composeEpisodeOfCare(Complex parent, String parentType, String name, EpisodeOfCare element, int index) {
6846    if (element == null) 
6847      return;
6848    Complex t;
6849    if (Utilities.noString(parentType))
6850      t = parent;
6851    else {
6852      t = parent.predicate("fhir:"+parentType+'.'+name);
6853    }
6854    composeDomainResource(t, "EpisodeOfCare", name, element, index);
6855    for (int i = 0; i < element.getIdentifier().size(); i++)
6856      composeIdentifier(t, "EpisodeOfCare", "identifier", element.getIdentifier().get(i), i);
6857    if (element.hasStatusElement())
6858      composeEnum(t, "EpisodeOfCare", "status", element.getStatusElement(), -1);
6859    for (int i = 0; i < element.getStatusHistory().size(); i++)
6860      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(t, "EpisodeOfCare", "statusHistory", element.getStatusHistory().get(i), i);
6861    for (int i = 0; i < element.getType().size(); i++)
6862      composeCodeableConcept(t, "EpisodeOfCare", "type", element.getType().get(i), i);
6863    for (int i = 0; i < element.getDiagnosis().size(); i++)
6864      composeEpisodeOfCareDiagnosisComponent(t, "EpisodeOfCare", "diagnosis", element.getDiagnosis().get(i), i);
6865    if (element.hasPatient())
6866      composeReference(t, "EpisodeOfCare", "patient", element.getPatient(), -1);
6867    if (element.hasManagingOrganization())
6868      composeReference(t, "EpisodeOfCare", "managingOrganization", element.getManagingOrganization(), -1);
6869    if (element.hasPeriod())
6870      composePeriod(t, "EpisodeOfCare", "period", element.getPeriod(), -1);
6871    for (int i = 0; i < element.getReferralRequest().size(); i++)
6872      composeReference(t, "EpisodeOfCare", "referralRequest", element.getReferralRequest().get(i), i);
6873    if (element.hasCareManager())
6874      composeReference(t, "EpisodeOfCare", "careManager", element.getCareManager(), -1);
6875    for (int i = 0; i < element.getTeam().size(); i++)
6876      composeReference(t, "EpisodeOfCare", "team", element.getTeam().get(i), i);
6877    for (int i = 0; i < element.getAccount().size(); i++)
6878      composeReference(t, "EpisodeOfCare", "account", element.getAccount().get(i), i);
6879  }
6880
6881  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(Complex parent, String parentType, String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element, int index) {
6882    if (element == null) 
6883      return;
6884    Complex t;
6885    if (Utilities.noString(parentType))
6886      t = parent;
6887    else {
6888      t = parent.predicate("fhir:"+parentType+'.'+name);
6889    }
6890    composeBackboneElement(t, "statusHistory", name, element, index);
6891    if (element.hasStatusElement())
6892      composeEnum(t, "EpisodeOfCare", "status", element.getStatusElement(), -1);
6893    if (element.hasPeriod())
6894      composePeriod(t, "EpisodeOfCare", "period", element.getPeriod(), -1);
6895  }
6896
6897  protected void composeEpisodeOfCareDiagnosisComponent(Complex parent, String parentType, String name, EpisodeOfCare.DiagnosisComponent element, int index) {
6898    if (element == null) 
6899      return;
6900    Complex t;
6901    if (Utilities.noString(parentType))
6902      t = parent;
6903    else {
6904      t = parent.predicate("fhir:"+parentType+'.'+name);
6905    }
6906    composeBackboneElement(t, "diagnosis", name, element, index);
6907    if (element.hasCondition())
6908      composeReference(t, "EpisodeOfCare", "condition", element.getCondition(), -1);
6909    if (element.hasRole())
6910      composeCodeableConcept(t, "EpisodeOfCare", "role", element.getRole(), -1);
6911    if (element.hasRankElement())
6912      composePositiveInt(t, "EpisodeOfCare", "rank", element.getRankElement(), -1);
6913  }
6914
6915  protected void composeEventDefinition(Complex parent, String parentType, String name, EventDefinition element, int index) {
6916    if (element == null) 
6917      return;
6918    Complex t;
6919    if (Utilities.noString(parentType))
6920      t = parent;
6921    else {
6922      t = parent.predicate("fhir:"+parentType+'.'+name);
6923    }
6924    composeDomainResource(t, "EventDefinition", name, element, index);
6925    if (element.hasUrlElement())
6926      composeUri(t, "EventDefinition", "url", element.getUrlElement(), -1);
6927    for (int i = 0; i < element.getIdentifier().size(); i++)
6928      composeIdentifier(t, "EventDefinition", "identifier", element.getIdentifier().get(i), i);
6929    if (element.hasVersionElement())
6930      composeString(t, "EventDefinition", "version", element.getVersionElement(), -1);
6931    if (element.hasNameElement())
6932      composeString(t, "EventDefinition", "name", element.getNameElement(), -1);
6933    if (element.hasTitleElement())
6934      composeString(t, "EventDefinition", "title", element.getTitleElement(), -1);
6935    if (element.hasSubtitleElement())
6936      composeString(t, "EventDefinition", "subtitle", element.getSubtitleElement(), -1);
6937    if (element.hasStatusElement())
6938      composeEnum(t, "EventDefinition", "status", element.getStatusElement(), -1);
6939    if (element.hasExperimentalElement())
6940      composeBoolean(t, "EventDefinition", "experimental", element.getExperimentalElement(), -1);
6941    if (element.hasSubject())
6942      composeType(t, "EventDefinition", "subject", element.getSubject(), -1);
6943    if (element.hasDateElement())
6944      composeDateTime(t, "EventDefinition", "date", element.getDateElement(), -1);
6945    if (element.hasPublisherElement())
6946      composeString(t, "EventDefinition", "publisher", element.getPublisherElement(), -1);
6947    for (int i = 0; i < element.getContact().size(); i++)
6948      composeContactDetail(t, "EventDefinition", "contact", element.getContact().get(i), i);
6949    if (element.hasDescriptionElement())
6950      composeMarkdown(t, "EventDefinition", "description", element.getDescriptionElement(), -1);
6951    for (int i = 0; i < element.getUseContext().size(); i++)
6952      composeUsageContext(t, "EventDefinition", "useContext", element.getUseContext().get(i), i);
6953    for (int i = 0; i < element.getJurisdiction().size(); i++)
6954      composeCodeableConcept(t, "EventDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
6955    if (element.hasPurposeElement())
6956      composeMarkdown(t, "EventDefinition", "purpose", element.getPurposeElement(), -1);
6957    if (element.hasUsageElement())
6958      composeString(t, "EventDefinition", "usage", element.getUsageElement(), -1);
6959    if (element.hasCopyrightElement())
6960      composeMarkdown(t, "EventDefinition", "copyright", element.getCopyrightElement(), -1);
6961    if (element.hasApprovalDateElement())
6962      composeDate(t, "EventDefinition", "approvalDate", element.getApprovalDateElement(), -1);
6963    if (element.hasLastReviewDateElement())
6964      composeDate(t, "EventDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
6965    if (element.hasEffectivePeriod())
6966      composePeriod(t, "EventDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
6967    for (int i = 0; i < element.getTopic().size(); i++)
6968      composeCodeableConcept(t, "EventDefinition", "topic", element.getTopic().get(i), i);
6969    for (int i = 0; i < element.getAuthor().size(); i++)
6970      composeContactDetail(t, "EventDefinition", "author", element.getAuthor().get(i), i);
6971    for (int i = 0; i < element.getEditor().size(); i++)
6972      composeContactDetail(t, "EventDefinition", "editor", element.getEditor().get(i), i);
6973    for (int i = 0; i < element.getReviewer().size(); i++)
6974      composeContactDetail(t, "EventDefinition", "reviewer", element.getReviewer().get(i), i);
6975    for (int i = 0; i < element.getEndorser().size(); i++)
6976      composeContactDetail(t, "EventDefinition", "endorser", element.getEndorser().get(i), i);
6977    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
6978      composeRelatedArtifact(t, "EventDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
6979    for (int i = 0; i < element.getTrigger().size(); i++)
6980      composeTriggerDefinition(t, "EventDefinition", "trigger", element.getTrigger().get(i), i);
6981  }
6982
6983  protected void composeEvidence(Complex parent, String parentType, String name, Evidence element, int index) {
6984    if (element == null) 
6985      return;
6986    Complex t;
6987    if (Utilities.noString(parentType))
6988      t = parent;
6989    else {
6990      t = parent.predicate("fhir:"+parentType+'.'+name);
6991    }
6992    composeDomainResource(t, "Evidence", name, element, index);
6993    if (element.hasUrlElement())
6994      composeUri(t, "Evidence", "url", element.getUrlElement(), -1);
6995    for (int i = 0; i < element.getIdentifier().size(); i++)
6996      composeIdentifier(t, "Evidence", "identifier", element.getIdentifier().get(i), i);
6997    if (element.hasVersionElement())
6998      composeString(t, "Evidence", "version", element.getVersionElement(), -1);
6999    if (element.hasNameElement())
7000      composeString(t, "Evidence", "name", element.getNameElement(), -1);
7001    if (element.hasTitleElement())
7002      composeString(t, "Evidence", "title", element.getTitleElement(), -1);
7003    if (element.hasShortTitleElement())
7004      composeString(t, "Evidence", "shortTitle", element.getShortTitleElement(), -1);
7005    if (element.hasSubtitleElement())
7006      composeString(t, "Evidence", "subtitle", element.getSubtitleElement(), -1);
7007    if (element.hasStatusElement())
7008      composeEnum(t, "Evidence", "status", element.getStatusElement(), -1);
7009    if (element.hasDateElement())
7010      composeDateTime(t, "Evidence", "date", element.getDateElement(), -1);
7011    if (element.hasPublisherElement())
7012      composeString(t, "Evidence", "publisher", element.getPublisherElement(), -1);
7013    for (int i = 0; i < element.getContact().size(); i++)
7014      composeContactDetail(t, "Evidence", "contact", element.getContact().get(i), i);
7015    if (element.hasDescriptionElement())
7016      composeMarkdown(t, "Evidence", "description", element.getDescriptionElement(), -1);
7017    for (int i = 0; i < element.getNote().size(); i++)
7018      composeAnnotation(t, "Evidence", "note", element.getNote().get(i), i);
7019    for (int i = 0; i < element.getUseContext().size(); i++)
7020      composeUsageContext(t, "Evidence", "useContext", element.getUseContext().get(i), i);
7021    for (int i = 0; i < element.getJurisdiction().size(); i++)
7022      composeCodeableConcept(t, "Evidence", "jurisdiction", element.getJurisdiction().get(i), i);
7023    if (element.hasCopyrightElement())
7024      composeMarkdown(t, "Evidence", "copyright", element.getCopyrightElement(), -1);
7025    if (element.hasApprovalDateElement())
7026      composeDate(t, "Evidence", "approvalDate", element.getApprovalDateElement(), -1);
7027    if (element.hasLastReviewDateElement())
7028      composeDate(t, "Evidence", "lastReviewDate", element.getLastReviewDateElement(), -1);
7029    if (element.hasEffectivePeriod())
7030      composePeriod(t, "Evidence", "effectivePeriod", element.getEffectivePeriod(), -1);
7031    for (int i = 0; i < element.getTopic().size(); i++)
7032      composeCodeableConcept(t, "Evidence", "topic", element.getTopic().get(i), i);
7033    for (int i = 0; i < element.getAuthor().size(); i++)
7034      composeContactDetail(t, "Evidence", "author", element.getAuthor().get(i), i);
7035    for (int i = 0; i < element.getEditor().size(); i++)
7036      composeContactDetail(t, "Evidence", "editor", element.getEditor().get(i), i);
7037    for (int i = 0; i < element.getReviewer().size(); i++)
7038      composeContactDetail(t, "Evidence", "reviewer", element.getReviewer().get(i), i);
7039    for (int i = 0; i < element.getEndorser().size(); i++)
7040      composeContactDetail(t, "Evidence", "endorser", element.getEndorser().get(i), i);
7041    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
7042      composeRelatedArtifact(t, "Evidence", "relatedArtifact", element.getRelatedArtifact().get(i), i);
7043    if (element.hasExposureBackground())
7044      composeReference(t, "Evidence", "exposureBackground", element.getExposureBackground(), -1);
7045    for (int i = 0; i < element.getExposureVariant().size(); i++)
7046      composeReference(t, "Evidence", "exposureVariant", element.getExposureVariant().get(i), i);
7047    for (int i = 0; i < element.getOutcome().size(); i++)
7048      composeReference(t, "Evidence", "outcome", element.getOutcome().get(i), i);
7049  }
7050
7051  protected void composeEvidenceVariable(Complex parent, String parentType, String name, EvidenceVariable element, int index) {
7052    if (element == null) 
7053      return;
7054    Complex t;
7055    if (Utilities.noString(parentType))
7056      t = parent;
7057    else {
7058      t = parent.predicate("fhir:"+parentType+'.'+name);
7059    }
7060    composeDomainResource(t, "EvidenceVariable", name, element, index);
7061    if (element.hasUrlElement())
7062      composeUri(t, "EvidenceVariable", "url", element.getUrlElement(), -1);
7063    for (int i = 0; i < element.getIdentifier().size(); i++)
7064      composeIdentifier(t, "EvidenceVariable", "identifier", element.getIdentifier().get(i), i);
7065    if (element.hasVersionElement())
7066      composeString(t, "EvidenceVariable", "version", element.getVersionElement(), -1);
7067    if (element.hasNameElement())
7068      composeString(t, "EvidenceVariable", "name", element.getNameElement(), -1);
7069    if (element.hasTitleElement())
7070      composeString(t, "EvidenceVariable", "title", element.getTitleElement(), -1);
7071    if (element.hasShortTitleElement())
7072      composeString(t, "EvidenceVariable", "shortTitle", element.getShortTitleElement(), -1);
7073    if (element.hasSubtitleElement())
7074      composeString(t, "EvidenceVariable", "subtitle", element.getSubtitleElement(), -1);
7075    if (element.hasStatusElement())
7076      composeEnum(t, "EvidenceVariable", "status", element.getStatusElement(), -1);
7077    if (element.hasDateElement())
7078      composeDateTime(t, "EvidenceVariable", "date", element.getDateElement(), -1);
7079    if (element.hasPublisherElement())
7080      composeString(t, "EvidenceVariable", "publisher", element.getPublisherElement(), -1);
7081    for (int i = 0; i < element.getContact().size(); i++)
7082      composeContactDetail(t, "EvidenceVariable", "contact", element.getContact().get(i), i);
7083    if (element.hasDescriptionElement())
7084      composeMarkdown(t, "EvidenceVariable", "description", element.getDescriptionElement(), -1);
7085    for (int i = 0; i < element.getNote().size(); i++)
7086      composeAnnotation(t, "EvidenceVariable", "note", element.getNote().get(i), i);
7087    for (int i = 0; i < element.getUseContext().size(); i++)
7088      composeUsageContext(t, "EvidenceVariable", "useContext", element.getUseContext().get(i), i);
7089    for (int i = 0; i < element.getJurisdiction().size(); i++)
7090      composeCodeableConcept(t, "EvidenceVariable", "jurisdiction", element.getJurisdiction().get(i), i);
7091    if (element.hasCopyrightElement())
7092      composeMarkdown(t, "EvidenceVariable", "copyright", element.getCopyrightElement(), -1);
7093    if (element.hasApprovalDateElement())
7094      composeDate(t, "EvidenceVariable", "approvalDate", element.getApprovalDateElement(), -1);
7095    if (element.hasLastReviewDateElement())
7096      composeDate(t, "EvidenceVariable", "lastReviewDate", element.getLastReviewDateElement(), -1);
7097    if (element.hasEffectivePeriod())
7098      composePeriod(t, "EvidenceVariable", "effectivePeriod", element.getEffectivePeriod(), -1);
7099    for (int i = 0; i < element.getTopic().size(); i++)
7100      composeCodeableConcept(t, "EvidenceVariable", "topic", element.getTopic().get(i), i);
7101    for (int i = 0; i < element.getAuthor().size(); i++)
7102      composeContactDetail(t, "EvidenceVariable", "author", element.getAuthor().get(i), i);
7103    for (int i = 0; i < element.getEditor().size(); i++)
7104      composeContactDetail(t, "EvidenceVariable", "editor", element.getEditor().get(i), i);
7105    for (int i = 0; i < element.getReviewer().size(); i++)
7106      composeContactDetail(t, "EvidenceVariable", "reviewer", element.getReviewer().get(i), i);
7107    for (int i = 0; i < element.getEndorser().size(); i++)
7108      composeContactDetail(t, "EvidenceVariable", "endorser", element.getEndorser().get(i), i);
7109    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
7110      composeRelatedArtifact(t, "EvidenceVariable", "relatedArtifact", element.getRelatedArtifact().get(i), i);
7111    if (element.hasTypeElement())
7112      composeEnum(t, "EvidenceVariable", "type", element.getTypeElement(), -1);
7113    for (int i = 0; i < element.getCharacteristic().size(); i++)
7114      composeEvidenceVariableEvidenceVariableCharacteristicComponent(t, "EvidenceVariable", "characteristic", element.getCharacteristic().get(i), i);
7115  }
7116
7117  protected void composeEvidenceVariableEvidenceVariableCharacteristicComponent(Complex parent, String parentType, String name, EvidenceVariable.EvidenceVariableCharacteristicComponent element, int index) {
7118    if (element == null) 
7119      return;
7120    Complex t;
7121    if (Utilities.noString(parentType))
7122      t = parent;
7123    else {
7124      t = parent.predicate("fhir:"+parentType+'.'+name);
7125    }
7126    composeBackboneElement(t, "characteristic", name, element, index);
7127    if (element.hasDescriptionElement())
7128      composeString(t, "EvidenceVariable", "description", element.getDescriptionElement(), -1);
7129    if (element.hasDefinition())
7130      composeType(t, "EvidenceVariable", "definition", element.getDefinition(), -1);
7131    for (int i = 0; i < element.getUsageContext().size(); i++)
7132      composeUsageContext(t, "EvidenceVariable", "usageContext", element.getUsageContext().get(i), i);
7133    if (element.hasExcludeElement())
7134      composeBoolean(t, "EvidenceVariable", "exclude", element.getExcludeElement(), -1);
7135    if (element.hasParticipantEffective())
7136      composeType(t, "EvidenceVariable", "participantEffective", element.getParticipantEffective(), -1);
7137    if (element.hasTimeFromStart())
7138      composeDuration(t, "EvidenceVariable", "timeFromStart", element.getTimeFromStart(), -1);
7139    if (element.hasGroupMeasureElement())
7140      composeEnum(t, "EvidenceVariable", "groupMeasure", element.getGroupMeasureElement(), -1);
7141  }
7142
7143  protected void composeExampleScenario(Complex parent, String parentType, String name, ExampleScenario element, int index) {
7144    if (element == null) 
7145      return;
7146    Complex t;
7147    if (Utilities.noString(parentType))
7148      t = parent;
7149    else {
7150      t = parent.predicate("fhir:"+parentType+'.'+name);
7151    }
7152    composeDomainResource(t, "ExampleScenario", name, element, index);
7153    if (element.hasUrlElement())
7154      composeUri(t, "ExampleScenario", "url", element.getUrlElement(), -1);
7155    for (int i = 0; i < element.getIdentifier().size(); i++)
7156      composeIdentifier(t, "ExampleScenario", "identifier", element.getIdentifier().get(i), i);
7157    if (element.hasVersionElement())
7158      composeString(t, "ExampleScenario", "version", element.getVersionElement(), -1);
7159    if (element.hasNameElement())
7160      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
7161    if (element.hasStatusElement())
7162      composeEnum(t, "ExampleScenario", "status", element.getStatusElement(), -1);
7163    if (element.hasExperimentalElement())
7164      composeBoolean(t, "ExampleScenario", "experimental", element.getExperimentalElement(), -1);
7165    if (element.hasDateElement())
7166      composeDateTime(t, "ExampleScenario", "date", element.getDateElement(), -1);
7167    if (element.hasPublisherElement())
7168      composeString(t, "ExampleScenario", "publisher", element.getPublisherElement(), -1);
7169    for (int i = 0; i < element.getContact().size(); i++)
7170      composeContactDetail(t, "ExampleScenario", "contact", element.getContact().get(i), i);
7171    for (int i = 0; i < element.getUseContext().size(); i++)
7172      composeUsageContext(t, "ExampleScenario", "useContext", element.getUseContext().get(i), i);
7173    for (int i = 0; i < element.getJurisdiction().size(); i++)
7174      composeCodeableConcept(t, "ExampleScenario", "jurisdiction", element.getJurisdiction().get(i), i);
7175    if (element.hasCopyrightElement())
7176      composeMarkdown(t, "ExampleScenario", "copyright", element.getCopyrightElement(), -1);
7177    if (element.hasPurposeElement())
7178      composeMarkdown(t, "ExampleScenario", "purpose", element.getPurposeElement(), -1);
7179    for (int i = 0; i < element.getActor().size(); i++)
7180      composeExampleScenarioExampleScenarioActorComponent(t, "ExampleScenario", "actor", element.getActor().get(i), i);
7181    for (int i = 0; i < element.getInstance().size(); i++)
7182      composeExampleScenarioExampleScenarioInstanceComponent(t, "ExampleScenario", "instance", element.getInstance().get(i), i);
7183    for (int i = 0; i < element.getProcess().size(); i++)
7184      composeExampleScenarioExampleScenarioProcessComponent(t, "ExampleScenario", "process", element.getProcess().get(i), i);
7185    for (int i = 0; i < element.getWorkflow().size(); i++)
7186      composeCanonical(t, "ExampleScenario", "workflow", element.getWorkflow().get(i), i);
7187  }
7188
7189  protected void composeExampleScenarioExampleScenarioActorComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioActorComponent element, int index) {
7190    if (element == null) 
7191      return;
7192    Complex t;
7193    if (Utilities.noString(parentType))
7194      t = parent;
7195    else {
7196      t = parent.predicate("fhir:"+parentType+'.'+name);
7197    }
7198    composeBackboneElement(t, "actor", name, element, index);
7199    if (element.hasActorIdElement())
7200      composeString(t, "ExampleScenario", "actorId", element.getActorIdElement(), -1);
7201    if (element.hasTypeElement())
7202      composeEnum(t, "ExampleScenario", "type", element.getTypeElement(), -1);
7203    if (element.hasNameElement())
7204      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
7205    if (element.hasDescriptionElement())
7206      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
7207  }
7208
7209  protected void composeExampleScenarioExampleScenarioInstanceComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceComponent element, int index) {
7210    if (element == null) 
7211      return;
7212    Complex t;
7213    if (Utilities.noString(parentType))
7214      t = parent;
7215    else {
7216      t = parent.predicate("fhir:"+parentType+'.'+name);
7217    }
7218    composeBackboneElement(t, "instance", name, element, index);
7219    if (element.hasResourceIdElement())
7220      composeString(t, "ExampleScenario", "resourceId", element.getResourceIdElement(), -1);
7221    if (element.hasResourceTypeElement())
7222      composeEnum(t, "ExampleScenario", "resourceType", element.getResourceTypeElement(), -1);
7223    if (element.hasNameElement())
7224      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
7225    if (element.hasDescriptionElement())
7226      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
7227    for (int i = 0; i < element.getVersion().size(); i++)
7228      composeExampleScenarioExampleScenarioInstanceVersionComponent(t, "ExampleScenario", "version", element.getVersion().get(i), i);
7229    for (int i = 0; i < element.getContainedInstance().size(); i++)
7230      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "containedInstance", element.getContainedInstance().get(i), i);
7231  }
7232
7233  protected void composeExampleScenarioExampleScenarioInstanceVersionComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element, int index) {
7234    if (element == null) 
7235      return;
7236    Complex t;
7237    if (Utilities.noString(parentType))
7238      t = parent;
7239    else {
7240      t = parent.predicate("fhir:"+parentType+'.'+name);
7241    }
7242    composeBackboneElement(t, "version", name, element, index);
7243    if (element.hasVersionIdElement())
7244      composeString(t, "ExampleScenario", "versionId", element.getVersionIdElement(), -1);
7245    if (element.hasDescriptionElement())
7246      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
7247  }
7248
7249  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element, int index) {
7250    if (element == null) 
7251      return;
7252    Complex t;
7253    if (Utilities.noString(parentType))
7254      t = parent;
7255    else {
7256      t = parent.predicate("fhir:"+parentType+'.'+name);
7257    }
7258    composeBackboneElement(t, "containedInstance", name, element, index);
7259    if (element.hasResourceIdElement())
7260      composeString(t, "ExampleScenario", "resourceId", element.getResourceIdElement(), -1);
7261    if (element.hasVersionIdElement())
7262      composeString(t, "ExampleScenario", "versionId", element.getVersionIdElement(), -1);
7263  }
7264
7265  protected void composeExampleScenarioExampleScenarioProcessComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessComponent element, int index) {
7266    if (element == null) 
7267      return;
7268    Complex t;
7269    if (Utilities.noString(parentType))
7270      t = parent;
7271    else {
7272      t = parent.predicate("fhir:"+parentType+'.'+name);
7273    }
7274    composeBackboneElement(t, "process", name, element, index);
7275    if (element.hasTitleElement())
7276      composeString(t, "ExampleScenario", "title", element.getTitleElement(), -1);
7277    if (element.hasDescriptionElement())
7278      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
7279    if (element.hasPreConditionsElement())
7280      composeMarkdown(t, "ExampleScenario", "preConditions", element.getPreConditionsElement(), -1);
7281    if (element.hasPostConditionsElement())
7282      composeMarkdown(t, "ExampleScenario", "postConditions", element.getPostConditionsElement(), -1);
7283    for (int i = 0; i < element.getStep().size(); i++)
7284      composeExampleScenarioExampleScenarioProcessStepComponent(t, "ExampleScenario", "step", element.getStep().get(i), i);
7285  }
7286
7287  protected void composeExampleScenarioExampleScenarioProcessStepComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepComponent element, int index) {
7288    if (element == null) 
7289      return;
7290    Complex t;
7291    if (Utilities.noString(parentType))
7292      t = parent;
7293    else {
7294      t = parent.predicate("fhir:"+parentType+'.'+name);
7295    }
7296    composeBackboneElement(t, "step", name, element, index);
7297    for (int i = 0; i < element.getProcess().size(); i++)
7298      composeExampleScenarioExampleScenarioProcessComponent(t, "ExampleScenario", "process", element.getProcess().get(i), i);
7299    if (element.hasPauseElement())
7300      composeBoolean(t, "ExampleScenario", "pause", element.getPauseElement(), -1);
7301    if (element.hasOperation())
7302      composeExampleScenarioExampleScenarioProcessStepOperationComponent(t, "ExampleScenario", "operation", element.getOperation(), -1);
7303    for (int i = 0; i < element.getAlternative().size(); i++)
7304      composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(t, "ExampleScenario", "alternative", element.getAlternative().get(i), i);
7305  }
7306
7307  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element, int index) {
7308    if (element == null) 
7309      return;
7310    Complex t;
7311    if (Utilities.noString(parentType))
7312      t = parent;
7313    else {
7314      t = parent.predicate("fhir:"+parentType+'.'+name);
7315    }
7316    composeBackboneElement(t, "operation", name, element, index);
7317    if (element.hasNumberElement())
7318      composeString(t, "ExampleScenario", "number", element.getNumberElement(), -1);
7319    if (element.hasTypeElement())
7320      composeString(t, "ExampleScenario", "type", element.getTypeElement(), -1);
7321    if (element.hasNameElement())
7322      composeString(t, "ExampleScenario", "name", element.getNameElement(), -1);
7323    if (element.hasInitiatorElement())
7324      composeString(t, "ExampleScenario", "initiator", element.getInitiatorElement(), -1);
7325    if (element.hasReceiverElement())
7326      composeString(t, "ExampleScenario", "receiver", element.getReceiverElement(), -1);
7327    if (element.hasDescriptionElement())
7328      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
7329    if (element.hasInitiatorActiveElement())
7330      composeBoolean(t, "ExampleScenario", "initiatorActive", element.getInitiatorActiveElement(), -1);
7331    if (element.hasReceiverActiveElement())
7332      composeBoolean(t, "ExampleScenario", "receiverActive", element.getReceiverActiveElement(), -1);
7333    if (element.hasRequest())
7334      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "request", element.getRequest(), -1);
7335    if (element.hasResponse())
7336      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(t, "ExampleScenario", "response", element.getResponse(), -1);
7337  }
7338
7339  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(Complex parent, String parentType, String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element, int index) {
7340    if (element == null) 
7341      return;
7342    Complex t;
7343    if (Utilities.noString(parentType))
7344      t = parent;
7345    else {
7346      t = parent.predicate("fhir:"+parentType+'.'+name);
7347    }
7348    composeBackboneElement(t, "alternative", name, element, index);
7349    if (element.hasTitleElement())
7350      composeString(t, "ExampleScenario", "title", element.getTitleElement(), -1);
7351    if (element.hasDescriptionElement())
7352      composeMarkdown(t, "ExampleScenario", "description", element.getDescriptionElement(), -1);
7353    for (int i = 0; i < element.getStep().size(); i++)
7354      composeExampleScenarioExampleScenarioProcessStepComponent(t, "ExampleScenario", "step", element.getStep().get(i), i);
7355  }
7356
7357  protected void composeExplanationOfBenefit(Complex parent, String parentType, String name, ExplanationOfBenefit element, int index) {
7358    if (element == null) 
7359      return;
7360    Complex t;
7361    if (Utilities.noString(parentType))
7362      t = parent;
7363    else {
7364      t = parent.predicate("fhir:"+parentType+'.'+name);
7365    }
7366    composeDomainResource(t, "ExplanationOfBenefit", name, element, index);
7367    for (int i = 0; i < element.getIdentifier().size(); i++)
7368      composeIdentifier(t, "ExplanationOfBenefit", "identifier", element.getIdentifier().get(i), i);
7369    if (element.hasStatusElement())
7370      composeEnum(t, "ExplanationOfBenefit", "status", element.getStatusElement(), -1);
7371    if (element.hasType())
7372      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7373    if (element.hasSubType())
7374      composeCodeableConcept(t, "ExplanationOfBenefit", "subType", element.getSubType(), -1);
7375    if (element.hasUseElement())
7376      composeEnum(t, "ExplanationOfBenefit", "use", element.getUseElement(), -1);
7377    if (element.hasPatient())
7378      composeReference(t, "ExplanationOfBenefit", "patient", element.getPatient(), -1);
7379    if (element.hasBillablePeriod())
7380      composePeriod(t, "ExplanationOfBenefit", "billablePeriod", element.getBillablePeriod(), -1);
7381    if (element.hasCreatedElement())
7382      composeDateTime(t, "ExplanationOfBenefit", "created", element.getCreatedElement(), -1);
7383    if (element.hasEnterer())
7384      composeReference(t, "ExplanationOfBenefit", "enterer", element.getEnterer(), -1);
7385    if (element.hasInsurer())
7386      composeReference(t, "ExplanationOfBenefit", "insurer", element.getInsurer(), -1);
7387    if (element.hasProvider())
7388      composeReference(t, "ExplanationOfBenefit", "provider", element.getProvider(), -1);
7389    if (element.hasPriority())
7390      composeCodeableConcept(t, "ExplanationOfBenefit", "priority", element.getPriority(), -1);
7391    if (element.hasFundsReserveRequested())
7392      composeCodeableConcept(t, "ExplanationOfBenefit", "fundsReserveRequested", element.getFundsReserveRequested(), -1);
7393    if (element.hasFundsReserve())
7394      composeCodeableConcept(t, "ExplanationOfBenefit", "fundsReserve", element.getFundsReserve(), -1);
7395    for (int i = 0; i < element.getRelated().size(); i++)
7396      composeExplanationOfBenefitRelatedClaimComponent(t, "ExplanationOfBenefit", "related", element.getRelated().get(i), i);
7397    if (element.hasPrescription())
7398      composeReference(t, "ExplanationOfBenefit", "prescription", element.getPrescription(), -1);
7399    if (element.hasOriginalPrescription())
7400      composeReference(t, "ExplanationOfBenefit", "originalPrescription", element.getOriginalPrescription(), -1);
7401    if (element.hasPayee())
7402      composeExplanationOfBenefitPayeeComponent(t, "ExplanationOfBenefit", "payee", element.getPayee(), -1);
7403    if (element.hasReferral())
7404      composeReference(t, "ExplanationOfBenefit", "referral", element.getReferral(), -1);
7405    if (element.hasFacility())
7406      composeReference(t, "ExplanationOfBenefit", "facility", element.getFacility(), -1);
7407    if (element.hasClaim())
7408      composeReference(t, "ExplanationOfBenefit", "claim", element.getClaim(), -1);
7409    if (element.hasClaimResponse())
7410      composeReference(t, "ExplanationOfBenefit", "claimResponse", element.getClaimResponse(), -1);
7411    if (element.hasOutcomeElement())
7412      composeEnum(t, "ExplanationOfBenefit", "outcome", element.getOutcomeElement(), -1);
7413    if (element.hasDispositionElement())
7414      composeString(t, "ExplanationOfBenefit", "disposition", element.getDispositionElement(), -1);
7415    for (int i = 0; i < element.getPreAuthRef().size(); i++)
7416      composeString(t, "ExplanationOfBenefit", "preAuthRef", element.getPreAuthRef().get(i), i);
7417    for (int i = 0; i < element.getPreAuthRefPeriod().size(); i++)
7418      composePeriod(t, "ExplanationOfBenefit", "preAuthRefPeriod", element.getPreAuthRefPeriod().get(i), i);
7419    for (int i = 0; i < element.getCareTeam().size(); i++)
7420      composeExplanationOfBenefitCareTeamComponent(t, "ExplanationOfBenefit", "careTeam", element.getCareTeam().get(i), i);
7421    for (int i = 0; i < element.getSupportingInfo().size(); i++)
7422      composeExplanationOfBenefitSupportingInformationComponent(t, "ExplanationOfBenefit", "supportingInfo", element.getSupportingInfo().get(i), i);
7423    for (int i = 0; i < element.getDiagnosis().size(); i++)
7424      composeExplanationOfBenefitDiagnosisComponent(t, "ExplanationOfBenefit", "diagnosis", element.getDiagnosis().get(i), i);
7425    for (int i = 0; i < element.getProcedure().size(); i++)
7426      composeExplanationOfBenefitProcedureComponent(t, "ExplanationOfBenefit", "procedure", element.getProcedure().get(i), i);
7427    if (element.hasPrecedenceElement())
7428      composePositiveInt(t, "ExplanationOfBenefit", "precedence", element.getPrecedenceElement(), -1);
7429    for (int i = 0; i < element.getInsurance().size(); i++)
7430      composeExplanationOfBenefitInsuranceComponent(t, "ExplanationOfBenefit", "insurance", element.getInsurance().get(i), i);
7431    if (element.hasAccident())
7432      composeExplanationOfBenefitAccidentComponent(t, "ExplanationOfBenefit", "accident", element.getAccident(), -1);
7433    for (int i = 0; i < element.getItem().size(); i++)
7434      composeExplanationOfBenefitItemComponent(t, "ExplanationOfBenefit", "item", element.getItem().get(i), i);
7435    for (int i = 0; i < element.getAddItem().size(); i++)
7436      composeExplanationOfBenefitAddedItemComponent(t, "ExplanationOfBenefit", "addItem", element.getAddItem().get(i), i);
7437    for (int i = 0; i < element.getAdjudication().size(); i++)
7438      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7439    for (int i = 0; i < element.getTotal().size(); i++)
7440      composeExplanationOfBenefitTotalComponent(t, "ExplanationOfBenefit", "total", element.getTotal().get(i), i);
7441    if (element.hasPayment())
7442      composeExplanationOfBenefitPaymentComponent(t, "ExplanationOfBenefit", "payment", element.getPayment(), -1);
7443    if (element.hasFormCode())
7444      composeCodeableConcept(t, "ExplanationOfBenefit", "formCode", element.getFormCode(), -1);
7445    if (element.hasForm())
7446      composeAttachment(t, "ExplanationOfBenefit", "form", element.getForm(), -1);
7447    for (int i = 0; i < element.getProcessNote().size(); i++)
7448      composeExplanationOfBenefitNoteComponent(t, "ExplanationOfBenefit", "processNote", element.getProcessNote().get(i), i);
7449    if (element.hasBenefitPeriod())
7450      composePeriod(t, "ExplanationOfBenefit", "benefitPeriod", element.getBenefitPeriod(), -1);
7451    for (int i = 0; i < element.getBenefitBalance().size(); i++)
7452      composeExplanationOfBenefitBenefitBalanceComponent(t, "ExplanationOfBenefit", "benefitBalance", element.getBenefitBalance().get(i), i);
7453  }
7454
7455  protected void composeExplanationOfBenefitRelatedClaimComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.RelatedClaimComponent element, int index) {
7456    if (element == null) 
7457      return;
7458    Complex t;
7459    if (Utilities.noString(parentType))
7460      t = parent;
7461    else {
7462      t = parent.predicate("fhir:"+parentType+'.'+name);
7463    }
7464    composeBackboneElement(t, "related", name, element, index);
7465    if (element.hasClaim())
7466      composeReference(t, "ExplanationOfBenefit", "claim", element.getClaim(), -1);
7467    if (element.hasRelationship())
7468      composeCodeableConcept(t, "ExplanationOfBenefit", "relationship", element.getRelationship(), -1);
7469    if (element.hasReference())
7470      composeIdentifier(t, "ExplanationOfBenefit", "reference", element.getReference(), -1);
7471  }
7472
7473  protected void composeExplanationOfBenefitPayeeComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.PayeeComponent element, int index) {
7474    if (element == null) 
7475      return;
7476    Complex t;
7477    if (Utilities.noString(parentType))
7478      t = parent;
7479    else {
7480      t = parent.predicate("fhir:"+parentType+'.'+name);
7481    }
7482    composeBackboneElement(t, "payee", name, element, index);
7483    if (element.hasType())
7484      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7485    if (element.hasParty())
7486      composeReference(t, "ExplanationOfBenefit", "party", element.getParty(), -1);
7487  }
7488
7489  protected void composeExplanationOfBenefitCareTeamComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.CareTeamComponent element, int index) {
7490    if (element == null) 
7491      return;
7492    Complex t;
7493    if (Utilities.noString(parentType))
7494      t = parent;
7495    else {
7496      t = parent.predicate("fhir:"+parentType+'.'+name);
7497    }
7498    composeBackboneElement(t, "careTeam", name, element, index);
7499    if (element.hasSequenceElement())
7500      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7501    if (element.hasProvider())
7502      composeReference(t, "ExplanationOfBenefit", "provider", element.getProvider(), -1);
7503    if (element.hasResponsibleElement())
7504      composeBoolean(t, "ExplanationOfBenefit", "responsible", element.getResponsibleElement(), -1);
7505    if (element.hasRole())
7506      composeCodeableConcept(t, "ExplanationOfBenefit", "role", element.getRole(), -1);
7507    if (element.hasQualification())
7508      composeCodeableConcept(t, "ExplanationOfBenefit", "qualification", element.getQualification(), -1);
7509  }
7510
7511  protected void composeExplanationOfBenefitSupportingInformationComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.SupportingInformationComponent element, int index) {
7512    if (element == null) 
7513      return;
7514    Complex t;
7515    if (Utilities.noString(parentType))
7516      t = parent;
7517    else {
7518      t = parent.predicate("fhir:"+parentType+'.'+name);
7519    }
7520    composeBackboneElement(t, "supportingInfo", name, element, index);
7521    if (element.hasSequenceElement())
7522      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7523    if (element.hasCategory())
7524      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7525    if (element.hasCode())
7526      composeCodeableConcept(t, "ExplanationOfBenefit", "code", element.getCode(), -1);
7527    if (element.hasTiming())
7528      composeType(t, "ExplanationOfBenefit", "timing", element.getTiming(), -1);
7529    if (element.hasValue())
7530      composeType(t, "ExplanationOfBenefit", "value", element.getValue(), -1);
7531    if (element.hasReason())
7532      composeCoding(t, "ExplanationOfBenefit", "reason", element.getReason(), -1);
7533  }
7534
7535  protected void composeExplanationOfBenefitDiagnosisComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.DiagnosisComponent element, int index) {
7536    if (element == null) 
7537      return;
7538    Complex t;
7539    if (Utilities.noString(parentType))
7540      t = parent;
7541    else {
7542      t = parent.predicate("fhir:"+parentType+'.'+name);
7543    }
7544    composeBackboneElement(t, "diagnosis", name, element, index);
7545    if (element.hasSequenceElement())
7546      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7547    if (element.hasDiagnosis())
7548      composeType(t, "ExplanationOfBenefit", "diagnosis", element.getDiagnosis(), -1);
7549    for (int i = 0; i < element.getType().size(); i++)
7550      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType().get(i), i);
7551    if (element.hasOnAdmission())
7552      composeCodeableConcept(t, "ExplanationOfBenefit", "onAdmission", element.getOnAdmission(), -1);
7553    if (element.hasPackageCode())
7554      composeCodeableConcept(t, "ExplanationOfBenefit", "packageCode", element.getPackageCode(), -1);
7555  }
7556
7557  protected void composeExplanationOfBenefitProcedureComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.ProcedureComponent element, int index) {
7558    if (element == null) 
7559      return;
7560    Complex t;
7561    if (Utilities.noString(parentType))
7562      t = parent;
7563    else {
7564      t = parent.predicate("fhir:"+parentType+'.'+name);
7565    }
7566    composeBackboneElement(t, "procedure", name, element, index);
7567    if (element.hasSequenceElement())
7568      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7569    for (int i = 0; i < element.getType().size(); i++)
7570      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType().get(i), i);
7571    if (element.hasDateElement())
7572      composeDateTime(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
7573    if (element.hasProcedure())
7574      composeType(t, "ExplanationOfBenefit", "procedure", element.getProcedure(), -1);
7575    for (int i = 0; i < element.getUdi().size(); i++)
7576      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
7577  }
7578
7579  protected void composeExplanationOfBenefitInsuranceComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.InsuranceComponent element, int index) {
7580    if (element == null) 
7581      return;
7582    Complex t;
7583    if (Utilities.noString(parentType))
7584      t = parent;
7585    else {
7586      t = parent.predicate("fhir:"+parentType+'.'+name);
7587    }
7588    composeBackboneElement(t, "insurance", name, element, index);
7589    if (element.hasFocalElement())
7590      composeBoolean(t, "ExplanationOfBenefit", "focal", element.getFocalElement(), -1);
7591    if (element.hasCoverage())
7592      composeReference(t, "ExplanationOfBenefit", "coverage", element.getCoverage(), -1);
7593    for (int i = 0; i < element.getPreAuthRef().size(); i++)
7594      composeString(t, "ExplanationOfBenefit", "preAuthRef", element.getPreAuthRef().get(i), i);
7595  }
7596
7597  protected void composeExplanationOfBenefitAccidentComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AccidentComponent element, int index) {
7598    if (element == null) 
7599      return;
7600    Complex t;
7601    if (Utilities.noString(parentType))
7602      t = parent;
7603    else {
7604      t = parent.predicate("fhir:"+parentType+'.'+name);
7605    }
7606    composeBackboneElement(t, "accident", name, element, index);
7607    if (element.hasDateElement())
7608      composeDate(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
7609    if (element.hasType())
7610      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7611    if (element.hasLocation())
7612      composeType(t, "ExplanationOfBenefit", "location", element.getLocation(), -1);
7613  }
7614
7615  protected void composeExplanationOfBenefitItemComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.ItemComponent element, int index) {
7616    if (element == null) 
7617      return;
7618    Complex t;
7619    if (Utilities.noString(parentType))
7620      t = parent;
7621    else {
7622      t = parent.predicate("fhir:"+parentType+'.'+name);
7623    }
7624    composeBackboneElement(t, "item", name, element, index);
7625    if (element.hasSequenceElement())
7626      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7627    for (int i = 0; i < element.getCareTeamSequence().size(); i++)
7628      composePositiveInt(t, "ExplanationOfBenefit", "careTeamSequence", element.getCareTeamSequence().get(i), i);
7629    for (int i = 0; i < element.getDiagnosisSequence().size(); i++)
7630      composePositiveInt(t, "ExplanationOfBenefit", "diagnosisSequence", element.getDiagnosisSequence().get(i), i);
7631    for (int i = 0; i < element.getProcedureSequence().size(); i++)
7632      composePositiveInt(t, "ExplanationOfBenefit", "procedureSequence", element.getProcedureSequence().get(i), i);
7633    for (int i = 0; i < element.getInformationSequence().size(); i++)
7634      composePositiveInt(t, "ExplanationOfBenefit", "informationSequence", element.getInformationSequence().get(i), i);
7635    if (element.hasRevenue())
7636      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
7637    if (element.hasCategory())
7638      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7639    if (element.hasProductOrService())
7640      composeCodeableConcept(t, "ExplanationOfBenefit", "productOrService", element.getProductOrService(), -1);
7641    for (int i = 0; i < element.getModifier().size(); i++)
7642      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7643    for (int i = 0; i < element.getProgramCode().size(); i++)
7644      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
7645    if (element.hasServiced())
7646      composeType(t, "ExplanationOfBenefit", "serviced", element.getServiced(), -1);
7647    if (element.hasLocation())
7648      composeType(t, "ExplanationOfBenefit", "location", element.getLocation(), -1);
7649    if (element.hasQuantity())
7650      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7651    if (element.hasUnitPrice())
7652      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7653    if (element.hasFactorElement())
7654      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7655    if (element.hasNet())
7656      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7657    for (int i = 0; i < element.getUdi().size(); i++)
7658      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
7659    if (element.hasBodySite())
7660      composeCodeableConcept(t, "ExplanationOfBenefit", "bodySite", element.getBodySite(), -1);
7661    for (int i = 0; i < element.getSubSite().size(); i++)
7662      composeCodeableConcept(t, "ExplanationOfBenefit", "subSite", element.getSubSite().get(i), i);
7663    for (int i = 0; i < element.getEncounter().size(); i++)
7664      composeReference(t, "ExplanationOfBenefit", "encounter", element.getEncounter().get(i), i);
7665    for (int i = 0; i < element.getNoteNumber().size(); i++)
7666      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7667    for (int i = 0; i < element.getAdjudication().size(); i++)
7668      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7669    for (int i = 0; i < element.getDetail().size(); i++)
7670      composeExplanationOfBenefitDetailComponent(t, "ExplanationOfBenefit", "detail", element.getDetail().get(i), i);
7671  }
7672
7673  protected void composeExplanationOfBenefitAdjudicationComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AdjudicationComponent element, int index) {
7674    if (element == null) 
7675      return;
7676    Complex t;
7677    if (Utilities.noString(parentType))
7678      t = parent;
7679    else {
7680      t = parent.predicate("fhir:"+parentType+'.'+name);
7681    }
7682    composeBackboneElement(t, "adjudication", name, element, index);
7683    if (element.hasCategory())
7684      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7685    if (element.hasReason())
7686      composeCodeableConcept(t, "ExplanationOfBenefit", "reason", element.getReason(), -1);
7687    if (element.hasAmount())
7688      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
7689    if (element.hasValueElement())
7690      composeDecimal(t, "ExplanationOfBenefit", "value", element.getValueElement(), -1);
7691  }
7692
7693  protected void composeExplanationOfBenefitDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.DetailComponent element, int index) {
7694    if (element == null) 
7695      return;
7696    Complex t;
7697    if (Utilities.noString(parentType))
7698      t = parent;
7699    else {
7700      t = parent.predicate("fhir:"+parentType+'.'+name);
7701    }
7702    composeBackboneElement(t, "detail", name, element, index);
7703    if (element.hasSequenceElement())
7704      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7705    if (element.hasRevenue())
7706      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
7707    if (element.hasCategory())
7708      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7709    if (element.hasProductOrService())
7710      composeCodeableConcept(t, "ExplanationOfBenefit", "productOrService", element.getProductOrService(), -1);
7711    for (int i = 0; i < element.getModifier().size(); i++)
7712      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7713    for (int i = 0; i < element.getProgramCode().size(); i++)
7714      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
7715    if (element.hasQuantity())
7716      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7717    if (element.hasUnitPrice())
7718      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7719    if (element.hasFactorElement())
7720      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7721    if (element.hasNet())
7722      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7723    for (int i = 0; i < element.getUdi().size(); i++)
7724      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
7725    for (int i = 0; i < element.getNoteNumber().size(); i++)
7726      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7727    for (int i = 0; i < element.getAdjudication().size(); i++)
7728      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7729    for (int i = 0; i < element.getSubDetail().size(); i++)
7730      composeExplanationOfBenefitSubDetailComponent(t, "ExplanationOfBenefit", "subDetail", element.getSubDetail().get(i), i);
7731  }
7732
7733  protected void composeExplanationOfBenefitSubDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.SubDetailComponent element, int index) {
7734    if (element == null) 
7735      return;
7736    Complex t;
7737    if (Utilities.noString(parentType))
7738      t = parent;
7739    else {
7740      t = parent.predicate("fhir:"+parentType+'.'+name);
7741    }
7742    composeBackboneElement(t, "subDetail", name, element, index);
7743    if (element.hasSequenceElement())
7744      composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
7745    if (element.hasRevenue())
7746      composeCodeableConcept(t, "ExplanationOfBenefit", "revenue", element.getRevenue(), -1);
7747    if (element.hasCategory())
7748      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7749    if (element.hasProductOrService())
7750      composeCodeableConcept(t, "ExplanationOfBenefit", "productOrService", element.getProductOrService(), -1);
7751    for (int i = 0; i < element.getModifier().size(); i++)
7752      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7753    for (int i = 0; i < element.getProgramCode().size(); i++)
7754      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
7755    if (element.hasQuantity())
7756      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7757    if (element.hasUnitPrice())
7758      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7759    if (element.hasFactorElement())
7760      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7761    if (element.hasNet())
7762      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7763    for (int i = 0; i < element.getUdi().size(); i++)
7764      composeReference(t, "ExplanationOfBenefit", "udi", element.getUdi().get(i), i);
7765    for (int i = 0; i < element.getNoteNumber().size(); i++)
7766      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7767    for (int i = 0; i < element.getAdjudication().size(); i++)
7768      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7769  }
7770
7771  protected void composeExplanationOfBenefitAddedItemComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AddedItemComponent element, int index) {
7772    if (element == null) 
7773      return;
7774    Complex t;
7775    if (Utilities.noString(parentType))
7776      t = parent;
7777    else {
7778      t = parent.predicate("fhir:"+parentType+'.'+name);
7779    }
7780    composeBackboneElement(t, "addItem", name, element, index);
7781    for (int i = 0; i < element.getItemSequence().size(); i++)
7782      composePositiveInt(t, "ExplanationOfBenefit", "itemSequence", element.getItemSequence().get(i), i);
7783    for (int i = 0; i < element.getDetailSequence().size(); i++)
7784      composePositiveInt(t, "ExplanationOfBenefit", "detailSequence", element.getDetailSequence().get(i), i);
7785    for (int i = 0; i < element.getSubDetailSequence().size(); i++)
7786      composePositiveInt(t, "ExplanationOfBenefit", "subDetailSequence", element.getSubDetailSequence().get(i), i);
7787    for (int i = 0; i < element.getProvider().size(); i++)
7788      composeReference(t, "ExplanationOfBenefit", "provider", element.getProvider().get(i), i);
7789    if (element.hasProductOrService())
7790      composeCodeableConcept(t, "ExplanationOfBenefit", "productOrService", element.getProductOrService(), -1);
7791    for (int i = 0; i < element.getModifier().size(); i++)
7792      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7793    for (int i = 0; i < element.getProgramCode().size(); i++)
7794      composeCodeableConcept(t, "ExplanationOfBenefit", "programCode", element.getProgramCode().get(i), i);
7795    if (element.hasServiced())
7796      composeType(t, "ExplanationOfBenefit", "serviced", element.getServiced(), -1);
7797    if (element.hasLocation())
7798      composeType(t, "ExplanationOfBenefit", "location", element.getLocation(), -1);
7799    if (element.hasQuantity())
7800      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7801    if (element.hasUnitPrice())
7802      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7803    if (element.hasFactorElement())
7804      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7805    if (element.hasNet())
7806      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7807    if (element.hasBodySite())
7808      composeCodeableConcept(t, "ExplanationOfBenefit", "bodySite", element.getBodySite(), -1);
7809    for (int i = 0; i < element.getSubSite().size(); i++)
7810      composeCodeableConcept(t, "ExplanationOfBenefit", "subSite", element.getSubSite().get(i), i);
7811    for (int i = 0; i < element.getNoteNumber().size(); i++)
7812      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7813    for (int i = 0; i < element.getAdjudication().size(); i++)
7814      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7815    for (int i = 0; i < element.getDetail().size(); i++)
7816      composeExplanationOfBenefitAddedItemDetailComponent(t, "ExplanationOfBenefit", "detail", element.getDetail().get(i), i);
7817  }
7818
7819  protected void composeExplanationOfBenefitAddedItemDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AddedItemDetailComponent element, int index) {
7820    if (element == null) 
7821      return;
7822    Complex t;
7823    if (Utilities.noString(parentType))
7824      t = parent;
7825    else {
7826      t = parent.predicate("fhir:"+parentType+'.'+name);
7827    }
7828    composeBackboneElement(t, "detail", name, element, index);
7829    if (element.hasProductOrService())
7830      composeCodeableConcept(t, "ExplanationOfBenefit", "productOrService", element.getProductOrService(), -1);
7831    for (int i = 0; i < element.getModifier().size(); i++)
7832      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7833    if (element.hasQuantity())
7834      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7835    if (element.hasUnitPrice())
7836      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7837    if (element.hasFactorElement())
7838      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7839    if (element.hasNet())
7840      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7841    for (int i = 0; i < element.getNoteNumber().size(); i++)
7842      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7843    for (int i = 0; i < element.getAdjudication().size(); i++)
7844      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7845    for (int i = 0; i < element.getSubDetail().size(); i++)
7846      composeExplanationOfBenefitAddedItemDetailSubDetailComponent(t, "ExplanationOfBenefit", "subDetail", element.getSubDetail().get(i), i);
7847  }
7848
7849  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element, int index) {
7850    if (element == null) 
7851      return;
7852    Complex t;
7853    if (Utilities.noString(parentType))
7854      t = parent;
7855    else {
7856      t = parent.predicate("fhir:"+parentType+'.'+name);
7857    }
7858    composeBackboneElement(t, "subDetail", name, element, index);
7859    if (element.hasProductOrService())
7860      composeCodeableConcept(t, "ExplanationOfBenefit", "productOrService", element.getProductOrService(), -1);
7861    for (int i = 0; i < element.getModifier().size(); i++)
7862      composeCodeableConcept(t, "ExplanationOfBenefit", "modifier", element.getModifier().get(i), i);
7863    if (element.hasQuantity())
7864      composeQuantity(t, "ExplanationOfBenefit", "quantity", element.getQuantity(), -1);
7865    if (element.hasUnitPrice())
7866      composeMoney(t, "ExplanationOfBenefit", "unitPrice", element.getUnitPrice(), -1);
7867    if (element.hasFactorElement())
7868      composeDecimal(t, "ExplanationOfBenefit", "factor", element.getFactorElement(), -1);
7869    if (element.hasNet())
7870      composeMoney(t, "ExplanationOfBenefit", "net", element.getNet(), -1);
7871    for (int i = 0; i < element.getNoteNumber().size(); i++)
7872      composePositiveInt(t, "ExplanationOfBenefit", "noteNumber", element.getNoteNumber().get(i), i);
7873    for (int i = 0; i < element.getAdjudication().size(); i++)
7874      composeExplanationOfBenefitAdjudicationComponent(t, "ExplanationOfBenefit", "adjudication", element.getAdjudication().get(i), i);
7875  }
7876
7877  protected void composeExplanationOfBenefitTotalComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.TotalComponent element, int index) {
7878    if (element == null) 
7879      return;
7880    Complex t;
7881    if (Utilities.noString(parentType))
7882      t = parent;
7883    else {
7884      t = parent.predicate("fhir:"+parentType+'.'+name);
7885    }
7886    composeBackboneElement(t, "total", name, element, index);
7887    if (element.hasCategory())
7888      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7889    if (element.hasAmount())
7890      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
7891  }
7892
7893  protected void composeExplanationOfBenefitPaymentComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.PaymentComponent element, int index) {
7894    if (element == null) 
7895      return;
7896    Complex t;
7897    if (Utilities.noString(parentType))
7898      t = parent;
7899    else {
7900      t = parent.predicate("fhir:"+parentType+'.'+name);
7901    }
7902    composeBackboneElement(t, "payment", name, element, index);
7903    if (element.hasType())
7904      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7905    if (element.hasAdjustment())
7906      composeMoney(t, "ExplanationOfBenefit", "adjustment", element.getAdjustment(), -1);
7907    if (element.hasAdjustmentReason())
7908      composeCodeableConcept(t, "ExplanationOfBenefit", "adjustmentReason", element.getAdjustmentReason(), -1);
7909    if (element.hasDateElement())
7910      composeDate(t, "ExplanationOfBenefit", "date", element.getDateElement(), -1);
7911    if (element.hasAmount())
7912      composeMoney(t, "ExplanationOfBenefit", "amount", element.getAmount(), -1);
7913    if (element.hasIdentifier())
7914      composeIdentifier(t, "ExplanationOfBenefit", "identifier", element.getIdentifier(), -1);
7915  }
7916
7917  protected void composeExplanationOfBenefitNoteComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.NoteComponent element, int index) {
7918    if (element == null) 
7919      return;
7920    Complex t;
7921    if (Utilities.noString(parentType))
7922      t = parent;
7923    else {
7924      t = parent.predicate("fhir:"+parentType+'.'+name);
7925    }
7926    composeBackboneElement(t, "processNote", name, element, index);
7927    if (element.hasNumberElement())
7928      composePositiveInt(t, "ExplanationOfBenefit", "number", element.getNumberElement(), -1);
7929    if (element.hasTypeElement())
7930      composeEnum(t, "ExplanationOfBenefit", "type", element.getTypeElement(), -1);
7931    if (element.hasTextElement())
7932      composeString(t, "ExplanationOfBenefit", "text", element.getTextElement(), -1);
7933    if (element.hasLanguage())
7934      composeCodeableConcept(t, "ExplanationOfBenefit", "language", element.getLanguage(), -1);
7935  }
7936
7937  protected void composeExplanationOfBenefitBenefitBalanceComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.BenefitBalanceComponent element, int index) {
7938    if (element == null) 
7939      return;
7940    Complex t;
7941    if (Utilities.noString(parentType))
7942      t = parent;
7943    else {
7944      t = parent.predicate("fhir:"+parentType+'.'+name);
7945    }
7946    composeBackboneElement(t, "benefitBalance", name, element, index);
7947    if (element.hasCategory())
7948      composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
7949    if (element.hasExcludedElement())
7950      composeBoolean(t, "ExplanationOfBenefit", "excluded", element.getExcludedElement(), -1);
7951    if (element.hasNameElement())
7952      composeString(t, "ExplanationOfBenefit", "name", element.getNameElement(), -1);
7953    if (element.hasDescriptionElement())
7954      composeString(t, "ExplanationOfBenefit", "description", element.getDescriptionElement(), -1);
7955    if (element.hasNetwork())
7956      composeCodeableConcept(t, "ExplanationOfBenefit", "network", element.getNetwork(), -1);
7957    if (element.hasUnit())
7958      composeCodeableConcept(t, "ExplanationOfBenefit", "unit", element.getUnit(), -1);
7959    if (element.hasTerm())
7960      composeCodeableConcept(t, "ExplanationOfBenefit", "term", element.getTerm(), -1);
7961    for (int i = 0; i < element.getFinancial().size(); i++)
7962      composeExplanationOfBenefitBenefitComponent(t, "ExplanationOfBenefit", "financial", element.getFinancial().get(i), i);
7963  }
7964
7965  protected void composeExplanationOfBenefitBenefitComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.BenefitComponent element, int index) {
7966    if (element == null) 
7967      return;
7968    Complex t;
7969    if (Utilities.noString(parentType))
7970      t = parent;
7971    else {
7972      t = parent.predicate("fhir:"+parentType+'.'+name);
7973    }
7974    composeBackboneElement(t, "financial", name, element, index);
7975    if (element.hasType())
7976      composeCodeableConcept(t, "ExplanationOfBenefit", "type", element.getType(), -1);
7977    if (element.hasAllowed())
7978      composeType(t, "ExplanationOfBenefit", "allowed", element.getAllowed(), -1);
7979    if (element.hasUsed())
7980      composeType(t, "ExplanationOfBenefit", "used", element.getUsed(), -1);
7981  }
7982
7983  protected void composeFamilyMemberHistory(Complex parent, String parentType, String name, FamilyMemberHistory element, int index) {
7984    if (element == null) 
7985      return;
7986    Complex t;
7987    if (Utilities.noString(parentType))
7988      t = parent;
7989    else {
7990      t = parent.predicate("fhir:"+parentType+'.'+name);
7991    }
7992    composeDomainResource(t, "FamilyMemberHistory", name, element, index);
7993    for (int i = 0; i < element.getIdentifier().size(); i++)
7994      composeIdentifier(t, "FamilyMemberHistory", "identifier", element.getIdentifier().get(i), i);
7995    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
7996      composeCanonical(t, "FamilyMemberHistory", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
7997    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
7998      composeUri(t, "FamilyMemberHistory", "instantiatesUri", element.getInstantiatesUri().get(i), i);
7999    if (element.hasStatusElement())
8000      composeEnum(t, "FamilyMemberHistory", "status", element.getStatusElement(), -1);
8001    if (element.hasDataAbsentReason())
8002      composeCodeableConcept(t, "FamilyMemberHistory", "dataAbsentReason", element.getDataAbsentReason(), -1);
8003    if (element.hasPatient())
8004      composeReference(t, "FamilyMemberHistory", "patient", element.getPatient(), -1);
8005    if (element.hasDateElement())
8006      composeDateTime(t, "FamilyMemberHistory", "date", element.getDateElement(), -1);
8007    if (element.hasNameElement())
8008      composeString(t, "FamilyMemberHistory", "name", element.getNameElement(), -1);
8009    if (element.hasRelationship())
8010      composeCodeableConcept(t, "FamilyMemberHistory", "relationship", element.getRelationship(), -1);
8011    if (element.hasSex())
8012      composeCodeableConcept(t, "FamilyMemberHistory", "sex", element.getSex(), -1);
8013    if (element.hasBorn())
8014      composeType(t, "FamilyMemberHistory", "born", element.getBorn(), -1);
8015    if (element.hasAge())
8016      composeType(t, "FamilyMemberHistory", "age", element.getAge(), -1);
8017    if (element.hasEstimatedAgeElement())
8018      composeBoolean(t, "FamilyMemberHistory", "estimatedAge", element.getEstimatedAgeElement(), -1);
8019    if (element.hasDeceased())
8020      composeType(t, "FamilyMemberHistory", "deceased", element.getDeceased(), -1);
8021    for (int i = 0; i < element.getReasonCode().size(); i++)
8022      composeCodeableConcept(t, "FamilyMemberHistory", "reasonCode", element.getReasonCode().get(i), i);
8023    for (int i = 0; i < element.getReasonReference().size(); i++)
8024      composeReference(t, "FamilyMemberHistory", "reasonReference", element.getReasonReference().get(i), i);
8025    for (int i = 0; i < element.getNote().size(); i++)
8026      composeAnnotation(t, "FamilyMemberHistory", "note", element.getNote().get(i), i);
8027    for (int i = 0; i < element.getCondition().size(); i++)
8028      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(t, "FamilyMemberHistory", "condition", element.getCondition().get(i), i);
8029  }
8030
8031  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(Complex parent, String parentType, String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element, int index) {
8032    if (element == null) 
8033      return;
8034    Complex t;
8035    if (Utilities.noString(parentType))
8036      t = parent;
8037    else {
8038      t = parent.predicate("fhir:"+parentType+'.'+name);
8039    }
8040    composeBackboneElement(t, "condition", name, element, index);
8041    if (element.hasCode())
8042      composeCodeableConcept(t, "FamilyMemberHistory", "code", element.getCode(), -1);
8043    if (element.hasOutcome())
8044      composeCodeableConcept(t, "FamilyMemberHistory", "outcome", element.getOutcome(), -1);
8045    if (element.hasContributedToDeathElement())
8046      composeBoolean(t, "FamilyMemberHistory", "contributedToDeath", element.getContributedToDeathElement(), -1);
8047    if (element.hasOnset())
8048      composeType(t, "FamilyMemberHistory", "onset", element.getOnset(), -1);
8049    for (int i = 0; i < element.getNote().size(); i++)
8050      composeAnnotation(t, "FamilyMemberHistory", "note", element.getNote().get(i), i);
8051  }
8052
8053  protected void composeFlag(Complex parent, String parentType, String name, Flag element, int index) {
8054    if (element == null) 
8055      return;
8056    Complex t;
8057    if (Utilities.noString(parentType))
8058      t = parent;
8059    else {
8060      t = parent.predicate("fhir:"+parentType+'.'+name);
8061    }
8062    composeDomainResource(t, "Flag", name, element, index);
8063    for (int i = 0; i < element.getIdentifier().size(); i++)
8064      composeIdentifier(t, "Flag", "identifier", element.getIdentifier().get(i), i);
8065    if (element.hasStatusElement())
8066      composeEnum(t, "Flag", "status", element.getStatusElement(), -1);
8067    for (int i = 0; i < element.getCategory().size(); i++)
8068      composeCodeableConcept(t, "Flag", "category", element.getCategory().get(i), i);
8069    if (element.hasCode())
8070      composeCodeableConcept(t, "Flag", "code", element.getCode(), -1);
8071    if (element.hasSubject())
8072      composeReference(t, "Flag", "subject", element.getSubject(), -1);
8073    if (element.hasPeriod())
8074      composePeriod(t, "Flag", "period", element.getPeriod(), -1);
8075    if (element.hasEncounter())
8076      composeReference(t, "Flag", "encounter", element.getEncounter(), -1);
8077    if (element.hasAuthor())
8078      composeReference(t, "Flag", "author", element.getAuthor(), -1);
8079  }
8080
8081  protected void composeGoal(Complex parent, String parentType, String name, Goal element, int index) {
8082    if (element == null) 
8083      return;
8084    Complex t;
8085    if (Utilities.noString(parentType))
8086      t = parent;
8087    else {
8088      t = parent.predicate("fhir:"+parentType+'.'+name);
8089    }
8090    composeDomainResource(t, "Goal", name, element, index);
8091    for (int i = 0; i < element.getIdentifier().size(); i++)
8092      composeIdentifier(t, "Goal", "identifier", element.getIdentifier().get(i), i);
8093    if (element.hasLifecycleStatusElement())
8094      composeEnum(t, "Goal", "lifecycleStatus", element.getLifecycleStatusElement(), -1);
8095    if (element.hasAchievementStatus())
8096      composeCodeableConcept(t, "Goal", "achievementStatus", element.getAchievementStatus(), -1);
8097    for (int i = 0; i < element.getCategory().size(); i++)
8098      composeCodeableConcept(t, "Goal", "category", element.getCategory().get(i), i);
8099    if (element.hasPriority())
8100      composeCodeableConcept(t, "Goal", "priority", element.getPriority(), -1);
8101    if (element.hasDescription())
8102      composeCodeableConcept(t, "Goal", "description", element.getDescription(), -1);
8103    if (element.hasSubject())
8104      composeReference(t, "Goal", "subject", element.getSubject(), -1);
8105    if (element.hasStart())
8106      composeType(t, "Goal", "start", element.getStart(), -1);
8107    for (int i = 0; i < element.getTarget().size(); i++)
8108      composeGoalGoalTargetComponent(t, "Goal", "target", element.getTarget().get(i), i);
8109    if (element.hasStatusDateElement())
8110      composeDate(t, "Goal", "statusDate", element.getStatusDateElement(), -1);
8111    if (element.hasStatusReasonElement())
8112      composeString(t, "Goal", "statusReason", element.getStatusReasonElement(), -1);
8113    if (element.hasExpressedBy())
8114      composeReference(t, "Goal", "expressedBy", element.getExpressedBy(), -1);
8115    for (int i = 0; i < element.getAddresses().size(); i++)
8116      composeReference(t, "Goal", "addresses", element.getAddresses().get(i), i);
8117    for (int i = 0; i < element.getNote().size(); i++)
8118      composeAnnotation(t, "Goal", "note", element.getNote().get(i), i);
8119    for (int i = 0; i < element.getOutcomeCode().size(); i++)
8120      composeCodeableConcept(t, "Goal", "outcomeCode", element.getOutcomeCode().get(i), i);
8121    for (int i = 0; i < element.getOutcomeReference().size(); i++)
8122      composeReference(t, "Goal", "outcomeReference", element.getOutcomeReference().get(i), i);
8123  }
8124
8125  protected void composeGoalGoalTargetComponent(Complex parent, String parentType, String name, Goal.GoalTargetComponent element, int index) {
8126    if (element == null) 
8127      return;
8128    Complex t;
8129    if (Utilities.noString(parentType))
8130      t = parent;
8131    else {
8132      t = parent.predicate("fhir:"+parentType+'.'+name);
8133    }
8134    composeBackboneElement(t, "target", name, element, index);
8135    if (element.hasMeasure())
8136      composeCodeableConcept(t, "Goal", "measure", element.getMeasure(), -1);
8137    if (element.hasDetail())
8138      composeType(t, "Goal", "detail", element.getDetail(), -1);
8139    if (element.hasDue())
8140      composeType(t, "Goal", "due", element.getDue(), -1);
8141  }
8142
8143  protected void composeGraphDefinition(Complex parent, String parentType, String name, GraphDefinition element, int index) {
8144    if (element == null) 
8145      return;
8146    Complex t;
8147    if (Utilities.noString(parentType))
8148      t = parent;
8149    else {
8150      t = parent.predicate("fhir:"+parentType+'.'+name);
8151    }
8152    composeDomainResource(t, "GraphDefinition", name, element, index);
8153    if (element.hasUrlElement())
8154      composeUri(t, "GraphDefinition", "url", element.getUrlElement(), -1);
8155    if (element.hasVersionElement())
8156      composeString(t, "GraphDefinition", "version", element.getVersionElement(), -1);
8157    if (element.hasNameElement())
8158      composeString(t, "GraphDefinition", "name", element.getNameElement(), -1);
8159    if (element.hasStatusElement())
8160      composeEnum(t, "GraphDefinition", "status", element.getStatusElement(), -1);
8161    if (element.hasExperimentalElement())
8162      composeBoolean(t, "GraphDefinition", "experimental", element.getExperimentalElement(), -1);
8163    if (element.hasDateElement())
8164      composeDateTime(t, "GraphDefinition", "date", element.getDateElement(), -1);
8165    if (element.hasPublisherElement())
8166      composeString(t, "GraphDefinition", "publisher", element.getPublisherElement(), -1);
8167    for (int i = 0; i < element.getContact().size(); i++)
8168      composeContactDetail(t, "GraphDefinition", "contact", element.getContact().get(i), i);
8169    if (element.hasDescriptionElement())
8170      composeMarkdown(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
8171    for (int i = 0; i < element.getUseContext().size(); i++)
8172      composeUsageContext(t, "GraphDefinition", "useContext", element.getUseContext().get(i), i);
8173    for (int i = 0; i < element.getJurisdiction().size(); i++)
8174      composeCodeableConcept(t, "GraphDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
8175    if (element.hasPurposeElement())
8176      composeMarkdown(t, "GraphDefinition", "purpose", element.getPurposeElement(), -1);
8177    if (element.hasStartElement())
8178      composeCode(t, "GraphDefinition", "start", element.getStartElement(), -1);
8179    if (element.hasProfileElement())
8180      composeCanonical(t, "GraphDefinition", "profile", element.getProfileElement(), -1);
8181    for (int i = 0; i < element.getLink().size(); i++)
8182      composeGraphDefinitionGraphDefinitionLinkComponent(t, "GraphDefinition", "link", element.getLink().get(i), i);
8183  }
8184
8185  protected void composeGraphDefinitionGraphDefinitionLinkComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkComponent element, int index) {
8186    if (element == null) 
8187      return;
8188    Complex t;
8189    if (Utilities.noString(parentType))
8190      t = parent;
8191    else {
8192      t = parent.predicate("fhir:"+parentType+'.'+name);
8193    }
8194    composeBackboneElement(t, "link", name, element, index);
8195    if (element.hasPathElement())
8196      composeString(t, "GraphDefinition", "path", element.getPathElement(), -1);
8197    if (element.hasSliceNameElement())
8198      composeString(t, "GraphDefinition", "sliceName", element.getSliceNameElement(), -1);
8199    if (element.hasMinElement())
8200      composeInteger(t, "GraphDefinition", "min", element.getMinElement(), -1);
8201    if (element.hasMaxElement())
8202      composeString(t, "GraphDefinition", "max", element.getMaxElement(), -1);
8203    if (element.hasDescriptionElement())
8204      composeString(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
8205    for (int i = 0; i < element.getTarget().size(); i++)
8206      composeGraphDefinitionGraphDefinitionLinkTargetComponent(t, "GraphDefinition", "target", element.getTarget().get(i), i);
8207  }
8208
8209  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkTargetComponent element, int index) {
8210    if (element == null) 
8211      return;
8212    Complex t;
8213    if (Utilities.noString(parentType))
8214      t = parent;
8215    else {
8216      t = parent.predicate("fhir:"+parentType+'.'+name);
8217    }
8218    composeBackboneElement(t, "target", name, element, index);
8219    if (element.hasTypeElement())
8220      composeCode(t, "GraphDefinition", "type", element.getTypeElement(), -1);
8221    if (element.hasParamsElement())
8222      composeString(t, "GraphDefinition", "params", element.getParamsElement(), -1);
8223    if (element.hasProfileElement())
8224      composeCanonical(t, "GraphDefinition", "profile", element.getProfileElement(), -1);
8225    for (int i = 0; i < element.getCompartment().size(); i++)
8226      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(t, "GraphDefinition", "compartment", element.getCompartment().get(i), i);
8227    for (int i = 0; i < element.getLink().size(); i++)
8228      composeGraphDefinitionGraphDefinitionLinkComponent(t, "GraphDefinition", "link", element.getLink().get(i), i);
8229  }
8230
8231  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(Complex parent, String parentType, String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element, int index) {
8232    if (element == null) 
8233      return;
8234    Complex t;
8235    if (Utilities.noString(parentType))
8236      t = parent;
8237    else {
8238      t = parent.predicate("fhir:"+parentType+'.'+name);
8239    }
8240    composeBackboneElement(t, "compartment", name, element, index);
8241    if (element.hasUseElement())
8242      composeEnum(t, "GraphDefinition", "use", element.getUseElement(), -1);
8243    if (element.hasCodeElement())
8244      composeEnum(t, "GraphDefinition", "code", element.getCodeElement(), -1);
8245    if (element.hasRuleElement())
8246      composeEnum(t, "GraphDefinition", "rule", element.getRuleElement(), -1);
8247    if (element.hasExpressionElement())
8248      composeString(t, "GraphDefinition", "expression", element.getExpressionElement(), -1);
8249    if (element.hasDescriptionElement())
8250      composeString(t, "GraphDefinition", "description", element.getDescriptionElement(), -1);
8251  }
8252
8253  protected void composeGroup(Complex parent, String parentType, String name, Group element, int index) {
8254    if (element == null) 
8255      return;
8256    Complex t;
8257    if (Utilities.noString(parentType))
8258      t = parent;
8259    else {
8260      t = parent.predicate("fhir:"+parentType+'.'+name);
8261    }
8262    composeDomainResource(t, "Group", name, element, index);
8263    for (int i = 0; i < element.getIdentifier().size(); i++)
8264      composeIdentifier(t, "Group", "identifier", element.getIdentifier().get(i), i);
8265    if (element.hasActiveElement())
8266      composeBoolean(t, "Group", "active", element.getActiveElement(), -1);
8267    if (element.hasTypeElement())
8268      composeEnum(t, "Group", "type", element.getTypeElement(), -1);
8269    if (element.hasActualElement())
8270      composeBoolean(t, "Group", "actual", element.getActualElement(), -1);
8271    if (element.hasCode())
8272      composeCodeableConcept(t, "Group", "code", element.getCode(), -1);
8273    if (element.hasNameElement())
8274      composeString(t, "Group", "name", element.getNameElement(), -1);
8275    if (element.hasQuantityElement())
8276      composeUnsignedInt(t, "Group", "quantity", element.getQuantityElement(), -1);
8277    if (element.hasManagingEntity())
8278      composeReference(t, "Group", "managingEntity", element.getManagingEntity(), -1);
8279    for (int i = 0; i < element.getCharacteristic().size(); i++)
8280      composeGroupGroupCharacteristicComponent(t, "Group", "characteristic", element.getCharacteristic().get(i), i);
8281    for (int i = 0; i < element.getMember().size(); i++)
8282      composeGroupGroupMemberComponent(t, "Group", "member", element.getMember().get(i), i);
8283  }
8284
8285  protected void composeGroupGroupCharacteristicComponent(Complex parent, String parentType, String name, Group.GroupCharacteristicComponent element, int index) {
8286    if (element == null) 
8287      return;
8288    Complex t;
8289    if (Utilities.noString(parentType))
8290      t = parent;
8291    else {
8292      t = parent.predicate("fhir:"+parentType+'.'+name);
8293    }
8294    composeBackboneElement(t, "characteristic", name, element, index);
8295    if (element.hasCode())
8296      composeCodeableConcept(t, "Group", "code", element.getCode(), -1);
8297    if (element.hasValue())
8298      composeType(t, "Group", "value", element.getValue(), -1);
8299    if (element.hasExcludeElement())
8300      composeBoolean(t, "Group", "exclude", element.getExcludeElement(), -1);
8301    if (element.hasPeriod())
8302      composePeriod(t, "Group", "period", element.getPeriod(), -1);
8303  }
8304
8305  protected void composeGroupGroupMemberComponent(Complex parent, String parentType, String name, Group.GroupMemberComponent element, int index) {
8306    if (element == null) 
8307      return;
8308    Complex t;
8309    if (Utilities.noString(parentType))
8310      t = parent;
8311    else {
8312      t = parent.predicate("fhir:"+parentType+'.'+name);
8313    }
8314    composeBackboneElement(t, "member", name, element, index);
8315    if (element.hasEntity())
8316      composeReference(t, "Group", "entity", element.getEntity(), -1);
8317    if (element.hasPeriod())
8318      composePeriod(t, "Group", "period", element.getPeriod(), -1);
8319    if (element.hasInactiveElement())
8320      composeBoolean(t, "Group", "inactive", element.getInactiveElement(), -1);
8321  }
8322
8323  protected void composeGuidanceResponse(Complex parent, String parentType, String name, GuidanceResponse element, int index) {
8324    if (element == null) 
8325      return;
8326    Complex t;
8327    if (Utilities.noString(parentType))
8328      t = parent;
8329    else {
8330      t = parent.predicate("fhir:"+parentType+'.'+name);
8331    }
8332    composeDomainResource(t, "GuidanceResponse", name, element, index);
8333    if (element.hasRequestIdentifier())
8334      composeIdentifier(t, "GuidanceResponse", "requestIdentifier", element.getRequestIdentifier(), -1);
8335    for (int i = 0; i < element.getIdentifier().size(); i++)
8336      composeIdentifier(t, "GuidanceResponse", "identifier", element.getIdentifier().get(i), i);
8337    if (element.hasModule())
8338      composeType(t, "GuidanceResponse", "module", element.getModule(), -1);
8339    if (element.hasStatusElement())
8340      composeEnum(t, "GuidanceResponse", "status", element.getStatusElement(), -1);
8341    if (element.hasSubject())
8342      composeReference(t, "GuidanceResponse", "subject", element.getSubject(), -1);
8343    if (element.hasEncounter())
8344      composeReference(t, "GuidanceResponse", "encounter", element.getEncounter(), -1);
8345    if (element.hasOccurrenceDateTimeElement())
8346      composeDateTime(t, "GuidanceResponse", "occurrenceDateTime", element.getOccurrenceDateTimeElement(), -1);
8347    if (element.hasPerformer())
8348      composeReference(t, "GuidanceResponse", "performer", element.getPerformer(), -1);
8349    for (int i = 0; i < element.getReasonCode().size(); i++)
8350      composeCodeableConcept(t, "GuidanceResponse", "reasonCode", element.getReasonCode().get(i), i);
8351    for (int i = 0; i < element.getReasonReference().size(); i++)
8352      composeReference(t, "GuidanceResponse", "reasonReference", element.getReasonReference().get(i), i);
8353    for (int i = 0; i < element.getNote().size(); i++)
8354      composeAnnotation(t, "GuidanceResponse", "note", element.getNote().get(i), i);
8355    for (int i = 0; i < element.getEvaluationMessage().size(); i++)
8356      composeReference(t, "GuidanceResponse", "evaluationMessage", element.getEvaluationMessage().get(i), i);
8357    if (element.hasOutputParameters())
8358      composeReference(t, "GuidanceResponse", "outputParameters", element.getOutputParameters(), -1);
8359    if (element.hasResult())
8360      composeReference(t, "GuidanceResponse", "result", element.getResult(), -1);
8361    for (int i = 0; i < element.getDataRequirement().size(); i++)
8362      composeDataRequirement(t, "GuidanceResponse", "dataRequirement", element.getDataRequirement().get(i), i);
8363  }
8364
8365  protected void composeHealthcareService(Complex parent, String parentType, String name, HealthcareService element, int index) {
8366    if (element == null) 
8367      return;
8368    Complex t;
8369    if (Utilities.noString(parentType))
8370      t = parent;
8371    else {
8372      t = parent.predicate("fhir:"+parentType+'.'+name);
8373    }
8374    composeDomainResource(t, "HealthcareService", name, element, index);
8375    for (int i = 0; i < element.getIdentifier().size(); i++)
8376      composeIdentifier(t, "HealthcareService", "identifier", element.getIdentifier().get(i), i);
8377    if (element.hasActiveElement())
8378      composeBoolean(t, "HealthcareService", "active", element.getActiveElement(), -1);
8379    if (element.hasProvidedBy())
8380      composeReference(t, "HealthcareService", "providedBy", element.getProvidedBy(), -1);
8381    for (int i = 0; i < element.getCategory().size(); i++)
8382      composeCodeableConcept(t, "HealthcareService", "category", element.getCategory().get(i), i);
8383    for (int i = 0; i < element.getType().size(); i++)
8384      composeCodeableConcept(t, "HealthcareService", "type", element.getType().get(i), i);
8385    for (int i = 0; i < element.getSpecialty().size(); i++)
8386      composeCodeableConcept(t, "HealthcareService", "specialty", element.getSpecialty().get(i), i);
8387    for (int i = 0; i < element.getLocation().size(); i++)
8388      composeReference(t, "HealthcareService", "location", element.getLocation().get(i), i);
8389    if (element.hasNameElement())
8390      composeString(t, "HealthcareService", "name", element.getNameElement(), -1);
8391    if (element.hasCommentElement())
8392      composeString(t, "HealthcareService", "comment", element.getCommentElement(), -1);
8393    if (element.hasExtraDetailsElement())
8394      composeMarkdown(t, "HealthcareService", "extraDetails", element.getExtraDetailsElement(), -1);
8395    if (element.hasPhoto())
8396      composeAttachment(t, "HealthcareService", "photo", element.getPhoto(), -1);
8397    for (int i = 0; i < element.getTelecom().size(); i++)
8398      composeContactPoint(t, "HealthcareService", "telecom", element.getTelecom().get(i), i);
8399    for (int i = 0; i < element.getCoverageArea().size(); i++)
8400      composeReference(t, "HealthcareService", "coverageArea", element.getCoverageArea().get(i), i);
8401    for (int i = 0; i < element.getServiceProvisionCode().size(); i++)
8402      composeCodeableConcept(t, "HealthcareService", "serviceProvisionCode", element.getServiceProvisionCode().get(i), i);
8403    for (int i = 0; i < element.getEligibility().size(); i++)
8404      composeHealthcareServiceHealthcareServiceEligibilityComponent(t, "HealthcareService", "eligibility", element.getEligibility().get(i), i);
8405    for (int i = 0; i < element.getProgram().size(); i++)
8406      composeCodeableConcept(t, "HealthcareService", "program", element.getProgram().get(i), i);
8407    for (int i = 0; i < element.getCharacteristic().size(); i++)
8408      composeCodeableConcept(t, "HealthcareService", "characteristic", element.getCharacteristic().get(i), i);
8409    for (int i = 0; i < element.getCommunication().size(); i++)
8410      composeCodeableConcept(t, "HealthcareService", "communication", element.getCommunication().get(i), i);
8411    for (int i = 0; i < element.getReferralMethod().size(); i++)
8412      composeCodeableConcept(t, "HealthcareService", "referralMethod", element.getReferralMethod().get(i), i);
8413    if (element.hasAppointmentRequiredElement())
8414      composeBoolean(t, "HealthcareService", "appointmentRequired", element.getAppointmentRequiredElement(), -1);
8415    for (int i = 0; i < element.getAvailableTime().size(); i++)
8416      composeHealthcareServiceHealthcareServiceAvailableTimeComponent(t, "HealthcareService", "availableTime", element.getAvailableTime().get(i), i);
8417    for (int i = 0; i < element.getNotAvailable().size(); i++)
8418      composeHealthcareServiceHealthcareServiceNotAvailableComponent(t, "HealthcareService", "notAvailable", element.getNotAvailable().get(i), i);
8419    if (element.hasAvailabilityExceptionsElement())
8420      composeString(t, "HealthcareService", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
8421    for (int i = 0; i < element.getEndpoint().size(); i++)
8422      composeReference(t, "HealthcareService", "endpoint", element.getEndpoint().get(i), i);
8423  }
8424
8425  protected void composeHealthcareServiceHealthcareServiceEligibilityComponent(Complex parent, String parentType, String name, HealthcareService.HealthcareServiceEligibilityComponent element, int index) {
8426    if (element == null) 
8427      return;
8428    Complex t;
8429    if (Utilities.noString(parentType))
8430      t = parent;
8431    else {
8432      t = parent.predicate("fhir:"+parentType+'.'+name);
8433    }
8434    composeBackboneElement(t, "eligibility", name, element, index);
8435    if (element.hasCode())
8436      composeCodeableConcept(t, "HealthcareService", "code", element.getCode(), -1);
8437    if (element.hasCommentElement())
8438      composeMarkdown(t, "HealthcareService", "comment", element.getCommentElement(), -1);
8439  }
8440
8441  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(Complex parent, String parentType, String name, HealthcareService.HealthcareServiceAvailableTimeComponent element, int index) {
8442    if (element == null) 
8443      return;
8444    Complex t;
8445    if (Utilities.noString(parentType))
8446      t = parent;
8447    else {
8448      t = parent.predicate("fhir:"+parentType+'.'+name);
8449    }
8450    composeBackboneElement(t, "availableTime", name, element, index);
8451    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
8452      composeEnum(t, "HealthcareService", "daysOfWeek", element.getDaysOfWeek().get(i), i);
8453    if (element.hasAllDayElement())
8454      composeBoolean(t, "HealthcareService", "allDay", element.getAllDayElement(), -1);
8455    if (element.hasAvailableStartTimeElement())
8456      composeTime(t, "HealthcareService", "availableStartTime", element.getAvailableStartTimeElement(), -1);
8457    if (element.hasAvailableEndTimeElement())
8458      composeTime(t, "HealthcareService", "availableEndTime", element.getAvailableEndTimeElement(), -1);
8459  }
8460
8461  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(Complex parent, String parentType, String name, HealthcareService.HealthcareServiceNotAvailableComponent element, int index) {
8462    if (element == null) 
8463      return;
8464    Complex t;
8465    if (Utilities.noString(parentType))
8466      t = parent;
8467    else {
8468      t = parent.predicate("fhir:"+parentType+'.'+name);
8469    }
8470    composeBackboneElement(t, "notAvailable", name, element, index);
8471    if (element.hasDescriptionElement())
8472      composeString(t, "HealthcareService", "description", element.getDescriptionElement(), -1);
8473    if (element.hasDuring())
8474      composePeriod(t, "HealthcareService", "during", element.getDuring(), -1);
8475  }
8476
8477  protected void composeImagingStudy(Complex parent, String parentType, String name, ImagingStudy element, int index) {
8478    if (element == null) 
8479      return;
8480    Complex t;
8481    if (Utilities.noString(parentType))
8482      t = parent;
8483    else {
8484      t = parent.predicate("fhir:"+parentType+'.'+name);
8485    }
8486    composeDomainResource(t, "ImagingStudy", name, element, index);
8487    for (int i = 0; i < element.getIdentifier().size(); i++)
8488      composeIdentifier(t, "ImagingStudy", "identifier", element.getIdentifier().get(i), i);
8489    if (element.hasStatusElement())
8490      composeEnum(t, "ImagingStudy", "status", element.getStatusElement(), -1);
8491    for (int i = 0; i < element.getModality().size(); i++)
8492      composeCoding(t, "ImagingStudy", "modality", element.getModality().get(i), i);
8493    if (element.hasSubject())
8494      composeReference(t, "ImagingStudy", "subject", element.getSubject(), -1);
8495    if (element.hasEncounter())
8496      composeReference(t, "ImagingStudy", "encounter", element.getEncounter(), -1);
8497    if (element.hasStartedElement())
8498      composeDateTime(t, "ImagingStudy", "started", element.getStartedElement(), -1);
8499    for (int i = 0; i < element.getBasedOn().size(); i++)
8500      composeReference(t, "ImagingStudy", "basedOn", element.getBasedOn().get(i), i);
8501    if (element.hasReferrer())
8502      composeReference(t, "ImagingStudy", "referrer", element.getReferrer(), -1);
8503    for (int i = 0; i < element.getInterpreter().size(); i++)
8504      composeReference(t, "ImagingStudy", "interpreter", element.getInterpreter().get(i), i);
8505    for (int i = 0; i < element.getEndpoint().size(); i++)
8506      composeReference(t, "ImagingStudy", "endpoint", element.getEndpoint().get(i), i);
8507    if (element.hasNumberOfSeriesElement())
8508      composeUnsignedInt(t, "ImagingStudy", "numberOfSeries", element.getNumberOfSeriesElement(), -1);
8509    if (element.hasNumberOfInstancesElement())
8510      composeUnsignedInt(t, "ImagingStudy", "numberOfInstances", element.getNumberOfInstancesElement(), -1);
8511    if (element.hasProcedureReference())
8512      composeReference(t, "ImagingStudy", "procedureReference", element.getProcedureReference(), -1);
8513    for (int i = 0; i < element.getProcedureCode().size(); i++)
8514      composeCodeableConcept(t, "ImagingStudy", "procedureCode", element.getProcedureCode().get(i), i);
8515    if (element.hasLocation())
8516      composeReference(t, "ImagingStudy", "location", element.getLocation(), -1);
8517    for (int i = 0; i < element.getReasonCode().size(); i++)
8518      composeCodeableConcept(t, "ImagingStudy", "reasonCode", element.getReasonCode().get(i), i);
8519    for (int i = 0; i < element.getReasonReference().size(); i++)
8520      composeReference(t, "ImagingStudy", "reasonReference", element.getReasonReference().get(i), i);
8521    for (int i = 0; i < element.getNote().size(); i++)
8522      composeAnnotation(t, "ImagingStudy", "note", element.getNote().get(i), i);
8523    if (element.hasDescriptionElement())
8524      composeString(t, "ImagingStudy", "description", element.getDescriptionElement(), -1);
8525    for (int i = 0; i < element.getSeries().size(); i++)
8526      composeImagingStudyImagingStudySeriesComponent(t, "ImagingStudy", "series", element.getSeries().get(i), i);
8527  }
8528
8529  protected void composeImagingStudyImagingStudySeriesComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesComponent element, int index) {
8530    if (element == null) 
8531      return;
8532    Complex t;
8533    if (Utilities.noString(parentType))
8534      t = parent;
8535    else {
8536      t = parent.predicate("fhir:"+parentType+'.'+name);
8537    }
8538    composeBackboneElement(t, "series", name, element, index);
8539    if (element.hasUidElement())
8540      composeId(t, "ImagingStudy", "uid", element.getUidElement(), -1);
8541    if (element.hasNumberElement())
8542      composeUnsignedInt(t, "ImagingStudy", "number", element.getNumberElement(), -1);
8543    if (element.hasModality())
8544      composeCoding(t, "ImagingStudy", "modality", element.getModality(), -1);
8545    if (element.hasDescriptionElement())
8546      composeString(t, "ImagingStudy", "description", element.getDescriptionElement(), -1);
8547    if (element.hasNumberOfInstancesElement())
8548      composeUnsignedInt(t, "ImagingStudy", "numberOfInstances", element.getNumberOfInstancesElement(), -1);
8549    for (int i = 0; i < element.getEndpoint().size(); i++)
8550      composeReference(t, "ImagingStudy", "endpoint", element.getEndpoint().get(i), i);
8551    if (element.hasBodySite())
8552      composeCoding(t, "ImagingStudy", "bodySite", element.getBodySite(), -1);
8553    if (element.hasLaterality())
8554      composeCoding(t, "ImagingStudy", "laterality", element.getLaterality(), -1);
8555    for (int i = 0; i < element.getSpecimen().size(); i++)
8556      composeReference(t, "ImagingStudy", "specimen", element.getSpecimen().get(i), i);
8557    if (element.hasStartedElement())
8558      composeDateTime(t, "ImagingStudy", "started", element.getStartedElement(), -1);
8559    for (int i = 0; i < element.getPerformer().size(); i++)
8560      composeImagingStudyImagingStudySeriesPerformerComponent(t, "ImagingStudy", "performer", element.getPerformer().get(i), i);
8561    for (int i = 0; i < element.getInstance().size(); i++)
8562      composeImagingStudyImagingStudySeriesInstanceComponent(t, "ImagingStudy", "instance", element.getInstance().get(i), i);
8563  }
8564
8565  protected void composeImagingStudyImagingStudySeriesPerformerComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesPerformerComponent element, int index) {
8566    if (element == null) 
8567      return;
8568    Complex t;
8569    if (Utilities.noString(parentType))
8570      t = parent;
8571    else {
8572      t = parent.predicate("fhir:"+parentType+'.'+name);
8573    }
8574    composeBackboneElement(t, "performer", name, element, index);
8575    if (element.hasFunction())
8576      composeCodeableConcept(t, "ImagingStudy", "function", element.getFunction(), -1);
8577    if (element.hasActor())
8578      composeReference(t, "ImagingStudy", "actor", element.getActor(), -1);
8579  }
8580
8581  protected void composeImagingStudyImagingStudySeriesInstanceComponent(Complex parent, String parentType, String name, ImagingStudy.ImagingStudySeriesInstanceComponent element, int index) {
8582    if (element == null) 
8583      return;
8584    Complex t;
8585    if (Utilities.noString(parentType))
8586      t = parent;
8587    else {
8588      t = parent.predicate("fhir:"+parentType+'.'+name);
8589    }
8590    composeBackboneElement(t, "instance", name, element, index);
8591    if (element.hasUidElement())
8592      composeId(t, "ImagingStudy", "uid", element.getUidElement(), -1);
8593    if (element.hasSopClass())
8594      composeCoding(t, "ImagingStudy", "sopClass", element.getSopClass(), -1);
8595    if (element.hasNumberElement())
8596      composeUnsignedInt(t, "ImagingStudy", "number", element.getNumberElement(), -1);
8597    if (element.hasTitleElement())
8598      composeString(t, "ImagingStudy", "title", element.getTitleElement(), -1);
8599  }
8600
8601  protected void composeImmunization(Complex parent, String parentType, String name, Immunization element, int index) {
8602    if (element == null) 
8603      return;
8604    Complex t;
8605    if (Utilities.noString(parentType))
8606      t = parent;
8607    else {
8608      t = parent.predicate("fhir:"+parentType+'.'+name);
8609    }
8610    composeDomainResource(t, "Immunization", name, element, index);
8611    for (int i = 0; i < element.getIdentifier().size(); i++)
8612      composeIdentifier(t, "Immunization", "identifier", element.getIdentifier().get(i), i);
8613    if (element.hasStatusElement())
8614      composeEnum(t, "Immunization", "status", element.getStatusElement(), -1);
8615    if (element.hasStatusReason())
8616      composeCodeableConcept(t, "Immunization", "statusReason", element.getStatusReason(), -1);
8617    if (element.hasVaccineCode())
8618      composeCodeableConcept(t, "Immunization", "vaccineCode", element.getVaccineCode(), -1);
8619    if (element.hasPatient())
8620      composeReference(t, "Immunization", "patient", element.getPatient(), -1);
8621    if (element.hasEncounter())
8622      composeReference(t, "Immunization", "encounter", element.getEncounter(), -1);
8623    if (element.hasOccurrence())
8624      composeType(t, "Immunization", "occurrence", element.getOccurrence(), -1);
8625    if (element.hasRecordedElement())
8626      composeDateTime(t, "Immunization", "recorded", element.getRecordedElement(), -1);
8627    if (element.hasPrimarySourceElement())
8628      composeBoolean(t, "Immunization", "primarySource", element.getPrimarySourceElement(), -1);
8629    if (element.hasReportOrigin())
8630      composeCodeableConcept(t, "Immunization", "reportOrigin", element.getReportOrigin(), -1);
8631    if (element.hasLocation())
8632      composeReference(t, "Immunization", "location", element.getLocation(), -1);
8633    if (element.hasManufacturer())
8634      composeReference(t, "Immunization", "manufacturer", element.getManufacturer(), -1);
8635    if (element.hasLotNumberElement())
8636      composeString(t, "Immunization", "lotNumber", element.getLotNumberElement(), -1);
8637    if (element.hasExpirationDateElement())
8638      composeDate(t, "Immunization", "expirationDate", element.getExpirationDateElement(), -1);
8639    if (element.hasSite())
8640      composeCodeableConcept(t, "Immunization", "site", element.getSite(), -1);
8641    if (element.hasRoute())
8642      composeCodeableConcept(t, "Immunization", "route", element.getRoute(), -1);
8643    if (element.hasDoseQuantity())
8644      composeQuantity(t, "Immunization", "doseQuantity", element.getDoseQuantity(), -1);
8645    for (int i = 0; i < element.getPerformer().size(); i++)
8646      composeImmunizationImmunizationPerformerComponent(t, "Immunization", "performer", element.getPerformer().get(i), i);
8647    for (int i = 0; i < element.getNote().size(); i++)
8648      composeAnnotation(t, "Immunization", "note", element.getNote().get(i), i);
8649    for (int i = 0; i < element.getReasonCode().size(); i++)
8650      composeCodeableConcept(t, "Immunization", "reasonCode", element.getReasonCode().get(i), i);
8651    for (int i = 0; i < element.getReasonReference().size(); i++)
8652      composeReference(t, "Immunization", "reasonReference", element.getReasonReference().get(i), i);
8653    if (element.hasIsSubpotentElement())
8654      composeBoolean(t, "Immunization", "isSubpotent", element.getIsSubpotentElement(), -1);
8655    for (int i = 0; i < element.getSubpotentReason().size(); i++)
8656      composeCodeableConcept(t, "Immunization", "subpotentReason", element.getSubpotentReason().get(i), i);
8657    for (int i = 0; i < element.getEducation().size(); i++)
8658      composeImmunizationImmunizationEducationComponent(t, "Immunization", "education", element.getEducation().get(i), i);
8659    for (int i = 0; i < element.getProgramEligibility().size(); i++)
8660      composeCodeableConcept(t, "Immunization", "programEligibility", element.getProgramEligibility().get(i), i);
8661    if (element.hasFundingSource())
8662      composeCodeableConcept(t, "Immunization", "fundingSource", element.getFundingSource(), -1);
8663    for (int i = 0; i < element.getReaction().size(); i++)
8664      composeImmunizationImmunizationReactionComponent(t, "Immunization", "reaction", element.getReaction().get(i), i);
8665    for (int i = 0; i < element.getProtocolApplied().size(); i++)
8666      composeImmunizationImmunizationProtocolAppliedComponent(t, "Immunization", "protocolApplied", element.getProtocolApplied().get(i), i);
8667  }
8668
8669  protected void composeImmunizationImmunizationPerformerComponent(Complex parent, String parentType, String name, Immunization.ImmunizationPerformerComponent element, int index) {
8670    if (element == null) 
8671      return;
8672    Complex t;
8673    if (Utilities.noString(parentType))
8674      t = parent;
8675    else {
8676      t = parent.predicate("fhir:"+parentType+'.'+name);
8677    }
8678    composeBackboneElement(t, "performer", name, element, index);
8679    if (element.hasFunction())
8680      composeCodeableConcept(t, "Immunization", "function", element.getFunction(), -1);
8681    if (element.hasActor())
8682      composeReference(t, "Immunization", "actor", element.getActor(), -1);
8683  }
8684
8685  protected void composeImmunizationImmunizationEducationComponent(Complex parent, String parentType, String name, Immunization.ImmunizationEducationComponent element, int index) {
8686    if (element == null) 
8687      return;
8688    Complex t;
8689    if (Utilities.noString(parentType))
8690      t = parent;
8691    else {
8692      t = parent.predicate("fhir:"+parentType+'.'+name);
8693    }
8694    composeBackboneElement(t, "education", name, element, index);
8695    if (element.hasDocumentTypeElement())
8696      composeString(t, "Immunization", "documentType", element.getDocumentTypeElement(), -1);
8697    if (element.hasReferenceElement())
8698      composeUri(t, "Immunization", "reference", element.getReferenceElement(), -1);
8699    if (element.hasPublicationDateElement())
8700      composeDateTime(t, "Immunization", "publicationDate", element.getPublicationDateElement(), -1);
8701    if (element.hasPresentationDateElement())
8702      composeDateTime(t, "Immunization", "presentationDate", element.getPresentationDateElement(), -1);
8703  }
8704
8705  protected void composeImmunizationImmunizationReactionComponent(Complex parent, String parentType, String name, Immunization.ImmunizationReactionComponent element, int index) {
8706    if (element == null) 
8707      return;
8708    Complex t;
8709    if (Utilities.noString(parentType))
8710      t = parent;
8711    else {
8712      t = parent.predicate("fhir:"+parentType+'.'+name);
8713    }
8714    composeBackboneElement(t, "reaction", name, element, index);
8715    if (element.hasDateElement())
8716      composeDateTime(t, "Immunization", "date", element.getDateElement(), -1);
8717    if (element.hasDetail())
8718      composeReference(t, "Immunization", "detail", element.getDetail(), -1);
8719    if (element.hasReportedElement())
8720      composeBoolean(t, "Immunization", "reported", element.getReportedElement(), -1);
8721  }
8722
8723  protected void composeImmunizationImmunizationProtocolAppliedComponent(Complex parent, String parentType, String name, Immunization.ImmunizationProtocolAppliedComponent element, int index) {
8724    if (element == null) 
8725      return;
8726    Complex t;
8727    if (Utilities.noString(parentType))
8728      t = parent;
8729    else {
8730      t = parent.predicate("fhir:"+parentType+'.'+name);
8731    }
8732    composeBackboneElement(t, "protocolApplied", name, element, index);
8733    if (element.hasSeriesElement())
8734      composeString(t, "Immunization", "series", element.getSeriesElement(), -1);
8735    if (element.hasAuthority())
8736      composeReference(t, "Immunization", "authority", element.getAuthority(), -1);
8737    for (int i = 0; i < element.getTargetDisease().size(); i++)
8738      composeCodeableConcept(t, "Immunization", "targetDisease", element.getTargetDisease().get(i), i);
8739    if (element.hasDoseNumber())
8740      composeType(t, "Immunization", "doseNumber", element.getDoseNumber(), -1);
8741    if (element.hasSeriesDoses())
8742      composeType(t, "Immunization", "seriesDoses", element.getSeriesDoses(), -1);
8743  }
8744
8745  protected void composeImmunizationEvaluation(Complex parent, String parentType, String name, ImmunizationEvaluation element, int index) {
8746    if (element == null) 
8747      return;
8748    Complex t;
8749    if (Utilities.noString(parentType))
8750      t = parent;
8751    else {
8752      t = parent.predicate("fhir:"+parentType+'.'+name);
8753    }
8754    composeDomainResource(t, "ImmunizationEvaluation", name, element, index);
8755    for (int i = 0; i < element.getIdentifier().size(); i++)
8756      composeIdentifier(t, "ImmunizationEvaluation", "identifier", element.getIdentifier().get(i), i);
8757    if (element.hasStatusElement())
8758      composeEnum(t, "ImmunizationEvaluation", "status", element.getStatusElement(), -1);
8759    if (element.hasPatient())
8760      composeReference(t, "ImmunizationEvaluation", "patient", element.getPatient(), -1);
8761    if (element.hasDateElement())
8762      composeDateTime(t, "ImmunizationEvaluation", "date", element.getDateElement(), -1);
8763    if (element.hasAuthority())
8764      composeReference(t, "ImmunizationEvaluation", "authority", element.getAuthority(), -1);
8765    if (element.hasTargetDisease())
8766      composeCodeableConcept(t, "ImmunizationEvaluation", "targetDisease", element.getTargetDisease(), -1);
8767    if (element.hasImmunizationEvent())
8768      composeReference(t, "ImmunizationEvaluation", "immunizationEvent", element.getImmunizationEvent(), -1);
8769    if (element.hasDoseStatus())
8770      composeCodeableConcept(t, "ImmunizationEvaluation", "doseStatus", element.getDoseStatus(), -1);
8771    for (int i = 0; i < element.getDoseStatusReason().size(); i++)
8772      composeCodeableConcept(t, "ImmunizationEvaluation", "doseStatusReason", element.getDoseStatusReason().get(i), i);
8773    if (element.hasDescriptionElement())
8774      composeString(t, "ImmunizationEvaluation", "description", element.getDescriptionElement(), -1);
8775    if (element.hasSeriesElement())
8776      composeString(t, "ImmunizationEvaluation", "series", element.getSeriesElement(), -1);
8777    if (element.hasDoseNumber())
8778      composeType(t, "ImmunizationEvaluation", "doseNumber", element.getDoseNumber(), -1);
8779    if (element.hasSeriesDoses())
8780      composeType(t, "ImmunizationEvaluation", "seriesDoses", element.getSeriesDoses(), -1);
8781  }
8782
8783  protected void composeImmunizationRecommendation(Complex parent, String parentType, String name, ImmunizationRecommendation element, int index) {
8784    if (element == null) 
8785      return;
8786    Complex t;
8787    if (Utilities.noString(parentType))
8788      t = parent;
8789    else {
8790      t = parent.predicate("fhir:"+parentType+'.'+name);
8791    }
8792    composeDomainResource(t, "ImmunizationRecommendation", name, element, index);
8793    for (int i = 0; i < element.getIdentifier().size(); i++)
8794      composeIdentifier(t, "ImmunizationRecommendation", "identifier", element.getIdentifier().get(i), i);
8795    if (element.hasPatient())
8796      composeReference(t, "ImmunizationRecommendation", "patient", element.getPatient(), -1);
8797    if (element.hasDateElement())
8798      composeDateTime(t, "ImmunizationRecommendation", "date", element.getDateElement(), -1);
8799    if (element.hasAuthority())
8800      composeReference(t, "ImmunizationRecommendation", "authority", element.getAuthority(), -1);
8801    for (int i = 0; i < element.getRecommendation().size(); i++)
8802      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(t, "ImmunizationRecommendation", "recommendation", element.getRecommendation().get(i), i);
8803  }
8804
8805  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(Complex parent, String parentType, String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element, int index) {
8806    if (element == null) 
8807      return;
8808    Complex t;
8809    if (Utilities.noString(parentType))
8810      t = parent;
8811    else {
8812      t = parent.predicate("fhir:"+parentType+'.'+name);
8813    }
8814    composeBackboneElement(t, "recommendation", name, element, index);
8815    for (int i = 0; i < element.getVaccineCode().size(); i++)
8816      composeCodeableConcept(t, "ImmunizationRecommendation", "vaccineCode", element.getVaccineCode().get(i), i);
8817    if (element.hasTargetDisease())
8818      composeCodeableConcept(t, "ImmunizationRecommendation", "targetDisease", element.getTargetDisease(), -1);
8819    for (int i = 0; i < element.getContraindicatedVaccineCode().size(); i++)
8820      composeCodeableConcept(t, "ImmunizationRecommendation", "contraindicatedVaccineCode", element.getContraindicatedVaccineCode().get(i), i);
8821    if (element.hasForecastStatus())
8822      composeCodeableConcept(t, "ImmunizationRecommendation", "forecastStatus", element.getForecastStatus(), -1);
8823    for (int i = 0; i < element.getForecastReason().size(); i++)
8824      composeCodeableConcept(t, "ImmunizationRecommendation", "forecastReason", element.getForecastReason().get(i), i);
8825    for (int i = 0; i < element.getDateCriterion().size(); i++)
8826      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(t, "ImmunizationRecommendation", "dateCriterion", element.getDateCriterion().get(i), i);
8827    if (element.hasDescriptionElement())
8828      composeString(t, "ImmunizationRecommendation", "description", element.getDescriptionElement(), -1);
8829    if (element.hasSeriesElement())
8830      composeString(t, "ImmunizationRecommendation", "series", element.getSeriesElement(), -1);
8831    if (element.hasDoseNumber())
8832      composeType(t, "ImmunizationRecommendation", "doseNumber", element.getDoseNumber(), -1);
8833    if (element.hasSeriesDoses())
8834      composeType(t, "ImmunizationRecommendation", "seriesDoses", element.getSeriesDoses(), -1);
8835    for (int i = 0; i < element.getSupportingImmunization().size(); i++)
8836      composeReference(t, "ImmunizationRecommendation", "supportingImmunization", element.getSupportingImmunization().get(i), i);
8837    for (int i = 0; i < element.getSupportingPatientInformation().size(); i++)
8838      composeReference(t, "ImmunizationRecommendation", "supportingPatientInformation", element.getSupportingPatientInformation().get(i), i);
8839  }
8840
8841  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(Complex parent, String parentType, String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element, int index) {
8842    if (element == null) 
8843      return;
8844    Complex t;
8845    if (Utilities.noString(parentType))
8846      t = parent;
8847    else {
8848      t = parent.predicate("fhir:"+parentType+'.'+name);
8849    }
8850    composeBackboneElement(t, "dateCriterion", name, element, index);
8851    if (element.hasCode())
8852      composeCodeableConcept(t, "ImmunizationRecommendation", "code", element.getCode(), -1);
8853    if (element.hasValueElement())
8854      composeDateTime(t, "ImmunizationRecommendation", "value", element.getValueElement(), -1);
8855  }
8856
8857  protected void composeImplementationGuide(Complex parent, String parentType, String name, ImplementationGuide element, int index) {
8858    if (element == null) 
8859      return;
8860    Complex t;
8861    if (Utilities.noString(parentType))
8862      t = parent;
8863    else {
8864      t = parent.predicate("fhir:"+parentType+'.'+name);
8865    }
8866    composeDomainResource(t, "ImplementationGuide", name, element, index);
8867    if (element.hasUrlElement())
8868      composeUri(t, "ImplementationGuide", "url", element.getUrlElement(), -1);
8869    if (element.hasVersionElement())
8870      composeString(t, "ImplementationGuide", "version", element.getVersionElement(), -1);
8871    if (element.hasNameElement())
8872      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
8873    if (element.hasTitleElement())
8874      composeString(t, "ImplementationGuide", "title", element.getTitleElement(), -1);
8875    if (element.hasStatusElement())
8876      composeEnum(t, "ImplementationGuide", "status", element.getStatusElement(), -1);
8877    if (element.hasExperimentalElement())
8878      composeBoolean(t, "ImplementationGuide", "experimental", element.getExperimentalElement(), -1);
8879    if (element.hasDateElement())
8880      composeDateTime(t, "ImplementationGuide", "date", element.getDateElement(), -1);
8881    if (element.hasPublisherElement())
8882      composeString(t, "ImplementationGuide", "publisher", element.getPublisherElement(), -1);
8883    for (int i = 0; i < element.getContact().size(); i++)
8884      composeContactDetail(t, "ImplementationGuide", "contact", element.getContact().get(i), i);
8885    if (element.hasDescriptionElement())
8886      composeMarkdown(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
8887    for (int i = 0; i < element.getUseContext().size(); i++)
8888      composeUsageContext(t, "ImplementationGuide", "useContext", element.getUseContext().get(i), i);
8889    for (int i = 0; i < element.getJurisdiction().size(); i++)
8890      composeCodeableConcept(t, "ImplementationGuide", "jurisdiction", element.getJurisdiction().get(i), i);
8891    if (element.hasCopyrightElement())
8892      composeMarkdown(t, "ImplementationGuide", "copyright", element.getCopyrightElement(), -1);
8893    if (element.hasPackageIdElement())
8894      composeId(t, "ImplementationGuide", "packageId", element.getPackageIdElement(), -1);
8895    if (element.hasLicenseElement())
8896      composeEnum(t, "ImplementationGuide", "license", element.getLicenseElement(), -1);
8897    for (int i = 0; i < element.getFhirVersion().size(); i++)
8898      composeEnum(t, "ImplementationGuide", "fhirVersion", element.getFhirVersion().get(i), i);
8899    for (int i = 0; i < element.getDependsOn().size(); i++)
8900      composeImplementationGuideImplementationGuideDependsOnComponent(t, "ImplementationGuide", "dependsOn", element.getDependsOn().get(i), i);
8901    for (int i = 0; i < element.getGlobal().size(); i++)
8902      composeImplementationGuideImplementationGuideGlobalComponent(t, "ImplementationGuide", "global", element.getGlobal().get(i), i);
8903    if (element.hasDefinition())
8904      composeImplementationGuideImplementationGuideDefinitionComponent(t, "ImplementationGuide", "definition", element.getDefinition(), -1);
8905    if (element.hasManifest())
8906      composeImplementationGuideImplementationGuideManifestComponent(t, "ImplementationGuide", "manifest", element.getManifest(), -1);
8907  }
8908
8909  protected void composeImplementationGuideImplementationGuideDependsOnComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDependsOnComponent element, int index) {
8910    if (element == null) 
8911      return;
8912    Complex t;
8913    if (Utilities.noString(parentType))
8914      t = parent;
8915    else {
8916      t = parent.predicate("fhir:"+parentType+'.'+name);
8917    }
8918    composeBackboneElement(t, "dependsOn", name, element, index);
8919    if (element.hasUriElement())
8920      composeCanonical(t, "ImplementationGuide", "uri", element.getUriElement(), -1);
8921    if (element.hasPackageIdElement())
8922      composeId(t, "ImplementationGuide", "packageId", element.getPackageIdElement(), -1);
8923    if (element.hasVersionElement())
8924      composeString(t, "ImplementationGuide", "version", element.getVersionElement(), -1);
8925  }
8926
8927  protected void composeImplementationGuideImplementationGuideGlobalComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideGlobalComponent element, int index) {
8928    if (element == null) 
8929      return;
8930    Complex t;
8931    if (Utilities.noString(parentType))
8932      t = parent;
8933    else {
8934      t = parent.predicate("fhir:"+parentType+'.'+name);
8935    }
8936    composeBackboneElement(t, "global", name, element, index);
8937    if (element.hasTypeElement())
8938      composeCode(t, "ImplementationGuide", "type", element.getTypeElement(), -1);
8939    if (element.hasProfileElement())
8940      composeCanonical(t, "ImplementationGuide", "profile", element.getProfileElement(), -1);
8941  }
8942
8943  protected void composeImplementationGuideImplementationGuideDefinitionComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionComponent element, int index) {
8944    if (element == null) 
8945      return;
8946    Complex t;
8947    if (Utilities.noString(parentType))
8948      t = parent;
8949    else {
8950      t = parent.predicate("fhir:"+parentType+'.'+name);
8951    }
8952    composeBackboneElement(t, "definition", name, element, index);
8953    for (int i = 0; i < element.getGrouping().size(); i++)
8954      composeImplementationGuideImplementationGuideDefinitionGroupingComponent(t, "ImplementationGuide", "grouping", element.getGrouping().get(i), i);
8955    for (int i = 0; i < element.getResource().size(); i++)
8956      composeImplementationGuideImplementationGuideDefinitionResourceComponent(t, "ImplementationGuide", "resource", element.getResource().get(i), i);
8957    if (element.hasPage())
8958      composeImplementationGuideImplementationGuideDefinitionPageComponent(t, "ImplementationGuide", "page", element.getPage(), -1);
8959    for (int i = 0; i < element.getParameter().size(); i++)
8960      composeImplementationGuideImplementationGuideDefinitionParameterComponent(t, "ImplementationGuide", "parameter", element.getParameter().get(i), i);
8961    for (int i = 0; i < element.getTemplate().size(); i++)
8962      composeImplementationGuideImplementationGuideDefinitionTemplateComponent(t, "ImplementationGuide", "template", element.getTemplate().get(i), i);
8963  }
8964
8965  protected void composeImplementationGuideImplementationGuideDefinitionGroupingComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element, int index) {
8966    if (element == null) 
8967      return;
8968    Complex t;
8969    if (Utilities.noString(parentType))
8970      t = parent;
8971    else {
8972      t = parent.predicate("fhir:"+parentType+'.'+name);
8973    }
8974    composeBackboneElement(t, "grouping", name, element, index);
8975    if (element.hasNameElement())
8976      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
8977    if (element.hasDescriptionElement())
8978      composeString(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
8979  }
8980
8981  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element, int index) {
8982    if (element == null) 
8983      return;
8984    Complex t;
8985    if (Utilities.noString(parentType))
8986      t = parent;
8987    else {
8988      t = parent.predicate("fhir:"+parentType+'.'+name);
8989    }
8990    composeBackboneElement(t, "resource", name, element, index);
8991    if (element.hasReference())
8992      composeReference(t, "ImplementationGuide", "reference", element.getReference(), -1);
8993    for (int i = 0; i < element.getFhirVersion().size(); i++)
8994      composeEnum(t, "ImplementationGuide", "fhirVersion", element.getFhirVersion().get(i), i);
8995    if (element.hasNameElement())
8996      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
8997    if (element.hasDescriptionElement())
8998      composeString(t, "ImplementationGuide", "description", element.getDescriptionElement(), -1);
8999    if (element.hasExample())
9000      composeType(t, "ImplementationGuide", "example", element.getExample(), -1);
9001    if (element.hasGroupingIdElement())
9002      composeId(t, "ImplementationGuide", "groupingId", element.getGroupingIdElement(), -1);
9003  }
9004
9005  protected void composeImplementationGuideImplementationGuideDefinitionPageComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element, int index) {
9006    if (element == null) 
9007      return;
9008    Complex t;
9009    if (Utilities.noString(parentType))
9010      t = parent;
9011    else {
9012      t = parent.predicate("fhir:"+parentType+'.'+name);
9013    }
9014    composeBackboneElement(t, "page", name, element, index);
9015    if (element.hasName())
9016      composeType(t, "ImplementationGuide", "name", element.getName(), -1);
9017    if (element.hasTitleElement())
9018      composeString(t, "ImplementationGuide", "title", element.getTitleElement(), -1);
9019    if (element.hasGenerationElement())
9020      composeEnum(t, "ImplementationGuide", "generation", element.getGenerationElement(), -1);
9021    for (int i = 0; i < element.getPage().size(); i++)
9022      composeImplementationGuideImplementationGuideDefinitionPageComponent(t, "ImplementationGuide", "page", element.getPage().get(i), i);
9023  }
9024
9025  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element, int index) {
9026    if (element == null) 
9027      return;
9028    Complex t;
9029    if (Utilities.noString(parentType))
9030      t = parent;
9031    else {
9032      t = parent.predicate("fhir:"+parentType+'.'+name);
9033    }
9034    composeBackboneElement(t, "parameter", name, element, index);
9035    if (element.hasCodeElement())
9036      composeString(t, "ImplementationGuide", "code", element.getCodeElement(), -1);
9037    if (element.hasValueElement())
9038      composeString(t, "ImplementationGuide", "value", element.getValueElement(), -1);
9039  }
9040
9041  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element, int index) {
9042    if (element == null) 
9043      return;
9044    Complex t;
9045    if (Utilities.noString(parentType))
9046      t = parent;
9047    else {
9048      t = parent.predicate("fhir:"+parentType+'.'+name);
9049    }
9050    composeBackboneElement(t, "template", name, element, index);
9051    if (element.hasCodeElement())
9052      composeCode(t, "ImplementationGuide", "code", element.getCodeElement(), -1);
9053    if (element.hasSourceElement())
9054      composeString(t, "ImplementationGuide", "source", element.getSourceElement(), -1);
9055    if (element.hasScopeElement())
9056      composeString(t, "ImplementationGuide", "scope", element.getScopeElement(), -1);
9057  }
9058
9059  protected void composeImplementationGuideImplementationGuideManifestComponent(Complex parent, String parentType, String name, ImplementationGuide.ImplementationGuideManifestComponent element, int index) {
9060    if (element == null) 
9061      return;
9062    Complex t;
9063    if (Utilities.noString(parentType))
9064      t = parent;
9065    else {
9066      t = parent.predicate("fhir:"+parentType+'.'+name);
9067    }
9068    composeBackboneElement(t, "manifest", name, element, index);
9069    if (element.hasRenderingElement())
9070      composeUrl(t, "ImplementationGuide", "rendering", element.getRenderingElement(), -1);
9071    for (int i = 0; i < element.getResource().size(); i++)
9072      composeImplementationGuideManifestResourceComponent(t, "ImplementationGuide", "resource", element.getResource().get(i), i);
9073    for (int i = 0; i < element.getPage().size(); i++)
9074      composeImplementationGuideManifestPageComponent(t, "ImplementationGuide", "page", element.getPage().get(i), i);
9075    for (int i = 0; i < element.getImage().size(); i++)
9076      composeString(t, "ImplementationGuide", "image", element.getImage().get(i), i);
9077    for (int i = 0; i < element.getOther().size(); i++)
9078      composeString(t, "ImplementationGuide", "other", element.getOther().get(i), i);
9079  }
9080
9081  protected void composeImplementationGuideManifestResourceComponent(Complex parent, String parentType, String name, ImplementationGuide.ManifestResourceComponent element, int index) {
9082    if (element == null) 
9083      return;
9084    Complex t;
9085    if (Utilities.noString(parentType))
9086      t = parent;
9087    else {
9088      t = parent.predicate("fhir:"+parentType+'.'+name);
9089    }
9090    composeBackboneElement(t, "resource", name, element, index);
9091    if (element.hasReference())
9092      composeReference(t, "ImplementationGuide", "reference", element.getReference(), -1);
9093    if (element.hasExample())
9094      composeType(t, "ImplementationGuide", "example", element.getExample(), -1);
9095    if (element.hasRelativePathElement())
9096      composeUrl(t, "ImplementationGuide", "relativePath", element.getRelativePathElement(), -1);
9097  }
9098
9099  protected void composeImplementationGuideManifestPageComponent(Complex parent, String parentType, String name, ImplementationGuide.ManifestPageComponent element, int index) {
9100    if (element == null) 
9101      return;
9102    Complex t;
9103    if (Utilities.noString(parentType))
9104      t = parent;
9105    else {
9106      t = parent.predicate("fhir:"+parentType+'.'+name);
9107    }
9108    composeBackboneElement(t, "page", name, element, index);
9109    if (element.hasNameElement())
9110      composeString(t, "ImplementationGuide", "name", element.getNameElement(), -1);
9111    if (element.hasTitleElement())
9112      composeString(t, "ImplementationGuide", "title", element.getTitleElement(), -1);
9113    for (int i = 0; i < element.getAnchor().size(); i++)
9114      composeString(t, "ImplementationGuide", "anchor", element.getAnchor().get(i), i);
9115  }
9116
9117  protected void composeInsurancePlan(Complex parent, String parentType, String name, InsurancePlan element, int index) {
9118    if (element == null) 
9119      return;
9120    Complex t;
9121    if (Utilities.noString(parentType))
9122      t = parent;
9123    else {
9124      t = parent.predicate("fhir:"+parentType+'.'+name);
9125    }
9126    composeDomainResource(t, "InsurancePlan", name, element, index);
9127    for (int i = 0; i < element.getIdentifier().size(); i++)
9128      composeIdentifier(t, "InsurancePlan", "identifier", element.getIdentifier().get(i), i);
9129    if (element.hasStatusElement())
9130      composeEnum(t, "InsurancePlan", "status", element.getStatusElement(), -1);
9131    for (int i = 0; i < element.getType().size(); i++)
9132      composeCodeableConcept(t, "InsurancePlan", "type", element.getType().get(i), i);
9133    if (element.hasNameElement())
9134      composeString(t, "InsurancePlan", "name", element.getNameElement(), -1);
9135    for (int i = 0; i < element.getAlias().size(); i++)
9136      composeString(t, "InsurancePlan", "alias", element.getAlias().get(i), i);
9137    if (element.hasPeriod())
9138      composePeriod(t, "InsurancePlan", "period", element.getPeriod(), -1);
9139    if (element.hasOwnedBy())
9140      composeReference(t, "InsurancePlan", "ownedBy", element.getOwnedBy(), -1);
9141    if (element.hasAdministeredBy())
9142      composeReference(t, "InsurancePlan", "administeredBy", element.getAdministeredBy(), -1);
9143    for (int i = 0; i < element.getCoverageArea().size(); i++)
9144      composeReference(t, "InsurancePlan", "coverageArea", element.getCoverageArea().get(i), i);
9145    for (int i = 0; i < element.getContact().size(); i++)
9146      composeInsurancePlanInsurancePlanContactComponent(t, "InsurancePlan", "contact", element.getContact().get(i), i);
9147    for (int i = 0; i < element.getEndpoint().size(); i++)
9148      composeReference(t, "InsurancePlan", "endpoint", element.getEndpoint().get(i), i);
9149    for (int i = 0; i < element.getNetwork().size(); i++)
9150      composeReference(t, "InsurancePlan", "network", element.getNetwork().get(i), i);
9151    for (int i = 0; i < element.getCoverage().size(); i++)
9152      composeInsurancePlanInsurancePlanCoverageComponent(t, "InsurancePlan", "coverage", element.getCoverage().get(i), i);
9153    for (int i = 0; i < element.getPlan().size(); i++)
9154      composeInsurancePlanInsurancePlanPlanComponent(t, "InsurancePlan", "plan", element.getPlan().get(i), i);
9155  }
9156
9157  protected void composeInsurancePlanInsurancePlanContactComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanContactComponent element, int index) {
9158    if (element == null) 
9159      return;
9160    Complex t;
9161    if (Utilities.noString(parentType))
9162      t = parent;
9163    else {
9164      t = parent.predicate("fhir:"+parentType+'.'+name);
9165    }
9166    composeBackboneElement(t, "contact", name, element, index);
9167    if (element.hasPurpose())
9168      composeCodeableConcept(t, "InsurancePlan", "purpose", element.getPurpose(), -1);
9169    if (element.hasName())
9170      composeHumanName(t, "InsurancePlan", "name", element.getName(), -1);
9171    for (int i = 0; i < element.getTelecom().size(); i++)
9172      composeContactPoint(t, "InsurancePlan", "telecom", element.getTelecom().get(i), i);
9173    if (element.hasAddress())
9174      composeAddress(t, "InsurancePlan", "address", element.getAddress(), -1);
9175  }
9176
9177  protected void composeInsurancePlanInsurancePlanCoverageComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanCoverageComponent element, int index) {
9178    if (element == null) 
9179      return;
9180    Complex t;
9181    if (Utilities.noString(parentType))
9182      t = parent;
9183    else {
9184      t = parent.predicate("fhir:"+parentType+'.'+name);
9185    }
9186    composeBackboneElement(t, "coverage", name, element, index);
9187    if (element.hasType())
9188      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
9189    for (int i = 0; i < element.getNetwork().size(); i++)
9190      composeReference(t, "InsurancePlan", "network", element.getNetwork().get(i), i);
9191    for (int i = 0; i < element.getBenefit().size(); i++)
9192      composeInsurancePlanCoverageBenefitComponent(t, "InsurancePlan", "benefit", element.getBenefit().get(i), i);
9193  }
9194
9195  protected void composeInsurancePlanCoverageBenefitComponent(Complex parent, String parentType, String name, InsurancePlan.CoverageBenefitComponent element, int index) {
9196    if (element == null) 
9197      return;
9198    Complex t;
9199    if (Utilities.noString(parentType))
9200      t = parent;
9201    else {
9202      t = parent.predicate("fhir:"+parentType+'.'+name);
9203    }
9204    composeBackboneElement(t, "benefit", name, element, index);
9205    if (element.hasType())
9206      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
9207    if (element.hasRequirementElement())
9208      composeString(t, "InsurancePlan", "requirement", element.getRequirementElement(), -1);
9209    for (int i = 0; i < element.getLimit().size(); i++)
9210      composeInsurancePlanCoverageBenefitLimitComponent(t, "InsurancePlan", "limit", element.getLimit().get(i), i);
9211  }
9212
9213  protected void composeInsurancePlanCoverageBenefitLimitComponent(Complex parent, String parentType, String name, InsurancePlan.CoverageBenefitLimitComponent element, int index) {
9214    if (element == null) 
9215      return;
9216    Complex t;
9217    if (Utilities.noString(parentType))
9218      t = parent;
9219    else {
9220      t = parent.predicate("fhir:"+parentType+'.'+name);
9221    }
9222    composeBackboneElement(t, "limit", name, element, index);
9223    if (element.hasValue())
9224      composeQuantity(t, "InsurancePlan", "value", element.getValue(), -1);
9225    if (element.hasCode())
9226      composeCodeableConcept(t, "InsurancePlan", "code", element.getCode(), -1);
9227  }
9228
9229  protected void composeInsurancePlanInsurancePlanPlanComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanPlanComponent element, int index) {
9230    if (element == null) 
9231      return;
9232    Complex t;
9233    if (Utilities.noString(parentType))
9234      t = parent;
9235    else {
9236      t = parent.predicate("fhir:"+parentType+'.'+name);
9237    }
9238    composeBackboneElement(t, "plan", name, element, index);
9239    for (int i = 0; i < element.getIdentifier().size(); i++)
9240      composeIdentifier(t, "InsurancePlan", "identifier", element.getIdentifier().get(i), i);
9241    if (element.hasType())
9242      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
9243    for (int i = 0; i < element.getCoverageArea().size(); i++)
9244      composeReference(t, "InsurancePlan", "coverageArea", element.getCoverageArea().get(i), i);
9245    for (int i = 0; i < element.getNetwork().size(); i++)
9246      composeReference(t, "InsurancePlan", "network", element.getNetwork().get(i), i);
9247    for (int i = 0; i < element.getGeneralCost().size(); i++)
9248      composeInsurancePlanInsurancePlanPlanGeneralCostComponent(t, "InsurancePlan", "generalCost", element.getGeneralCost().get(i), i);
9249    for (int i = 0; i < element.getSpecificCost().size(); i++)
9250      composeInsurancePlanInsurancePlanPlanSpecificCostComponent(t, "InsurancePlan", "specificCost", element.getSpecificCost().get(i), i);
9251  }
9252
9253  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element, int index) {
9254    if (element == null) 
9255      return;
9256    Complex t;
9257    if (Utilities.noString(parentType))
9258      t = parent;
9259    else {
9260      t = parent.predicate("fhir:"+parentType+'.'+name);
9261    }
9262    composeBackboneElement(t, "generalCost", name, element, index);
9263    if (element.hasType())
9264      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
9265    if (element.hasGroupSizeElement())
9266      composePositiveInt(t, "InsurancePlan", "groupSize", element.getGroupSizeElement(), -1);
9267    if (element.hasCost())
9268      composeMoney(t, "InsurancePlan", "cost", element.getCost(), -1);
9269    if (element.hasCommentElement())
9270      composeString(t, "InsurancePlan", "comment", element.getCommentElement(), -1);
9271  }
9272
9273  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponent(Complex parent, String parentType, String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element, int index) {
9274    if (element == null) 
9275      return;
9276    Complex t;
9277    if (Utilities.noString(parentType))
9278      t = parent;
9279    else {
9280      t = parent.predicate("fhir:"+parentType+'.'+name);
9281    }
9282    composeBackboneElement(t, "specificCost", name, element, index);
9283    if (element.hasCategory())
9284      composeCodeableConcept(t, "InsurancePlan", "category", element.getCategory(), -1);
9285    for (int i = 0; i < element.getBenefit().size(); i++)
9286      composeInsurancePlanPlanBenefitComponent(t, "InsurancePlan", "benefit", element.getBenefit().get(i), i);
9287  }
9288
9289  protected void composeInsurancePlanPlanBenefitComponent(Complex parent, String parentType, String name, InsurancePlan.PlanBenefitComponent element, int index) {
9290    if (element == null) 
9291      return;
9292    Complex t;
9293    if (Utilities.noString(parentType))
9294      t = parent;
9295    else {
9296      t = parent.predicate("fhir:"+parentType+'.'+name);
9297    }
9298    composeBackboneElement(t, "benefit", name, element, index);
9299    if (element.hasType())
9300      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
9301    for (int i = 0; i < element.getCost().size(); i++)
9302      composeInsurancePlanPlanBenefitCostComponent(t, "InsurancePlan", "cost", element.getCost().get(i), i);
9303  }
9304
9305  protected void composeInsurancePlanPlanBenefitCostComponent(Complex parent, String parentType, String name, InsurancePlan.PlanBenefitCostComponent element, int index) {
9306    if (element == null) 
9307      return;
9308    Complex t;
9309    if (Utilities.noString(parentType))
9310      t = parent;
9311    else {
9312      t = parent.predicate("fhir:"+parentType+'.'+name);
9313    }
9314    composeBackboneElement(t, "cost", name, element, index);
9315    if (element.hasType())
9316      composeCodeableConcept(t, "InsurancePlan", "type", element.getType(), -1);
9317    if (element.hasApplicability())
9318      composeCodeableConcept(t, "InsurancePlan", "applicability", element.getApplicability(), -1);
9319    for (int i = 0; i < element.getQualifiers().size(); i++)
9320      composeCodeableConcept(t, "InsurancePlan", "qualifiers", element.getQualifiers().get(i), i);
9321    if (element.hasValue())
9322      composeQuantity(t, "InsurancePlan", "value", element.getValue(), -1);
9323  }
9324
9325  protected void composeInvoice(Complex parent, String parentType, String name, Invoice element, int index) {
9326    if (element == null) 
9327      return;
9328    Complex t;
9329    if (Utilities.noString(parentType))
9330      t = parent;
9331    else {
9332      t = parent.predicate("fhir:"+parentType+'.'+name);
9333    }
9334    composeDomainResource(t, "Invoice", name, element, index);
9335    for (int i = 0; i < element.getIdentifier().size(); i++)
9336      composeIdentifier(t, "Invoice", "identifier", element.getIdentifier().get(i), i);
9337    if (element.hasStatusElement())
9338      composeEnum(t, "Invoice", "status", element.getStatusElement(), -1);
9339    if (element.hasCancelledReasonElement())
9340      composeString(t, "Invoice", "cancelledReason", element.getCancelledReasonElement(), -1);
9341    if (element.hasType())
9342      composeCodeableConcept(t, "Invoice", "type", element.getType(), -1);
9343    if (element.hasSubject())
9344      composeReference(t, "Invoice", "subject", element.getSubject(), -1);
9345    if (element.hasRecipient())
9346      composeReference(t, "Invoice", "recipient", element.getRecipient(), -1);
9347    if (element.hasDateElement())
9348      composeDateTime(t, "Invoice", "date", element.getDateElement(), -1);
9349    for (int i = 0; i < element.getParticipant().size(); i++)
9350      composeInvoiceInvoiceParticipantComponent(t, "Invoice", "participant", element.getParticipant().get(i), i);
9351    if (element.hasIssuer())
9352      composeReference(t, "Invoice", "issuer", element.getIssuer(), -1);
9353    if (element.hasAccount())
9354      composeReference(t, "Invoice", "account", element.getAccount(), -1);
9355    for (int i = 0; i < element.getLineItem().size(); i++)
9356      composeInvoiceInvoiceLineItemComponent(t, "Invoice", "lineItem", element.getLineItem().get(i), i);
9357    for (int i = 0; i < element.getTotalPriceComponent().size(); i++)
9358      composeInvoiceInvoiceLineItemPriceComponentComponent(t, "Invoice", "totalPriceComponent", element.getTotalPriceComponent().get(i), i);
9359    if (element.hasTotalNet())
9360      composeMoney(t, "Invoice", "totalNet", element.getTotalNet(), -1);
9361    if (element.hasTotalGross())
9362      composeMoney(t, "Invoice", "totalGross", element.getTotalGross(), -1);
9363    if (element.hasPaymentTermsElement())
9364      composeMarkdown(t, "Invoice", "paymentTerms", element.getPaymentTermsElement(), -1);
9365    for (int i = 0; i < element.getNote().size(); i++)
9366      composeAnnotation(t, "Invoice", "note", element.getNote().get(i), i);
9367  }
9368
9369  protected void composeInvoiceInvoiceParticipantComponent(Complex parent, String parentType, String name, Invoice.InvoiceParticipantComponent element, int index) {
9370    if (element == null) 
9371      return;
9372    Complex t;
9373    if (Utilities.noString(parentType))
9374      t = parent;
9375    else {
9376      t = parent.predicate("fhir:"+parentType+'.'+name);
9377    }
9378    composeBackboneElement(t, "participant", name, element, index);
9379    if (element.hasRole())
9380      composeCodeableConcept(t, "Invoice", "role", element.getRole(), -1);
9381    if (element.hasActor())
9382      composeReference(t, "Invoice", "actor", element.getActor(), -1);
9383  }
9384
9385  protected void composeInvoiceInvoiceLineItemComponent(Complex parent, String parentType, String name, Invoice.InvoiceLineItemComponent element, int index) {
9386    if (element == null) 
9387      return;
9388    Complex t;
9389    if (Utilities.noString(parentType))
9390      t = parent;
9391    else {
9392      t = parent.predicate("fhir:"+parentType+'.'+name);
9393    }
9394    composeBackboneElement(t, "lineItem", name, element, index);
9395    if (element.hasSequenceElement())
9396      composePositiveInt(t, "Invoice", "sequence", element.getSequenceElement(), -1);
9397    if (element.hasChargeItem())
9398      composeType(t, "Invoice", "chargeItem", element.getChargeItem(), -1);
9399    for (int i = 0; i < element.getPriceComponent().size(); i++)
9400      composeInvoiceInvoiceLineItemPriceComponentComponent(t, "Invoice", "priceComponent", element.getPriceComponent().get(i), i);
9401  }
9402
9403  protected void composeInvoiceInvoiceLineItemPriceComponentComponent(Complex parent, String parentType, String name, Invoice.InvoiceLineItemPriceComponentComponent element, int index) {
9404    if (element == null) 
9405      return;
9406    Complex t;
9407    if (Utilities.noString(parentType))
9408      t = parent;
9409    else {
9410      t = parent.predicate("fhir:"+parentType+'.'+name);
9411    }
9412    composeBackboneElement(t, "priceComponent", name, element, index);
9413    if (element.hasTypeElement())
9414      composeEnum(t, "Invoice", "type", element.getTypeElement(), -1);
9415    if (element.hasCode())
9416      composeCodeableConcept(t, "Invoice", "code", element.getCode(), -1);
9417    if (element.hasFactorElement())
9418      composeDecimal(t, "Invoice", "factor", element.getFactorElement(), -1);
9419    if (element.hasAmount())
9420      composeMoney(t, "Invoice", "amount", element.getAmount(), -1);
9421  }
9422
9423  protected void composeLibrary(Complex parent, String parentType, String name, Library element, int index) {
9424    if (element == null) 
9425      return;
9426    Complex t;
9427    if (Utilities.noString(parentType))
9428      t = parent;
9429    else {
9430      t = parent.predicate("fhir:"+parentType+'.'+name);
9431    }
9432    composeDomainResource(t, "Library", name, element, index);
9433    if (element.hasUrlElement())
9434      composeUri(t, "Library", "url", element.getUrlElement(), -1);
9435    for (int i = 0; i < element.getIdentifier().size(); i++)
9436      composeIdentifier(t, "Library", "identifier", element.getIdentifier().get(i), i);
9437    if (element.hasVersionElement())
9438      composeString(t, "Library", "version", element.getVersionElement(), -1);
9439    if (element.hasNameElement())
9440      composeString(t, "Library", "name", element.getNameElement(), -1);
9441    if (element.hasTitleElement())
9442      composeString(t, "Library", "title", element.getTitleElement(), -1);
9443    if (element.hasSubtitleElement())
9444      composeString(t, "Library", "subtitle", element.getSubtitleElement(), -1);
9445    if (element.hasStatusElement())
9446      composeEnum(t, "Library", "status", element.getStatusElement(), -1);
9447    if (element.hasExperimentalElement())
9448      composeBoolean(t, "Library", "experimental", element.getExperimentalElement(), -1);
9449    if (element.hasType())
9450      composeCodeableConcept(t, "Library", "type", element.getType(), -1);
9451    if (element.hasSubject())
9452      composeType(t, "Library", "subject", element.getSubject(), -1);
9453    if (element.hasDateElement())
9454      composeDateTime(t, "Library", "date", element.getDateElement(), -1);
9455    if (element.hasPublisherElement())
9456      composeString(t, "Library", "publisher", element.getPublisherElement(), -1);
9457    for (int i = 0; i < element.getContact().size(); i++)
9458      composeContactDetail(t, "Library", "contact", element.getContact().get(i), i);
9459    if (element.hasDescriptionElement())
9460      composeMarkdown(t, "Library", "description", element.getDescriptionElement(), -1);
9461    for (int i = 0; i < element.getUseContext().size(); i++)
9462      composeUsageContext(t, "Library", "useContext", element.getUseContext().get(i), i);
9463    for (int i = 0; i < element.getJurisdiction().size(); i++)
9464      composeCodeableConcept(t, "Library", "jurisdiction", element.getJurisdiction().get(i), i);
9465    if (element.hasPurposeElement())
9466      composeMarkdown(t, "Library", "purpose", element.getPurposeElement(), -1);
9467    if (element.hasUsageElement())
9468      composeString(t, "Library", "usage", element.getUsageElement(), -1);
9469    if (element.hasCopyrightElement())
9470      composeMarkdown(t, "Library", "copyright", element.getCopyrightElement(), -1);
9471    if (element.hasApprovalDateElement())
9472      composeDate(t, "Library", "approvalDate", element.getApprovalDateElement(), -1);
9473    if (element.hasLastReviewDateElement())
9474      composeDate(t, "Library", "lastReviewDate", element.getLastReviewDateElement(), -1);
9475    if (element.hasEffectivePeriod())
9476      composePeriod(t, "Library", "effectivePeriod", element.getEffectivePeriod(), -1);
9477    for (int i = 0; i < element.getTopic().size(); i++)
9478      composeCodeableConcept(t, "Library", "topic", element.getTopic().get(i), i);
9479    for (int i = 0; i < element.getAuthor().size(); i++)
9480      composeContactDetail(t, "Library", "author", element.getAuthor().get(i), i);
9481    for (int i = 0; i < element.getEditor().size(); i++)
9482      composeContactDetail(t, "Library", "editor", element.getEditor().get(i), i);
9483    for (int i = 0; i < element.getReviewer().size(); i++)
9484      composeContactDetail(t, "Library", "reviewer", element.getReviewer().get(i), i);
9485    for (int i = 0; i < element.getEndorser().size(); i++)
9486      composeContactDetail(t, "Library", "endorser", element.getEndorser().get(i), i);
9487    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
9488      composeRelatedArtifact(t, "Library", "relatedArtifact", element.getRelatedArtifact().get(i), i);
9489    for (int i = 0; i < element.getParameter().size(); i++)
9490      composeParameterDefinition(t, "Library", "parameter", element.getParameter().get(i), i);
9491    for (int i = 0; i < element.getDataRequirement().size(); i++)
9492      composeDataRequirement(t, "Library", "dataRequirement", element.getDataRequirement().get(i), i);
9493    for (int i = 0; i < element.getContent().size(); i++)
9494      composeAttachment(t, "Library", "content", element.getContent().get(i), i);
9495  }
9496
9497  protected void composeLinkage(Complex parent, String parentType, String name, Linkage element, int index) {
9498    if (element == null) 
9499      return;
9500    Complex t;
9501    if (Utilities.noString(parentType))
9502      t = parent;
9503    else {
9504      t = parent.predicate("fhir:"+parentType+'.'+name);
9505    }
9506    composeDomainResource(t, "Linkage", name, element, index);
9507    if (element.hasActiveElement())
9508      composeBoolean(t, "Linkage", "active", element.getActiveElement(), -1);
9509    if (element.hasAuthor())
9510      composeReference(t, "Linkage", "author", element.getAuthor(), -1);
9511    for (int i = 0; i < element.getItem().size(); i++)
9512      composeLinkageLinkageItemComponent(t, "Linkage", "item", element.getItem().get(i), i);
9513  }
9514
9515  protected void composeLinkageLinkageItemComponent(Complex parent, String parentType, String name, Linkage.LinkageItemComponent element, int index) {
9516    if (element == null) 
9517      return;
9518    Complex t;
9519    if (Utilities.noString(parentType))
9520      t = parent;
9521    else {
9522      t = parent.predicate("fhir:"+parentType+'.'+name);
9523    }
9524    composeBackboneElement(t, "item", name, element, index);
9525    if (element.hasTypeElement())
9526      composeEnum(t, "Linkage", "type", element.getTypeElement(), -1);
9527    if (element.hasResource())
9528      composeReference(t, "Linkage", "resource", element.getResource(), -1);
9529  }
9530
9531  protected void composeListResource(Complex parent, String parentType, String name, ListResource element, int index) {
9532    if (element == null) 
9533      return;
9534    Complex t;
9535    if (Utilities.noString(parentType))
9536      t = parent;
9537    else {
9538      t = parent.predicate("fhir:"+parentType+'.'+name);
9539    }
9540    composeDomainResource(t, "List", name, element, index);
9541    for (int i = 0; i < element.getIdentifier().size(); i++)
9542      composeIdentifier(t, "List", "identifier", element.getIdentifier().get(i), i);
9543    if (element.hasStatusElement())
9544      composeEnum(t, "List", "status", element.getStatusElement(), -1);
9545    if (element.hasModeElement())
9546      composeEnum(t, "List", "mode", element.getModeElement(), -1);
9547    if (element.hasTitleElement())
9548      composeString(t, "List", "title", element.getTitleElement(), -1);
9549    if (element.hasCode())
9550      composeCodeableConcept(t, "List", "code", element.getCode(), -1);
9551    if (element.hasSubject())
9552      composeReference(t, "List", "subject", element.getSubject(), -1);
9553    if (element.hasEncounter())
9554      composeReference(t, "List", "encounter", element.getEncounter(), -1);
9555    if (element.hasDateElement())
9556      composeDateTime(t, "List", "date", element.getDateElement(), -1);
9557    if (element.hasSource())
9558      composeReference(t, "List", "source", element.getSource(), -1);
9559    if (element.hasOrderedBy())
9560      composeCodeableConcept(t, "List", "orderedBy", element.getOrderedBy(), -1);
9561    for (int i = 0; i < element.getNote().size(); i++)
9562      composeAnnotation(t, "List", "note", element.getNote().get(i), i);
9563    for (int i = 0; i < element.getEntry().size(); i++)
9564      composeListResourceListEntryComponent(t, "List", "entry", element.getEntry().get(i), i);
9565    if (element.hasEmptyReason())
9566      composeCodeableConcept(t, "List", "emptyReason", element.getEmptyReason(), -1);
9567  }
9568
9569  protected void composeListResourceListEntryComponent(Complex parent, String parentType, String name, ListResource.ListEntryComponent element, int index) {
9570    if (element == null) 
9571      return;
9572    Complex t;
9573    if (Utilities.noString(parentType))
9574      t = parent;
9575    else {
9576      t = parent.predicate("fhir:"+parentType+'.'+name);
9577    }
9578    composeBackboneElement(t, "entry", name, element, index);
9579    if (element.hasFlag())
9580      composeCodeableConcept(t, "List", "flag", element.getFlag(), -1);
9581    if (element.hasDeletedElement())
9582      composeBoolean(t, "List", "deleted", element.getDeletedElement(), -1);
9583    if (element.hasDateElement())
9584      composeDateTime(t, "List", "date", element.getDateElement(), -1);
9585    if (element.hasItem())
9586      composeReference(t, "List", "item", element.getItem(), -1);
9587  }
9588
9589  protected void composeLocation(Complex parent, String parentType, String name, Location element, int index) {
9590    if (element == null) 
9591      return;
9592    Complex t;
9593    if (Utilities.noString(parentType))
9594      t = parent;
9595    else {
9596      t = parent.predicate("fhir:"+parentType+'.'+name);
9597    }
9598    composeDomainResource(t, "Location", name, element, index);
9599    for (int i = 0; i < element.getIdentifier().size(); i++)
9600      composeIdentifier(t, "Location", "identifier", element.getIdentifier().get(i), i);
9601    if (element.hasStatusElement())
9602      composeEnum(t, "Location", "status", element.getStatusElement(), -1);
9603    if (element.hasOperationalStatus())
9604      composeCoding(t, "Location", "operationalStatus", element.getOperationalStatus(), -1);
9605    if (element.hasNameElement())
9606      composeString(t, "Location", "name", element.getNameElement(), -1);
9607    for (int i = 0; i < element.getAlias().size(); i++)
9608      composeString(t, "Location", "alias", element.getAlias().get(i), i);
9609    if (element.hasDescriptionElement())
9610      composeString(t, "Location", "description", element.getDescriptionElement(), -1);
9611    if (element.hasModeElement())
9612      composeEnum(t, "Location", "mode", element.getModeElement(), -1);
9613    for (int i = 0; i < element.getType().size(); i++)
9614      composeCodeableConcept(t, "Location", "type", element.getType().get(i), i);
9615    for (int i = 0; i < element.getTelecom().size(); i++)
9616      composeContactPoint(t, "Location", "telecom", element.getTelecom().get(i), i);
9617    if (element.hasAddress())
9618      composeAddress(t, "Location", "address", element.getAddress(), -1);
9619    if (element.hasPhysicalType())
9620      composeCodeableConcept(t, "Location", "physicalType", element.getPhysicalType(), -1);
9621    if (element.hasPosition())
9622      composeLocationLocationPositionComponent(t, "Location", "position", element.getPosition(), -1);
9623    if (element.hasManagingOrganization())
9624      composeReference(t, "Location", "managingOrganization", element.getManagingOrganization(), -1);
9625    if (element.hasPartOf())
9626      composeReference(t, "Location", "partOf", element.getPartOf(), -1);
9627    for (int i = 0; i < element.getHoursOfOperation().size(); i++)
9628      composeLocationLocationHoursOfOperationComponent(t, "Location", "hoursOfOperation", element.getHoursOfOperation().get(i), i);
9629    if (element.hasAvailabilityExceptionsElement())
9630      composeString(t, "Location", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
9631    for (int i = 0; i < element.getEndpoint().size(); i++)
9632      composeReference(t, "Location", "endpoint", element.getEndpoint().get(i), i);
9633  }
9634
9635  protected void composeLocationLocationPositionComponent(Complex parent, String parentType, String name, Location.LocationPositionComponent element, int index) {
9636    if (element == null) 
9637      return;
9638    Complex t;
9639    if (Utilities.noString(parentType))
9640      t = parent;
9641    else {
9642      t = parent.predicate("fhir:"+parentType+'.'+name);
9643    }
9644    composeBackboneElement(t, "position", name, element, index);
9645    if (element.hasLongitudeElement())
9646      composeDecimal(t, "Location", "longitude", element.getLongitudeElement(), -1);
9647    if (element.hasLatitudeElement())
9648      composeDecimal(t, "Location", "latitude", element.getLatitudeElement(), -1);
9649    if (element.hasAltitudeElement())
9650      composeDecimal(t, "Location", "altitude", element.getAltitudeElement(), -1);
9651  }
9652
9653  protected void composeLocationLocationHoursOfOperationComponent(Complex parent, String parentType, String name, Location.LocationHoursOfOperationComponent element, int index) {
9654    if (element == null) 
9655      return;
9656    Complex t;
9657    if (Utilities.noString(parentType))
9658      t = parent;
9659    else {
9660      t = parent.predicate("fhir:"+parentType+'.'+name);
9661    }
9662    composeBackboneElement(t, "hoursOfOperation", name, element, index);
9663    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
9664      composeEnum(t, "Location", "daysOfWeek", element.getDaysOfWeek().get(i), i);
9665    if (element.hasAllDayElement())
9666      composeBoolean(t, "Location", "allDay", element.getAllDayElement(), -1);
9667    if (element.hasOpeningTimeElement())
9668      composeTime(t, "Location", "openingTime", element.getOpeningTimeElement(), -1);
9669    if (element.hasClosingTimeElement())
9670      composeTime(t, "Location", "closingTime", element.getClosingTimeElement(), -1);
9671  }
9672
9673  protected void composeMeasure(Complex parent, String parentType, String name, Measure element, int index) {
9674    if (element == null) 
9675      return;
9676    Complex t;
9677    if (Utilities.noString(parentType))
9678      t = parent;
9679    else {
9680      t = parent.predicate("fhir:"+parentType+'.'+name);
9681    }
9682    composeDomainResource(t, "Measure", name, element, index);
9683    if (element.hasUrlElement())
9684      composeUri(t, "Measure", "url", element.getUrlElement(), -1);
9685    for (int i = 0; i < element.getIdentifier().size(); i++)
9686      composeIdentifier(t, "Measure", "identifier", element.getIdentifier().get(i), i);
9687    if (element.hasVersionElement())
9688      composeString(t, "Measure", "version", element.getVersionElement(), -1);
9689    if (element.hasNameElement())
9690      composeString(t, "Measure", "name", element.getNameElement(), -1);
9691    if (element.hasTitleElement())
9692      composeString(t, "Measure", "title", element.getTitleElement(), -1);
9693    if (element.hasSubtitleElement())
9694      composeString(t, "Measure", "subtitle", element.getSubtitleElement(), -1);
9695    if (element.hasStatusElement())
9696      composeEnum(t, "Measure", "status", element.getStatusElement(), -1);
9697    if (element.hasExperimentalElement())
9698      composeBoolean(t, "Measure", "experimental", element.getExperimentalElement(), -1);
9699    if (element.hasSubject())
9700      composeType(t, "Measure", "subject", element.getSubject(), -1);
9701    if (element.hasDateElement())
9702      composeDateTime(t, "Measure", "date", element.getDateElement(), -1);
9703    if (element.hasPublisherElement())
9704      composeString(t, "Measure", "publisher", element.getPublisherElement(), -1);
9705    for (int i = 0; i < element.getContact().size(); i++)
9706      composeContactDetail(t, "Measure", "contact", element.getContact().get(i), i);
9707    if (element.hasDescriptionElement())
9708      composeMarkdown(t, "Measure", "description", element.getDescriptionElement(), -1);
9709    for (int i = 0; i < element.getUseContext().size(); i++)
9710      composeUsageContext(t, "Measure", "useContext", element.getUseContext().get(i), i);
9711    for (int i = 0; i < element.getJurisdiction().size(); i++)
9712      composeCodeableConcept(t, "Measure", "jurisdiction", element.getJurisdiction().get(i), i);
9713    if (element.hasPurposeElement())
9714      composeMarkdown(t, "Measure", "purpose", element.getPurposeElement(), -1);
9715    if (element.hasUsageElement())
9716      composeString(t, "Measure", "usage", element.getUsageElement(), -1);
9717    if (element.hasCopyrightElement())
9718      composeMarkdown(t, "Measure", "copyright", element.getCopyrightElement(), -1);
9719    if (element.hasApprovalDateElement())
9720      composeDate(t, "Measure", "approvalDate", element.getApprovalDateElement(), -1);
9721    if (element.hasLastReviewDateElement())
9722      composeDate(t, "Measure", "lastReviewDate", element.getLastReviewDateElement(), -1);
9723    if (element.hasEffectivePeriod())
9724      composePeriod(t, "Measure", "effectivePeriod", element.getEffectivePeriod(), -1);
9725    for (int i = 0; i < element.getTopic().size(); i++)
9726      composeCodeableConcept(t, "Measure", "topic", element.getTopic().get(i), i);
9727    for (int i = 0; i < element.getAuthor().size(); i++)
9728      composeContactDetail(t, "Measure", "author", element.getAuthor().get(i), i);
9729    for (int i = 0; i < element.getEditor().size(); i++)
9730      composeContactDetail(t, "Measure", "editor", element.getEditor().get(i), i);
9731    for (int i = 0; i < element.getReviewer().size(); i++)
9732      composeContactDetail(t, "Measure", "reviewer", element.getReviewer().get(i), i);
9733    for (int i = 0; i < element.getEndorser().size(); i++)
9734      composeContactDetail(t, "Measure", "endorser", element.getEndorser().get(i), i);
9735    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
9736      composeRelatedArtifact(t, "Measure", "relatedArtifact", element.getRelatedArtifact().get(i), i);
9737    for (int i = 0; i < element.getLibrary().size(); i++)
9738      composeCanonical(t, "Measure", "library", element.getLibrary().get(i), i);
9739    if (element.hasDisclaimerElement())
9740      composeMarkdown(t, "Measure", "disclaimer", element.getDisclaimerElement(), -1);
9741    if (element.hasScoring())
9742      composeCodeableConcept(t, "Measure", "scoring", element.getScoring(), -1);
9743    if (element.hasCompositeScoring())
9744      composeCodeableConcept(t, "Measure", "compositeScoring", element.getCompositeScoring(), -1);
9745    for (int i = 0; i < element.getType().size(); i++)
9746      composeCodeableConcept(t, "Measure", "type", element.getType().get(i), i);
9747    if (element.hasRiskAdjustmentElement())
9748      composeString(t, "Measure", "riskAdjustment", element.getRiskAdjustmentElement(), -1);
9749    if (element.hasRateAggregationElement())
9750      composeString(t, "Measure", "rateAggregation", element.getRateAggregationElement(), -1);
9751    if (element.hasRationaleElement())
9752      composeMarkdown(t, "Measure", "rationale", element.getRationaleElement(), -1);
9753    if (element.hasClinicalRecommendationStatementElement())
9754      composeMarkdown(t, "Measure", "clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement(), -1);
9755    if (element.hasImprovementNotation())
9756      composeCodeableConcept(t, "Measure", "improvementNotation", element.getImprovementNotation(), -1);
9757    for (int i = 0; i < element.getDefinition().size(); i++)
9758      composeMarkdown(t, "Measure", "definition", element.getDefinition().get(i), i);
9759    if (element.hasGuidanceElement())
9760      composeMarkdown(t, "Measure", "guidance", element.getGuidanceElement(), -1);
9761    for (int i = 0; i < element.getGroup().size(); i++)
9762      composeMeasureMeasureGroupComponent(t, "Measure", "group", element.getGroup().get(i), i);
9763    for (int i = 0; i < element.getSupplementalData().size(); i++)
9764      composeMeasureMeasureSupplementalDataComponent(t, "Measure", "supplementalData", element.getSupplementalData().get(i), i);
9765  }
9766
9767  protected void composeMeasureMeasureGroupComponent(Complex parent, String parentType, String name, Measure.MeasureGroupComponent element, int index) {
9768    if (element == null) 
9769      return;
9770    Complex t;
9771    if (Utilities.noString(parentType))
9772      t = parent;
9773    else {
9774      t = parent.predicate("fhir:"+parentType+'.'+name);
9775    }
9776    composeBackboneElement(t, "group", name, element, index);
9777    if (element.hasCode())
9778      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9779    if (element.hasDescriptionElement())
9780      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9781    for (int i = 0; i < element.getPopulation().size(); i++)
9782      composeMeasureMeasureGroupPopulationComponent(t, "Measure", "population", element.getPopulation().get(i), i);
9783    for (int i = 0; i < element.getStratifier().size(); i++)
9784      composeMeasureMeasureGroupStratifierComponent(t, "Measure", "stratifier", element.getStratifier().get(i), i);
9785  }
9786
9787  protected void composeMeasureMeasureGroupPopulationComponent(Complex parent, String parentType, String name, Measure.MeasureGroupPopulationComponent element, int index) {
9788    if (element == null) 
9789      return;
9790    Complex t;
9791    if (Utilities.noString(parentType))
9792      t = parent;
9793    else {
9794      t = parent.predicate("fhir:"+parentType+'.'+name);
9795    }
9796    composeBackboneElement(t, "population", name, element, index);
9797    if (element.hasCode())
9798      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9799    if (element.hasDescriptionElement())
9800      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9801    if (element.hasCriteria())
9802      composeExpression(t, "Measure", "criteria", element.getCriteria(), -1);
9803  }
9804
9805  protected void composeMeasureMeasureGroupStratifierComponent(Complex parent, String parentType, String name, Measure.MeasureGroupStratifierComponent element, int index) {
9806    if (element == null) 
9807      return;
9808    Complex t;
9809    if (Utilities.noString(parentType))
9810      t = parent;
9811    else {
9812      t = parent.predicate("fhir:"+parentType+'.'+name);
9813    }
9814    composeBackboneElement(t, "stratifier", name, element, index);
9815    if (element.hasCode())
9816      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9817    if (element.hasDescriptionElement())
9818      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9819    if (element.hasCriteria())
9820      composeExpression(t, "Measure", "criteria", element.getCriteria(), -1);
9821    for (int i = 0; i < element.getComponent().size(); i++)
9822      composeMeasureMeasureGroupStratifierComponentComponent(t, "Measure", "component", element.getComponent().get(i), i);
9823  }
9824
9825  protected void composeMeasureMeasureGroupStratifierComponentComponent(Complex parent, String parentType, String name, Measure.MeasureGroupStratifierComponentComponent element, int index) {
9826    if (element == null) 
9827      return;
9828    Complex t;
9829    if (Utilities.noString(parentType))
9830      t = parent;
9831    else {
9832      t = parent.predicate("fhir:"+parentType+'.'+name);
9833    }
9834    composeBackboneElement(t, "component", name, element, index);
9835    if (element.hasCode())
9836      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9837    if (element.hasDescriptionElement())
9838      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9839    if (element.hasCriteria())
9840      composeExpression(t, "Measure", "criteria", element.getCriteria(), -1);
9841  }
9842
9843  protected void composeMeasureMeasureSupplementalDataComponent(Complex parent, String parentType, String name, Measure.MeasureSupplementalDataComponent element, int index) {
9844    if (element == null) 
9845      return;
9846    Complex t;
9847    if (Utilities.noString(parentType))
9848      t = parent;
9849    else {
9850      t = parent.predicate("fhir:"+parentType+'.'+name);
9851    }
9852    composeBackboneElement(t, "supplementalData", name, element, index);
9853    if (element.hasCode())
9854      composeCodeableConcept(t, "Measure", "code", element.getCode(), -1);
9855    for (int i = 0; i < element.getUsage().size(); i++)
9856      composeCodeableConcept(t, "Measure", "usage", element.getUsage().get(i), i);
9857    if (element.hasDescriptionElement())
9858      composeString(t, "Measure", "description", element.getDescriptionElement(), -1);
9859    if (element.hasCriteria())
9860      composeExpression(t, "Measure", "criteria", element.getCriteria(), -1);
9861  }
9862
9863  protected void composeMeasureReport(Complex parent, String parentType, String name, MeasureReport element, int index) {
9864    if (element == null) 
9865      return;
9866    Complex t;
9867    if (Utilities.noString(parentType))
9868      t = parent;
9869    else {
9870      t = parent.predicate("fhir:"+parentType+'.'+name);
9871    }
9872    composeDomainResource(t, "MeasureReport", name, element, index);
9873    for (int i = 0; i < element.getIdentifier().size(); i++)
9874      composeIdentifier(t, "MeasureReport", "identifier", element.getIdentifier().get(i), i);
9875    if (element.hasStatusElement())
9876      composeEnum(t, "MeasureReport", "status", element.getStatusElement(), -1);
9877    if (element.hasTypeElement())
9878      composeEnum(t, "MeasureReport", "type", element.getTypeElement(), -1);
9879    if (element.hasMeasureElement())
9880      composeCanonical(t, "MeasureReport", "measure", element.getMeasureElement(), -1);
9881    if (element.hasSubject())
9882      composeReference(t, "MeasureReport", "subject", element.getSubject(), -1);
9883    if (element.hasDateElement())
9884      composeDateTime(t, "MeasureReport", "date", element.getDateElement(), -1);
9885    if (element.hasReporter())
9886      composeReference(t, "MeasureReport", "reporter", element.getReporter(), -1);
9887    if (element.hasPeriod())
9888      composePeriod(t, "MeasureReport", "period", element.getPeriod(), -1);
9889    if (element.hasImprovementNotation())
9890      composeCodeableConcept(t, "MeasureReport", "improvementNotation", element.getImprovementNotation(), -1);
9891    for (int i = 0; i < element.getGroup().size(); i++)
9892      composeMeasureReportMeasureReportGroupComponent(t, "MeasureReport", "group", element.getGroup().get(i), i);
9893    for (int i = 0; i < element.getEvaluatedResource().size(); i++)
9894      composeReference(t, "MeasureReport", "evaluatedResource", element.getEvaluatedResource().get(i), i);
9895  }
9896
9897  protected void composeMeasureReportMeasureReportGroupComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupComponent element, int index) {
9898    if (element == null) 
9899      return;
9900    Complex t;
9901    if (Utilities.noString(parentType))
9902      t = parent;
9903    else {
9904      t = parent.predicate("fhir:"+parentType+'.'+name);
9905    }
9906    composeBackboneElement(t, "group", name, element, index);
9907    if (element.hasCode())
9908      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
9909    for (int i = 0; i < element.getPopulation().size(); i++)
9910      composeMeasureReportMeasureReportGroupPopulationComponent(t, "MeasureReport", "population", element.getPopulation().get(i), i);
9911    if (element.hasMeasureScore())
9912      composeQuantity(t, "MeasureReport", "measureScore", element.getMeasureScore(), -1);
9913    for (int i = 0; i < element.getStratifier().size(); i++)
9914      composeMeasureReportMeasureReportGroupStratifierComponent(t, "MeasureReport", "stratifier", element.getStratifier().get(i), i);
9915  }
9916
9917  protected void composeMeasureReportMeasureReportGroupPopulationComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupPopulationComponent element, int index) {
9918    if (element == null) 
9919      return;
9920    Complex t;
9921    if (Utilities.noString(parentType))
9922      t = parent;
9923    else {
9924      t = parent.predicate("fhir:"+parentType+'.'+name);
9925    }
9926    composeBackboneElement(t, "population", name, element, index);
9927    if (element.hasCode())
9928      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
9929    if (element.hasCountElement())
9930      composeInteger(t, "MeasureReport", "count", element.getCountElement(), -1);
9931    if (element.hasSubjectResults())
9932      composeReference(t, "MeasureReport", "subjectResults", element.getSubjectResults(), -1);
9933  }
9934
9935  protected void composeMeasureReportMeasureReportGroupStratifierComponent(Complex parent, String parentType, String name, MeasureReport.MeasureReportGroupStratifierComponent element, int index) {
9936    if (element == null) 
9937      return;
9938    Complex t;
9939    if (Utilities.noString(parentType))
9940      t = parent;
9941    else {
9942      t = parent.predicate("fhir:"+parentType+'.'+name);
9943    }
9944    composeBackboneElement(t, "stratifier", name, element, index);
9945    for (int i = 0; i < element.getCode().size(); i++)
9946      composeCodeableConcept(t, "MeasureReport", "code", element.getCode().get(i), i);
9947    for (int i = 0; i < element.getStratum().size(); i++)
9948      composeMeasureReportStratifierGroupComponent(t, "MeasureReport", "stratum", element.getStratum().get(i), i);
9949  }
9950
9951  protected void composeMeasureReportStratifierGroupComponent(Complex parent, String parentType, String name, MeasureReport.StratifierGroupComponent element, int index) {
9952    if (element == null) 
9953      return;
9954    Complex t;
9955    if (Utilities.noString(parentType))
9956      t = parent;
9957    else {
9958      t = parent.predicate("fhir:"+parentType+'.'+name);
9959    }
9960    composeBackboneElement(t, "stratum", name, element, index);
9961    if (element.hasValue())
9962      composeCodeableConcept(t, "MeasureReport", "value", element.getValue(), -1);
9963    for (int i = 0; i < element.getComponent().size(); i++)
9964      composeMeasureReportStratifierGroupComponentComponent(t, "MeasureReport", "component", element.getComponent().get(i), i);
9965    for (int i = 0; i < element.getPopulation().size(); i++)
9966      composeMeasureReportStratifierGroupPopulationComponent(t, "MeasureReport", "population", element.getPopulation().get(i), i);
9967    if (element.hasMeasureScore())
9968      composeQuantity(t, "MeasureReport", "measureScore", element.getMeasureScore(), -1);
9969  }
9970
9971  protected void composeMeasureReportStratifierGroupComponentComponent(Complex parent, String parentType, String name, MeasureReport.StratifierGroupComponentComponent element, int index) {
9972    if (element == null) 
9973      return;
9974    Complex t;
9975    if (Utilities.noString(parentType))
9976      t = parent;
9977    else {
9978      t = parent.predicate("fhir:"+parentType+'.'+name);
9979    }
9980    composeBackboneElement(t, "component", name, element, index);
9981    if (element.hasCode())
9982      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
9983    if (element.hasValue())
9984      composeCodeableConcept(t, "MeasureReport", "value", element.getValue(), -1);
9985  }
9986
9987  protected void composeMeasureReportStratifierGroupPopulationComponent(Complex parent, String parentType, String name, MeasureReport.StratifierGroupPopulationComponent element, int index) {
9988    if (element == null) 
9989      return;
9990    Complex t;
9991    if (Utilities.noString(parentType))
9992      t = parent;
9993    else {
9994      t = parent.predicate("fhir:"+parentType+'.'+name);
9995    }
9996    composeBackboneElement(t, "population", name, element, index);
9997    if (element.hasCode())
9998      composeCodeableConcept(t, "MeasureReport", "code", element.getCode(), -1);
9999    if (element.hasCountElement())
10000      composeInteger(t, "MeasureReport", "count", element.getCountElement(), -1);
10001    if (element.hasSubjectResults())
10002      composeReference(t, "MeasureReport", "subjectResults", element.getSubjectResults(), -1);
10003  }
10004
10005  protected void composeMedia(Complex parent, String parentType, String name, Media element, int index) {
10006    if (element == null) 
10007      return;
10008    Complex t;
10009    if (Utilities.noString(parentType))
10010      t = parent;
10011    else {
10012      t = parent.predicate("fhir:"+parentType+'.'+name);
10013    }
10014    composeDomainResource(t, "Media", name, element, index);
10015    for (int i = 0; i < element.getIdentifier().size(); i++)
10016      composeIdentifier(t, "Media", "identifier", element.getIdentifier().get(i), i);
10017    for (int i = 0; i < element.getBasedOn().size(); i++)
10018      composeReference(t, "Media", "basedOn", element.getBasedOn().get(i), i);
10019    for (int i = 0; i < element.getPartOf().size(); i++)
10020      composeReference(t, "Media", "partOf", element.getPartOf().get(i), i);
10021    if (element.hasStatusElement())
10022      composeEnum(t, "Media", "status", element.getStatusElement(), -1);
10023    if (element.hasType())
10024      composeCodeableConcept(t, "Media", "type", element.getType(), -1);
10025    if (element.hasModality())
10026      composeCodeableConcept(t, "Media", "modality", element.getModality(), -1);
10027    if (element.hasView())
10028      composeCodeableConcept(t, "Media", "view", element.getView(), -1);
10029    if (element.hasSubject())
10030      composeReference(t, "Media", "subject", element.getSubject(), -1);
10031    if (element.hasEncounter())
10032      composeReference(t, "Media", "encounter", element.getEncounter(), -1);
10033    if (element.hasCreated())
10034      composeType(t, "Media", "created", element.getCreated(), -1);
10035    if (element.hasIssuedElement())
10036      composeInstant(t, "Media", "issued", element.getIssuedElement(), -1);
10037    if (element.hasOperator())
10038      composeReference(t, "Media", "operator", element.getOperator(), -1);
10039    for (int i = 0; i < element.getReasonCode().size(); i++)
10040      composeCodeableConcept(t, "Media", "reasonCode", element.getReasonCode().get(i), i);
10041    if (element.hasBodySite())
10042      composeCodeableConcept(t, "Media", "bodySite", element.getBodySite(), -1);
10043    if (element.hasDeviceNameElement())
10044      composeString(t, "Media", "deviceName", element.getDeviceNameElement(), -1);
10045    if (element.hasDevice())
10046      composeReference(t, "Media", "device", element.getDevice(), -1);
10047    if (element.hasHeightElement())
10048      composePositiveInt(t, "Media", "height", element.getHeightElement(), -1);
10049    if (element.hasWidthElement())
10050      composePositiveInt(t, "Media", "width", element.getWidthElement(), -1);
10051    if (element.hasFramesElement())
10052      composePositiveInt(t, "Media", "frames", element.getFramesElement(), -1);
10053    if (element.hasDurationElement())
10054      composeDecimal(t, "Media", "duration", element.getDurationElement(), -1);
10055    if (element.hasContent())
10056      composeAttachment(t, "Media", "content", element.getContent(), -1);
10057    for (int i = 0; i < element.getNote().size(); i++)
10058      composeAnnotation(t, "Media", "note", element.getNote().get(i), i);
10059  }
10060
10061  protected void composeMedication(Complex parent, String parentType, String name, Medication element, int index) {
10062    if (element == null) 
10063      return;
10064    Complex t;
10065    if (Utilities.noString(parentType))
10066      t = parent;
10067    else {
10068      t = parent.predicate("fhir:"+parentType+'.'+name);
10069    }
10070    composeDomainResource(t, "Medication", name, element, index);
10071    for (int i = 0; i < element.getIdentifier().size(); i++)
10072      composeIdentifier(t, "Medication", "identifier", element.getIdentifier().get(i), i);
10073    if (element.hasCode())
10074      composeCodeableConcept(t, "Medication", "code", element.getCode(), -1);
10075    if (element.hasStatusElement())
10076      composeEnum(t, "Medication", "status", element.getStatusElement(), -1);
10077    if (element.hasManufacturer())
10078      composeReference(t, "Medication", "manufacturer", element.getManufacturer(), -1);
10079    if (element.hasForm())
10080      composeCodeableConcept(t, "Medication", "form", element.getForm(), -1);
10081    if (element.hasAmount())
10082      composeRatio(t, "Medication", "amount", element.getAmount(), -1);
10083    for (int i = 0; i < element.getIngredient().size(); i++)
10084      composeMedicationMedicationIngredientComponent(t, "Medication", "ingredient", element.getIngredient().get(i), i);
10085    if (element.hasBatch())
10086      composeMedicationMedicationBatchComponent(t, "Medication", "batch", element.getBatch(), -1);
10087  }
10088
10089  protected void composeMedicationMedicationIngredientComponent(Complex parent, String parentType, String name, Medication.MedicationIngredientComponent element, int index) {
10090    if (element == null) 
10091      return;
10092    Complex t;
10093    if (Utilities.noString(parentType))
10094      t = parent;
10095    else {
10096      t = parent.predicate("fhir:"+parentType+'.'+name);
10097    }
10098    composeBackboneElement(t, "ingredient", name, element, index);
10099    if (element.hasItem())
10100      composeType(t, "Medication", "item", element.getItem(), -1);
10101    if (element.hasIsActiveElement())
10102      composeBoolean(t, "Medication", "isActive", element.getIsActiveElement(), -1);
10103    if (element.hasStrength())
10104      composeRatio(t, "Medication", "strength", element.getStrength(), -1);
10105  }
10106
10107  protected void composeMedicationMedicationBatchComponent(Complex parent, String parentType, String name, Medication.MedicationBatchComponent element, int index) {
10108    if (element == null) 
10109      return;
10110    Complex t;
10111    if (Utilities.noString(parentType))
10112      t = parent;
10113    else {
10114      t = parent.predicate("fhir:"+parentType+'.'+name);
10115    }
10116    composeBackboneElement(t, "batch", name, element, index);
10117    if (element.hasLotNumberElement())
10118      composeString(t, "Medication", "lotNumber", element.getLotNumberElement(), -1);
10119    if (element.hasExpirationDateElement())
10120      composeDateTime(t, "Medication", "expirationDate", element.getExpirationDateElement(), -1);
10121  }
10122
10123  protected void composeMedicationAdministration(Complex parent, String parentType, String name, MedicationAdministration element, int index) {
10124    if (element == null) 
10125      return;
10126    Complex t;
10127    if (Utilities.noString(parentType))
10128      t = parent;
10129    else {
10130      t = parent.predicate("fhir:"+parentType+'.'+name);
10131    }
10132    composeDomainResource(t, "MedicationAdministration", name, element, index);
10133    for (int i = 0; i < element.getIdentifier().size(); i++)
10134      composeIdentifier(t, "MedicationAdministration", "identifier", element.getIdentifier().get(i), i);
10135    for (int i = 0; i < element.getInstantiates().size(); i++)
10136      composeUri(t, "MedicationAdministration", "instantiates", element.getInstantiates().get(i), i);
10137    for (int i = 0; i < element.getPartOf().size(); i++)
10138      composeReference(t, "MedicationAdministration", "partOf", element.getPartOf().get(i), i);
10139    if (element.hasStatusElement())
10140      composeEnum(t, "MedicationAdministration", "status", element.getStatusElement(), -1);
10141    for (int i = 0; i < element.getStatusReason().size(); i++)
10142      composeCodeableConcept(t, "MedicationAdministration", "statusReason", element.getStatusReason().get(i), i);
10143    if (element.hasCategory())
10144      composeCodeableConcept(t, "MedicationAdministration", "category", element.getCategory(), -1);
10145    if (element.hasMedication())
10146      composeType(t, "MedicationAdministration", "medication", element.getMedication(), -1);
10147    if (element.hasSubject())
10148      composeReference(t, "MedicationAdministration", "subject", element.getSubject(), -1);
10149    if (element.hasContext())
10150      composeReference(t, "MedicationAdministration", "context", element.getContext(), -1);
10151    for (int i = 0; i < element.getSupportingInformation().size(); i++)
10152      composeReference(t, "MedicationAdministration", "supportingInformation", element.getSupportingInformation().get(i), i);
10153    if (element.hasEffective())
10154      composeType(t, "MedicationAdministration", "effective", element.getEffective(), -1);
10155    for (int i = 0; i < element.getPerformer().size(); i++)
10156      composeMedicationAdministrationMedicationAdministrationPerformerComponent(t, "MedicationAdministration", "performer", element.getPerformer().get(i), i);
10157    for (int i = 0; i < element.getReasonCode().size(); i++)
10158      composeCodeableConcept(t, "MedicationAdministration", "reasonCode", element.getReasonCode().get(i), i);
10159    for (int i = 0; i < element.getReasonReference().size(); i++)
10160      composeReference(t, "MedicationAdministration", "reasonReference", element.getReasonReference().get(i), i);
10161    if (element.hasRequest())
10162      composeReference(t, "MedicationAdministration", "request", element.getRequest(), -1);
10163    for (int i = 0; i < element.getDevice().size(); i++)
10164      composeReference(t, "MedicationAdministration", "device", element.getDevice().get(i), i);
10165    for (int i = 0; i < element.getNote().size(); i++)
10166      composeAnnotation(t, "MedicationAdministration", "note", element.getNote().get(i), i);
10167    if (element.hasDosage())
10168      composeMedicationAdministrationMedicationAdministrationDosageComponent(t, "MedicationAdministration", "dosage", element.getDosage(), -1);
10169    for (int i = 0; i < element.getEventHistory().size(); i++)
10170      composeReference(t, "MedicationAdministration", "eventHistory", element.getEventHistory().get(i), i);
10171  }
10172
10173  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(Complex parent, String parentType, String name, MedicationAdministration.MedicationAdministrationPerformerComponent element, int index) {
10174    if (element == null) 
10175      return;
10176    Complex t;
10177    if (Utilities.noString(parentType))
10178      t = parent;
10179    else {
10180      t = parent.predicate("fhir:"+parentType+'.'+name);
10181    }
10182    composeBackboneElement(t, "performer", name, element, index);
10183    if (element.hasFunction())
10184      composeCodeableConcept(t, "MedicationAdministration", "function", element.getFunction(), -1);
10185    if (element.hasActor())
10186      composeReference(t, "MedicationAdministration", "actor", element.getActor(), -1);
10187  }
10188
10189  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(Complex parent, String parentType, String name, MedicationAdministration.MedicationAdministrationDosageComponent element, int index) {
10190    if (element == null) 
10191      return;
10192    Complex t;
10193    if (Utilities.noString(parentType))
10194      t = parent;
10195    else {
10196      t = parent.predicate("fhir:"+parentType+'.'+name);
10197    }
10198    composeBackboneElement(t, "dosage", name, element, index);
10199    if (element.hasTextElement())
10200      composeString(t, "MedicationAdministration", "text", element.getTextElement(), -1);
10201    if (element.hasSite())
10202      composeCodeableConcept(t, "MedicationAdministration", "site", element.getSite(), -1);
10203    if (element.hasRoute())
10204      composeCodeableConcept(t, "MedicationAdministration", "route", element.getRoute(), -1);
10205    if (element.hasMethod())
10206      composeCodeableConcept(t, "MedicationAdministration", "method", element.getMethod(), -1);
10207    if (element.hasDose())
10208      composeQuantity(t, "MedicationAdministration", "dose", element.getDose(), -1);
10209    if (element.hasRate())
10210      composeType(t, "MedicationAdministration", "rate", element.getRate(), -1);
10211  }
10212
10213  protected void composeMedicationDispense(Complex parent, String parentType, String name, MedicationDispense element, int index) {
10214    if (element == null) 
10215      return;
10216    Complex t;
10217    if (Utilities.noString(parentType))
10218      t = parent;
10219    else {
10220      t = parent.predicate("fhir:"+parentType+'.'+name);
10221    }
10222    composeDomainResource(t, "MedicationDispense", name, element, index);
10223    for (int i = 0; i < element.getIdentifier().size(); i++)
10224      composeIdentifier(t, "MedicationDispense", "identifier", element.getIdentifier().get(i), i);
10225    for (int i = 0; i < element.getPartOf().size(); i++)
10226      composeReference(t, "MedicationDispense", "partOf", element.getPartOf().get(i), i);
10227    if (element.hasStatusElement())
10228      composeEnum(t, "MedicationDispense", "status", element.getStatusElement(), -1);
10229    if (element.hasStatusReason())
10230      composeType(t, "MedicationDispense", "statusReason", element.getStatusReason(), -1);
10231    if (element.hasCategory())
10232      composeCodeableConcept(t, "MedicationDispense", "category", element.getCategory(), -1);
10233    if (element.hasMedication())
10234      composeType(t, "MedicationDispense", "medication", element.getMedication(), -1);
10235    if (element.hasSubject())
10236      composeReference(t, "MedicationDispense", "subject", element.getSubject(), -1);
10237    if (element.hasContext())
10238      composeReference(t, "MedicationDispense", "context", element.getContext(), -1);
10239    for (int i = 0; i < element.getSupportingInformation().size(); i++)
10240      composeReference(t, "MedicationDispense", "supportingInformation", element.getSupportingInformation().get(i), i);
10241    for (int i = 0; i < element.getPerformer().size(); i++)
10242      composeMedicationDispenseMedicationDispensePerformerComponent(t, "MedicationDispense", "performer", element.getPerformer().get(i), i);
10243    if (element.hasLocation())
10244      composeReference(t, "MedicationDispense", "location", element.getLocation(), -1);
10245    for (int i = 0; i < element.getAuthorizingPrescription().size(); i++)
10246      composeReference(t, "MedicationDispense", "authorizingPrescription", element.getAuthorizingPrescription().get(i), i);
10247    if (element.hasType())
10248      composeCodeableConcept(t, "MedicationDispense", "type", element.getType(), -1);
10249    if (element.hasQuantity())
10250      composeQuantity(t, "MedicationDispense", "quantity", element.getQuantity(), -1);
10251    if (element.hasDaysSupply())
10252      composeQuantity(t, "MedicationDispense", "daysSupply", element.getDaysSupply(), -1);
10253    if (element.hasWhenPreparedElement())
10254      composeDateTime(t, "MedicationDispense", "whenPrepared", element.getWhenPreparedElement(), -1);
10255    if (element.hasWhenHandedOverElement())
10256      composeDateTime(t, "MedicationDispense", "whenHandedOver", element.getWhenHandedOverElement(), -1);
10257    if (element.hasDestination())
10258      composeReference(t, "MedicationDispense", "destination", element.getDestination(), -1);
10259    for (int i = 0; i < element.getReceiver().size(); i++)
10260      composeReference(t, "MedicationDispense", "receiver", element.getReceiver().get(i), i);
10261    for (int i = 0; i < element.getNote().size(); i++)
10262      composeAnnotation(t, "MedicationDispense", "note", element.getNote().get(i), i);
10263    for (int i = 0; i < element.getDosageInstruction().size(); i++)
10264      composeDosage(t, "MedicationDispense", "dosageInstruction", element.getDosageInstruction().get(i), i);
10265    if (element.hasSubstitution())
10266      composeMedicationDispenseMedicationDispenseSubstitutionComponent(t, "MedicationDispense", "substitution", element.getSubstitution(), -1);
10267    for (int i = 0; i < element.getDetectedIssue().size(); i++)
10268      composeReference(t, "MedicationDispense", "detectedIssue", element.getDetectedIssue().get(i), i);
10269    for (int i = 0; i < element.getEventHistory().size(); i++)
10270      composeReference(t, "MedicationDispense", "eventHistory", element.getEventHistory().get(i), i);
10271  }
10272
10273  protected void composeMedicationDispenseMedicationDispensePerformerComponent(Complex parent, String parentType, String name, MedicationDispense.MedicationDispensePerformerComponent element, int index) {
10274    if (element == null) 
10275      return;
10276    Complex t;
10277    if (Utilities.noString(parentType))
10278      t = parent;
10279    else {
10280      t = parent.predicate("fhir:"+parentType+'.'+name);
10281    }
10282    composeBackboneElement(t, "performer", name, element, index);
10283    if (element.hasFunction())
10284      composeCodeableConcept(t, "MedicationDispense", "function", element.getFunction(), -1);
10285    if (element.hasActor())
10286      composeReference(t, "MedicationDispense", "actor", element.getActor(), -1);
10287  }
10288
10289  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(Complex parent, String parentType, String name, MedicationDispense.MedicationDispenseSubstitutionComponent element, int index) {
10290    if (element == null) 
10291      return;
10292    Complex t;
10293    if (Utilities.noString(parentType))
10294      t = parent;
10295    else {
10296      t = parent.predicate("fhir:"+parentType+'.'+name);
10297    }
10298    composeBackboneElement(t, "substitution", name, element, index);
10299    if (element.hasWasSubstitutedElement())
10300      composeBoolean(t, "MedicationDispense", "wasSubstituted", element.getWasSubstitutedElement(), -1);
10301    if (element.hasType())
10302      composeCodeableConcept(t, "MedicationDispense", "type", element.getType(), -1);
10303    for (int i = 0; i < element.getReason().size(); i++)
10304      composeCodeableConcept(t, "MedicationDispense", "reason", element.getReason().get(i), i);
10305    for (int i = 0; i < element.getResponsibleParty().size(); i++)
10306      composeReference(t, "MedicationDispense", "responsibleParty", element.getResponsibleParty().get(i), i);
10307  }
10308
10309  protected void composeMedicationKnowledge(Complex parent, String parentType, String name, MedicationKnowledge element, int index) {
10310    if (element == null) 
10311      return;
10312    Complex t;
10313    if (Utilities.noString(parentType))
10314      t = parent;
10315    else {
10316      t = parent.predicate("fhir:"+parentType+'.'+name);
10317    }
10318    composeDomainResource(t, "MedicationKnowledge", name, element, index);
10319    if (element.hasCode())
10320      composeCodeableConcept(t, "MedicationKnowledge", "code", element.getCode(), -1);
10321    if (element.hasStatusElement())
10322      composeEnum(t, "MedicationKnowledge", "status", element.getStatusElement(), -1);
10323    if (element.hasManufacturer())
10324      composeReference(t, "MedicationKnowledge", "manufacturer", element.getManufacturer(), -1);
10325    if (element.hasDoseForm())
10326      composeCodeableConcept(t, "MedicationKnowledge", "doseForm", element.getDoseForm(), -1);
10327    if (element.hasAmount())
10328      composeQuantity(t, "MedicationKnowledge", "amount", element.getAmount(), -1);
10329    for (int i = 0; i < element.getSynonym().size(); i++)
10330      composeString(t, "MedicationKnowledge", "synonym", element.getSynonym().get(i), i);
10331    for (int i = 0; i < element.getRelatedMedicationKnowledge().size(); i++)
10332      composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(t, "MedicationKnowledge", "relatedMedicationKnowledge", element.getRelatedMedicationKnowledge().get(i), i);
10333    for (int i = 0; i < element.getAssociatedMedication().size(); i++)
10334      composeReference(t, "MedicationKnowledge", "associatedMedication", element.getAssociatedMedication().get(i), i);
10335    for (int i = 0; i < element.getProductType().size(); i++)
10336      composeCodeableConcept(t, "MedicationKnowledge", "productType", element.getProductType().get(i), i);
10337    for (int i = 0; i < element.getMonograph().size(); i++)
10338      composeMedicationKnowledgeMedicationKnowledgeMonographComponent(t, "MedicationKnowledge", "monograph", element.getMonograph().get(i), i);
10339    for (int i = 0; i < element.getIngredient().size(); i++)
10340      composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(t, "MedicationKnowledge", "ingredient", element.getIngredient().get(i), i);
10341    if (element.hasPreparationInstructionElement())
10342      composeMarkdown(t, "MedicationKnowledge", "preparationInstruction", element.getPreparationInstructionElement(), -1);
10343    for (int i = 0; i < element.getIntendedRoute().size(); i++)
10344      composeCodeableConcept(t, "MedicationKnowledge", "intendedRoute", element.getIntendedRoute().get(i), i);
10345    for (int i = 0; i < element.getCost().size(); i++)
10346      composeMedicationKnowledgeMedicationKnowledgeCostComponent(t, "MedicationKnowledge", "cost", element.getCost().get(i), i);
10347    for (int i = 0; i < element.getMonitoringProgram().size(); i++)
10348      composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(t, "MedicationKnowledge", "monitoringProgram", element.getMonitoringProgram().get(i), i);
10349    for (int i = 0; i < element.getAdministrationGuidelines().size(); i++)
10350      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(t, "MedicationKnowledge", "administrationGuidelines", element.getAdministrationGuidelines().get(i), i);
10351    for (int i = 0; i < element.getMedicineClassification().size(); i++)
10352      composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(t, "MedicationKnowledge", "medicineClassification", element.getMedicineClassification().get(i), i);
10353    if (element.hasPackaging())
10354      composeMedicationKnowledgeMedicationKnowledgePackagingComponent(t, "MedicationKnowledge", "packaging", element.getPackaging(), -1);
10355    for (int i = 0; i < element.getDrugCharacteristic().size(); i++)
10356      composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(t, "MedicationKnowledge", "drugCharacteristic", element.getDrugCharacteristic().get(i), i);
10357    for (int i = 0; i < element.getContraindication().size(); i++)
10358      composeReference(t, "MedicationKnowledge", "contraindication", element.getContraindication().get(i), i);
10359    for (int i = 0; i < element.getRegulatory().size(); i++)
10360      composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(t, "MedicationKnowledge", "regulatory", element.getRegulatory().get(i), i);
10361    for (int i = 0; i < element.getKinetics().size(); i++)
10362      composeMedicationKnowledgeMedicationKnowledgeKineticsComponent(t, "MedicationKnowledge", "kinetics", element.getKinetics().get(i), i);
10363  }
10364
10365  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element, int index) {
10366    if (element == null) 
10367      return;
10368    Complex t;
10369    if (Utilities.noString(parentType))
10370      t = parent;
10371    else {
10372      t = parent.predicate("fhir:"+parentType+'.'+name);
10373    }
10374    composeBackboneElement(t, "relatedMedicationKnowledge", name, element, index);
10375    if (element.hasType())
10376      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10377    for (int i = 0; i < element.getReference().size(); i++)
10378      composeReference(t, "MedicationKnowledge", "reference", element.getReference().get(i), i);
10379  }
10380
10381  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element, int index) {
10382    if (element == null) 
10383      return;
10384    Complex t;
10385    if (Utilities.noString(parentType))
10386      t = parent;
10387    else {
10388      t = parent.predicate("fhir:"+parentType+'.'+name);
10389    }
10390    composeBackboneElement(t, "monograph", name, element, index);
10391    if (element.hasType())
10392      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10393    if (element.hasSource())
10394      composeReference(t, "MedicationKnowledge", "source", element.getSource(), -1);
10395  }
10396
10397  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeIngredientComponent element, int index) {
10398    if (element == null) 
10399      return;
10400    Complex t;
10401    if (Utilities.noString(parentType))
10402      t = parent;
10403    else {
10404      t = parent.predicate("fhir:"+parentType+'.'+name);
10405    }
10406    composeBackboneElement(t, "ingredient", name, element, index);
10407    if (element.hasItem())
10408      composeType(t, "MedicationKnowledge", "item", element.getItem(), -1);
10409    if (element.hasIsActiveElement())
10410      composeBoolean(t, "MedicationKnowledge", "isActive", element.getIsActiveElement(), -1);
10411    if (element.hasStrength())
10412      composeRatio(t, "MedicationKnowledge", "strength", element.getStrength(), -1);
10413  }
10414
10415  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeCostComponent element, int index) {
10416    if (element == null) 
10417      return;
10418    Complex t;
10419    if (Utilities.noString(parentType))
10420      t = parent;
10421    else {
10422      t = parent.predicate("fhir:"+parentType+'.'+name);
10423    }
10424    composeBackboneElement(t, "cost", name, element, index);
10425    if (element.hasType())
10426      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10427    if (element.hasSourceElement())
10428      composeString(t, "MedicationKnowledge", "source", element.getSourceElement(), -1);
10429    if (element.hasCost())
10430      composeMoney(t, "MedicationKnowledge", "cost", element.getCost(), -1);
10431  }
10432
10433  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element, int index) {
10434    if (element == null) 
10435      return;
10436    Complex t;
10437    if (Utilities.noString(parentType))
10438      t = parent;
10439    else {
10440      t = parent.predicate("fhir:"+parentType+'.'+name);
10441    }
10442    composeBackboneElement(t, "monitoringProgram", name, element, index);
10443    if (element.hasType())
10444      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10445    if (element.hasNameElement())
10446      composeString(t, "MedicationKnowledge", "name", element.getNameElement(), -1);
10447  }
10448
10449  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element, int index) {
10450    if (element == null) 
10451      return;
10452    Complex t;
10453    if (Utilities.noString(parentType))
10454      t = parent;
10455    else {
10456      t = parent.predicate("fhir:"+parentType+'.'+name);
10457    }
10458    composeBackboneElement(t, "administrationGuidelines", name, element, index);
10459    for (int i = 0; i < element.getDosage().size(); i++)
10460      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(t, "MedicationKnowledge", "dosage", element.getDosage().get(i), i);
10461    if (element.hasIndication())
10462      composeType(t, "MedicationKnowledge", "indication", element.getIndication(), -1);
10463    for (int i = 0; i < element.getPatientCharacteristics().size(); i++)
10464      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(t, "MedicationKnowledge", "patientCharacteristics", element.getPatientCharacteristics().get(i), i);
10465  }
10466
10467  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element, int index) {
10468    if (element == null) 
10469      return;
10470    Complex t;
10471    if (Utilities.noString(parentType))
10472      t = parent;
10473    else {
10474      t = parent.predicate("fhir:"+parentType+'.'+name);
10475    }
10476    composeBackboneElement(t, "dosage", name, element, index);
10477    if (element.hasType())
10478      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10479    for (int i = 0; i < element.getDosage().size(); i++)
10480      composeDosage(t, "MedicationKnowledge", "dosage", element.getDosage().get(i), i);
10481  }
10482
10483  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element, int index) {
10484    if (element == null) 
10485      return;
10486    Complex t;
10487    if (Utilities.noString(parentType))
10488      t = parent;
10489    else {
10490      t = parent.predicate("fhir:"+parentType+'.'+name);
10491    }
10492    composeBackboneElement(t, "patientCharacteristics", name, element, index);
10493    if (element.hasCharacteristic())
10494      composeType(t, "MedicationKnowledge", "characteristic", element.getCharacteristic(), -1);
10495    for (int i = 0; i < element.getValue().size(); i++)
10496      composeString(t, "MedicationKnowledge", "value", element.getValue().get(i), i);
10497  }
10498
10499  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element, int index) {
10500    if (element == null) 
10501      return;
10502    Complex t;
10503    if (Utilities.noString(parentType))
10504      t = parent;
10505    else {
10506      t = parent.predicate("fhir:"+parentType+'.'+name);
10507    }
10508    composeBackboneElement(t, "medicineClassification", name, element, index);
10509    if (element.hasType())
10510      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10511    for (int i = 0; i < element.getClassification().size(); i++)
10512      composeCodeableConcept(t, "MedicationKnowledge", "classification", element.getClassification().get(i), i);
10513  }
10514
10515  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element, int index) {
10516    if (element == null) 
10517      return;
10518    Complex t;
10519    if (Utilities.noString(parentType))
10520      t = parent;
10521    else {
10522      t = parent.predicate("fhir:"+parentType+'.'+name);
10523    }
10524    composeBackboneElement(t, "packaging", name, element, index);
10525    if (element.hasType())
10526      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10527    if (element.hasQuantity())
10528      composeQuantity(t, "MedicationKnowledge", "quantity", element.getQuantity(), -1);
10529  }
10530
10531  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element, int index) {
10532    if (element == null) 
10533      return;
10534    Complex t;
10535    if (Utilities.noString(parentType))
10536      t = parent;
10537    else {
10538      t = parent.predicate("fhir:"+parentType+'.'+name);
10539    }
10540    composeBackboneElement(t, "drugCharacteristic", name, element, index);
10541    if (element.hasType())
10542      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10543    if (element.hasValue())
10544      composeType(t, "MedicationKnowledge", "value", element.getValue(), -1);
10545  }
10546
10547  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element, int index) {
10548    if (element == null) 
10549      return;
10550    Complex t;
10551    if (Utilities.noString(parentType))
10552      t = parent;
10553    else {
10554      t = parent.predicate("fhir:"+parentType+'.'+name);
10555    }
10556    composeBackboneElement(t, "regulatory", name, element, index);
10557    if (element.hasRegulatoryAuthority())
10558      composeReference(t, "MedicationKnowledge", "regulatoryAuthority", element.getRegulatoryAuthority(), -1);
10559    for (int i = 0; i < element.getSubstitution().size(); i++)
10560      composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(t, "MedicationKnowledge", "substitution", element.getSubstitution().get(i), i);
10561    for (int i = 0; i < element.getSchedule().size(); i++)
10562      composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(t, "MedicationKnowledge", "schedule", element.getSchedule().get(i), i);
10563    if (element.hasMaxDispense())
10564      composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(t, "MedicationKnowledge", "maxDispense", element.getMaxDispense(), -1);
10565  }
10566
10567  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element, int index) {
10568    if (element == null) 
10569      return;
10570    Complex t;
10571    if (Utilities.noString(parentType))
10572      t = parent;
10573    else {
10574      t = parent.predicate("fhir:"+parentType+'.'+name);
10575    }
10576    composeBackboneElement(t, "substitution", name, element, index);
10577    if (element.hasType())
10578      composeCodeableConcept(t, "MedicationKnowledge", "type", element.getType(), -1);
10579    if (element.hasAllowedElement())
10580      composeBoolean(t, "MedicationKnowledge", "allowed", element.getAllowedElement(), -1);
10581  }
10582
10583  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element, int index) {
10584    if (element == null) 
10585      return;
10586    Complex t;
10587    if (Utilities.noString(parentType))
10588      t = parent;
10589    else {
10590      t = parent.predicate("fhir:"+parentType+'.'+name);
10591    }
10592    composeBackboneElement(t, "schedule", name, element, index);
10593    if (element.hasSchedule())
10594      composeCodeableConcept(t, "MedicationKnowledge", "schedule", element.getSchedule(), -1);
10595  }
10596
10597  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element, int index) {
10598    if (element == null) 
10599      return;
10600    Complex t;
10601    if (Utilities.noString(parentType))
10602      t = parent;
10603    else {
10604      t = parent.predicate("fhir:"+parentType+'.'+name);
10605    }
10606    composeBackboneElement(t, "maxDispense", name, element, index);
10607    if (element.hasQuantity())
10608      composeQuantity(t, "MedicationKnowledge", "quantity", element.getQuantity(), -1);
10609    if (element.hasPeriod())
10610      composeDuration(t, "MedicationKnowledge", "period", element.getPeriod(), -1);
10611  }
10612
10613  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponent(Complex parent, String parentType, String name, MedicationKnowledge.MedicationKnowledgeKineticsComponent element, int index) {
10614    if (element == null) 
10615      return;
10616    Complex t;
10617    if (Utilities.noString(parentType))
10618      t = parent;
10619    else {
10620      t = parent.predicate("fhir:"+parentType+'.'+name);
10621    }
10622    composeBackboneElement(t, "kinetics", name, element, index);
10623    for (int i = 0; i < element.getAreaUnderCurve().size(); i++)
10624      composeQuantity(t, "MedicationKnowledge", "areaUnderCurve", element.getAreaUnderCurve().get(i), i);
10625    for (int i = 0; i < element.getLethalDose50().size(); i++)
10626      composeQuantity(t, "MedicationKnowledge", "lethalDose50", element.getLethalDose50().get(i), i);
10627    if (element.hasHalfLifePeriod())
10628      composeDuration(t, "MedicationKnowledge", "halfLifePeriod", element.getHalfLifePeriod(), -1);
10629  }
10630
10631  protected void composeMedicationRequest(Complex parent, String parentType, String name, MedicationRequest element, int index) {
10632    if (element == null) 
10633      return;
10634    Complex t;
10635    if (Utilities.noString(parentType))
10636      t = parent;
10637    else {
10638      t = parent.predicate("fhir:"+parentType+'.'+name);
10639    }
10640    composeDomainResource(t, "MedicationRequest", name, element, index);
10641    for (int i = 0; i < element.getIdentifier().size(); i++)
10642      composeIdentifier(t, "MedicationRequest", "identifier", element.getIdentifier().get(i), i);
10643    if (element.hasStatusElement())
10644      composeEnum(t, "MedicationRequest", "status", element.getStatusElement(), -1);
10645    if (element.hasStatusReason())
10646      composeCodeableConcept(t, "MedicationRequest", "statusReason", element.getStatusReason(), -1);
10647    if (element.hasIntentElement())
10648      composeEnum(t, "MedicationRequest", "intent", element.getIntentElement(), -1);
10649    for (int i = 0; i < element.getCategory().size(); i++)
10650      composeCodeableConcept(t, "MedicationRequest", "category", element.getCategory().get(i), i);
10651    if (element.hasPriorityElement())
10652      composeEnum(t, "MedicationRequest", "priority", element.getPriorityElement(), -1);
10653    if (element.hasDoNotPerformElement())
10654      composeBoolean(t, "MedicationRequest", "doNotPerform", element.getDoNotPerformElement(), -1);
10655    if (element.hasReported())
10656      composeType(t, "MedicationRequest", "reported", element.getReported(), -1);
10657    if (element.hasMedication())
10658      composeType(t, "MedicationRequest", "medication", element.getMedication(), -1);
10659    if (element.hasSubject())
10660      composeReference(t, "MedicationRequest", "subject", element.getSubject(), -1);
10661    if (element.hasEncounter())
10662      composeReference(t, "MedicationRequest", "encounter", element.getEncounter(), -1);
10663    for (int i = 0; i < element.getSupportingInformation().size(); i++)
10664      composeReference(t, "MedicationRequest", "supportingInformation", element.getSupportingInformation().get(i), i);
10665    if (element.hasAuthoredOnElement())
10666      composeDateTime(t, "MedicationRequest", "authoredOn", element.getAuthoredOnElement(), -1);
10667    if (element.hasRequester())
10668      composeReference(t, "MedicationRequest", "requester", element.getRequester(), -1);
10669    if (element.hasPerformer())
10670      composeReference(t, "MedicationRequest", "performer", element.getPerformer(), -1);
10671    if (element.hasPerformerType())
10672      composeCodeableConcept(t, "MedicationRequest", "performerType", element.getPerformerType(), -1);
10673    if (element.hasRecorder())
10674      composeReference(t, "MedicationRequest", "recorder", element.getRecorder(), -1);
10675    for (int i = 0; i < element.getReasonCode().size(); i++)
10676      composeCodeableConcept(t, "MedicationRequest", "reasonCode", element.getReasonCode().get(i), i);
10677    for (int i = 0; i < element.getReasonReference().size(); i++)
10678      composeReference(t, "MedicationRequest", "reasonReference", element.getReasonReference().get(i), i);
10679    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
10680      composeCanonical(t, "MedicationRequest", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
10681    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
10682      composeUri(t, "MedicationRequest", "instantiatesUri", element.getInstantiatesUri().get(i), i);
10683    for (int i = 0; i < element.getBasedOn().size(); i++)
10684      composeReference(t, "MedicationRequest", "basedOn", element.getBasedOn().get(i), i);
10685    if (element.hasGroupIdentifier())
10686      composeIdentifier(t, "MedicationRequest", "groupIdentifier", element.getGroupIdentifier(), -1);
10687    if (element.hasCourseOfTherapyType())
10688      composeCodeableConcept(t, "MedicationRequest", "courseOfTherapyType", element.getCourseOfTherapyType(), -1);
10689    for (int i = 0; i < element.getInsurance().size(); i++)
10690      composeReference(t, "MedicationRequest", "insurance", element.getInsurance().get(i), i);
10691    for (int i = 0; i < element.getNote().size(); i++)
10692      composeAnnotation(t, "MedicationRequest", "note", element.getNote().get(i), i);
10693    for (int i = 0; i < element.getDosageInstruction().size(); i++)
10694      composeDosage(t, "MedicationRequest", "dosageInstruction", element.getDosageInstruction().get(i), i);
10695    if (element.hasDispenseRequest())
10696      composeMedicationRequestMedicationRequestDispenseRequestComponent(t, "MedicationRequest", "dispenseRequest", element.getDispenseRequest(), -1);
10697    if (element.hasSubstitution())
10698      composeMedicationRequestMedicationRequestSubstitutionComponent(t, "MedicationRequest", "substitution", element.getSubstitution(), -1);
10699    if (element.hasPriorPrescription())
10700      composeReference(t, "MedicationRequest", "priorPrescription", element.getPriorPrescription(), -1);
10701    for (int i = 0; i < element.getDetectedIssue().size(); i++)
10702      composeReference(t, "MedicationRequest", "detectedIssue", element.getDetectedIssue().get(i), i);
10703    for (int i = 0; i < element.getEventHistory().size(); i++)
10704      composeReference(t, "MedicationRequest", "eventHistory", element.getEventHistory().get(i), i);
10705  }
10706
10707  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(Complex parent, String parentType, String name, MedicationRequest.MedicationRequestDispenseRequestComponent element, int index) {
10708    if (element == null) 
10709      return;
10710    Complex t;
10711    if (Utilities.noString(parentType))
10712      t = parent;
10713    else {
10714      t = parent.predicate("fhir:"+parentType+'.'+name);
10715    }
10716    composeBackboneElement(t, "dispenseRequest", name, element, index);
10717    if (element.hasInitialFill())
10718      composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(t, "MedicationRequest", "initialFill", element.getInitialFill(), -1);
10719    if (element.hasDispenseInterval())
10720      composeDuration(t, "MedicationRequest", "dispenseInterval", element.getDispenseInterval(), -1);
10721    if (element.hasValidityPeriod())
10722      composePeriod(t, "MedicationRequest", "validityPeriod", element.getValidityPeriod(), -1);
10723    if (element.hasNumberOfRepeatsAllowedElement())
10724      composeUnsignedInt(t, "MedicationRequest", "numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement(), -1);
10725    if (element.hasQuantity())
10726      composeQuantity(t, "MedicationRequest", "quantity", element.getQuantity(), -1);
10727    if (element.hasExpectedSupplyDuration())
10728      composeDuration(t, "MedicationRequest", "expectedSupplyDuration", element.getExpectedSupplyDuration(), -1);
10729    if (element.hasPerformer())
10730      composeReference(t, "MedicationRequest", "performer", element.getPerformer(), -1);
10731  }
10732
10733  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(Complex parent, String parentType, String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element, int index) {
10734    if (element == null) 
10735      return;
10736    Complex t;
10737    if (Utilities.noString(parentType))
10738      t = parent;
10739    else {
10740      t = parent.predicate("fhir:"+parentType+'.'+name);
10741    }
10742    composeBackboneElement(t, "initialFill", name, element, index);
10743    if (element.hasQuantity())
10744      composeQuantity(t, "MedicationRequest", "quantity", element.getQuantity(), -1);
10745    if (element.hasDuration())
10746      composeDuration(t, "MedicationRequest", "duration", element.getDuration(), -1);
10747  }
10748
10749  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(Complex parent, String parentType, String name, MedicationRequest.MedicationRequestSubstitutionComponent element, int index) {
10750    if (element == null) 
10751      return;
10752    Complex t;
10753    if (Utilities.noString(parentType))
10754      t = parent;
10755    else {
10756      t = parent.predicate("fhir:"+parentType+'.'+name);
10757    }
10758    composeBackboneElement(t, "substitution", name, element, index);
10759    if (element.hasAllowed())
10760      composeType(t, "MedicationRequest", "allowed", element.getAllowed(), -1);
10761    if (element.hasReason())
10762      composeCodeableConcept(t, "MedicationRequest", "reason", element.getReason(), -1);
10763  }
10764
10765  protected void composeMedicationStatement(Complex parent, String parentType, String name, MedicationStatement element, int index) {
10766    if (element == null) 
10767      return;
10768    Complex t;
10769    if (Utilities.noString(parentType))
10770      t = parent;
10771    else {
10772      t = parent.predicate("fhir:"+parentType+'.'+name);
10773    }
10774    composeDomainResource(t, "MedicationStatement", name, element, index);
10775    for (int i = 0; i < element.getIdentifier().size(); i++)
10776      composeIdentifier(t, "MedicationStatement", "identifier", element.getIdentifier().get(i), i);
10777    for (int i = 0; i < element.getBasedOn().size(); i++)
10778      composeReference(t, "MedicationStatement", "basedOn", element.getBasedOn().get(i), i);
10779    for (int i = 0; i < element.getPartOf().size(); i++)
10780      composeReference(t, "MedicationStatement", "partOf", element.getPartOf().get(i), i);
10781    if (element.hasStatusElement())
10782      composeEnum(t, "MedicationStatement", "status", element.getStatusElement(), -1);
10783    for (int i = 0; i < element.getStatusReason().size(); i++)
10784      composeCodeableConcept(t, "MedicationStatement", "statusReason", element.getStatusReason().get(i), i);
10785    if (element.hasCategory())
10786      composeCodeableConcept(t, "MedicationStatement", "category", element.getCategory(), -1);
10787    if (element.hasMedication())
10788      composeType(t, "MedicationStatement", "medication", element.getMedication(), -1);
10789    if (element.hasSubject())
10790      composeReference(t, "MedicationStatement", "subject", element.getSubject(), -1);
10791    if (element.hasContext())
10792      composeReference(t, "MedicationStatement", "context", element.getContext(), -1);
10793    if (element.hasEffective())
10794      composeType(t, "MedicationStatement", "effective", element.getEffective(), -1);
10795    if (element.hasDateAssertedElement())
10796      composeDateTime(t, "MedicationStatement", "dateAsserted", element.getDateAssertedElement(), -1);
10797    if (element.hasInformationSource())
10798      composeReference(t, "MedicationStatement", "informationSource", element.getInformationSource(), -1);
10799    for (int i = 0; i < element.getDerivedFrom().size(); i++)
10800      composeReference(t, "MedicationStatement", "derivedFrom", element.getDerivedFrom().get(i), i);
10801    for (int i = 0; i < element.getReasonCode().size(); i++)
10802      composeCodeableConcept(t, "MedicationStatement", "reasonCode", element.getReasonCode().get(i), i);
10803    for (int i = 0; i < element.getReasonReference().size(); i++)
10804      composeReference(t, "MedicationStatement", "reasonReference", element.getReasonReference().get(i), i);
10805    for (int i = 0; i < element.getNote().size(); i++)
10806      composeAnnotation(t, "MedicationStatement", "note", element.getNote().get(i), i);
10807    for (int i = 0; i < element.getDosage().size(); i++)
10808      composeDosage(t, "MedicationStatement", "dosage", element.getDosage().get(i), i);
10809  }
10810
10811  protected void composeMedicinalProduct(Complex parent, String parentType, String name, MedicinalProduct element, int index) {
10812    if (element == null) 
10813      return;
10814    Complex t;
10815    if (Utilities.noString(parentType))
10816      t = parent;
10817    else {
10818      t = parent.predicate("fhir:"+parentType+'.'+name);
10819    }
10820    composeDomainResource(t, "MedicinalProduct", name, element, index);
10821    for (int i = 0; i < element.getIdentifier().size(); i++)
10822      composeIdentifier(t, "MedicinalProduct", "identifier", element.getIdentifier().get(i), i);
10823    if (element.hasType())
10824      composeCodeableConcept(t, "MedicinalProduct", "type", element.getType(), -1);
10825    if (element.hasDomain())
10826      composeCoding(t, "MedicinalProduct", "domain", element.getDomain(), -1);
10827    if (element.hasCombinedPharmaceuticalDoseForm())
10828      composeCodeableConcept(t, "MedicinalProduct", "combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm(), -1);
10829    if (element.hasLegalStatusOfSupply())
10830      composeCodeableConcept(t, "MedicinalProduct", "legalStatusOfSupply", element.getLegalStatusOfSupply(), -1);
10831    if (element.hasAdditionalMonitoringIndicator())
10832      composeCodeableConcept(t, "MedicinalProduct", "additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator(), -1);
10833    for (int i = 0; i < element.getSpecialMeasures().size(); i++)
10834      composeString(t, "MedicinalProduct", "specialMeasures", element.getSpecialMeasures().get(i), i);
10835    if (element.hasPaediatricUseIndicator())
10836      composeCodeableConcept(t, "MedicinalProduct", "paediatricUseIndicator", element.getPaediatricUseIndicator(), -1);
10837    for (int i = 0; i < element.getProductClassification().size(); i++)
10838      composeCodeableConcept(t, "MedicinalProduct", "productClassification", element.getProductClassification().get(i), i);
10839    for (int i = 0; i < element.getMarketingStatus().size(); i++)
10840      composeMarketingStatus(t, "MedicinalProduct", "marketingStatus", element.getMarketingStatus().get(i), i);
10841    for (int i = 0; i < element.getPharmaceuticalProduct().size(); i++)
10842      composeReference(t, "MedicinalProduct", "pharmaceuticalProduct", element.getPharmaceuticalProduct().get(i), i);
10843    for (int i = 0; i < element.getPackagedMedicinalProduct().size(); i++)
10844      composeReference(t, "MedicinalProduct", "packagedMedicinalProduct", element.getPackagedMedicinalProduct().get(i), i);
10845    for (int i = 0; i < element.getAttachedDocument().size(); i++)
10846      composeReference(t, "MedicinalProduct", "attachedDocument", element.getAttachedDocument().get(i), i);
10847    for (int i = 0; i < element.getMasterFile().size(); i++)
10848      composeReference(t, "MedicinalProduct", "masterFile", element.getMasterFile().get(i), i);
10849    for (int i = 0; i < element.getContact().size(); i++)
10850      composeReference(t, "MedicinalProduct", "contact", element.getContact().get(i), i);
10851    for (int i = 0; i < element.getClinicalTrial().size(); i++)
10852      composeReference(t, "MedicinalProduct", "clinicalTrial", element.getClinicalTrial().get(i), i);
10853    for (int i = 0; i < element.getName().size(); i++)
10854      composeMedicinalProductMedicinalProductNameComponent(t, "MedicinalProduct", "name", element.getName().get(i), i);
10855    for (int i = 0; i < element.getCrossReference().size(); i++)
10856      composeIdentifier(t, "MedicinalProduct", "crossReference", element.getCrossReference().get(i), i);
10857    for (int i = 0; i < element.getManufacturingBusinessOperation().size(); i++)
10858      composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(t, "MedicinalProduct", "manufacturingBusinessOperation", element.getManufacturingBusinessOperation().get(i), i);
10859    for (int i = 0; i < element.getSpecialDesignation().size(); i++)
10860      composeMedicinalProductMedicinalProductSpecialDesignationComponent(t, "MedicinalProduct", "specialDesignation", element.getSpecialDesignation().get(i), i);
10861  }
10862
10863  protected void composeMedicinalProductMedicinalProductNameComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameComponent element, int index) {
10864    if (element == null) 
10865      return;
10866    Complex t;
10867    if (Utilities.noString(parentType))
10868      t = parent;
10869    else {
10870      t = parent.predicate("fhir:"+parentType+'.'+name);
10871    }
10872    composeBackboneElement(t, "name", name, element, index);
10873    if (element.hasProductNameElement())
10874      composeString(t, "MedicinalProduct", "productName", element.getProductNameElement(), -1);
10875    for (int i = 0; i < element.getNamePart().size(); i++)
10876      composeMedicinalProductMedicinalProductNameNamePartComponent(t, "MedicinalProduct", "namePart", element.getNamePart().get(i), i);
10877    for (int i = 0; i < element.getCountryLanguage().size(); i++)
10878      composeMedicinalProductMedicinalProductNameCountryLanguageComponent(t, "MedicinalProduct", "countryLanguage", element.getCountryLanguage().get(i), i);
10879  }
10880
10881  protected void composeMedicinalProductMedicinalProductNameNamePartComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameNamePartComponent element, int index) {
10882    if (element == null) 
10883      return;
10884    Complex t;
10885    if (Utilities.noString(parentType))
10886      t = parent;
10887    else {
10888      t = parent.predicate("fhir:"+parentType+'.'+name);
10889    }
10890    composeBackboneElement(t, "namePart", name, element, index);
10891    if (element.hasPartElement())
10892      composeString(t, "MedicinalProduct", "part", element.getPartElement(), -1);
10893    if (element.hasType())
10894      composeCoding(t, "MedicinalProduct", "type", element.getType(), -1);
10895  }
10896
10897  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductNameCountryLanguageComponent element, int index) {
10898    if (element == null) 
10899      return;
10900    Complex t;
10901    if (Utilities.noString(parentType))
10902      t = parent;
10903    else {
10904      t = parent.predicate("fhir:"+parentType+'.'+name);
10905    }
10906    composeBackboneElement(t, "countryLanguage", name, element, index);
10907    if (element.hasCountry())
10908      composeCodeableConcept(t, "MedicinalProduct", "country", element.getCountry(), -1);
10909    if (element.hasJurisdiction())
10910      composeCodeableConcept(t, "MedicinalProduct", "jurisdiction", element.getJurisdiction(), -1);
10911    if (element.hasLanguage())
10912      composeCodeableConcept(t, "MedicinalProduct", "language", element.getLanguage(), -1);
10913  }
10914
10915  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element, int index) {
10916    if (element == null) 
10917      return;
10918    Complex t;
10919    if (Utilities.noString(parentType))
10920      t = parent;
10921    else {
10922      t = parent.predicate("fhir:"+parentType+'.'+name);
10923    }
10924    composeBackboneElement(t, "manufacturingBusinessOperation", name, element, index);
10925    if (element.hasOperationType())
10926      composeCodeableConcept(t, "MedicinalProduct", "operationType", element.getOperationType(), -1);
10927    if (element.hasAuthorisationReferenceNumber())
10928      composeIdentifier(t, "MedicinalProduct", "authorisationReferenceNumber", element.getAuthorisationReferenceNumber(), -1);
10929    if (element.hasEffectiveDateElement())
10930      composeDateTime(t, "MedicinalProduct", "effectiveDate", element.getEffectiveDateElement(), -1);
10931    if (element.hasConfidentialityIndicator())
10932      composeCodeableConcept(t, "MedicinalProduct", "confidentialityIndicator", element.getConfidentialityIndicator(), -1);
10933    for (int i = 0; i < element.getManufacturer().size(); i++)
10934      composeReference(t, "MedicinalProduct", "manufacturer", element.getManufacturer().get(i), i);
10935    if (element.hasRegulator())
10936      composeReference(t, "MedicinalProduct", "regulator", element.getRegulator(), -1);
10937  }
10938
10939  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponent(Complex parent, String parentType, String name, MedicinalProduct.MedicinalProductSpecialDesignationComponent element, int index) {
10940    if (element == null) 
10941      return;
10942    Complex t;
10943    if (Utilities.noString(parentType))
10944      t = parent;
10945    else {
10946      t = parent.predicate("fhir:"+parentType+'.'+name);
10947    }
10948    composeBackboneElement(t, "specialDesignation", name, element, index);
10949    for (int i = 0; i < element.getIdentifier().size(); i++)
10950      composeIdentifier(t, "MedicinalProduct", "identifier", element.getIdentifier().get(i), i);
10951    if (element.hasType())
10952      composeCodeableConcept(t, "MedicinalProduct", "type", element.getType(), -1);
10953    if (element.hasIntendedUse())
10954      composeCodeableConcept(t, "MedicinalProduct", "intendedUse", element.getIntendedUse(), -1);
10955    if (element.hasIndication())
10956      composeType(t, "MedicinalProduct", "indication", element.getIndication(), -1);
10957    if (element.hasStatus())
10958      composeCodeableConcept(t, "MedicinalProduct", "status", element.getStatus(), -1);
10959    if (element.hasDateElement())
10960      composeDateTime(t, "MedicinalProduct", "date", element.getDateElement(), -1);
10961    if (element.hasSpecies())
10962      composeCodeableConcept(t, "MedicinalProduct", "species", element.getSpecies(), -1);
10963  }
10964
10965  protected void composeMedicinalProductAuthorization(Complex parent, String parentType, String name, MedicinalProductAuthorization element, int index) {
10966    if (element == null) 
10967      return;
10968    Complex t;
10969    if (Utilities.noString(parentType))
10970      t = parent;
10971    else {
10972      t = parent.predicate("fhir:"+parentType+'.'+name);
10973    }
10974    composeDomainResource(t, "MedicinalProductAuthorization", name, element, index);
10975    for (int i = 0; i < element.getIdentifier().size(); i++)
10976      composeIdentifier(t, "MedicinalProductAuthorization", "identifier", element.getIdentifier().get(i), i);
10977    if (element.hasSubject())
10978      composeReference(t, "MedicinalProductAuthorization", "subject", element.getSubject(), -1);
10979    for (int i = 0; i < element.getCountry().size(); i++)
10980      composeCodeableConcept(t, "MedicinalProductAuthorization", "country", element.getCountry().get(i), i);
10981    for (int i = 0; i < element.getJurisdiction().size(); i++)
10982      composeCodeableConcept(t, "MedicinalProductAuthorization", "jurisdiction", element.getJurisdiction().get(i), i);
10983    if (element.hasStatus())
10984      composeCodeableConcept(t, "MedicinalProductAuthorization", "status", element.getStatus(), -1);
10985    if (element.hasStatusDateElement())
10986      composeDateTime(t, "MedicinalProductAuthorization", "statusDate", element.getStatusDateElement(), -1);
10987    if (element.hasRestoreDateElement())
10988      composeDateTime(t, "MedicinalProductAuthorization", "restoreDate", element.getRestoreDateElement(), -1);
10989    if (element.hasValidityPeriod())
10990      composePeriod(t, "MedicinalProductAuthorization", "validityPeriod", element.getValidityPeriod(), -1);
10991    if (element.hasDataExclusivityPeriod())
10992      composePeriod(t, "MedicinalProductAuthorization", "dataExclusivityPeriod", element.getDataExclusivityPeriod(), -1);
10993    if (element.hasDateOfFirstAuthorizationElement())
10994      composeDateTime(t, "MedicinalProductAuthorization", "dateOfFirstAuthorization", element.getDateOfFirstAuthorizationElement(), -1);
10995    if (element.hasInternationalBirthDateElement())
10996      composeDateTime(t, "MedicinalProductAuthorization", "internationalBirthDate", element.getInternationalBirthDateElement(), -1);
10997    if (element.hasLegalBasis())
10998      composeCodeableConcept(t, "MedicinalProductAuthorization", "legalBasis", element.getLegalBasis(), -1);
10999    for (int i = 0; i < element.getJurisdictionalAuthorization().size(); i++)
11000      composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(t, "MedicinalProductAuthorization", "jurisdictionalAuthorization", element.getJurisdictionalAuthorization().get(i), i);
11001    if (element.hasHolder())
11002      composeReference(t, "MedicinalProductAuthorization", "holder", element.getHolder(), -1);
11003    if (element.hasRegulator())
11004      composeReference(t, "MedicinalProductAuthorization", "regulator", element.getRegulator(), -1);
11005    if (element.hasProcedure())
11006      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(t, "MedicinalProductAuthorization", "procedure", element.getProcedure(), -1);
11007  }
11008
11009  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(Complex parent, String parentType, String name, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element, int index) {
11010    if (element == null) 
11011      return;
11012    Complex t;
11013    if (Utilities.noString(parentType))
11014      t = parent;
11015    else {
11016      t = parent.predicate("fhir:"+parentType+'.'+name);
11017    }
11018    composeBackboneElement(t, "jurisdictionalAuthorization", name, element, index);
11019    for (int i = 0; i < element.getIdentifier().size(); i++)
11020      composeIdentifier(t, "MedicinalProductAuthorization", "identifier", element.getIdentifier().get(i), i);
11021    if (element.hasCountry())
11022      composeCodeableConcept(t, "MedicinalProductAuthorization", "country", element.getCountry(), -1);
11023    for (int i = 0; i < element.getJurisdiction().size(); i++)
11024      composeCodeableConcept(t, "MedicinalProductAuthorization", "jurisdiction", element.getJurisdiction().get(i), i);
11025    if (element.hasLegalStatusOfSupply())
11026      composeCodeableConcept(t, "MedicinalProductAuthorization", "legalStatusOfSupply", element.getLegalStatusOfSupply(), -1);
11027    if (element.hasValidityPeriod())
11028      composePeriod(t, "MedicinalProductAuthorization", "validityPeriod", element.getValidityPeriod(), -1);
11029  }
11030
11031  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(Complex parent, String parentType, String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element, int index) {
11032    if (element == null) 
11033      return;
11034    Complex t;
11035    if (Utilities.noString(parentType))
11036      t = parent;
11037    else {
11038      t = parent.predicate("fhir:"+parentType+'.'+name);
11039    }
11040    composeBackboneElement(t, "procedure", name, element, index);
11041    if (element.hasIdentifier())
11042      composeIdentifier(t, "MedicinalProductAuthorization", "identifier", element.getIdentifier(), -1);
11043    if (element.hasType())
11044      composeCodeableConcept(t, "MedicinalProductAuthorization", "type", element.getType(), -1);
11045    if (element.hasDate())
11046      composeType(t, "MedicinalProductAuthorization", "date", element.getDate(), -1);
11047    for (int i = 0; i < element.getApplication().size(); i++)
11048      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(t, "MedicinalProductAuthorization", "application", element.getApplication().get(i), i);
11049  }
11050
11051  protected void composeMedicinalProductContraindication(Complex parent, String parentType, String name, MedicinalProductContraindication element, int index) {
11052    if (element == null) 
11053      return;
11054    Complex t;
11055    if (Utilities.noString(parentType))
11056      t = parent;
11057    else {
11058      t = parent.predicate("fhir:"+parentType+'.'+name);
11059    }
11060    composeDomainResource(t, "MedicinalProductContraindication", name, element, index);
11061    for (int i = 0; i < element.getSubject().size(); i++)
11062      composeReference(t, "MedicinalProductContraindication", "subject", element.getSubject().get(i), i);
11063    if (element.hasDisease())
11064      composeCodeableConcept(t, "MedicinalProductContraindication", "disease", element.getDisease(), -1);
11065    if (element.hasDiseaseStatus())
11066      composeCodeableConcept(t, "MedicinalProductContraindication", "diseaseStatus", element.getDiseaseStatus(), -1);
11067    for (int i = 0; i < element.getComorbidity().size(); i++)
11068      composeCodeableConcept(t, "MedicinalProductContraindication", "comorbidity", element.getComorbidity().get(i), i);
11069    for (int i = 0; i < element.getTherapeuticIndication().size(); i++)
11070      composeReference(t, "MedicinalProductContraindication", "therapeuticIndication", element.getTherapeuticIndication().get(i), i);
11071    for (int i = 0; i < element.getOtherTherapy().size(); i++)
11072      composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(t, "MedicinalProductContraindication", "otherTherapy", element.getOtherTherapy().get(i), i);
11073    for (int i = 0; i < element.getPopulation().size(); i++)
11074      composePopulation(t, "MedicinalProductContraindication", "population", element.getPopulation().get(i), i);
11075  }
11076
11077  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(Complex parent, String parentType, String name, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element, int index) {
11078    if (element == null) 
11079      return;
11080    Complex t;
11081    if (Utilities.noString(parentType))
11082      t = parent;
11083    else {
11084      t = parent.predicate("fhir:"+parentType+'.'+name);
11085    }
11086    composeBackboneElement(t, "otherTherapy", name, element, index);
11087    if (element.hasTherapyRelationshipType())
11088      composeCodeableConcept(t, "MedicinalProductContraindication", "therapyRelationshipType", element.getTherapyRelationshipType(), -1);
11089    if (element.hasMedication())
11090      composeType(t, "MedicinalProductContraindication", "medication", element.getMedication(), -1);
11091  }
11092
11093  protected void composeMedicinalProductIndication(Complex parent, String parentType, String name, MedicinalProductIndication element, int index) {
11094    if (element == null) 
11095      return;
11096    Complex t;
11097    if (Utilities.noString(parentType))
11098      t = parent;
11099    else {
11100      t = parent.predicate("fhir:"+parentType+'.'+name);
11101    }
11102    composeDomainResource(t, "MedicinalProductIndication", name, element, index);
11103    for (int i = 0; i < element.getSubject().size(); i++)
11104      composeReference(t, "MedicinalProductIndication", "subject", element.getSubject().get(i), i);
11105    if (element.hasDiseaseSymptomProcedure())
11106      composeCodeableConcept(t, "MedicinalProductIndication", "diseaseSymptomProcedure", element.getDiseaseSymptomProcedure(), -1);
11107    if (element.hasDiseaseStatus())
11108      composeCodeableConcept(t, "MedicinalProductIndication", "diseaseStatus", element.getDiseaseStatus(), -1);
11109    for (int i = 0; i < element.getComorbidity().size(); i++)
11110      composeCodeableConcept(t, "MedicinalProductIndication", "comorbidity", element.getComorbidity().get(i), i);
11111    if (element.hasIntendedEffect())
11112      composeCodeableConcept(t, "MedicinalProductIndication", "intendedEffect", element.getIntendedEffect(), -1);
11113    if (element.hasDuration())
11114      composeQuantity(t, "MedicinalProductIndication", "duration", element.getDuration(), -1);
11115    for (int i = 0; i < element.getOtherTherapy().size(); i++)
11116      composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(t, "MedicinalProductIndication", "otherTherapy", element.getOtherTherapy().get(i), i);
11117    for (int i = 0; i < element.getUndesirableEffect().size(); i++)
11118      composeReference(t, "MedicinalProductIndication", "undesirableEffect", element.getUndesirableEffect().get(i), i);
11119    for (int i = 0; i < element.getPopulation().size(); i++)
11120      composePopulation(t, "MedicinalProductIndication", "population", element.getPopulation().get(i), i);
11121  }
11122
11123  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(Complex parent, String parentType, String name, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element, int index) {
11124    if (element == null) 
11125      return;
11126    Complex t;
11127    if (Utilities.noString(parentType))
11128      t = parent;
11129    else {
11130      t = parent.predicate("fhir:"+parentType+'.'+name);
11131    }
11132    composeBackboneElement(t, "otherTherapy", name, element, index);
11133    if (element.hasTherapyRelationshipType())
11134      composeCodeableConcept(t, "MedicinalProductIndication", "therapyRelationshipType", element.getTherapyRelationshipType(), -1);
11135    if (element.hasMedication())
11136      composeType(t, "MedicinalProductIndication", "medication", element.getMedication(), -1);
11137  }
11138
11139  protected void composeMedicinalProductIngredient(Complex parent, String parentType, String name, MedicinalProductIngredient element, int index) {
11140    if (element == null) 
11141      return;
11142    Complex t;
11143    if (Utilities.noString(parentType))
11144      t = parent;
11145    else {
11146      t = parent.predicate("fhir:"+parentType+'.'+name);
11147    }
11148    composeDomainResource(t, "MedicinalProductIngredient", name, element, index);
11149    if (element.hasIdentifier())
11150      composeIdentifier(t, "MedicinalProductIngredient", "identifier", element.getIdentifier(), -1);
11151    if (element.hasRole())
11152      composeCodeableConcept(t, "MedicinalProductIngredient", "role", element.getRole(), -1);
11153    if (element.hasAllergenicIndicatorElement())
11154      composeBoolean(t, "MedicinalProductIngredient", "allergenicIndicator", element.getAllergenicIndicatorElement(), -1);
11155    for (int i = 0; i < element.getManufacturer().size(); i++)
11156      composeReference(t, "MedicinalProductIngredient", "manufacturer", element.getManufacturer().get(i), i);
11157    for (int i = 0; i < element.getSpecifiedSubstance().size(); i++)
11158      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(t, "MedicinalProductIngredient", "specifiedSubstance", element.getSpecifiedSubstance().get(i), i);
11159    if (element.hasSubstance())
11160      composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(t, "MedicinalProductIngredient", "substance", element.getSubstance(), -1);
11161  }
11162
11163  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element, int index) {
11164    if (element == null) 
11165      return;
11166    Complex t;
11167    if (Utilities.noString(parentType))
11168      t = parent;
11169    else {
11170      t = parent.predicate("fhir:"+parentType+'.'+name);
11171    }
11172    composeBackboneElement(t, "specifiedSubstance", name, element, index);
11173    if (element.hasCode())
11174      composeCodeableConcept(t, "MedicinalProductIngredient", "code", element.getCode(), -1);
11175    if (element.hasGroup())
11176      composeCodeableConcept(t, "MedicinalProductIngredient", "group", element.getGroup(), -1);
11177    if (element.hasConfidentiality())
11178      composeCodeableConcept(t, "MedicinalProductIngredient", "confidentiality", element.getConfidentiality(), -1);
11179    for (int i = 0; i < element.getStrength().size(); i++)
11180      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(t, "MedicinalProductIngredient", "strength", element.getStrength().get(i), i);
11181  }
11182
11183  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element, int index) {
11184    if (element == null) 
11185      return;
11186    Complex t;
11187    if (Utilities.noString(parentType))
11188      t = parent;
11189    else {
11190      t = parent.predicate("fhir:"+parentType+'.'+name);
11191    }
11192    composeBackboneElement(t, "strength", name, element, index);
11193    if (element.hasPresentation())
11194      composeRatio(t, "MedicinalProductIngredient", "presentation", element.getPresentation(), -1);
11195    if (element.hasPresentationLowLimit())
11196      composeRatio(t, "MedicinalProductIngredient", "presentationLowLimit", element.getPresentationLowLimit(), -1);
11197    if (element.hasConcentration())
11198      composeRatio(t, "MedicinalProductIngredient", "concentration", element.getConcentration(), -1);
11199    if (element.hasConcentrationLowLimit())
11200      composeRatio(t, "MedicinalProductIngredient", "concentrationLowLimit", element.getConcentrationLowLimit(), -1);
11201    if (element.hasMeasurementPointElement())
11202      composeString(t, "MedicinalProductIngredient", "measurementPoint", element.getMeasurementPointElement(), -1);
11203    for (int i = 0; i < element.getCountry().size(); i++)
11204      composeCodeableConcept(t, "MedicinalProductIngredient", "country", element.getCountry().get(i), i);
11205    for (int i = 0; i < element.getReferenceStrength().size(); i++)
11206      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(t, "MedicinalProductIngredient", "referenceStrength", element.getReferenceStrength().get(i), i);
11207  }
11208
11209  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element, int index) {
11210    if (element == null) 
11211      return;
11212    Complex t;
11213    if (Utilities.noString(parentType))
11214      t = parent;
11215    else {
11216      t = parent.predicate("fhir:"+parentType+'.'+name);
11217    }
11218    composeBackboneElement(t, "referenceStrength", name, element, index);
11219    if (element.hasSubstance())
11220      composeCodeableConcept(t, "MedicinalProductIngredient", "substance", element.getSubstance(), -1);
11221    if (element.hasStrength())
11222      composeRatio(t, "MedicinalProductIngredient", "strength", element.getStrength(), -1);
11223    if (element.hasStrengthLowLimit())
11224      composeRatio(t, "MedicinalProductIngredient", "strengthLowLimit", element.getStrengthLowLimit(), -1);
11225    if (element.hasMeasurementPointElement())
11226      composeString(t, "MedicinalProductIngredient", "measurementPoint", element.getMeasurementPointElement(), -1);
11227    for (int i = 0; i < element.getCountry().size(); i++)
11228      composeCodeableConcept(t, "MedicinalProductIngredient", "country", element.getCountry().get(i), i);
11229  }
11230
11231  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(Complex parent, String parentType, String name, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element, int index) {
11232    if (element == null) 
11233      return;
11234    Complex t;
11235    if (Utilities.noString(parentType))
11236      t = parent;
11237    else {
11238      t = parent.predicate("fhir:"+parentType+'.'+name);
11239    }
11240    composeBackboneElement(t, "substance", name, element, index);
11241    if (element.hasCode())
11242      composeCodeableConcept(t, "MedicinalProductIngredient", "code", element.getCode(), -1);
11243    for (int i = 0; i < element.getStrength().size(); i++)
11244      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(t, "MedicinalProductIngredient", "strength", element.getStrength().get(i), i);
11245  }
11246
11247  protected void composeMedicinalProductInteraction(Complex parent, String parentType, String name, MedicinalProductInteraction element, int index) {
11248    if (element == null) 
11249      return;
11250    Complex t;
11251    if (Utilities.noString(parentType))
11252      t = parent;
11253    else {
11254      t = parent.predicate("fhir:"+parentType+'.'+name);
11255    }
11256    composeDomainResource(t, "MedicinalProductInteraction", name, element, index);
11257    for (int i = 0; i < element.getSubject().size(); i++)
11258      composeReference(t, "MedicinalProductInteraction", "subject", element.getSubject().get(i), i);
11259    if (element.hasDescriptionElement())
11260      composeString(t, "MedicinalProductInteraction", "description", element.getDescriptionElement(), -1);
11261    for (int i = 0; i < element.getInteractant().size(); i++)
11262      composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(t, "MedicinalProductInteraction", "interactant", element.getInteractant().get(i), i);
11263    if (element.hasType())
11264      composeCodeableConcept(t, "MedicinalProductInteraction", "type", element.getType(), -1);
11265    if (element.hasEffect())
11266      composeCodeableConcept(t, "MedicinalProductInteraction", "effect", element.getEffect(), -1);
11267    if (element.hasIncidence())
11268      composeCodeableConcept(t, "MedicinalProductInteraction", "incidence", element.getIncidence(), -1);
11269    if (element.hasManagement())
11270      composeCodeableConcept(t, "MedicinalProductInteraction", "management", element.getManagement(), -1);
11271  }
11272
11273  protected void composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(Complex parent, String parentType, String name, MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent element, int index) {
11274    if (element == null) 
11275      return;
11276    Complex t;
11277    if (Utilities.noString(parentType))
11278      t = parent;
11279    else {
11280      t = parent.predicate("fhir:"+parentType+'.'+name);
11281    }
11282    composeBackboneElement(t, "interactant", name, element, index);
11283    if (element.hasItem())
11284      composeType(t, "MedicinalProductInteraction", "item", element.getItem(), -1);
11285  }
11286
11287  protected void composeMedicinalProductManufactured(Complex parent, String parentType, String name, MedicinalProductManufactured element, int index) {
11288    if (element == null) 
11289      return;
11290    Complex t;
11291    if (Utilities.noString(parentType))
11292      t = parent;
11293    else {
11294      t = parent.predicate("fhir:"+parentType+'.'+name);
11295    }
11296    composeDomainResource(t, "MedicinalProductManufactured", name, element, index);
11297    if (element.hasManufacturedDoseForm())
11298      composeCodeableConcept(t, "MedicinalProductManufactured", "manufacturedDoseForm", element.getManufacturedDoseForm(), -1);
11299    if (element.hasUnitOfPresentation())
11300      composeCodeableConcept(t, "MedicinalProductManufactured", "unitOfPresentation", element.getUnitOfPresentation(), -1);
11301    if (element.hasQuantity())
11302      composeQuantity(t, "MedicinalProductManufactured", "quantity", element.getQuantity(), -1);
11303    for (int i = 0; i < element.getManufacturer().size(); i++)
11304      composeReference(t, "MedicinalProductManufactured", "manufacturer", element.getManufacturer().get(i), i);
11305    for (int i = 0; i < element.getIngredient().size(); i++)
11306      composeReference(t, "MedicinalProductManufactured", "ingredient", element.getIngredient().get(i), i);
11307    if (element.hasPhysicalCharacteristics())
11308      composeProdCharacteristic(t, "MedicinalProductManufactured", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
11309    for (int i = 0; i < element.getOtherCharacteristics().size(); i++)
11310      composeCodeableConcept(t, "MedicinalProductManufactured", "otherCharacteristics", element.getOtherCharacteristics().get(i), i);
11311  }
11312
11313  protected void composeMedicinalProductPackaged(Complex parent, String parentType, String name, MedicinalProductPackaged element, int index) {
11314    if (element == null) 
11315      return;
11316    Complex t;
11317    if (Utilities.noString(parentType))
11318      t = parent;
11319    else {
11320      t = parent.predicate("fhir:"+parentType+'.'+name);
11321    }
11322    composeDomainResource(t, "MedicinalProductPackaged", name, element, index);
11323    for (int i = 0; i < element.getIdentifier().size(); i++)
11324      composeIdentifier(t, "MedicinalProductPackaged", "identifier", element.getIdentifier().get(i), i);
11325    for (int i = 0; i < element.getSubject().size(); i++)
11326      composeReference(t, "MedicinalProductPackaged", "subject", element.getSubject().get(i), i);
11327    if (element.hasDescriptionElement())
11328      composeString(t, "MedicinalProductPackaged", "description", element.getDescriptionElement(), -1);
11329    if (element.hasLegalStatusOfSupply())
11330      composeCodeableConcept(t, "MedicinalProductPackaged", "legalStatusOfSupply", element.getLegalStatusOfSupply(), -1);
11331    for (int i = 0; i < element.getMarketingStatus().size(); i++)
11332      composeMarketingStatus(t, "MedicinalProductPackaged", "marketingStatus", element.getMarketingStatus().get(i), i);
11333    if (element.hasMarketingAuthorization())
11334      composeReference(t, "MedicinalProductPackaged", "marketingAuthorization", element.getMarketingAuthorization(), -1);
11335    for (int i = 0; i < element.getManufacturer().size(); i++)
11336      composeReference(t, "MedicinalProductPackaged", "manufacturer", element.getManufacturer().get(i), i);
11337    for (int i = 0; i < element.getBatchIdentifier().size(); i++)
11338      composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(t, "MedicinalProductPackaged", "batchIdentifier", element.getBatchIdentifier().get(i), i);
11339    for (int i = 0; i < element.getPackageItem().size(); i++)
11340      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(t, "MedicinalProductPackaged", "packageItem", element.getPackageItem().get(i), i);
11341  }
11342
11343  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(Complex parent, String parentType, String name, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element, int index) {
11344    if (element == null) 
11345      return;
11346    Complex t;
11347    if (Utilities.noString(parentType))
11348      t = parent;
11349    else {
11350      t = parent.predicate("fhir:"+parentType+'.'+name);
11351    }
11352    composeBackboneElement(t, "batchIdentifier", name, element, index);
11353    if (element.hasOuterPackaging())
11354      composeIdentifier(t, "MedicinalProductPackaged", "outerPackaging", element.getOuterPackaging(), -1);
11355    if (element.hasImmediatePackaging())
11356      composeIdentifier(t, "MedicinalProductPackaged", "immediatePackaging", element.getImmediatePackaging(), -1);
11357  }
11358
11359  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(Complex parent, String parentType, String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element, int index) {
11360    if (element == null) 
11361      return;
11362    Complex t;
11363    if (Utilities.noString(parentType))
11364      t = parent;
11365    else {
11366      t = parent.predicate("fhir:"+parentType+'.'+name);
11367    }
11368    composeBackboneElement(t, "packageItem", name, element, index);
11369    for (int i = 0; i < element.getIdentifier().size(); i++)
11370      composeIdentifier(t, "MedicinalProductPackaged", "identifier", element.getIdentifier().get(i), i);
11371    if (element.hasType())
11372      composeCodeableConcept(t, "MedicinalProductPackaged", "type", element.getType(), -1);
11373    if (element.hasQuantity())
11374      composeQuantity(t, "MedicinalProductPackaged", "quantity", element.getQuantity(), -1);
11375    for (int i = 0; i < element.getMaterial().size(); i++)
11376      composeCodeableConcept(t, "MedicinalProductPackaged", "material", element.getMaterial().get(i), i);
11377    for (int i = 0; i < element.getAlternateMaterial().size(); i++)
11378      composeCodeableConcept(t, "MedicinalProductPackaged", "alternateMaterial", element.getAlternateMaterial().get(i), i);
11379    for (int i = 0; i < element.getDevice().size(); i++)
11380      composeReference(t, "MedicinalProductPackaged", "device", element.getDevice().get(i), i);
11381    for (int i = 0; i < element.getManufacturedItem().size(); i++)
11382      composeReference(t, "MedicinalProductPackaged", "manufacturedItem", element.getManufacturedItem().get(i), i);
11383    for (int i = 0; i < element.getPackageItem().size(); i++)
11384      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(t, "MedicinalProductPackaged", "packageItem", element.getPackageItem().get(i), i);
11385    if (element.hasPhysicalCharacteristics())
11386      composeProdCharacteristic(t, "MedicinalProductPackaged", "physicalCharacteristics", element.getPhysicalCharacteristics(), -1);
11387    for (int i = 0; i < element.getOtherCharacteristics().size(); i++)
11388      composeCodeableConcept(t, "MedicinalProductPackaged", "otherCharacteristics", element.getOtherCharacteristics().get(i), i);
11389    for (int i = 0; i < element.getShelfLifeStorage().size(); i++)
11390      composeProductShelfLife(t, "MedicinalProductPackaged", "shelfLifeStorage", element.getShelfLifeStorage().get(i), i);
11391    for (int i = 0; i < element.getManufacturer().size(); i++)
11392      composeReference(t, "MedicinalProductPackaged", "manufacturer", element.getManufacturer().get(i), i);
11393  }
11394
11395  protected void composeMedicinalProductPharmaceutical(Complex parent, String parentType, String name, MedicinalProductPharmaceutical element, int index) {
11396    if (element == null) 
11397      return;
11398    Complex t;
11399    if (Utilities.noString(parentType))
11400      t = parent;
11401    else {
11402      t = parent.predicate("fhir:"+parentType+'.'+name);
11403    }
11404    composeDomainResource(t, "MedicinalProductPharmaceutical", name, element, index);
11405    for (int i = 0; i < element.getIdentifier().size(); i++)
11406      composeIdentifier(t, "MedicinalProductPharmaceutical", "identifier", element.getIdentifier().get(i), i);
11407    if (element.hasAdministrableDoseForm())
11408      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "administrableDoseForm", element.getAdministrableDoseForm(), -1);
11409    if (element.hasUnitOfPresentation())
11410      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "unitOfPresentation", element.getUnitOfPresentation(), -1);
11411    for (int i = 0; i < element.getIngredient().size(); i++)
11412      composeReference(t, "MedicinalProductPharmaceutical", "ingredient", element.getIngredient().get(i), i);
11413    for (int i = 0; i < element.getDevice().size(); i++)
11414      composeReference(t, "MedicinalProductPharmaceutical", "device", element.getDevice().get(i), i);
11415    for (int i = 0; i < element.getCharacteristics().size(); i++)
11416      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(t, "MedicinalProductPharmaceutical", "characteristics", element.getCharacteristics().get(i), i);
11417    for (int i = 0; i < element.getRouteOfAdministration().size(); i++)
11418      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(t, "MedicinalProductPharmaceutical", "routeOfAdministration", element.getRouteOfAdministration().get(i), i);
11419  }
11420
11421  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element, int index) {
11422    if (element == null) 
11423      return;
11424    Complex t;
11425    if (Utilities.noString(parentType))
11426      t = parent;
11427    else {
11428      t = parent.predicate("fhir:"+parentType+'.'+name);
11429    }
11430    composeBackboneElement(t, "characteristics", name, element, index);
11431    if (element.hasCode())
11432      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "code", element.getCode(), -1);
11433    if (element.hasStatus())
11434      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "status", element.getStatus(), -1);
11435  }
11436
11437  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element, int index) {
11438    if (element == null) 
11439      return;
11440    Complex t;
11441    if (Utilities.noString(parentType))
11442      t = parent;
11443    else {
11444      t = parent.predicate("fhir:"+parentType+'.'+name);
11445    }
11446    composeBackboneElement(t, "routeOfAdministration", name, element, index);
11447    if (element.hasCode())
11448      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "code", element.getCode(), -1);
11449    if (element.hasFirstDose())
11450      composeQuantity(t, "MedicinalProductPharmaceutical", "firstDose", element.getFirstDose(), -1);
11451    if (element.hasMaxSingleDose())
11452      composeQuantity(t, "MedicinalProductPharmaceutical", "maxSingleDose", element.getMaxSingleDose(), -1);
11453    if (element.hasMaxDosePerDay())
11454      composeQuantity(t, "MedicinalProductPharmaceutical", "maxDosePerDay", element.getMaxDosePerDay(), -1);
11455    if (element.hasMaxDosePerTreatmentPeriod())
11456      composeRatio(t, "MedicinalProductPharmaceutical", "maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod(), -1);
11457    if (element.hasMaxTreatmentPeriod())
11458      composeDuration(t, "MedicinalProductPharmaceutical", "maxTreatmentPeriod", element.getMaxTreatmentPeriod(), -1);
11459    for (int i = 0; i < element.getTargetSpecies().size(); i++)
11460      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(t, "MedicinalProductPharmaceutical", "targetSpecies", element.getTargetSpecies().get(i), i);
11461  }
11462
11463  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element, int index) {
11464    if (element == null) 
11465      return;
11466    Complex t;
11467    if (Utilities.noString(parentType))
11468      t = parent;
11469    else {
11470      t = parent.predicate("fhir:"+parentType+'.'+name);
11471    }
11472    composeBackboneElement(t, "targetSpecies", name, element, index);
11473    if (element.hasCode())
11474      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "code", element.getCode(), -1);
11475    for (int i = 0; i < element.getWithdrawalPeriod().size(); i++)
11476      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(t, "MedicinalProductPharmaceutical", "withdrawalPeriod", element.getWithdrawalPeriod().get(i), i);
11477  }
11478
11479  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(Complex parent, String parentType, String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element, int index) {
11480    if (element == null) 
11481      return;
11482    Complex t;
11483    if (Utilities.noString(parentType))
11484      t = parent;
11485    else {
11486      t = parent.predicate("fhir:"+parentType+'.'+name);
11487    }
11488    composeBackboneElement(t, "withdrawalPeriod", name, element, index);
11489    if (element.hasTissue())
11490      composeCodeableConcept(t, "MedicinalProductPharmaceutical", "tissue", element.getTissue(), -1);
11491    if (element.hasValue())
11492      composeQuantity(t, "MedicinalProductPharmaceutical", "value", element.getValue(), -1);
11493    if (element.hasSupportingInformationElement())
11494      composeString(t, "MedicinalProductPharmaceutical", "supportingInformation", element.getSupportingInformationElement(), -1);
11495  }
11496
11497  protected void composeMedicinalProductUndesirableEffect(Complex parent, String parentType, String name, MedicinalProductUndesirableEffect element, int index) {
11498    if (element == null) 
11499      return;
11500    Complex t;
11501    if (Utilities.noString(parentType))
11502      t = parent;
11503    else {
11504      t = parent.predicate("fhir:"+parentType+'.'+name);
11505    }
11506    composeDomainResource(t, "MedicinalProductUndesirableEffect", name, element, index);
11507    for (int i = 0; i < element.getSubject().size(); i++)
11508      composeReference(t, "MedicinalProductUndesirableEffect", "subject", element.getSubject().get(i), i);
11509    if (element.hasSymptomConditionEffect())
11510      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "symptomConditionEffect", element.getSymptomConditionEffect(), -1);
11511    if (element.hasClassification())
11512      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "classification", element.getClassification(), -1);
11513    if (element.hasFrequencyOfOccurrence())
11514      composeCodeableConcept(t, "MedicinalProductUndesirableEffect", "frequencyOfOccurrence", element.getFrequencyOfOccurrence(), -1);
11515    for (int i = 0; i < element.getPopulation().size(); i++)
11516      composePopulation(t, "MedicinalProductUndesirableEffect", "population", element.getPopulation().get(i), i);
11517  }
11518
11519  protected void composeMessageDefinition(Complex parent, String parentType, String name, MessageDefinition element, int index) {
11520    if (element == null) 
11521      return;
11522    Complex t;
11523    if (Utilities.noString(parentType))
11524      t = parent;
11525    else {
11526      t = parent.predicate("fhir:"+parentType+'.'+name);
11527    }
11528    composeDomainResource(t, "MessageDefinition", name, element, index);
11529    if (element.hasUrlElement())
11530      composeUri(t, "MessageDefinition", "url", element.getUrlElement(), -1);
11531    for (int i = 0; i < element.getIdentifier().size(); i++)
11532      composeIdentifier(t, "MessageDefinition", "identifier", element.getIdentifier().get(i), i);
11533    if (element.hasVersionElement())
11534      composeString(t, "MessageDefinition", "version", element.getVersionElement(), -1);
11535    if (element.hasNameElement())
11536      composeString(t, "MessageDefinition", "name", element.getNameElement(), -1);
11537    if (element.hasTitleElement())
11538      composeString(t, "MessageDefinition", "title", element.getTitleElement(), -1);
11539    for (int i = 0; i < element.getReplaces().size(); i++)
11540      composeCanonical(t, "MessageDefinition", "replaces", element.getReplaces().get(i), i);
11541    if (element.hasStatusElement())
11542      composeEnum(t, "MessageDefinition", "status", element.getStatusElement(), -1);
11543    if (element.hasExperimentalElement())
11544      composeBoolean(t, "MessageDefinition", "experimental", element.getExperimentalElement(), -1);
11545    if (element.hasDateElement())
11546      composeDateTime(t, "MessageDefinition", "date", element.getDateElement(), -1);
11547    if (element.hasPublisherElement())
11548      composeString(t, "MessageDefinition", "publisher", element.getPublisherElement(), -1);
11549    for (int i = 0; i < element.getContact().size(); i++)
11550      composeContactDetail(t, "MessageDefinition", "contact", element.getContact().get(i), i);
11551    if (element.hasDescriptionElement())
11552      composeMarkdown(t, "MessageDefinition", "description", element.getDescriptionElement(), -1);
11553    for (int i = 0; i < element.getUseContext().size(); i++)
11554      composeUsageContext(t, "MessageDefinition", "useContext", element.getUseContext().get(i), i);
11555    for (int i = 0; i < element.getJurisdiction().size(); i++)
11556      composeCodeableConcept(t, "MessageDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
11557    if (element.hasPurposeElement())
11558      composeMarkdown(t, "MessageDefinition", "purpose", element.getPurposeElement(), -1);
11559    if (element.hasCopyrightElement())
11560      composeMarkdown(t, "MessageDefinition", "copyright", element.getCopyrightElement(), -1);
11561    if (element.hasBaseElement())
11562      composeCanonical(t, "MessageDefinition", "base", element.getBaseElement(), -1);
11563    for (int i = 0; i < element.getParent().size(); i++)
11564      composeCanonical(t, "MessageDefinition", "parent", element.getParent().get(i), i);
11565    if (element.hasEvent())
11566      composeType(t, "MessageDefinition", "event", element.getEvent(), -1);
11567    if (element.hasCategoryElement())
11568      composeEnum(t, "MessageDefinition", "category", element.getCategoryElement(), -1);
11569    for (int i = 0; i < element.getFocus().size(); i++)
11570      composeMessageDefinitionMessageDefinitionFocusComponent(t, "MessageDefinition", "focus", element.getFocus().get(i), i);
11571    if (element.hasResponseRequiredElement())
11572      composeEnum(t, "MessageDefinition", "responseRequired", element.getResponseRequiredElement(), -1);
11573    for (int i = 0; i < element.getAllowedResponse().size(); i++)
11574      composeMessageDefinitionMessageDefinitionAllowedResponseComponent(t, "MessageDefinition", "allowedResponse", element.getAllowedResponse().get(i), i);
11575    for (int i = 0; i < element.getGraph().size(); i++)
11576      composeCanonical(t, "MessageDefinition", "graph", element.getGraph().get(i), i);
11577  }
11578
11579  protected void composeMessageDefinitionMessageDefinitionFocusComponent(Complex parent, String parentType, String name, MessageDefinition.MessageDefinitionFocusComponent element, int index) {
11580    if (element == null) 
11581      return;
11582    Complex t;
11583    if (Utilities.noString(parentType))
11584      t = parent;
11585    else {
11586      t = parent.predicate("fhir:"+parentType+'.'+name);
11587    }
11588    composeBackboneElement(t, "focus", name, element, index);
11589    if (element.hasCodeElement())
11590      composeCode(t, "MessageDefinition", "code", element.getCodeElement(), -1);
11591    if (element.hasProfileElement())
11592      composeCanonical(t, "MessageDefinition", "profile", element.getProfileElement(), -1);
11593    if (element.hasMinElement())
11594      composeUnsignedInt(t, "MessageDefinition", "min", element.getMinElement(), -1);
11595    if (element.hasMaxElement())
11596      composeString(t, "MessageDefinition", "max", element.getMaxElement(), -1);
11597  }
11598
11599  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(Complex parent, String parentType, String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element, int index) {
11600    if (element == null) 
11601      return;
11602    Complex t;
11603    if (Utilities.noString(parentType))
11604      t = parent;
11605    else {
11606      t = parent.predicate("fhir:"+parentType+'.'+name);
11607    }
11608    composeBackboneElement(t, "allowedResponse", name, element, index);
11609    if (element.hasMessageElement())
11610      composeCanonical(t, "MessageDefinition", "message", element.getMessageElement(), -1);
11611    if (element.hasSituationElement())
11612      composeMarkdown(t, "MessageDefinition", "situation", element.getSituationElement(), -1);
11613  }
11614
11615  protected void composeMessageHeader(Complex parent, String parentType, String name, MessageHeader element, int index) {
11616    if (element == null) 
11617      return;
11618    Complex t;
11619    if (Utilities.noString(parentType))
11620      t = parent;
11621    else {
11622      t = parent.predicate("fhir:"+parentType+'.'+name);
11623    }
11624    composeDomainResource(t, "MessageHeader", name, element, index);
11625    if (element.hasEvent())
11626      composeType(t, "MessageHeader", "event", element.getEvent(), -1);
11627    for (int i = 0; i < element.getDestination().size(); i++)
11628      composeMessageHeaderMessageDestinationComponent(t, "MessageHeader", "destination", element.getDestination().get(i), i);
11629    if (element.hasSender())
11630      composeReference(t, "MessageHeader", "sender", element.getSender(), -1);
11631    if (element.hasEnterer())
11632      composeReference(t, "MessageHeader", "enterer", element.getEnterer(), -1);
11633    if (element.hasAuthor())
11634      composeReference(t, "MessageHeader", "author", element.getAuthor(), -1);
11635    if (element.hasSource())
11636      composeMessageHeaderMessageSourceComponent(t, "MessageHeader", "source", element.getSource(), -1);
11637    if (element.hasResponsible())
11638      composeReference(t, "MessageHeader", "responsible", element.getResponsible(), -1);
11639    if (element.hasReason())
11640      composeCodeableConcept(t, "MessageHeader", "reason", element.getReason(), -1);
11641    if (element.hasResponse())
11642      composeMessageHeaderMessageHeaderResponseComponent(t, "MessageHeader", "response", element.getResponse(), -1);
11643    for (int i = 0; i < element.getFocus().size(); i++)
11644      composeReference(t, "MessageHeader", "focus", element.getFocus().get(i), i);
11645    if (element.hasDefinitionElement())
11646      composeCanonical(t, "MessageHeader", "definition", element.getDefinitionElement(), -1);
11647  }
11648
11649  protected void composeMessageHeaderMessageDestinationComponent(Complex parent, String parentType, String name, MessageHeader.MessageDestinationComponent element, int index) {
11650    if (element == null) 
11651      return;
11652    Complex t;
11653    if (Utilities.noString(parentType))
11654      t = parent;
11655    else {
11656      t = parent.predicate("fhir:"+parentType+'.'+name);
11657    }
11658    composeBackboneElement(t, "destination", name, element, index);
11659    if (element.hasNameElement())
11660      composeString(t, "MessageHeader", "name", element.getNameElement(), -1);
11661    if (element.hasTarget())
11662      composeReference(t, "MessageHeader", "target", element.getTarget(), -1);
11663    if (element.hasEndpointElement())
11664      composeUrl(t, "MessageHeader", "endpoint", element.getEndpointElement(), -1);
11665    if (element.hasReceiver())
11666      composeReference(t, "MessageHeader", "receiver", element.getReceiver(), -1);
11667  }
11668
11669  protected void composeMessageHeaderMessageSourceComponent(Complex parent, String parentType, String name, MessageHeader.MessageSourceComponent element, int index) {
11670    if (element == null) 
11671      return;
11672    Complex t;
11673    if (Utilities.noString(parentType))
11674      t = parent;
11675    else {
11676      t = parent.predicate("fhir:"+parentType+'.'+name);
11677    }
11678    composeBackboneElement(t, "source", name, element, index);
11679    if (element.hasNameElement())
11680      composeString(t, "MessageHeader", "name", element.getNameElement(), -1);
11681    if (element.hasSoftwareElement())
11682      composeString(t, "MessageHeader", "software", element.getSoftwareElement(), -1);
11683    if (element.hasVersionElement())
11684      composeString(t, "MessageHeader", "version", element.getVersionElement(), -1);
11685    if (element.hasContact())
11686      composeContactPoint(t, "MessageHeader", "contact", element.getContact(), -1);
11687    if (element.hasEndpointElement())
11688      composeUrl(t, "MessageHeader", "endpoint", element.getEndpointElement(), -1);
11689  }
11690
11691  protected void composeMessageHeaderMessageHeaderResponseComponent(Complex parent, String parentType, String name, MessageHeader.MessageHeaderResponseComponent element, int index) {
11692    if (element == null) 
11693      return;
11694    Complex t;
11695    if (Utilities.noString(parentType))
11696      t = parent;
11697    else {
11698      t = parent.predicate("fhir:"+parentType+'.'+name);
11699    }
11700    composeBackboneElement(t, "response", name, element, index);
11701    if (element.hasIdentifierElement())
11702      composeId(t, "MessageHeader", "identifier", element.getIdentifierElement(), -1);
11703    if (element.hasCodeElement())
11704      composeEnum(t, "MessageHeader", "code", element.getCodeElement(), -1);
11705    if (element.hasDetails())
11706      composeReference(t, "MessageHeader", "details", element.getDetails(), -1);
11707  }
11708
11709  protected void composeMolecularSequence(Complex parent, String parentType, String name, MolecularSequence element, int index) {
11710    if (element == null) 
11711      return;
11712    Complex t;
11713    if (Utilities.noString(parentType))
11714      t = parent;
11715    else {
11716      t = parent.predicate("fhir:"+parentType+'.'+name);
11717    }
11718    composeDomainResource(t, "MolecularSequence", name, element, index);
11719    for (int i = 0; i < element.getIdentifier().size(); i++)
11720      composeIdentifier(t, "MolecularSequence", "identifier", element.getIdentifier().get(i), i);
11721    if (element.hasTypeElement())
11722      composeEnum(t, "MolecularSequence", "type", element.getTypeElement(), -1);
11723    if (element.hasCoordinateSystemElement())
11724      composeInteger(t, "MolecularSequence", "coordinateSystem", element.getCoordinateSystemElement(), -1);
11725    if (element.hasPatient())
11726      composeReference(t, "MolecularSequence", "patient", element.getPatient(), -1);
11727    if (element.hasSpecimen())
11728      composeReference(t, "MolecularSequence", "specimen", element.getSpecimen(), -1);
11729    if (element.hasDevice())
11730      composeReference(t, "MolecularSequence", "device", element.getDevice(), -1);
11731    if (element.hasPerformer())
11732      composeReference(t, "MolecularSequence", "performer", element.getPerformer(), -1);
11733    if (element.hasQuantity())
11734      composeQuantity(t, "MolecularSequence", "quantity", element.getQuantity(), -1);
11735    if (element.hasReferenceSeq())
11736      composeMolecularSequenceMolecularSequenceReferenceSeqComponent(t, "MolecularSequence", "referenceSeq", element.getReferenceSeq(), -1);
11737    for (int i = 0; i < element.getVariant().size(); i++)
11738      composeMolecularSequenceMolecularSequenceVariantComponent(t, "MolecularSequence", "variant", element.getVariant().get(i), i);
11739    if (element.hasObservedSeqElement())
11740      composeString(t, "MolecularSequence", "observedSeq", element.getObservedSeqElement(), -1);
11741    for (int i = 0; i < element.getQuality().size(); i++)
11742      composeMolecularSequenceMolecularSequenceQualityComponent(t, "MolecularSequence", "quality", element.getQuality().get(i), i);
11743    if (element.hasReadCoverageElement())
11744      composeInteger(t, "MolecularSequence", "readCoverage", element.getReadCoverageElement(), -1);
11745    for (int i = 0; i < element.getRepository().size(); i++)
11746      composeMolecularSequenceMolecularSequenceRepositoryComponent(t, "MolecularSequence", "repository", element.getRepository().get(i), i);
11747    for (int i = 0; i < element.getPointer().size(); i++)
11748      composeReference(t, "MolecularSequence", "pointer", element.getPointer().get(i), i);
11749    for (int i = 0; i < element.getStructureVariant().size(); i++)
11750      composeMolecularSequenceMolecularSequenceStructureVariantComponent(t, "MolecularSequence", "structureVariant", element.getStructureVariant().get(i), i);
11751  }
11752
11753  protected void composeMolecularSequenceMolecularSequenceReferenceSeqComponent(Complex parent, String parentType, String name, MolecularSequence.MolecularSequenceReferenceSeqComponent element, int index) {
11754    if (element == null) 
11755      return;
11756    Complex t;
11757    if (Utilities.noString(parentType))
11758      t = parent;
11759    else {
11760      t = parent.predicate("fhir:"+parentType+'.'+name);
11761    }
11762    composeBackboneElement(t, "referenceSeq", name, element, index);
11763    if (element.hasChromosome())
11764      composeCodeableConcept(t, "MolecularSequence", "chromosome", element.getChromosome(), -1);
11765    if (element.hasGenomeBuildElement())
11766      composeString(t, "MolecularSequence", "genomeBuild", element.getGenomeBuildElement(), -1);
11767    if (element.hasOrientationElement())
11768      composeEnum(t, "MolecularSequence", "orientation", element.getOrientationElement(), -1);
11769    if (element.hasReferenceSeqId())
11770      composeCodeableConcept(t, "MolecularSequence", "referenceSeqId", element.getReferenceSeqId(), -1);
11771    if (element.hasReferenceSeqPointer())
11772      composeReference(t, "MolecularSequence", "referenceSeqPointer", element.getReferenceSeqPointer(), -1);
11773    if (element.hasReferenceSeqStringElement())
11774      composeString(t, "MolecularSequence", "referenceSeqString", element.getReferenceSeqStringElement(), -1);
11775    if (element.hasStrandElement())
11776      composeEnum(t, "MolecularSequence", "strand", element.getStrandElement(), -1);
11777    if (element.hasWindowStartElement())
11778      composeInteger(t, "MolecularSequence", "windowStart", element.getWindowStartElement(), -1);
11779    if (element.hasWindowEndElement())
11780      composeInteger(t, "MolecularSequence", "windowEnd", element.getWindowEndElement(), -1);
11781  }
11782
11783  protected void composeMolecularSequenceMolecularSequenceVariantComponent(Complex parent, String parentType, String name, MolecularSequence.MolecularSequenceVariantComponent element, int index) {
11784    if (element == null) 
11785      return;
11786    Complex t;
11787    if (Utilities.noString(parentType))
11788      t = parent;
11789    else {
11790      t = parent.predicate("fhir:"+parentType+'.'+name);
11791    }
11792    composeBackboneElement(t, "variant", name, element, index);
11793    if (element.hasStartElement())
11794      composeInteger(t, "MolecularSequence", "start", element.getStartElement(), -1);
11795    if (element.hasEndElement())
11796      composeInteger(t, "MolecularSequence", "end", element.getEndElement(), -1);
11797    if (element.hasObservedAlleleElement())
11798      composeString(t, "MolecularSequence", "observedAllele", element.getObservedAlleleElement(), -1);
11799    if (element.hasReferenceAlleleElement())
11800      composeString(t, "MolecularSequence", "referenceAllele", element.getReferenceAlleleElement(), -1);
11801    if (element.hasCigarElement())
11802      composeString(t, "MolecularSequence", "cigar", element.getCigarElement(), -1);
11803    if (element.hasVariantPointer())
11804      composeReference(t, "MolecularSequence", "variantPointer", element.getVariantPointer(), -1);
11805  }
11806
11807  protected void composeMolecularSequenceMolecularSequenceQualityComponent(Complex parent, String parentType, String name, MolecularSequence.MolecularSequenceQualityComponent element, int index) {
11808    if (element == null) 
11809      return;
11810    Complex t;
11811    if (Utilities.noString(parentType))
11812      t = parent;
11813    else {
11814      t = parent.predicate("fhir:"+parentType+'.'+name);
11815    }
11816    composeBackboneElement(t, "quality", name, element, index);
11817    if (element.hasTypeElement())
11818      composeEnum(t, "MolecularSequence", "type", element.getTypeElement(), -1);
11819    if (element.hasStandardSequence())
11820      composeCodeableConcept(t, "MolecularSequence", "standardSequence", element.getStandardSequence(), -1);
11821    if (element.hasStartElement())
11822      composeInteger(t, "MolecularSequence", "start", element.getStartElement(), -1);
11823    if (element.hasEndElement())
11824      composeInteger(t, "MolecularSequence", "end", element.getEndElement(), -1);
11825    if (element.hasScore())
11826      composeQuantity(t, "MolecularSequence", "score", element.getScore(), -1);
11827    if (element.hasMethod())
11828      composeCodeableConcept(t, "MolecularSequence", "method", element.getMethod(), -1);
11829    if (element.hasTruthTPElement())
11830      composeDecimal(t, "MolecularSequence", "truthTP", element.getTruthTPElement(), -1);
11831    if (element.hasQueryTPElement())
11832      composeDecimal(t, "MolecularSequence", "queryTP", element.getQueryTPElement(), -1);
11833    if (element.hasTruthFNElement())
11834      composeDecimal(t, "MolecularSequence", "truthFN", element.getTruthFNElement(), -1);
11835    if (element.hasQueryFPElement())
11836      composeDecimal(t, "MolecularSequence", "queryFP", element.getQueryFPElement(), -1);
11837    if (element.hasGtFPElement())
11838      composeDecimal(t, "MolecularSequence", "gtFP", element.getGtFPElement(), -1);
11839    if (element.hasPrecisionElement())
11840      composeDecimal(t, "MolecularSequence", "precision", element.getPrecisionElement(), -1);
11841    if (element.hasRecallElement())
11842      composeDecimal(t, "MolecularSequence", "recall", element.getRecallElement(), -1);
11843    if (element.hasFScoreElement())
11844      composeDecimal(t, "MolecularSequence", "fScore", element.getFScoreElement(), -1);
11845    if (element.hasRoc())
11846      composeMolecularSequenceMolecularSequenceQualityRocComponent(t, "MolecularSequence", "roc", element.getRoc(), -1);
11847  }
11848
11849  protected void composeMolecularSequenceMolecularSequenceQualityRocComponent(Complex parent, String parentType, String name, MolecularSequence.MolecularSequenceQualityRocComponent element, int index) {
11850    if (element == null) 
11851      return;
11852    Complex t;
11853    if (Utilities.noString(parentType))
11854      t = parent;
11855    else {
11856      t = parent.predicate("fhir:"+parentType+'.'+name);
11857    }
11858    composeBackboneElement(t, "roc", name, element, index);
11859    for (int i = 0; i < element.getScore().size(); i++)
11860      composeInteger(t, "MolecularSequence", "score", element.getScore().get(i), i);
11861    for (int i = 0; i < element.getNumTP().size(); i++)
11862      composeInteger(t, "MolecularSequence", "numTP", element.getNumTP().get(i), i);
11863    for (int i = 0; i < element.getNumFP().size(); i++)
11864      composeInteger(t, "MolecularSequence", "numFP", element.getNumFP().get(i), i);
11865    for (int i = 0; i < element.getNumFN().size(); i++)
11866      composeInteger(t, "MolecularSequence", "numFN", element.getNumFN().get(i), i);
11867    for (int i = 0; i < element.getPrecision().size(); i++)
11868      composeDecimal(t, "MolecularSequence", "precision", element.getPrecision().get(i), i);
11869    for (int i = 0; i < element.getSensitivity().size(); i++)
11870      composeDecimal(t, "MolecularSequence", "sensitivity", element.getSensitivity().get(i), i);
11871    for (int i = 0; i < element.getFMeasure().size(); i++)
11872      composeDecimal(t, "MolecularSequence", "fMeasure", element.getFMeasure().get(i), i);
11873  }
11874
11875  protected void composeMolecularSequenceMolecularSequenceRepositoryComponent(Complex parent, String parentType, String name, MolecularSequence.MolecularSequenceRepositoryComponent element, int index) {
11876    if (element == null) 
11877      return;
11878    Complex t;
11879    if (Utilities.noString(parentType))
11880      t = parent;
11881    else {
11882      t = parent.predicate("fhir:"+parentType+'.'+name);
11883    }
11884    composeBackboneElement(t, "repository", name, element, index);
11885    if (element.hasTypeElement())
11886      composeEnum(t, "MolecularSequence", "type", element.getTypeElement(), -1);
11887    if (element.hasUrlElement())
11888      composeUri(t, "MolecularSequence", "url", element.getUrlElement(), -1);
11889    if (element.hasNameElement())
11890      composeString(t, "MolecularSequence", "name", element.getNameElement(), -1);
11891    if (element.hasDatasetIdElement())
11892      composeString(t, "MolecularSequence", "datasetId", element.getDatasetIdElement(), -1);
11893    if (element.hasVariantsetIdElement())
11894      composeString(t, "MolecularSequence", "variantsetId", element.getVariantsetIdElement(), -1);
11895    if (element.hasReadsetIdElement())
11896      composeString(t, "MolecularSequence", "readsetId", element.getReadsetIdElement(), -1);
11897  }
11898
11899  protected void composeMolecularSequenceMolecularSequenceStructureVariantComponent(Complex parent, String parentType, String name, MolecularSequence.MolecularSequenceStructureVariantComponent element, int index) {
11900    if (element == null) 
11901      return;
11902    Complex t;
11903    if (Utilities.noString(parentType))
11904      t = parent;
11905    else {
11906      t = parent.predicate("fhir:"+parentType+'.'+name);
11907    }
11908    composeBackboneElement(t, "structureVariant", name, element, index);
11909    if (element.hasVariantType())
11910      composeCodeableConcept(t, "MolecularSequence", "variantType", element.getVariantType(), -1);
11911    if (element.hasExactElement())
11912      composeBoolean(t, "MolecularSequence", "exact", element.getExactElement(), -1);
11913    if (element.hasLengthElement())
11914      composeInteger(t, "MolecularSequence", "length", element.getLengthElement(), -1);
11915    if (element.hasOuter())
11916      composeMolecularSequenceMolecularSequenceStructureVariantOuterComponent(t, "MolecularSequence", "outer", element.getOuter(), -1);
11917    if (element.hasInner())
11918      composeMolecularSequenceMolecularSequenceStructureVariantInnerComponent(t, "MolecularSequence", "inner", element.getInner(), -1);
11919  }
11920
11921  protected void composeMolecularSequenceMolecularSequenceStructureVariantOuterComponent(Complex parent, String parentType, String name, MolecularSequence.MolecularSequenceStructureVariantOuterComponent element, int index) {
11922    if (element == null) 
11923      return;
11924    Complex t;
11925    if (Utilities.noString(parentType))
11926      t = parent;
11927    else {
11928      t = parent.predicate("fhir:"+parentType+'.'+name);
11929    }
11930    composeBackboneElement(t, "outer", name, element, index);
11931    if (element.hasStartElement())
11932      composeInteger(t, "MolecularSequence", "start", element.getStartElement(), -1);
11933    if (element.hasEndElement())
11934      composeInteger(t, "MolecularSequence", "end", element.getEndElement(), -1);
11935  }
11936
11937  protected void composeMolecularSequenceMolecularSequenceStructureVariantInnerComponent(Complex parent, String parentType, String name, MolecularSequence.MolecularSequenceStructureVariantInnerComponent element, int index) {
11938    if (element == null) 
11939      return;
11940    Complex t;
11941    if (Utilities.noString(parentType))
11942      t = parent;
11943    else {
11944      t = parent.predicate("fhir:"+parentType+'.'+name);
11945    }
11946    composeBackboneElement(t, "inner", name, element, index);
11947    if (element.hasStartElement())
11948      composeInteger(t, "MolecularSequence", "start", element.getStartElement(), -1);
11949    if (element.hasEndElement())
11950      composeInteger(t, "MolecularSequence", "end", element.getEndElement(), -1);
11951  }
11952
11953  protected void composeNamingSystem(Complex parent, String parentType, String name, NamingSystem element, int index) {
11954    if (element == null) 
11955      return;
11956    Complex t;
11957    if (Utilities.noString(parentType))
11958      t = parent;
11959    else {
11960      t = parent.predicate("fhir:"+parentType+'.'+name);
11961    }
11962    composeDomainResource(t, "NamingSystem", name, element, index);
11963    if (element.hasNameElement())
11964      composeString(t, "NamingSystem", "name", element.getNameElement(), -1);
11965    if (element.hasStatusElement())
11966      composeEnum(t, "NamingSystem", "status", element.getStatusElement(), -1);
11967    if (element.hasKindElement())
11968      composeEnum(t, "NamingSystem", "kind", element.getKindElement(), -1);
11969    if (element.hasDateElement())
11970      composeDateTime(t, "NamingSystem", "date", element.getDateElement(), -1);
11971    if (element.hasPublisherElement())
11972      composeString(t, "NamingSystem", "publisher", element.getPublisherElement(), -1);
11973    for (int i = 0; i < element.getContact().size(); i++)
11974      composeContactDetail(t, "NamingSystem", "contact", element.getContact().get(i), i);
11975    if (element.hasResponsibleElement())
11976      composeString(t, "NamingSystem", "responsible", element.getResponsibleElement(), -1);
11977    if (element.hasType())
11978      composeCodeableConcept(t, "NamingSystem", "type", element.getType(), -1);
11979    if (element.hasDescriptionElement())
11980      composeMarkdown(t, "NamingSystem", "description", element.getDescriptionElement(), -1);
11981    for (int i = 0; i < element.getUseContext().size(); i++)
11982      composeUsageContext(t, "NamingSystem", "useContext", element.getUseContext().get(i), i);
11983    for (int i = 0; i < element.getJurisdiction().size(); i++)
11984      composeCodeableConcept(t, "NamingSystem", "jurisdiction", element.getJurisdiction().get(i), i);
11985    if (element.hasUsageElement())
11986      composeString(t, "NamingSystem", "usage", element.getUsageElement(), -1);
11987    for (int i = 0; i < element.getUniqueId().size(); i++)
11988      composeNamingSystemNamingSystemUniqueIdComponent(t, "NamingSystem", "uniqueId", element.getUniqueId().get(i), i);
11989  }
11990
11991  protected void composeNamingSystemNamingSystemUniqueIdComponent(Complex parent, String parentType, String name, NamingSystem.NamingSystemUniqueIdComponent element, int index) {
11992    if (element == null) 
11993      return;
11994    Complex t;
11995    if (Utilities.noString(parentType))
11996      t = parent;
11997    else {
11998      t = parent.predicate("fhir:"+parentType+'.'+name);
11999    }
12000    composeBackboneElement(t, "uniqueId", name, element, index);
12001    if (element.hasTypeElement())
12002      composeEnum(t, "NamingSystem", "type", element.getTypeElement(), -1);
12003    if (element.hasValueElement())
12004      composeString(t, "NamingSystem", "value", element.getValueElement(), -1);
12005    if (element.hasPreferredElement())
12006      composeBoolean(t, "NamingSystem", "preferred", element.getPreferredElement(), -1);
12007    if (element.hasCommentElement())
12008      composeString(t, "NamingSystem", "comment", element.getCommentElement(), -1);
12009    if (element.hasPeriod())
12010      composePeriod(t, "NamingSystem", "period", element.getPeriod(), -1);
12011  }
12012
12013  protected void composeNutritionOrder(Complex parent, String parentType, String name, NutritionOrder element, int index) {
12014    if (element == null) 
12015      return;
12016    Complex t;
12017    if (Utilities.noString(parentType))
12018      t = parent;
12019    else {
12020      t = parent.predicate("fhir:"+parentType+'.'+name);
12021    }
12022    composeDomainResource(t, "NutritionOrder", name, element, index);
12023    for (int i = 0; i < element.getIdentifier().size(); i++)
12024      composeIdentifier(t, "NutritionOrder", "identifier", element.getIdentifier().get(i), i);
12025    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
12026      composeCanonical(t, "NutritionOrder", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
12027    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
12028      composeUri(t, "NutritionOrder", "instantiatesUri", element.getInstantiatesUri().get(i), i);
12029    for (int i = 0; i < element.getInstantiates().size(); i++)
12030      composeUri(t, "NutritionOrder", "instantiates", element.getInstantiates().get(i), i);
12031    if (element.hasStatusElement())
12032      composeEnum(t, "NutritionOrder", "status", element.getStatusElement(), -1);
12033    if (element.hasIntentElement())
12034      composeEnum(t, "NutritionOrder", "intent", element.getIntentElement(), -1);
12035    if (element.hasPatient())
12036      composeReference(t, "NutritionOrder", "patient", element.getPatient(), -1);
12037    if (element.hasEncounter())
12038      composeReference(t, "NutritionOrder", "encounter", element.getEncounter(), -1);
12039    if (element.hasDateTimeElement())
12040      composeDateTime(t, "NutritionOrder", "dateTime", element.getDateTimeElement(), -1);
12041    if (element.hasOrderer())
12042      composeReference(t, "NutritionOrder", "orderer", element.getOrderer(), -1);
12043    for (int i = 0; i < element.getAllergyIntolerance().size(); i++)
12044      composeReference(t, "NutritionOrder", "allergyIntolerance", element.getAllergyIntolerance().get(i), i);
12045    for (int i = 0; i < element.getFoodPreferenceModifier().size(); i++)
12046      composeCodeableConcept(t, "NutritionOrder", "foodPreferenceModifier", element.getFoodPreferenceModifier().get(i), i);
12047    for (int i = 0; i < element.getExcludeFoodModifier().size(); i++)
12048      composeCodeableConcept(t, "NutritionOrder", "excludeFoodModifier", element.getExcludeFoodModifier().get(i), i);
12049    if (element.hasOralDiet())
12050      composeNutritionOrderNutritionOrderOralDietComponent(t, "NutritionOrder", "oralDiet", element.getOralDiet(), -1);
12051    for (int i = 0; i < element.getSupplement().size(); i++)
12052      composeNutritionOrderNutritionOrderSupplementComponent(t, "NutritionOrder", "supplement", element.getSupplement().get(i), i);
12053    if (element.hasEnteralFormula())
12054      composeNutritionOrderNutritionOrderEnteralFormulaComponent(t, "NutritionOrder", "enteralFormula", element.getEnteralFormula(), -1);
12055    for (int i = 0; i < element.getNote().size(); i++)
12056      composeAnnotation(t, "NutritionOrder", "note", element.getNote().get(i), i);
12057  }
12058
12059  protected void composeNutritionOrderNutritionOrderOralDietComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietComponent element, int index) {
12060    if (element == null) 
12061      return;
12062    Complex t;
12063    if (Utilities.noString(parentType))
12064      t = parent;
12065    else {
12066      t = parent.predicate("fhir:"+parentType+'.'+name);
12067    }
12068    composeBackboneElement(t, "oralDiet", name, element, index);
12069    for (int i = 0; i < element.getType().size(); i++)
12070      composeCodeableConcept(t, "NutritionOrder", "type", element.getType().get(i), i);
12071    for (int i = 0; i < element.getSchedule().size(); i++)
12072      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule().get(i), i);
12073    for (int i = 0; i < element.getNutrient().size(); i++)
12074      composeNutritionOrderNutritionOrderOralDietNutrientComponent(t, "NutritionOrder", "nutrient", element.getNutrient().get(i), i);
12075    for (int i = 0; i < element.getTexture().size(); i++)
12076      composeNutritionOrderNutritionOrderOralDietTextureComponent(t, "NutritionOrder", "texture", element.getTexture().get(i), i);
12077    for (int i = 0; i < element.getFluidConsistencyType().size(); i++)
12078      composeCodeableConcept(t, "NutritionOrder", "fluidConsistencyType", element.getFluidConsistencyType().get(i), i);
12079    if (element.hasInstructionElement())
12080      composeString(t, "NutritionOrder", "instruction", element.getInstructionElement(), -1);
12081  }
12082
12083  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element, int index) {
12084    if (element == null) 
12085      return;
12086    Complex t;
12087    if (Utilities.noString(parentType))
12088      t = parent;
12089    else {
12090      t = parent.predicate("fhir:"+parentType+'.'+name);
12091    }
12092    composeBackboneElement(t, "nutrient", name, element, index);
12093    if (element.hasModifier())
12094      composeCodeableConcept(t, "NutritionOrder", "modifier", element.getModifier(), -1);
12095    if (element.hasAmount())
12096      composeQuantity(t, "NutritionOrder", "amount", element.getAmount(), -1);
12097  }
12098
12099  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderOralDietTextureComponent element, int index) {
12100    if (element == null) 
12101      return;
12102    Complex t;
12103    if (Utilities.noString(parentType))
12104      t = parent;
12105    else {
12106      t = parent.predicate("fhir:"+parentType+'.'+name);
12107    }
12108    composeBackboneElement(t, "texture", name, element, index);
12109    if (element.hasModifier())
12110      composeCodeableConcept(t, "NutritionOrder", "modifier", element.getModifier(), -1);
12111    if (element.hasFoodType())
12112      composeCodeableConcept(t, "NutritionOrder", "foodType", element.getFoodType(), -1);
12113  }
12114
12115  protected void composeNutritionOrderNutritionOrderSupplementComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderSupplementComponent element, int index) {
12116    if (element == null) 
12117      return;
12118    Complex t;
12119    if (Utilities.noString(parentType))
12120      t = parent;
12121    else {
12122      t = parent.predicate("fhir:"+parentType+'.'+name);
12123    }
12124    composeBackboneElement(t, "supplement", name, element, index);
12125    if (element.hasType())
12126      composeCodeableConcept(t, "NutritionOrder", "type", element.getType(), -1);
12127    if (element.hasProductNameElement())
12128      composeString(t, "NutritionOrder", "productName", element.getProductNameElement(), -1);
12129    for (int i = 0; i < element.getSchedule().size(); i++)
12130      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule().get(i), i);
12131    if (element.hasQuantity())
12132      composeQuantity(t, "NutritionOrder", "quantity", element.getQuantity(), -1);
12133    if (element.hasInstructionElement())
12134      composeString(t, "NutritionOrder", "instruction", element.getInstructionElement(), -1);
12135  }
12136
12137  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element, int index) {
12138    if (element == null) 
12139      return;
12140    Complex t;
12141    if (Utilities.noString(parentType))
12142      t = parent;
12143    else {
12144      t = parent.predicate("fhir:"+parentType+'.'+name);
12145    }
12146    composeBackboneElement(t, "enteralFormula", name, element, index);
12147    if (element.hasBaseFormulaType())
12148      composeCodeableConcept(t, "NutritionOrder", "baseFormulaType", element.getBaseFormulaType(), -1);
12149    if (element.hasBaseFormulaProductNameElement())
12150      composeString(t, "NutritionOrder", "baseFormulaProductName", element.getBaseFormulaProductNameElement(), -1);
12151    if (element.hasAdditiveType())
12152      composeCodeableConcept(t, "NutritionOrder", "additiveType", element.getAdditiveType(), -1);
12153    if (element.hasAdditiveProductNameElement())
12154      composeString(t, "NutritionOrder", "additiveProductName", element.getAdditiveProductNameElement(), -1);
12155    if (element.hasCaloricDensity())
12156      composeQuantity(t, "NutritionOrder", "caloricDensity", element.getCaloricDensity(), -1);
12157    if (element.hasRouteofAdministration())
12158      composeCodeableConcept(t, "NutritionOrder", "routeofAdministration", element.getRouteofAdministration(), -1);
12159    for (int i = 0; i < element.getAdministration().size(); i++)
12160      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(t, "NutritionOrder", "administration", element.getAdministration().get(i), i);
12161    if (element.hasMaxVolumeToDeliver())
12162      composeQuantity(t, "NutritionOrder", "maxVolumeToDeliver", element.getMaxVolumeToDeliver(), -1);
12163    if (element.hasAdministrationInstructionElement())
12164      composeString(t, "NutritionOrder", "administrationInstruction", element.getAdministrationInstructionElement(), -1);
12165  }
12166
12167  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(Complex parent, String parentType, String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element, int index) {
12168    if (element == null) 
12169      return;
12170    Complex t;
12171    if (Utilities.noString(parentType))
12172      t = parent;
12173    else {
12174      t = parent.predicate("fhir:"+parentType+'.'+name);
12175    }
12176    composeBackboneElement(t, "administration", name, element, index);
12177    if (element.hasSchedule())
12178      composeTiming(t, "NutritionOrder", "schedule", element.getSchedule(), -1);
12179    if (element.hasQuantity())
12180      composeQuantity(t, "NutritionOrder", "quantity", element.getQuantity(), -1);
12181    if (element.hasRate())
12182      composeType(t, "NutritionOrder", "rate", element.getRate(), -1);
12183  }
12184
12185  protected void composeObservation(Complex parent, String parentType, String name, Observation element, int index) {
12186    if (element == null) 
12187      return;
12188    Complex t;
12189    if (Utilities.noString(parentType))
12190      t = parent;
12191    else {
12192      t = parent.predicate("fhir:"+parentType+'.'+name);
12193    }
12194    composeDomainResource(t, "Observation", name, element, index);
12195    for (int i = 0; i < element.getIdentifier().size(); i++)
12196      composeIdentifier(t, "Observation", "identifier", element.getIdentifier().get(i), i);
12197    for (int i = 0; i < element.getBasedOn().size(); i++)
12198      composeReference(t, "Observation", "basedOn", element.getBasedOn().get(i), i);
12199    for (int i = 0; i < element.getPartOf().size(); i++)
12200      composeReference(t, "Observation", "partOf", element.getPartOf().get(i), i);
12201    if (element.hasStatusElement())
12202      composeEnum(t, "Observation", "status", element.getStatusElement(), -1);
12203    for (int i = 0; i < element.getCategory().size(); i++)
12204      composeCodeableConcept(t, "Observation", "category", element.getCategory().get(i), i);
12205    if (element.hasCode())
12206      composeCodeableConcept(t, "Observation", "code", element.getCode(), -1);
12207    if (element.hasSubject())
12208      composeReference(t, "Observation", "subject", element.getSubject(), -1);
12209    for (int i = 0; i < element.getFocus().size(); i++)
12210      composeReference(t, "Observation", "focus", element.getFocus().get(i), i);
12211    if (element.hasEncounter())
12212      composeReference(t, "Observation", "encounter", element.getEncounter(), -1);
12213    if (element.hasEffective())
12214      composeType(t, "Observation", "effective", element.getEffective(), -1);
12215    if (element.hasIssuedElement())
12216      composeInstant(t, "Observation", "issued", element.getIssuedElement(), -1);
12217    for (int i = 0; i < element.getPerformer().size(); i++)
12218      composeReference(t, "Observation", "performer", element.getPerformer().get(i), i);
12219    if (element.hasValue())
12220      composeType(t, "Observation", "value", element.getValue(), -1);
12221    if (element.hasDataAbsentReason())
12222      composeCodeableConcept(t, "Observation", "dataAbsentReason", element.getDataAbsentReason(), -1);
12223    for (int i = 0; i < element.getInterpretation().size(); i++)
12224      composeCodeableConcept(t, "Observation", "interpretation", element.getInterpretation().get(i), i);
12225    for (int i = 0; i < element.getNote().size(); i++)
12226      composeAnnotation(t, "Observation", "note", element.getNote().get(i), i);
12227    if (element.hasBodySite())
12228      composeCodeableConcept(t, "Observation", "bodySite", element.getBodySite(), -1);
12229    if (element.hasMethod())
12230      composeCodeableConcept(t, "Observation", "method", element.getMethod(), -1);
12231    if (element.hasSpecimen())
12232      composeReference(t, "Observation", "specimen", element.getSpecimen(), -1);
12233    if (element.hasDevice())
12234      composeReference(t, "Observation", "device", element.getDevice(), -1);
12235    for (int i = 0; i < element.getReferenceRange().size(); i++)
12236      composeObservationObservationReferenceRangeComponent(t, "Observation", "referenceRange", element.getReferenceRange().get(i), i);
12237    for (int i = 0; i < element.getHasMember().size(); i++)
12238      composeReference(t, "Observation", "hasMember", element.getHasMember().get(i), i);
12239    for (int i = 0; i < element.getDerivedFrom().size(); i++)
12240      composeReference(t, "Observation", "derivedFrom", element.getDerivedFrom().get(i), i);
12241    for (int i = 0; i < element.getComponent().size(); i++)
12242      composeObservationObservationComponentComponent(t, "Observation", "component", element.getComponent().get(i), i);
12243  }
12244
12245  protected void composeObservationObservationReferenceRangeComponent(Complex parent, String parentType, String name, Observation.ObservationReferenceRangeComponent element, int index) {
12246    if (element == null) 
12247      return;
12248    Complex t;
12249    if (Utilities.noString(parentType))
12250      t = parent;
12251    else {
12252      t = parent.predicate("fhir:"+parentType+'.'+name);
12253    }
12254    composeBackboneElement(t, "referenceRange", name, element, index);
12255    if (element.hasLow())
12256      composeQuantity(t, "Observation", "low", element.getLow(), -1);
12257    if (element.hasHigh())
12258      composeQuantity(t, "Observation", "high", element.getHigh(), -1);
12259    if (element.hasType())
12260      composeCodeableConcept(t, "Observation", "type", element.getType(), -1);
12261    for (int i = 0; i < element.getAppliesTo().size(); i++)
12262      composeCodeableConcept(t, "Observation", "appliesTo", element.getAppliesTo().get(i), i);
12263    if (element.hasAge())
12264      composeRange(t, "Observation", "age", element.getAge(), -1);
12265    if (element.hasTextElement())
12266      composeString(t, "Observation", "text", element.getTextElement(), -1);
12267  }
12268
12269  protected void composeObservationObservationComponentComponent(Complex parent, String parentType, String name, Observation.ObservationComponentComponent element, int index) {
12270    if (element == null) 
12271      return;
12272    Complex t;
12273    if (Utilities.noString(parentType))
12274      t = parent;
12275    else {
12276      t = parent.predicate("fhir:"+parentType+'.'+name);
12277    }
12278    composeBackboneElement(t, "component", name, element, index);
12279    if (element.hasCode())
12280      composeCodeableConcept(t, "Observation", "code", element.getCode(), -1);
12281    if (element.hasValue())
12282      composeType(t, "Observation", "value", element.getValue(), -1);
12283    if (element.hasDataAbsentReason())
12284      composeCodeableConcept(t, "Observation", "dataAbsentReason", element.getDataAbsentReason(), -1);
12285    for (int i = 0; i < element.getInterpretation().size(); i++)
12286      composeCodeableConcept(t, "Observation", "interpretation", element.getInterpretation().get(i), i);
12287    for (int i = 0; i < element.getReferenceRange().size(); i++)
12288      composeObservationObservationReferenceRangeComponent(t, "Observation", "referenceRange", element.getReferenceRange().get(i), i);
12289  }
12290
12291  protected void composeObservationDefinition(Complex parent, String parentType, String name, ObservationDefinition element, int index) {
12292    if (element == null) 
12293      return;
12294    Complex t;
12295    if (Utilities.noString(parentType))
12296      t = parent;
12297    else {
12298      t = parent.predicate("fhir:"+parentType+'.'+name);
12299    }
12300    composeDomainResource(t, "ObservationDefinition", name, element, index);
12301    for (int i = 0; i < element.getCategory().size(); i++)
12302      composeCodeableConcept(t, "ObservationDefinition", "category", element.getCategory().get(i), i);
12303    if (element.hasCode())
12304      composeCodeableConcept(t, "ObservationDefinition", "code", element.getCode(), -1);
12305    for (int i = 0; i < element.getIdentifier().size(); i++)
12306      composeIdentifier(t, "ObservationDefinition", "identifier", element.getIdentifier().get(i), i);
12307    for (int i = 0; i < element.getPermittedDataType().size(); i++)
12308      composeEnum(t, "ObservationDefinition", "permittedDataType", element.getPermittedDataType().get(i), i);
12309    if (element.hasMultipleResultsAllowedElement())
12310      composeBoolean(t, "ObservationDefinition", "multipleResultsAllowed", element.getMultipleResultsAllowedElement(), -1);
12311    if (element.hasMethod())
12312      composeCodeableConcept(t, "ObservationDefinition", "method", element.getMethod(), -1);
12313    if (element.hasPreferredReportNameElement())
12314      composeString(t, "ObservationDefinition", "preferredReportName", element.getPreferredReportNameElement(), -1);
12315    if (element.hasQuantitativeDetails())
12316      composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(t, "ObservationDefinition", "quantitativeDetails", element.getQuantitativeDetails(), -1);
12317    for (int i = 0; i < element.getQualifiedInterval().size(); i++)
12318      composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(t, "ObservationDefinition", "qualifiedInterval", element.getQualifiedInterval().get(i), i);
12319    if (element.hasValidCodedValueSet())
12320      composeReference(t, "ObservationDefinition", "validCodedValueSet", element.getValidCodedValueSet(), -1);
12321    if (element.hasNormalCodedValueSet())
12322      composeReference(t, "ObservationDefinition", "normalCodedValueSet", element.getNormalCodedValueSet(), -1);
12323    if (element.hasAbnormalCodedValueSet())
12324      composeReference(t, "ObservationDefinition", "abnormalCodedValueSet", element.getAbnormalCodedValueSet(), -1);
12325    if (element.hasCriticalCodedValueSet())
12326      composeReference(t, "ObservationDefinition", "criticalCodedValueSet", element.getCriticalCodedValueSet(), -1);
12327  }
12328
12329  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(Complex parent, String parentType, String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element, int index) {
12330    if (element == null) 
12331      return;
12332    Complex t;
12333    if (Utilities.noString(parentType))
12334      t = parent;
12335    else {
12336      t = parent.predicate("fhir:"+parentType+'.'+name);
12337    }
12338    composeBackboneElement(t, "quantitativeDetails", name, element, index);
12339    if (element.hasCustomaryUnit())
12340      composeCodeableConcept(t, "ObservationDefinition", "customaryUnit", element.getCustomaryUnit(), -1);
12341    if (element.hasUnit())
12342      composeCodeableConcept(t, "ObservationDefinition", "unit", element.getUnit(), -1);
12343    if (element.hasConversionFactorElement())
12344      composeDecimal(t, "ObservationDefinition", "conversionFactor", element.getConversionFactorElement(), -1);
12345    if (element.hasDecimalPrecisionElement())
12346      composeInteger(t, "ObservationDefinition", "decimalPrecision", element.getDecimalPrecisionElement(), -1);
12347  }
12348
12349  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(Complex parent, String parentType, String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element, int index) {
12350    if (element == null) 
12351      return;
12352    Complex t;
12353    if (Utilities.noString(parentType))
12354      t = parent;
12355    else {
12356      t = parent.predicate("fhir:"+parentType+'.'+name);
12357    }
12358    composeBackboneElement(t, "qualifiedInterval", name, element, index);
12359    if (element.hasCategoryElement())
12360      composeEnum(t, "ObservationDefinition", "category", element.getCategoryElement(), -1);
12361    if (element.hasRange())
12362      composeRange(t, "ObservationDefinition", "range", element.getRange(), -1);
12363    if (element.hasContext())
12364      composeCodeableConcept(t, "ObservationDefinition", "context", element.getContext(), -1);
12365    for (int i = 0; i < element.getAppliesTo().size(); i++)
12366      composeCodeableConcept(t, "ObservationDefinition", "appliesTo", element.getAppliesTo().get(i), i);
12367    if (element.hasGenderElement())
12368      composeEnum(t, "ObservationDefinition", "gender", element.getGenderElement(), -1);
12369    if (element.hasAge())
12370      composeRange(t, "ObservationDefinition", "age", element.getAge(), -1);
12371    if (element.hasGestationalAge())
12372      composeRange(t, "ObservationDefinition", "gestationalAge", element.getGestationalAge(), -1);
12373    if (element.hasConditionElement())
12374      composeString(t, "ObservationDefinition", "condition", element.getConditionElement(), -1);
12375  }
12376
12377  protected void composeOperationDefinition(Complex parent, String parentType, String name, OperationDefinition element, int index) {
12378    if (element == null) 
12379      return;
12380    Complex t;
12381    if (Utilities.noString(parentType))
12382      t = parent;
12383    else {
12384      t = parent.predicate("fhir:"+parentType+'.'+name);
12385    }
12386    composeDomainResource(t, "OperationDefinition", name, element, index);
12387    if (element.hasUrlElement())
12388      composeUri(t, "OperationDefinition", "url", element.getUrlElement(), -1);
12389    if (element.hasVersionElement())
12390      composeString(t, "OperationDefinition", "version", element.getVersionElement(), -1);
12391    if (element.hasNameElement())
12392      composeString(t, "OperationDefinition", "name", element.getNameElement(), -1);
12393    if (element.hasTitleElement())
12394      composeString(t, "OperationDefinition", "title", element.getTitleElement(), -1);
12395    if (element.hasStatusElement())
12396      composeEnum(t, "OperationDefinition", "status", element.getStatusElement(), -1);
12397    if (element.hasKindElement())
12398      composeEnum(t, "OperationDefinition", "kind", element.getKindElement(), -1);
12399    if (element.hasExperimentalElement())
12400      composeBoolean(t, "OperationDefinition", "experimental", element.getExperimentalElement(), -1);
12401    if (element.hasDateElement())
12402      composeDateTime(t, "OperationDefinition", "date", element.getDateElement(), -1);
12403    if (element.hasPublisherElement())
12404      composeString(t, "OperationDefinition", "publisher", element.getPublisherElement(), -1);
12405    for (int i = 0; i < element.getContact().size(); i++)
12406      composeContactDetail(t, "OperationDefinition", "contact", element.getContact().get(i), i);
12407    if (element.hasDescriptionElement())
12408      composeMarkdown(t, "OperationDefinition", "description", element.getDescriptionElement(), -1);
12409    for (int i = 0; i < element.getUseContext().size(); i++)
12410      composeUsageContext(t, "OperationDefinition", "useContext", element.getUseContext().get(i), i);
12411    for (int i = 0; i < element.getJurisdiction().size(); i++)
12412      composeCodeableConcept(t, "OperationDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
12413    if (element.hasPurposeElement())
12414      composeMarkdown(t, "OperationDefinition", "purpose", element.getPurposeElement(), -1);
12415    if (element.hasAffectsStateElement())
12416      composeBoolean(t, "OperationDefinition", "affectsState", element.getAffectsStateElement(), -1);
12417    if (element.hasCodeElement())
12418      composeCode(t, "OperationDefinition", "code", element.getCodeElement(), -1);
12419    if (element.hasCommentElement())
12420      composeMarkdown(t, "OperationDefinition", "comment", element.getCommentElement(), -1);
12421    if (element.hasBaseElement())
12422      composeCanonical(t, "OperationDefinition", "base", element.getBaseElement(), -1);
12423    for (int i = 0; i < element.getResource().size(); i++)
12424      composeCode(t, "OperationDefinition", "resource", element.getResource().get(i), i);
12425    if (element.hasSystemElement())
12426      composeBoolean(t, "OperationDefinition", "system", element.getSystemElement(), -1);
12427    if (element.hasTypeElement())
12428      composeBoolean(t, "OperationDefinition", "type", element.getTypeElement(), -1);
12429    if (element.hasInstanceElement())
12430      composeBoolean(t, "OperationDefinition", "instance", element.getInstanceElement(), -1);
12431    if (element.hasInputProfileElement())
12432      composeCanonical(t, "OperationDefinition", "inputProfile", element.getInputProfileElement(), -1);
12433    if (element.hasOutputProfileElement())
12434      composeCanonical(t, "OperationDefinition", "outputProfile", element.getOutputProfileElement(), -1);
12435    for (int i = 0; i < element.getParameter().size(); i++)
12436      composeOperationDefinitionOperationDefinitionParameterComponent(t, "OperationDefinition", "parameter", element.getParameter().get(i), i);
12437    for (int i = 0; i < element.getOverload().size(); i++)
12438      composeOperationDefinitionOperationDefinitionOverloadComponent(t, "OperationDefinition", "overload", element.getOverload().get(i), i);
12439  }
12440
12441  protected void composeOperationDefinitionOperationDefinitionParameterComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionParameterComponent element, int index) {
12442    if (element == null) 
12443      return;
12444    Complex t;
12445    if (Utilities.noString(parentType))
12446      t = parent;
12447    else {
12448      t = parent.predicate("fhir:"+parentType+'.'+name);
12449    }
12450    composeBackboneElement(t, "parameter", name, element, index);
12451    if (element.hasNameElement())
12452      composeCode(t, "OperationDefinition", "name", element.getNameElement(), -1);
12453    if (element.hasUseElement())
12454      composeEnum(t, "OperationDefinition", "use", element.getUseElement(), -1);
12455    if (element.hasMinElement())
12456      composeInteger(t, "OperationDefinition", "min", element.getMinElement(), -1);
12457    if (element.hasMaxElement())
12458      composeString(t, "OperationDefinition", "max", element.getMaxElement(), -1);
12459    if (element.hasDocumentationElement())
12460      composeString(t, "OperationDefinition", "documentation", element.getDocumentationElement(), -1);
12461    if (element.hasTypeElement())
12462      composeCode(t, "OperationDefinition", "type", element.getTypeElement(), -1);
12463    for (int i = 0; i < element.getTargetProfile().size(); i++)
12464      composeCanonical(t, "OperationDefinition", "targetProfile", element.getTargetProfile().get(i), i);
12465    if (element.hasSearchTypeElement())
12466      composeEnum(t, "OperationDefinition", "searchType", element.getSearchTypeElement(), -1);
12467    if (element.hasBinding())
12468      composeOperationDefinitionOperationDefinitionParameterBindingComponent(t, "OperationDefinition", "binding", element.getBinding(), -1);
12469    for (int i = 0; i < element.getReferencedFrom().size(); i++)
12470      composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent(t, "OperationDefinition", "referencedFrom", element.getReferencedFrom().get(i), i);
12471    for (int i = 0; i < element.getPart().size(); i++)
12472      composeOperationDefinitionOperationDefinitionParameterComponent(t, "OperationDefinition", "part", element.getPart().get(i), i);
12473  }
12474
12475  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionParameterBindingComponent element, int index) {
12476    if (element == null) 
12477      return;
12478    Complex t;
12479    if (Utilities.noString(parentType))
12480      t = parent;
12481    else {
12482      t = parent.predicate("fhir:"+parentType+'.'+name);
12483    }
12484    composeBackboneElement(t, "binding", name, element, index);
12485    if (element.hasStrengthElement())
12486      composeEnum(t, "OperationDefinition", "strength", element.getStrengthElement(), -1);
12487    if (element.hasValueSetElement())
12488      composeCanonical(t, "OperationDefinition", "valueSet", element.getValueSetElement(), -1);
12489  }
12490
12491  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element, int index) {
12492    if (element == null) 
12493      return;
12494    Complex t;
12495    if (Utilities.noString(parentType))
12496      t = parent;
12497    else {
12498      t = parent.predicate("fhir:"+parentType+'.'+name);
12499    }
12500    composeBackboneElement(t, "referencedFrom", name, element, index);
12501    if (element.hasSourceElement())
12502      composeString(t, "OperationDefinition", "source", element.getSourceElement(), -1);
12503    if (element.hasSourceIdElement())
12504      composeString(t, "OperationDefinition", "sourceId", element.getSourceIdElement(), -1);
12505  }
12506
12507  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(Complex parent, String parentType, String name, OperationDefinition.OperationDefinitionOverloadComponent element, int index) {
12508    if (element == null) 
12509      return;
12510    Complex t;
12511    if (Utilities.noString(parentType))
12512      t = parent;
12513    else {
12514      t = parent.predicate("fhir:"+parentType+'.'+name);
12515    }
12516    composeBackboneElement(t, "overload", name, element, index);
12517    for (int i = 0; i < element.getParameterName().size(); i++)
12518      composeString(t, "OperationDefinition", "parameterName", element.getParameterName().get(i), i);
12519    if (element.hasCommentElement())
12520      composeString(t, "OperationDefinition", "comment", element.getCommentElement(), -1);
12521  }
12522
12523  protected void composeOperationOutcome(Complex parent, String parentType, String name, OperationOutcome element, int index) {
12524    if (element == null) 
12525      return;
12526    Complex t;
12527    if (Utilities.noString(parentType))
12528      t = parent;
12529    else {
12530      t = parent.predicate("fhir:"+parentType+'.'+name);
12531    }
12532    composeDomainResource(t, "OperationOutcome", name, element, index);
12533    for (int i = 0; i < element.getIssue().size(); i++)
12534      composeOperationOutcomeOperationOutcomeIssueComponent(t, "OperationOutcome", "issue", element.getIssue().get(i), i);
12535  }
12536
12537  protected void composeOperationOutcomeOperationOutcomeIssueComponent(Complex parent, String parentType, String name, OperationOutcome.OperationOutcomeIssueComponent element, int index) {
12538    if (element == null) 
12539      return;
12540    Complex t;
12541    if (Utilities.noString(parentType))
12542      t = parent;
12543    else {
12544      t = parent.predicate("fhir:"+parentType+'.'+name);
12545    }
12546    composeBackboneElement(t, "issue", name, element, index);
12547    if (element.hasSeverityElement())
12548      composeEnum(t, "OperationOutcome", "severity", element.getSeverityElement(), -1);
12549    if (element.hasCodeElement())
12550      composeEnum(t, "OperationOutcome", "code", element.getCodeElement(), -1);
12551    if (element.hasDetails())
12552      composeCodeableConcept(t, "OperationOutcome", "details", element.getDetails(), -1);
12553    if (element.hasDiagnosticsElement())
12554      composeString(t, "OperationOutcome", "diagnostics", element.getDiagnosticsElement(), -1);
12555    for (int i = 0; i < element.getLocation().size(); i++)
12556      composeString(t, "OperationOutcome", "location", element.getLocation().get(i), i);
12557    for (int i = 0; i < element.getExpression().size(); i++)
12558      composeString(t, "OperationOutcome", "expression", element.getExpression().get(i), i);
12559  }
12560
12561  protected void composeOrganization(Complex parent, String parentType, String name, Organization element, int index) {
12562    if (element == null) 
12563      return;
12564    Complex t;
12565    if (Utilities.noString(parentType))
12566      t = parent;
12567    else {
12568      t = parent.predicate("fhir:"+parentType+'.'+name);
12569    }
12570    composeDomainResource(t, "Organization", name, element, index);
12571    for (int i = 0; i < element.getIdentifier().size(); i++)
12572      composeIdentifier(t, "Organization", "identifier", element.getIdentifier().get(i), i);
12573    if (element.hasActiveElement())
12574      composeBoolean(t, "Organization", "active", element.getActiveElement(), -1);
12575    for (int i = 0; i < element.getType().size(); i++)
12576      composeCodeableConcept(t, "Organization", "type", element.getType().get(i), i);
12577    if (element.hasNameElement())
12578      composeString(t, "Organization", "name", element.getNameElement(), -1);
12579    for (int i = 0; i < element.getAlias().size(); i++)
12580      composeString(t, "Organization", "alias", element.getAlias().get(i), i);
12581    for (int i = 0; i < element.getTelecom().size(); i++)
12582      composeContactPoint(t, "Organization", "telecom", element.getTelecom().get(i), i);
12583    for (int i = 0; i < element.getAddress().size(); i++)
12584      composeAddress(t, "Organization", "address", element.getAddress().get(i), i);
12585    if (element.hasPartOf())
12586      composeReference(t, "Organization", "partOf", element.getPartOf(), -1);
12587    for (int i = 0; i < element.getContact().size(); i++)
12588      composeOrganizationOrganizationContactComponent(t, "Organization", "contact", element.getContact().get(i), i);
12589    for (int i = 0; i < element.getEndpoint().size(); i++)
12590      composeReference(t, "Organization", "endpoint", element.getEndpoint().get(i), i);
12591  }
12592
12593  protected void composeOrganizationOrganizationContactComponent(Complex parent, String parentType, String name, Organization.OrganizationContactComponent element, int index) {
12594    if (element == null) 
12595      return;
12596    Complex t;
12597    if (Utilities.noString(parentType))
12598      t = parent;
12599    else {
12600      t = parent.predicate("fhir:"+parentType+'.'+name);
12601    }
12602    composeBackboneElement(t, "contact", name, element, index);
12603    if (element.hasPurpose())
12604      composeCodeableConcept(t, "Organization", "purpose", element.getPurpose(), -1);
12605    if (element.hasName())
12606      composeHumanName(t, "Organization", "name", element.getName(), -1);
12607    for (int i = 0; i < element.getTelecom().size(); i++)
12608      composeContactPoint(t, "Organization", "telecom", element.getTelecom().get(i), i);
12609    if (element.hasAddress())
12610      composeAddress(t, "Organization", "address", element.getAddress(), -1);
12611  }
12612
12613  protected void composeOrganizationAffiliation(Complex parent, String parentType, String name, OrganizationAffiliation element, int index) {
12614    if (element == null) 
12615      return;
12616    Complex t;
12617    if (Utilities.noString(parentType))
12618      t = parent;
12619    else {
12620      t = parent.predicate("fhir:"+parentType+'.'+name);
12621    }
12622    composeDomainResource(t, "OrganizationAffiliation", name, element, index);
12623    for (int i = 0; i < element.getIdentifier().size(); i++)
12624      composeIdentifier(t, "OrganizationAffiliation", "identifier", element.getIdentifier().get(i), i);
12625    if (element.hasActiveElement())
12626      composeBoolean(t, "OrganizationAffiliation", "active", element.getActiveElement(), -1);
12627    if (element.hasPeriod())
12628      composePeriod(t, "OrganizationAffiliation", "period", element.getPeriod(), -1);
12629    if (element.hasOrganization())
12630      composeReference(t, "OrganizationAffiliation", "organization", element.getOrganization(), -1);
12631    if (element.hasParticipatingOrganization())
12632      composeReference(t, "OrganizationAffiliation", "participatingOrganization", element.getParticipatingOrganization(), -1);
12633    for (int i = 0; i < element.getNetwork().size(); i++)
12634      composeReference(t, "OrganizationAffiliation", "network", element.getNetwork().get(i), i);
12635    for (int i = 0; i < element.getCode().size(); i++)
12636      composeCodeableConcept(t, "OrganizationAffiliation", "code", element.getCode().get(i), i);
12637    for (int i = 0; i < element.getSpecialty().size(); i++)
12638      composeCodeableConcept(t, "OrganizationAffiliation", "specialty", element.getSpecialty().get(i), i);
12639    for (int i = 0; i < element.getLocation().size(); i++)
12640      composeReference(t, "OrganizationAffiliation", "location", element.getLocation().get(i), i);
12641    for (int i = 0; i < element.getHealthcareService().size(); i++)
12642      composeReference(t, "OrganizationAffiliation", "healthcareService", element.getHealthcareService().get(i), i);
12643    for (int i = 0; i < element.getTelecom().size(); i++)
12644      composeContactPoint(t, "OrganizationAffiliation", "telecom", element.getTelecom().get(i), i);
12645    for (int i = 0; i < element.getEndpoint().size(); i++)
12646      composeReference(t, "OrganizationAffiliation", "endpoint", element.getEndpoint().get(i), i);
12647  }
12648
12649  protected void composePatient(Complex parent, String parentType, String name, Patient element, int index) {
12650    if (element == null) 
12651      return;
12652    Complex t;
12653    if (Utilities.noString(parentType))
12654      t = parent;
12655    else {
12656      t = parent.predicate("fhir:"+parentType+'.'+name);
12657    }
12658    composeDomainResource(t, "Patient", name, element, index);
12659    for (int i = 0; i < element.getIdentifier().size(); i++)
12660      composeIdentifier(t, "Patient", "identifier", element.getIdentifier().get(i), i);
12661    if (element.hasActiveElement())
12662      composeBoolean(t, "Patient", "active", element.getActiveElement(), -1);
12663    for (int i = 0; i < element.getName().size(); i++)
12664      composeHumanName(t, "Patient", "name", element.getName().get(i), i);
12665    for (int i = 0; i < element.getTelecom().size(); i++)
12666      composeContactPoint(t, "Patient", "telecom", element.getTelecom().get(i), i);
12667    if (element.hasGenderElement())
12668      composeEnum(t, "Patient", "gender", element.getGenderElement(), -1);
12669    if (element.hasBirthDateElement())
12670      composeDate(t, "Patient", "birthDate", element.getBirthDateElement(), -1);
12671    if (element.hasDeceased())
12672      composeType(t, "Patient", "deceased", element.getDeceased(), -1);
12673    for (int i = 0; i < element.getAddress().size(); i++)
12674      composeAddress(t, "Patient", "address", element.getAddress().get(i), i);
12675    if (element.hasMaritalStatus())
12676      composeCodeableConcept(t, "Patient", "maritalStatus", element.getMaritalStatus(), -1);
12677    if (element.hasMultipleBirth())
12678      composeType(t, "Patient", "multipleBirth", element.getMultipleBirth(), -1);
12679    for (int i = 0; i < element.getPhoto().size(); i++)
12680      composeAttachment(t, "Patient", "photo", element.getPhoto().get(i), i);
12681    for (int i = 0; i < element.getContact().size(); i++)
12682      composePatientContactComponent(t, "Patient", "contact", element.getContact().get(i), i);
12683    for (int i = 0; i < element.getCommunication().size(); i++)
12684      composePatientPatientCommunicationComponent(t, "Patient", "communication", element.getCommunication().get(i), i);
12685    for (int i = 0; i < element.getGeneralPractitioner().size(); i++)
12686      composeReference(t, "Patient", "generalPractitioner", element.getGeneralPractitioner().get(i), i);
12687    if (element.hasManagingOrganization())
12688      composeReference(t, "Patient", "managingOrganization", element.getManagingOrganization(), -1);
12689    for (int i = 0; i < element.getLink().size(); i++)
12690      composePatientPatientLinkComponent(t, "Patient", "link", element.getLink().get(i), i);
12691  }
12692
12693  protected void composePatientContactComponent(Complex parent, String parentType, String name, Patient.ContactComponent element, int index) {
12694    if (element == null) 
12695      return;
12696    Complex t;
12697    if (Utilities.noString(parentType))
12698      t = parent;
12699    else {
12700      t = parent.predicate("fhir:"+parentType+'.'+name);
12701    }
12702    composeBackboneElement(t, "contact", name, element, index);
12703    for (int i = 0; i < element.getRelationship().size(); i++)
12704      composeCodeableConcept(t, "Patient", "relationship", element.getRelationship().get(i), i);
12705    if (element.hasName())
12706      composeHumanName(t, "Patient", "name", element.getName(), -1);
12707    for (int i = 0; i < element.getTelecom().size(); i++)
12708      composeContactPoint(t, "Patient", "telecom", element.getTelecom().get(i), i);
12709    if (element.hasAddress())
12710      composeAddress(t, "Patient", "address", element.getAddress(), -1);
12711    if (element.hasGenderElement())
12712      composeEnum(t, "Patient", "gender", element.getGenderElement(), -1);
12713    if (element.hasOrganization())
12714      composeReference(t, "Patient", "organization", element.getOrganization(), -1);
12715    if (element.hasPeriod())
12716      composePeriod(t, "Patient", "period", element.getPeriod(), -1);
12717  }
12718
12719  protected void composePatientPatientCommunicationComponent(Complex parent, String parentType, String name, Patient.PatientCommunicationComponent element, int index) {
12720    if (element == null) 
12721      return;
12722    Complex t;
12723    if (Utilities.noString(parentType))
12724      t = parent;
12725    else {
12726      t = parent.predicate("fhir:"+parentType+'.'+name);
12727    }
12728    composeBackboneElement(t, "communication", name, element, index);
12729    if (element.hasLanguage())
12730      composeCodeableConcept(t, "Patient", "language", element.getLanguage(), -1);
12731    if (element.hasPreferredElement())
12732      composeBoolean(t, "Patient", "preferred", element.getPreferredElement(), -1);
12733  }
12734
12735  protected void composePatientPatientLinkComponent(Complex parent, String parentType, String name, Patient.PatientLinkComponent element, int index) {
12736    if (element == null) 
12737      return;
12738    Complex t;
12739    if (Utilities.noString(parentType))
12740      t = parent;
12741    else {
12742      t = parent.predicate("fhir:"+parentType+'.'+name);
12743    }
12744    composeBackboneElement(t, "link", name, element, index);
12745    if (element.hasOther())
12746      composeReference(t, "Patient", "other", element.getOther(), -1);
12747    if (element.hasTypeElement())
12748      composeEnum(t, "Patient", "type", element.getTypeElement(), -1);
12749  }
12750
12751  protected void composePaymentNotice(Complex parent, String parentType, String name, PaymentNotice element, int index) {
12752    if (element == null) 
12753      return;
12754    Complex t;
12755    if (Utilities.noString(parentType))
12756      t = parent;
12757    else {
12758      t = parent.predicate("fhir:"+parentType+'.'+name);
12759    }
12760    composeDomainResource(t, "PaymentNotice", name, element, index);
12761    for (int i = 0; i < element.getIdentifier().size(); i++)
12762      composeIdentifier(t, "PaymentNotice", "identifier", element.getIdentifier().get(i), i);
12763    if (element.hasStatusElement())
12764      composeEnum(t, "PaymentNotice", "status", element.getStatusElement(), -1);
12765    if (element.hasRequest())
12766      composeReference(t, "PaymentNotice", "request", element.getRequest(), -1);
12767    if (element.hasResponse())
12768      composeReference(t, "PaymentNotice", "response", element.getResponse(), -1);
12769    if (element.hasCreatedElement())
12770      composeDateTime(t, "PaymentNotice", "created", element.getCreatedElement(), -1);
12771    if (element.hasProvider())
12772      composeReference(t, "PaymentNotice", "provider", element.getProvider(), -1);
12773    if (element.hasPayment())
12774      composeReference(t, "PaymentNotice", "payment", element.getPayment(), -1);
12775    if (element.hasPaymentDateElement())
12776      composeDate(t, "PaymentNotice", "paymentDate", element.getPaymentDateElement(), -1);
12777    if (element.hasPayee())
12778      composeReference(t, "PaymentNotice", "payee", element.getPayee(), -1);
12779    if (element.hasRecipient())
12780      composeReference(t, "PaymentNotice", "recipient", element.getRecipient(), -1);
12781    if (element.hasAmount())
12782      composeMoney(t, "PaymentNotice", "amount", element.getAmount(), -1);
12783    if (element.hasPaymentStatus())
12784      composeCodeableConcept(t, "PaymentNotice", "paymentStatus", element.getPaymentStatus(), -1);
12785  }
12786
12787  protected void composePaymentReconciliation(Complex parent, String parentType, String name, PaymentReconciliation element, int index) {
12788    if (element == null) 
12789      return;
12790    Complex t;
12791    if (Utilities.noString(parentType))
12792      t = parent;
12793    else {
12794      t = parent.predicate("fhir:"+parentType+'.'+name);
12795    }
12796    composeDomainResource(t, "PaymentReconciliation", name, element, index);
12797    for (int i = 0; i < element.getIdentifier().size(); i++)
12798      composeIdentifier(t, "PaymentReconciliation", "identifier", element.getIdentifier().get(i), i);
12799    if (element.hasStatusElement())
12800      composeEnum(t, "PaymentReconciliation", "status", element.getStatusElement(), -1);
12801    if (element.hasPeriod())
12802      composePeriod(t, "PaymentReconciliation", "period", element.getPeriod(), -1);
12803    if (element.hasCreatedElement())
12804      composeDateTime(t, "PaymentReconciliation", "created", element.getCreatedElement(), -1);
12805    if (element.hasPaymentIssuer())
12806      composeReference(t, "PaymentReconciliation", "paymentIssuer", element.getPaymentIssuer(), -1);
12807    if (element.hasRequest())
12808      composeReference(t, "PaymentReconciliation", "request", element.getRequest(), -1);
12809    if (element.hasRequestor())
12810      composeReference(t, "PaymentReconciliation", "requestor", element.getRequestor(), -1);
12811    if (element.hasOutcomeElement())
12812      composeEnum(t, "PaymentReconciliation", "outcome", element.getOutcomeElement(), -1);
12813    if (element.hasDispositionElement())
12814      composeString(t, "PaymentReconciliation", "disposition", element.getDispositionElement(), -1);
12815    if (element.hasPaymentDateElement())
12816      composeDate(t, "PaymentReconciliation", "paymentDate", element.getPaymentDateElement(), -1);
12817    if (element.hasPaymentAmount())
12818      composeMoney(t, "PaymentReconciliation", "paymentAmount", element.getPaymentAmount(), -1);
12819    if (element.hasPaymentIdentifier())
12820      composeIdentifier(t, "PaymentReconciliation", "paymentIdentifier", element.getPaymentIdentifier(), -1);
12821    for (int i = 0; i < element.getDetail().size(); i++)
12822      composePaymentReconciliationDetailsComponent(t, "PaymentReconciliation", "detail", element.getDetail().get(i), i);
12823    if (element.hasFormCode())
12824      composeCodeableConcept(t, "PaymentReconciliation", "formCode", element.getFormCode(), -1);
12825    for (int i = 0; i < element.getProcessNote().size(); i++)
12826      composePaymentReconciliationNotesComponent(t, "PaymentReconciliation", "processNote", element.getProcessNote().get(i), i);
12827  }
12828
12829  protected void composePaymentReconciliationDetailsComponent(Complex parent, String parentType, String name, PaymentReconciliation.DetailsComponent element, int index) {
12830    if (element == null) 
12831      return;
12832    Complex t;
12833    if (Utilities.noString(parentType))
12834      t = parent;
12835    else {
12836      t = parent.predicate("fhir:"+parentType+'.'+name);
12837    }
12838    composeBackboneElement(t, "detail", name, element, index);
12839    if (element.hasIdentifier())
12840      composeIdentifier(t, "PaymentReconciliation", "identifier", element.getIdentifier(), -1);
12841    if (element.hasPredecessor())
12842      composeIdentifier(t, "PaymentReconciliation", "predecessor", element.getPredecessor(), -1);
12843    if (element.hasType())
12844      composeCodeableConcept(t, "PaymentReconciliation", "type", element.getType(), -1);
12845    if (element.hasRequest())
12846      composeReference(t, "PaymentReconciliation", "request", element.getRequest(), -1);
12847    if (element.hasSubmitter())
12848      composeReference(t, "PaymentReconciliation", "submitter", element.getSubmitter(), -1);
12849    if (element.hasResponse())
12850      composeReference(t, "PaymentReconciliation", "response", element.getResponse(), -1);
12851    if (element.hasDateElement())
12852      composeDate(t, "PaymentReconciliation", "date", element.getDateElement(), -1);
12853    if (element.hasResponsible())
12854      composeReference(t, "PaymentReconciliation", "responsible", element.getResponsible(), -1);
12855    if (element.hasPayee())
12856      composeReference(t, "PaymentReconciliation", "payee", element.getPayee(), -1);
12857    if (element.hasAmount())
12858      composeMoney(t, "PaymentReconciliation", "amount", element.getAmount(), -1);
12859  }
12860
12861  protected void composePaymentReconciliationNotesComponent(Complex parent, String parentType, String name, PaymentReconciliation.NotesComponent element, int index) {
12862    if (element == null) 
12863      return;
12864    Complex t;
12865    if (Utilities.noString(parentType))
12866      t = parent;
12867    else {
12868      t = parent.predicate("fhir:"+parentType+'.'+name);
12869    }
12870    composeBackboneElement(t, "processNote", name, element, index);
12871    if (element.hasTypeElement())
12872      composeEnum(t, "PaymentReconciliation", "type", element.getTypeElement(), -1);
12873    if (element.hasTextElement())
12874      composeString(t, "PaymentReconciliation", "text", element.getTextElement(), -1);
12875  }
12876
12877  protected void composePerson(Complex parent, String parentType, String name, Person element, int index) {
12878    if (element == null) 
12879      return;
12880    Complex t;
12881    if (Utilities.noString(parentType))
12882      t = parent;
12883    else {
12884      t = parent.predicate("fhir:"+parentType+'.'+name);
12885    }
12886    composeDomainResource(t, "Person", name, element, index);
12887    for (int i = 0; i < element.getIdentifier().size(); i++)
12888      composeIdentifier(t, "Person", "identifier", element.getIdentifier().get(i), i);
12889    for (int i = 0; i < element.getName().size(); i++)
12890      composeHumanName(t, "Person", "name", element.getName().get(i), i);
12891    for (int i = 0; i < element.getTelecom().size(); i++)
12892      composeContactPoint(t, "Person", "telecom", element.getTelecom().get(i), i);
12893    if (element.hasGenderElement())
12894      composeEnum(t, "Person", "gender", element.getGenderElement(), -1);
12895    if (element.hasBirthDateElement())
12896      composeDate(t, "Person", "birthDate", element.getBirthDateElement(), -1);
12897    for (int i = 0; i < element.getAddress().size(); i++)
12898      composeAddress(t, "Person", "address", element.getAddress().get(i), i);
12899    if (element.hasPhoto())
12900      composeAttachment(t, "Person", "photo", element.getPhoto(), -1);
12901    if (element.hasManagingOrganization())
12902      composeReference(t, "Person", "managingOrganization", element.getManagingOrganization(), -1);
12903    if (element.hasActiveElement())
12904      composeBoolean(t, "Person", "active", element.getActiveElement(), -1);
12905    for (int i = 0; i < element.getLink().size(); i++)
12906      composePersonPersonLinkComponent(t, "Person", "link", element.getLink().get(i), i);
12907  }
12908
12909  protected void composePersonPersonLinkComponent(Complex parent, String parentType, String name, Person.PersonLinkComponent element, int index) {
12910    if (element == null) 
12911      return;
12912    Complex t;
12913    if (Utilities.noString(parentType))
12914      t = parent;
12915    else {
12916      t = parent.predicate("fhir:"+parentType+'.'+name);
12917    }
12918    composeBackboneElement(t, "link", name, element, index);
12919    if (element.hasTarget())
12920      composeReference(t, "Person", "target", element.getTarget(), -1);
12921    if (element.hasAssuranceElement())
12922      composeEnum(t, "Person", "assurance", element.getAssuranceElement(), -1);
12923  }
12924
12925  protected void composePlanDefinition(Complex parent, String parentType, String name, PlanDefinition element, int index) {
12926    if (element == null) 
12927      return;
12928    Complex t;
12929    if (Utilities.noString(parentType))
12930      t = parent;
12931    else {
12932      t = parent.predicate("fhir:"+parentType+'.'+name);
12933    }
12934    composeDomainResource(t, "PlanDefinition", name, element, index);
12935    if (element.hasUrlElement())
12936      composeUri(t, "PlanDefinition", "url", element.getUrlElement(), -1);
12937    for (int i = 0; i < element.getIdentifier().size(); i++)
12938      composeIdentifier(t, "PlanDefinition", "identifier", element.getIdentifier().get(i), i);
12939    if (element.hasVersionElement())
12940      composeString(t, "PlanDefinition", "version", element.getVersionElement(), -1);
12941    if (element.hasNameElement())
12942      composeString(t, "PlanDefinition", "name", element.getNameElement(), -1);
12943    if (element.hasTitleElement())
12944      composeString(t, "PlanDefinition", "title", element.getTitleElement(), -1);
12945    if (element.hasSubtitleElement())
12946      composeString(t, "PlanDefinition", "subtitle", element.getSubtitleElement(), -1);
12947    if (element.hasType())
12948      composeCodeableConcept(t, "PlanDefinition", "type", element.getType(), -1);
12949    if (element.hasStatusElement())
12950      composeEnum(t, "PlanDefinition", "status", element.getStatusElement(), -1);
12951    if (element.hasExperimentalElement())
12952      composeBoolean(t, "PlanDefinition", "experimental", element.getExperimentalElement(), -1);
12953    if (element.hasSubject())
12954      composeType(t, "PlanDefinition", "subject", element.getSubject(), -1);
12955    if (element.hasDateElement())
12956      composeDateTime(t, "PlanDefinition", "date", element.getDateElement(), -1);
12957    if (element.hasPublisherElement())
12958      composeString(t, "PlanDefinition", "publisher", element.getPublisherElement(), -1);
12959    for (int i = 0; i < element.getContact().size(); i++)
12960      composeContactDetail(t, "PlanDefinition", "contact", element.getContact().get(i), i);
12961    if (element.hasDescriptionElement())
12962      composeMarkdown(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
12963    for (int i = 0; i < element.getUseContext().size(); i++)
12964      composeUsageContext(t, "PlanDefinition", "useContext", element.getUseContext().get(i), i);
12965    for (int i = 0; i < element.getJurisdiction().size(); i++)
12966      composeCodeableConcept(t, "PlanDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
12967    if (element.hasPurposeElement())
12968      composeMarkdown(t, "PlanDefinition", "purpose", element.getPurposeElement(), -1);
12969    if (element.hasUsageElement())
12970      composeString(t, "PlanDefinition", "usage", element.getUsageElement(), -1);
12971    if (element.hasCopyrightElement())
12972      composeMarkdown(t, "PlanDefinition", "copyright", element.getCopyrightElement(), -1);
12973    if (element.hasApprovalDateElement())
12974      composeDate(t, "PlanDefinition", "approvalDate", element.getApprovalDateElement(), -1);
12975    if (element.hasLastReviewDateElement())
12976      composeDate(t, "PlanDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
12977    if (element.hasEffectivePeriod())
12978      composePeriod(t, "PlanDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
12979    for (int i = 0; i < element.getTopic().size(); i++)
12980      composeCodeableConcept(t, "PlanDefinition", "topic", element.getTopic().get(i), i);
12981    for (int i = 0; i < element.getAuthor().size(); i++)
12982      composeContactDetail(t, "PlanDefinition", "author", element.getAuthor().get(i), i);
12983    for (int i = 0; i < element.getEditor().size(); i++)
12984      composeContactDetail(t, "PlanDefinition", "editor", element.getEditor().get(i), i);
12985    for (int i = 0; i < element.getReviewer().size(); i++)
12986      composeContactDetail(t, "PlanDefinition", "reviewer", element.getReviewer().get(i), i);
12987    for (int i = 0; i < element.getEndorser().size(); i++)
12988      composeContactDetail(t, "PlanDefinition", "endorser", element.getEndorser().get(i), i);
12989    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
12990      composeRelatedArtifact(t, "PlanDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
12991    for (int i = 0; i < element.getLibrary().size(); i++)
12992      composeCanonical(t, "PlanDefinition", "library", element.getLibrary().get(i), i);
12993    for (int i = 0; i < element.getGoal().size(); i++)
12994      composePlanDefinitionPlanDefinitionGoalComponent(t, "PlanDefinition", "goal", element.getGoal().get(i), i);
12995    for (int i = 0; i < element.getAction().size(); i++)
12996      composePlanDefinitionPlanDefinitionActionComponent(t, "PlanDefinition", "action", element.getAction().get(i), i);
12997  }
12998
12999  protected void composePlanDefinitionPlanDefinitionGoalComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionGoalComponent element, int index) {
13000    if (element == null) 
13001      return;
13002    Complex t;
13003    if (Utilities.noString(parentType))
13004      t = parent;
13005    else {
13006      t = parent.predicate("fhir:"+parentType+'.'+name);
13007    }
13008    composeBackboneElement(t, "goal", name, element, index);
13009    if (element.hasCategory())
13010      composeCodeableConcept(t, "PlanDefinition", "category", element.getCategory(), -1);
13011    if (element.hasDescription())
13012      composeCodeableConcept(t, "PlanDefinition", "description", element.getDescription(), -1);
13013    if (element.hasPriority())
13014      composeCodeableConcept(t, "PlanDefinition", "priority", element.getPriority(), -1);
13015    if (element.hasStart())
13016      composeCodeableConcept(t, "PlanDefinition", "start", element.getStart(), -1);
13017    for (int i = 0; i < element.getAddresses().size(); i++)
13018      composeCodeableConcept(t, "PlanDefinition", "addresses", element.getAddresses().get(i), i);
13019    for (int i = 0; i < element.getDocumentation().size(); i++)
13020      composeRelatedArtifact(t, "PlanDefinition", "documentation", element.getDocumentation().get(i), i);
13021    for (int i = 0; i < element.getTarget().size(); i++)
13022      composePlanDefinitionPlanDefinitionGoalTargetComponent(t, "PlanDefinition", "target", element.getTarget().get(i), i);
13023  }
13024
13025  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionGoalTargetComponent element, int index) {
13026    if (element == null) 
13027      return;
13028    Complex t;
13029    if (Utilities.noString(parentType))
13030      t = parent;
13031    else {
13032      t = parent.predicate("fhir:"+parentType+'.'+name);
13033    }
13034    composeBackboneElement(t, "target", name, element, index);
13035    if (element.hasMeasure())
13036      composeCodeableConcept(t, "PlanDefinition", "measure", element.getMeasure(), -1);
13037    if (element.hasDetail())
13038      composeType(t, "PlanDefinition", "detail", element.getDetail(), -1);
13039    if (element.hasDue())
13040      composeDuration(t, "PlanDefinition", "due", element.getDue(), -1);
13041  }
13042
13043  protected void composePlanDefinitionPlanDefinitionActionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionComponent element, int index) {
13044    if (element == null) 
13045      return;
13046    Complex t;
13047    if (Utilities.noString(parentType))
13048      t = parent;
13049    else {
13050      t = parent.predicate("fhir:"+parentType+'.'+name);
13051    }
13052    composeBackboneElement(t, "action", name, element, index);
13053    if (element.hasPrefixElement())
13054      composeString(t, "PlanDefinition", "prefix", element.getPrefixElement(), -1);
13055    if (element.hasTitleElement())
13056      composeString(t, "PlanDefinition", "title", element.getTitleElement(), -1);
13057    if (element.hasDescriptionElement())
13058      composeString(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
13059    if (element.hasTextEquivalentElement())
13060      composeString(t, "PlanDefinition", "textEquivalent", element.getTextEquivalentElement(), -1);
13061    if (element.hasPriorityElement())
13062      composeEnum(t, "PlanDefinition", "priority", element.getPriorityElement(), -1);
13063    for (int i = 0; i < element.getCode().size(); i++)
13064      composeCodeableConcept(t, "PlanDefinition", "code", element.getCode().get(i), i);
13065    for (int i = 0; i < element.getReason().size(); i++)
13066      composeCodeableConcept(t, "PlanDefinition", "reason", element.getReason().get(i), i);
13067    for (int i = 0; i < element.getDocumentation().size(); i++)
13068      composeRelatedArtifact(t, "PlanDefinition", "documentation", element.getDocumentation().get(i), i);
13069    for (int i = 0; i < element.getGoalId().size(); i++)
13070      composeId(t, "PlanDefinition", "goalId", element.getGoalId().get(i), i);
13071    if (element.hasSubject())
13072      composeType(t, "PlanDefinition", "subject", element.getSubject(), -1);
13073    for (int i = 0; i < element.getTrigger().size(); i++)
13074      composeTriggerDefinition(t, "PlanDefinition", "trigger", element.getTrigger().get(i), i);
13075    for (int i = 0; i < element.getCondition().size(); i++)
13076      composePlanDefinitionPlanDefinitionActionConditionComponent(t, "PlanDefinition", "condition", element.getCondition().get(i), i);
13077    for (int i = 0; i < element.getInput().size(); i++)
13078      composeDataRequirement(t, "PlanDefinition", "input", element.getInput().get(i), i);
13079    for (int i = 0; i < element.getOutput().size(); i++)
13080      composeDataRequirement(t, "PlanDefinition", "output", element.getOutput().get(i), i);
13081    for (int i = 0; i < element.getRelatedAction().size(); i++)
13082      composePlanDefinitionPlanDefinitionActionRelatedActionComponent(t, "PlanDefinition", "relatedAction", element.getRelatedAction().get(i), i);
13083    if (element.hasTiming())
13084      composeType(t, "PlanDefinition", "timing", element.getTiming(), -1);
13085    for (int i = 0; i < element.getParticipant().size(); i++)
13086      composePlanDefinitionPlanDefinitionActionParticipantComponent(t, "PlanDefinition", "participant", element.getParticipant().get(i), i);
13087    if (element.hasType())
13088      composeCodeableConcept(t, "PlanDefinition", "type", element.getType(), -1);
13089    if (element.hasGroupingBehaviorElement())
13090      composeEnum(t, "PlanDefinition", "groupingBehavior", element.getGroupingBehaviorElement(), -1);
13091    if (element.hasSelectionBehaviorElement())
13092      composeEnum(t, "PlanDefinition", "selectionBehavior", element.getSelectionBehaviorElement(), -1);
13093    if (element.hasRequiredBehaviorElement())
13094      composeEnum(t, "PlanDefinition", "requiredBehavior", element.getRequiredBehaviorElement(), -1);
13095    if (element.hasPrecheckBehaviorElement())
13096      composeEnum(t, "PlanDefinition", "precheckBehavior", element.getPrecheckBehaviorElement(), -1);
13097    if (element.hasCardinalityBehaviorElement())
13098      composeEnum(t, "PlanDefinition", "cardinalityBehavior", element.getCardinalityBehaviorElement(), -1);
13099    if (element.hasDefinition())
13100      composeType(t, "PlanDefinition", "definition", element.getDefinition(), -1);
13101    if (element.hasTransformElement())
13102      composeCanonical(t, "PlanDefinition", "transform", element.getTransformElement(), -1);
13103    for (int i = 0; i < element.getDynamicValue().size(); i++)
13104      composePlanDefinitionPlanDefinitionActionDynamicValueComponent(t, "PlanDefinition", "dynamicValue", element.getDynamicValue().get(i), i);
13105    for (int i = 0; i < element.getAction().size(); i++)
13106      composePlanDefinitionPlanDefinitionActionComponent(t, "PlanDefinition", "action", element.getAction().get(i), i);
13107  }
13108
13109  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionConditionComponent element, int index) {
13110    if (element == null) 
13111      return;
13112    Complex t;
13113    if (Utilities.noString(parentType))
13114      t = parent;
13115    else {
13116      t = parent.predicate("fhir:"+parentType+'.'+name);
13117    }
13118    composeBackboneElement(t, "condition", name, element, index);
13119    if (element.hasKindElement())
13120      composeEnum(t, "PlanDefinition", "kind", element.getKindElement(), -1);
13121    if (element.hasExpression())
13122      composeExpression(t, "PlanDefinition", "expression", element.getExpression(), -1);
13123  }
13124
13125  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element, int index) {
13126    if (element == null) 
13127      return;
13128    Complex t;
13129    if (Utilities.noString(parentType))
13130      t = parent;
13131    else {
13132      t = parent.predicate("fhir:"+parentType+'.'+name);
13133    }
13134    composeBackboneElement(t, "relatedAction", name, element, index);
13135    if (element.hasActionIdElement())
13136      composeId(t, "PlanDefinition", "actionId", element.getActionIdElement(), -1);
13137    if (element.hasRelationshipElement())
13138      composeEnum(t, "PlanDefinition", "relationship", element.getRelationshipElement(), -1);
13139    if (element.hasOffset())
13140      composeType(t, "PlanDefinition", "offset", element.getOffset(), -1);
13141  }
13142
13143  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionParticipantComponent element, int index) {
13144    if (element == null) 
13145      return;
13146    Complex t;
13147    if (Utilities.noString(parentType))
13148      t = parent;
13149    else {
13150      t = parent.predicate("fhir:"+parentType+'.'+name);
13151    }
13152    composeBackboneElement(t, "participant", name, element, index);
13153    if (element.hasTypeElement())
13154      composeEnum(t, "PlanDefinition", "type", element.getTypeElement(), -1);
13155    if (element.hasRole())
13156      composeCodeableConcept(t, "PlanDefinition", "role", element.getRole(), -1);
13157  }
13158
13159  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element, int index) {
13160    if (element == null) 
13161      return;
13162    Complex t;
13163    if (Utilities.noString(parentType))
13164      t = parent;
13165    else {
13166      t = parent.predicate("fhir:"+parentType+'.'+name);
13167    }
13168    composeBackboneElement(t, "dynamicValue", name, element, index);
13169    if (element.hasPathElement())
13170      composeString(t, "PlanDefinition", "path", element.getPathElement(), -1);
13171    if (element.hasExpression())
13172      composeExpression(t, "PlanDefinition", "expression", element.getExpression(), -1);
13173  }
13174
13175  protected void composePractitioner(Complex parent, String parentType, String name, Practitioner element, int index) {
13176    if (element == null) 
13177      return;
13178    Complex t;
13179    if (Utilities.noString(parentType))
13180      t = parent;
13181    else {
13182      t = parent.predicate("fhir:"+parentType+'.'+name);
13183    }
13184    composeDomainResource(t, "Practitioner", name, element, index);
13185    for (int i = 0; i < element.getIdentifier().size(); i++)
13186      composeIdentifier(t, "Practitioner", "identifier", element.getIdentifier().get(i), i);
13187    if (element.hasActiveElement())
13188      composeBoolean(t, "Practitioner", "active", element.getActiveElement(), -1);
13189    for (int i = 0; i < element.getName().size(); i++)
13190      composeHumanName(t, "Practitioner", "name", element.getName().get(i), i);
13191    for (int i = 0; i < element.getTelecom().size(); i++)
13192      composeContactPoint(t, "Practitioner", "telecom", element.getTelecom().get(i), i);
13193    for (int i = 0; i < element.getAddress().size(); i++)
13194      composeAddress(t, "Practitioner", "address", element.getAddress().get(i), i);
13195    if (element.hasGenderElement())
13196      composeEnum(t, "Practitioner", "gender", element.getGenderElement(), -1);
13197    if (element.hasBirthDateElement())
13198      composeDate(t, "Practitioner", "birthDate", element.getBirthDateElement(), -1);
13199    for (int i = 0; i < element.getPhoto().size(); i++)
13200      composeAttachment(t, "Practitioner", "photo", element.getPhoto().get(i), i);
13201    for (int i = 0; i < element.getQualification().size(); i++)
13202      composePractitionerPractitionerQualificationComponent(t, "Practitioner", "qualification", element.getQualification().get(i), i);
13203    for (int i = 0; i < element.getCommunication().size(); i++)
13204      composeCodeableConcept(t, "Practitioner", "communication", element.getCommunication().get(i), i);
13205  }
13206
13207  protected void composePractitionerPractitionerQualificationComponent(Complex parent, String parentType, String name, Practitioner.PractitionerQualificationComponent element, int index) {
13208    if (element == null) 
13209      return;
13210    Complex t;
13211    if (Utilities.noString(parentType))
13212      t = parent;
13213    else {
13214      t = parent.predicate("fhir:"+parentType+'.'+name);
13215    }
13216    composeBackboneElement(t, "qualification", name, element, index);
13217    for (int i = 0; i < element.getIdentifier().size(); i++)
13218      composeIdentifier(t, "Practitioner", "identifier", element.getIdentifier().get(i), i);
13219    if (element.hasCode())
13220      composeCodeableConcept(t, "Practitioner", "code", element.getCode(), -1);
13221    if (element.hasPeriod())
13222      composePeriod(t, "Practitioner", "period", element.getPeriod(), -1);
13223    if (element.hasIssuer())
13224      composeReference(t, "Practitioner", "issuer", element.getIssuer(), -1);
13225  }
13226
13227  protected void composePractitionerRole(Complex parent, String parentType, String name, PractitionerRole element, int index) {
13228    if (element == null) 
13229      return;
13230    Complex t;
13231    if (Utilities.noString(parentType))
13232      t = parent;
13233    else {
13234      t = parent.predicate("fhir:"+parentType+'.'+name);
13235    }
13236    composeDomainResource(t, "PractitionerRole", name, element, index);
13237    for (int i = 0; i < element.getIdentifier().size(); i++)
13238      composeIdentifier(t, "PractitionerRole", "identifier", element.getIdentifier().get(i), i);
13239    if (element.hasActiveElement())
13240      composeBoolean(t, "PractitionerRole", "active", element.getActiveElement(), -1);
13241    if (element.hasPeriod())
13242      composePeriod(t, "PractitionerRole", "period", element.getPeriod(), -1);
13243    if (element.hasPractitioner())
13244      composeReference(t, "PractitionerRole", "practitioner", element.getPractitioner(), -1);
13245    if (element.hasOrganization())
13246      composeReference(t, "PractitionerRole", "organization", element.getOrganization(), -1);
13247    for (int i = 0; i < element.getCode().size(); i++)
13248      composeCodeableConcept(t, "PractitionerRole", "code", element.getCode().get(i), i);
13249    for (int i = 0; i < element.getSpecialty().size(); i++)
13250      composeCodeableConcept(t, "PractitionerRole", "specialty", element.getSpecialty().get(i), i);
13251    for (int i = 0; i < element.getLocation().size(); i++)
13252      composeReference(t, "PractitionerRole", "location", element.getLocation().get(i), i);
13253    for (int i = 0; i < element.getHealthcareService().size(); i++)
13254      composeReference(t, "PractitionerRole", "healthcareService", element.getHealthcareService().get(i), i);
13255    for (int i = 0; i < element.getTelecom().size(); i++)
13256      composeContactPoint(t, "PractitionerRole", "telecom", element.getTelecom().get(i), i);
13257    for (int i = 0; i < element.getAvailableTime().size(); i++)
13258      composePractitionerRolePractitionerRoleAvailableTimeComponent(t, "PractitionerRole", "availableTime", element.getAvailableTime().get(i), i);
13259    for (int i = 0; i < element.getNotAvailable().size(); i++)
13260      composePractitionerRolePractitionerRoleNotAvailableComponent(t, "PractitionerRole", "notAvailable", element.getNotAvailable().get(i), i);
13261    if (element.hasAvailabilityExceptionsElement())
13262      composeString(t, "PractitionerRole", "availabilityExceptions", element.getAvailabilityExceptionsElement(), -1);
13263    for (int i = 0; i < element.getEndpoint().size(); i++)
13264      composeReference(t, "PractitionerRole", "endpoint", element.getEndpoint().get(i), i);
13265  }
13266
13267  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(Complex parent, String parentType, String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element, int index) {
13268    if (element == null) 
13269      return;
13270    Complex t;
13271    if (Utilities.noString(parentType))
13272      t = parent;
13273    else {
13274      t = parent.predicate("fhir:"+parentType+'.'+name);
13275    }
13276    composeBackboneElement(t, "availableTime", name, element, index);
13277    for (int i = 0; i < element.getDaysOfWeek().size(); i++)
13278      composeEnum(t, "PractitionerRole", "daysOfWeek", element.getDaysOfWeek().get(i), i);
13279    if (element.hasAllDayElement())
13280      composeBoolean(t, "PractitionerRole", "allDay", element.getAllDayElement(), -1);
13281    if (element.hasAvailableStartTimeElement())
13282      composeTime(t, "PractitionerRole", "availableStartTime", element.getAvailableStartTimeElement(), -1);
13283    if (element.hasAvailableEndTimeElement())
13284      composeTime(t, "PractitionerRole", "availableEndTime", element.getAvailableEndTimeElement(), -1);
13285  }
13286
13287  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(Complex parent, String parentType, String name, PractitionerRole.PractitionerRoleNotAvailableComponent element, int index) {
13288    if (element == null) 
13289      return;
13290    Complex t;
13291    if (Utilities.noString(parentType))
13292      t = parent;
13293    else {
13294      t = parent.predicate("fhir:"+parentType+'.'+name);
13295    }
13296    composeBackboneElement(t, "notAvailable", name, element, index);
13297    if (element.hasDescriptionElement())
13298      composeString(t, "PractitionerRole", "description", element.getDescriptionElement(), -1);
13299    if (element.hasDuring())
13300      composePeriod(t, "PractitionerRole", "during", element.getDuring(), -1);
13301  }
13302
13303  protected void composeProcedure(Complex parent, String parentType, String name, Procedure element, int index) {
13304    if (element == null) 
13305      return;
13306    Complex t;
13307    if (Utilities.noString(parentType))
13308      t = parent;
13309    else {
13310      t = parent.predicate("fhir:"+parentType+'.'+name);
13311    }
13312    composeDomainResource(t, "Procedure", name, element, index);
13313    for (int i = 0; i < element.getIdentifier().size(); i++)
13314      composeIdentifier(t, "Procedure", "identifier", element.getIdentifier().get(i), i);
13315    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
13316      composeCanonical(t, "Procedure", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
13317    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
13318      composeUri(t, "Procedure", "instantiatesUri", element.getInstantiatesUri().get(i), i);
13319    for (int i = 0; i < element.getBasedOn().size(); i++)
13320      composeReference(t, "Procedure", "basedOn", element.getBasedOn().get(i), i);
13321    for (int i = 0; i < element.getPartOf().size(); i++)
13322      composeReference(t, "Procedure", "partOf", element.getPartOf().get(i), i);
13323    if (element.hasStatusElement())
13324      composeEnum(t, "Procedure", "status", element.getStatusElement(), -1);
13325    if (element.hasStatusReason())
13326      composeCodeableConcept(t, "Procedure", "statusReason", element.getStatusReason(), -1);
13327    if (element.hasCategory())
13328      composeCodeableConcept(t, "Procedure", "category", element.getCategory(), -1);
13329    if (element.hasCode())
13330      composeCodeableConcept(t, "Procedure", "code", element.getCode(), -1);
13331    if (element.hasSubject())
13332      composeReference(t, "Procedure", "subject", element.getSubject(), -1);
13333    if (element.hasEncounter())
13334      composeReference(t, "Procedure", "encounter", element.getEncounter(), -1);
13335    if (element.hasPerformed())
13336      composeType(t, "Procedure", "performed", element.getPerformed(), -1);
13337    if (element.hasRecorder())
13338      composeReference(t, "Procedure", "recorder", element.getRecorder(), -1);
13339    if (element.hasAsserter())
13340      composeReference(t, "Procedure", "asserter", element.getAsserter(), -1);
13341    for (int i = 0; i < element.getPerformer().size(); i++)
13342      composeProcedureProcedurePerformerComponent(t, "Procedure", "performer", element.getPerformer().get(i), i);
13343    if (element.hasLocation())
13344      composeReference(t, "Procedure", "location", element.getLocation(), -1);
13345    for (int i = 0; i < element.getReasonCode().size(); i++)
13346      composeCodeableConcept(t, "Procedure", "reasonCode", element.getReasonCode().get(i), i);
13347    for (int i = 0; i < element.getReasonReference().size(); i++)
13348      composeReference(t, "Procedure", "reasonReference", element.getReasonReference().get(i), i);
13349    for (int i = 0; i < element.getBodySite().size(); i++)
13350      composeCodeableConcept(t, "Procedure", "bodySite", element.getBodySite().get(i), i);
13351    if (element.hasOutcome())
13352      composeCodeableConcept(t, "Procedure", "outcome", element.getOutcome(), -1);
13353    for (int i = 0; i < element.getReport().size(); i++)
13354      composeReference(t, "Procedure", "report", element.getReport().get(i), i);
13355    for (int i = 0; i < element.getComplication().size(); i++)
13356      composeCodeableConcept(t, "Procedure", "complication", element.getComplication().get(i), i);
13357    for (int i = 0; i < element.getComplicationDetail().size(); i++)
13358      composeReference(t, "Procedure", "complicationDetail", element.getComplicationDetail().get(i), i);
13359    for (int i = 0; i < element.getFollowUp().size(); i++)
13360      composeCodeableConcept(t, "Procedure", "followUp", element.getFollowUp().get(i), i);
13361    for (int i = 0; i < element.getNote().size(); i++)
13362      composeAnnotation(t, "Procedure", "note", element.getNote().get(i), i);
13363    for (int i = 0; i < element.getFocalDevice().size(); i++)
13364      composeProcedureProcedureFocalDeviceComponent(t, "Procedure", "focalDevice", element.getFocalDevice().get(i), i);
13365    for (int i = 0; i < element.getUsedReference().size(); i++)
13366      composeReference(t, "Procedure", "usedReference", element.getUsedReference().get(i), i);
13367    for (int i = 0; i < element.getUsedCode().size(); i++)
13368      composeCodeableConcept(t, "Procedure", "usedCode", element.getUsedCode().get(i), i);
13369  }
13370
13371  protected void composeProcedureProcedurePerformerComponent(Complex parent, String parentType, String name, Procedure.ProcedurePerformerComponent element, int index) {
13372    if (element == null) 
13373      return;
13374    Complex t;
13375    if (Utilities.noString(parentType))
13376      t = parent;
13377    else {
13378      t = parent.predicate("fhir:"+parentType+'.'+name);
13379    }
13380    composeBackboneElement(t, "performer", name, element, index);
13381    if (element.hasFunction())
13382      composeCodeableConcept(t, "Procedure", "function", element.getFunction(), -1);
13383    if (element.hasActor())
13384      composeReference(t, "Procedure", "actor", element.getActor(), -1);
13385    if (element.hasOnBehalfOf())
13386      composeReference(t, "Procedure", "onBehalfOf", element.getOnBehalfOf(), -1);
13387  }
13388
13389  protected void composeProcedureProcedureFocalDeviceComponent(Complex parent, String parentType, String name, Procedure.ProcedureFocalDeviceComponent element, int index) {
13390    if (element == null) 
13391      return;
13392    Complex t;
13393    if (Utilities.noString(parentType))
13394      t = parent;
13395    else {
13396      t = parent.predicate("fhir:"+parentType+'.'+name);
13397    }
13398    composeBackboneElement(t, "focalDevice", name, element, index);
13399    if (element.hasAction())
13400      composeCodeableConcept(t, "Procedure", "action", element.getAction(), -1);
13401    if (element.hasManipulated())
13402      composeReference(t, "Procedure", "manipulated", element.getManipulated(), -1);
13403  }
13404
13405  protected void composeProvenance(Complex parent, String parentType, String name, Provenance element, int index) {
13406    if (element == null) 
13407      return;
13408    Complex t;
13409    if (Utilities.noString(parentType))
13410      t = parent;
13411    else {
13412      t = parent.predicate("fhir:"+parentType+'.'+name);
13413    }
13414    composeDomainResource(t, "Provenance", name, element, index);
13415    for (int i = 0; i < element.getTarget().size(); i++)
13416      composeReference(t, "Provenance", "target", element.getTarget().get(i), i);
13417    if (element.hasOccurred())
13418      composeType(t, "Provenance", "occurred", element.getOccurred(), -1);
13419    if (element.hasRecordedElement())
13420      composeInstant(t, "Provenance", "recorded", element.getRecordedElement(), -1);
13421    for (int i = 0; i < element.getPolicy().size(); i++)
13422      composeUri(t, "Provenance", "policy", element.getPolicy().get(i), i);
13423    if (element.hasLocation())
13424      composeReference(t, "Provenance", "location", element.getLocation(), -1);
13425    for (int i = 0; i < element.getReason().size(); i++)
13426      composeCodeableConcept(t, "Provenance", "reason", element.getReason().get(i), i);
13427    if (element.hasActivity())
13428      composeCodeableConcept(t, "Provenance", "activity", element.getActivity(), -1);
13429    for (int i = 0; i < element.getAgent().size(); i++)
13430      composeProvenanceProvenanceAgentComponent(t, "Provenance", "agent", element.getAgent().get(i), i);
13431    for (int i = 0; i < element.getEntity().size(); i++)
13432      composeProvenanceProvenanceEntityComponent(t, "Provenance", "entity", element.getEntity().get(i), i);
13433    for (int i = 0; i < element.getSignature().size(); i++)
13434      composeSignature(t, "Provenance", "signature", element.getSignature().get(i), i);
13435  }
13436
13437  protected void composeProvenanceProvenanceAgentComponent(Complex parent, String parentType, String name, Provenance.ProvenanceAgentComponent element, int index) {
13438    if (element == null) 
13439      return;
13440    Complex t;
13441    if (Utilities.noString(parentType))
13442      t = parent;
13443    else {
13444      t = parent.predicate("fhir:"+parentType+'.'+name);
13445    }
13446    composeBackboneElement(t, "agent", name, element, index);
13447    if (element.hasType())
13448      composeCodeableConcept(t, "Provenance", "type", element.getType(), -1);
13449    for (int i = 0; i < element.getRole().size(); i++)
13450      composeCodeableConcept(t, "Provenance", "role", element.getRole().get(i), i);
13451    if (element.hasWho())
13452      composeReference(t, "Provenance", "who", element.getWho(), -1);
13453    if (element.hasOnBehalfOf())
13454      composeReference(t, "Provenance", "onBehalfOf", element.getOnBehalfOf(), -1);
13455  }
13456
13457  protected void composeProvenanceProvenanceEntityComponent(Complex parent, String parentType, String name, Provenance.ProvenanceEntityComponent element, int index) {
13458    if (element == null) 
13459      return;
13460    Complex t;
13461    if (Utilities.noString(parentType))
13462      t = parent;
13463    else {
13464      t = parent.predicate("fhir:"+parentType+'.'+name);
13465    }
13466    composeBackboneElement(t, "entity", name, element, index);
13467    if (element.hasRoleElement())
13468      composeEnum(t, "Provenance", "role", element.getRoleElement(), -1);
13469    if (element.hasWhat())
13470      composeReference(t, "Provenance", "what", element.getWhat(), -1);
13471    for (int i = 0; i < element.getAgent().size(); i++)
13472      composeProvenanceProvenanceAgentComponent(t, "Provenance", "agent", element.getAgent().get(i), i);
13473  }
13474
13475  protected void composeQuestionnaire(Complex parent, String parentType, String name, Questionnaire element, int index) {
13476    if (element == null) 
13477      return;
13478    Complex t;
13479    if (Utilities.noString(parentType))
13480      t = parent;
13481    else {
13482      t = parent.predicate("fhir:"+parentType+'.'+name);
13483    }
13484    composeDomainResource(t, "Questionnaire", name, element, index);
13485    if (element.hasUrlElement())
13486      composeUri(t, "Questionnaire", "url", element.getUrlElement(), -1);
13487    for (int i = 0; i < element.getIdentifier().size(); i++)
13488      composeIdentifier(t, "Questionnaire", "identifier", element.getIdentifier().get(i), i);
13489    if (element.hasVersionElement())
13490      composeString(t, "Questionnaire", "version", element.getVersionElement(), -1);
13491    if (element.hasNameElement())
13492      composeString(t, "Questionnaire", "name", element.getNameElement(), -1);
13493    if (element.hasTitleElement())
13494      composeString(t, "Questionnaire", "title", element.getTitleElement(), -1);
13495    for (int i = 0; i < element.getDerivedFrom().size(); i++)
13496      composeCanonical(t, "Questionnaire", "derivedFrom", element.getDerivedFrom().get(i), i);
13497    if (element.hasStatusElement())
13498      composeEnum(t, "Questionnaire", "status", element.getStatusElement(), -1);
13499    if (element.hasExperimentalElement())
13500      composeBoolean(t, "Questionnaire", "experimental", element.getExperimentalElement(), -1);
13501    for (int i = 0; i < element.getSubjectType().size(); i++)
13502      composeCode(t, "Questionnaire", "subjectType", element.getSubjectType().get(i), i);
13503    if (element.hasDateElement())
13504      composeDateTime(t, "Questionnaire", "date", element.getDateElement(), -1);
13505    if (element.hasPublisherElement())
13506      composeString(t, "Questionnaire", "publisher", element.getPublisherElement(), -1);
13507    for (int i = 0; i < element.getContact().size(); i++)
13508      composeContactDetail(t, "Questionnaire", "contact", element.getContact().get(i), i);
13509    if (element.hasDescriptionElement())
13510      composeMarkdown(t, "Questionnaire", "description", element.getDescriptionElement(), -1);
13511    for (int i = 0; i < element.getUseContext().size(); i++)
13512      composeUsageContext(t, "Questionnaire", "useContext", element.getUseContext().get(i), i);
13513    for (int i = 0; i < element.getJurisdiction().size(); i++)
13514      composeCodeableConcept(t, "Questionnaire", "jurisdiction", element.getJurisdiction().get(i), i);
13515    if (element.hasPurposeElement())
13516      composeMarkdown(t, "Questionnaire", "purpose", element.getPurposeElement(), -1);
13517    if (element.hasCopyrightElement())
13518      composeMarkdown(t, "Questionnaire", "copyright", element.getCopyrightElement(), -1);
13519    if (element.hasApprovalDateElement())
13520      composeDate(t, "Questionnaire", "approvalDate", element.getApprovalDateElement(), -1);
13521    if (element.hasLastReviewDateElement())
13522      composeDate(t, "Questionnaire", "lastReviewDate", element.getLastReviewDateElement(), -1);
13523    if (element.hasEffectivePeriod())
13524      composePeriod(t, "Questionnaire", "effectivePeriod", element.getEffectivePeriod(), -1);
13525    for (int i = 0; i < element.getCode().size(); i++)
13526      composeCoding(t, "Questionnaire", "code", element.getCode().get(i), i);
13527    for (int i = 0; i < element.getItem().size(); i++)
13528      composeQuestionnaireQuestionnaireItemComponent(t, "Questionnaire", "item", element.getItem().get(i), i);
13529  }
13530
13531  protected void composeQuestionnaireQuestionnaireItemComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemComponent element, int index) {
13532    if (element == null) 
13533      return;
13534    Complex t;
13535    if (Utilities.noString(parentType))
13536      t = parent;
13537    else {
13538      t = parent.predicate("fhir:"+parentType+'.'+name);
13539    }
13540    composeBackboneElement(t, "item", name, element, index);
13541    if (element.hasLinkIdElement())
13542      composeString(t, "Questionnaire", "linkId", element.getLinkIdElement(), -1);
13543    if (element.hasDefinitionElement())
13544      composeUri(t, "Questionnaire", "definition", element.getDefinitionElement(), -1);
13545    for (int i = 0; i < element.getCode().size(); i++)
13546      composeCoding(t, "Questionnaire", "code", element.getCode().get(i), i);
13547    if (element.hasPrefixElement())
13548      composeString(t, "Questionnaire", "prefix", element.getPrefixElement(), -1);
13549    if (element.hasTextElement())
13550      composeString(t, "Questionnaire", "text", element.getTextElement(), -1);
13551    if (element.hasTypeElement())
13552      composeEnum(t, "Questionnaire", "type", element.getTypeElement(), -1);
13553    for (int i = 0; i < element.getEnableWhen().size(); i++)
13554      composeQuestionnaireQuestionnaireItemEnableWhenComponent(t, "Questionnaire", "enableWhen", element.getEnableWhen().get(i), i);
13555    if (element.hasEnableBehaviorElement())
13556      composeEnum(t, "Questionnaire", "enableBehavior", element.getEnableBehaviorElement(), -1);
13557    if (element.hasRequiredElement())
13558      composeBoolean(t, "Questionnaire", "required", element.getRequiredElement(), -1);
13559    if (element.hasRepeatsElement())
13560      composeBoolean(t, "Questionnaire", "repeats", element.getRepeatsElement(), -1);
13561    if (element.hasReadOnlyElement())
13562      composeBoolean(t, "Questionnaire", "readOnly", element.getReadOnlyElement(), -1);
13563    if (element.hasMaxLengthElement())
13564      composeInteger(t, "Questionnaire", "maxLength", element.getMaxLengthElement(), -1);
13565    if (element.hasAnswerValueSetElement())
13566      composeCanonical(t, "Questionnaire", "answerValueSet", element.getAnswerValueSetElement(), -1);
13567    for (int i = 0; i < element.getAnswerOption().size(); i++)
13568      composeQuestionnaireQuestionnaireItemAnswerOptionComponent(t, "Questionnaire", "answerOption", element.getAnswerOption().get(i), i);
13569    for (int i = 0; i < element.getInitial().size(); i++)
13570      composeQuestionnaireQuestionnaireItemInitialComponent(t, "Questionnaire", "initial", element.getInitial().get(i), i);
13571    for (int i = 0; i < element.getItem().size(); i++)
13572      composeQuestionnaireQuestionnaireItemComponent(t, "Questionnaire", "item", element.getItem().get(i), i);
13573  }
13574
13575  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemEnableWhenComponent element, int index) {
13576    if (element == null) 
13577      return;
13578    Complex t;
13579    if (Utilities.noString(parentType))
13580      t = parent;
13581    else {
13582      t = parent.predicate("fhir:"+parentType+'.'+name);
13583    }
13584    composeBackboneElement(t, "enableWhen", name, element, index);
13585    if (element.hasQuestionElement())
13586      composeString(t, "Questionnaire", "question", element.getQuestionElement(), -1);
13587    if (element.hasOperatorElement())
13588      composeEnum(t, "Questionnaire", "operator", element.getOperatorElement(), -1);
13589    if (element.hasAnswer())
13590      composeType(t, "Questionnaire", "answer", element.getAnswer(), -1);
13591  }
13592
13593  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element, int index) {
13594    if (element == null) 
13595      return;
13596    Complex t;
13597    if (Utilities.noString(parentType))
13598      t = parent;
13599    else {
13600      t = parent.predicate("fhir:"+parentType+'.'+name);
13601    }
13602    composeBackboneElement(t, "answerOption", name, element, index);
13603    if (element.hasValue())
13604      composeType(t, "Questionnaire", "value", element.getValue(), -1);
13605    if (element.hasInitialSelectedElement())
13606      composeBoolean(t, "Questionnaire", "initialSelected", element.getInitialSelectedElement(), -1);
13607  }
13608
13609  protected void composeQuestionnaireQuestionnaireItemInitialComponent(Complex parent, String parentType, String name, Questionnaire.QuestionnaireItemInitialComponent element, int index) {
13610    if (element == null) 
13611      return;
13612    Complex t;
13613    if (Utilities.noString(parentType))
13614      t = parent;
13615    else {
13616      t = parent.predicate("fhir:"+parentType+'.'+name);
13617    }
13618    composeBackboneElement(t, "initial", name, element, index);
13619    if (element.hasValue())
13620      composeType(t, "Questionnaire", "value", element.getValue(), -1);
13621  }
13622
13623  protected void composeQuestionnaireResponse(Complex parent, String parentType, String name, QuestionnaireResponse element, int index) {
13624    if (element == null) 
13625      return;
13626    Complex t;
13627    if (Utilities.noString(parentType))
13628      t = parent;
13629    else {
13630      t = parent.predicate("fhir:"+parentType+'.'+name);
13631    }
13632    composeDomainResource(t, "QuestionnaireResponse", name, element, index);
13633    if (element.hasIdentifier())
13634      composeIdentifier(t, "QuestionnaireResponse", "identifier", element.getIdentifier(), -1);
13635    for (int i = 0; i < element.getBasedOn().size(); i++)
13636      composeReference(t, "QuestionnaireResponse", "basedOn", element.getBasedOn().get(i), i);
13637    for (int i = 0; i < element.getPartOf().size(); i++)
13638      composeReference(t, "QuestionnaireResponse", "partOf", element.getPartOf().get(i), i);
13639    if (element.hasQuestionnaireElement())
13640      composeCanonical(t, "QuestionnaireResponse", "questionnaire", element.getQuestionnaireElement(), -1);
13641    if (element.hasStatusElement())
13642      composeEnum(t, "QuestionnaireResponse", "status", element.getStatusElement(), -1);
13643    if (element.hasSubject())
13644      composeReference(t, "QuestionnaireResponse", "subject", element.getSubject(), -1);
13645    if (element.hasEncounter())
13646      composeReference(t, "QuestionnaireResponse", "encounter", element.getEncounter(), -1);
13647    if (element.hasAuthoredElement())
13648      composeDateTime(t, "QuestionnaireResponse", "authored", element.getAuthoredElement(), -1);
13649    if (element.hasAuthor())
13650      composeReference(t, "QuestionnaireResponse", "author", element.getAuthor(), -1);
13651    if (element.hasSource())
13652      composeReference(t, "QuestionnaireResponse", "source", element.getSource(), -1);
13653    for (int i = 0; i < element.getItem().size(); i++)
13654      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
13655  }
13656
13657  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(Complex parent, String parentType, String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element, int index) {
13658    if (element == null) 
13659      return;
13660    Complex t;
13661    if (Utilities.noString(parentType))
13662      t = parent;
13663    else {
13664      t = parent.predicate("fhir:"+parentType+'.'+name);
13665    }
13666    composeBackboneElement(t, "item", name, element, index);
13667    if (element.hasLinkIdElement())
13668      composeString(t, "QuestionnaireResponse", "linkId", element.getLinkIdElement(), -1);
13669    if (element.hasDefinitionElement())
13670      composeUri(t, "QuestionnaireResponse", "definition", element.getDefinitionElement(), -1);
13671    if (element.hasTextElement())
13672      composeString(t, "QuestionnaireResponse", "text", element.getTextElement(), -1);
13673    for (int i = 0; i < element.getAnswer().size(); i++)
13674      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(t, "QuestionnaireResponse", "answer", element.getAnswer().get(i), i);
13675    for (int i = 0; i < element.getItem().size(); i++)
13676      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
13677  }
13678
13679  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(Complex parent, String parentType, String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element, int index) {
13680    if (element == null) 
13681      return;
13682    Complex t;
13683    if (Utilities.noString(parentType))
13684      t = parent;
13685    else {
13686      t = parent.predicate("fhir:"+parentType+'.'+name);
13687    }
13688    composeBackboneElement(t, "answer", name, element, index);
13689    if (element.hasValue())
13690      composeType(t, "QuestionnaireResponse", "value", element.getValue(), -1);
13691    for (int i = 0; i < element.getItem().size(); i++)
13692      composeQuestionnaireResponseQuestionnaireResponseItemComponent(t, "QuestionnaireResponse", "item", element.getItem().get(i), i);
13693  }
13694
13695  protected void composeRelatedPerson(Complex parent, String parentType, String name, RelatedPerson element, int index) {
13696    if (element == null) 
13697      return;
13698    Complex t;
13699    if (Utilities.noString(parentType))
13700      t = parent;
13701    else {
13702      t = parent.predicate("fhir:"+parentType+'.'+name);
13703    }
13704    composeDomainResource(t, "RelatedPerson", name, element, index);
13705    for (int i = 0; i < element.getIdentifier().size(); i++)
13706      composeIdentifier(t, "RelatedPerson", "identifier", element.getIdentifier().get(i), i);
13707    if (element.hasActiveElement())
13708      composeBoolean(t, "RelatedPerson", "active", element.getActiveElement(), -1);
13709    if (element.hasPatient())
13710      composeReference(t, "RelatedPerson", "patient", element.getPatient(), -1);
13711    for (int i = 0; i < element.getRelationship().size(); i++)
13712      composeCodeableConcept(t, "RelatedPerson", "relationship", element.getRelationship().get(i), i);
13713    for (int i = 0; i < element.getName().size(); i++)
13714      composeHumanName(t, "RelatedPerson", "name", element.getName().get(i), i);
13715    for (int i = 0; i < element.getTelecom().size(); i++)
13716      composeContactPoint(t, "RelatedPerson", "telecom", element.getTelecom().get(i), i);
13717    if (element.hasGenderElement())
13718      composeEnum(t, "RelatedPerson", "gender", element.getGenderElement(), -1);
13719    if (element.hasBirthDateElement())
13720      composeDate(t, "RelatedPerson", "birthDate", element.getBirthDateElement(), -1);
13721    for (int i = 0; i < element.getAddress().size(); i++)
13722      composeAddress(t, "RelatedPerson", "address", element.getAddress().get(i), i);
13723    for (int i = 0; i < element.getPhoto().size(); i++)
13724      composeAttachment(t, "RelatedPerson", "photo", element.getPhoto().get(i), i);
13725    if (element.hasPeriod())
13726      composePeriod(t, "RelatedPerson", "period", element.getPeriod(), -1);
13727    for (int i = 0; i < element.getCommunication().size(); i++)
13728      composeRelatedPersonRelatedPersonCommunicationComponent(t, "RelatedPerson", "communication", element.getCommunication().get(i), i);
13729  }
13730
13731  protected void composeRelatedPersonRelatedPersonCommunicationComponent(Complex parent, String parentType, String name, RelatedPerson.RelatedPersonCommunicationComponent element, int index) {
13732    if (element == null) 
13733      return;
13734    Complex t;
13735    if (Utilities.noString(parentType))
13736      t = parent;
13737    else {
13738      t = parent.predicate("fhir:"+parentType+'.'+name);
13739    }
13740    composeBackboneElement(t, "communication", name, element, index);
13741    if (element.hasLanguage())
13742      composeCodeableConcept(t, "RelatedPerson", "language", element.getLanguage(), -1);
13743    if (element.hasPreferredElement())
13744      composeBoolean(t, "RelatedPerson", "preferred", element.getPreferredElement(), -1);
13745  }
13746
13747  protected void composeRequestGroup(Complex parent, String parentType, String name, RequestGroup element, int index) {
13748    if (element == null) 
13749      return;
13750    Complex t;
13751    if (Utilities.noString(parentType))
13752      t = parent;
13753    else {
13754      t = parent.predicate("fhir:"+parentType+'.'+name);
13755    }
13756    composeDomainResource(t, "RequestGroup", name, element, index);
13757    for (int i = 0; i < element.getIdentifier().size(); i++)
13758      composeIdentifier(t, "RequestGroup", "identifier", element.getIdentifier().get(i), i);
13759    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
13760      composeCanonical(t, "RequestGroup", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
13761    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
13762      composeUri(t, "RequestGroup", "instantiatesUri", element.getInstantiatesUri().get(i), i);
13763    for (int i = 0; i < element.getBasedOn().size(); i++)
13764      composeReference(t, "RequestGroup", "basedOn", element.getBasedOn().get(i), i);
13765    for (int i = 0; i < element.getReplaces().size(); i++)
13766      composeReference(t, "RequestGroup", "replaces", element.getReplaces().get(i), i);
13767    if (element.hasGroupIdentifier())
13768      composeIdentifier(t, "RequestGroup", "groupIdentifier", element.getGroupIdentifier(), -1);
13769    if (element.hasStatusElement())
13770      composeEnum(t, "RequestGroup", "status", element.getStatusElement(), -1);
13771    if (element.hasIntentElement())
13772      composeEnum(t, "RequestGroup", "intent", element.getIntentElement(), -1);
13773    if (element.hasPriorityElement())
13774      composeEnum(t, "RequestGroup", "priority", element.getPriorityElement(), -1);
13775    if (element.hasCode())
13776      composeCodeableConcept(t, "RequestGroup", "code", element.getCode(), -1);
13777    if (element.hasSubject())
13778      composeReference(t, "RequestGroup", "subject", element.getSubject(), -1);
13779    if (element.hasEncounter())
13780      composeReference(t, "RequestGroup", "encounter", element.getEncounter(), -1);
13781    if (element.hasAuthoredOnElement())
13782      composeDateTime(t, "RequestGroup", "authoredOn", element.getAuthoredOnElement(), -1);
13783    if (element.hasAuthor())
13784      composeReference(t, "RequestGroup", "author", element.getAuthor(), -1);
13785    for (int i = 0; i < element.getReasonCode().size(); i++)
13786      composeCodeableConcept(t, "RequestGroup", "reasonCode", element.getReasonCode().get(i), i);
13787    for (int i = 0; i < element.getReasonReference().size(); i++)
13788      composeReference(t, "RequestGroup", "reasonReference", element.getReasonReference().get(i), i);
13789    for (int i = 0; i < element.getNote().size(); i++)
13790      composeAnnotation(t, "RequestGroup", "note", element.getNote().get(i), i);
13791    for (int i = 0; i < element.getAction().size(); i++)
13792      composeRequestGroupRequestGroupActionComponent(t, "RequestGroup", "action", element.getAction().get(i), i);
13793  }
13794
13795  protected void composeRequestGroupRequestGroupActionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionComponent element, int index) {
13796    if (element == null) 
13797      return;
13798    Complex t;
13799    if (Utilities.noString(parentType))
13800      t = parent;
13801    else {
13802      t = parent.predicate("fhir:"+parentType+'.'+name);
13803    }
13804    composeBackboneElement(t, "action", name, element, index);
13805    if (element.hasPrefixElement())
13806      composeString(t, "RequestGroup", "prefix", element.getPrefixElement(), -1);
13807    if (element.hasTitleElement())
13808      composeString(t, "RequestGroup", "title", element.getTitleElement(), -1);
13809    if (element.hasDescriptionElement())
13810      composeString(t, "RequestGroup", "description", element.getDescriptionElement(), -1);
13811    if (element.hasTextEquivalentElement())
13812      composeString(t, "RequestGroup", "textEquivalent", element.getTextEquivalentElement(), -1);
13813    if (element.hasPriorityElement())
13814      composeEnum(t, "RequestGroup", "priority", element.getPriorityElement(), -1);
13815    for (int i = 0; i < element.getCode().size(); i++)
13816      composeCodeableConcept(t, "RequestGroup", "code", element.getCode().get(i), i);
13817    for (int i = 0; i < element.getDocumentation().size(); i++)
13818      composeRelatedArtifact(t, "RequestGroup", "documentation", element.getDocumentation().get(i), i);
13819    for (int i = 0; i < element.getCondition().size(); i++)
13820      composeRequestGroupRequestGroupActionConditionComponent(t, "RequestGroup", "condition", element.getCondition().get(i), i);
13821    for (int i = 0; i < element.getRelatedAction().size(); i++)
13822      composeRequestGroupRequestGroupActionRelatedActionComponent(t, "RequestGroup", "relatedAction", element.getRelatedAction().get(i), i);
13823    if (element.hasTiming())
13824      composeType(t, "RequestGroup", "timing", element.getTiming(), -1);
13825    for (int i = 0; i < element.getParticipant().size(); i++)
13826      composeReference(t, "RequestGroup", "participant", element.getParticipant().get(i), i);
13827    if (element.hasType())
13828      composeCodeableConcept(t, "RequestGroup", "type", element.getType(), -1);
13829    if (element.hasGroupingBehaviorElement())
13830      composeEnum(t, "RequestGroup", "groupingBehavior", element.getGroupingBehaviorElement(), -1);
13831    if (element.hasSelectionBehaviorElement())
13832      composeEnum(t, "RequestGroup", "selectionBehavior", element.getSelectionBehaviorElement(), -1);
13833    if (element.hasRequiredBehaviorElement())
13834      composeEnum(t, "RequestGroup", "requiredBehavior", element.getRequiredBehaviorElement(), -1);
13835    if (element.hasPrecheckBehaviorElement())
13836      composeEnum(t, "RequestGroup", "precheckBehavior", element.getPrecheckBehaviorElement(), -1);
13837    if (element.hasCardinalityBehaviorElement())
13838      composeEnum(t, "RequestGroup", "cardinalityBehavior", element.getCardinalityBehaviorElement(), -1);
13839    if (element.hasResource())
13840      composeReference(t, "RequestGroup", "resource", element.getResource(), -1);
13841    for (int i = 0; i < element.getAction().size(); i++)
13842      composeRequestGroupRequestGroupActionComponent(t, "RequestGroup", "action", element.getAction().get(i), i);
13843  }
13844
13845  protected void composeRequestGroupRequestGroupActionConditionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionConditionComponent element, int index) {
13846    if (element == null) 
13847      return;
13848    Complex t;
13849    if (Utilities.noString(parentType))
13850      t = parent;
13851    else {
13852      t = parent.predicate("fhir:"+parentType+'.'+name);
13853    }
13854    composeBackboneElement(t, "condition", name, element, index);
13855    if (element.hasKindElement())
13856      composeEnum(t, "RequestGroup", "kind", element.getKindElement(), -1);
13857    if (element.hasExpression())
13858      composeExpression(t, "RequestGroup", "expression", element.getExpression(), -1);
13859  }
13860
13861  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(Complex parent, String parentType, String name, RequestGroup.RequestGroupActionRelatedActionComponent element, int index) {
13862    if (element == null) 
13863      return;
13864    Complex t;
13865    if (Utilities.noString(parentType))
13866      t = parent;
13867    else {
13868      t = parent.predicate("fhir:"+parentType+'.'+name);
13869    }
13870    composeBackboneElement(t, "relatedAction", name, element, index);
13871    if (element.hasActionIdElement())
13872      composeId(t, "RequestGroup", "actionId", element.getActionIdElement(), -1);
13873    if (element.hasRelationshipElement())
13874      composeEnum(t, "RequestGroup", "relationship", element.getRelationshipElement(), -1);
13875    if (element.hasOffset())
13876      composeType(t, "RequestGroup", "offset", element.getOffset(), -1);
13877  }
13878
13879  protected void composeResearchDefinition(Complex parent, String parentType, String name, ResearchDefinition element, int index) {
13880    if (element == null) 
13881      return;
13882    Complex t;
13883    if (Utilities.noString(parentType))
13884      t = parent;
13885    else {
13886      t = parent.predicate("fhir:"+parentType+'.'+name);
13887    }
13888    composeDomainResource(t, "ResearchDefinition", name, element, index);
13889    if (element.hasUrlElement())
13890      composeUri(t, "ResearchDefinition", "url", element.getUrlElement(), -1);
13891    for (int i = 0; i < element.getIdentifier().size(); i++)
13892      composeIdentifier(t, "ResearchDefinition", "identifier", element.getIdentifier().get(i), i);
13893    if (element.hasVersionElement())
13894      composeString(t, "ResearchDefinition", "version", element.getVersionElement(), -1);
13895    if (element.hasNameElement())
13896      composeString(t, "ResearchDefinition", "name", element.getNameElement(), -1);
13897    if (element.hasTitleElement())
13898      composeString(t, "ResearchDefinition", "title", element.getTitleElement(), -1);
13899    if (element.hasShortTitleElement())
13900      composeString(t, "ResearchDefinition", "shortTitle", element.getShortTitleElement(), -1);
13901    if (element.hasSubtitleElement())
13902      composeString(t, "ResearchDefinition", "subtitle", element.getSubtitleElement(), -1);
13903    if (element.hasStatusElement())
13904      composeEnum(t, "ResearchDefinition", "status", element.getStatusElement(), -1);
13905    if (element.hasExperimentalElement())
13906      composeBoolean(t, "ResearchDefinition", "experimental", element.getExperimentalElement(), -1);
13907    if (element.hasSubject())
13908      composeType(t, "ResearchDefinition", "subject", element.getSubject(), -1);
13909    if (element.hasDateElement())
13910      composeDateTime(t, "ResearchDefinition", "date", element.getDateElement(), -1);
13911    if (element.hasPublisherElement())
13912      composeString(t, "ResearchDefinition", "publisher", element.getPublisherElement(), -1);
13913    for (int i = 0; i < element.getContact().size(); i++)
13914      composeContactDetail(t, "ResearchDefinition", "contact", element.getContact().get(i), i);
13915    if (element.hasDescriptionElement())
13916      composeMarkdown(t, "ResearchDefinition", "description", element.getDescriptionElement(), -1);
13917    for (int i = 0; i < element.getComment().size(); i++)
13918      composeString(t, "ResearchDefinition", "comment", element.getComment().get(i), i);
13919    for (int i = 0; i < element.getUseContext().size(); i++)
13920      composeUsageContext(t, "ResearchDefinition", "useContext", element.getUseContext().get(i), i);
13921    for (int i = 0; i < element.getJurisdiction().size(); i++)
13922      composeCodeableConcept(t, "ResearchDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
13923    if (element.hasPurposeElement())
13924      composeMarkdown(t, "ResearchDefinition", "purpose", element.getPurposeElement(), -1);
13925    if (element.hasUsageElement())
13926      composeString(t, "ResearchDefinition", "usage", element.getUsageElement(), -1);
13927    if (element.hasCopyrightElement())
13928      composeMarkdown(t, "ResearchDefinition", "copyright", element.getCopyrightElement(), -1);
13929    if (element.hasApprovalDateElement())
13930      composeDate(t, "ResearchDefinition", "approvalDate", element.getApprovalDateElement(), -1);
13931    if (element.hasLastReviewDateElement())
13932      composeDate(t, "ResearchDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
13933    if (element.hasEffectivePeriod())
13934      composePeriod(t, "ResearchDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
13935    for (int i = 0; i < element.getTopic().size(); i++)
13936      composeCodeableConcept(t, "ResearchDefinition", "topic", element.getTopic().get(i), i);
13937    for (int i = 0; i < element.getAuthor().size(); i++)
13938      composeContactDetail(t, "ResearchDefinition", "author", element.getAuthor().get(i), i);
13939    for (int i = 0; i < element.getEditor().size(); i++)
13940      composeContactDetail(t, "ResearchDefinition", "editor", element.getEditor().get(i), i);
13941    for (int i = 0; i < element.getReviewer().size(); i++)
13942      composeContactDetail(t, "ResearchDefinition", "reviewer", element.getReviewer().get(i), i);
13943    for (int i = 0; i < element.getEndorser().size(); i++)
13944      composeContactDetail(t, "ResearchDefinition", "endorser", element.getEndorser().get(i), i);
13945    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
13946      composeRelatedArtifact(t, "ResearchDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
13947    for (int i = 0; i < element.getLibrary().size(); i++)
13948      composeCanonical(t, "ResearchDefinition", "library", element.getLibrary().get(i), i);
13949    if (element.hasPopulation())
13950      composeReference(t, "ResearchDefinition", "population", element.getPopulation(), -1);
13951    if (element.hasExposure())
13952      composeReference(t, "ResearchDefinition", "exposure", element.getExposure(), -1);
13953    if (element.hasExposureAlternative())
13954      composeReference(t, "ResearchDefinition", "exposureAlternative", element.getExposureAlternative(), -1);
13955    if (element.hasOutcome())
13956      composeReference(t, "ResearchDefinition", "outcome", element.getOutcome(), -1);
13957  }
13958
13959  protected void composeResearchElementDefinition(Complex parent, String parentType, String name, ResearchElementDefinition element, int index) {
13960    if (element == null) 
13961      return;
13962    Complex t;
13963    if (Utilities.noString(parentType))
13964      t = parent;
13965    else {
13966      t = parent.predicate("fhir:"+parentType+'.'+name);
13967    }
13968    composeDomainResource(t, "ResearchElementDefinition", name, element, index);
13969    if (element.hasUrlElement())
13970      composeUri(t, "ResearchElementDefinition", "url", element.getUrlElement(), -1);
13971    for (int i = 0; i < element.getIdentifier().size(); i++)
13972      composeIdentifier(t, "ResearchElementDefinition", "identifier", element.getIdentifier().get(i), i);
13973    if (element.hasVersionElement())
13974      composeString(t, "ResearchElementDefinition", "version", element.getVersionElement(), -1);
13975    if (element.hasNameElement())
13976      composeString(t, "ResearchElementDefinition", "name", element.getNameElement(), -1);
13977    if (element.hasTitleElement())
13978      composeString(t, "ResearchElementDefinition", "title", element.getTitleElement(), -1);
13979    if (element.hasShortTitleElement())
13980      composeString(t, "ResearchElementDefinition", "shortTitle", element.getShortTitleElement(), -1);
13981    if (element.hasSubtitleElement())
13982      composeString(t, "ResearchElementDefinition", "subtitle", element.getSubtitleElement(), -1);
13983    if (element.hasStatusElement())
13984      composeEnum(t, "ResearchElementDefinition", "status", element.getStatusElement(), -1);
13985    if (element.hasExperimentalElement())
13986      composeBoolean(t, "ResearchElementDefinition", "experimental", element.getExperimentalElement(), -1);
13987    if (element.hasSubject())
13988      composeType(t, "ResearchElementDefinition", "subject", element.getSubject(), -1);
13989    if (element.hasDateElement())
13990      composeDateTime(t, "ResearchElementDefinition", "date", element.getDateElement(), -1);
13991    if (element.hasPublisherElement())
13992      composeString(t, "ResearchElementDefinition", "publisher", element.getPublisherElement(), -1);
13993    for (int i = 0; i < element.getContact().size(); i++)
13994      composeContactDetail(t, "ResearchElementDefinition", "contact", element.getContact().get(i), i);
13995    if (element.hasDescriptionElement())
13996      composeMarkdown(t, "ResearchElementDefinition", "description", element.getDescriptionElement(), -1);
13997    for (int i = 0; i < element.getComment().size(); i++)
13998      composeString(t, "ResearchElementDefinition", "comment", element.getComment().get(i), i);
13999    for (int i = 0; i < element.getUseContext().size(); i++)
14000      composeUsageContext(t, "ResearchElementDefinition", "useContext", element.getUseContext().get(i), i);
14001    for (int i = 0; i < element.getJurisdiction().size(); i++)
14002      composeCodeableConcept(t, "ResearchElementDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
14003    if (element.hasPurposeElement())
14004      composeMarkdown(t, "ResearchElementDefinition", "purpose", element.getPurposeElement(), -1);
14005    if (element.hasUsageElement())
14006      composeString(t, "ResearchElementDefinition", "usage", element.getUsageElement(), -1);
14007    if (element.hasCopyrightElement())
14008      composeMarkdown(t, "ResearchElementDefinition", "copyright", element.getCopyrightElement(), -1);
14009    if (element.hasApprovalDateElement())
14010      composeDate(t, "ResearchElementDefinition", "approvalDate", element.getApprovalDateElement(), -1);
14011    if (element.hasLastReviewDateElement())
14012      composeDate(t, "ResearchElementDefinition", "lastReviewDate", element.getLastReviewDateElement(), -1);
14013    if (element.hasEffectivePeriod())
14014      composePeriod(t, "ResearchElementDefinition", "effectivePeriod", element.getEffectivePeriod(), -1);
14015    for (int i = 0; i < element.getTopic().size(); i++)
14016      composeCodeableConcept(t, "ResearchElementDefinition", "topic", element.getTopic().get(i), i);
14017    for (int i = 0; i < element.getAuthor().size(); i++)
14018      composeContactDetail(t, "ResearchElementDefinition", "author", element.getAuthor().get(i), i);
14019    for (int i = 0; i < element.getEditor().size(); i++)
14020      composeContactDetail(t, "ResearchElementDefinition", "editor", element.getEditor().get(i), i);
14021    for (int i = 0; i < element.getReviewer().size(); i++)
14022      composeContactDetail(t, "ResearchElementDefinition", "reviewer", element.getReviewer().get(i), i);
14023    for (int i = 0; i < element.getEndorser().size(); i++)
14024      composeContactDetail(t, "ResearchElementDefinition", "endorser", element.getEndorser().get(i), i);
14025    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
14026      composeRelatedArtifact(t, "ResearchElementDefinition", "relatedArtifact", element.getRelatedArtifact().get(i), i);
14027    for (int i = 0; i < element.getLibrary().size(); i++)
14028      composeCanonical(t, "ResearchElementDefinition", "library", element.getLibrary().get(i), i);
14029    if (element.hasTypeElement())
14030      composeEnum(t, "ResearchElementDefinition", "type", element.getTypeElement(), -1);
14031    if (element.hasVariableTypeElement())
14032      composeEnum(t, "ResearchElementDefinition", "variableType", element.getVariableTypeElement(), -1);
14033    for (int i = 0; i < element.getCharacteristic().size(); i++)
14034      composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(t, "ResearchElementDefinition", "characteristic", element.getCharacteristic().get(i), i);
14035  }
14036
14037  protected void composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(Complex parent, String parentType, String name, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element, int index) {
14038    if (element == null) 
14039      return;
14040    Complex t;
14041    if (Utilities.noString(parentType))
14042      t = parent;
14043    else {
14044      t = parent.predicate("fhir:"+parentType+'.'+name);
14045    }
14046    composeBackboneElement(t, "characteristic", name, element, index);
14047    if (element.hasDefinition())
14048      composeType(t, "ResearchElementDefinition", "definition", element.getDefinition(), -1);
14049    for (int i = 0; i < element.getUsageContext().size(); i++)
14050      composeUsageContext(t, "ResearchElementDefinition", "usageContext", element.getUsageContext().get(i), i);
14051    if (element.hasExcludeElement())
14052      composeBoolean(t, "ResearchElementDefinition", "exclude", element.getExcludeElement(), -1);
14053    if (element.hasUnitOfMeasure())
14054      composeCodeableConcept(t, "ResearchElementDefinition", "unitOfMeasure", element.getUnitOfMeasure(), -1);
14055    if (element.hasStudyEffectiveDescriptionElement())
14056      composeString(t, "ResearchElementDefinition", "studyEffectiveDescription", element.getStudyEffectiveDescriptionElement(), -1);
14057    if (element.hasStudyEffective())
14058      composeType(t, "ResearchElementDefinition", "studyEffective", element.getStudyEffective(), -1);
14059    if (element.hasStudyEffectiveTimeFromStart())
14060      composeDuration(t, "ResearchElementDefinition", "studyEffectiveTimeFromStart", element.getStudyEffectiveTimeFromStart(), -1);
14061    if (element.hasStudyEffectiveGroupMeasureElement())
14062      composeEnum(t, "ResearchElementDefinition", "studyEffectiveGroupMeasure", element.getStudyEffectiveGroupMeasureElement(), -1);
14063    if (element.hasParticipantEffectiveDescriptionElement())
14064      composeString(t, "ResearchElementDefinition", "participantEffectiveDescription", element.getParticipantEffectiveDescriptionElement(), -1);
14065    if (element.hasParticipantEffective())
14066      composeType(t, "ResearchElementDefinition", "participantEffective", element.getParticipantEffective(), -1);
14067    if (element.hasParticipantEffectiveTimeFromStart())
14068      composeDuration(t, "ResearchElementDefinition", "participantEffectiveTimeFromStart", element.getParticipantEffectiveTimeFromStart(), -1);
14069    if (element.hasParticipantEffectiveGroupMeasureElement())
14070      composeEnum(t, "ResearchElementDefinition", "participantEffectiveGroupMeasure", element.getParticipantEffectiveGroupMeasureElement(), -1);
14071  }
14072
14073  protected void composeResearchStudy(Complex parent, String parentType, String name, ResearchStudy element, int index) {
14074    if (element == null) 
14075      return;
14076    Complex t;
14077    if (Utilities.noString(parentType))
14078      t = parent;
14079    else {
14080      t = parent.predicate("fhir:"+parentType+'.'+name);
14081    }
14082    composeDomainResource(t, "ResearchStudy", name, element, index);
14083    for (int i = 0; i < element.getIdentifier().size(); i++)
14084      composeIdentifier(t, "ResearchStudy", "identifier", element.getIdentifier().get(i), i);
14085    if (element.hasTitleElement())
14086      composeString(t, "ResearchStudy", "title", element.getTitleElement(), -1);
14087    for (int i = 0; i < element.getProtocol().size(); i++)
14088      composeReference(t, "ResearchStudy", "protocol", element.getProtocol().get(i), i);
14089    for (int i = 0; i < element.getPartOf().size(); i++)
14090      composeReference(t, "ResearchStudy", "partOf", element.getPartOf().get(i), i);
14091    if (element.hasStatusElement())
14092      composeEnum(t, "ResearchStudy", "status", element.getStatusElement(), -1);
14093    if (element.hasPrimaryPurposeType())
14094      composeCodeableConcept(t, "ResearchStudy", "primaryPurposeType", element.getPrimaryPurposeType(), -1);
14095    if (element.hasPhase())
14096      composeCodeableConcept(t, "ResearchStudy", "phase", element.getPhase(), -1);
14097    for (int i = 0; i < element.getCategory().size(); i++)
14098      composeCodeableConcept(t, "ResearchStudy", "category", element.getCategory().get(i), i);
14099    for (int i = 0; i < element.getFocus().size(); i++)
14100      composeCodeableConcept(t, "ResearchStudy", "focus", element.getFocus().get(i), i);
14101    for (int i = 0; i < element.getCondition().size(); i++)
14102      composeCodeableConcept(t, "ResearchStudy", "condition", element.getCondition().get(i), i);
14103    for (int i = 0; i < element.getContact().size(); i++)
14104      composeContactDetail(t, "ResearchStudy", "contact", element.getContact().get(i), i);
14105    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
14106      composeRelatedArtifact(t, "ResearchStudy", "relatedArtifact", element.getRelatedArtifact().get(i), i);
14107    for (int i = 0; i < element.getKeyword().size(); i++)
14108      composeCodeableConcept(t, "ResearchStudy", "keyword", element.getKeyword().get(i), i);
14109    for (int i = 0; i < element.getLocation().size(); i++)
14110      composeCodeableConcept(t, "ResearchStudy", "location", element.getLocation().get(i), i);
14111    if (element.hasDescriptionElement())
14112      composeMarkdown(t, "ResearchStudy", "description", element.getDescriptionElement(), -1);
14113    for (int i = 0; i < element.getEnrollment().size(); i++)
14114      composeReference(t, "ResearchStudy", "enrollment", element.getEnrollment().get(i), i);
14115    if (element.hasPeriod())
14116      composePeriod(t, "ResearchStudy", "period", element.getPeriod(), -1);
14117    if (element.hasSponsor())
14118      composeReference(t, "ResearchStudy", "sponsor", element.getSponsor(), -1);
14119    if (element.hasPrincipalInvestigator())
14120      composeReference(t, "ResearchStudy", "principalInvestigator", element.getPrincipalInvestigator(), -1);
14121    for (int i = 0; i < element.getSite().size(); i++)
14122      composeReference(t, "ResearchStudy", "site", element.getSite().get(i), i);
14123    if (element.hasReasonStopped())
14124      composeCodeableConcept(t, "ResearchStudy", "reasonStopped", element.getReasonStopped(), -1);
14125    for (int i = 0; i < element.getNote().size(); i++)
14126      composeAnnotation(t, "ResearchStudy", "note", element.getNote().get(i), i);
14127    for (int i = 0; i < element.getArm().size(); i++)
14128      composeResearchStudyResearchStudyArmComponent(t, "ResearchStudy", "arm", element.getArm().get(i), i);
14129    for (int i = 0; i < element.getObjective().size(); i++)
14130      composeResearchStudyResearchStudyObjectiveComponent(t, "ResearchStudy", "objective", element.getObjective().get(i), i);
14131  }
14132
14133  protected void composeResearchStudyResearchStudyArmComponent(Complex parent, String parentType, String name, ResearchStudy.ResearchStudyArmComponent element, int index) {
14134    if (element == null) 
14135      return;
14136    Complex t;
14137    if (Utilities.noString(parentType))
14138      t = parent;
14139    else {
14140      t = parent.predicate("fhir:"+parentType+'.'+name);
14141    }
14142    composeBackboneElement(t, "arm", name, element, index);
14143    if (element.hasNameElement())
14144      composeString(t, "ResearchStudy", "name", element.getNameElement(), -1);
14145    if (element.hasType())
14146      composeCodeableConcept(t, "ResearchStudy", "type", element.getType(), -1);
14147    if (element.hasDescriptionElement())
14148      composeString(t, "ResearchStudy", "description", element.getDescriptionElement(), -1);
14149  }
14150
14151  protected void composeResearchStudyResearchStudyObjectiveComponent(Complex parent, String parentType, String name, ResearchStudy.ResearchStudyObjectiveComponent element, int index) {
14152    if (element == null) 
14153      return;
14154    Complex t;
14155    if (Utilities.noString(parentType))
14156      t = parent;
14157    else {
14158      t = parent.predicate("fhir:"+parentType+'.'+name);
14159    }
14160    composeBackboneElement(t, "objective", name, element, index);
14161    if (element.hasNameElement())
14162      composeString(t, "ResearchStudy", "name", element.getNameElement(), -1);
14163    if (element.hasType())
14164      composeCodeableConcept(t, "ResearchStudy", "type", element.getType(), -1);
14165  }
14166
14167  protected void composeResearchSubject(Complex parent, String parentType, String name, ResearchSubject element, int index) {
14168    if (element == null) 
14169      return;
14170    Complex t;
14171    if (Utilities.noString(parentType))
14172      t = parent;
14173    else {
14174      t = parent.predicate("fhir:"+parentType+'.'+name);
14175    }
14176    composeDomainResource(t, "ResearchSubject", name, element, index);
14177    for (int i = 0; i < element.getIdentifier().size(); i++)
14178      composeIdentifier(t, "ResearchSubject", "identifier", element.getIdentifier().get(i), i);
14179    if (element.hasStatusElement())
14180      composeEnum(t, "ResearchSubject", "status", element.getStatusElement(), -1);
14181    if (element.hasPeriod())
14182      composePeriod(t, "ResearchSubject", "period", element.getPeriod(), -1);
14183    if (element.hasStudy())
14184      composeReference(t, "ResearchSubject", "study", element.getStudy(), -1);
14185    if (element.hasIndividual())
14186      composeReference(t, "ResearchSubject", "individual", element.getIndividual(), -1);
14187    if (element.hasAssignedArmElement())
14188      composeString(t, "ResearchSubject", "assignedArm", element.getAssignedArmElement(), -1);
14189    if (element.hasActualArmElement())
14190      composeString(t, "ResearchSubject", "actualArm", element.getActualArmElement(), -1);
14191    if (element.hasConsent())
14192      composeReference(t, "ResearchSubject", "consent", element.getConsent(), -1);
14193  }
14194
14195  protected void composeRiskAssessment(Complex parent, String parentType, String name, RiskAssessment element, int index) {
14196    if (element == null) 
14197      return;
14198    Complex t;
14199    if (Utilities.noString(parentType))
14200      t = parent;
14201    else {
14202      t = parent.predicate("fhir:"+parentType+'.'+name);
14203    }
14204    composeDomainResource(t, "RiskAssessment", name, element, index);
14205    for (int i = 0; i < element.getIdentifier().size(); i++)
14206      composeIdentifier(t, "RiskAssessment", "identifier", element.getIdentifier().get(i), i);
14207    if (element.hasBasedOn())
14208      composeReference(t, "RiskAssessment", "basedOn", element.getBasedOn(), -1);
14209    if (element.hasParent())
14210      composeReference(t, "RiskAssessment", "parent", element.getParent(), -1);
14211    if (element.hasStatusElement())
14212      composeEnum(t, "RiskAssessment", "status", element.getStatusElement(), -1);
14213    if (element.hasMethod())
14214      composeCodeableConcept(t, "RiskAssessment", "method", element.getMethod(), -1);
14215    if (element.hasCode())
14216      composeCodeableConcept(t, "RiskAssessment", "code", element.getCode(), -1);
14217    if (element.hasSubject())
14218      composeReference(t, "RiskAssessment", "subject", element.getSubject(), -1);
14219    if (element.hasEncounter())
14220      composeReference(t, "RiskAssessment", "encounter", element.getEncounter(), -1);
14221    if (element.hasOccurrence())
14222      composeType(t, "RiskAssessment", "occurrence", element.getOccurrence(), -1);
14223    if (element.hasCondition())
14224      composeReference(t, "RiskAssessment", "condition", element.getCondition(), -1);
14225    if (element.hasPerformer())
14226      composeReference(t, "RiskAssessment", "performer", element.getPerformer(), -1);
14227    for (int i = 0; i < element.getReasonCode().size(); i++)
14228      composeCodeableConcept(t, "RiskAssessment", "reasonCode", element.getReasonCode().get(i), i);
14229    for (int i = 0; i < element.getReasonReference().size(); i++)
14230      composeReference(t, "RiskAssessment", "reasonReference", element.getReasonReference().get(i), i);
14231    for (int i = 0; i < element.getBasis().size(); i++)
14232      composeReference(t, "RiskAssessment", "basis", element.getBasis().get(i), i);
14233    for (int i = 0; i < element.getPrediction().size(); i++)
14234      composeRiskAssessmentRiskAssessmentPredictionComponent(t, "RiskAssessment", "prediction", element.getPrediction().get(i), i);
14235    if (element.hasMitigationElement())
14236      composeString(t, "RiskAssessment", "mitigation", element.getMitigationElement(), -1);
14237    for (int i = 0; i < element.getNote().size(); i++)
14238      composeAnnotation(t, "RiskAssessment", "note", element.getNote().get(i), i);
14239  }
14240
14241  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(Complex parent, String parentType, String name, RiskAssessment.RiskAssessmentPredictionComponent element, int index) {
14242    if (element == null) 
14243      return;
14244    Complex t;
14245    if (Utilities.noString(parentType))
14246      t = parent;
14247    else {
14248      t = parent.predicate("fhir:"+parentType+'.'+name);
14249    }
14250    composeBackboneElement(t, "prediction", name, element, index);
14251    if (element.hasOutcome())
14252      composeCodeableConcept(t, "RiskAssessment", "outcome", element.getOutcome(), -1);
14253    if (element.hasProbability())
14254      composeType(t, "RiskAssessment", "probability", element.getProbability(), -1);
14255    if (element.hasQualitativeRisk())
14256      composeCodeableConcept(t, "RiskAssessment", "qualitativeRisk", element.getQualitativeRisk(), -1);
14257    if (element.hasRelativeRiskElement())
14258      composeDecimal(t, "RiskAssessment", "relativeRisk", element.getRelativeRiskElement(), -1);
14259    if (element.hasWhen())
14260      composeType(t, "RiskAssessment", "when", element.getWhen(), -1);
14261    if (element.hasRationaleElement())
14262      composeString(t, "RiskAssessment", "rationale", element.getRationaleElement(), -1);
14263  }
14264
14265  protected void composeRiskEvidenceSynthesis(Complex parent, String parentType, String name, RiskEvidenceSynthesis element, int index) {
14266    if (element == null) 
14267      return;
14268    Complex t;
14269    if (Utilities.noString(parentType))
14270      t = parent;
14271    else {
14272      t = parent.predicate("fhir:"+parentType+'.'+name);
14273    }
14274    composeDomainResource(t, "RiskEvidenceSynthesis", name, element, index);
14275    if (element.hasUrlElement())
14276      composeUri(t, "RiskEvidenceSynthesis", "url", element.getUrlElement(), -1);
14277    for (int i = 0; i < element.getIdentifier().size(); i++)
14278      composeIdentifier(t, "RiskEvidenceSynthesis", "identifier", element.getIdentifier().get(i), i);
14279    if (element.hasVersionElement())
14280      composeString(t, "RiskEvidenceSynthesis", "version", element.getVersionElement(), -1);
14281    if (element.hasNameElement())
14282      composeString(t, "RiskEvidenceSynthesis", "name", element.getNameElement(), -1);
14283    if (element.hasTitleElement())
14284      composeString(t, "RiskEvidenceSynthesis", "title", element.getTitleElement(), -1);
14285    if (element.hasStatusElement())
14286      composeEnum(t, "RiskEvidenceSynthesis", "status", element.getStatusElement(), -1);
14287    if (element.hasDateElement())
14288      composeDateTime(t, "RiskEvidenceSynthesis", "date", element.getDateElement(), -1);
14289    if (element.hasPublisherElement())
14290      composeString(t, "RiskEvidenceSynthesis", "publisher", element.getPublisherElement(), -1);
14291    for (int i = 0; i < element.getContact().size(); i++)
14292      composeContactDetail(t, "RiskEvidenceSynthesis", "contact", element.getContact().get(i), i);
14293    if (element.hasDescriptionElement())
14294      composeMarkdown(t, "RiskEvidenceSynthesis", "description", element.getDescriptionElement(), -1);
14295    for (int i = 0; i < element.getNote().size(); i++)
14296      composeAnnotation(t, "RiskEvidenceSynthesis", "note", element.getNote().get(i), i);
14297    for (int i = 0; i < element.getUseContext().size(); i++)
14298      composeUsageContext(t, "RiskEvidenceSynthesis", "useContext", element.getUseContext().get(i), i);
14299    for (int i = 0; i < element.getJurisdiction().size(); i++)
14300      composeCodeableConcept(t, "RiskEvidenceSynthesis", "jurisdiction", element.getJurisdiction().get(i), i);
14301    if (element.hasCopyrightElement())
14302      composeMarkdown(t, "RiskEvidenceSynthesis", "copyright", element.getCopyrightElement(), -1);
14303    if (element.hasApprovalDateElement())
14304      composeDate(t, "RiskEvidenceSynthesis", "approvalDate", element.getApprovalDateElement(), -1);
14305    if (element.hasLastReviewDateElement())
14306      composeDate(t, "RiskEvidenceSynthesis", "lastReviewDate", element.getLastReviewDateElement(), -1);
14307    if (element.hasEffectivePeriod())
14308      composePeriod(t, "RiskEvidenceSynthesis", "effectivePeriod", element.getEffectivePeriod(), -1);
14309    for (int i = 0; i < element.getTopic().size(); i++)
14310      composeCodeableConcept(t, "RiskEvidenceSynthesis", "topic", element.getTopic().get(i), i);
14311    for (int i = 0; i < element.getAuthor().size(); i++)
14312      composeContactDetail(t, "RiskEvidenceSynthesis", "author", element.getAuthor().get(i), i);
14313    for (int i = 0; i < element.getEditor().size(); i++)
14314      composeContactDetail(t, "RiskEvidenceSynthesis", "editor", element.getEditor().get(i), i);
14315    for (int i = 0; i < element.getReviewer().size(); i++)
14316      composeContactDetail(t, "RiskEvidenceSynthesis", "reviewer", element.getReviewer().get(i), i);
14317    for (int i = 0; i < element.getEndorser().size(); i++)
14318      composeContactDetail(t, "RiskEvidenceSynthesis", "endorser", element.getEndorser().get(i), i);
14319    for (int i = 0; i < element.getRelatedArtifact().size(); i++)
14320      composeRelatedArtifact(t, "RiskEvidenceSynthesis", "relatedArtifact", element.getRelatedArtifact().get(i), i);
14321    if (element.hasSynthesisType())
14322      composeCodeableConcept(t, "RiskEvidenceSynthesis", "synthesisType", element.getSynthesisType(), -1);
14323    if (element.hasStudyType())
14324      composeCodeableConcept(t, "RiskEvidenceSynthesis", "studyType", element.getStudyType(), -1);
14325    if (element.hasPopulation())
14326      composeReference(t, "RiskEvidenceSynthesis", "population", element.getPopulation(), -1);
14327    if (element.hasExposure())
14328      composeReference(t, "RiskEvidenceSynthesis", "exposure", element.getExposure(), -1);
14329    if (element.hasOutcome())
14330      composeReference(t, "RiskEvidenceSynthesis", "outcome", element.getOutcome(), -1);
14331    if (element.hasSampleSize())
14332      composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(t, "RiskEvidenceSynthesis", "sampleSize", element.getSampleSize(), -1);
14333    if (element.hasRiskEstimate())
14334      composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(t, "RiskEvidenceSynthesis", "riskEstimate", element.getRiskEstimate(), -1);
14335    for (int i = 0; i < element.getCertainty().size(); i++)
14336      composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(t, "RiskEvidenceSynthesis", "certainty", element.getCertainty().get(i), i);
14337  }
14338
14339  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(Complex parent, String parentType, String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent element, int index) {
14340    if (element == null) 
14341      return;
14342    Complex t;
14343    if (Utilities.noString(parentType))
14344      t = parent;
14345    else {
14346      t = parent.predicate("fhir:"+parentType+'.'+name);
14347    }
14348    composeBackboneElement(t, "sampleSize", name, element, index);
14349    if (element.hasDescriptionElement())
14350      composeString(t, "RiskEvidenceSynthesis", "description", element.getDescriptionElement(), -1);
14351    if (element.hasNumberOfStudiesElement())
14352      composeInteger(t, "RiskEvidenceSynthesis", "numberOfStudies", element.getNumberOfStudiesElement(), -1);
14353    if (element.hasNumberOfParticipantsElement())
14354      composeInteger(t, "RiskEvidenceSynthesis", "numberOfParticipants", element.getNumberOfParticipantsElement(), -1);
14355  }
14356
14357  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(Complex parent, String parentType, String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent element, int index) {
14358    if (element == null) 
14359      return;
14360    Complex t;
14361    if (Utilities.noString(parentType))
14362      t = parent;
14363    else {
14364      t = parent.predicate("fhir:"+parentType+'.'+name);
14365    }
14366    composeBackboneElement(t, "riskEstimate", name, element, index);
14367    if (element.hasDescriptionElement())
14368      composeString(t, "RiskEvidenceSynthesis", "description", element.getDescriptionElement(), -1);
14369    if (element.hasType())
14370      composeCodeableConcept(t, "RiskEvidenceSynthesis", "type", element.getType(), -1);
14371    if (element.hasValueElement())
14372      composeDecimal(t, "RiskEvidenceSynthesis", "value", element.getValueElement(), -1);
14373    if (element.hasUnitOfMeasure())
14374      composeCodeableConcept(t, "RiskEvidenceSynthesis", "unitOfMeasure", element.getUnitOfMeasure(), -1);
14375    if (element.hasDenominatorCountElement())
14376      composeInteger(t, "RiskEvidenceSynthesis", "denominatorCount", element.getDenominatorCountElement(), -1);
14377    if (element.hasNumeratorCountElement())
14378      composeInteger(t, "RiskEvidenceSynthesis", "numeratorCount", element.getNumeratorCountElement(), -1);
14379    for (int i = 0; i < element.getPrecisionEstimate().size(); i++)
14380      composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(t, "RiskEvidenceSynthesis", "precisionEstimate", element.getPrecisionEstimate().get(i), i);
14381  }
14382
14383  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(Complex parent, String parentType, String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent element, int index) {
14384    if (element == null) 
14385      return;
14386    Complex t;
14387    if (Utilities.noString(parentType))
14388      t = parent;
14389    else {
14390      t = parent.predicate("fhir:"+parentType+'.'+name);
14391    }
14392    composeBackboneElement(t, "precisionEstimate", name, element, index);
14393    if (element.hasType())
14394      composeCodeableConcept(t, "RiskEvidenceSynthesis", "type", element.getType(), -1);
14395    if (element.hasLevelElement())
14396      composeDecimal(t, "RiskEvidenceSynthesis", "level", element.getLevelElement(), -1);
14397    if (element.hasFromElement())
14398      composeDecimal(t, "RiskEvidenceSynthesis", "from", element.getFromElement(), -1);
14399    if (element.hasToElement())
14400      composeDecimal(t, "RiskEvidenceSynthesis", "to", element.getToElement(), -1);
14401  }
14402
14403  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(Complex parent, String parentType, String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent element, int index) {
14404    if (element == null) 
14405      return;
14406    Complex t;
14407    if (Utilities.noString(parentType))
14408      t = parent;
14409    else {
14410      t = parent.predicate("fhir:"+parentType+'.'+name);
14411    }
14412    composeBackboneElement(t, "certainty", name, element, index);
14413    for (int i = 0; i < element.getRating().size(); i++)
14414      composeCodeableConcept(t, "RiskEvidenceSynthesis", "rating", element.getRating().get(i), i);
14415    for (int i = 0; i < element.getNote().size(); i++)
14416      composeAnnotation(t, "RiskEvidenceSynthesis", "note", element.getNote().get(i), i);
14417    for (int i = 0; i < element.getCertaintySubcomponent().size(); i++)
14418      composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(t, "RiskEvidenceSynthesis", "certaintySubcomponent", element.getCertaintySubcomponent().get(i), i);
14419  }
14420
14421  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(Complex parent, String parentType, String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent element, int index) {
14422    if (element == null) 
14423      return;
14424    Complex t;
14425    if (Utilities.noString(parentType))
14426      t = parent;
14427    else {
14428      t = parent.predicate("fhir:"+parentType+'.'+name);
14429    }
14430    composeBackboneElement(t, "certaintySubcomponent", name, element, index);
14431    if (element.hasType())
14432      composeCodeableConcept(t, "RiskEvidenceSynthesis", "type", element.getType(), -1);
14433    for (int i = 0; i < element.getRating().size(); i++)
14434      composeCodeableConcept(t, "RiskEvidenceSynthesis", "rating", element.getRating().get(i), i);
14435    for (int i = 0; i < element.getNote().size(); i++)
14436      composeAnnotation(t, "RiskEvidenceSynthesis", "note", element.getNote().get(i), i);
14437  }
14438
14439  protected void composeSchedule(Complex parent, String parentType, String name, Schedule element, int index) {
14440    if (element == null) 
14441      return;
14442    Complex t;
14443    if (Utilities.noString(parentType))
14444      t = parent;
14445    else {
14446      t = parent.predicate("fhir:"+parentType+'.'+name);
14447    }
14448    composeDomainResource(t, "Schedule", name, element, index);
14449    for (int i = 0; i < element.getIdentifier().size(); i++)
14450      composeIdentifier(t, "Schedule", "identifier", element.getIdentifier().get(i), i);
14451    if (element.hasActiveElement())
14452      composeBoolean(t, "Schedule", "active", element.getActiveElement(), -1);
14453    for (int i = 0; i < element.getServiceCategory().size(); i++)
14454      composeCodeableConcept(t, "Schedule", "serviceCategory", element.getServiceCategory().get(i), i);
14455    for (int i = 0; i < element.getServiceType().size(); i++)
14456      composeCodeableConcept(t, "Schedule", "serviceType", element.getServiceType().get(i), i);
14457    for (int i = 0; i < element.getSpecialty().size(); i++)
14458      composeCodeableConcept(t, "Schedule", "specialty", element.getSpecialty().get(i), i);
14459    for (int i = 0; i < element.getActor().size(); i++)
14460      composeReference(t, "Schedule", "actor", element.getActor().get(i), i);
14461    if (element.hasPlanningHorizon())
14462      composePeriod(t, "Schedule", "planningHorizon", element.getPlanningHorizon(), -1);
14463    if (element.hasCommentElement())
14464      composeString(t, "Schedule", "comment", element.getCommentElement(), -1);
14465  }
14466
14467  protected void composeSearchParameter(Complex parent, String parentType, String name, SearchParameter element, int index) {
14468    if (element == null) 
14469      return;
14470    Complex t;
14471    if (Utilities.noString(parentType))
14472      t = parent;
14473    else {
14474      t = parent.predicate("fhir:"+parentType+'.'+name);
14475    }
14476    composeDomainResource(t, "SearchParameter", name, element, index);
14477    if (element.hasUrlElement())
14478      composeUri(t, "SearchParameter", "url", element.getUrlElement(), -1);
14479    if (element.hasVersionElement())
14480      composeString(t, "SearchParameter", "version", element.getVersionElement(), -1);
14481    if (element.hasNameElement())
14482      composeString(t, "SearchParameter", "name", element.getNameElement(), -1);
14483    if (element.hasDerivedFromElement())
14484      composeCanonical(t, "SearchParameter", "derivedFrom", element.getDerivedFromElement(), -1);
14485    if (element.hasStatusElement())
14486      composeEnum(t, "SearchParameter", "status", element.getStatusElement(), -1);
14487    if (element.hasExperimentalElement())
14488      composeBoolean(t, "SearchParameter", "experimental", element.getExperimentalElement(), -1);
14489    if (element.hasDateElement())
14490      composeDateTime(t, "SearchParameter", "date", element.getDateElement(), -1);
14491    if (element.hasPublisherElement())
14492      composeString(t, "SearchParameter", "publisher", element.getPublisherElement(), -1);
14493    for (int i = 0; i < element.getContact().size(); i++)
14494      composeContactDetail(t, "SearchParameter", "contact", element.getContact().get(i), i);
14495    if (element.hasDescriptionElement())
14496      composeMarkdown(t, "SearchParameter", "description", element.getDescriptionElement(), -1);
14497    for (int i = 0; i < element.getUseContext().size(); i++)
14498      composeUsageContext(t, "SearchParameter", "useContext", element.getUseContext().get(i), i);
14499    for (int i = 0; i < element.getJurisdiction().size(); i++)
14500      composeCodeableConcept(t, "SearchParameter", "jurisdiction", element.getJurisdiction().get(i), i);
14501    if (element.hasPurposeElement())
14502      composeMarkdown(t, "SearchParameter", "purpose", element.getPurposeElement(), -1);
14503    if (element.hasCodeElement())
14504      composeCode(t, "SearchParameter", "code", element.getCodeElement(), -1);
14505    for (int i = 0; i < element.getBase().size(); i++)
14506      composeCode(t, "SearchParameter", "base", element.getBase().get(i), i);
14507    if (element.hasTypeElement())
14508      composeEnum(t, "SearchParameter", "type", element.getTypeElement(), -1);
14509    if (element.hasExpressionElement())
14510      composeString(t, "SearchParameter", "expression", element.getExpressionElement(), -1);
14511    if (element.hasXpathElement())
14512      composeString(t, "SearchParameter", "xpath", element.getXpathElement(), -1);
14513    if (element.hasXpathUsageElement())
14514      composeEnum(t, "SearchParameter", "xpathUsage", element.getXpathUsageElement(), -1);
14515    for (int i = 0; i < element.getTarget().size(); i++)
14516      composeCode(t, "SearchParameter", "target", element.getTarget().get(i), i);
14517    if (element.hasMultipleOrElement())
14518      composeBoolean(t, "SearchParameter", "multipleOr", element.getMultipleOrElement(), -1);
14519    if (element.hasMultipleAndElement())
14520      composeBoolean(t, "SearchParameter", "multipleAnd", element.getMultipleAndElement(), -1);
14521    for (int i = 0; i < element.getComparator().size(); i++)
14522      composeEnum(t, "SearchParameter", "comparator", element.getComparator().get(i), i);
14523    for (int i = 0; i < element.getModifier().size(); i++)
14524      composeEnum(t, "SearchParameter", "modifier", element.getModifier().get(i), i);
14525    for (int i = 0; i < element.getChain().size(); i++)
14526      composeString(t, "SearchParameter", "chain", element.getChain().get(i), i);
14527    for (int i = 0; i < element.getComponent().size(); i++)
14528      composeSearchParameterSearchParameterComponentComponent(t, "SearchParameter", "component", element.getComponent().get(i), i);
14529  }
14530
14531  protected void composeSearchParameterSearchParameterComponentComponent(Complex parent, String parentType, String name, SearchParameter.SearchParameterComponentComponent element, int index) {
14532    if (element == null) 
14533      return;
14534    Complex t;
14535    if (Utilities.noString(parentType))
14536      t = parent;
14537    else {
14538      t = parent.predicate("fhir:"+parentType+'.'+name);
14539    }
14540    composeBackboneElement(t, "component", name, element, index);
14541    if (element.hasDefinitionElement())
14542      composeCanonical(t, "SearchParameter", "definition", element.getDefinitionElement(), -1);
14543    if (element.hasExpressionElement())
14544      composeString(t, "SearchParameter", "expression", element.getExpressionElement(), -1);
14545  }
14546
14547  protected void composeServiceRequest(Complex parent, String parentType, String name, ServiceRequest element, int index) {
14548    if (element == null) 
14549      return;
14550    Complex t;
14551    if (Utilities.noString(parentType))
14552      t = parent;
14553    else {
14554      t = parent.predicate("fhir:"+parentType+'.'+name);
14555    }
14556    composeDomainResource(t, "ServiceRequest", name, element, index);
14557    for (int i = 0; i < element.getIdentifier().size(); i++)
14558      composeIdentifier(t, "ServiceRequest", "identifier", element.getIdentifier().get(i), i);
14559    for (int i = 0; i < element.getInstantiatesCanonical().size(); i++)
14560      composeCanonical(t, "ServiceRequest", "instantiatesCanonical", element.getInstantiatesCanonical().get(i), i);
14561    for (int i = 0; i < element.getInstantiatesUri().size(); i++)
14562      composeUri(t, "ServiceRequest", "instantiatesUri", element.getInstantiatesUri().get(i), i);
14563    for (int i = 0; i < element.getBasedOn().size(); i++)
14564      composeReference(t, "ServiceRequest", "basedOn", element.getBasedOn().get(i), i);
14565    for (int i = 0; i < element.getReplaces().size(); i++)
14566      composeReference(t, "ServiceRequest", "replaces", element.getReplaces().get(i), i);
14567    if (element.hasRequisition())
14568      composeIdentifier(t, "ServiceRequest", "requisition", element.getRequisition(), -1);
14569    if (element.hasStatusElement())
14570      composeEnum(t, "ServiceRequest", "status", element.getStatusElement(), -1);
14571    if (element.hasIntentElement())
14572      composeEnum(t, "ServiceRequest", "intent", element.getIntentElement(), -1);
14573    for (int i = 0; i < element.getCategory().size(); i++)
14574      composeCodeableConcept(t, "ServiceRequest", "category", element.getCategory().get(i), i);
14575    if (element.hasPriorityElement())
14576      composeEnum(t, "ServiceRequest", "priority", element.getPriorityElement(), -1);
14577    if (element.hasDoNotPerformElement())
14578      composeBoolean(t, "ServiceRequest", "doNotPerform", element.getDoNotPerformElement(), -1);
14579    if (element.hasCode())
14580      composeCodeableConcept(t, "ServiceRequest", "code", element.getCode(), -1);
14581    for (int i = 0; i < element.getOrderDetail().size(); i++)
14582      composeCodeableConcept(t, "ServiceRequest", "orderDetail", element.getOrderDetail().get(i), i);
14583    if (element.hasQuantity())
14584      composeType(t, "ServiceRequest", "quantity", element.getQuantity(), -1);
14585    if (element.hasSubject())
14586      composeReference(t, "ServiceRequest", "subject", element.getSubject(), -1);
14587    if (element.hasEncounter())
14588      composeReference(t, "ServiceRequest", "encounter", element.getEncounter(), -1);
14589    if (element.hasOccurrence())
14590      composeType(t, "ServiceRequest", "occurrence", element.getOccurrence(), -1);
14591    if (element.hasAsNeeded())
14592      composeType(t, "ServiceRequest", "asNeeded", element.getAsNeeded(), -1);
14593    if (element.hasAuthoredOnElement())
14594      composeDateTime(t, "ServiceRequest", "authoredOn", element.getAuthoredOnElement(), -1);
14595    if (element.hasRequester())
14596      composeReference(t, "ServiceRequest", "requester", element.getRequester(), -1);
14597    if (element.hasPerformerType())
14598      composeCodeableConcept(t, "ServiceRequest", "performerType", element.getPerformerType(), -1);
14599    for (int i = 0; i < element.getPerformer().size(); i++)
14600      composeReference(t, "ServiceRequest", "performer", element.getPerformer().get(i), i);
14601    for (int i = 0; i < element.getLocationCode().size(); i++)
14602      composeCodeableConcept(t, "ServiceRequest", "locationCode", element.getLocationCode().get(i), i);
14603    for (int i = 0; i < element.getLocationReference().size(); i++)
14604      composeReference(t, "ServiceRequest", "locationReference", element.getLocationReference().get(i), i);
14605    for (int i = 0; i < element.getReasonCode().size(); i++)
14606      composeCodeableConcept(t, "ServiceRequest", "reasonCode", element.getReasonCode().get(i), i);
14607    for (int i = 0; i < element.getReasonReference().size(); i++)
14608      composeReference(t, "ServiceRequest", "reasonReference", element.getReasonReference().get(i), i);
14609    for (int i = 0; i < element.getInsurance().size(); i++)
14610      composeReference(t, "ServiceRequest", "insurance", element.getInsurance().get(i), i);
14611    for (int i = 0; i < element.getSupportingInfo().size(); i++)
14612      composeReference(t, "ServiceRequest", "supportingInfo", element.getSupportingInfo().get(i), i);
14613    for (int i = 0; i < element.getSpecimen().size(); i++)
14614      composeReference(t, "ServiceRequest", "specimen", element.getSpecimen().get(i), i);
14615    for (int i = 0; i < element.getBodySite().size(); i++)
14616      composeCodeableConcept(t, "ServiceRequest", "bodySite", element.getBodySite().get(i), i);
14617    for (int i = 0; i < element.getNote().size(); i++)
14618      composeAnnotation(t, "ServiceRequest", "note", element.getNote().get(i), i);
14619    if (element.hasPatientInstructionElement())
14620      composeString(t, "ServiceRequest", "patientInstruction", element.getPatientInstructionElement(), -1);
14621    for (int i = 0; i < element.getRelevantHistory().size(); i++)
14622      composeReference(t, "ServiceRequest", "relevantHistory", element.getRelevantHistory().get(i), i);
14623  }
14624
14625  protected void composeSlot(Complex parent, String parentType, String name, Slot element, int index) {
14626    if (element == null) 
14627      return;
14628    Complex t;
14629    if (Utilities.noString(parentType))
14630      t = parent;
14631    else {
14632      t = parent.predicate("fhir:"+parentType+'.'+name);
14633    }
14634    composeDomainResource(t, "Slot", name, element, index);
14635    for (int i = 0; i < element.getIdentifier().size(); i++)
14636      composeIdentifier(t, "Slot", "identifier", element.getIdentifier().get(i), i);
14637    for (int i = 0; i < element.getServiceCategory().size(); i++)
14638      composeCodeableConcept(t, "Slot", "serviceCategory", element.getServiceCategory().get(i), i);
14639    for (int i = 0; i < element.getServiceType().size(); i++)
14640      composeCodeableConcept(t, "Slot", "serviceType", element.getServiceType().get(i), i);
14641    for (int i = 0; i < element.getSpecialty().size(); i++)
14642      composeCodeableConcept(t, "Slot", "specialty", element.getSpecialty().get(i), i);
14643    if (element.hasAppointmentType())
14644      composeCodeableConcept(t, "Slot", "appointmentType", element.getAppointmentType(), -1);
14645    if (element.hasSchedule())
14646      composeReference(t, "Slot", "schedule", element.getSchedule(), -1);
14647    if (element.hasStatusElement())
14648      composeEnum(t, "Slot", "status", element.getStatusElement(), -1);
14649    if (element.hasStartElement())
14650      composeInstant(t, "Slot", "start", element.getStartElement(), -1);
14651    if (element.hasEndElement())
14652      composeInstant(t, "Slot", "end", element.getEndElement(), -1);
14653    if (element.hasOverbookedElement())
14654      composeBoolean(t, "Slot", "overbooked", element.getOverbookedElement(), -1);
14655    if (element.hasCommentElement())
14656      composeString(t, "Slot", "comment", element.getCommentElement(), -1);
14657  }
14658
14659  protected void composeSpecimen(Complex parent, String parentType, String name, Specimen element, int index) {
14660    if (element == null) 
14661      return;
14662    Complex t;
14663    if (Utilities.noString(parentType))
14664      t = parent;
14665    else {
14666      t = parent.predicate("fhir:"+parentType+'.'+name);
14667    }
14668    composeDomainResource(t, "Specimen", name, element, index);
14669    for (int i = 0; i < element.getIdentifier().size(); i++)
14670      composeIdentifier(t, "Specimen", "identifier", element.getIdentifier().get(i), i);
14671    if (element.hasAccessionIdentifier())
14672      composeIdentifier(t, "Specimen", "accessionIdentifier", element.getAccessionIdentifier(), -1);
14673    if (element.hasStatusElement())
14674      composeEnum(t, "Specimen", "status", element.getStatusElement(), -1);
14675    if (element.hasType())
14676      composeCodeableConcept(t, "Specimen", "type", element.getType(), -1);
14677    if (element.hasSubject())
14678      composeReference(t, "Specimen", "subject", element.getSubject(), -1);
14679    if (element.hasReceivedTimeElement())
14680      composeDateTime(t, "Specimen", "receivedTime", element.getReceivedTimeElement(), -1);
14681    for (int i = 0; i < element.getParent().size(); i++)
14682      composeReference(t, "Specimen", "parent", element.getParent().get(i), i);
14683    for (int i = 0; i < element.getRequest().size(); i++)
14684      composeReference(t, "Specimen", "request", element.getRequest().get(i), i);
14685    if (element.hasCollection())
14686      composeSpecimenSpecimenCollectionComponent(t, "Specimen", "collection", element.getCollection(), -1);
14687    for (int i = 0; i < element.getProcessing().size(); i++)
14688      composeSpecimenSpecimenProcessingComponent(t, "Specimen", "processing", element.getProcessing().get(i), i);
14689    for (int i = 0; i < element.getContainer().size(); i++)
14690      composeSpecimenSpecimenContainerComponent(t, "Specimen", "container", element.getContainer().get(i), i);
14691    for (int i = 0; i < element.getCondition().size(); i++)
14692      composeCodeableConcept(t, "Specimen", "condition", element.getCondition().get(i), i);
14693    for (int i = 0; i < element.getNote().size(); i++)
14694      composeAnnotation(t, "Specimen", "note", element.getNote().get(i), i);
14695  }
14696
14697  protected void composeSpecimenSpecimenCollectionComponent(Complex parent, String parentType, String name, Specimen.SpecimenCollectionComponent element, int index) {
14698    if (element == null) 
14699      return;
14700    Complex t;
14701    if (Utilities.noString(parentType))
14702      t = parent;
14703    else {
14704      t = parent.predicate("fhir:"+parentType+'.'+name);
14705    }
14706    composeBackboneElement(t, "collection", name, element, index);
14707    if (element.hasCollector())
14708      composeReference(t, "Specimen", "collector", element.getCollector(), -1);
14709    if (element.hasCollected())
14710      composeType(t, "Specimen", "collected", element.getCollected(), -1);
14711    if (element.hasDuration())
14712      composeDuration(t, "Specimen", "duration", element.getDuration(), -1);
14713    if (element.hasQuantity())
14714      composeQuantity(t, "Specimen", "quantity", element.getQuantity(), -1);
14715    if (element.hasMethod())
14716      composeCodeableConcept(t, "Specimen", "method", element.getMethod(), -1);
14717    if (element.hasBodySite())
14718      composeCodeableConcept(t, "Specimen", "bodySite", element.getBodySite(), -1);
14719    if (element.hasFastingStatus())
14720      composeType(t, "Specimen", "fastingStatus", element.getFastingStatus(), -1);
14721  }
14722
14723  protected void composeSpecimenSpecimenProcessingComponent(Complex parent, String parentType, String name, Specimen.SpecimenProcessingComponent element, int index) {
14724    if (element == null) 
14725      return;
14726    Complex t;
14727    if (Utilities.noString(parentType))
14728      t = parent;
14729    else {
14730      t = parent.predicate("fhir:"+parentType+'.'+name);
14731    }
14732    composeBackboneElement(t, "processing", name, element, index);
14733    if (element.hasDescriptionElement())
14734      composeString(t, "Specimen", "description", element.getDescriptionElement(), -1);
14735    if (element.hasProcedure())
14736      composeCodeableConcept(t, "Specimen", "procedure", element.getProcedure(), -1);
14737    for (int i = 0; i < element.getAdditive().size(); i++)
14738      composeReference(t, "Specimen", "additive", element.getAdditive().get(i), i);
14739    if (element.hasTime())
14740      composeType(t, "Specimen", "time", element.getTime(), -1);
14741  }
14742
14743  protected void composeSpecimenSpecimenContainerComponent(Complex parent, String parentType, String name, Specimen.SpecimenContainerComponent element, int index) {
14744    if (element == null) 
14745      return;
14746    Complex t;
14747    if (Utilities.noString(parentType))
14748      t = parent;
14749    else {
14750      t = parent.predicate("fhir:"+parentType+'.'+name);
14751    }
14752    composeBackboneElement(t, "container", name, element, index);
14753    for (int i = 0; i < element.getIdentifier().size(); i++)
14754      composeIdentifier(t, "Specimen", "identifier", element.getIdentifier().get(i), i);
14755    if (element.hasDescriptionElement())
14756      composeString(t, "Specimen", "description", element.getDescriptionElement(), -1);
14757    if (element.hasType())
14758      composeCodeableConcept(t, "Specimen", "type", element.getType(), -1);
14759    if (element.hasCapacity())
14760      composeQuantity(t, "Specimen", "capacity", element.getCapacity(), -1);
14761    if (element.hasSpecimenQuantity())
14762      composeQuantity(t, "Specimen", "specimenQuantity", element.getSpecimenQuantity(), -1);
14763    if (element.hasAdditive())
14764      composeType(t, "Specimen", "additive", element.getAdditive(), -1);
14765  }
14766
14767  protected void composeSpecimenDefinition(Complex parent, String parentType, String name, SpecimenDefinition element, int index) {
14768    if (element == null) 
14769      return;
14770    Complex t;
14771    if (Utilities.noString(parentType))
14772      t = parent;
14773    else {
14774      t = parent.predicate("fhir:"+parentType+'.'+name);
14775    }
14776    composeDomainResource(t, "SpecimenDefinition", name, element, index);
14777    if (element.hasIdentifier())
14778      composeIdentifier(t, "SpecimenDefinition", "identifier", element.getIdentifier(), -1);
14779    if (element.hasTypeCollected())
14780      composeCodeableConcept(t, "SpecimenDefinition", "typeCollected", element.getTypeCollected(), -1);
14781    for (int i = 0; i < element.getPatientPreparation().size(); i++)
14782      composeCodeableConcept(t, "SpecimenDefinition", "patientPreparation", element.getPatientPreparation().get(i), i);
14783    if (element.hasTimeAspectElement())
14784      composeString(t, "SpecimenDefinition", "timeAspect", element.getTimeAspectElement(), -1);
14785    for (int i = 0; i < element.getCollection().size(); i++)
14786      composeCodeableConcept(t, "SpecimenDefinition", "collection", element.getCollection().get(i), i);
14787    for (int i = 0; i < element.getTypeTested().size(); i++)
14788      composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(t, "SpecimenDefinition", "typeTested", element.getTypeTested().get(i), i);
14789  }
14790
14791  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element, int index) {
14792    if (element == null) 
14793      return;
14794    Complex t;
14795    if (Utilities.noString(parentType))
14796      t = parent;
14797    else {
14798      t = parent.predicate("fhir:"+parentType+'.'+name);
14799    }
14800    composeBackboneElement(t, "typeTested", name, element, index);
14801    if (element.hasIsDerivedElement())
14802      composeBoolean(t, "SpecimenDefinition", "isDerived", element.getIsDerivedElement(), -1);
14803    if (element.hasType())
14804      composeCodeableConcept(t, "SpecimenDefinition", "type", element.getType(), -1);
14805    if (element.hasPreferenceElement())
14806      composeEnum(t, "SpecimenDefinition", "preference", element.getPreferenceElement(), -1);
14807    if (element.hasContainer())
14808      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(t, "SpecimenDefinition", "container", element.getContainer(), -1);
14809    if (element.hasRequirementElement())
14810      composeString(t, "SpecimenDefinition", "requirement", element.getRequirementElement(), -1);
14811    if (element.hasRetentionTime())
14812      composeDuration(t, "SpecimenDefinition", "retentionTime", element.getRetentionTime(), -1);
14813    for (int i = 0; i < element.getRejectionCriterion().size(); i++)
14814      composeCodeableConcept(t, "SpecimenDefinition", "rejectionCriterion", element.getRejectionCriterion().get(i), i);
14815    for (int i = 0; i < element.getHandling().size(); i++)
14816      composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(t, "SpecimenDefinition", "handling", element.getHandling().get(i), i);
14817  }
14818
14819  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element, int index) {
14820    if (element == null) 
14821      return;
14822    Complex t;
14823    if (Utilities.noString(parentType))
14824      t = parent;
14825    else {
14826      t = parent.predicate("fhir:"+parentType+'.'+name);
14827    }
14828    composeBackboneElement(t, "container", name, element, index);
14829    if (element.hasMaterial())
14830      composeCodeableConcept(t, "SpecimenDefinition", "material", element.getMaterial(), -1);
14831    if (element.hasType())
14832      composeCodeableConcept(t, "SpecimenDefinition", "type", element.getType(), -1);
14833    if (element.hasCap())
14834      composeCodeableConcept(t, "SpecimenDefinition", "cap", element.getCap(), -1);
14835    if (element.hasDescriptionElement())
14836      composeString(t, "SpecimenDefinition", "description", element.getDescriptionElement(), -1);
14837    if (element.hasCapacity())
14838      composeQuantity(t, "SpecimenDefinition", "capacity", element.getCapacity(), -1);
14839    if (element.hasMinimumVolume())
14840      composeType(t, "SpecimenDefinition", "minimumVolume", element.getMinimumVolume(), -1);
14841    for (int i = 0; i < element.getAdditive().size(); i++)
14842      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(t, "SpecimenDefinition", "additive", element.getAdditive().get(i), i);
14843    if (element.hasPreparationElement())
14844      composeString(t, "SpecimenDefinition", "preparation", element.getPreparationElement(), -1);
14845  }
14846
14847  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element, int index) {
14848    if (element == null) 
14849      return;
14850    Complex t;
14851    if (Utilities.noString(parentType))
14852      t = parent;
14853    else {
14854      t = parent.predicate("fhir:"+parentType+'.'+name);
14855    }
14856    composeBackboneElement(t, "additive", name, element, index);
14857    if (element.hasAdditive())
14858      composeType(t, "SpecimenDefinition", "additive", element.getAdditive(), -1);
14859  }
14860
14861  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(Complex parent, String parentType, String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element, int index) {
14862    if (element == null) 
14863      return;
14864    Complex t;
14865    if (Utilities.noString(parentType))
14866      t = parent;
14867    else {
14868      t = parent.predicate("fhir:"+parentType+'.'+name);
14869    }
14870    composeBackboneElement(t, "handling", name, element, index);
14871    if (element.hasTemperatureQualifier())
14872      composeCodeableConcept(t, "SpecimenDefinition", "temperatureQualifier", element.getTemperatureQualifier(), -1);
14873    if (element.hasTemperatureRange())
14874      composeRange(t, "SpecimenDefinition", "temperatureRange", element.getTemperatureRange(), -1);
14875    if (element.hasMaxDuration())
14876      composeDuration(t, "SpecimenDefinition", "maxDuration", element.getMaxDuration(), -1);
14877    if (element.hasInstructionElement())
14878      composeString(t, "SpecimenDefinition", "instruction", element.getInstructionElement(), -1);
14879  }
14880
14881  protected void composeStructureDefinition(Complex parent, String parentType, String name, StructureDefinition element, int index) {
14882    if (element == null) 
14883      return;
14884    Complex t;
14885    if (Utilities.noString(parentType))
14886      t = parent;
14887    else {
14888      t = parent.predicate("fhir:"+parentType+'.'+name);
14889    }
14890    composeDomainResource(t, "StructureDefinition", name, element, index);
14891    if (element.hasUrlElement())
14892      composeUri(t, "StructureDefinition", "url", element.getUrlElement(), -1);
14893    for (int i = 0; i < element.getIdentifier().size(); i++)
14894      composeIdentifier(t, "StructureDefinition", "identifier", element.getIdentifier().get(i), i);
14895    if (element.hasVersionElement())
14896      composeString(t, "StructureDefinition", "version", element.getVersionElement(), -1);
14897    if (element.hasNameElement())
14898      composeString(t, "StructureDefinition", "name", element.getNameElement(), -1);
14899    if (element.hasTitleElement())
14900      composeString(t, "StructureDefinition", "title", element.getTitleElement(), -1);
14901    if (element.hasStatusElement())
14902      composeEnum(t, "StructureDefinition", "status", element.getStatusElement(), -1);
14903    if (element.hasExperimentalElement())
14904      composeBoolean(t, "StructureDefinition", "experimental", element.getExperimentalElement(), -1);
14905    if (element.hasDateElement())
14906      composeDateTime(t, "StructureDefinition", "date", element.getDateElement(), -1);
14907    if (element.hasPublisherElement())
14908      composeString(t, "StructureDefinition", "publisher", element.getPublisherElement(), -1);
14909    for (int i = 0; i < element.getContact().size(); i++)
14910      composeContactDetail(t, "StructureDefinition", "contact", element.getContact().get(i), i);
14911    if (element.hasDescriptionElement())
14912      composeMarkdown(t, "StructureDefinition", "description", element.getDescriptionElement(), -1);
14913    for (int i = 0; i < element.getUseContext().size(); i++)
14914      composeUsageContext(t, "StructureDefinition", "useContext", element.getUseContext().get(i), i);
14915    for (int i = 0; i < element.getJurisdiction().size(); i++)
14916      composeCodeableConcept(t, "StructureDefinition", "jurisdiction", element.getJurisdiction().get(i), i);
14917    if (element.hasPurposeElement())
14918      composeMarkdown(t, "StructureDefinition", "purpose", element.getPurposeElement(), -1);
14919    if (element.hasCopyrightElement())
14920      composeMarkdown(t, "StructureDefinition", "copyright", element.getCopyrightElement(), -1);
14921    for (int i = 0; i < element.getKeyword().size(); i++)
14922      composeCoding(t, "StructureDefinition", "keyword", element.getKeyword().get(i), i);
14923    if (element.hasFhirVersionElement())
14924      composeEnum(t, "StructureDefinition", "fhirVersion", element.getFhirVersionElement(), -1);
14925    for (int i = 0; i < element.getMapping().size(); i++)
14926      composeStructureDefinitionStructureDefinitionMappingComponent(t, "StructureDefinition", "mapping", element.getMapping().get(i), i);
14927    if (element.hasKindElement())
14928      composeEnum(t, "StructureDefinition", "kind", element.getKindElement(), -1);
14929    if (element.hasAbstractElement())
14930      composeBoolean(t, "StructureDefinition", "abstract", element.getAbstractElement(), -1);
14931    for (int i = 0; i < element.getContext().size(); i++)
14932      composeStructureDefinitionStructureDefinitionContextComponent(t, "StructureDefinition", "context", element.getContext().get(i), i);
14933    for (int i = 0; i < element.getContextInvariant().size(); i++)
14934      composeString(t, "StructureDefinition", "contextInvariant", element.getContextInvariant().get(i), i);
14935    if (element.hasTypeElement())
14936      composeUri(t, "StructureDefinition", "type", element.getTypeElement(), -1);
14937    if (element.hasBaseDefinitionElement())
14938      composeCanonical(t, "StructureDefinition", "baseDefinition", element.getBaseDefinitionElement(), -1);
14939    if (element.hasDerivationElement())
14940      composeEnum(t, "StructureDefinition", "derivation", element.getDerivationElement(), -1);
14941    if (element.hasSnapshot())
14942      composeStructureDefinitionStructureDefinitionSnapshotComponent(t, "StructureDefinition", "snapshot", element.getSnapshot(), -1);
14943    if (element.hasDifferential())
14944      composeStructureDefinitionStructureDefinitionDifferentialComponent(t, "StructureDefinition", "differential", element.getDifferential(), -1);
14945  }
14946
14947  protected void composeStructureDefinitionStructureDefinitionMappingComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionMappingComponent element, int index) {
14948    if (element == null) 
14949      return;
14950    Complex t;
14951    if (Utilities.noString(parentType))
14952      t = parent;
14953    else {
14954      t = parent.predicate("fhir:"+parentType+'.'+name);
14955    }
14956    composeBackboneElement(t, "mapping", name, element, index);
14957    if (element.hasIdentityElement())
14958      composeId(t, "StructureDefinition", "identity", element.getIdentityElement(), -1);
14959    if (element.hasUriElement())
14960      composeUri(t, "StructureDefinition", "uri", element.getUriElement(), -1);
14961    if (element.hasNameElement())
14962      composeString(t, "StructureDefinition", "name", element.getNameElement(), -1);
14963    if (element.hasCommentElement())
14964      composeString(t, "StructureDefinition", "comment", element.getCommentElement(), -1);
14965  }
14966
14967  protected void composeStructureDefinitionStructureDefinitionContextComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionContextComponent element, int index) {
14968    if (element == null) 
14969      return;
14970    Complex t;
14971    if (Utilities.noString(parentType))
14972      t = parent;
14973    else {
14974      t = parent.predicate("fhir:"+parentType+'.'+name);
14975    }
14976    composeBackboneElement(t, "context", name, element, index);
14977    if (element.hasTypeElement())
14978      composeEnum(t, "StructureDefinition", "type", element.getTypeElement(), -1);
14979    if (element.hasExpressionElement())
14980      composeString(t, "StructureDefinition", "expression", element.getExpressionElement(), -1);
14981  }
14982
14983  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionSnapshotComponent element, int index) {
14984    if (element == null) 
14985      return;
14986    Complex t;
14987    if (Utilities.noString(parentType))
14988      t = parent;
14989    else {
14990      t = parent.predicate("fhir:"+parentType+'.'+name);
14991    }
14992    composeBackboneElement(t, "snapshot", name, element, index);
14993    for (int i = 0; i < element.getElement().size(); i++)
14994      composeElementDefinition(t, "StructureDefinition", "element", element.getElement().get(i), i);
14995  }
14996
14997  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(Complex parent, String parentType, String name, StructureDefinition.StructureDefinitionDifferentialComponent element, int index) {
14998    if (element == null) 
14999      return;
15000    Complex t;
15001    if (Utilities.noString(parentType))
15002      t = parent;
15003    else {
15004      t = parent.predicate("fhir:"+parentType+'.'+name);
15005    }
15006    composeBackboneElement(t, "differential", name, element, index);
15007    for (int i = 0; i < element.getElement().size(); i++)
15008      composeElementDefinition(t, "StructureDefinition", "element", element.getElement().get(i), i);
15009  }
15010
15011  protected void composeStructureMap(Complex parent, String parentType, String name, StructureMap element, int index) {
15012    if (element == null) 
15013      return;
15014    Complex t;
15015    if (Utilities.noString(parentType))
15016      t = parent;
15017    else {
15018      t = parent.predicate("fhir:"+parentType+'.'+name);
15019    }
15020    composeDomainResource(t, "StructureMap", name, element, index);
15021    if (element.hasUrlElement())
15022      composeUri(t, "StructureMap", "url", element.getUrlElement(), -1);
15023    for (int i = 0; i < element.getIdentifier().size(); i++)
15024      composeIdentifier(t, "StructureMap", "identifier", element.getIdentifier().get(i), i);
15025    if (element.hasVersionElement())
15026      composeString(t, "StructureMap", "version", element.getVersionElement(), -1);
15027    if (element.hasNameElement())
15028      composeString(t, "StructureMap", "name", element.getNameElement(), -1);
15029    if (element.hasTitleElement())
15030      composeString(t, "StructureMap", "title", element.getTitleElement(), -1);
15031    if (element.hasStatusElement())
15032      composeEnum(t, "StructureMap", "status", element.getStatusElement(), -1);
15033    if (element.hasExperimentalElement())
15034      composeBoolean(t, "StructureMap", "experimental", element.getExperimentalElement(), -1);
15035    if (element.hasDateElement())
15036      composeDateTime(t, "StructureMap", "date", element.getDateElement(), -1);
15037    if (element.hasPublisherElement())
15038      composeString(t, "StructureMap", "publisher", element.getPublisherElement(), -1);
15039    for (int i = 0; i < element.getContact().size(); i++)
15040      composeContactDetail(t, "StructureMap", "contact", element.getContact().get(i), i);
15041    if (element.hasDescriptionElement())
15042      composeMarkdown(t, "StructureMap", "description", element.getDescriptionElement(), -1);
15043    for (int i = 0; i < element.getUseContext().size(); i++)
15044      composeUsageContext(t, "StructureMap", "useContext", element.getUseContext().get(i), i);
15045    for (int i = 0; i < element.getJurisdiction().size(); i++)
15046      composeCodeableConcept(t, "StructureMap", "jurisdiction", element.getJurisdiction().get(i), i);
15047    if (element.hasPurposeElement())
15048      composeMarkdown(t, "StructureMap", "purpose", element.getPurposeElement(), -1);
15049    if (element.hasCopyrightElement())
15050      composeMarkdown(t, "StructureMap", "copyright", element.getCopyrightElement(), -1);
15051    for (int i = 0; i < element.getStructure().size(); i++)
15052      composeStructureMapStructureMapStructureComponent(t, "StructureMap", "structure", element.getStructure().get(i), i);
15053    for (int i = 0; i < element.getImport().size(); i++)
15054      composeCanonical(t, "StructureMap", "import", element.getImport().get(i), i);
15055    for (int i = 0; i < element.getGroup().size(); i++)
15056      composeStructureMapStructureMapGroupComponent(t, "StructureMap", "group", element.getGroup().get(i), i);
15057  }
15058
15059  protected void composeStructureMapStructureMapStructureComponent(Complex parent, String parentType, String name, StructureMap.StructureMapStructureComponent element, int index) {
15060    if (element == null) 
15061      return;
15062    Complex t;
15063    if (Utilities.noString(parentType))
15064      t = parent;
15065    else {
15066      t = parent.predicate("fhir:"+parentType+'.'+name);
15067    }
15068    composeBackboneElement(t, "structure", name, element, index);
15069    if (element.hasUrlElement())
15070      composeCanonical(t, "StructureMap", "url", element.getUrlElement(), -1);
15071    if (element.hasModeElement())
15072      composeEnum(t, "StructureMap", "mode", element.getModeElement(), -1);
15073    if (element.hasAliasElement())
15074      composeString(t, "StructureMap", "alias", element.getAliasElement(), -1);
15075    if (element.hasDocumentationElement())
15076      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
15077  }
15078
15079  protected void composeStructureMapStructureMapGroupComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupComponent element, int index) {
15080    if (element == null) 
15081      return;
15082    Complex t;
15083    if (Utilities.noString(parentType))
15084      t = parent;
15085    else {
15086      t = parent.predicate("fhir:"+parentType+'.'+name);
15087    }
15088    composeBackboneElement(t, "group", name, element, index);
15089    if (element.hasNameElement())
15090      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
15091    if (element.hasExtendsElement())
15092      composeId(t, "StructureMap", "extends", element.getExtendsElement(), -1);
15093    if (element.hasTypeModeElement())
15094      composeEnum(t, "StructureMap", "typeMode", element.getTypeModeElement(), -1);
15095    if (element.hasDocumentationElement())
15096      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
15097    for (int i = 0; i < element.getInput().size(); i++)
15098      composeStructureMapStructureMapGroupInputComponent(t, "StructureMap", "input", element.getInput().get(i), i);
15099    for (int i = 0; i < element.getRule().size(); i++)
15100      composeStructureMapStructureMapGroupRuleComponent(t, "StructureMap", "rule", element.getRule().get(i), i);
15101  }
15102
15103  protected void composeStructureMapStructureMapGroupInputComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupInputComponent element, int index) {
15104    if (element == null) 
15105      return;
15106    Complex t;
15107    if (Utilities.noString(parentType))
15108      t = parent;
15109    else {
15110      t = parent.predicate("fhir:"+parentType+'.'+name);
15111    }
15112    composeBackboneElement(t, "input", name, element, index);
15113    if (element.hasNameElement())
15114      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
15115    if (element.hasTypeElement())
15116      composeString(t, "StructureMap", "type", element.getTypeElement(), -1);
15117    if (element.hasModeElement())
15118      composeEnum(t, "StructureMap", "mode", element.getModeElement(), -1);
15119    if (element.hasDocumentationElement())
15120      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
15121  }
15122
15123  protected void composeStructureMapStructureMapGroupRuleComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleComponent element, int index) {
15124    if (element == null) 
15125      return;
15126    Complex t;
15127    if (Utilities.noString(parentType))
15128      t = parent;
15129    else {
15130      t = parent.predicate("fhir:"+parentType+'.'+name);
15131    }
15132    composeBackboneElement(t, "rule", name, element, index);
15133    if (element.hasNameElement())
15134      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
15135    for (int i = 0; i < element.getSource().size(); i++)
15136      composeStructureMapStructureMapGroupRuleSourceComponent(t, "StructureMap", "source", element.getSource().get(i), i);
15137    for (int i = 0; i < element.getTarget().size(); i++)
15138      composeStructureMapStructureMapGroupRuleTargetComponent(t, "StructureMap", "target", element.getTarget().get(i), i);
15139    for (int i = 0; i < element.getRule().size(); i++)
15140      composeStructureMapStructureMapGroupRuleComponent(t, "StructureMap", "rule", element.getRule().get(i), i);
15141    for (int i = 0; i < element.getDependent().size(); i++)
15142      composeStructureMapStructureMapGroupRuleDependentComponent(t, "StructureMap", "dependent", element.getDependent().get(i), i);
15143    if (element.hasDocumentationElement())
15144      composeString(t, "StructureMap", "documentation", element.getDocumentationElement(), -1);
15145  }
15146
15147  protected void composeStructureMapStructureMapGroupRuleSourceComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleSourceComponent element, int index) {
15148    if (element == null) 
15149      return;
15150    Complex t;
15151    if (Utilities.noString(parentType))
15152      t = parent;
15153    else {
15154      t = parent.predicate("fhir:"+parentType+'.'+name);
15155    }
15156    composeBackboneElement(t, "source", name, element, index);
15157    if (element.hasContextElement())
15158      composeId(t, "StructureMap", "context", element.getContextElement(), -1);
15159    if (element.hasMinElement())
15160      composeInteger(t, "StructureMap", "min", element.getMinElement(), -1);
15161    if (element.hasMaxElement())
15162      composeString(t, "StructureMap", "max", element.getMaxElement(), -1);
15163    if (element.hasTypeElement())
15164      composeString(t, "StructureMap", "type", element.getTypeElement(), -1);
15165    if (element.hasDefaultValue())
15166      composeType(t, "StructureMap", "defaultValue", element.getDefaultValue(), -1);
15167    if (element.hasElementElement())
15168      composeString(t, "StructureMap", "element", element.getElementElement(), -1);
15169    if (element.hasListModeElement())
15170      composeEnum(t, "StructureMap", "listMode", element.getListModeElement(), -1);
15171    if (element.hasVariableElement())
15172      composeId(t, "StructureMap", "variable", element.getVariableElement(), -1);
15173    if (element.hasConditionElement())
15174      composeString(t, "StructureMap", "condition", element.getConditionElement(), -1);
15175    if (element.hasCheckElement())
15176      composeString(t, "StructureMap", "check", element.getCheckElement(), -1);
15177    if (element.hasLogMessageElement())
15178      composeString(t, "StructureMap", "logMessage", element.getLogMessageElement(), -1);
15179  }
15180
15181  protected void composeStructureMapStructureMapGroupRuleTargetComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleTargetComponent element, int index) {
15182    if (element == null) 
15183      return;
15184    Complex t;
15185    if (Utilities.noString(parentType))
15186      t = parent;
15187    else {
15188      t = parent.predicate("fhir:"+parentType+'.'+name);
15189    }
15190    composeBackboneElement(t, "target", name, element, index);
15191    if (element.hasContextElement())
15192      composeId(t, "StructureMap", "context", element.getContextElement(), -1);
15193    if (element.hasContextTypeElement())
15194      composeEnum(t, "StructureMap", "contextType", element.getContextTypeElement(), -1);
15195    if (element.hasElementElement())
15196      composeString(t, "StructureMap", "element", element.getElementElement(), -1);
15197    if (element.hasVariableElement())
15198      composeId(t, "StructureMap", "variable", element.getVariableElement(), -1);
15199    for (int i = 0; i < element.getListMode().size(); i++)
15200      composeEnum(t, "StructureMap", "listMode", element.getListMode().get(i), i);
15201    if (element.hasListRuleIdElement())
15202      composeId(t, "StructureMap", "listRuleId", element.getListRuleIdElement(), -1);
15203    if (element.hasTransformElement())
15204      composeEnum(t, "StructureMap", "transform", element.getTransformElement(), -1);
15205    for (int i = 0; i < element.getParameter().size(); i++)
15206      composeStructureMapStructureMapGroupRuleTargetParameterComponent(t, "StructureMap", "parameter", element.getParameter().get(i), i);
15207  }
15208
15209  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element, int index) {
15210    if (element == null) 
15211      return;
15212    Complex t;
15213    if (Utilities.noString(parentType))
15214      t = parent;
15215    else {
15216      t = parent.predicate("fhir:"+parentType+'.'+name);
15217    }
15218    composeBackboneElement(t, "parameter", name, element, index);
15219    if (element.hasValue())
15220      composeType(t, "StructureMap", "value", element.getValue(), -1);
15221  }
15222
15223  protected void composeStructureMapStructureMapGroupRuleDependentComponent(Complex parent, String parentType, String name, StructureMap.StructureMapGroupRuleDependentComponent element, int index) {
15224    if (element == null) 
15225      return;
15226    Complex t;
15227    if (Utilities.noString(parentType))
15228      t = parent;
15229    else {
15230      t = parent.predicate("fhir:"+parentType+'.'+name);
15231    }
15232    composeBackboneElement(t, "dependent", name, element, index);
15233    if (element.hasNameElement())
15234      composeId(t, "StructureMap", "name", element.getNameElement(), -1);
15235    for (int i = 0; i < element.getVariable().size(); i++)
15236      composeString(t, "StructureMap", "variable", element.getVariable().get(i), i);
15237  }
15238
15239  protected void composeSubscription(Complex parent, String parentType, String name, Subscription element, int index) {
15240    if (element == null) 
15241      return;
15242    Complex t;
15243    if (Utilities.noString(parentType))
15244      t = parent;
15245    else {
15246      t = parent.predicate("fhir:"+parentType+'.'+name);
15247    }
15248    composeDomainResource(t, "Subscription", name, element, index);
15249    if (element.hasStatusElement())
15250      composeEnum(t, "Subscription", "status", element.getStatusElement(), -1);
15251    for (int i = 0; i < element.getContact().size(); i++)
15252      composeContactPoint(t, "Subscription", "contact", element.getContact().get(i), i);
15253    if (element.hasEndElement())
15254      composeInstant(t, "Subscription", "end", element.getEndElement(), -1);
15255    if (element.hasReasonElement())
15256      composeString(t, "Subscription", "reason", element.getReasonElement(), -1);
15257    if (element.hasCriteriaElement())
15258      composeString(t, "Subscription", "criteria", element.getCriteriaElement(), -1);
15259    if (element.hasErrorElement())
15260      composeString(t, "Subscription", "error", element.getErrorElement(), -1);
15261    if (element.hasChannel())
15262      composeSubscriptionSubscriptionChannelComponent(t, "Subscription", "channel", element.getChannel(), -1);
15263  }
15264
15265  protected void composeSubscriptionSubscriptionChannelComponent(Complex parent, String parentType, String name, Subscription.SubscriptionChannelComponent element, int index) {
15266    if (element == null) 
15267      return;
15268    Complex t;
15269    if (Utilities.noString(parentType))
15270      t = parent;
15271    else {
15272      t = parent.predicate("fhir:"+parentType+'.'+name);
15273    }
15274    composeBackboneElement(t, "channel", name, element, index);
15275    if (element.hasTypeElement())
15276      composeEnum(t, "Subscription", "type", element.getTypeElement(), -1);
15277    if (element.hasEndpointElement())
15278      composeUrl(t, "Subscription", "endpoint", element.getEndpointElement(), -1);
15279    if (element.hasPayloadElement())
15280      composeCode(t, "Subscription", "payload", element.getPayloadElement(), -1);
15281    for (int i = 0; i < element.getHeader().size(); i++)
15282      composeString(t, "Subscription", "header", element.getHeader().get(i), i);
15283  }
15284
15285  protected void composeSubstance(Complex parent, String parentType, String name, Substance element, int index) {
15286    if (element == null) 
15287      return;
15288    Complex t;
15289    if (Utilities.noString(parentType))
15290      t = parent;
15291    else {
15292      t = parent.predicate("fhir:"+parentType+'.'+name);
15293    }
15294    composeDomainResource(t, "Substance", name, element, index);
15295    for (int i = 0; i < element.getIdentifier().size(); i++)
15296      composeIdentifier(t, "Substance", "identifier", element.getIdentifier().get(i), i);
15297    if (element.hasStatusElement())
15298      composeEnum(t, "Substance", "status", element.getStatusElement(), -1);
15299    for (int i = 0; i < element.getCategory().size(); i++)
15300      composeCodeableConcept(t, "Substance", "category", element.getCategory().get(i), i);
15301    if (element.hasCode())
15302      composeCodeableConcept(t, "Substance", "code", element.getCode(), -1);
15303    if (element.hasDescriptionElement())
15304      composeString(t, "Substance", "description", element.getDescriptionElement(), -1);
15305    for (int i = 0; i < element.getInstance().size(); i++)
15306      composeSubstanceSubstanceInstanceComponent(t, "Substance", "instance", element.getInstance().get(i), i);
15307    for (int i = 0; i < element.getIngredient().size(); i++)
15308      composeSubstanceSubstanceIngredientComponent(t, "Substance", "ingredient", element.getIngredient().get(i), i);
15309  }
15310
15311  protected void composeSubstanceSubstanceInstanceComponent(Complex parent, String parentType, String name, Substance.SubstanceInstanceComponent element, int index) {
15312    if (element == null) 
15313      return;
15314    Complex t;
15315    if (Utilities.noString(parentType))
15316      t = parent;
15317    else {
15318      t = parent.predicate("fhir:"+parentType+'.'+name);
15319    }
15320    composeBackboneElement(t, "instance", name, element, index);
15321    if (element.hasIdentifier())
15322      composeIdentifier(t, "Substance", "identifier", element.getIdentifier(), -1);
15323    if (element.hasExpiryElement())
15324      composeDateTime(t, "Substance", "expiry", element.getExpiryElement(), -1);
15325    if (element.hasQuantity())
15326      composeQuantity(t, "Substance", "quantity", element.getQuantity(), -1);
15327  }
15328
15329  protected void composeSubstanceSubstanceIngredientComponent(Complex parent, String parentType, String name, Substance.SubstanceIngredientComponent element, int index) {
15330    if (element == null) 
15331      return;
15332    Complex t;
15333    if (Utilities.noString(parentType))
15334      t = parent;
15335    else {
15336      t = parent.predicate("fhir:"+parentType+'.'+name);
15337    }
15338    composeBackboneElement(t, "ingredient", name, element, index);
15339    if (element.hasQuantity())
15340      composeRatio(t, "Substance", "quantity", element.getQuantity(), -1);
15341    if (element.hasSubstance())
15342      composeType(t, "Substance", "substance", element.getSubstance(), -1);
15343  }
15344
15345  protected void composeSubstanceNucleicAcid(Complex parent, String parentType, String name, SubstanceNucleicAcid element, int index) {
15346    if (element == null) 
15347      return;
15348    Complex t;
15349    if (Utilities.noString(parentType))
15350      t = parent;
15351    else {
15352      t = parent.predicate("fhir:"+parentType+'.'+name);
15353    }
15354    composeDomainResource(t, "SubstanceNucleicAcid", name, element, index);
15355    if (element.hasSequenceType())
15356      composeCodeableConcept(t, "SubstanceNucleicAcid", "sequenceType", element.getSequenceType(), -1);
15357    if (element.hasNumberOfSubunitsElement())
15358      composeInteger(t, "SubstanceNucleicAcid", "numberOfSubunits", element.getNumberOfSubunitsElement(), -1);
15359    if (element.hasAreaOfHybridisationElement())
15360      composeString(t, "SubstanceNucleicAcid", "areaOfHybridisation", element.getAreaOfHybridisationElement(), -1);
15361    if (element.hasOligoNucleotideType())
15362      composeCodeableConcept(t, "SubstanceNucleicAcid", "oligoNucleotideType", element.getOligoNucleotideType(), -1);
15363    for (int i = 0; i < element.getSubunit().size(); i++)
15364      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(t, "SubstanceNucleicAcid", "subunit", element.getSubunit().get(i), i);
15365  }
15366
15367  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(Complex parent, String parentType, String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element, int index) {
15368    if (element == null) 
15369      return;
15370    Complex t;
15371    if (Utilities.noString(parentType))
15372      t = parent;
15373    else {
15374      t = parent.predicate("fhir:"+parentType+'.'+name);
15375    }
15376    composeBackboneElement(t, "subunit", name, element, index);
15377    if (element.hasSubunitElement())
15378      composeInteger(t, "SubstanceNucleicAcid", "subunit", element.getSubunitElement(), -1);
15379    if (element.hasSequenceElement())
15380      composeString(t, "SubstanceNucleicAcid", "sequence", element.getSequenceElement(), -1);
15381    if (element.hasLengthElement())
15382      composeInteger(t, "SubstanceNucleicAcid", "length", element.getLengthElement(), -1);
15383    if (element.hasSequenceAttachment())
15384      composeAttachment(t, "SubstanceNucleicAcid", "sequenceAttachment", element.getSequenceAttachment(), -1);
15385    if (element.hasFivePrime())
15386      composeCodeableConcept(t, "SubstanceNucleicAcid", "fivePrime", element.getFivePrime(), -1);
15387    if (element.hasThreePrime())
15388      composeCodeableConcept(t, "SubstanceNucleicAcid", "threePrime", element.getThreePrime(), -1);
15389    for (int i = 0; i < element.getLinkage().size(); i++)
15390      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(t, "SubstanceNucleicAcid", "linkage", element.getLinkage().get(i), i);
15391    for (int i = 0; i < element.getSugar().size(); i++)
15392      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(t, "SubstanceNucleicAcid", "sugar", element.getSugar().get(i), i);
15393  }
15394
15395  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(Complex parent, String parentType, String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element, int index) {
15396    if (element == null) 
15397      return;
15398    Complex t;
15399    if (Utilities.noString(parentType))
15400      t = parent;
15401    else {
15402      t = parent.predicate("fhir:"+parentType+'.'+name);
15403    }
15404    composeBackboneElement(t, "linkage", name, element, index);
15405    if (element.hasConnectivityElement())
15406      composeString(t, "SubstanceNucleicAcid", "connectivity", element.getConnectivityElement(), -1);
15407    if (element.hasIdentifier())
15408      composeIdentifier(t, "SubstanceNucleicAcid", "identifier", element.getIdentifier(), -1);
15409    if (element.hasNameElement())
15410      composeString(t, "SubstanceNucleicAcid", "name", element.getNameElement(), -1);
15411    if (element.hasResidueSiteElement())
15412      composeString(t, "SubstanceNucleicAcid", "residueSite", element.getResidueSiteElement(), -1);
15413  }
15414
15415  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(Complex parent, String parentType, String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element, int index) {
15416    if (element == null) 
15417      return;
15418    Complex t;
15419    if (Utilities.noString(parentType))
15420      t = parent;
15421    else {
15422      t = parent.predicate("fhir:"+parentType+'.'+name);
15423    }
15424    composeBackboneElement(t, "sugar", name, element, index);
15425    if (element.hasIdentifier())
15426      composeIdentifier(t, "SubstanceNucleicAcid", "identifier", element.getIdentifier(), -1);
15427    if (element.hasNameElement())
15428      composeString(t, "SubstanceNucleicAcid", "name", element.getNameElement(), -1);
15429    if (element.hasResidueSiteElement())
15430      composeString(t, "SubstanceNucleicAcid", "residueSite", element.getResidueSiteElement(), -1);
15431  }
15432
15433  protected void composeSubstancePolymer(Complex parent, String parentType, String name, SubstancePolymer element, int index) {
15434    if (element == null) 
15435      return;
15436    Complex t;
15437    if (Utilities.noString(parentType))
15438      t = parent;
15439    else {
15440      t = parent.predicate("fhir:"+parentType+'.'+name);
15441    }
15442    composeDomainResource(t, "SubstancePolymer", name, element, index);
15443    if (element.hasClass_())
15444      composeCodeableConcept(t, "SubstancePolymer", "class", element.getClass_(), -1);
15445    if (element.hasGeometry())
15446      composeCodeableConcept(t, "SubstancePolymer", "geometry", element.getGeometry(), -1);
15447    for (int i = 0; i < element.getCopolymerConnectivity().size(); i++)
15448      composeCodeableConcept(t, "SubstancePolymer", "copolymerConnectivity", element.getCopolymerConnectivity().get(i), i);
15449    for (int i = 0; i < element.getModification().size(); i++)
15450      composeString(t, "SubstancePolymer", "modification", element.getModification().get(i), i);
15451    for (int i = 0; i < element.getMonomerSet().size(); i++)
15452      composeSubstancePolymerSubstancePolymerMonomerSetComponent(t, "SubstancePolymer", "monomerSet", element.getMonomerSet().get(i), i);
15453    for (int i = 0; i < element.getRepeat().size(); i++)
15454      composeSubstancePolymerSubstancePolymerRepeatComponent(t, "SubstancePolymer", "repeat", element.getRepeat().get(i), i);
15455  }
15456
15457  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element, int index) {
15458    if (element == null) 
15459      return;
15460    Complex t;
15461    if (Utilities.noString(parentType))
15462      t = parent;
15463    else {
15464      t = parent.predicate("fhir:"+parentType+'.'+name);
15465    }
15466    composeBackboneElement(t, "monomerSet", name, element, index);
15467    if (element.hasRatioType())
15468      composeCodeableConcept(t, "SubstancePolymer", "ratioType", element.getRatioType(), -1);
15469    for (int i = 0; i < element.getStartingMaterial().size(); i++)
15470      composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(t, "SubstancePolymer", "startingMaterial", element.getStartingMaterial().get(i), i);
15471  }
15472
15473  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element, int index) {
15474    if (element == null) 
15475      return;
15476    Complex t;
15477    if (Utilities.noString(parentType))
15478      t = parent;
15479    else {
15480      t = parent.predicate("fhir:"+parentType+'.'+name);
15481    }
15482    composeBackboneElement(t, "startingMaterial", name, element, index);
15483    if (element.hasMaterial())
15484      composeCodeableConcept(t, "SubstancePolymer", "material", element.getMaterial(), -1);
15485    if (element.hasType())
15486      composeCodeableConcept(t, "SubstancePolymer", "type", element.getType(), -1);
15487    if (element.hasIsDefiningElement())
15488      composeBoolean(t, "SubstancePolymer", "isDefining", element.getIsDefiningElement(), -1);
15489    if (element.hasAmount())
15490      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
15491  }
15492
15493  protected void composeSubstancePolymerSubstancePolymerRepeatComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatComponent element, int index) {
15494    if (element == null) 
15495      return;
15496    Complex t;
15497    if (Utilities.noString(parentType))
15498      t = parent;
15499    else {
15500      t = parent.predicate("fhir:"+parentType+'.'+name);
15501    }
15502    composeBackboneElement(t, "repeat", name, element, index);
15503    if (element.hasNumberOfUnitsElement())
15504      composeInteger(t, "SubstancePolymer", "numberOfUnits", element.getNumberOfUnitsElement(), -1);
15505    if (element.hasAverageMolecularFormulaElement())
15506      composeString(t, "SubstancePolymer", "averageMolecularFormula", element.getAverageMolecularFormulaElement(), -1);
15507    if (element.hasRepeatUnitAmountType())
15508      composeCodeableConcept(t, "SubstancePolymer", "repeatUnitAmountType", element.getRepeatUnitAmountType(), -1);
15509    for (int i = 0; i < element.getRepeatUnit().size(); i++)
15510      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(t, "SubstancePolymer", "repeatUnit", element.getRepeatUnit().get(i), i);
15511  }
15512
15513  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element, int index) {
15514    if (element == null) 
15515      return;
15516    Complex t;
15517    if (Utilities.noString(parentType))
15518      t = parent;
15519    else {
15520      t = parent.predicate("fhir:"+parentType+'.'+name);
15521    }
15522    composeBackboneElement(t, "repeatUnit", name, element, index);
15523    if (element.hasOrientationOfPolymerisation())
15524      composeCodeableConcept(t, "SubstancePolymer", "orientationOfPolymerisation", element.getOrientationOfPolymerisation(), -1);
15525    if (element.hasRepeatUnitElement())
15526      composeString(t, "SubstancePolymer", "repeatUnit", element.getRepeatUnitElement(), -1);
15527    if (element.hasAmount())
15528      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
15529    for (int i = 0; i < element.getDegreeOfPolymerisation().size(); i++)
15530      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(t, "SubstancePolymer", "degreeOfPolymerisation", element.getDegreeOfPolymerisation().get(i), i);
15531    for (int i = 0; i < element.getStructuralRepresentation().size(); i++)
15532      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(t, "SubstancePolymer", "structuralRepresentation", element.getStructuralRepresentation().get(i), i);
15533  }
15534
15535  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element, int index) {
15536    if (element == null) 
15537      return;
15538    Complex t;
15539    if (Utilities.noString(parentType))
15540      t = parent;
15541    else {
15542      t = parent.predicate("fhir:"+parentType+'.'+name);
15543    }
15544    composeBackboneElement(t, "degreeOfPolymerisation", name, element, index);
15545    if (element.hasDegree())
15546      composeCodeableConcept(t, "SubstancePolymer", "degree", element.getDegree(), -1);
15547    if (element.hasAmount())
15548      composeSubstanceAmount(t, "SubstancePolymer", "amount", element.getAmount(), -1);
15549  }
15550
15551  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(Complex parent, String parentType, String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element, int index) {
15552    if (element == null) 
15553      return;
15554    Complex t;
15555    if (Utilities.noString(parentType))
15556      t = parent;
15557    else {
15558      t = parent.predicate("fhir:"+parentType+'.'+name);
15559    }
15560    composeBackboneElement(t, "structuralRepresentation", name, element, index);
15561    if (element.hasType())
15562      composeCodeableConcept(t, "SubstancePolymer", "type", element.getType(), -1);
15563    if (element.hasRepresentationElement())
15564      composeString(t, "SubstancePolymer", "representation", element.getRepresentationElement(), -1);
15565    if (element.hasAttachment())
15566      composeAttachment(t, "SubstancePolymer", "attachment", element.getAttachment(), -1);
15567  }
15568
15569  protected void composeSubstanceProtein(Complex parent, String parentType, String name, SubstanceProtein element, int index) {
15570    if (element == null) 
15571      return;
15572    Complex t;
15573    if (Utilities.noString(parentType))
15574      t = parent;
15575    else {
15576      t = parent.predicate("fhir:"+parentType+'.'+name);
15577    }
15578    composeDomainResource(t, "SubstanceProtein", name, element, index);
15579    if (element.hasSequenceType())
15580      composeCodeableConcept(t, "SubstanceProtein", "sequenceType", element.getSequenceType(), -1);
15581    if (element.hasNumberOfSubunitsElement())
15582      composeInteger(t, "SubstanceProtein", "numberOfSubunits", element.getNumberOfSubunitsElement(), -1);
15583    for (int i = 0; i < element.getDisulfideLinkage().size(); i++)
15584      composeString(t, "SubstanceProtein", "disulfideLinkage", element.getDisulfideLinkage().get(i), i);
15585    for (int i = 0; i < element.getSubunit().size(); i++)
15586      composeSubstanceProteinSubstanceProteinSubunitComponent(t, "SubstanceProtein", "subunit", element.getSubunit().get(i), i);
15587  }
15588
15589  protected void composeSubstanceProteinSubstanceProteinSubunitComponent(Complex parent, String parentType, String name, SubstanceProtein.SubstanceProteinSubunitComponent element, int index) {
15590    if (element == null) 
15591      return;
15592    Complex t;
15593    if (Utilities.noString(parentType))
15594      t = parent;
15595    else {
15596      t = parent.predicate("fhir:"+parentType+'.'+name);
15597    }
15598    composeBackboneElement(t, "subunit", name, element, index);
15599    if (element.hasSubunitElement())
15600      composeInteger(t, "SubstanceProtein", "subunit", element.getSubunitElement(), -1);
15601    if (element.hasSequenceElement())
15602      composeString(t, "SubstanceProtein", "sequence", element.getSequenceElement(), -1);
15603    if (element.hasLengthElement())
15604      composeInteger(t, "SubstanceProtein", "length", element.getLengthElement(), -1);
15605    if (element.hasSequenceAttachment())
15606      composeAttachment(t, "SubstanceProtein", "sequenceAttachment", element.getSequenceAttachment(), -1);
15607    if (element.hasNTerminalModificationId())
15608      composeIdentifier(t, "SubstanceProtein", "nTerminalModificationId", element.getNTerminalModificationId(), -1);
15609    if (element.hasNTerminalModificationElement())
15610      composeString(t, "SubstanceProtein", "nTerminalModification", element.getNTerminalModificationElement(), -1);
15611    if (element.hasCTerminalModificationId())
15612      composeIdentifier(t, "SubstanceProtein", "cTerminalModificationId", element.getCTerminalModificationId(), -1);
15613    if (element.hasCTerminalModificationElement())
15614      composeString(t, "SubstanceProtein", "cTerminalModification", element.getCTerminalModificationElement(), -1);
15615  }
15616
15617  protected void composeSubstanceReferenceInformation(Complex parent, String parentType, String name, SubstanceReferenceInformation element, int index) {
15618    if (element == null) 
15619      return;
15620    Complex t;
15621    if (Utilities.noString(parentType))
15622      t = parent;
15623    else {
15624      t = parent.predicate("fhir:"+parentType+'.'+name);
15625    }
15626    composeDomainResource(t, "SubstanceReferenceInformation", name, element, index);
15627    if (element.hasCommentElement())
15628      composeString(t, "SubstanceReferenceInformation", "comment", element.getCommentElement(), -1);
15629    for (int i = 0; i < element.getGene().size(); i++)
15630      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(t, "SubstanceReferenceInformation", "gene", element.getGene().get(i), i);
15631    for (int i = 0; i < element.getClassification().size(); i++)
15632      composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(t, "SubstanceReferenceInformation", "classification", element.getClassification().get(i), i);
15633    for (int i = 0; i < element.getTarget().size(); i++)
15634      composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(t, "SubstanceReferenceInformation", "target", element.getTarget().get(i), i);
15635  }
15636
15637  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element, int index) {
15638    if (element == null) 
15639      return;
15640    Complex t;
15641    if (Utilities.noString(parentType))
15642      t = parent;
15643    else {
15644      t = parent.predicate("fhir:"+parentType+'.'+name);
15645    }
15646    composeBackboneElement(t, "gene", name, element, index);
15647    if (element.hasGeneSequenceOrigin())
15648      composeCodeableConcept(t, "SubstanceReferenceInformation", "geneSequenceOrigin", element.getGeneSequenceOrigin(), -1);
15649    if (element.hasGene())
15650      composeCodeableConcept(t, "SubstanceReferenceInformation", "gene", element.getGene(), -1);
15651    for (int i = 0; i < element.getSource().size(); i++)
15652      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15653  }
15654
15655  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element, int index) {
15656    if (element == null) 
15657      return;
15658    Complex t;
15659    if (Utilities.noString(parentType))
15660      t = parent;
15661    else {
15662      t = parent.predicate("fhir:"+parentType+'.'+name);
15663    }
15664    composeBackboneElement(t, "geneElement", name, element, index);
15665    if (element.hasType())
15666      composeCodeableConcept(t, "SubstanceReferenceInformation", "type", element.getType(), -1);
15667    if (element.hasElement())
15668      composeIdentifier(t, "SubstanceReferenceInformation", "element", element.getElement(), -1);
15669    for (int i = 0; i < element.getSource().size(); i++)
15670      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15671  }
15672
15673  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element, int index) {
15674    if (element == null) 
15675      return;
15676    Complex t;
15677    if (Utilities.noString(parentType))
15678      t = parent;
15679    else {
15680      t = parent.predicate("fhir:"+parentType+'.'+name);
15681    }
15682    composeBackboneElement(t, "classification", name, element, index);
15683    if (element.hasDomain())
15684      composeCodeableConcept(t, "SubstanceReferenceInformation", "domain", element.getDomain(), -1);
15685    if (element.hasClassification())
15686      composeCodeableConcept(t, "SubstanceReferenceInformation", "classification", element.getClassification(), -1);
15687    for (int i = 0; i < element.getSubtype().size(); i++)
15688      composeCodeableConcept(t, "SubstanceReferenceInformation", "subtype", element.getSubtype().get(i), i);
15689    for (int i = 0; i < element.getSource().size(); i++)
15690      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15691  }
15692
15693  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(Complex parent, String parentType, String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element, int index) {
15694    if (element == null) 
15695      return;
15696    Complex t;
15697    if (Utilities.noString(parentType))
15698      t = parent;
15699    else {
15700      t = parent.predicate("fhir:"+parentType+'.'+name);
15701    }
15702    composeBackboneElement(t, "target", name, element, index);
15703    if (element.hasTarget())
15704      composeIdentifier(t, "SubstanceReferenceInformation", "target", element.getTarget(), -1);
15705    if (element.hasType())
15706      composeCodeableConcept(t, "SubstanceReferenceInformation", "type", element.getType(), -1);
15707    if (element.hasInteraction())
15708      composeCodeableConcept(t, "SubstanceReferenceInformation", "interaction", element.getInteraction(), -1);
15709    if (element.hasOrganism())
15710      composeCodeableConcept(t, "SubstanceReferenceInformation", "organism", element.getOrganism(), -1);
15711    if (element.hasOrganismType())
15712      composeCodeableConcept(t, "SubstanceReferenceInformation", "organismType", element.getOrganismType(), -1);
15713    if (element.hasAmount())
15714      composeType(t, "SubstanceReferenceInformation", "amount", element.getAmount(), -1);
15715    if (element.hasAmountType())
15716      composeCodeableConcept(t, "SubstanceReferenceInformation", "amountType", element.getAmountType(), -1);
15717    for (int i = 0; i < element.getSource().size(); i++)
15718      composeReference(t, "SubstanceReferenceInformation", "source", element.getSource().get(i), i);
15719  }
15720
15721  protected void composeSubstanceSourceMaterial(Complex parent, String parentType, String name, SubstanceSourceMaterial element, int index) {
15722    if (element == null) 
15723      return;
15724    Complex t;
15725    if (Utilities.noString(parentType))
15726      t = parent;
15727    else {
15728      t = parent.predicate("fhir:"+parentType+'.'+name);
15729    }
15730    composeDomainResource(t, "SubstanceSourceMaterial", name, element, index);
15731    if (element.hasSourceMaterialClass())
15732      composeCodeableConcept(t, "SubstanceSourceMaterial", "sourceMaterialClass", element.getSourceMaterialClass(), -1);
15733    if (element.hasSourceMaterialType())
15734      composeCodeableConcept(t, "SubstanceSourceMaterial", "sourceMaterialType", element.getSourceMaterialType(), -1);
15735    if (element.hasSourceMaterialState())
15736      composeCodeableConcept(t, "SubstanceSourceMaterial", "sourceMaterialState", element.getSourceMaterialState(), -1);
15737    if (element.hasOrganismId())
15738      composeIdentifier(t, "SubstanceSourceMaterial", "organismId", element.getOrganismId(), -1);
15739    if (element.hasOrganismNameElement())
15740      composeString(t, "SubstanceSourceMaterial", "organismName", element.getOrganismNameElement(), -1);
15741    for (int i = 0; i < element.getParentSubstanceId().size(); i++)
15742      composeIdentifier(t, "SubstanceSourceMaterial", "parentSubstanceId", element.getParentSubstanceId().get(i), i);
15743    for (int i = 0; i < element.getParentSubstanceName().size(); i++)
15744      composeString(t, "SubstanceSourceMaterial", "parentSubstanceName", element.getParentSubstanceName().get(i), i);
15745    for (int i = 0; i < element.getCountryOfOrigin().size(); i++)
15746      composeCodeableConcept(t, "SubstanceSourceMaterial", "countryOfOrigin", element.getCountryOfOrigin().get(i), i);
15747    for (int i = 0; i < element.getGeographicalLocation().size(); i++)
15748      composeString(t, "SubstanceSourceMaterial", "geographicalLocation", element.getGeographicalLocation().get(i), i);
15749    if (element.hasDevelopmentStage())
15750      composeCodeableConcept(t, "SubstanceSourceMaterial", "developmentStage", element.getDevelopmentStage(), -1);
15751    for (int i = 0; i < element.getFractionDescription().size(); i++)
15752      composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(t, "SubstanceSourceMaterial", "fractionDescription", element.getFractionDescription().get(i), i);
15753    if (element.hasOrganism())
15754      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(t, "SubstanceSourceMaterial", "organism", element.getOrganism(), -1);
15755    for (int i = 0; i < element.getPartDescription().size(); i++)
15756      composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(t, "SubstanceSourceMaterial", "partDescription", element.getPartDescription().get(i), i);
15757  }
15758
15759  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(Complex parent, String parentType, String name, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element, int index) {
15760    if (element == null) 
15761      return;
15762    Complex t;
15763    if (Utilities.noString(parentType))
15764      t = parent;
15765    else {
15766      t = parent.predicate("fhir:"+parentType+'.'+name);
15767    }
15768    composeBackboneElement(t, "fractionDescription", name, element, index);
15769    if (element.hasFractionElement())
15770      composeString(t, "SubstanceSourceMaterial", "fraction", element.getFractionElement(), -1);
15771    if (element.hasMaterialType())
15772      composeCodeableConcept(t, "SubstanceSourceMaterial", "materialType", element.getMaterialType(), -1);
15773  }
15774
15775  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(Complex parent, String parentType, String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element, int index) {
15776    if (element == null) 
15777      return;
15778    Complex t;
15779    if (Utilities.noString(parentType))
15780      t = parent;
15781    else {
15782      t = parent.predicate("fhir:"+parentType+'.'+name);
15783    }
15784    composeBackboneElement(t, "organism", name, element, index);
15785    if (element.hasFamily())
15786      composeCodeableConcept(t, "SubstanceSourceMaterial", "family", element.getFamily(), -1);
15787    if (element.hasGenus())
15788      composeCodeableConcept(t, "SubstanceSourceMaterial", "genus", element.getGenus(), -1);
15789    if (element.hasSpecies())
15790      composeCodeableConcept(t, "SubstanceSourceMaterial", "species", element.getSpecies(), -1);
15791    if (element.hasIntraspecificType())
15792      composeCodeableConcept(t, "SubstanceSourceMaterial", "intraspecificType", element.getIntraspecificType(), -1);
15793    if (element.hasIntraspecificDescriptionElement())
15794      composeString(t, "SubstanceSourceMaterial", "intraspecificDescription", element.getIntraspecificDescriptionElement(), -1);
15795    for (int i = 0; i < element.getAuthor().size(); i++)
15796      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(t, "SubstanceSourceMaterial", "author", element.getAuthor().get(i), i);
15797    if (element.hasHybrid())
15798      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(t, "SubstanceSourceMaterial", "hybrid", element.getHybrid(), -1);
15799    if (element.hasOrganismGeneral())
15800      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(t, "SubstanceSourceMaterial", "organismGeneral", element.getOrganismGeneral(), -1);
15801  }
15802
15803  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(Complex parent, String parentType, String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element, int index) {
15804    if (element == null) 
15805      return;
15806    Complex t;
15807    if (Utilities.noString(parentType))
15808      t = parent;
15809    else {
15810      t = parent.predicate("fhir:"+parentType+'.'+name);
15811    }
15812    composeBackboneElement(t, "author", name, element, index);
15813    if (element.hasAuthorType())
15814      composeCodeableConcept(t, "SubstanceSourceMaterial", "authorType", element.getAuthorType(), -1);
15815    if (element.hasAuthorDescriptionElement())
15816      composeString(t, "SubstanceSourceMaterial", "authorDescription", element.getAuthorDescriptionElement(), -1);
15817  }
15818
15819  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(Complex parent, String parentType, String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element, int index) {
15820    if (element == null) 
15821      return;
15822    Complex t;
15823    if (Utilities.noString(parentType))
15824      t = parent;
15825    else {
15826      t = parent.predicate("fhir:"+parentType+'.'+name);
15827    }
15828    composeBackboneElement(t, "hybrid", name, element, index);
15829    if (element.hasMaternalOrganismIdElement())
15830      composeString(t, "SubstanceSourceMaterial", "maternalOrganismId", element.getMaternalOrganismIdElement(), -1);
15831    if (element.hasMaternalOrganismNameElement())
15832      composeString(t, "SubstanceSourceMaterial", "maternalOrganismName", element.getMaternalOrganismNameElement(), -1);
15833    if (element.hasPaternalOrganismIdElement())
15834      composeString(t, "SubstanceSourceMaterial", "paternalOrganismId", element.getPaternalOrganismIdElement(), -1);
15835    if (element.hasPaternalOrganismNameElement())
15836      composeString(t, "SubstanceSourceMaterial", "paternalOrganismName", element.getPaternalOrganismNameElement(), -1);
15837    if (element.hasHybridType())
15838      composeCodeableConcept(t, "SubstanceSourceMaterial", "hybridType", element.getHybridType(), -1);
15839  }
15840
15841  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(Complex parent, String parentType, String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element, int index) {
15842    if (element == null) 
15843      return;
15844    Complex t;
15845    if (Utilities.noString(parentType))
15846      t = parent;
15847    else {
15848      t = parent.predicate("fhir:"+parentType+'.'+name);
15849    }
15850    composeBackboneElement(t, "organismGeneral", name, element, index);
15851    if (element.hasKingdom())
15852      composeCodeableConcept(t, "SubstanceSourceMaterial", "kingdom", element.getKingdom(), -1);
15853    if (element.hasPhylum())
15854      composeCodeableConcept(t, "SubstanceSourceMaterial", "phylum", element.getPhylum(), -1);
15855    if (element.hasClass_())
15856      composeCodeableConcept(t, "SubstanceSourceMaterial", "class", element.getClass_(), -1);
15857    if (element.hasOrder())
15858      composeCodeableConcept(t, "SubstanceSourceMaterial", "order", element.getOrder(), -1);
15859  }
15860
15861  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(Complex parent, String parentType, String name, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element, int index) {
15862    if (element == null) 
15863      return;
15864    Complex t;
15865    if (Utilities.noString(parentType))
15866      t = parent;
15867    else {
15868      t = parent.predicate("fhir:"+parentType+'.'+name);
15869    }
15870    composeBackboneElement(t, "partDescription", name, element, index);
15871    if (element.hasPart())
15872      composeCodeableConcept(t, "SubstanceSourceMaterial", "part", element.getPart(), -1);
15873    if (element.hasPartLocation())
15874      composeCodeableConcept(t, "SubstanceSourceMaterial", "partLocation", element.getPartLocation(), -1);
15875  }
15876
15877  protected void composeSubstanceSpecification(Complex parent, String parentType, String name, SubstanceSpecification element, int index) {
15878    if (element == null) 
15879      return;
15880    Complex t;
15881    if (Utilities.noString(parentType))
15882      t = parent;
15883    else {
15884      t = parent.predicate("fhir:"+parentType+'.'+name);
15885    }
15886    composeDomainResource(t, "SubstanceSpecification", name, element, index);
15887    if (element.hasIdentifier())
15888      composeIdentifier(t, "SubstanceSpecification", "identifier", element.getIdentifier(), -1);
15889    if (element.hasType())
15890      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
15891    if (element.hasStatus())
15892      composeCodeableConcept(t, "SubstanceSpecification", "status", element.getStatus(), -1);
15893    if (element.hasDomain())
15894      composeCodeableConcept(t, "SubstanceSpecification", "domain", element.getDomain(), -1);
15895    if (element.hasDescriptionElement())
15896      composeString(t, "SubstanceSpecification", "description", element.getDescriptionElement(), -1);
15897    for (int i = 0; i < element.getSource().size(); i++)
15898      composeReference(t, "SubstanceSpecification", "source", element.getSource().get(i), i);
15899    if (element.hasCommentElement())
15900      composeString(t, "SubstanceSpecification", "comment", element.getCommentElement(), -1);
15901    for (int i = 0; i < element.getMoiety().size(); i++)
15902      composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(t, "SubstanceSpecification", "moiety", element.getMoiety().get(i), i);
15903    for (int i = 0; i < element.getProperty().size(); i++)
15904      composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(t, "SubstanceSpecification", "property", element.getProperty().get(i), i);
15905    if (element.hasReferenceInformation())
15906      composeReference(t, "SubstanceSpecification", "referenceInformation", element.getReferenceInformation(), -1);
15907    if (element.hasStructure())
15908      composeSubstanceSpecificationSubstanceSpecificationStructureComponent(t, "SubstanceSpecification", "structure", element.getStructure(), -1);
15909    for (int i = 0; i < element.getCode().size(); i++)
15910      composeSubstanceSpecificationSubstanceSpecificationCodeComponent(t, "SubstanceSpecification", "code", element.getCode().get(i), i);
15911    for (int i = 0; i < element.getName().size(); i++)
15912      composeSubstanceSpecificationSubstanceSpecificationNameComponent(t, "SubstanceSpecification", "name", element.getName().get(i), i);
15913    for (int i = 0; i < element.getMolecularWeight().size(); i++)
15914      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight().get(i), i);
15915    for (int i = 0; i < element.getRelationship().size(); i++)
15916      composeSubstanceSpecificationSubstanceSpecificationRelationshipComponent(t, "SubstanceSpecification", "relationship", element.getRelationship().get(i), i);
15917    if (element.hasNucleicAcid())
15918      composeReference(t, "SubstanceSpecification", "nucleicAcid", element.getNucleicAcid(), -1);
15919    if (element.hasPolymer())
15920      composeReference(t, "SubstanceSpecification", "polymer", element.getPolymer(), -1);
15921    if (element.hasProtein())
15922      composeReference(t, "SubstanceSpecification", "protein", element.getProtein(), -1);
15923    if (element.hasSourceMaterial())
15924      composeReference(t, "SubstanceSpecification", "sourceMaterial", element.getSourceMaterial(), -1);
15925  }
15926
15927  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationMoietyComponent element, int index) {
15928    if (element == null) 
15929      return;
15930    Complex t;
15931    if (Utilities.noString(parentType))
15932      t = parent;
15933    else {
15934      t = parent.predicate("fhir:"+parentType+'.'+name);
15935    }
15936    composeBackboneElement(t, "moiety", name, element, index);
15937    if (element.hasRole())
15938      composeCodeableConcept(t, "SubstanceSpecification", "role", element.getRole(), -1);
15939    if (element.hasIdentifier())
15940      composeIdentifier(t, "SubstanceSpecification", "identifier", element.getIdentifier(), -1);
15941    if (element.hasNameElement())
15942      composeString(t, "SubstanceSpecification", "name", element.getNameElement(), -1);
15943    if (element.hasStereochemistry())
15944      composeCodeableConcept(t, "SubstanceSpecification", "stereochemistry", element.getStereochemistry(), -1);
15945    if (element.hasOpticalActivity())
15946      composeCodeableConcept(t, "SubstanceSpecification", "opticalActivity", element.getOpticalActivity(), -1);
15947    if (element.hasMolecularFormulaElement())
15948      composeString(t, "SubstanceSpecification", "molecularFormula", element.getMolecularFormulaElement(), -1);
15949    if (element.hasAmount())
15950      composeType(t, "SubstanceSpecification", "amount", element.getAmount(), -1);
15951  }
15952
15953  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationPropertyComponent element, int index) {
15954    if (element == null) 
15955      return;
15956    Complex t;
15957    if (Utilities.noString(parentType))
15958      t = parent;
15959    else {
15960      t = parent.predicate("fhir:"+parentType+'.'+name);
15961    }
15962    composeBackboneElement(t, "property", name, element, index);
15963    if (element.hasCategory())
15964      composeCodeableConcept(t, "SubstanceSpecification", "category", element.getCategory(), -1);
15965    if (element.hasCode())
15966      composeCodeableConcept(t, "SubstanceSpecification", "code", element.getCode(), -1);
15967    if (element.hasParametersElement())
15968      composeString(t, "SubstanceSpecification", "parameters", element.getParametersElement(), -1);
15969    if (element.hasDefiningSubstance())
15970      composeType(t, "SubstanceSpecification", "definingSubstance", element.getDefiningSubstance(), -1);
15971    if (element.hasAmount())
15972      composeType(t, "SubstanceSpecification", "amount", element.getAmount(), -1);
15973  }
15974
15975  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureComponent element, int index) {
15976    if (element == null) 
15977      return;
15978    Complex t;
15979    if (Utilities.noString(parentType))
15980      t = parent;
15981    else {
15982      t = parent.predicate("fhir:"+parentType+'.'+name);
15983    }
15984    composeBackboneElement(t, "structure", name, element, index);
15985    if (element.hasStereochemistry())
15986      composeCodeableConcept(t, "SubstanceSpecification", "stereochemistry", element.getStereochemistry(), -1);
15987    if (element.hasOpticalActivity())
15988      composeCodeableConcept(t, "SubstanceSpecification", "opticalActivity", element.getOpticalActivity(), -1);
15989    if (element.hasMolecularFormulaElement())
15990      composeString(t, "SubstanceSpecification", "molecularFormula", element.getMolecularFormulaElement(), -1);
15991    if (element.hasMolecularFormulaByMoietyElement())
15992      composeString(t, "SubstanceSpecification", "molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement(), -1);
15993    for (int i = 0; i < element.getIsotope().size(); i++)
15994      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(t, "SubstanceSpecification", "isotope", element.getIsotope().get(i), i);
15995    if (element.hasMolecularWeight())
15996      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight(), -1);
15997    for (int i = 0; i < element.getSource().size(); i++)
15998      composeReference(t, "SubstanceSpecification", "source", element.getSource().get(i), i);
15999    for (int i = 0; i < element.getRepresentation().size(); i++)
16000      composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(t, "SubstanceSpecification", "representation", element.getRepresentation().get(i), i);
16001  }
16002
16003  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element, int index) {
16004    if (element == null) 
16005      return;
16006    Complex t;
16007    if (Utilities.noString(parentType))
16008      t = parent;
16009    else {
16010      t = parent.predicate("fhir:"+parentType+'.'+name);
16011    }
16012    composeBackboneElement(t, "isotope", name, element, index);
16013    if (element.hasIdentifier())
16014      composeIdentifier(t, "SubstanceSpecification", "identifier", element.getIdentifier(), -1);
16015    if (element.hasName())
16016      composeCodeableConcept(t, "SubstanceSpecification", "name", element.getName(), -1);
16017    if (element.hasSubstitution())
16018      composeCodeableConcept(t, "SubstanceSpecification", "substitution", element.getSubstitution(), -1);
16019    if (element.hasHalfLife())
16020      composeQuantity(t, "SubstanceSpecification", "halfLife", element.getHalfLife(), -1);
16021    if (element.hasMolecularWeight())
16022      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(t, "SubstanceSpecification", "molecularWeight", element.getMolecularWeight(), -1);
16023  }
16024
16025  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element, int index) {
16026    if (element == null) 
16027      return;
16028    Complex t;
16029    if (Utilities.noString(parentType))
16030      t = parent;
16031    else {
16032      t = parent.predicate("fhir:"+parentType+'.'+name);
16033    }
16034    composeBackboneElement(t, "molecularWeight", name, element, index);
16035    if (element.hasMethod())
16036      composeCodeableConcept(t, "SubstanceSpecification", "method", element.getMethod(), -1);
16037    if (element.hasType())
16038      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
16039    if (element.hasAmount())
16040      composeQuantity(t, "SubstanceSpecification", "amount", element.getAmount(), -1);
16041  }
16042
16043  protected void composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent element, int index) {
16044    if (element == null) 
16045      return;
16046    Complex t;
16047    if (Utilities.noString(parentType))
16048      t = parent;
16049    else {
16050      t = parent.predicate("fhir:"+parentType+'.'+name);
16051    }
16052    composeBackboneElement(t, "representation", name, element, index);
16053    if (element.hasType())
16054      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
16055    if (element.hasRepresentationElement())
16056      composeString(t, "SubstanceSpecification", "representation", element.getRepresentationElement(), -1);
16057    if (element.hasAttachment())
16058      composeAttachment(t, "SubstanceSpecification", "attachment", element.getAttachment(), -1);
16059  }
16060
16061  protected void composeSubstanceSpecificationSubstanceSpecificationCodeComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationCodeComponent element, int index) {
16062    if (element == null) 
16063      return;
16064    Complex t;
16065    if (Utilities.noString(parentType))
16066      t = parent;
16067    else {
16068      t = parent.predicate("fhir:"+parentType+'.'+name);
16069    }
16070    composeBackboneElement(t, "code", name, element, index);
16071    if (element.hasCode())
16072      composeCodeableConcept(t, "SubstanceSpecification", "code", element.getCode(), -1);
16073    if (element.hasStatus())
16074      composeCodeableConcept(t, "SubstanceSpecification", "status", element.getStatus(), -1);
16075    if (element.hasStatusDateElement())
16076      composeDateTime(t, "SubstanceSpecification", "statusDate", element.getStatusDateElement(), -1);
16077    if (element.hasCommentElement())
16078      composeString(t, "SubstanceSpecification", "comment", element.getCommentElement(), -1);
16079    for (int i = 0; i < element.getSource().size(); i++)
16080      composeReference(t, "SubstanceSpecification", "source", element.getSource().get(i), i);
16081  }
16082
16083  protected void composeSubstanceSpecificationSubstanceSpecificationNameComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationNameComponent element, int index) {
16084    if (element == null) 
16085      return;
16086    Complex t;
16087    if (Utilities.noString(parentType))
16088      t = parent;
16089    else {
16090      t = parent.predicate("fhir:"+parentType+'.'+name);
16091    }
16092    composeBackboneElement(t, "name", name, element, index);
16093    if (element.hasNameElement())
16094      composeString(t, "SubstanceSpecification", "name", element.getNameElement(), -1);
16095    if (element.hasType())
16096      composeCodeableConcept(t, "SubstanceSpecification", "type", element.getType(), -1);
16097    if (element.hasStatus())
16098      composeCodeableConcept(t, "SubstanceSpecification", "status", element.getStatus(), -1);
16099    if (element.hasPreferredElement())
16100      composeBoolean(t, "SubstanceSpecification", "preferred", element.getPreferredElement(), -1);
16101    for (int i = 0; i < element.getLanguage().size(); i++)
16102      composeCodeableConcept(t, "SubstanceSpecification", "language", element.getLanguage().get(i), i);
16103    for (int i = 0; i < element.getDomain().size(); i++)
16104      composeCodeableConcept(t, "SubstanceSpecification", "domain", element.getDomain().get(i), i);
16105    for (int i = 0; i < element.getJurisdiction().size(); i++)
16106      composeCodeableConcept(t, "SubstanceSpecification", "jurisdiction", element.getJurisdiction().get(i), i);
16107    for (int i = 0; i < element.getSynonym().size(); i++)
16108      composeSubstanceSpecificationSubstanceSpecificationNameComponent(t, "SubstanceSpecification", "synonym", element.getSynonym().get(i), i);
16109    for (int i = 0; i < element.getTranslation().size(); i++)
16110      composeSubstanceSpecificationSubstanceSpecificationNameComponent(t, "SubstanceSpecification", "translation", element.getTranslation().get(i), i);
16111    for (int i = 0; i < element.getOfficial().size(); i++)
16112      composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(t, "SubstanceSpecification", "official", element.getOfficial().get(i), i);
16113    for (int i = 0; i < element.getSource().size(); i++)
16114      composeReference(t, "SubstanceSpecification", "source", element.getSource().get(i), i);
16115  }
16116
16117  protected void composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationNameOfficialComponent element, int index) {
16118    if (element == null) 
16119      return;
16120    Complex t;
16121    if (Utilities.noString(parentType))
16122      t = parent;
16123    else {
16124      t = parent.predicate("fhir:"+parentType+'.'+name);
16125    }
16126    composeBackboneElement(t, "official", name, element, index);
16127    if (element.hasAuthority())
16128      composeCodeableConcept(t, "SubstanceSpecification", "authority", element.getAuthority(), -1);
16129    if (element.hasStatus())
16130      composeCodeableConcept(t, "SubstanceSpecification", "status", element.getStatus(), -1);
16131    if (element.hasDateElement())
16132      composeDateTime(t, "SubstanceSpecification", "date", element.getDateElement(), -1);
16133  }
16134
16135  protected void composeSubstanceSpecificationSubstanceSpecificationRelationshipComponent(Complex parent, String parentType, String name, SubstanceSpecification.SubstanceSpecificationRelationshipComponent element, int index) {
16136    if (element == null) 
16137      return;
16138    Complex t;
16139    if (Utilities.noString(parentType))
16140      t = parent;
16141    else {
16142      t = parent.predicate("fhir:"+parentType+'.'+name);
16143    }
16144    composeBackboneElement(t, "relationship", name, element, index);
16145    if (element.hasSubstance())
16146      composeType(t, "SubstanceSpecification", "substance", element.getSubstance(), -1);
16147    if (element.hasRelationship())
16148      composeCodeableConcept(t, "SubstanceSpecification", "relationship", element.getRelationship(), -1);
16149    if (element.hasIsDefiningElement())
16150      composeBoolean(t, "SubstanceSpecification", "isDefining", element.getIsDefiningElement(), -1);
16151    if (element.hasAmount())
16152      composeType(t, "SubstanceSpecification", "amount", element.getAmount(), -1);
16153    if (element.hasAmountRatioLowLimit())
16154      composeRatio(t, "SubstanceSpecification", "amountRatioLowLimit", element.getAmountRatioLowLimit(), -1);
16155    if (element.hasAmountType())
16156      composeCodeableConcept(t, "SubstanceSpecification", "amountType", element.getAmountType(), -1);
16157    for (int i = 0; i < element.getSource().size(); i++)
16158      composeReference(t, "SubstanceSpecification", "source", element.getSource().get(i), i);
16159  }
16160
16161  protected void composeSupplyDelivery(Complex parent, String parentType, String name, SupplyDelivery element, int index) {
16162    if (element == null) 
16163      return;
16164    Complex t;
16165    if (Utilities.noString(parentType))
16166      t = parent;
16167    else {
16168      t = parent.predicate("fhir:"+parentType+'.'+name);
16169    }
16170    composeDomainResource(t, "SupplyDelivery", name, element, index);
16171    for (int i = 0; i < element.getIdentifier().size(); i++)
16172      composeIdentifier(t, "SupplyDelivery", "identifier", element.getIdentifier().get(i), i);
16173    for (int i = 0; i < element.getBasedOn().size(); i++)
16174      composeReference(t, "SupplyDelivery", "basedOn", element.getBasedOn().get(i), i);
16175    for (int i = 0; i < element.getPartOf().size(); i++)
16176      composeReference(t, "SupplyDelivery", "partOf", element.getPartOf().get(i), i);
16177    if (element.hasStatusElement())
16178      composeEnum(t, "SupplyDelivery", "status", element.getStatusElement(), -1);
16179    if (element.hasPatient())
16180      composeReference(t, "SupplyDelivery", "patient", element.getPatient(), -1);
16181    if (element.hasType())
16182      composeCodeableConcept(t, "SupplyDelivery", "type", element.getType(), -1);
16183    if (element.hasSuppliedItem())
16184      composeSupplyDeliverySupplyDeliverySuppliedItemComponent(t, "SupplyDelivery", "suppliedItem", element.getSuppliedItem(), -1);
16185    if (element.hasOccurrence())
16186      composeType(t, "SupplyDelivery", "occurrence", element.getOccurrence(), -1);
16187    if (element.hasSupplier())
16188      composeReference(t, "SupplyDelivery", "supplier", element.getSupplier(), -1);
16189    if (element.hasDestination())
16190      composeReference(t, "SupplyDelivery", "destination", element.getDestination(), -1);
16191    for (int i = 0; i < element.getReceiver().size(); i++)
16192      composeReference(t, "SupplyDelivery", "receiver", element.getReceiver().get(i), i);
16193  }
16194
16195  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(Complex parent, String parentType, String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element, int index) {
16196    if (element == null) 
16197      return;
16198    Complex t;
16199    if (Utilities.noString(parentType))
16200      t = parent;
16201    else {
16202      t = parent.predicate("fhir:"+parentType+'.'+name);
16203    }
16204    composeBackboneElement(t, "suppliedItem", name, element, index);
16205    if (element.hasQuantity())
16206      composeQuantity(t, "SupplyDelivery", "quantity", element.getQuantity(), -1);
16207    if (element.hasItem())
16208      composeType(t, "SupplyDelivery", "item", element.getItem(), -1);
16209  }
16210
16211  protected void composeSupplyRequest(Complex parent, String parentType, String name, SupplyRequest element, int index) {
16212    if (element == null) 
16213      return;
16214    Complex t;
16215    if (Utilities.noString(parentType))
16216      t = parent;
16217    else {
16218      t = parent.predicate("fhir:"+parentType+'.'+name);
16219    }
16220    composeDomainResource(t, "SupplyRequest", name, element, index);
16221    for (int i = 0; i < element.getIdentifier().size(); i++)
16222      composeIdentifier(t, "SupplyRequest", "identifier", element.getIdentifier().get(i), i);
16223    if (element.hasStatusElement())
16224      composeEnum(t, "SupplyRequest", "status", element.getStatusElement(), -1);
16225    if (element.hasCategory())
16226      composeCodeableConcept(t, "SupplyRequest", "category", element.getCategory(), -1);
16227    if (element.hasPriorityElement())
16228      composeEnum(t, "SupplyRequest", "priority", element.getPriorityElement(), -1);
16229    if (element.hasItem())
16230      composeType(t, "SupplyRequest", "item", element.getItem(), -1);
16231    if (element.hasQuantity())
16232      composeQuantity(t, "SupplyRequest", "quantity", element.getQuantity(), -1);
16233    for (int i = 0; i < element.getParameter().size(); i++)
16234      composeSupplyRequestSupplyRequestParameterComponent(t, "SupplyRequest", "parameter", element.getParameter().get(i), i);
16235    if (element.hasOccurrence())
16236      composeType(t, "SupplyRequest", "occurrence", element.getOccurrence(), -1);
16237    if (element.hasAuthoredOnElement())
16238      composeDateTime(t, "SupplyRequest", "authoredOn", element.getAuthoredOnElement(), -1);
16239    if (element.hasRequester())
16240      composeReference(t, "SupplyRequest", "requester", element.getRequester(), -1);
16241    for (int i = 0; i < element.getSupplier().size(); i++)
16242      composeReference(t, "SupplyRequest", "supplier", element.getSupplier().get(i), i);
16243    for (int i = 0; i < element.getReasonCode().size(); i++)
16244      composeCodeableConcept(t, "SupplyRequest", "reasonCode", element.getReasonCode().get(i), i);
16245    for (int i = 0; i < element.getReasonReference().size(); i++)
16246      composeReference(t, "SupplyRequest", "reasonReference", element.getReasonReference().get(i), i);
16247    if (element.hasDeliverFrom())
16248      composeReference(t, "SupplyRequest", "deliverFrom", element.getDeliverFrom(), -1);
16249    if (element.hasDeliverTo())
16250      composeReference(t, "SupplyRequest", "deliverTo", element.getDeliverTo(), -1);
16251  }
16252
16253  protected void composeSupplyRequestSupplyRequestParameterComponent(Complex parent, String parentType, String name, SupplyRequest.SupplyRequestParameterComponent element, int index) {
16254    if (element == null) 
16255      return;
16256    Complex t;
16257    if (Utilities.noString(parentType))
16258      t = parent;
16259    else {
16260      t = parent.predicate("fhir:"+parentType+'.'+name);
16261    }
16262    composeBackboneElement(t, "parameter", name, element, index);
16263    if (element.hasCode())
16264      composeCodeableConcept(t, "SupplyRequest", "code", element.getCode(), -1);
16265    if (element.hasValue())
16266      composeType(t, "SupplyRequest", "value", element.getValue(), -1);
16267  }
16268
16269  protected void composeTask(Complex parent, String parentType, String name, Task element, int index) {
16270    if (element == null) 
16271      return;
16272    Complex t;
16273    if (Utilities.noString(parentType))
16274      t = parent;
16275    else {
16276      t = parent.predicate("fhir:"+parentType+'.'+name);
16277    }
16278    composeDomainResource(t, "Task", name, element, index);
16279    for (int i = 0; i < element.getIdentifier().size(); i++)
16280      composeIdentifier(t, "Task", "identifier", element.getIdentifier().get(i), i);
16281    if (element.hasInstantiatesCanonicalElement())
16282      composeCanonical(t, "Task", "instantiatesCanonical", element.getInstantiatesCanonicalElement(), -1);
16283    if (element.hasInstantiatesUriElement())
16284      composeUri(t, "Task", "instantiatesUri", element.getInstantiatesUriElement(), -1);
16285    for (int i = 0; i < element.getBasedOn().size(); i++)
16286      composeReference(t, "Task", "basedOn", element.getBasedOn().get(i), i);
16287    if (element.hasGroupIdentifier())
16288      composeIdentifier(t, "Task", "groupIdentifier", element.getGroupIdentifier(), -1);
16289    for (int i = 0; i < element.getPartOf().size(); i++)
16290      composeReference(t, "Task", "partOf", element.getPartOf().get(i), i);
16291    if (element.hasStatusElement())
16292      composeEnum(t, "Task", "status", element.getStatusElement(), -1);
16293    if (element.hasStatusReason())
16294      composeCodeableConcept(t, "Task", "statusReason", element.getStatusReason(), -1);
16295    if (element.hasBusinessStatus())
16296      composeCodeableConcept(t, "Task", "businessStatus", element.getBusinessStatus(), -1);
16297    if (element.hasIntentElement())
16298      composeEnum(t, "Task", "intent", element.getIntentElement(), -1);
16299    if (element.hasPriorityElement())
16300      composeEnum(t, "Task", "priority", element.getPriorityElement(), -1);
16301    if (element.hasCode())
16302      composeCodeableConcept(t, "Task", "code", element.getCode(), -1);
16303    if (element.hasDescriptionElement())
16304      composeString(t, "Task", "description", element.getDescriptionElement(), -1);
16305    if (element.hasFocus())
16306      composeReference(t, "Task", "focus", element.getFocus(), -1);
16307    if (element.hasFor())
16308      composeReference(t, "Task", "for", element.getFor(), -1);
16309    if (element.hasEncounter())
16310      composeReference(t, "Task", "encounter", element.getEncounter(), -1);
16311    if (element.hasExecutionPeriod())
16312      composePeriod(t, "Task", "executionPeriod", element.getExecutionPeriod(), -1);
16313    if (element.hasAuthoredOnElement())
16314      composeDateTime(t, "Task", "authoredOn", element.getAuthoredOnElement(), -1);
16315    if (element.hasLastModifiedElement())
16316      composeDateTime(t, "Task", "lastModified", element.getLastModifiedElement(), -1);
16317    if (element.hasRequester())
16318      composeReference(t, "Task", "requester", element.getRequester(), -1);
16319    for (int i = 0; i < element.getPerformerType().size(); i++)
16320      composeCodeableConcept(t, "Task", "performerType", element.getPerformerType().get(i), i);
16321    if (element.hasOwner())
16322      composeReference(t, "Task", "owner", element.getOwner(), -1);
16323    if (element.hasLocation())
16324      composeReference(t, "Task", "location", element.getLocation(), -1);
16325    if (element.hasReasonCode())
16326      composeCodeableConcept(t, "Task", "reasonCode", element.getReasonCode(), -1);
16327    if (element.hasReasonReference())
16328      composeReference(t, "Task", "reasonReference", element.getReasonReference(), -1);
16329    for (int i = 0; i < element.getInsurance().size(); i++)
16330      composeReference(t, "Task", "insurance", element.getInsurance().get(i), i);
16331    for (int i = 0; i < element.getNote().size(); i++)
16332      composeAnnotation(t, "Task", "note", element.getNote().get(i), i);
16333    for (int i = 0; i < element.getRelevantHistory().size(); i++)
16334      composeReference(t, "Task", "relevantHistory", element.getRelevantHistory().get(i), i);
16335    if (element.hasRestriction())
16336      composeTaskTaskRestrictionComponent(t, "Task", "restriction", element.getRestriction(), -1);
16337    for (int i = 0; i < element.getInput().size(); i++)
16338      composeTaskParameterComponent(t, "Task", "input", element.getInput().get(i), i);
16339    for (int i = 0; i < element.getOutput().size(); i++)
16340      composeTaskTaskOutputComponent(t, "Task", "output", element.getOutput().get(i), i);
16341  }
16342
16343  protected void composeTaskTaskRestrictionComponent(Complex parent, String parentType, String name, Task.TaskRestrictionComponent element, int index) {
16344    if (element == null) 
16345      return;
16346    Complex t;
16347    if (Utilities.noString(parentType))
16348      t = parent;
16349    else {
16350      t = parent.predicate("fhir:"+parentType+'.'+name);
16351    }
16352    composeBackboneElement(t, "restriction", name, element, index);
16353    if (element.hasRepetitionsElement())
16354      composePositiveInt(t, "Task", "repetitions", element.getRepetitionsElement(), -1);
16355    if (element.hasPeriod())
16356      composePeriod(t, "Task", "period", element.getPeriod(), -1);
16357    for (int i = 0; i < element.getRecipient().size(); i++)
16358      composeReference(t, "Task", "recipient", element.getRecipient().get(i), i);
16359  }
16360
16361  protected void composeTaskParameterComponent(Complex parent, String parentType, String name, Task.ParameterComponent element, int index) {
16362    if (element == null) 
16363      return;
16364    Complex t;
16365    if (Utilities.noString(parentType))
16366      t = parent;
16367    else {
16368      t = parent.predicate("fhir:"+parentType+'.'+name);
16369    }
16370    composeBackboneElement(t, "input", name, element, index);
16371    if (element.hasType())
16372      composeCodeableConcept(t, "Task", "type", element.getType(), -1);
16373    if (element.hasValue())
16374      composeType(t, "Task", "value", element.getValue(), -1);
16375  }
16376
16377  protected void composeTaskTaskOutputComponent(Complex parent, String parentType, String name, Task.TaskOutputComponent element, int index) {
16378    if (element == null) 
16379      return;
16380    Complex t;
16381    if (Utilities.noString(parentType))
16382      t = parent;
16383    else {
16384      t = parent.predicate("fhir:"+parentType+'.'+name);
16385    }
16386    composeBackboneElement(t, "output", name, element, index);
16387    if (element.hasType())
16388      composeCodeableConcept(t, "Task", "type", element.getType(), -1);
16389    if (element.hasValue())
16390      composeType(t, "Task", "value", element.getValue(), -1);
16391  }
16392
16393  protected void composeTerminologyCapabilities(Complex parent, String parentType, String name, TerminologyCapabilities element, int index) {
16394    if (element == null) 
16395      return;
16396    Complex t;
16397    if (Utilities.noString(parentType))
16398      t = parent;
16399    else {
16400      t = parent.predicate("fhir:"+parentType+'.'+name);
16401    }
16402    composeDomainResource(t, "TerminologyCapabilities", name, element, index);
16403    if (element.hasUrlElement())
16404      composeUri(t, "TerminologyCapabilities", "url", element.getUrlElement(), -1);
16405    if (element.hasVersionElement())
16406      composeString(t, "TerminologyCapabilities", "version", element.getVersionElement(), -1);
16407    if (element.hasNameElement())
16408      composeString(t, "TerminologyCapabilities", "name", element.getNameElement(), -1);
16409    if (element.hasTitleElement())
16410      composeString(t, "TerminologyCapabilities", "title", element.getTitleElement(), -1);
16411    if (element.hasStatusElement())
16412      composeEnum(t, "TerminologyCapabilities", "status", element.getStatusElement(), -1);
16413    if (element.hasExperimentalElement())
16414      composeBoolean(t, "TerminologyCapabilities", "experimental", element.getExperimentalElement(), -1);
16415    if (element.hasDateElement())
16416      composeDateTime(t, "TerminologyCapabilities", "date", element.getDateElement(), -1);
16417    if (element.hasPublisherElement())
16418      composeString(t, "TerminologyCapabilities", "publisher", element.getPublisherElement(), -1);
16419    for (int i = 0; i < element.getContact().size(); i++)
16420      composeContactDetail(t, "TerminologyCapabilities", "contact", element.getContact().get(i), i);
16421    if (element.hasDescriptionElement())
16422      composeMarkdown(t, "TerminologyCapabilities", "description", element.getDescriptionElement(), -1);
16423    for (int i = 0; i < element.getUseContext().size(); i++)
16424      composeUsageContext(t, "TerminologyCapabilities", "useContext", element.getUseContext().get(i), i);
16425    for (int i = 0; i < element.getJurisdiction().size(); i++)
16426      composeCodeableConcept(t, "TerminologyCapabilities", "jurisdiction", element.getJurisdiction().get(i), i);
16427    if (element.hasPurposeElement())
16428      composeMarkdown(t, "TerminologyCapabilities", "purpose", element.getPurposeElement(), -1);
16429    if (element.hasCopyrightElement())
16430      composeMarkdown(t, "TerminologyCapabilities", "copyright", element.getCopyrightElement(), -1);
16431    if (element.hasKindElement())
16432      composeEnum(t, "TerminologyCapabilities", "kind", element.getKindElement(), -1);
16433    if (element.hasSoftware())
16434      composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(t, "TerminologyCapabilities", "software", element.getSoftware(), -1);
16435    if (element.hasImplementation())
16436      composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(t, "TerminologyCapabilities", "implementation", element.getImplementation(), -1);
16437    if (element.hasLockedDateElement())
16438      composeBoolean(t, "TerminologyCapabilities", "lockedDate", element.getLockedDateElement(), -1);
16439    for (int i = 0; i < element.getCodeSystem().size(); i++)
16440      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(t, "TerminologyCapabilities", "codeSystem", element.getCodeSystem().get(i), i);
16441    if (element.hasExpansion())
16442      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(t, "TerminologyCapabilities", "expansion", element.getExpansion(), -1);
16443    if (element.hasCodeSearchElement())
16444      composeEnum(t, "TerminologyCapabilities", "codeSearch", element.getCodeSearchElement(), -1);
16445    if (element.hasValidateCode())
16446      composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(t, "TerminologyCapabilities", "validateCode", element.getValidateCode(), -1);
16447    if (element.hasTranslation())
16448      composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(t, "TerminologyCapabilities", "translation", element.getTranslation(), -1);
16449    if (element.hasClosure())
16450      composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(t, "TerminologyCapabilities", "closure", element.getClosure(), -1);
16451  }
16452
16453  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element, int index) {
16454    if (element == null) 
16455      return;
16456    Complex t;
16457    if (Utilities.noString(parentType))
16458      t = parent;
16459    else {
16460      t = parent.predicate("fhir:"+parentType+'.'+name);
16461    }
16462    composeBackboneElement(t, "software", name, element, index);
16463    if (element.hasNameElement())
16464      composeString(t, "TerminologyCapabilities", "name", element.getNameElement(), -1);
16465    if (element.hasVersionElement())
16466      composeString(t, "TerminologyCapabilities", "version", element.getVersionElement(), -1);
16467  }
16468
16469  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element, int index) {
16470    if (element == null) 
16471      return;
16472    Complex t;
16473    if (Utilities.noString(parentType))
16474      t = parent;
16475    else {
16476      t = parent.predicate("fhir:"+parentType+'.'+name);
16477    }
16478    composeBackboneElement(t, "implementation", name, element, index);
16479    if (element.hasDescriptionElement())
16480      composeString(t, "TerminologyCapabilities", "description", element.getDescriptionElement(), -1);
16481    if (element.hasUrlElement())
16482      composeUrl(t, "TerminologyCapabilities", "url", element.getUrlElement(), -1);
16483  }
16484
16485  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element, int index) {
16486    if (element == null) 
16487      return;
16488    Complex t;
16489    if (Utilities.noString(parentType))
16490      t = parent;
16491    else {
16492      t = parent.predicate("fhir:"+parentType+'.'+name);
16493    }
16494    composeBackboneElement(t, "codeSystem", name, element, index);
16495    if (element.hasUriElement())
16496      composeCanonical(t, "TerminologyCapabilities", "uri", element.getUriElement(), -1);
16497    for (int i = 0; i < element.getVersion().size(); i++)
16498      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(t, "TerminologyCapabilities", "version", element.getVersion().get(i), i);
16499    if (element.hasSubsumptionElement())
16500      composeBoolean(t, "TerminologyCapabilities", "subsumption", element.getSubsumptionElement(), -1);
16501  }
16502
16503  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element, int index) {
16504    if (element == null) 
16505      return;
16506    Complex t;
16507    if (Utilities.noString(parentType))
16508      t = parent;
16509    else {
16510      t = parent.predicate("fhir:"+parentType+'.'+name);
16511    }
16512    composeBackboneElement(t, "version", name, element, index);
16513    if (element.hasCodeElement())
16514      composeString(t, "TerminologyCapabilities", "code", element.getCodeElement(), -1);
16515    if (element.hasIsDefaultElement())
16516      composeBoolean(t, "TerminologyCapabilities", "isDefault", element.getIsDefaultElement(), -1);
16517    if (element.hasCompositionalElement())
16518      composeBoolean(t, "TerminologyCapabilities", "compositional", element.getCompositionalElement(), -1);
16519    for (int i = 0; i < element.getLanguage().size(); i++)
16520      composeCode(t, "TerminologyCapabilities", "language", element.getLanguage().get(i), i);
16521    for (int i = 0; i < element.getFilter().size(); i++)
16522      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(t, "TerminologyCapabilities", "filter", element.getFilter().get(i), i);
16523    for (int i = 0; i < element.getProperty().size(); i++)
16524      composeCode(t, "TerminologyCapabilities", "property", element.getProperty().get(i), i);
16525  }
16526
16527  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element, int index) {
16528    if (element == null) 
16529      return;
16530    Complex t;
16531    if (Utilities.noString(parentType))
16532      t = parent;
16533    else {
16534      t = parent.predicate("fhir:"+parentType+'.'+name);
16535    }
16536    composeBackboneElement(t, "filter", name, element, index);
16537    if (element.hasCodeElement())
16538      composeCode(t, "TerminologyCapabilities", "code", element.getCodeElement(), -1);
16539    for (int i = 0; i < element.getOp().size(); i++)
16540      composeCode(t, "TerminologyCapabilities", "op", element.getOp().get(i), i);
16541  }
16542
16543  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element, int index) {
16544    if (element == null) 
16545      return;
16546    Complex t;
16547    if (Utilities.noString(parentType))
16548      t = parent;
16549    else {
16550      t = parent.predicate("fhir:"+parentType+'.'+name);
16551    }
16552    composeBackboneElement(t, "expansion", name, element, index);
16553    if (element.hasHierarchicalElement())
16554      composeBoolean(t, "TerminologyCapabilities", "hierarchical", element.getHierarchicalElement(), -1);
16555    if (element.hasPagingElement())
16556      composeBoolean(t, "TerminologyCapabilities", "paging", element.getPagingElement(), -1);
16557    if (element.hasIncompleteElement())
16558      composeBoolean(t, "TerminologyCapabilities", "incomplete", element.getIncompleteElement(), -1);
16559    for (int i = 0; i < element.getParameter().size(); i++)
16560      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(t, "TerminologyCapabilities", "parameter", element.getParameter().get(i), i);
16561    if (element.hasTextFilterElement())
16562      composeMarkdown(t, "TerminologyCapabilities", "textFilter", element.getTextFilterElement(), -1);
16563  }
16564
16565  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element, int index) {
16566    if (element == null) 
16567      return;
16568    Complex t;
16569    if (Utilities.noString(parentType))
16570      t = parent;
16571    else {
16572      t = parent.predicate("fhir:"+parentType+'.'+name);
16573    }
16574    composeBackboneElement(t, "parameter", name, element, index);
16575    if (element.hasNameElement())
16576      composeCode(t, "TerminologyCapabilities", "name", element.getNameElement(), -1);
16577    if (element.hasDocumentationElement())
16578      composeString(t, "TerminologyCapabilities", "documentation", element.getDocumentationElement(), -1);
16579  }
16580
16581  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element, int index) {
16582    if (element == null) 
16583      return;
16584    Complex t;
16585    if (Utilities.noString(parentType))
16586      t = parent;
16587    else {
16588      t = parent.predicate("fhir:"+parentType+'.'+name);
16589    }
16590    composeBackboneElement(t, "validateCode", name, element, index);
16591    if (element.hasTranslationsElement())
16592      composeBoolean(t, "TerminologyCapabilities", "translations", element.getTranslationsElement(), -1);
16593  }
16594
16595  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element, int index) {
16596    if (element == null) 
16597      return;
16598    Complex t;
16599    if (Utilities.noString(parentType))
16600      t = parent;
16601    else {
16602      t = parent.predicate("fhir:"+parentType+'.'+name);
16603    }
16604    composeBackboneElement(t, "translation", name, element, index);
16605    if (element.hasNeedsMapElement())
16606      composeBoolean(t, "TerminologyCapabilities", "needsMap", element.getNeedsMapElement(), -1);
16607  }
16608
16609  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(Complex parent, String parentType, String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element, int index) {
16610    if (element == null) 
16611      return;
16612    Complex t;
16613    if (Utilities.noString(parentType))
16614      t = parent;
16615    else {
16616      t = parent.predicate("fhir:"+parentType+'.'+name);
16617    }
16618    composeBackboneElement(t, "closure", name, element, index);
16619    if (element.hasTranslationElement())
16620      composeBoolean(t, "TerminologyCapabilities", "translation", element.getTranslationElement(), -1);
16621  }
16622
16623  protected void composeTestReport(Complex parent, String parentType, String name, TestReport element, int index) {
16624    if (element == null) 
16625      return;
16626    Complex t;
16627    if (Utilities.noString(parentType))
16628      t = parent;
16629    else {
16630      t = parent.predicate("fhir:"+parentType+'.'+name);
16631    }
16632    composeDomainResource(t, "TestReport", name, element, index);
16633    if (element.hasIdentifier())
16634      composeIdentifier(t, "TestReport", "identifier", element.getIdentifier(), -1);
16635    if (element.hasNameElement())
16636      composeString(t, "TestReport", "name", element.getNameElement(), -1);
16637    if (element.hasStatusElement())
16638      composeEnum(t, "TestReport", "status", element.getStatusElement(), -1);
16639    if (element.hasTestScript())
16640      composeReference(t, "TestReport", "testScript", element.getTestScript(), -1);
16641    if (element.hasResultElement())
16642      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
16643    if (element.hasScoreElement())
16644      composeDecimal(t, "TestReport", "score", element.getScoreElement(), -1);
16645    if (element.hasTesterElement())
16646      composeString(t, "TestReport", "tester", element.getTesterElement(), -1);
16647    if (element.hasIssuedElement())
16648      composeDateTime(t, "TestReport", "issued", element.getIssuedElement(), -1);
16649    for (int i = 0; i < element.getParticipant().size(); i++)
16650      composeTestReportTestReportParticipantComponent(t, "TestReport", "participant", element.getParticipant().get(i), i);
16651    if (element.hasSetup())
16652      composeTestReportTestReportSetupComponent(t, "TestReport", "setup", element.getSetup(), -1);
16653    for (int i = 0; i < element.getTest().size(); i++)
16654      composeTestReportTestReportTestComponent(t, "TestReport", "test", element.getTest().get(i), i);
16655    if (element.hasTeardown())
16656      composeTestReportTestReportTeardownComponent(t, "TestReport", "teardown", element.getTeardown(), -1);
16657  }
16658
16659  protected void composeTestReportTestReportParticipantComponent(Complex parent, String parentType, String name, TestReport.TestReportParticipantComponent element, int index) {
16660    if (element == null) 
16661      return;
16662    Complex t;
16663    if (Utilities.noString(parentType))
16664      t = parent;
16665    else {
16666      t = parent.predicate("fhir:"+parentType+'.'+name);
16667    }
16668    composeBackboneElement(t, "participant", name, element, index);
16669    if (element.hasTypeElement())
16670      composeEnum(t, "TestReport", "type", element.getTypeElement(), -1);
16671    if (element.hasUriElement())
16672      composeUri(t, "TestReport", "uri", element.getUriElement(), -1);
16673    if (element.hasDisplayElement())
16674      composeString(t, "TestReport", "display", element.getDisplayElement(), -1);
16675  }
16676
16677  protected void composeTestReportTestReportSetupComponent(Complex parent, String parentType, String name, TestReport.TestReportSetupComponent element, int index) {
16678    if (element == null) 
16679      return;
16680    Complex t;
16681    if (Utilities.noString(parentType))
16682      t = parent;
16683    else {
16684      t = parent.predicate("fhir:"+parentType+'.'+name);
16685    }
16686    composeBackboneElement(t, "setup", name, element, index);
16687    for (int i = 0; i < element.getAction().size(); i++)
16688      composeTestReportSetupActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
16689  }
16690
16691  protected void composeTestReportSetupActionComponent(Complex parent, String parentType, String name, TestReport.SetupActionComponent element, int index) {
16692    if (element == null) 
16693      return;
16694    Complex t;
16695    if (Utilities.noString(parentType))
16696      t = parent;
16697    else {
16698      t = parent.predicate("fhir:"+parentType+'.'+name);
16699    }
16700    composeBackboneElement(t, "action", name, element, index);
16701    if (element.hasOperation())
16702      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
16703    if (element.hasAssert())
16704      composeTestReportSetupActionAssertComponent(t, "TestReport", "assert", element.getAssert(), -1);
16705  }
16706
16707  protected void composeTestReportSetupActionOperationComponent(Complex parent, String parentType, String name, TestReport.SetupActionOperationComponent element, int index) {
16708    if (element == null) 
16709      return;
16710    Complex t;
16711    if (Utilities.noString(parentType))
16712      t = parent;
16713    else {
16714      t = parent.predicate("fhir:"+parentType+'.'+name);
16715    }
16716    composeBackboneElement(t, "operation", name, element, index);
16717    if (element.hasResultElement())
16718      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
16719    if (element.hasMessageElement())
16720      composeMarkdown(t, "TestReport", "message", element.getMessageElement(), -1);
16721    if (element.hasDetailElement())
16722      composeUri(t, "TestReport", "detail", element.getDetailElement(), -1);
16723  }
16724
16725  protected void composeTestReportSetupActionAssertComponent(Complex parent, String parentType, String name, TestReport.SetupActionAssertComponent element, int index) {
16726    if (element == null) 
16727      return;
16728    Complex t;
16729    if (Utilities.noString(parentType))
16730      t = parent;
16731    else {
16732      t = parent.predicate("fhir:"+parentType+'.'+name);
16733    }
16734    composeBackboneElement(t, "assert", name, element, index);
16735    if (element.hasResultElement())
16736      composeEnum(t, "TestReport", "result", element.getResultElement(), -1);
16737    if (element.hasMessageElement())
16738      composeMarkdown(t, "TestReport", "message", element.getMessageElement(), -1);
16739    if (element.hasDetailElement())
16740      composeString(t, "TestReport", "detail", element.getDetailElement(), -1);
16741  }
16742
16743  protected void composeTestReportTestReportTestComponent(Complex parent, String parentType, String name, TestReport.TestReportTestComponent element, int index) {
16744    if (element == null) 
16745      return;
16746    Complex t;
16747    if (Utilities.noString(parentType))
16748      t = parent;
16749    else {
16750      t = parent.predicate("fhir:"+parentType+'.'+name);
16751    }
16752    composeBackboneElement(t, "test", name, element, index);
16753    if (element.hasNameElement())
16754      composeString(t, "TestReport", "name", element.getNameElement(), -1);
16755    if (element.hasDescriptionElement())
16756      composeString(t, "TestReport", "description", element.getDescriptionElement(), -1);
16757    for (int i = 0; i < element.getAction().size(); i++)
16758      composeTestReportTestActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
16759  }
16760
16761  protected void composeTestReportTestActionComponent(Complex parent, String parentType, String name, TestReport.TestActionComponent element, int index) {
16762    if (element == null) 
16763      return;
16764    Complex t;
16765    if (Utilities.noString(parentType))
16766      t = parent;
16767    else {
16768      t = parent.predicate("fhir:"+parentType+'.'+name);
16769    }
16770    composeBackboneElement(t, "action", name, element, index);
16771    if (element.hasOperation())
16772      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
16773    if (element.hasAssert())
16774      composeTestReportSetupActionAssertComponent(t, "TestReport", "assert", element.getAssert(), -1);
16775  }
16776
16777  protected void composeTestReportTestReportTeardownComponent(Complex parent, String parentType, String name, TestReport.TestReportTeardownComponent element, int index) {
16778    if (element == null) 
16779      return;
16780    Complex t;
16781    if (Utilities.noString(parentType))
16782      t = parent;
16783    else {
16784      t = parent.predicate("fhir:"+parentType+'.'+name);
16785    }
16786    composeBackboneElement(t, "teardown", name, element, index);
16787    for (int i = 0; i < element.getAction().size(); i++)
16788      composeTestReportTeardownActionComponent(t, "TestReport", "action", element.getAction().get(i), i);
16789  }
16790
16791  protected void composeTestReportTeardownActionComponent(Complex parent, String parentType, String name, TestReport.TeardownActionComponent element, int index) {
16792    if (element == null) 
16793      return;
16794    Complex t;
16795    if (Utilities.noString(parentType))
16796      t = parent;
16797    else {
16798      t = parent.predicate("fhir:"+parentType+'.'+name);
16799    }
16800    composeBackboneElement(t, "action", name, element, index);
16801    if (element.hasOperation())
16802      composeTestReportSetupActionOperationComponent(t, "TestReport", "operation", element.getOperation(), -1);
16803  }
16804
16805  protected void composeTestScript(Complex parent, String parentType, String name, TestScript element, int index) {
16806    if (element == null) 
16807      return;
16808    Complex t;
16809    if (Utilities.noString(parentType))
16810      t = parent;
16811    else {
16812      t = parent.predicate("fhir:"+parentType+'.'+name);
16813    }
16814    composeDomainResource(t, "TestScript", name, element, index);
16815    if (element.hasUrlElement())
16816      composeUri(t, "TestScript", "url", element.getUrlElement(), -1);
16817    if (element.hasIdentifier())
16818      composeIdentifier(t, "TestScript", "identifier", element.getIdentifier(), -1);
16819    if (element.hasVersionElement())
16820      composeString(t, "TestScript", "version", element.getVersionElement(), -1);
16821    if (element.hasNameElement())
16822      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16823    if (element.hasTitleElement())
16824      composeString(t, "TestScript", "title", element.getTitleElement(), -1);
16825    if (element.hasStatusElement())
16826      composeEnum(t, "TestScript", "status", element.getStatusElement(), -1);
16827    if (element.hasExperimentalElement())
16828      composeBoolean(t, "TestScript", "experimental", element.getExperimentalElement(), -1);
16829    if (element.hasDateElement())
16830      composeDateTime(t, "TestScript", "date", element.getDateElement(), -1);
16831    if (element.hasPublisherElement())
16832      composeString(t, "TestScript", "publisher", element.getPublisherElement(), -1);
16833    for (int i = 0; i < element.getContact().size(); i++)
16834      composeContactDetail(t, "TestScript", "contact", element.getContact().get(i), i);
16835    if (element.hasDescriptionElement())
16836      composeMarkdown(t, "TestScript", "description", element.getDescriptionElement(), -1);
16837    for (int i = 0; i < element.getUseContext().size(); i++)
16838      composeUsageContext(t, "TestScript", "useContext", element.getUseContext().get(i), i);
16839    for (int i = 0; i < element.getJurisdiction().size(); i++)
16840      composeCodeableConcept(t, "TestScript", "jurisdiction", element.getJurisdiction().get(i), i);
16841    if (element.hasPurposeElement())
16842      composeMarkdown(t, "TestScript", "purpose", element.getPurposeElement(), -1);
16843    if (element.hasCopyrightElement())
16844      composeMarkdown(t, "TestScript", "copyright", element.getCopyrightElement(), -1);
16845    for (int i = 0; i < element.getOrigin().size(); i++)
16846      composeTestScriptTestScriptOriginComponent(t, "TestScript", "origin", element.getOrigin().get(i), i);
16847    for (int i = 0; i < element.getDestination().size(); i++)
16848      composeTestScriptTestScriptDestinationComponent(t, "TestScript", "destination", element.getDestination().get(i), i);
16849    if (element.hasMetadata())
16850      composeTestScriptTestScriptMetadataComponent(t, "TestScript", "metadata", element.getMetadata(), -1);
16851    for (int i = 0; i < element.getFixture().size(); i++)
16852      composeTestScriptTestScriptFixtureComponent(t, "TestScript", "fixture", element.getFixture().get(i), i);
16853    for (int i = 0; i < element.getProfile().size(); i++)
16854      composeReference(t, "TestScript", "profile", element.getProfile().get(i), i);
16855    for (int i = 0; i < element.getVariable().size(); i++)
16856      composeTestScriptTestScriptVariableComponent(t, "TestScript", "variable", element.getVariable().get(i), i);
16857    if (element.hasSetup())
16858      composeTestScriptTestScriptSetupComponent(t, "TestScript", "setup", element.getSetup(), -1);
16859    for (int i = 0; i < element.getTest().size(); i++)
16860      composeTestScriptTestScriptTestComponent(t, "TestScript", "test", element.getTest().get(i), i);
16861    if (element.hasTeardown())
16862      composeTestScriptTestScriptTeardownComponent(t, "TestScript", "teardown", element.getTeardown(), -1);
16863  }
16864
16865  protected void composeTestScriptTestScriptOriginComponent(Complex parent, String parentType, String name, TestScript.TestScriptOriginComponent element, int index) {
16866    if (element == null) 
16867      return;
16868    Complex t;
16869    if (Utilities.noString(parentType))
16870      t = parent;
16871    else {
16872      t = parent.predicate("fhir:"+parentType+'.'+name);
16873    }
16874    composeBackboneElement(t, "origin", name, element, index);
16875    if (element.hasIndexElement())
16876      composeInteger(t, "TestScript", "index", element.getIndexElement(), -1);
16877    if (element.hasProfile())
16878      composeCoding(t, "TestScript", "profile", element.getProfile(), -1);
16879  }
16880
16881  protected void composeTestScriptTestScriptDestinationComponent(Complex parent, String parentType, String name, TestScript.TestScriptDestinationComponent element, int index) {
16882    if (element == null) 
16883      return;
16884    Complex t;
16885    if (Utilities.noString(parentType))
16886      t = parent;
16887    else {
16888      t = parent.predicate("fhir:"+parentType+'.'+name);
16889    }
16890    composeBackboneElement(t, "destination", name, element, index);
16891    if (element.hasIndexElement())
16892      composeInteger(t, "TestScript", "index", element.getIndexElement(), -1);
16893    if (element.hasProfile())
16894      composeCoding(t, "TestScript", "profile", element.getProfile(), -1);
16895  }
16896
16897  protected void composeTestScriptTestScriptMetadataComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataComponent element, int index) {
16898    if (element == null) 
16899      return;
16900    Complex t;
16901    if (Utilities.noString(parentType))
16902      t = parent;
16903    else {
16904      t = parent.predicate("fhir:"+parentType+'.'+name);
16905    }
16906    composeBackboneElement(t, "metadata", name, element, index);
16907    for (int i = 0; i < element.getLink().size(); i++)
16908      composeTestScriptTestScriptMetadataLinkComponent(t, "TestScript", "link", element.getLink().get(i), i);
16909    for (int i = 0; i < element.getCapability().size(); i++)
16910      composeTestScriptTestScriptMetadataCapabilityComponent(t, "TestScript", "capability", element.getCapability().get(i), i);
16911  }
16912
16913  protected void composeTestScriptTestScriptMetadataLinkComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataLinkComponent element, int index) {
16914    if (element == null) 
16915      return;
16916    Complex t;
16917    if (Utilities.noString(parentType))
16918      t = parent;
16919    else {
16920      t = parent.predicate("fhir:"+parentType+'.'+name);
16921    }
16922    composeBackboneElement(t, "link", name, element, index);
16923    if (element.hasUrlElement())
16924      composeUri(t, "TestScript", "url", element.getUrlElement(), -1);
16925    if (element.hasDescriptionElement())
16926      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16927  }
16928
16929  protected void composeTestScriptTestScriptMetadataCapabilityComponent(Complex parent, String parentType, String name, TestScript.TestScriptMetadataCapabilityComponent element, int index) {
16930    if (element == null) 
16931      return;
16932    Complex t;
16933    if (Utilities.noString(parentType))
16934      t = parent;
16935    else {
16936      t = parent.predicate("fhir:"+parentType+'.'+name);
16937    }
16938    composeBackboneElement(t, "capability", name, element, index);
16939    if (element.hasRequiredElement())
16940      composeBoolean(t, "TestScript", "required", element.getRequiredElement(), -1);
16941    if (element.hasValidatedElement())
16942      composeBoolean(t, "TestScript", "validated", element.getValidatedElement(), -1);
16943    if (element.hasDescriptionElement())
16944      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16945    for (int i = 0; i < element.getOrigin().size(); i++)
16946      composeInteger(t, "TestScript", "origin", element.getOrigin().get(i), i);
16947    if (element.hasDestinationElement())
16948      composeInteger(t, "TestScript", "destination", element.getDestinationElement(), -1);
16949    for (int i = 0; i < element.getLink().size(); i++)
16950      composeUri(t, "TestScript", "link", element.getLink().get(i), i);
16951    if (element.hasCapabilitiesElement())
16952      composeCanonical(t, "TestScript", "capabilities", element.getCapabilitiesElement(), -1);
16953  }
16954
16955  protected void composeTestScriptTestScriptFixtureComponent(Complex parent, String parentType, String name, TestScript.TestScriptFixtureComponent element, int index) {
16956    if (element == null) 
16957      return;
16958    Complex t;
16959    if (Utilities.noString(parentType))
16960      t = parent;
16961    else {
16962      t = parent.predicate("fhir:"+parentType+'.'+name);
16963    }
16964    composeBackboneElement(t, "fixture", name, element, index);
16965    if (element.hasAutocreateElement())
16966      composeBoolean(t, "TestScript", "autocreate", element.getAutocreateElement(), -1);
16967    if (element.hasAutodeleteElement())
16968      composeBoolean(t, "TestScript", "autodelete", element.getAutodeleteElement(), -1);
16969    if (element.hasResource())
16970      composeReference(t, "TestScript", "resource", element.getResource(), -1);
16971  }
16972
16973  protected void composeTestScriptTestScriptVariableComponent(Complex parent, String parentType, String name, TestScript.TestScriptVariableComponent element, int index) {
16974    if (element == null) 
16975      return;
16976    Complex t;
16977    if (Utilities.noString(parentType))
16978      t = parent;
16979    else {
16980      t = parent.predicate("fhir:"+parentType+'.'+name);
16981    }
16982    composeBackboneElement(t, "variable", name, element, index);
16983    if (element.hasNameElement())
16984      composeString(t, "TestScript", "name", element.getNameElement(), -1);
16985    if (element.hasDefaultValueElement())
16986      composeString(t, "TestScript", "defaultValue", element.getDefaultValueElement(), -1);
16987    if (element.hasDescriptionElement())
16988      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
16989    if (element.hasExpressionElement())
16990      composeString(t, "TestScript", "expression", element.getExpressionElement(), -1);
16991    if (element.hasHeaderFieldElement())
16992      composeString(t, "TestScript", "headerField", element.getHeaderFieldElement(), -1);
16993    if (element.hasHintElement())
16994      composeString(t, "TestScript", "hint", element.getHintElement(), -1);
16995    if (element.hasPathElement())
16996      composeString(t, "TestScript", "path", element.getPathElement(), -1);
16997    if (element.hasSourceIdElement())
16998      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
16999  }
17000
17001  protected void composeTestScriptTestScriptSetupComponent(Complex parent, String parentType, String name, TestScript.TestScriptSetupComponent element, int index) {
17002    if (element == null) 
17003      return;
17004    Complex t;
17005    if (Utilities.noString(parentType))
17006      t = parent;
17007    else {
17008      t = parent.predicate("fhir:"+parentType+'.'+name);
17009    }
17010    composeBackboneElement(t, "setup", name, element, index);
17011    for (int i = 0; i < element.getAction().size(); i++)
17012      composeTestScriptSetupActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
17013  }
17014
17015  protected void composeTestScriptSetupActionComponent(Complex parent, String parentType, String name, TestScript.SetupActionComponent element, int index) {
17016    if (element == null) 
17017      return;
17018    Complex t;
17019    if (Utilities.noString(parentType))
17020      t = parent;
17021    else {
17022      t = parent.predicate("fhir:"+parentType+'.'+name);
17023    }
17024    composeBackboneElement(t, "action", name, element, index);
17025    if (element.hasOperation())
17026      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
17027    if (element.hasAssert())
17028      composeTestScriptSetupActionAssertComponent(t, "TestScript", "assert", element.getAssert(), -1);
17029  }
17030
17031  protected void composeTestScriptSetupActionOperationComponent(Complex parent, String parentType, String name, TestScript.SetupActionOperationComponent element, int index) {
17032    if (element == null) 
17033      return;
17034    Complex t;
17035    if (Utilities.noString(parentType))
17036      t = parent;
17037    else {
17038      t = parent.predicate("fhir:"+parentType+'.'+name);
17039    }
17040    composeBackboneElement(t, "operation", name, element, index);
17041    if (element.hasType())
17042      composeCoding(t, "TestScript", "type", element.getType(), -1);
17043    if (element.hasResourceElement())
17044      composeCode(t, "TestScript", "resource", element.getResourceElement(), -1);
17045    if (element.hasLabelElement())
17046      composeString(t, "TestScript", "label", element.getLabelElement(), -1);
17047    if (element.hasDescriptionElement())
17048      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
17049    if (element.hasAcceptElement())
17050      composeCode(t, "TestScript", "accept", element.getAcceptElement(), -1);
17051    if (element.hasContentTypeElement())
17052      composeCode(t, "TestScript", "contentType", element.getContentTypeElement(), -1);
17053    if (element.hasDestinationElement())
17054      composeInteger(t, "TestScript", "destination", element.getDestinationElement(), -1);
17055    if (element.hasEncodeRequestUrlElement())
17056      composeBoolean(t, "TestScript", "encodeRequestUrl", element.getEncodeRequestUrlElement(), -1);
17057    if (element.hasMethodElement())
17058      composeEnum(t, "TestScript", "method", element.getMethodElement(), -1);
17059    if (element.hasOriginElement())
17060      composeInteger(t, "TestScript", "origin", element.getOriginElement(), -1);
17061    if (element.hasParamsElement())
17062      composeString(t, "TestScript", "params", element.getParamsElement(), -1);
17063    for (int i = 0; i < element.getRequestHeader().size(); i++)
17064      composeTestScriptSetupActionOperationRequestHeaderComponent(t, "TestScript", "requestHeader", element.getRequestHeader().get(i), i);
17065    if (element.hasRequestIdElement())
17066      composeId(t, "TestScript", "requestId", element.getRequestIdElement(), -1);
17067    if (element.hasResponseIdElement())
17068      composeId(t, "TestScript", "responseId", element.getResponseIdElement(), -1);
17069    if (element.hasSourceIdElement())
17070      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
17071    if (element.hasTargetIdElement())
17072      composeId(t, "TestScript", "targetId", element.getTargetIdElement(), -1);
17073    if (element.hasUrlElement())
17074      composeString(t, "TestScript", "url", element.getUrlElement(), -1);
17075  }
17076
17077  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(Complex parent, String parentType, String name, TestScript.SetupActionOperationRequestHeaderComponent element, int index) {
17078    if (element == null) 
17079      return;
17080    Complex t;
17081    if (Utilities.noString(parentType))
17082      t = parent;
17083    else {
17084      t = parent.predicate("fhir:"+parentType+'.'+name);
17085    }
17086    composeBackboneElement(t, "requestHeader", name, element, index);
17087    if (element.hasFieldElement())
17088      composeString(t, "TestScript", "field", element.getFieldElement(), -1);
17089    if (element.hasValueElement())
17090      composeString(t, "TestScript", "value", element.getValueElement(), -1);
17091  }
17092
17093  protected void composeTestScriptSetupActionAssertComponent(Complex parent, String parentType, String name, TestScript.SetupActionAssertComponent element, int index) {
17094    if (element == null) 
17095      return;
17096    Complex t;
17097    if (Utilities.noString(parentType))
17098      t = parent;
17099    else {
17100      t = parent.predicate("fhir:"+parentType+'.'+name);
17101    }
17102    composeBackboneElement(t, "assert", name, element, index);
17103    if (element.hasLabelElement())
17104      composeString(t, "TestScript", "label", element.getLabelElement(), -1);
17105    if (element.hasDescriptionElement())
17106      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
17107    if (element.hasDirectionElement())
17108      composeEnum(t, "TestScript", "direction", element.getDirectionElement(), -1);
17109    if (element.hasCompareToSourceIdElement())
17110      composeString(t, "TestScript", "compareToSourceId", element.getCompareToSourceIdElement(), -1);
17111    if (element.hasCompareToSourceExpressionElement())
17112      composeString(t, "TestScript", "compareToSourceExpression", element.getCompareToSourceExpressionElement(), -1);
17113    if (element.hasCompareToSourcePathElement())
17114      composeString(t, "TestScript", "compareToSourcePath", element.getCompareToSourcePathElement(), -1);
17115    if (element.hasContentTypeElement())
17116      composeCode(t, "TestScript", "contentType", element.getContentTypeElement(), -1);
17117    if (element.hasExpressionElement())
17118      composeString(t, "TestScript", "expression", element.getExpressionElement(), -1);
17119    if (element.hasHeaderFieldElement())
17120      composeString(t, "TestScript", "headerField", element.getHeaderFieldElement(), -1);
17121    if (element.hasMinimumIdElement())
17122      composeString(t, "TestScript", "minimumId", element.getMinimumIdElement(), -1);
17123    if (element.hasNavigationLinksElement())
17124      composeBoolean(t, "TestScript", "navigationLinks", element.getNavigationLinksElement(), -1);
17125    if (element.hasOperatorElement())
17126      composeEnum(t, "TestScript", "operator", element.getOperatorElement(), -1);
17127    if (element.hasPathElement())
17128      composeString(t, "TestScript", "path", element.getPathElement(), -1);
17129    if (element.hasRequestMethodElement())
17130      composeEnum(t, "TestScript", "requestMethod", element.getRequestMethodElement(), -1);
17131    if (element.hasRequestURLElement())
17132      composeString(t, "TestScript", "requestURL", element.getRequestURLElement(), -1);
17133    if (element.hasResourceElement())
17134      composeCode(t, "TestScript", "resource", element.getResourceElement(), -1);
17135    if (element.hasResponseElement())
17136      composeEnum(t, "TestScript", "response", element.getResponseElement(), -1);
17137    if (element.hasResponseCodeElement())
17138      composeString(t, "TestScript", "responseCode", element.getResponseCodeElement(), -1);
17139    if (element.hasSourceIdElement())
17140      composeId(t, "TestScript", "sourceId", element.getSourceIdElement(), -1);
17141    if (element.hasValidateProfileIdElement())
17142      composeId(t, "TestScript", "validateProfileId", element.getValidateProfileIdElement(), -1);
17143    if (element.hasValueElement())
17144      composeString(t, "TestScript", "value", element.getValueElement(), -1);
17145    if (element.hasWarningOnlyElement())
17146      composeBoolean(t, "TestScript", "warningOnly", element.getWarningOnlyElement(), -1);
17147  }
17148
17149  protected void composeTestScriptTestScriptTestComponent(Complex parent, String parentType, String name, TestScript.TestScriptTestComponent element, int index) {
17150    if (element == null) 
17151      return;
17152    Complex t;
17153    if (Utilities.noString(parentType))
17154      t = parent;
17155    else {
17156      t = parent.predicate("fhir:"+parentType+'.'+name);
17157    }
17158    composeBackboneElement(t, "test", name, element, index);
17159    if (element.hasNameElement())
17160      composeString(t, "TestScript", "name", element.getNameElement(), -1);
17161    if (element.hasDescriptionElement())
17162      composeString(t, "TestScript", "description", element.getDescriptionElement(), -1);
17163    for (int i = 0; i < element.getAction().size(); i++)
17164      composeTestScriptTestActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
17165  }
17166
17167  protected void composeTestScriptTestActionComponent(Complex parent, String parentType, String name, TestScript.TestActionComponent element, int index) {
17168    if (element == null) 
17169      return;
17170    Complex t;
17171    if (Utilities.noString(parentType))
17172      t = parent;
17173    else {
17174      t = parent.predicate("fhir:"+parentType+'.'+name);
17175    }
17176    composeBackboneElement(t, "action", name, element, index);
17177    if (element.hasOperation())
17178      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
17179    if (element.hasAssert())
17180      composeTestScriptSetupActionAssertComponent(t, "TestScript", "assert", element.getAssert(), -1);
17181  }
17182
17183  protected void composeTestScriptTestScriptTeardownComponent(Complex parent, String parentType, String name, TestScript.TestScriptTeardownComponent element, int index) {
17184    if (element == null) 
17185      return;
17186    Complex t;
17187    if (Utilities.noString(parentType))
17188      t = parent;
17189    else {
17190      t = parent.predicate("fhir:"+parentType+'.'+name);
17191    }
17192    composeBackboneElement(t, "teardown", name, element, index);
17193    for (int i = 0; i < element.getAction().size(); i++)
17194      composeTestScriptTeardownActionComponent(t, "TestScript", "action", element.getAction().get(i), i);
17195  }
17196
17197  protected void composeTestScriptTeardownActionComponent(Complex parent, String parentType, String name, TestScript.TeardownActionComponent element, int index) {
17198    if (element == null) 
17199      return;
17200    Complex t;
17201    if (Utilities.noString(parentType))
17202      t = parent;
17203    else {
17204      t = parent.predicate("fhir:"+parentType+'.'+name);
17205    }
17206    composeBackboneElement(t, "action", name, element, index);
17207    if (element.hasOperation())
17208      composeTestScriptSetupActionOperationComponent(t, "TestScript", "operation", element.getOperation(), -1);
17209  }
17210
17211  protected void composeValueSet(Complex parent, String parentType, String name, ValueSet element, int index) {
17212    if (element == null) 
17213      return;
17214    Complex t;
17215    if (Utilities.noString(parentType))
17216      t = parent;
17217    else {
17218      t = parent.predicate("fhir:"+parentType+'.'+name);
17219    }
17220    composeDomainResource(t, "ValueSet", name, element, index);
17221    if (element.hasUrlElement())
17222      composeUri(t, "ValueSet", "url", element.getUrlElement(), -1);
17223    for (int i = 0; i < element.getIdentifier().size(); i++)
17224      composeIdentifier(t, "ValueSet", "identifier", element.getIdentifier().get(i), i);
17225    if (element.hasVersionElement())
17226      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
17227    if (element.hasNameElement())
17228      composeString(t, "ValueSet", "name", element.getNameElement(), -1);
17229    if (element.hasTitleElement())
17230      composeString(t, "ValueSet", "title", element.getTitleElement(), -1);
17231    if (element.hasStatusElement())
17232      composeEnum(t, "ValueSet", "status", element.getStatusElement(), -1);
17233    if (element.hasExperimentalElement())
17234      composeBoolean(t, "ValueSet", "experimental", element.getExperimentalElement(), -1);
17235    if (element.hasDateElement())
17236      composeDateTime(t, "ValueSet", "date", element.getDateElement(), -1);
17237    if (element.hasPublisherElement())
17238      composeString(t, "ValueSet", "publisher", element.getPublisherElement(), -1);
17239    for (int i = 0; i < element.getContact().size(); i++)
17240      composeContactDetail(t, "ValueSet", "contact", element.getContact().get(i), i);
17241    if (element.hasDescriptionElement())
17242      composeMarkdown(t, "ValueSet", "description", element.getDescriptionElement(), -1);
17243    for (int i = 0; i < element.getUseContext().size(); i++)
17244      composeUsageContext(t, "ValueSet", "useContext", element.getUseContext().get(i), i);
17245    for (int i = 0; i < element.getJurisdiction().size(); i++)
17246      composeCodeableConcept(t, "ValueSet", "jurisdiction", element.getJurisdiction().get(i), i);
17247    if (element.hasImmutableElement())
17248      composeBoolean(t, "ValueSet", "immutable", element.getImmutableElement(), -1);
17249    if (element.hasPurposeElement())
17250      composeMarkdown(t, "ValueSet", "purpose", element.getPurposeElement(), -1);
17251    if (element.hasCopyrightElement())
17252      composeMarkdown(t, "ValueSet", "copyright", element.getCopyrightElement(), -1);
17253    if (element.hasCompose())
17254      composeValueSetValueSetComposeComponent(t, "ValueSet", "compose", element.getCompose(), -1);
17255    if (element.hasExpansion())
17256      composeValueSetValueSetExpansionComponent(t, "ValueSet", "expansion", element.getExpansion(), -1);
17257  }
17258
17259  protected void composeValueSetValueSetComposeComponent(Complex parent, String parentType, String name, ValueSet.ValueSetComposeComponent element, int index) {
17260    if (element == null) 
17261      return;
17262    Complex t;
17263    if (Utilities.noString(parentType))
17264      t = parent;
17265    else {
17266      t = parent.predicate("fhir:"+parentType+'.'+name);
17267    }
17268    composeBackboneElement(t, "compose", name, element, index);
17269    if (element.hasLockedDateElement())
17270      composeDate(t, "ValueSet", "lockedDate", element.getLockedDateElement(), -1);
17271    if (element.hasInactiveElement())
17272      composeBoolean(t, "ValueSet", "inactive", element.getInactiveElement(), -1);
17273    for (int i = 0; i < element.getInclude().size(); i++)
17274      composeValueSetConceptSetComponent(t, "ValueSet", "include", element.getInclude().get(i), i);
17275    for (int i = 0; i < element.getExclude().size(); i++)
17276      composeValueSetConceptSetComponent(t, "ValueSet", "exclude", element.getExclude().get(i), i);
17277  }
17278
17279  protected void composeValueSetConceptSetComponent(Complex parent, String parentType, String name, ValueSet.ConceptSetComponent element, int index) {
17280    if (element == null) 
17281      return;
17282    Complex t;
17283    if (Utilities.noString(parentType))
17284      t = parent;
17285    else {
17286      t = parent.predicate("fhir:"+parentType+'.'+name);
17287    }
17288    composeBackboneElement(t, "include", name, element, index);
17289    if (element.hasSystemElement())
17290      composeUri(t, "ValueSet", "system", element.getSystemElement(), -1);
17291    if (element.hasVersionElement())
17292      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
17293    for (int i = 0; i < element.getConcept().size(); i++)
17294      composeValueSetConceptReferenceComponent(t, "ValueSet", "concept", element.getConcept().get(i), i);
17295    for (int i = 0; i < element.getFilter().size(); i++)
17296      composeValueSetConceptSetFilterComponent(t, "ValueSet", "filter", element.getFilter().get(i), i);
17297    for (int i = 0; i < element.getValueSet().size(); i++)
17298      composeCanonical(t, "ValueSet", "valueSet", element.getValueSet().get(i), i);
17299  }
17300
17301  protected void composeValueSetConceptReferenceComponent(Complex parent, String parentType, String name, ValueSet.ConceptReferenceComponent element, int index) {
17302    if (element == null) 
17303      return;
17304    Complex t;
17305    if (Utilities.noString(parentType))
17306      t = parent;
17307    else {
17308      t = parent.predicate("fhir:"+parentType+'.'+name);
17309    }
17310    composeBackboneElement(t, "concept", name, element, index);
17311    if (element.hasCodeElement())
17312      composeCode(t, "ValueSet", "code", element.getCodeElement(), -1);
17313    if (element.hasDisplayElement())
17314      composeString(t, "ValueSet", "display", element.getDisplayElement(), -1);
17315    for (int i = 0; i < element.getDesignation().size(); i++)
17316      composeValueSetConceptReferenceDesignationComponent(t, "ValueSet", "designation", element.getDesignation().get(i), i);
17317  }
17318
17319  protected void composeValueSetConceptReferenceDesignationComponent(Complex parent, String parentType, String name, ValueSet.ConceptReferenceDesignationComponent element, int index) {
17320    if (element == null) 
17321      return;
17322    Complex t;
17323    if (Utilities.noString(parentType))
17324      t = parent;
17325    else {
17326      t = parent.predicate("fhir:"+parentType+'.'+name);
17327    }
17328    composeBackboneElement(t, "designation", name, element, index);
17329    if (element.hasLanguageElement())
17330      composeCode(t, "ValueSet", "language", element.getLanguageElement(), -1);
17331    if (element.hasUse())
17332      composeCoding(t, "ValueSet", "use", element.getUse(), -1);
17333    if (element.hasValueElement())
17334      composeString(t, "ValueSet", "value", element.getValueElement(), -1);
17335  }
17336
17337  protected void composeValueSetConceptSetFilterComponent(Complex parent, String parentType, String name, ValueSet.ConceptSetFilterComponent element, int index) {
17338    if (element == null) 
17339      return;
17340    Complex t;
17341    if (Utilities.noString(parentType))
17342      t = parent;
17343    else {
17344      t = parent.predicate("fhir:"+parentType+'.'+name);
17345    }
17346    composeBackboneElement(t, "filter", name, element, index);
17347    if (element.hasPropertyElement())
17348      composeCode(t, "ValueSet", "property", element.getPropertyElement(), -1);
17349    if (element.hasOpElement())
17350      composeEnum(t, "ValueSet", "op", element.getOpElement(), -1);
17351    if (element.hasValueElement())
17352      composeString(t, "ValueSet", "value", element.getValueElement(), -1);
17353  }
17354
17355  protected void composeValueSetValueSetExpansionComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionComponent element, int index) {
17356    if (element == null) 
17357      return;
17358    Complex t;
17359    if (Utilities.noString(parentType))
17360      t = parent;
17361    else {
17362      t = parent.predicate("fhir:"+parentType+'.'+name);
17363    }
17364    composeBackboneElement(t, "expansion", name, element, index);
17365    if (element.hasIdentifierElement())
17366      composeUri(t, "ValueSet", "identifier", element.getIdentifierElement(), -1);
17367    if (element.hasTimestampElement())
17368      composeDateTime(t, "ValueSet", "timestamp", element.getTimestampElement(), -1);
17369    if (element.hasTotalElement())
17370      composeInteger(t, "ValueSet", "total", element.getTotalElement(), -1);
17371    if (element.hasOffsetElement())
17372      composeInteger(t, "ValueSet", "offset", element.getOffsetElement(), -1);
17373    for (int i = 0; i < element.getParameter().size(); i++)
17374      composeValueSetValueSetExpansionParameterComponent(t, "ValueSet", "parameter", element.getParameter().get(i), i);
17375    for (int i = 0; i < element.getContains().size(); i++)
17376      composeValueSetValueSetExpansionContainsComponent(t, "ValueSet", "contains", element.getContains().get(i), i);
17377  }
17378
17379  protected void composeValueSetValueSetExpansionParameterComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionParameterComponent element, int index) {
17380    if (element == null) 
17381      return;
17382    Complex t;
17383    if (Utilities.noString(parentType))
17384      t = parent;
17385    else {
17386      t = parent.predicate("fhir:"+parentType+'.'+name);
17387    }
17388    composeBackboneElement(t, "parameter", name, element, index);
17389    if (element.hasNameElement())
17390      composeString(t, "ValueSet", "name", element.getNameElement(), -1);
17391    if (element.hasValue())
17392      composeType(t, "ValueSet", "value", element.getValue(), -1);
17393  }
17394
17395  protected void composeValueSetValueSetExpansionContainsComponent(Complex parent, String parentType, String name, ValueSet.ValueSetExpansionContainsComponent element, int index) {
17396    if (element == null) 
17397      return;
17398    Complex t;
17399    if (Utilities.noString(parentType))
17400      t = parent;
17401    else {
17402      t = parent.predicate("fhir:"+parentType+'.'+name);
17403    }
17404    composeBackboneElement(t, "contains", name, element, index);
17405    if (element.hasSystemElement())
17406      composeUri(t, "ValueSet", "system", element.getSystemElement(), -1);
17407    if (element.hasAbstractElement())
17408      composeBoolean(t, "ValueSet", "abstract", element.getAbstractElement(), -1);
17409    if (element.hasInactiveElement())
17410      composeBoolean(t, "ValueSet", "inactive", element.getInactiveElement(), -1);
17411    if (element.hasVersionElement())
17412      composeString(t, "ValueSet", "version", element.getVersionElement(), -1);
17413    if (element.hasCodeElement())
17414      composeCode(t, "ValueSet", "code", element.getCodeElement(), -1);
17415    if (element.hasDisplayElement())
17416      composeString(t, "ValueSet", "display", element.getDisplayElement(), -1);
17417    for (int i = 0; i < element.getDesignation().size(); i++)
17418      composeValueSetConceptReferenceDesignationComponent(t, "ValueSet", "designation", element.getDesignation().get(i), i);
17419    for (int i = 0; i < element.getContains().size(); i++)
17420      composeValueSetValueSetExpansionContainsComponent(t, "ValueSet", "contains", element.getContains().get(i), i);
17421  }
17422
17423  protected void composeVerificationResult(Complex parent, String parentType, String name, VerificationResult element, int index) {
17424    if (element == null) 
17425      return;
17426    Complex t;
17427    if (Utilities.noString(parentType))
17428      t = parent;
17429    else {
17430      t = parent.predicate("fhir:"+parentType+'.'+name);
17431    }
17432    composeDomainResource(t, "VerificationResult", name, element, index);
17433    for (int i = 0; i < element.getTarget().size(); i++)
17434      composeReference(t, "VerificationResult", "target", element.getTarget().get(i), i);
17435    for (int i = 0; i < element.getTargetLocation().size(); i++)
17436      composeString(t, "VerificationResult", "targetLocation", element.getTargetLocation().get(i), i);
17437    if (element.hasNeed())
17438      composeCodeableConcept(t, "VerificationResult", "need", element.getNeed(), -1);
17439    if (element.hasStatusElement())
17440      composeEnum(t, "VerificationResult", "status", element.getStatusElement(), -1);
17441    if (element.hasStatusDateElement())
17442      composeDateTime(t, "VerificationResult", "statusDate", element.getStatusDateElement(), -1);
17443    if (element.hasValidationType())
17444      composeCodeableConcept(t, "VerificationResult", "validationType", element.getValidationType(), -1);
17445    for (int i = 0; i < element.getValidationProcess().size(); i++)
17446      composeCodeableConcept(t, "VerificationResult", "validationProcess", element.getValidationProcess().get(i), i);
17447    if (element.hasFrequency())
17448      composeTiming(t, "VerificationResult", "frequency", element.getFrequency(), -1);
17449    if (element.hasLastPerformedElement())
17450      composeDateTime(t, "VerificationResult", "lastPerformed", element.getLastPerformedElement(), -1);
17451    if (element.hasNextScheduledElement())
17452      composeDate(t, "VerificationResult", "nextScheduled", element.getNextScheduledElement(), -1);
17453    if (element.hasFailureAction())
17454      composeCodeableConcept(t, "VerificationResult", "failureAction", element.getFailureAction(), -1);
17455    for (int i = 0; i < element.getPrimarySource().size(); i++)
17456      composeVerificationResultVerificationResultPrimarySourceComponent(t, "VerificationResult", "primarySource", element.getPrimarySource().get(i), i);
17457    if (element.hasAttestation())
17458      composeVerificationResultVerificationResultAttestationComponent(t, "VerificationResult", "attestation", element.getAttestation(), -1);
17459    for (int i = 0; i < element.getValidator().size(); i++)
17460      composeVerificationResultVerificationResultValidatorComponent(t, "VerificationResult", "validator", element.getValidator().get(i), i);
17461  }
17462
17463  protected void composeVerificationResultVerificationResultPrimarySourceComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultPrimarySourceComponent element, int index) {
17464    if (element == null) 
17465      return;
17466    Complex t;
17467    if (Utilities.noString(parentType))
17468      t = parent;
17469    else {
17470      t = parent.predicate("fhir:"+parentType+'.'+name);
17471    }
17472    composeBackboneElement(t, "primarySource", name, element, index);
17473    if (element.hasWho())
17474      composeReference(t, "VerificationResult", "who", element.getWho(), -1);
17475    for (int i = 0; i < element.getType().size(); i++)
17476      composeCodeableConcept(t, "VerificationResult", "type", element.getType().get(i), i);
17477    for (int i = 0; i < element.getCommunicationMethod().size(); i++)
17478      composeCodeableConcept(t, "VerificationResult", "communicationMethod", element.getCommunicationMethod().get(i), i);
17479    if (element.hasValidationStatus())
17480      composeCodeableConcept(t, "VerificationResult", "validationStatus", element.getValidationStatus(), -1);
17481    if (element.hasValidationDateElement())
17482      composeDateTime(t, "VerificationResult", "validationDate", element.getValidationDateElement(), -1);
17483    if (element.hasCanPushUpdates())
17484      composeCodeableConcept(t, "VerificationResult", "canPushUpdates", element.getCanPushUpdates(), -1);
17485    for (int i = 0; i < element.getPushTypeAvailable().size(); i++)
17486      composeCodeableConcept(t, "VerificationResult", "pushTypeAvailable", element.getPushTypeAvailable().get(i), i);
17487  }
17488
17489  protected void composeVerificationResultVerificationResultAttestationComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultAttestationComponent element, int index) {
17490    if (element == null) 
17491      return;
17492    Complex t;
17493    if (Utilities.noString(parentType))
17494      t = parent;
17495    else {
17496      t = parent.predicate("fhir:"+parentType+'.'+name);
17497    }
17498    composeBackboneElement(t, "attestation", name, element, index);
17499    if (element.hasWho())
17500      composeReference(t, "VerificationResult", "who", element.getWho(), -1);
17501    if (element.hasOnBehalfOf())
17502      composeReference(t, "VerificationResult", "onBehalfOf", element.getOnBehalfOf(), -1);
17503    if (element.hasCommunicationMethod())
17504      composeCodeableConcept(t, "VerificationResult", "communicationMethod", element.getCommunicationMethod(), -1);
17505    if (element.hasDateElement())
17506      composeDate(t, "VerificationResult", "date", element.getDateElement(), -1);
17507    if (element.hasSourceIdentityCertificateElement())
17508      composeString(t, "VerificationResult", "sourceIdentityCertificate", element.getSourceIdentityCertificateElement(), -1);
17509    if (element.hasProxyIdentityCertificateElement())
17510      composeString(t, "VerificationResult", "proxyIdentityCertificate", element.getProxyIdentityCertificateElement(), -1);
17511    if (element.hasProxySignature())
17512      composeSignature(t, "VerificationResult", "proxySignature", element.getProxySignature(), -1);
17513    if (element.hasSourceSignature())
17514      composeSignature(t, "VerificationResult", "sourceSignature", element.getSourceSignature(), -1);
17515  }
17516
17517  protected void composeVerificationResultVerificationResultValidatorComponent(Complex parent, String parentType, String name, VerificationResult.VerificationResultValidatorComponent element, int index) {
17518    if (element == null) 
17519      return;
17520    Complex t;
17521    if (Utilities.noString(parentType))
17522      t = parent;
17523    else {
17524      t = parent.predicate("fhir:"+parentType+'.'+name);
17525    }
17526    composeBackboneElement(t, "validator", name, element, index);
17527    if (element.hasOrganization())
17528      composeReference(t, "VerificationResult", "organization", element.getOrganization(), -1);
17529    if (element.hasIdentityCertificateElement())
17530      composeString(t, "VerificationResult", "identityCertificate", element.getIdentityCertificateElement(), -1);
17531    if (element.hasAttestationSignature())
17532      composeSignature(t, "VerificationResult", "attestationSignature", element.getAttestationSignature(), -1);
17533  }
17534
17535  protected void composeVisionPrescription(Complex parent, String parentType, String name, VisionPrescription element, int index) {
17536    if (element == null) 
17537      return;
17538    Complex t;
17539    if (Utilities.noString(parentType))
17540      t = parent;
17541    else {
17542      t = parent.predicate("fhir:"+parentType+'.'+name);
17543    }
17544    composeDomainResource(t, "VisionPrescription", name, element, index);
17545    for (int i = 0; i < element.getIdentifier().size(); i++)
17546      composeIdentifier(t, "VisionPrescription", "identifier", element.getIdentifier().get(i), i);
17547    if (element.hasStatusElement())
17548      composeEnum(t, "VisionPrescription", "status", element.getStatusElement(), -1);
17549    if (element.hasCreatedElement())
17550      composeDateTime(t, "VisionPrescription", "created", element.getCreatedElement(), -1);
17551    if (element.hasPatient())
17552      composeReference(t, "VisionPrescription", "patient", element.getPatient(), -1);
17553    if (element.hasEncounter())
17554      composeReference(t, "VisionPrescription", "encounter", element.getEncounter(), -1);
17555    if (element.hasDateWrittenElement())
17556      composeDateTime(t, "VisionPrescription", "dateWritten", element.getDateWrittenElement(), -1);
17557    if (element.hasPrescriber())
17558      composeReference(t, "VisionPrescription", "prescriber", element.getPrescriber(), -1);
17559    for (int i = 0; i < element.getLensSpecification().size(); i++)
17560      composeVisionPrescriptionVisionPrescriptionLensSpecificationComponent(t, "VisionPrescription", "lensSpecification", element.getLensSpecification().get(i), i);
17561  }
17562
17563  protected void composeVisionPrescriptionVisionPrescriptionLensSpecificationComponent(Complex parent, String parentType, String name, VisionPrescription.VisionPrescriptionLensSpecificationComponent element, int index) {
17564    if (element == null) 
17565      return;
17566    Complex t;
17567    if (Utilities.noString(parentType))
17568      t = parent;
17569    else {
17570      t = parent.predicate("fhir:"+parentType+'.'+name);
17571    }
17572    composeBackboneElement(t, "lensSpecification", name, element, index);
17573    if (element.hasProduct())
17574      composeCodeableConcept(t, "VisionPrescription", "product", element.getProduct(), -1);
17575    if (element.hasEyeElement())
17576      composeEnum(t, "VisionPrescription", "eye", element.getEyeElement(), -1);
17577    if (element.hasSphereElement())
17578      composeDecimal(t, "VisionPrescription", "sphere", element.getSphereElement(), -1);
17579    if (element.hasCylinderElement())
17580      composeDecimal(t, "VisionPrescription", "cylinder", element.getCylinderElement(), -1);
17581    if (element.hasAxisElement())
17582      composeInteger(t, "VisionPrescription", "axis", element.getAxisElement(), -1);
17583    for (int i = 0; i < element.getPrism().size(); i++)
17584      composeVisionPrescriptionPrismComponent(t, "VisionPrescription", "prism", element.getPrism().get(i), i);
17585    if (element.hasAddElement())
17586      composeDecimal(t, "VisionPrescription", "add", element.getAddElement(), -1);
17587    if (element.hasPowerElement())
17588      composeDecimal(t, "VisionPrescription", "power", element.getPowerElement(), -1);
17589    if (element.hasBackCurveElement())
17590      composeDecimal(t, "VisionPrescription", "backCurve", element.getBackCurveElement(), -1);
17591    if (element.hasDiameterElement())
17592      composeDecimal(t, "VisionPrescription", "diameter", element.getDiameterElement(), -1);
17593    if (element.hasDuration())
17594      composeQuantity(t, "VisionPrescription", "duration", element.getDuration(), -1);
17595    if (element.hasColorElement())
17596      composeString(t, "VisionPrescription", "color", element.getColorElement(), -1);
17597    if (element.hasBrandElement())
17598      composeString(t, "VisionPrescription", "brand", element.getBrandElement(), -1);
17599    for (int i = 0; i < element.getNote().size(); i++)
17600      composeAnnotation(t, "VisionPrescription", "note", element.getNote().get(i), i);
17601  }
17602
17603  protected void composeVisionPrescriptionPrismComponent(Complex parent, String parentType, String name, VisionPrescription.PrismComponent element, int index) {
17604    if (element == null) 
17605      return;
17606    Complex t;
17607    if (Utilities.noString(parentType))
17608      t = parent;
17609    else {
17610      t = parent.predicate("fhir:"+parentType+'.'+name);
17611    }
17612    composeBackboneElement(t, "prism", name, element, index);
17613    if (element.hasAmountElement())
17614      composeDecimal(t, "VisionPrescription", "amount", element.getAmountElement(), -1);
17615    if (element.hasBaseElement())
17616      composeEnum(t, "VisionPrescription", "base", element.getBaseElement(), -1);
17617  }
17618
17619  @Override
17620  protected void composeResource(Complex parent, Resource resource) {
17621    if (resource instanceof Parameters)
17622      composeParameters(parent, null, "Parameters", (Parameters)resource, -1);
17623    else if (resource instanceof Account)
17624      composeAccount(parent, null, "Account", (Account)resource, -1);
17625    else if (resource instanceof ActivityDefinition)
17626      composeActivityDefinition(parent, null, "ActivityDefinition", (ActivityDefinition)resource, -1);
17627    else if (resource instanceof AdverseEvent)
17628      composeAdverseEvent(parent, null, "AdverseEvent", (AdverseEvent)resource, -1);
17629    else if (resource instanceof AllergyIntolerance)
17630      composeAllergyIntolerance(parent, null, "AllergyIntolerance", (AllergyIntolerance)resource, -1);
17631    else if (resource instanceof Appointment)
17632      composeAppointment(parent, null, "Appointment", (Appointment)resource, -1);
17633    else if (resource instanceof AppointmentResponse)
17634      composeAppointmentResponse(parent, null, "AppointmentResponse", (AppointmentResponse)resource, -1);
17635    else if (resource instanceof AuditEvent)
17636      composeAuditEvent(parent, null, "AuditEvent", (AuditEvent)resource, -1);
17637    else if (resource instanceof Basic)
17638      composeBasic(parent, null, "Basic", (Basic)resource, -1);
17639    else if (resource instanceof Binary)
17640      composeBinary(parent, null, "Binary", (Binary)resource, -1);
17641    else if (resource instanceof BiologicallyDerivedProduct)
17642      composeBiologicallyDerivedProduct(parent, null, "BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource, -1);
17643    else if (resource instanceof BodyStructure)
17644      composeBodyStructure(parent, null, "BodyStructure", (BodyStructure)resource, -1);
17645    else if (resource instanceof Bundle)
17646      composeBundle(parent, null, "Bundle", (Bundle)resource, -1);
17647    else if (resource instanceof CapabilityStatement)
17648      composeCapabilityStatement(parent, null, "CapabilityStatement", (CapabilityStatement)resource, -1);
17649    else if (resource instanceof CarePlan)
17650      composeCarePlan(parent, null, "CarePlan", (CarePlan)resource, -1);
17651    else if (resource instanceof CareTeam)
17652      composeCareTeam(parent, null, "CareTeam", (CareTeam)resource, -1);
17653    else if (resource instanceof CatalogEntry)
17654      composeCatalogEntry(parent, null, "CatalogEntry", (CatalogEntry)resource, -1);
17655    else if (resource instanceof ChargeItem)
17656      composeChargeItem(parent, null, "ChargeItem", (ChargeItem)resource, -1);
17657    else if (resource instanceof ChargeItemDefinition)
17658      composeChargeItemDefinition(parent, null, "ChargeItemDefinition", (ChargeItemDefinition)resource, -1);
17659    else if (resource instanceof Claim)
17660      composeClaim(parent, null, "Claim", (Claim)resource, -1);
17661    else if (resource instanceof ClaimResponse)
17662      composeClaimResponse(parent, null, "ClaimResponse", (ClaimResponse)resource, -1);
17663    else if (resource instanceof ClinicalImpression)
17664      composeClinicalImpression(parent, null, "ClinicalImpression", (ClinicalImpression)resource, -1);
17665    else if (resource instanceof CodeSystem)
17666      composeCodeSystem(parent, null, "CodeSystem", (CodeSystem)resource, -1);
17667    else if (resource instanceof Communication)
17668      composeCommunication(parent, null, "Communication", (Communication)resource, -1);
17669    else if (resource instanceof CommunicationRequest)
17670      composeCommunicationRequest(parent, null, "CommunicationRequest", (CommunicationRequest)resource, -1);
17671    else if (resource instanceof CompartmentDefinition)
17672      composeCompartmentDefinition(parent, null, "CompartmentDefinition", (CompartmentDefinition)resource, -1);
17673    else if (resource instanceof Composition)
17674      composeComposition(parent, null, "Composition", (Composition)resource, -1);
17675    else if (resource instanceof ConceptMap)
17676      composeConceptMap(parent, null, "ConceptMap", (ConceptMap)resource, -1);
17677    else if (resource instanceof Condition)
17678      composeCondition(parent, null, "Condition", (Condition)resource, -1);
17679    else if (resource instanceof Consent)
17680      composeConsent(parent, null, "Consent", (Consent)resource, -1);
17681    else if (resource instanceof Contract)
17682      composeContract(parent, null, "Contract", (Contract)resource, -1);
17683    else if (resource instanceof Coverage)
17684      composeCoverage(parent, null, "Coverage", (Coverage)resource, -1);
17685    else if (resource instanceof CoverageEligibilityRequest)
17686      composeCoverageEligibilityRequest(parent, null, "CoverageEligibilityRequest", (CoverageEligibilityRequest)resource, -1);
17687    else if (resource instanceof CoverageEligibilityResponse)
17688      composeCoverageEligibilityResponse(parent, null, "CoverageEligibilityResponse", (CoverageEligibilityResponse)resource, -1);
17689    else if (resource instanceof DetectedIssue)
17690      composeDetectedIssue(parent, null, "DetectedIssue", (DetectedIssue)resource, -1);
17691    else if (resource instanceof Device)
17692      composeDevice(parent, null, "Device", (Device)resource, -1);
17693    else if (resource instanceof DeviceDefinition)
17694      composeDeviceDefinition(parent, null, "DeviceDefinition", (DeviceDefinition)resource, -1);
17695    else if (resource instanceof DeviceMetric)
17696      composeDeviceMetric(parent, null, "DeviceMetric", (DeviceMetric)resource, -1);
17697    else if (resource instanceof DeviceRequest)
17698      composeDeviceRequest(parent, null, "DeviceRequest", (DeviceRequest)resource, -1);
17699    else if (resource instanceof DeviceUseStatement)
17700      composeDeviceUseStatement(parent, null, "DeviceUseStatement", (DeviceUseStatement)resource, -1);
17701    else if (resource instanceof DiagnosticReport)
17702      composeDiagnosticReport(parent, null, "DiagnosticReport", (DiagnosticReport)resource, -1);
17703    else if (resource instanceof DocumentManifest)
17704      composeDocumentManifest(parent, null, "DocumentManifest", (DocumentManifest)resource, -1);
17705    else if (resource instanceof DocumentReference)
17706      composeDocumentReference(parent, null, "DocumentReference", (DocumentReference)resource, -1);
17707    else if (resource instanceof EffectEvidenceSynthesis)
17708      composeEffectEvidenceSynthesis(parent, null, "EffectEvidenceSynthesis", (EffectEvidenceSynthesis)resource, -1);
17709    else if (resource instanceof Encounter)
17710      composeEncounter(parent, null, "Encounter", (Encounter)resource, -1);
17711    else if (resource instanceof Endpoint)
17712      composeEndpoint(parent, null, "Endpoint", (Endpoint)resource, -1);
17713    else if (resource instanceof EnrollmentRequest)
17714      composeEnrollmentRequest(parent, null, "EnrollmentRequest", (EnrollmentRequest)resource, -1);
17715    else if (resource instanceof EnrollmentResponse)
17716      composeEnrollmentResponse(parent, null, "EnrollmentResponse", (EnrollmentResponse)resource, -1);
17717    else if (resource instanceof EpisodeOfCare)
17718      composeEpisodeOfCare(parent, null, "EpisodeOfCare", (EpisodeOfCare)resource, -1);
17719    else if (resource instanceof EventDefinition)
17720      composeEventDefinition(parent, null, "EventDefinition", (EventDefinition)resource, -1);
17721    else if (resource instanceof Evidence)
17722      composeEvidence(parent, null, "Evidence", (Evidence)resource, -1);
17723    else if (resource instanceof EvidenceVariable)
17724      composeEvidenceVariable(parent, null, "EvidenceVariable", (EvidenceVariable)resource, -1);
17725    else if (resource instanceof ExampleScenario)
17726      composeExampleScenario(parent, null, "ExampleScenario", (ExampleScenario)resource, -1);
17727    else if (resource instanceof ExplanationOfBenefit)
17728      composeExplanationOfBenefit(parent, null, "ExplanationOfBenefit", (ExplanationOfBenefit)resource, -1);
17729    else if (resource instanceof FamilyMemberHistory)
17730      composeFamilyMemberHistory(parent, null, "FamilyMemberHistory", (FamilyMemberHistory)resource, -1);
17731    else if (resource instanceof Flag)
17732      composeFlag(parent, null, "Flag", (Flag)resource, -1);
17733    else if (resource instanceof Goal)
17734      composeGoal(parent, null, "Goal", (Goal)resource, -1);
17735    else if (resource instanceof GraphDefinition)
17736      composeGraphDefinition(parent, null, "GraphDefinition", (GraphDefinition)resource, -1);
17737    else if (resource instanceof Group)
17738      composeGroup(parent, null, "Group", (Group)resource, -1);
17739    else if (resource instanceof GuidanceResponse)
17740      composeGuidanceResponse(parent, null, "GuidanceResponse", (GuidanceResponse)resource, -1);
17741    else if (resource instanceof HealthcareService)
17742      composeHealthcareService(parent, null, "HealthcareService", (HealthcareService)resource, -1);
17743    else if (resource instanceof ImagingStudy)
17744      composeImagingStudy(parent, null, "ImagingStudy", (ImagingStudy)resource, -1);
17745    else if (resource instanceof Immunization)
17746      composeImmunization(parent, null, "Immunization", (Immunization)resource, -1);
17747    else if (resource instanceof ImmunizationEvaluation)
17748      composeImmunizationEvaluation(parent, null, "ImmunizationEvaluation", (ImmunizationEvaluation)resource, -1);
17749    else if (resource instanceof ImmunizationRecommendation)
17750      composeImmunizationRecommendation(parent, null, "ImmunizationRecommendation", (ImmunizationRecommendation)resource, -1);
17751    else if (resource instanceof ImplementationGuide)
17752      composeImplementationGuide(parent, null, "ImplementationGuide", (ImplementationGuide)resource, -1);
17753    else if (resource instanceof InsurancePlan)
17754      composeInsurancePlan(parent, null, "InsurancePlan", (InsurancePlan)resource, -1);
17755    else if (resource instanceof Invoice)
17756      composeInvoice(parent, null, "Invoice", (Invoice)resource, -1);
17757    else if (resource instanceof Library)
17758      composeLibrary(parent, null, "Library", (Library)resource, -1);
17759    else if (resource instanceof Linkage)
17760      composeLinkage(parent, null, "Linkage", (Linkage)resource, -1);
17761    else if (resource instanceof ListResource)
17762      composeListResource(parent, null, "ListResource", (ListResource)resource, -1);
17763    else if (resource instanceof Location)
17764      composeLocation(parent, null, "Location", (Location)resource, -1);
17765    else if (resource instanceof Measure)
17766      composeMeasure(parent, null, "Measure", (Measure)resource, -1);
17767    else if (resource instanceof MeasureReport)
17768      composeMeasureReport(parent, null, "MeasureReport", (MeasureReport)resource, -1);
17769    else if (resource instanceof Media)
17770      composeMedia(parent, null, "Media", (Media)resource, -1);
17771    else if (resource instanceof Medication)
17772      composeMedication(parent, null, "Medication", (Medication)resource, -1);
17773    else if (resource instanceof MedicationAdministration)
17774      composeMedicationAdministration(parent, null, "MedicationAdministration", (MedicationAdministration)resource, -1);
17775    else if (resource instanceof MedicationDispense)
17776      composeMedicationDispense(parent, null, "MedicationDispense", (MedicationDispense)resource, -1);
17777    else if (resource instanceof MedicationKnowledge)
17778      composeMedicationKnowledge(parent, null, "MedicationKnowledge", (MedicationKnowledge)resource, -1);
17779    else if (resource instanceof MedicationRequest)
17780      composeMedicationRequest(parent, null, "MedicationRequest", (MedicationRequest)resource, -1);
17781    else if (resource instanceof MedicationStatement)
17782      composeMedicationStatement(parent, null, "MedicationStatement", (MedicationStatement)resource, -1);
17783    else if (resource instanceof MedicinalProduct)
17784      composeMedicinalProduct(parent, null, "MedicinalProduct", (MedicinalProduct)resource, -1);
17785    else if (resource instanceof MedicinalProductAuthorization)
17786      composeMedicinalProductAuthorization(parent, null, "MedicinalProductAuthorization", (MedicinalProductAuthorization)resource, -1);
17787    else if (resource instanceof MedicinalProductContraindication)
17788      composeMedicinalProductContraindication(parent, null, "MedicinalProductContraindication", (MedicinalProductContraindication)resource, -1);
17789    else if (resource instanceof MedicinalProductIndication)
17790      composeMedicinalProductIndication(parent, null, "MedicinalProductIndication", (MedicinalProductIndication)resource, -1);
17791    else if (resource instanceof MedicinalProductIngredient)
17792      composeMedicinalProductIngredient(parent, null, "MedicinalProductIngredient", (MedicinalProductIngredient)resource, -1);
17793    else if (resource instanceof MedicinalProductInteraction)
17794      composeMedicinalProductInteraction(parent, null, "MedicinalProductInteraction", (MedicinalProductInteraction)resource, -1);
17795    else if (resource instanceof MedicinalProductManufactured)
17796      composeMedicinalProductManufactured(parent, null, "MedicinalProductManufactured", (MedicinalProductManufactured)resource, -1);
17797    else if (resource instanceof MedicinalProductPackaged)
17798      composeMedicinalProductPackaged(parent, null, "MedicinalProductPackaged", (MedicinalProductPackaged)resource, -1);
17799    else if (resource instanceof MedicinalProductPharmaceutical)
17800      composeMedicinalProductPharmaceutical(parent, null, "MedicinalProductPharmaceutical", (MedicinalProductPharmaceutical)resource, -1);
17801    else if (resource instanceof MedicinalProductUndesirableEffect)
17802      composeMedicinalProductUndesirableEffect(parent, null, "MedicinalProductUndesirableEffect", (MedicinalProductUndesirableEffect)resource, -1);
17803    else if (resource instanceof MessageDefinition)
17804      composeMessageDefinition(parent, null, "MessageDefinition", (MessageDefinition)resource, -1);
17805    else if (resource instanceof MessageHeader)
17806      composeMessageHeader(parent, null, "MessageHeader", (MessageHeader)resource, -1);
17807    else if (resource instanceof MolecularSequence)
17808      composeMolecularSequence(parent, null, "MolecularSequence", (MolecularSequence)resource, -1);
17809    else if (resource instanceof NamingSystem)
17810      composeNamingSystem(parent, null, "NamingSystem", (NamingSystem)resource, -1);
17811    else if (resource instanceof NutritionOrder)
17812      composeNutritionOrder(parent, null, "NutritionOrder", (NutritionOrder)resource, -1);
17813    else if (resource instanceof Observation)
17814      composeObservation(parent, null, "Observation", (Observation)resource, -1);
17815    else if (resource instanceof ObservationDefinition)
17816      composeObservationDefinition(parent, null, "ObservationDefinition", (ObservationDefinition)resource, -1);
17817    else if (resource instanceof OperationDefinition)
17818      composeOperationDefinition(parent, null, "OperationDefinition", (OperationDefinition)resource, -1);
17819    else if (resource instanceof OperationOutcome)
17820      composeOperationOutcome(parent, null, "OperationOutcome", (OperationOutcome)resource, -1);
17821    else if (resource instanceof Organization)
17822      composeOrganization(parent, null, "Organization", (Organization)resource, -1);
17823    else if (resource instanceof OrganizationAffiliation)
17824      composeOrganizationAffiliation(parent, null, "OrganizationAffiliation", (OrganizationAffiliation)resource, -1);
17825    else if (resource instanceof Patient)
17826      composePatient(parent, null, "Patient", (Patient)resource, -1);
17827    else if (resource instanceof PaymentNotice)
17828      composePaymentNotice(parent, null, "PaymentNotice", (PaymentNotice)resource, -1);
17829    else if (resource instanceof PaymentReconciliation)
17830      composePaymentReconciliation(parent, null, "PaymentReconciliation", (PaymentReconciliation)resource, -1);
17831    else if (resource instanceof Person)
17832      composePerson(parent, null, "Person", (Person)resource, -1);
17833    else if (resource instanceof PlanDefinition)
17834      composePlanDefinition(parent, null, "PlanDefinition", (PlanDefinition)resource, -1);
17835    else if (resource instanceof Practitioner)
17836      composePractitioner(parent, null, "Practitioner", (Practitioner)resource, -1);
17837    else if (resource instanceof PractitionerRole)
17838      composePractitionerRole(parent, null, "PractitionerRole", (PractitionerRole)resource, -1);
17839    else if (resource instanceof Procedure)
17840      composeProcedure(parent, null, "Procedure", (Procedure)resource, -1);
17841    else if (resource instanceof Provenance)
17842      composeProvenance(parent, null, "Provenance", (Provenance)resource, -1);
17843    else if (resource instanceof Questionnaire)
17844      composeQuestionnaire(parent, null, "Questionnaire", (Questionnaire)resource, -1);
17845    else if (resource instanceof QuestionnaireResponse)
17846      composeQuestionnaireResponse(parent, null, "QuestionnaireResponse", (QuestionnaireResponse)resource, -1);
17847    else if (resource instanceof RelatedPerson)
17848      composeRelatedPerson(parent, null, "RelatedPerson", (RelatedPerson)resource, -1);
17849    else if (resource instanceof RequestGroup)
17850      composeRequestGroup(parent, null, "RequestGroup", (RequestGroup)resource, -1);
17851    else if (resource instanceof ResearchDefinition)
17852      composeResearchDefinition(parent, null, "ResearchDefinition", (ResearchDefinition)resource, -1);
17853    else if (resource instanceof ResearchElementDefinition)
17854      composeResearchElementDefinition(parent, null, "ResearchElementDefinition", (ResearchElementDefinition)resource, -1);
17855    else if (resource instanceof ResearchStudy)
17856      composeResearchStudy(parent, null, "ResearchStudy", (ResearchStudy)resource, -1);
17857    else if (resource instanceof ResearchSubject)
17858      composeResearchSubject(parent, null, "ResearchSubject", (ResearchSubject)resource, -1);
17859    else if (resource instanceof RiskAssessment)
17860      composeRiskAssessment(parent, null, "RiskAssessment", (RiskAssessment)resource, -1);
17861    else if (resource instanceof RiskEvidenceSynthesis)
17862      composeRiskEvidenceSynthesis(parent, null, "RiskEvidenceSynthesis", (RiskEvidenceSynthesis)resource, -1);
17863    else if (resource instanceof Schedule)
17864      composeSchedule(parent, null, "Schedule", (Schedule)resource, -1);
17865    else if (resource instanceof SearchParameter)
17866      composeSearchParameter(parent, null, "SearchParameter", (SearchParameter)resource, -1);
17867    else if (resource instanceof ServiceRequest)
17868      composeServiceRequest(parent, null, "ServiceRequest", (ServiceRequest)resource, -1);
17869    else if (resource instanceof Slot)
17870      composeSlot(parent, null, "Slot", (Slot)resource, -1);
17871    else if (resource instanceof Specimen)
17872      composeSpecimen(parent, null, "Specimen", (Specimen)resource, -1);
17873    else if (resource instanceof SpecimenDefinition)
17874      composeSpecimenDefinition(parent, null, "SpecimenDefinition", (SpecimenDefinition)resource, -1);
17875    else if (resource instanceof StructureDefinition)
17876      composeStructureDefinition(parent, null, "StructureDefinition", (StructureDefinition)resource, -1);
17877    else if (resource instanceof StructureMap)
17878      composeStructureMap(parent, null, "StructureMap", (StructureMap)resource, -1);
17879    else if (resource instanceof Subscription)
17880      composeSubscription(parent, null, "Subscription", (Subscription)resource, -1);
17881    else if (resource instanceof Substance)
17882      composeSubstance(parent, null, "Substance", (Substance)resource, -1);
17883    else if (resource instanceof SubstanceNucleicAcid)
17884      composeSubstanceNucleicAcid(parent, null, "SubstanceNucleicAcid", (SubstanceNucleicAcid)resource, -1);
17885    else if (resource instanceof SubstancePolymer)
17886      composeSubstancePolymer(parent, null, "SubstancePolymer", (SubstancePolymer)resource, -1);
17887    else if (resource instanceof SubstanceProtein)
17888      composeSubstanceProtein(parent, null, "SubstanceProtein", (SubstanceProtein)resource, -1);
17889    else if (resource instanceof SubstanceReferenceInformation)
17890      composeSubstanceReferenceInformation(parent, null, "SubstanceReferenceInformation", (SubstanceReferenceInformation)resource, -1);
17891    else if (resource instanceof SubstanceSourceMaterial)
17892      composeSubstanceSourceMaterial(parent, null, "SubstanceSourceMaterial", (SubstanceSourceMaterial)resource, -1);
17893    else if (resource instanceof SubstanceSpecification)
17894      composeSubstanceSpecification(parent, null, "SubstanceSpecification", (SubstanceSpecification)resource, -1);
17895    else if (resource instanceof SupplyDelivery)
17896      composeSupplyDelivery(parent, null, "SupplyDelivery", (SupplyDelivery)resource, -1);
17897    else if (resource instanceof SupplyRequest)
17898      composeSupplyRequest(parent, null, "SupplyRequest", (SupplyRequest)resource, -1);
17899    else if (resource instanceof Task)
17900      composeTask(parent, null, "Task", (Task)resource, -1);
17901    else if (resource instanceof TerminologyCapabilities)
17902      composeTerminologyCapabilities(parent, null, "TerminologyCapabilities", (TerminologyCapabilities)resource, -1);
17903    else if (resource instanceof TestReport)
17904      composeTestReport(parent, null, "TestReport", (TestReport)resource, -1);
17905    else if (resource instanceof TestScript)
17906      composeTestScript(parent, null, "TestScript", (TestScript)resource, -1);
17907    else if (resource instanceof ValueSet)
17908      composeValueSet(parent, null, "ValueSet", (ValueSet)resource, -1);
17909    else if (resource instanceof VerificationResult)
17910      composeVerificationResult(parent, null, "VerificationResult", (VerificationResult)resource, -1);
17911    else if (resource instanceof VisionPrescription)
17912      composeVisionPrescription(parent, null, "VisionPrescription", (VisionPrescription)resource, -1);
17913    else
17914      throw new Error("Unhandled resource type "+resource.getClass().getName());
17915  }
17916
17917  protected void composeType(Complex parent, String parentType, String name, Type value, int index) {
17918    if (value == null)
17919      return;
17920    else if (value instanceof DateType)
17921      composeDate(parent, parentType, name, (DateType)value, index);
17922    else if (value instanceof DateTimeType)
17923      composeDateTime(parent, parentType, name, (DateTimeType)value, index);
17924    else if (value instanceof CodeType)
17925      composeCode(parent, parentType, name, (CodeType)value, index);
17926    else if (value instanceof StringType)
17927      composeString(parent, parentType, name, (StringType)value, index);
17928    else if (value instanceof IntegerType)
17929      composeInteger(parent, parentType, name, (IntegerType)value, index);
17930    else if (value instanceof OidType)
17931      composeOid(parent, parentType, name, (OidType)value, index);
17932    else if (value instanceof CanonicalType)
17933      composeCanonical(parent, parentType, name, (CanonicalType)value, index);
17934    else if (value instanceof UriType)
17935      composeUri(parent, parentType, name, (UriType)value, index);
17936    else if (value instanceof UuidType)
17937      composeUuid(parent, parentType, name, (UuidType)value, index);
17938    else if (value instanceof UrlType)
17939      composeUrl(parent, parentType, name, (UrlType)value, index);
17940    else if (value instanceof InstantType)
17941      composeInstant(parent, parentType, name, (InstantType)value, index);
17942    else if (value instanceof BooleanType)
17943      composeBoolean(parent, parentType, name, (BooleanType)value, index);
17944    else if (value instanceof Base64BinaryType)
17945      composeBase64Binary(parent, parentType, name, (Base64BinaryType)value, index);
17946    else if (value instanceof UnsignedIntType)
17947      composeUnsignedInt(parent, parentType, name, (UnsignedIntType)value, index);
17948    else if (value instanceof MarkdownType)
17949      composeMarkdown(parent, parentType, name, (MarkdownType)value, index);
17950    else if (value instanceof TimeType)
17951      composeTime(parent, parentType, name, (TimeType)value, index);
17952    else if (value instanceof IdType)
17953      composeId(parent, parentType, name, (IdType)value, index);
17954    else if (value instanceof PositiveIntType)
17955      composePositiveInt(parent, parentType, name, (PositiveIntType)value, index);
17956    else if (value instanceof DecimalType)
17957      composeDecimal(parent, parentType, name, (DecimalType)value, index);
17958    else if (value instanceof Extension)
17959      composeExtension(parent, parentType, name, (Extension)value, index);
17960    else if (value instanceof Narrative)
17961      composeNarrative(parent, parentType, name, (Narrative)value, index);
17962    else if (value instanceof Meta)
17963      composeMeta(parent, parentType, name, (Meta)value, index);
17964    else if (value instanceof Address)
17965      composeAddress(parent, parentType, name, (Address)value, index);
17966    else if (value instanceof Contributor)
17967      composeContributor(parent, parentType, name, (Contributor)value, index);
17968    else if (value instanceof Attachment)
17969      composeAttachment(parent, parentType, name, (Attachment)value, index);
17970    else if (value instanceof Count)
17971      composeCount(parent, parentType, name, (Count)value, index);
17972    else if (value instanceof DataRequirement)
17973      composeDataRequirement(parent, parentType, name, (DataRequirement)value, index);
17974    else if (value instanceof Dosage)
17975      composeDosage(parent, parentType, name, (Dosage)value, index);
17976    else if (value instanceof Money)
17977      composeMoney(parent, parentType, name, (Money)value, index);
17978    else if (value instanceof HumanName)
17979      composeHumanName(parent, parentType, name, (HumanName)value, index);
17980    else if (value instanceof ContactPoint)
17981      composeContactPoint(parent, parentType, name, (ContactPoint)value, index);
17982    else if (value instanceof MarketingStatus)
17983      composeMarketingStatus(parent, parentType, name, (MarketingStatus)value, index);
17984    else if (value instanceof Identifier)
17985      composeIdentifier(parent, parentType, name, (Identifier)value, index);
17986    else if (value instanceof SubstanceAmount)
17987      composeSubstanceAmount(parent, parentType, name, (SubstanceAmount)value, index);
17988    else if (value instanceof Coding)
17989      composeCoding(parent, parentType, name, (Coding)value, index);
17990    else if (value instanceof SampledData)
17991      composeSampledData(parent, parentType, name, (SampledData)value, index);
17992    else if (value instanceof Population)
17993      composePopulation(parent, parentType, name, (Population)value, index);
17994    else if (value instanceof Ratio)
17995      composeRatio(parent, parentType, name, (Ratio)value, index);
17996    else if (value instanceof Distance)
17997      composeDistance(parent, parentType, name, (Distance)value, index);
17998    else if (value instanceof Age)
17999      composeAge(parent, parentType, name, (Age)value, index);
18000    else if (value instanceof Reference)
18001      composeReference(parent, parentType, name, (Reference)value, index);
18002    else if (value instanceof TriggerDefinition)
18003      composeTriggerDefinition(parent, parentType, name, (TriggerDefinition)value, index);
18004    else if (value instanceof Quantity)
18005      composeQuantity(parent, parentType, name, (Quantity)value, index);
18006    else if (value instanceof Period)
18007      composePeriod(parent, parentType, name, (Period)value, index);
18008    else if (value instanceof Duration)
18009      composeDuration(parent, parentType, name, (Duration)value, index);
18010    else if (value instanceof Range)
18011      composeRange(parent, parentType, name, (Range)value, index);
18012    else if (value instanceof RelatedArtifact)
18013      composeRelatedArtifact(parent, parentType, name, (RelatedArtifact)value, index);
18014    else if (value instanceof Annotation)
18015      composeAnnotation(parent, parentType, name, (Annotation)value, index);
18016    else if (value instanceof ProductShelfLife)
18017      composeProductShelfLife(parent, parentType, name, (ProductShelfLife)value, index);
18018    else if (value instanceof ContactDetail)
18019      composeContactDetail(parent, parentType, name, (ContactDetail)value, index);
18020    else if (value instanceof UsageContext)
18021      composeUsageContext(parent, parentType, name, (UsageContext)value, index);
18022    else if (value instanceof Expression)
18023      composeExpression(parent, parentType, name, (Expression)value, index);
18024    else if (value instanceof Signature)
18025      composeSignature(parent, parentType, name, (Signature)value, index);
18026    else if (value instanceof Timing)
18027      composeTiming(parent, parentType, name, (Timing)value, index);
18028    else if (value instanceof ProdCharacteristic)
18029      composeProdCharacteristic(parent, parentType, name, (ProdCharacteristic)value, index);
18030    else if (value instanceof CodeableConcept)
18031      composeCodeableConcept(parent, parentType, name, (CodeableConcept)value, index);
18032    else if (value instanceof ParameterDefinition)
18033      composeParameterDefinition(parent, parentType, name, (ParameterDefinition)value, index);
18034    else
18035      throw new Error("Unhandled type");
18036  }
18037
18038}