예제 #1
0
        public override void AddRecord(IDataReader reader)
        {
            var prodcode = reader.GetInt("prodcode");

            var ndd        = reader.GetDecimal("ndd");
            var quantity   = reader.GetDecimal("qty");
            var numpacks   = reader.GetInt("numpacks");
            var dayssupply = reader.GetInt("numdays");

            if (prodcode.HasValue && dayssupply.HasValue)
            {
                var key = CompositeKeyHelper.GetCprdDaysSupplyKey(prodcode.Value, ndd, quantity, numpacks);

                if (!lookup.ContainsKey(key))
                {
                    lookup.Add(key, dayssupply.Value);
                }
            }
        }
예제 #2
0
        private int GetDaysSupply(IDataReader reader, Entity e)
        {
            var daysSupply = reader.GetInt(DaysSupply);

            if (!daysSupply.HasValue || daysSupply == 0)
            {
                // TODO : Create separate CPRDDrugExposureDefinition class and move this metod to new class
                if (!string.IsNullOrEmpty(DaysSupplyLookup))
                {
                    int prodcode;
                    if (!int.TryParse(e.AdditionalFields["prodcode"], out prodcode))
                    {
                        return(0);
                    }

                    decimal ndd;
                    decimal.TryParse(e.AdditionalFields["ndd"], out ndd);

                    int numpacks;
                    int.TryParse(e.AdditionalFields["numpacks"], out numpacks);

                    decimal quantity = -1;
                    if (e.AdditionalFields.ContainsKey("quantity"))
                    {
                        decimal.TryParse(e.AdditionalFields["quantity"], out quantity);
                    }

                    var key    = CompositeKeyHelper.GetCprdDaysSupplyKey(prodcode, ndd, quantity, numpacks);
                    var result = Vocabulary.LookupDaysSupply(key, DaysSupplyLookup);
                    if (!result.HasValue)
                    {
                        key    = CompositeKeyHelper.GetCprdDaysSupplyKey(prodcode);
                        result = Vocabulary.LookupDaysSupply(key, DaysSupplyLookup);
                    }

                    var ds = result.HasValue ? result.Value : 0;
                    return(ds > 365 ? 0 : ds);
                }
            }

            return(daysSupply.HasValue ? daysSupply.Value : 0);
        }
예제 #3
0
        public override void Load()
        {
            if (Path.GetExtension(sqlFileDestination).Equals(".sql", StringComparison.CurrentCultureIgnoreCase))
            {
                base.Load();
            }
            else
            {
                var folder = sqlFileDestination;

                if (!string.IsNullOrEmpty(definitionsFolder))
                {
                    folder = Path.Combine(definitionsFolder, sqlFileDestination);
                }

                var isFirstLine = true;
                foreach (var line in File.ReadAllLines(folder))
                {
                    if (isFirstLine)
                    {
                        isFirstLine = false;
                        continue;
                    }

                    //prodcode	ndd	qty	numpacks	dayssupply
                    var     values     = line.Split('\t');
                    int?    prodcode   = null;
                    decimal?ndd        = null;
                    decimal?quantity   = null;
                    int?    numpacks   = null;
                    int?    dayssupply = null;

                    if (values.Length > 0)
                    {
                        prodcode = int.Parse(values[0]);
                    }

                    if (values.Length > 1)
                    {
                        ndd = decimal.Parse(values[1]);
                    }

                    if (values.Length > 2)
                    {
                        quantity = decimal.Parse(values[2]);
                    }

                    if (values.Length > 3)
                    {
                        numpacks = int.Parse(values[3]);
                    }

                    if (values.Length > 4)
                    {
                        dayssupply = int.Parse(values[4]);
                    }

                    if (prodcode.HasValue && dayssupply.HasValue)
                    {
                        var key = CompositeKeyHelper.GetCprdDaysSupplyKey(prodcode.Value, ndd, quantity, numpacks);

                        if (!lookup.ContainsKey(key))
                        {
                            lookup.Add(key, dayssupply.Value);
                        }
                    }
                }
            }
        }