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); }
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; } } }
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 }); } } }
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; } } }