Esempio n. 1
0
        /// <summary>
        /// Get suggested doses for a drug.
        /// </summary>
        /// <param name="drug">Drug model with data from the json input.</param>
        /// <returns>List of suggested doses.</returns>
        public static IList <SuggestedDose> GetSuggestedDoses(Drug drug)
        {
            IList <SuggestedDose> suggestedDoses = new List <SuggestedDose>();
            SuggestedDose         suggestedDose  = new SuggestedDose();

            foreach (IndicationAndDoseGroups indicationGroup in drug.IndicationsDose.IndicationAndDoseGroups)
            {
                suggestedDoses.Add(ProcessIndicationAndDoseGroup(indicationGroup));
            }
            return(suggestedDoses);
        }
Esempio n. 2
0
        private static SuggestedDose ProcessIndicationAndDoseGroup(IndicationAndDoseGroups indicationGroup)
        {
            SuggestedDose dose = new SuggestedDose();

            dose.Indications = indicationGroup.TherapeuticIndications.Select(x => x.Indication).ToList();
            string[]           routes             = indicationGroup.RoutesAndPatientGroups.Select(x => x.RoutesOfAdministration.Select(y => y.Route).FirstOrDefault()).FirstOrDefault().Split(" ");
            string             route              = CapitalizeWord(routes[1]);
            string             method             = (routes.Length > 2) ? CapitalizeWord(routes[2]) : string.Empty;
            DoseAdministration doseAdministration = new DoseAdministration {
                Route = CapitalizeWord(routes[1]), Method = method
            };
            RoutesAndPatientGroups routesAndPatientGroups = indicationGroup.RoutesAndPatientGroups.FirstOrDefault();

            if (routesAndPatientGroups != null)
            {
                foreach (PatientGroup patientGroup in routesAndPatientGroups.PatientGroups)
                {
                    DoseOutput output = new DoseOutput();
                    output.AgeBand = new AgeBand
                    {
                        AgeLow = new ValueObject
                        {
                            Value = patientGroup.Age.From,
                            Unit  = CheckYearFormat(patientGroup.Age.FromUnit)
                        },
                        AgeHigh = new ValueObject
                        {
                            Value = patientGroup.Age.To,
                            Unit  = CheckYearFormat(patientGroup.Age.ToUnit)
                        }
                    };
                    output.Flags = new Flag {
                        Frequency = CalculateFrequency(patientGroup.DoseStatement.DoseInstruction.FirstOrDefault())
                    };
                    output.Quantity = CalculateQuantity(patientGroup.DoseStatement.DoseInstruction.FirstOrDefault());
                    doseAdministration.Doses.Add(output);
                }
            }
            dose.DoseAdministrations = new List <DoseAdministration> {
                doseAdministration
            };
            return(dose);
        }