12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import 'dart:math' as math;
- import 'package:fis_measure/configs/patient.dart';
- import 'package:fis_measure/interfaces/enums/species.dart';
- import 'package:fis_measure/utils/number.dart';
- class ObstetricsFormulas {
- ObstetricsFormulas._();
- static final IObstetricsFormulaStrategy _singleton =
- GlobalPatientConfig.speciesType != SpeciesType.mouseGeneral
- ? BaseObstetricsFormulas()
- : AnimalsObstetricsFormulas();
- static double gsMean(double d1, double d2, double d3) =>
- _singleton.gsMean(d1, d2, d3);
- static double gsMax(double d1, double d2, double d3) =>
- _singleton.gsMax(d1, d2, d3);
- }
- abstract class IObstetricsFormulaStrategy {
- double gsMean(double d1, double d2, double d3);
- double gsMax(double d1, double d2, double d3);
- }
- class BaseObstetricsFormulas implements IObstetricsFormulaStrategy {
- /// (D1 + D2 + D3)/3.0
- ///
- /// return Unit cm
- ///
- /// [d1] Unit cm
- ///
- /// [d2] Unit cm
- ///
- /// [d3] Unit cm
- @override
- double gsMean(double d1, double d2, double d3) {
- double mean = double.nan;
- if (!NumUtil.almostEquals(d1, 0) &&
- !NumUtil.almostEquals(d2, 0) &&
- !NumUtil.almostEquals(d3, 0)) {
- mean = (d1 + d2 + d3) / 3;
- }
- return mean;
- }
- ///Max(D1, D2, D3)
- @override
- double gsMax(double d1, double d2, double d3) {
- double max = double.nan;
- if (!(NumUtil.almostEquals(d1, 0) &&
- NumUtil.almostEquals(d2, 0) &&
- NumUtil.almostEquals(d3, 0))) {
- max = math.max(d1, math.max(d2, d3));
- }
- return max;
- }
- }
- class AnimalsObstetricsFormulas extends BaseObstetricsFormulas {}
|