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);
        }
Example #2
0
        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);
        }
Example #3
0
        public DrugCost(DrugExposure ent)
            : base(ent)
        {
            Init(ent);

             Id = ent.Id;
             SourceRecordGuid = ent.SourceRecordGuid;
        }
Example #4
0
        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;
            }
             }
        }
Example #8
0
        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
                   };
        }
Example #10
0
        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);
        }
Example #16
0
 public void AddChildData(DrugExposure parent, DrugCost child)
 {
     parent.DrugCost = child;
 }