コード例 #1
0
        private static int GetConceptId(ConditionEra episode)
        {
            var outcomeCategory = episode.SourceValue;
            var startDate       = episode.StartDate;
            var endDate         = episode.EndDate.Value;

            if (episode.SourceValue == "SA" || episode.SourceValue == "AB")
            {
                outcomeCategory = "SA/AB";
            }
            else if (episode.SourceValue == "DELIV" || episode.SourceValue == "LB")
            {
                outcomeCategory = "LB/DELIV";
            }
            else if (episode.SourceValue == "SB" && endDate.Subtract(startDate).TotalDays + 1 < 140)
            {
                outcomeCategory = "SA/AB";
            }


            int conceptId = 0;

            switch (outcomeCategory)
            {
            case "SB":
                conceptId = 443213;
                break;

            case "LB/DELIV":
                conceptId = 433260;
                break;

            case "SA/AB":
                conceptId = 4067106;
                break;

            case "ECT":
                conceptId = 437611;
                break;
            }

            return(conceptId);
        }
コード例 #2
0
        public void AddData(IEntity data, EntityType entityType)
        {
            switch (entityType)
            {
            case EntityType.Person:
            {
                Persons.Add((Person)data);
                break;
            }

            case EntityType.Death:
            {
                Deaths.Add((Death)data);
                break;
            }

            case EntityType.PayerPlanPeriod:
            {
                PayerPlanPeriods.Add((PayerPlanPeriod)data);
                break;
            }

            case EntityType.ConditionOccurrence:
            {
                ConditionOccurrences.Add((ConditionOccurrence)data);
                break;
            }

            case EntityType.DrugExposure:
            {
                DrugExposures.Add((DrugExposure)data);
                break;
            }

            case EntityType.ProcedureOccurrence:
            {
                ProcedureOccurrences.Add((ProcedureOccurrence)data);
                break;
            }

            case EntityType.Observation:
            {
                Observations.Add((Observation)data);
                break;
            }

            case EntityType.VisitOccurrence:
            {
                VisitOccurrences.Add((VisitOccurrence)data);
                break;
            }

            case EntityType.VisitDetail:
            {
                VisitDetails.Add((VisitDetail)data);
                break;
            }

            case EntityType.Cohort:
            {
                Cohort.Add((Cohort)data);
                break;
            }

            case EntityType.Measurement:
            {
                Measurements.Add((Measurement)data);
                break;
            }

            case EntityType.DeviceExposure:
            {
                DeviceExposure.Add((DeviceExposure)data);
                break;
            }

            case EntityType.ObservationPeriod:
            {
                ObservationPeriods.Add((ObservationPeriod)data);
                break;
            }

            case EntityType.DrugEra:
            {
                DrugEra.Add((EraEntity)data);
                break;
            }

            case EntityType.ConditionEra:
            {
                ConditionEra.Add((EraEntity)data);
                break;
            }

            case EntityType.Note:
            {
                Note.Add((Note)data);
                break;
            }
            }
        }
コード例 #3
0
        private static IEnumerable <ConditionEra> GetEpisodesAllStarts(Person person, List <KeyValuePair <Event, Event> > allEpisodes, List <KeyValuePair <Event, Event> > pconfEpisodes, KeyValuePair <Event, Event>[] contraEpisodes)
        {
            var all = new List <ConditionEra>();

            foreach (var episode in allEpisodes)
            {
                var category = episode.Value.Category;
                var rank     = episode.Value.Rank;

                var startDate = episode.Value.Date;
                var endDate   = episode.Key.Date;

                var e = new ConditionEra
                {
                    SourceRecordGuid = episode.Key.Guid,
                    PersonId         = person.PersonId,
                    StartDate        = startDate,
                    EndDate          = endDate,
                    TypeConceptId    = rank,
                    SourceValue      = episode.Key.Category
                };

                all.Add(e);
                yield return(e);
            }

            foreach (var group in all.GroupBy(e => e.SourceRecordGuid))
            {
                var episode   = group.OrderBy(e => e.TypeConceptId).First();
                var rank      = episode.TypeConceptId;
                var startDate = episode.StartDate;
                var endDate   = episode.EndDate.Value;
                if (rank > 6)
                {
                    if (pconfEpisodes.Count > 0 || contraEpisodes.Length > 0)
                    {
                        bool dateUpdated = false;
                        var  pc          = pconfEpisodes.Where(e => e.Key.Guid == episode.SourceRecordGuid).ToArray();
                        var  cc          = contraEpisodes.Where(e => e.Key.Guid == episode.SourceRecordGuid).ToArray();

                        if (!cc.Any() && pc.Any() && pc.Any(e => e.Value.Date < startDate))
                        {
                            startDate = pc.Where(e => e.Value.Date < startDate).OrderBy(e => e.Value.Date).First()
                                        .Value.Date;
                            dateUpdated = true;
                        }
                        else if (!pc.Any() && cc.Any() && cc.Any(e => e.Value.Date > startDate))
                        {
                            startDate = cc.Where(e => e.Value.Date > startDate).OrderBy(e => e.Value.Date).First()
                                        .Value.Date;
                            dateUpdated = true;
                        }
                        else if (pc.Any() && cc.Any())
                        {
                            var priorPC = pc.Where(e => e.Value.Date < startDate).ToArray();
                            var afterCC = cc.Where(e => e.Value.Date > startDate).ToArray();

                            if (priorPC.Any())
                            {
                                var PCLagerThanCC = priorPC.Where(p => cc.Any(c => c.Value.Date < p.Value.Date))
                                                    .ToArray();
                                var CCLagerThanPC = cc.Where(c => priorPC.Any(p => c.Value.Date > p.Value.Date))
                                                    .ToArray();

                                if (PCLagerThanCC.Any())
                                {
                                    startDate   = PCLagerThanCC.OrderBy(e => e.Value.Date).First().Value.Date;
                                    dateUpdated = true;
                                }
                                else if (CCLagerThanPC.Any())
                                {
                                    startDate   = CCLagerThanPC.OrderBy(e => e.Value.Date).First().Value.Date;
                                    dateUpdated = true;
                                }
                            }

                            if (!dateUpdated && afterCC.Any() && pc.Any(e => e.Value.Date > startDate))
                            {
                                startDate   = afterCC.OrderBy(e => e.Value.Date).First().Value.Date;
                                dateUpdated = true;
                            }
                        }
                    }

                    yield return(new ConditionEra
                    {
                        PersonId = person.PersonId,
                        StartDate = startDate,
                        EndDate = endDate,
                        ConceptId = episode.ConceptId,
                        TypeConceptId = rank - 1,
                        SourceValue = episode.SourceValue
                    });
                }
            }
        }
コード例 #4
0
        public void AddData(IEntity data, EntityType entityType)
        {
            switch (entityType)
            {
            case EntityType.Person:
            {
                Persons.Enqueue((Person)data);
                break;
            }

            case EntityType.Death:
            {
                Deaths.Enqueue((Death)data);
                break;
            }

            case EntityType.PayerPlanPeriod:
            {
                PayerPlanPeriods.Enqueue((PayerPlanPeriod)data);
                break;
            }

            case EntityType.ConditionOccurrence:
            {
                ConditionOccurrences.Enqueue((ConditionOccurrence)data);
                break;
            }

            case EntityType.DrugExposure:
            {
                DrugExposures.Enqueue((DrugExposure)data);
                break;
            }

            case EntityType.ProcedureOccurrence:
            {
                ProcedureOccurrences.Enqueue((ProcedureOccurrence)data);
                break;
            }

            case EntityType.Observation:
            {
                Observations.Enqueue((Observation)data);
                break;
            }

            case EntityType.VisitOccurrence:
            {
                VisitOccurrences.Enqueue((VisitOccurrence)data);
                break;
            }

            case EntityType.Cohort:
            {
                Cohort.Enqueue((Cohort)data);
                break;
            }

            case EntityType.Measurement:
            {
                Measurements.Enqueue((Measurement)data);
                break;
            }

            case EntityType.DeviceExposure:
            {
                DeviceExposure.Enqueue((DeviceExposure)data);
                break;
            }

            case EntityType.DeviceCost:
            {
                DeviceCost.Enqueue((DeviceCost)data);
                break;
            }

            case EntityType.DrugCost:
            {
                DrugCost.Enqueue((DrugCost)data);
                break;
            }

            case EntityType.VisitCost:
            {
                VisitCost.Enqueue((VisitCost)data);
                break;
            }

            //case EntityType.Cost:
            //{

            //   break;
            //}

            case EntityType.ProcedureCost:
            {
                ProcedureCost.Enqueue((ProcedureCost)data);
                break;
            }

            case EntityType.ObservationPeriod:
            {
                ObservationPeriods.Enqueue((ObservationPeriod)data);
                break;
            }

            case EntityType.DrugEra:
            {
                DrugEra.Enqueue((EraEntity)data);
                break;
            }

            case EntityType.ConditionEra:
            {
                ConditionEra.Enqueue((EraEntity)data);
                break;
            }
            }
        }