diff --git a/lib/sympto/index.js b/lib/sympto/index.js index 575b608ea0a28f4235053d93839b607a9df5b737..96e2b49151ab9ae68130d1d969571694bce3a689 100644 --- a/lib/sympto/index.js +++ b/lib/sympto/index.js @@ -23,7 +23,8 @@ export default function getSymptoThermalStatus(cycleInfo) { if (statusForLast.temperatureShift) { const preOvuPhase = getPreOvulatoryPhase( cycle, - [previousCycle, ...earlierCycles] + [previousCycle, ...earlierCycles], + secondarySymptom ) if (preOvuPhase) { status.phases.preOvulatory = preOvuPhase diff --git a/lib/sympto/minus-8-day-rule.js b/lib/sympto/minus-8-day-rule.js index 2964b373b518fcbe5030d38558d601e73ce3cbe8..5a07d765b9a0852e725f0b06c58f621698f83d52 100644 --- a/lib/sympto/minus-8-day-rule.js +++ b/lib/sympto/minus-8-day-rule.js @@ -1,10 +1,10 @@ import { LocalDate } from 'js-joda' import getNfpStatus from './index' -export default function (previousCycles) { +export default function (previousCycles, secondarySymptom) { const fhms = previousCycles .map(cycle => { - const status = getNfpStatus({ cycle }) + const status = getNfpStatus({ cycle, secondarySymptom }) if (status.temperatureShift) { const day = status.temperatureShift.firstHighMeasurementDay const firstCycleDayDate = LocalDate.parse(cycle[0].date) diff --git a/lib/sympto/pre-ovulatory.js b/lib/sympto/pre-ovulatory.js index 874e2bc911958ca72137ebac1319866991c623ce..236eefdc0a283e604dde03e410c4a17ff91e67d0 100644 --- a/lib/sympto/pre-ovulatory.js +++ b/lib/sympto/pre-ovulatory.js @@ -1,10 +1,10 @@ import { LocalDate } from "js-joda" import apply8DayRule from './minus-8-day-rule' -export default function(cycle, previousCycles) { +export default function(cycle, previousCycles, secondarySymptom) { let preOvuPhaseLength = 5 - const minus8DayRuleResult = apply8DayRule(previousCycles) + const minus8DayRuleResult = apply8DayRule(previousCycles, secondarySymptom) if (minus8DayRuleResult) preOvuPhaseLength = minus8DayRuleResult const startDate = LocalDate.parse(cycle[0].date) @@ -12,7 +12,7 @@ export default function(cycle, previousCycles) { const maybePreOvuDays = cycle.slice(0, preOvuPhaseLength).filter(d => { return d.date <= preOvuEndDate }) - const preOvulatoryDays = getDaysUntilFertileSecondarySymptom(maybePreOvuDays) + const preOvulatoryDays = getDaysUntilFertileSecondarySymptom(maybePreOvuDays, secondarySymptom) // if fertile mucus or cervix occurs on the 1st cycle day, there is no pre-ovu phase if (!preOvulatoryDays.length) return null @@ -39,7 +39,8 @@ function getDaysUntilFertileSecondarySymptom(days, secondarySymptom = 'mucus') { if (secondarySymptom === 'mucus') { return day.mucus && day.mucus.value > 1 } else if (secondarySymptom === 'cervix') { - return day.cervix && !day.cervix.isClosedAndHard + return day.cervix && day.cervix.opening > 0 + || day.cervix && day.cervix.firmness > 0 } })