public void TestBuildVisitOccurrences1() { var builder = new PremierPersonBuilder(new ChunkBuilder(new ChunkData(), typeof(PremierPersonBuilder))); var visitOccurrences = GetVisitOccurrences1(); foreach (var visitOccurrence in visitOccurrences) { var de = new DrugExposure(visitOccurrence) { AdditionalFields = new Dictionary <string, string>() }; de.AdditionalFields.Add("serv_day", visitOccurrence.AdditionalFields["max_serv_day"]); de.VisitOccurrenceId = visitOccurrence.Id; builder.AddData(de); } var result = builder.BuildVisitOccurrences(visitOccurrences, new List <ObservationPeriod>().ToArray()).ToList(); Assert.AreEqual(9625131, result[0].Id); Assert.AreEqual(new DateTime(2011, 3, 1), result[0].StartDate); Assert.AreEqual(new DateTime(2011, 3, 1), result[0].EndDate); Assert.AreEqual(2049445909, result[1].Id); Assert.AreEqual(new DateTime(2011, 11, 30), result[1].StartDate); Assert.AreEqual(new DateTime(2012, 1, 1), result[1].EndDate); Assert.AreEqual(9652529, result[2].Id); Assert.AreEqual(new DateTime(2012, 2, 22), result[2].StartDate); Assert.AreEqual(new DateTime(2012, 3, 1), result[2].EndDate); Assert.AreEqual(57308877, result[3].Id); Assert.AreEqual(new DateTime(2012, 9, 1), result[3].StartDate); Assert.AreEqual(new DateTime(2012, 9, 1), result[3].EndDate); }
public string GetPersonIdFieldName() { if (Persons != null && Persons.Any()) { return(Persons[0].PersonId); } if (PayerPlanPeriods != null && PayerPlanPeriods.Any()) { return(PayerPlanPeriods[0].PersonId); } if (ConditionOccurrence != null && ConditionOccurrence.Any()) { return(ConditionOccurrence[0].PersonId); } if (Death != null && Death.Any()) { return(Death[0].PersonId); } if (DrugExposure != null && DrugExposure.Any()) { return(DrugExposure[0].PersonId); } if (ProcedureOccurrence != null && ProcedureOccurrence.Any()) { return(ProcedureOccurrence[0].PersonId); } if (Observation != null && Observation.Any()) { return(Observation[0].PersonId); } if (Measurement != null && Measurement.Any()) { return(Measurement[0].PersonId); } if (VisitOccurrence != null && VisitOccurrence.Any()) { return(VisitOccurrence[0].PersonId); } if (Cohort != null && Cohort.Any()) { return(Cohort[0].PersonId); } if (DeviceExposure != null && DeviceExposure.Any()) { return(DeviceExposure[0].PersonId); } throw new Exception("Cant find PersonId FieldName " + this.FileName); }
public DrugCost(DrugExposure ent) : base(ent) { Init(ent); Id = ent.Id; SourceRecordGuid = ent.SourceRecordGuid; }
public DrugCost CreateEnity(DrugExposure drugExposure, IDataRecord reader) { var paidCopay = reader.GetDecimal(PaidCopay); var paidCoinsurance = reader.GetDecimal(PaidCoinsurance); var paidTowardDeductible = reader.GetDecimal(PaidTowardDeductible); decimal?totalOutOfPocket = null; if (!string.IsNullOrEmpty(TotalOutOfPocket)) { totalOutOfPocket = reader.GetDecimal(TotalOutOfPocket); } else { totalOutOfPocket = paidCopay + paidCoinsurance + paidTowardDeductible; } long? revenueCodeConceptId = null; string revenueCodeSource = null; if (Concepts != null) { if (Concepts.Length > 0) { var revenueCodeConcept = Concepts[0]; if (revenueCodeConcept.Fields.Length > 0) { revenueCodeSource = reader.GetString(revenueCodeConcept.Fields[0].Key); var revenueConcepts = revenueCodeConcept.GetConceptIdValues(Vocabulary, revenueCodeConcept.Fields[0], reader); if (revenueConcepts.Count > 0) { revenueCodeConceptId = revenueConcepts[0].ConceptId; } } } } return(new DrugCost(drugExposure) { CurrencyConceptId = reader.GetLong(CurrencyConceptId) ?? 0, PaidCopay = paidCopay, PaidCoinsurance = paidCoinsurance, PaidTowardDeductible = paidTowardDeductible, PaidByPayer = reader.GetDecimal(PaidByPayer), PaidByCoordinationBenefits = reader.GetDecimal(PaidByCoordinationBenefits), TotalPaid = reader.GetDecimal(TotalPaid), IngredientCost = reader.GetDecimal(IngredientCost), DispensingFee = reader.GetDecimal(DispensingFee), AverageWholesalePrice = reader.GetDecimal(AverageWholesalePrice), TotalOutOfPocket = totalOutOfPocket, RevenueCodeConceptId = revenueCodeConceptId, RevenueCodeSourceValue = revenueCodeSource, }); }
private void AddChildData(DrugExposure parent, DrugCost child) { if (child.PaidCopay == 0 && child.PaidCoinsurance == 0 && child.PaidTowardDeductible == 0 && child.PaidByPayer == 0 && child.TotalPaid == 0) { return; } _personBuilders[parent.PersonId].Value.AddChildData(parent, child); }
/// <summary> /// Projects Enumeration of drug exposure from the raw set of drug exposure entities. /// During build: /// override the drug's start/end date using the end date of the corresponding observation period. /// </summary> /// <param name="drugExposures">raw set of drug exposures entities</param> /// <param name="visitOccurrences">the visit occurrences entities for current person</param> /// <param name="observationPeriods">the observation periods entities for current person</param> /// <returns>Enumeration of drug exposure entities</returns> public override IEnumerable<DrugExposure> BuildDrugExposures(DrugExposure[] drugExposures, Dictionary<long, VisitOccurrence> visitOccurrences, ObservationPeriod[] observationPeriods) { if (observationPeriods.Length != 0) { foreach (var drugExposure in drugExposures) { drugExposure.StartDate = drugExposure.DaysSupply.HasValue ? observationPeriods[0].EndDate.AddDays(drugExposure.DaysSupply.Value*-1) : observationPeriods[0].EndDate; drugExposure.EndDate = observationPeriods[0].EndDate; yield return drugExposure; } } }
public DrugCost CreateEnity(DrugExposure drugExposure, IDataRecord reader) { var paidCopay = reader.GetDecimal(PaidCopay); var paidCoinsurance = reader.GetDecimal(PaidCoinsurance); var paidTowardDeductible = reader.GetDecimal(PaidTowardDeductible); decimal?totalOutOfPocket = null; if (!string.IsNullOrEmpty(TotalOutOfPocket)) { totalOutOfPocket = reader.GetDecimal(TotalOutOfPocket); } else { totalOutOfPocket = paidCopay + paidCoinsurance + paidTowardDeductible; } long? drgConceptId; string drgSource; long? revenueCodeConceptId; string revenueCodeSource; PopulateOthersConcepts(reader, out drgConceptId, out drgSource, out revenueCodeConceptId, out revenueCodeSource); return(new DrugCost(drugExposure) { CurrencyConceptId = reader.GetLong(CurrencyConceptId) ?? 0, PaidCopay = paidCopay, PaidCoinsurance = paidCoinsurance, PaidTowardDeductible = paidTowardDeductible, PaidByPayer = reader.GetDecimal(PaidByPayer), PaidByCoordinationBenefits = reader.GetDecimal(PaidByCoordinationBenefits), TotalPaid = reader.GetDecimal(TotalPaid), IngredientCost = reader.GetDecimal(IngredientCost), DispensingFee = reader.GetDecimal(DispensingFee), AverageWholesalePrice = reader.GetDecimal(AverageWholesalePrice), TotalOutOfPocket = totalOutOfPocket, DrgConceptId = drgConceptId, DrgSourceValue = drgSource, RevenueCodeConceptId = revenueCodeConceptId, RevenueCodeSourceValue = revenueCodeSource, }); }
public DrugCost CreateEnity(DrugExposure drugExposure, IDataReader reader) { var paidCopay = reader.GetDecimal(PaidCopay); var paidCoinsurance = reader.GetDecimal(PaidCoinsurance); var paidTowardDeductible = reader.GetDecimal(PaidTowardDeductible); return new DrugCost(drugExposure) { PaidCopay = paidCopay, PaidCoinsurance = paidCoinsurance, PaidTowardDeductible = paidTowardDeductible, PaidByPayer = reader.GetDecimal(PaidByPayer), PaidByCoordinationBenefits = reader.GetDecimal(PaidByCoordinationBenefits), TotalPaid = reader.GetDecimal(TotalPaid), IngredientCost = reader.GetDecimal(IngredientCost), DispensingFee = reader.GetDecimal(DispensingFee), AverageWholesalePrice = reader.GetDecimal(AverageWholesalePrice), TotalOutOfPocket = paidCopay + paidCoinsurance + paidTowardDeductible }; }
public DrugCost CreateEnity(DrugExposure drugExposure, IDataReader reader) { var paidCopay = reader.GetDecimal(PaidCopay); var paidCoinsurance = reader.GetDecimal(PaidCoinsurance); var paidTowardDeductible = reader.GetDecimal(PaidTowardDeductible); return(new DrugCost(drugExposure) { PaidCopay = paidCopay, PaidCoinsurance = paidCoinsurance, PaidTowardDeductible = paidTowardDeductible, PaidByPayer = reader.GetDecimal(PaidByPayer), PaidByCoordinationBenefits = reader.GetDecimal(PaidByCoordinationBenefits), TotalPaid = reader.GetDecimal(TotalPaid), IngredientCost = reader.GetDecimal(IngredientCost), DispensingFee = reader.GetDecimal(DispensingFee), AverageWholesalePrice = reader.GetDecimal(AverageWholesalePrice), TotalOutOfPocket = paidCopay + paidCoinsurance + paidTowardDeductible }); }
public void TestBuildVisitOccurrences() { var builder = new PremierPersonBuilder(new ChunkBuilder(new ChunkData(), typeof(PremierPersonBuilder))); var visitOccurrences = GetVisitOccurrences(); foreach (var visitOccurrence in visitOccurrences) { var de = new DrugExposure(visitOccurrence) { AdditionalFields = new Dictionary <string, string>() }; de.AdditionalFields.Add("serv_day", visitOccurrence.AdditionalFields["max_serv_day"]); de.VisitOccurrenceId = visitOccurrence.Id; builder.AddData(de); } var result = builder.BuildVisitOccurrences(visitOccurrences, new List <ObservationPeriod>().ToArray()).ToList(); Assert.AreEqual(1175536237, result[0].Id); Assert.AreEqual(new DateTime(2010, 10, 1), result[0].StartDate); Assert.AreEqual(new DateTime(2010, 10, 4), result[0].EndDate); Assert.AreEqual(1228455080, result[1].Id); Assert.AreEqual(new DateTime(2010, 10, 23), result[1].StartDate); Assert.AreEqual(new DateTime(2010, 11, 1), result[1].EndDate); Assert.AreEqual(1430830346, result[2].Id); Assert.AreEqual(new DateTime(2011, 1, 1), result[2].StartDate); Assert.AreEqual(new DateTime(2011, 1, 7), result[2].EndDate); Assert.AreEqual(1511534818, result[3].Id); Assert.AreEqual(new DateTime(2011, 2, 1), result[3].StartDate); Assert.AreEqual(new DateTime(2011, 2, 6), result[3].EndDate); Assert.AreEqual(1560724070, result[4].Id); Assert.AreEqual(new DateTime(2011, 2, 13), result[4].StartDate); Assert.AreEqual(new DateTime(2011, 4, 1), result[4].EndDate); Assert.AreEqual(1569075673, result[5].Id); Assert.AreEqual(new DateTime(2011, 5, 1), result[5].StartDate); Assert.AreEqual(new DateTime(2011, 5, 8), result[5].EndDate); Assert.AreEqual(1568584891, result[6].Id); Assert.AreEqual(new DateTime(2011, 5, 9), result[6].StartDate); Assert.AreEqual(new DateTime(2011, 5, 11), result[6].EndDate); Assert.AreEqual(1606647218, result[7].Id); Assert.AreEqual(new DateTime(2011, 7, 1), result[7].StartDate); Assert.AreEqual(new DateTime(2011, 7, 3), result[7].EndDate); Assert.AreEqual(1606676096, result[8].Id); Assert.AreEqual(new DateTime(2011, 7, 4), result[8].StartDate); Assert.AreEqual(new DateTime(2011, 7, 10), result[8].EndDate); Assert.AreEqual(1649550323, result[9].Id); Assert.AreEqual(new DateTime(2011, 8, 1), result[9].StartDate); Assert.AreEqual(new DateTime(2011, 8, 10), result[9].EndDate); Assert.AreEqual(1649545709, result[10].Id); Assert.AreEqual(new DateTime(2011, 8, 11), result[10].StartDate); Assert.AreEqual(new DateTime(2011, 8, 21), result[10].EndDate); Assert.AreEqual(1856443013, result[11].Id); Assert.AreEqual(new DateTime(2011, 10, 1), result[11].StartDate); Assert.AreEqual(new DateTime(2011, 10, 10), result[11].EndDate); }
protected override void SetPayerPlanPeriodId(PayerPlanPeriod[] payerPlanPeriods, DrugExposure[] drugExposures, ProcedureOccurrence[] procedureOccurrences) { if (!payerPlanPeriods.Any()) return; foreach (var de in drugExposures) { if (de.DrugCost == null) continue; foreach (var planPeriod in payerPlanPeriods) { if (de.StartDate.Between(planPeriod.StartDate, planPeriod.EndDate.Value) && !string.IsNullOrEmpty(de.DrugCost.AdditionalFields["pat_planid"]) && de.DrugCost.AdditionalFields["pat_planid"] == planPeriod.PlanSourceValue) { de.DrugCost.PayerPlanPeriodId = planPeriod.Id; break; } } } foreach (var po in procedureOccurrences) { if (po.ProcedureCosts == null) continue; foreach (var planPeriod in payerPlanPeriods) { if (po.StartDate.Between(planPeriod.StartDate, planPeriod.EndDate.Value)) { foreach (var procedureCost in po.ProcedureCosts) { if (procedureCost.AdditionalFields["pat_planid"] == planPeriod.PlanSourceValue) { procedureCost.PayerPlanPeriodId = planPeriod.Id; } } } } } }
/// <summary> /// Projects Enumeration of drug exposure from the raw set of drug exposure & procedure occurrence entities. /// During build: /// overide TypeConceptId per CDM Mapping spec. /// </summary> /// <param name="de">raw set of drug exposures entities</param> /// <param name="visitOccurrences">the visit occurrences entities for current person</param> /// <param name="observationPeriods">the observation periods entities for current person</param> /// <returns>Enumeration of drug exposure entities</returns> public override IEnumerable<DrugExposure> BuildDrugExposures(DrugExposure[] de, Dictionary<long, VisitOccurrence> visitOccurrences, ObservationPeriod[] observationPeriods) { var drugExposures = PrepareDrugExposures(de, visitOccurrences).ToArray(); return base.BuildDrugExposures(drugExposures, visitOccurrences, observationPeriods); }
public void TestBuildVisitOccurrences() { var builder = new PremierPersonBuilder(new ChunkBuilder(new ChunkData(), typeof(PremierPersonBuilder))); var visitOccurrences = GetVisitOccurrences(); foreach (var visitOccurrence in visitOccurrences) { var de = new DrugExposure(visitOccurrence) {AdditionalFields = new Dictionary<string, string>()}; de.AdditionalFields.Add("serv_day", visitOccurrence.AdditionalFields["max_serv_day"]); de.VisitOccurrenceId = visitOccurrence.Id; builder.AddData(de); } var result = builder.BuildVisitOccurrences(visitOccurrences, new List<ObservationPeriod>().ToArray()).ToList(); Assert.AreEqual(1175536237, result[0].Id); Assert.AreEqual(new DateTime(2010, 10, 1), result[0].StartDate); Assert.AreEqual(new DateTime(2010, 10, 4), result[0].EndDate); Assert.AreEqual(1228455080, result[1].Id); Assert.AreEqual(new DateTime(2010, 10, 23), result[1].StartDate); Assert.AreEqual(new DateTime(2010, 11, 1), result[1].EndDate); Assert.AreEqual(1430830346, result[2].Id); Assert.AreEqual(new DateTime(2011, 1, 1), result[2].StartDate); Assert.AreEqual(new DateTime(2011, 1, 7), result[2].EndDate); Assert.AreEqual(1511534818, result[3].Id); Assert.AreEqual(new DateTime(2011, 2, 1), result[3].StartDate); Assert.AreEqual(new DateTime(2011, 2, 6), result[3].EndDate); Assert.AreEqual(1560724070, result[4].Id); Assert.AreEqual(new DateTime(2011, 2, 13), result[4].StartDate); Assert.AreEqual(new DateTime(2011, 4, 1), result[4].EndDate); Assert.AreEqual(1569075673, result[5].Id); Assert.AreEqual(new DateTime(2011, 5, 1), result[5].StartDate); Assert.AreEqual(new DateTime(2011, 5, 8), result[5].EndDate); Assert.AreEqual(1568584891, result[6].Id); Assert.AreEqual(new DateTime(2011, 5, 9), result[6].StartDate); Assert.AreEqual(new DateTime(2011, 5, 11), result[6].EndDate); Assert.AreEqual(1606647218, result[7].Id); Assert.AreEqual(new DateTime(2011, 7, 1), result[7].StartDate); Assert.AreEqual(new DateTime(2011, 7, 3), result[7].EndDate); Assert.AreEqual(1606676096, result[8].Id); Assert.AreEqual(new DateTime(2011, 7, 4), result[8].StartDate); Assert.AreEqual(new DateTime(2011, 7, 10), result[8].EndDate); Assert.AreEqual(1649550323, result[9].Id); Assert.AreEqual(new DateTime(2011, 8, 1), result[9].StartDate); Assert.AreEqual(new DateTime(2011, 8, 10), result[9].EndDate); Assert.AreEqual(1649545709, result[10].Id); Assert.AreEqual(new DateTime(2011, 8, 11), result[10].StartDate); Assert.AreEqual(new DateTime(2011, 8, 21), result[10].EndDate); Assert.AreEqual(1856443013, result[11].Id); Assert.AreEqual(new DateTime(2011, 10, 1), result[11].StartDate); Assert.AreEqual(new DateTime(2011, 10, 10), result[11].EndDate); }
public void TestBuildVisitOccurrences1() { var builder = new PremierPersonBuilder(new ChunkBuilder(new ChunkData(), typeof(PremierPersonBuilder))); var visitOccurrences = GetVisitOccurrences1(); foreach (var visitOccurrence in visitOccurrences) { var de = new DrugExposure(visitOccurrence) { AdditionalFields = new Dictionary<string, string>() }; de.AdditionalFields.Add("serv_day", visitOccurrence.AdditionalFields["max_serv_day"]); de.VisitOccurrenceId = visitOccurrence.Id; builder.AddData(de); } var result = builder.BuildVisitOccurrences(visitOccurrences, new List<ObservationPeriod>().ToArray()).ToList(); Assert.AreEqual(9625131, result[0].Id); Assert.AreEqual(new DateTime(2011, 3, 1), result[0].StartDate); Assert.AreEqual(new DateTime(2011, 3, 1), result[0].EndDate); Assert.AreEqual(2049445909, result[1].Id); Assert.AreEqual(new DateTime(2011, 11, 30), result[1].StartDate); Assert.AreEqual(new DateTime(2012, 1, 1), result[1].EndDate); Assert.AreEqual(9652529, result[2].Id); Assert.AreEqual(new DateTime(2012, 2, 22), result[2].StartDate); Assert.AreEqual(new DateTime(2012, 3, 1), result[2].EndDate); Assert.AreEqual(57308877, result[3].Id); Assert.AreEqual(new DateTime(2012, 9, 1), result[3].StartDate); Assert.AreEqual(new DateTime(2012, 9, 1), result[3].EndDate); }
public void AddChildData(DrugExposure parent, DrugCost child) { parent.DrugCost = child; }