@openmrs/ngx-formentry 3.0.1-pre.62 → 3.0.1-pre.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1590,6 +1590,253 @@
1590
1590
  return QuestionBase;
1591
1591
  }());
1592
1592
 
1593
+ // South East Asia Non Laboratory CVD Risk Array of Arrays
1594
+ // Vertically we have the BMI value eg for the first array [26(bmi < 20), 28(bmi 20 - 24), 30(bmi 25 - 29), 32(bmi 30 - 35), 34(bmi >= 35)]
1595
+ var southEastAsiaCvdRiskTables = [
1596
+ // Men
1597
+ [
1598
+ // Non smoker
1599
+ [
1600
+ // Age 70 - 74
1601
+ [
1602
+ [26, 28, 30, 32, 34],
1603
+ [21, 23, 25, 26, 28],
1604
+ [17, 19, 20, 21, 23],
1605
+ [14, 15, 16, 17, 18],
1606
+ [11, 12, 13, 14, 15], // sbp < 120
1607
+ ],
1608
+ // Age 65 - 69
1609
+ [
1610
+ [20, 22, 24, 26, 28],
1611
+ [16, 17, 19, 21, 22],
1612
+ [12, 14, 15, 16, 18],
1613
+ [10, 11, 12, 13, 14],
1614
+ [8, 8, 9, 10, 11], // < 120
1615
+ ],
1616
+ // Age 60 - 64
1617
+ [
1618
+ [15, 17, 19, 21, 23],
1619
+ [12, 13, 14, 16, 18],
1620
+ [9, 10, 11, 12, 14],
1621
+ [7, 8, 8, 9, 10],
1622
+ [5, 6, 6, 7, 8], // sbp < 120
1623
+ ],
1624
+ // Age 55 - 59
1625
+ [
1626
+ [12, 13, 15, 16, 18],
1627
+ [9, 10, 11, 12, 14],
1628
+ [7, 7, 8, 9, 10],
1629
+ [5, 5, 6, 7, 8],
1630
+ [4, 4, 4, 5, 6], // sbp < 120
1631
+ ],
1632
+ // Age 50 - 54
1633
+ [
1634
+ [9, 10, 11, 13, 15],
1635
+ [7, 7, 8, 9, 11],
1636
+ [5, 5, 6, 7, 8],
1637
+ [3, 4, 4, 5, 6],
1638
+ [2, 3, 3, 4, 4], // sbp < 120
1639
+ ],
1640
+ // Age 45 - 49
1641
+ [
1642
+ [7, 8, 9, 10, 12],
1643
+ [5, 6, 6, 7, 8],
1644
+ [3, 4, 4, 5, 6],
1645
+ [2, 3, 3, 4, 4],
1646
+ [2, 2, 2, 2, 3], // < 120
1647
+ ],
1648
+ // Age 40 - 44
1649
+ [
1650
+ [5, 6, 7, 8, 10],
1651
+ [4, 4, 5, 6, 7],
1652
+ [2, 3, 3, 4, 4],
1653
+ [2, 2, 2, 3, 3],
1654
+ [1, 1, 2, 2, 2],
1655
+ ],
1656
+ ],
1657
+ // Smoker
1658
+ [
1659
+ // Age 70 - 74
1660
+ [
1661
+ [34, 36, 39, 41, 44],
1662
+ [28, 30, 32, 34, 36],
1663
+ [23, 24, 26, 28, 30],
1664
+ [18, 20, 21, 23, 24],
1665
+ [15, 16, 17, 18, 20], // < 120
1666
+ ],
1667
+ // Age 65 - 69
1668
+ [
1669
+ [28, 30, 33, 36, 39],
1670
+ [22, 24, 26, 29, 31],
1671
+ [18, 19, 21, 23, 25],
1672
+ [14, 15, 16, 18, 20],
1673
+ [11, 12, 13, 14, 16], // < 120
1674
+ ],
1675
+ // Age 60 - 64
1676
+ [
1677
+ [23, 25, 28, 31, 34],
1678
+ [18, 18, 20, 22, 24],
1679
+ [14, 15, 17, 19, 21],
1680
+ [10, 12, 13, 14, 16],
1681
+ [8, 9, 10, 11, 12], // < 120
1682
+ ],
1683
+ // Age 55 - 59
1684
+ [
1685
+ [19, 21, 24, 27, 30],
1686
+ [14, 16, 18, 20, 23],
1687
+ [11, 12, 13, 15, 17],
1688
+ [8, 9, 10, 11, 13],
1689
+ [6, 7, 7, 8, 10],
1690
+ ],
1691
+ // Age 50 - 54
1692
+ [
1693
+ [15, 18, 20, 23, 27],
1694
+ [11, 13, 15, 17, 20],
1695
+ [8, 9, 11, 12, 14],
1696
+ [6, 7, 8, 9, 11],
1697
+ [4, 5, 6, 7, 8],
1698
+ ],
1699
+ // Age 45 - 49
1700
+ [
1701
+ [13, 15, 17, 20, 23],
1702
+ [9, 10, 12, 14, 17],
1703
+ [6, 7, 9, 10, 12],
1704
+ [4, 5, 6, 7, 8],
1705
+ [3, 4, 4, 5, 6],
1706
+ ],
1707
+ // Age 40 - 44
1708
+ [
1709
+ [10, 12, 14, 17, 20],
1710
+ [7, 8, 10, 12, 14],
1711
+ [5, 6, 7, 8, 10],
1712
+ [3, 4, 5, 6, 7],
1713
+ [2, 3, 3, 4, 5],
1714
+ ],
1715
+ ],
1716
+ ],
1717
+ // Women
1718
+ [
1719
+ // Non smoker
1720
+ [
1721
+ // Age 70 -74
1722
+ [
1723
+ [21, 22, 22, 23, 24],
1724
+ [17, 18, 19, 19, 20],
1725
+ [15, 15, 16, 16, 17],
1726
+ [12, 12, 13, 13, 14],
1727
+ [10, 10, 11, 11, 11], // < 120
1728
+ ],
1729
+ // Age 65 - 69
1730
+ [
1731
+ [16, 17, 18, 18, 19],
1732
+ [13, 14, 14, 15, 15],
1733
+ [11, 11, 11, 12, 12],
1734
+ [9, 9, 9, 10, 10],
1735
+ [7, 7, 7, 8, 8],
1736
+ ],
1737
+ // Age 60 - 64
1738
+ [
1739
+ [13, 13, 14, 14, 15],
1740
+ [10, 10, 11, 11, 12],
1741
+ [8, 8, 8, 9, 9],
1742
+ [6, 6, 7, 7, 7],
1743
+ [5, 5, 5, 5, 6],
1744
+ ],
1745
+ // Age 55 - 59
1746
+ [
1747
+ [10, 10, 11, 11, 12],
1748
+ [8, 8, 8, 9, 9],
1749
+ [6, 6, 6, 7, 7],
1750
+ [4, 5, 5, 5, 5],
1751
+ [3, 3, 4, 4, 4],
1752
+ ],
1753
+ // Age 50 - 54
1754
+ [
1755
+ [8, 8, 8, 9, 9],
1756
+ [6, 6, 6, 7, 7],
1757
+ [4, 4, 5, 5, 5],
1758
+ [3, 3, 3, 4, 4],
1759
+ [2, 2, 3, 3, 3],
1760
+ ],
1761
+ // Age 45 - 49
1762
+ [
1763
+ [6, 6, 7, 7, 7],
1764
+ [4, 5, 5, 5, 5],
1765
+ [3, 3, 3, 4, 4],
1766
+ [2, 2, 2, 3, 3],
1767
+ [2, 2, 2, 2, 2],
1768
+ ],
1769
+ // Age 40 - 44
1770
+ [
1771
+ [5, 5, 5, 5, 6],
1772
+ [3, 3, 4, 4, 4],
1773
+ [2, 2, 3, 3, 3],
1774
+ [2, 2, 2, 2, 2],
1775
+ [1, 1, 1, 1, 1],
1776
+ ],
1777
+ ],
1778
+ // Smoker
1779
+ [
1780
+ // Age 70 - 74
1781
+ [
1782
+ [30, 31, 32, 33, 34],
1783
+ [25, 26, 27, 28, 29],
1784
+ [21, 22, 22, 23, 24],
1785
+ [17, 18, 19, 19, 20],
1786
+ [14, 15, 15, 16, 17],
1787
+ ],
1788
+ // Age 65 - 69
1789
+ [
1790
+ [25, 26, 27, 29, 30],
1791
+ [21, 22, 22, 23, 24],
1792
+ [17, 18, 18, 19, 20],
1793
+ [14, 14, 15, 15, 16],
1794
+ [11, 11, 12, 12, 13],
1795
+ ],
1796
+ // Age 60 - 64
1797
+ [
1798
+ [21, 22, 23, 25, 26],
1799
+ [17, 18, 19, 20, 21],
1800
+ [13, 14, 15, 16, 16],
1801
+ [11, 11, 12, 12, 13],
1802
+ [8, 9, 9, 10, 10],
1803
+ ],
1804
+ // Age 55 - 59
1805
+ [
1806
+ [18, 19, 20, 21, 22],
1807
+ [14, 15, 15, 16, 17],
1808
+ [11, 11, 12, 13, 13],
1809
+ [8, 9, 9, 10, 10],
1810
+ [6, 7, 7, 7, 8],
1811
+ ],
1812
+ // Age 50 - 54
1813
+ [
1814
+ [15, 16, 17, 18, 19],
1815
+ [11, 12, 13, 14, 14],
1816
+ [9, 9, 10, 10, 11],
1817
+ [6, 7, 7, 8, 8],
1818
+ [5, 5, 5, 6, 6],
1819
+ ],
1820
+ // Age 45 - 49
1821
+ [
1822
+ [13, 14, 14, 15, 16],
1823
+ [9, 10, 11, 11, 12],
1824
+ [7, 7, 8, 8, 9],
1825
+ [5, 5, 6, 6, 6],
1826
+ [4, 4, 4, 4, 5],
1827
+ ],
1828
+ // Age 40 - 44
1829
+ [
1830
+ [11, 11, 12, 13, 14],
1831
+ [8, 8, 9, 9, 10],
1832
+ [5, 6, 6, 7, 7],
1833
+ [4, 4, 4, 5, 5],
1834
+ [3, 3, 3, 3, 4],
1835
+ ],
1836
+ ],
1837
+ ],
1838
+ ];
1839
+
1593
1840
  var JsExpressionHelper = /** @class */ (function () {
1594
1841
  function JsExpressionHelper() {
1595
1842
  }
@@ -1743,6 +1990,19 @@
1743
1990
  }
1744
1991
  return height && weight && refSectionObject ? formattedSDValue : null;
1745
1992
  };
1993
+ JsExpressionHelper.prototype.calcSouthEastAsiaNonLabCVDRisk = function (sex, smoker, age, sbp, bmi) {
1994
+ // Bin functions
1995
+ var getAgeBin = function (age) { return Math.floor((Math.min(Math.max(40, age), 74) - 40) / 5); };
1996
+ var getSbpBin = function (sbp) { return Math.max(0, Math.floor((Math.min(sbp, 180) - 120) / 20) + 1); };
1997
+ var getBmiBin = function (bmi) { return Math.max(0, Math.floor((Math.min(bmi, 35) - 20) / 5) + 1); };
1998
+ // Variables
1999
+ var sexIdx = sex === 'M' ? 0 : 1;
2000
+ var smokerIdx = smoker ? 1 : 0;
2001
+ var ageIdx = 6 - getAgeBin(age);
2002
+ var bmiIdx = getBmiBin(bmi);
2003
+ var sbpIdx = 4 - getSbpBin(sbp);
2004
+ return southEastAsiaCvdRiskTables[sexIdx][smokerIdx][ageIdx][sbpIdx][bmiIdx];
2005
+ };
1746
2006
  JsExpressionHelper.prototype.isEmpty = function (val) {
1747
2007
  if (val === undefined ||
1748
2008
  val === null ||
@@ -1819,6 +2079,7 @@
1819
2079
  calcBMIForAgeZscore: helper.calcBMIForAgeZscore,
1820
2080
  calcWeightForHeightZscore: helper.calcWeightForHeightZscore,
1821
2081
  calcHeightForAgeZscore: helper.calcHeightForAgeZscore,
2082
+ calcSouthEastAsiaNonLabCVDRisk: helper.calcSouthEastAsiaNonLabCVDRisk,
1822
2083
  isEmpty: helper.isEmpty,
1823
2084
  arrayContains: helper.arrayContains,
1824
2085
  extractRepeatingGroupValues: helper.extractRepeatingGroupValues