internal static ValueSet.ContainsComponent ToContainsComponent(this CodeSystem.ConceptDefinitionComponent source, CodeSystem system) { var newContains = new ValueSet.ContainsComponent(); newContains.System = system.Url; newContains.Version = system.Version; newContains.Code = source.Code; newContains.Display = source.Display; var abstractProperty = source.ListConceptProperties(system, CodeSystem.CONCEPTPROPERTY_NOT_SELECTABLE).SingleOrDefault(); var isAbstract = (FhirBoolean)abstractProperty?.Value; if (isAbstract?.Value != null) { newContains.Abstract = isAbstract.Value; } var inactiveProperty = source.ListConceptProperties(system, CodeSystem.CONCEPTPROPERTY_STATUS).SingleOrDefault(); var isInactive = (FhirBoolean)inactiveProperty?.Value; if (isInactive?.Value != null) { newContains.Inactive = isInactive.Value; } if (source.Concept.Any()) { newContains.Contains.AddRange( source.Concept.Select(c => c.ToContainsComponent(system))); } return(newContains); }
public static ValueSet.ContainsComponent Add(this List <ValueSet.ContainsComponent> dest, string system, string version, string code, string display, IEnumerable <ValueSet.ContainsComponent> children = null) { var newContains = new ValueSet.ContainsComponent(); newContains.System = system; newContains.Code = code; newContains.Display = display; newContains.Version = version; if (children != null) { newContains.Contains = new List <ValueSet.ContainsComponent>(children); } dest.Add(newContains); return(newContains); }
private ValueSet.ContainsComponent addToExpansion(string system, string version, string code, string display, bool?isAbstract, List <ValueSet.ContainsComponent> dest) { var newContains = new ValueSet.ContainsComponent(); newContains.System = system; newContains.Code = code; newContains.Display = display; newContains.Version = version; if (isAbstract != null) { newContains.Abstract = isAbstract; } dest.Add(newContains); return(newContains); }
public static ValueSet.ContainsComponent FindCode(this ValueSet.ContainsComponent contains, string code, string system = null) { // Direct hit if (code == contains.Code && (system == null || system == contains.System)) { return(contains); } // Not in this node, but this node may have child nodes to check if (contains.Contains != null && contains.Contains.Any()) { return(contains.Contains.FindCode(code, system)); } else { return(null); } }
public void TestExpansionCheckForCode() { var vs = new ValueSet(); var sys1 = "http://example.org/system/system1"; var sys2 = "http://example.org/system/system2"; vs.Expansion = new ValueSet.ExpansionComponent(); vs.Expansion.Contains.Add(new ValueSet.ContainsComponent { System = sys1, Code = "code1" }); var sys1code2 = new ValueSet.ContainsComponent { System = sys1, Code = "code2" }; vs.Expansion.Contains.Add(sys1code2); vs.Expansion.Contains.Add(new ValueSet.ContainsComponent { System = sys2, Code = "code1" }); sys1code2.Contains.Add(new ValueSet.ContainsComponent { System = sys1, Code = "code1.1" }); sys1code2.Contains.Add(new ValueSet.ContainsComponent { System = sys1, Code = "code1.2" }); Assert.IsTrue(vs.CodeInExpansion("code1", sys1)); Assert.IsTrue(vs.CodeInExpansion("code1", sys2)); Assert.IsTrue(vs.CodeInExpansion("code1")); Assert.IsFalse(vs.CodeInExpansion("code2", sys2)); Assert.IsTrue(vs.CodeInExpansion("code2")); Assert.IsTrue(vs.CodeInExpansion("code1.2")); Assert.IsTrue(vs.CodeInExpansion("code1.2", sys1)); Assert.IsFalse(vs.CodeInExpansion("code1.2", sys2)); Assert.AreEqual(5, vs.ExpansionSize()); }
private ValueSet BuildValueSet(Entities.ValueSetVersion valueSetVersionFromRepo, Entities.ValueSet valueSetFromRepo, bool includeConcepts = true) { var valueSet = new Hl7.Fhir.Model.ValueSet(); valueSet.Url = Url.Link( nameof(GetVersionedValueSetById), new { type = "ValueSet", id = valueSetFromRepo.ValueSetCode, vid = valueSetVersionFromRepo.ValueSetVersionNumber.ToString() }); valueSet.Identifier = new List <Identifier>() { new Identifier() { Use = Identifier.IdentifierUse.Official, Value = valueSetVersionFromRepo.ValueSetVersionID.ToString(), System = "urn:ietf:rfc:3986" }, new Identifier() { Use = Identifier.IdentifierUse.Secondary, Value = valueSetVersionFromRepo.ValueSetOID }, new Identifier() { Use = Identifier.IdentifierUse.Secondary, Value = valueSetVersionFromRepo.ValueSetCode } }; valueSet.Name = valueSetFromRepo.ValueSetCode; valueSet.Title = valueSetFromRepo.ValueSetName; valueSet.Description = new Markdown(valueSetFromRepo.DefinitionText); valueSet.Publisher = "PHIN_VADS"; valueSet.DateElement = new FhirDateTime(valueSetVersionFromRepo.StatusDate); valueSet.Version = valueSetVersionFromRepo.ValueSetVersionNumber.ToString(); valueSet.VersionId = valueSetVersionFromRepo.ValueSetVersionID.ToString(); valueSet.Status = PublicationStatus.Active; if (includeConcepts) { valueSet.Expansion = new ValueSet.ExpansionComponent() { Identifier = Guid.NewGuid().ToString(), TimestampElement = new FhirDateTime(DateTimeOffset.Now), Contains = new List <ValueSet.ContainsComponent>() }; var paginationParameters = new ValueSetConceptPaginationParameters() { ValueSetVersionId = valueSetVersionFromRepo.ValueSetVersionID, ValueSetVersionNumber = valueSetVersionFromRepo.ValueSetVersionNumber.ToString(), PageSize = 1000 }; var valueSetConceptEntities = _valueSetConceptRepository.GetValueSetConcepts(paginationParameters); foreach (var conceptFromRepo in valueSetConceptEntities) { var component = new ValueSet.ContainsComponent() { Code = conceptFromRepo.ConceptCode, Display = conceptFromRepo.CDCPreferredDesignation, System = $"urn:oid:{conceptFromRepo.CodeSystemOID}", Extension = new List <Extension>() { new Extension() { Value = new FhirString(conceptFromRepo.HL70396Identifier) } } }; valueSet.Expansion.Contains.Add(component); } valueSet.Expansion.Total = valueSet.Expansion.Contains.Count; valueSet.Expansion.Offset = (paginationParameters.PageNumber - 1) * paginationParameters.PageSize; } return(valueSet); }
private static string ConceptCodes(ValueSet.ContainsComponent contains) { return(contains.Code); }