コード例 #1
0
        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);
        }
コード例 #2
0
        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 });
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
ファイル: Names.cs プロジェクト: yskatsumata/dot-gimei
 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
     });
 }
コード例 #11
0
ファイル: Names.cs プロジェクト: yskatsumata/dot-gimei
 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
     };
 }
コード例 #12
0
        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);
        }
コード例 #14
0
        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);
        }
コード例 #15
0
        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);
        }
コード例 #16
0
        //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);
        }
コード例 #17
0
        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);
        }
コード例 #18
0
 public PatientBuilder SetGender(GenderIdentity gender)
 {
     _gender = Gender.Build(gender);
     return(this);
 }
コード例 #19
0
 public static Gender Build(GenderIdentity category)
 {
     return(new Gender(category));
 }
コード例 #20
0
 public static bool IsGenotypeXy(GenderIdentity gender)
 {
     return(!IsGenotypeXx(gender));
 }
コード例 #21
0
 public static bool IsGenotypeXx(GenderIdentity gender)
 {
     return(gender == GenderIdentity.Female || gender == GenderIdentity.NonBinaryXx);
 }
コード例 #22
0
 public static Genotype GetGenotype(GenderIdentity category)
 {
     return(IsGenotypeXx(category) ? Genotype.Xx : Genotype.Xy);
 }
コード例 #23
0
 private Gender(GenderIdentity category)
 {
     Category = category;
 }
コード例 #24
0
        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);
        }
コード例 #25
0
        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);
        }
コード例 #26
0
        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);
        }
コード例 #27
0
        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);
        }
コード例 #28
0
        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);
        }