public void Classification_GivenParams_ReturnsCorrectAscvdRiskClassification(GenderIdentity genderIdentity, int systolic, double hdl, double totalCholesterol, double ldl, bool diabetic, bool antiHypertensive, bool smoker, bool ascvdPresent, AscvdRiskClassification expected) { _patient.Gender = Gender.Build(genderIdentity); if (diabetic) { _patient.Comorbidities.Add(ChronicDisease.Diabetes); } if (antiHypertensive) { _patient.Comorbidities.Add(ChronicDisease.HypertensionTreated); } if (smoker) { _patient.Comorbidities.Add(ChronicDisease.TobaccoSmoker); } if (ascvdPresent) { _patient.Comorbidities.Add(ChronicDisease.DiagnosedCardiovascularDisease); } var ascvdClassification = new AscvdClassification(AscvdParameters.Build(_patient, BloodPressure.Build(systolic, 75), Quantitative.Serum.CholesterolTotal(totalCholesterol), Quantitative.Serum.LowDensityLipoprotein(ldl), Quantitative.Serum.HighDensityLipoprotein(hdl))); Assert.Equal(expected, ascvdClassification.Classification.TenYearRiskClassification); }
public override BaseResource[] TransformSource(XDocument doc) { Person member = new Person(); XElement personElement = doc.Element(atom + "entry") .Element(atom + "content") .Element(m + "properties"); member.PersonDateOfBirth = personElement.Element(d + "DateOfBirth").GetDate(); member.PersonGivenName = personElement.Element(d + "Forename").GetText(); member.PersonOtherNames = personElement.Element(d + "MiddleNames").GetText(); member.PersonFamilyName = personElement.Element(d + "Surname").GetText(); member.MemberMnisId = personElement.Element(d + "Member_Id").GetText(); member.PersonDodsId = personElement.Element(d + "Dods_Id").GetText(); member.PersonPimsId = personElement.Element(d + "Pims_Id").GetText(); member.PersonDateOfDeath = personElement.Element(d + "DateOfDeath").GetDate(); string currentGenderText = personElement.Element(d + "Gender").GetText(); if (string.IsNullOrWhiteSpace(currentGenderText) == false) { GenderIdentity genderIdentity = generateGenderIdentity(currentGenderText); member.PersonHasGenderIdentity = new GenderIdentity[] { genderIdentity }; } return(new BaseResource[] { member }); }
private GenderIdentity generateGenderIdentity(string currentGenderText) { GenderIdentity genderIdentity = new GenderIdentity(); Gender gender = new Gender(); genderIdentity.Id = GenerateNewId(); gender.Id = IdRetrieval.GetSubject("genderMnisId", currentGenderText, false, logger); genderIdentity.GenderIdentityHasGender = gender; return(genderIdentity); }
public void Classification_GivenValues_ReturnsCorrectClassification(GenderIdentity gender, double left, double right, GripStrengthScore expected) { _patient.Gender = Gender.Build(gender); var gs = GripStrength.Build(left, right); var classification = new GripStrengthClassification(new GripStrengthClassificationParameters(gs, _patient)) .Classification; Assert.Equal(expected, classification.WorseSide); }
public void Classification_GivenPatientAndData_ReturnsCorrectClassifiation(int distance, int age, GenderIdentity genderIdentity, FitnessClassification expectedFitnessClassification) { _patient.DateOfBirth = DateTime.Now.AddYears(-age); _patient.Gender = Gender.Build(genderIdentity); var situps = Situps.Build(distance); var classification = new SitupsClassification(new SitupsClassificationParameters(situps, _patient)).Classification; Assert.Equal(expectedFitnessClassification, classification); }
public void Classification_GivenPatientAndData_ReturnsCorrectClassification(double ratio, GenderIdentity genderIdentity, WaistToHeightRatio expectedWaistToHeightRatio) { _patient.Gender = Gender.Build(genderIdentity); var bodyComposition = BodyCompositionBuilder.Initialize() .SetHeight(LengthConversion.CentimetersToInches(1)) .SetWaist(LengthConversion.CentimetersToInches(ratio)) .BuildWithoutModelValidation(); var classification = new WaistToHeightRatioClassification( new BodyCompositionClassificationParameters(bodyComposition, _patient)).Classification; Assert.Equal(expectedWaistToHeightRatio, classification); }
public void Value_GivenTreadmillAndPatientData_ReturnsCorrectValue(GenderIdentity gender, int age, int maxHeartRate, double minutes, double seconds, double expectedScore) { _patient.DateOfBirth = DateTime.Now.AddYears(-age); _patient.Gender = Gender.Build(gender); var tmst = TreadmillExerciseStressTestBuilder.Initialize() .SetMaximumHeartRate(maxHeartRate) .SetTime(minutes, seconds) .BuildWithoutModelValidation(); var fitScore = new FitTreadmillScoreClassification( new TreadmillExerciseStressTestClassificationParameters(tmst, _patient)).Value; Assert.InRange(fitScore, expectedScore - 0.001, expectedScore + 0.001); }
public void IdealLifeTimeRisk_IsCorrect(GenderIdentity gender, double expectedRisk) { _patient.Gender = Gender.Build(gender); _parametersBuilder .SetPatient(_patient) .SetBloodPressure(default(int), default(int)) .SetTotalCholesterol(default(int)) .SetHdlCholesterol(default(int)); var idealAscvdLifetimeRisk = new PooledCohortsEquation(_parametersBuilder.Build()).IdealAscvdLifetimeRiskPercentage; const double tolerance = 0.1; Assert.InRange(idealAscvdLifetimeRisk, expectedRisk - tolerance, expectedRisk + tolerance); }
public void GivenPatientAndTreamill_ReturnsCorrectResult(int age, GenderIdentity genderIdentity, int expectedLower, int expectedUpper) { var dateOfBirth = DateTime.Now.AddYears(-age); var patient = PatientBuilder.Initialize() .SetGender(genderIdentity) .SetDateOfBirth(dateOfBirth.Year, dateOfBirth.Month, dateOfBirth.Day) .BuildWithoutModelValidation(); var treadmill = TreadmillExerciseStressTestBuilder.Initialize() .SetTime(11, 33) .BuildWithoutModelValidation(); var result = CalculateMetabolicEquivalents.FromTreadmillStressTest(treadmill, patient); Assert.InRange(result, expectedLower, expectedUpper); }
private Name NewName(string[] first, string[] last, GenderIdentity gender) { return(new Name { First = new JapaneseText { Kanji = first[KanjiIndex], Hiragana = first[HiraganaIndex], Katakana = first[KatakanaIndex] }, Last = new JapaneseText { Kanji = last[KanjiIndex], Hiragana = last[HiraganaIndex], Katakana = last[KatakanaIndex] }, Gender = gender }); }
private Name NewName(string[] first, string[] last, GenderIdentity gender) { return new Name { First = new JapaneseText { Kanji = first[KanjiIndex], Hiragana = first[HiraganaIndex], Katakana = first[KatakanaIndex] }, Last = new JapaneseText { Kanji = last[KanjiIndex], Hiragana = last[HiraganaIndex], Katakana = last[KatakanaIndex] }, Gender = gender }; }
public override BaseResource[] SynchronizeIds(BaseResource[] source, Uri subjectUri, BaseResource[] target) { Person member = source.OfType <Person>().SingleOrDefault(); if ((member.PersonHasGenderIdentity != null) && (member.PersonHasGenderIdentity.Any())) { GenderIdentity genderIdentity = target.OfType <GenderIdentity>().SingleOrDefault(); if (genderIdentity != null) { member.PersonHasGenderIdentity.SingleOrDefault().Id = genderIdentity.Id; } } foreach (BaseResource person in source) { person.Id = subjectUri; } return(source); }
public void PercentAscvdRiskLifetime_GivenValues_ReturnsCorrectRiskPercentage( GenderIdentity gender, double totalCholesterol, int systolicBloodPressure, bool hypertensionTreatment, bool diabetes, bool smoker, double expected) { _patient.Gender = Gender.Build(gender); _parametersBuilder .SetPatient(_patient) .SetBloodPressure(systolicBloodPressure, 75) .SetTotalCholesterol(totalCholesterol) .SetHdlCholesterol(50) .ConfirmDiabetic(diabetes) .ConfirmOnAntiHypertensiveMedication(hypertensionTreatment) .ConfirmSmoker(smoker); var lifetime = new PooledCohortsEquation(_parametersBuilder.Build()).AscvdLifetimeRiskPercentage; const double tolerance = 0.1; Assert.InRange(lifetime, expected - tolerance, expected + tolerance); }
public override BaseResource[] SynchronizeIds(BaseResource[] source, Uri subjectUri, BaseResource[] target) { Person mnisFormalBodyLayPerson = source.OfType <Person>().SingleOrDefault(); mnisFormalBodyLayPerson.Id = subjectUri; if (mnisFormalBodyLayPerson.PersonHasGenderIdentity != null) { GenderIdentity genderIdentity = target.OfType <GenderIdentity>().SingleOrDefault(); if (genderIdentity != null) { mnisFormalBodyLayPerson.PersonHasGenderIdentity.SingleOrDefault().Id = genderIdentity.Id; } } if (mnisFormalBodyLayPerson.PersonHasFormalBodyMembership != null) { FormalBodyMembership formalBodyMembership = target.OfType <FormalBodyMembership>().SingleOrDefault(); if (formalBodyMembership != null) { mnisFormalBodyLayPerson.PersonHasFormalBodyMembership.SingleOrDefault().Id = formalBodyMembership.Id; } } return(source); }
public void PercentAscvdRisk10Year_Given2013AccAhaSampleParams_ReturnsCorrectRiskPercentage(Race race, GenderIdentity genderIdentity, bool hypertensionTreatment, bool diabetes, bool smoker, double expected) { _patient.Gender = Gender.Build(genderIdentity); _patient.Race = race; _parametersBuilder .SetPatient(_patient) .ConfirmDiabetic(diabetes) .ConfirmOnAntiHypertensiveMedication(hypertensionTreatment) .ConfirmSmoker(smoker); var ascvd = new PooledCohortsEquation(_parametersBuilder.Build()).Ascvd10YearRiskPercentage; const double tolerance = 0.1; Assert.InRange(ascvd, expected - tolerance, expected + tolerance); }
//TODO: Cover PP, AP, AIx, RA, PWV public void Classification_GivenCentralSystolicValues_ReturnsCorrectCategory(int csp, int pp, int ap, int aix, int ra, double pwv, GenderIdentity genderIdentity, int age, CentralBloodPressureCategory expectctedCategory) { var cbp = new CentralBloodPressureBuilder() .SetCentralSystolicPressure(csp) .SetPulsePressure(pp) .SetAugmentedPressure(ap) .SetAugmentedIndex(aix) .SetReferenceAge(ra) .SetPulseWaveVelocity(pwv) .Build(); var patient = PatientBuilder.Initialize() .SetGender(GenderIdentity.Male) .SetDateOfBirth(DateTime.Now.AddYears(-age)) .BuildWithoutModelValidation(); var actualCategory = new CentralBloodPressureClassification(new CentralBloodPressureParameters(cbp, patient)).Classification .Category; Assert.Equal(expectctedCategory, actualCategory); }
public void Classification_GivenPushupCountAndPatient_ReturnsCorrectClassification(int count, GenderIdentity genderIdentity, int age, FitnessClassification expectedClassification) { var pushups = Pushups.Build(count); _patient.Gender = Gender.Build(genderIdentity); _patient.DateOfBirth = DateTime.Now.AddYears(-age); var classification = new PushupsClassification(new PushupsClassificationParameters(pushups, _patient)) .Classification; Assert.Equal(expectedClassification, classification); }
public PatientBuilder SetGender(GenderIdentity gender) { _gender = Gender.Build(gender); return(this); }
public static Gender Build(GenderIdentity category) { return(new Gender(category)); }
public static bool IsGenotypeXy(GenderIdentity gender) { return(!IsGenotypeXx(gender)); }
public static bool IsGenotypeXx(GenderIdentity gender) { return(gender == GenderIdentity.Female || gender == GenderIdentity.NonBinaryXx); }
public static Genotype GetGenotype(GenderIdentity category) { return(IsGenotypeXx(category) ? Genotype.Xx : Genotype.Xy); }
private Gender(GenderIdentity category) { Category = category; }
public void Classify_GivenBodyCompositionAndBodyFatPercent_ReturnsCorrectClassification(double percentBodyFat, GenderIdentity genderIdentity, PercentBodyFat expectedClassification) { _patient.Gender = Gender.Build(genderIdentity); var bce = BodyCompositionExpandedBuilder.Initialize() .SetBodyFatPercentage(percentBodyFat) .BuildWithoutModelValidation(); var classification = new PercentBodyFatClassification(new BodyCompositionExpandedClassificationParameters(bce, _patient)) .Classification; Assert.Equal(expectedClassification, classification); }
public void IdealPercentAscvdRisk10Year_Given2013AccAhaSampleParams_ReturnsCorrectRiskPercentage(Race race, GenderIdentity genderIdentity, double expected) { _patient.Gender = Gender.Build(genderIdentity); _patient.Race = race; _parametersBuilder .SetPatient(_patient) .SetBloodPressure(BloodPressure.Build(default(int), default(int))) .SetTotalCholesterol(default(int)) .SetHdlCholesterol(default(int)); var idealAscvd = new PooledCohortsEquation(_parametersBuilder.Build()).IdealAscvd10YearRiskPercentage; const double tolerance = 0.31; // Tolerance necessary because expected values are estimates. Assert.InRange(idealAscvd, expected - tolerance, expected + tolerance); }
public void Classification_GivenTreadmillAndPatientData_ReturnsCorrectClassification(GenderIdentity gender, int age, int maxHeartRate, double minutes, double seconds, FitTreadmillScoreMortality expectedClassification) { _patient.DateOfBirth = DateTime.Now.AddYears(-age); _patient.Gender = Gender.Build(gender); var tmst = TreadmillExerciseStressTestBuilder.Initialize() .SetMaximumHeartRate(maxHeartRate) .SetTime(minutes, seconds) .BuildWithoutModelValidation(); var classification = new FitTreadmillScoreClassification( new TreadmillExerciseStressTestClassificationParameters(tmst, _patient)).Classification; Assert.Equal(expectedClassification, classification); }
public void Classification_GivenHipToWaistRatioAndGender_ReturnsCorrectClassification(double ratio, GenderIdentity genderIdentity, HipToWaistRatio expectedClassifcation) { _patient.Gender = Gender.Build(genderIdentity); var bodyComposition = BodyCompositionBuilder.Initialize() .SetHips(1) .SetWaist(ratio) .BuildWithoutModelValidation(); var classification = new HipToWaistClassification(new BodyCompositionClassificationParameters(bodyComposition, _patient)) .Classification; Assert.Equal(expectedClassifcation, classification); }
public void QuantitativeLabTestosterone_GivenValues_ReturnsCorrectClassification(int result, GenderIdentity genderIdentity, QuantitativeLabResult expectedResult) { _patient.Gender = Gender.Build(genderIdentity); var test = Quantitative.Serum.TestosteroneTotal(result); var classification = new QuantitativeLabClassification(new QuantitativeLabClassificationParameters(test, _patient)) .Classification; Assert.Equal(expectedResult, classification); }