コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
ファイル: ModelTests.cs プロジェクト: evrimulgen/fhir-net-api
        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());
        }
コード例 #6
0
        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);
 }