public static ElementDefinition Binding(this ElementDefinition e, ValueSet vs, BindingStrength?strength) { return(e.Binding(vs.Url, strength)); }
public ElementTreeSlice ComponentSliceCodeableConcept(String sliceName, CodeableConcept pattern, ValueSet valueSet, BindingStrength bindingStrength, Int32 minCardinality, String maxCardinality, String componentName, String sliceDefinitionText, Modalities modalities = Modalities.All) { String compStr = maxCardinality == "1" ? compStr = "component" : "components"; Markdown sliceDefinition; { String introStr; if (minCardinality == 0) { if (maxCardinality == "1") { introStr = "This slice contains the optional component"; } else { introStr = "This slice contains the optional components"; } } else { if (maxCardinality == "1") { introStr = "This slice contains the required component"; } else { introStr = "This slice contains the required components"; } } sliceDefinition = new Markdown() .Paragraph($"{introStr} that {sliceDefinitionText}.", $"The value of this component is a codeable concept chosen from the {valueSet.Name} valueset."); } ElementTreeSlice slice = this.AppendSlice("component", sliceName, minCardinality, maxCardinality); slice.ElementDefinition .SetShort($"{componentName} component.") .SetDefinition(sliceDefinition) .SetComment(ResourcesMaker.componentDefinition) ; if (modalities != Modalities.All) { slice.ElementDefinition.Definition .ValidModalities(modalities); } if (String.IsNullOrWhiteSpace(pattern.Coding[0].Display)) { throw new Exception($"Display null on coding {pattern.Coding[0].Code}"); } { ElementDefinition componentCode = new ElementDefinition { Path = $"{slice.ElementDefinition.Path}.code", ElementId = $"{slice.ElementDefinition.Path}:{sliceName}.code", Min = 1, Max = "1", Short = $"{componentName} component code", Definition = new Markdown() .Paragraph($"This code identifies the {componentName} {compStr}.", $"Its value shall always be the concept '{pattern.Coding[0].Display}'") }; componentCode .Pattern(pattern.ToPattern()) .DefaultValueExtension(pattern) ; slice.CreateNode(componentCode); } { ElementDefinition valueX = new ElementDefinition { Path = $"{slice.ElementDefinition.Path}.value[x]", ElementId = $"{slice.ElementDefinition.Path}:{sliceName}.value[x]", Min = 1, Max = "1", Short = $"{componentName} component value", }; valueX .Binding(valueSet, bindingStrength) .Type("CodeableConcept") .SetDefinition(new Markdown() .Paragraph("Value is a codeable concept.") ) ; slice.CreateNode(valueX); } String componentRef = Global.ElementAnchor(slice.ElementDefinition); this.AddComponentLink(componentName, new SDefEditor.Cardinality(slice.ElementDefinition), null, componentRef, "CodeableConcept", valueSet.Url); return(slice); }