Separated Vitals and Body Fat form into Athletic Vitals and Athletic Body Fat.
[openemr.git] / sites / default / LBF / LBFathbf.plugin.php
blobecf68cb5d52cd7f2de353521c2bbd2f2bfb13c21
1 <?php
2 // Copyright (C) 2010-2011 Rod Roark <rod@sunsetsystems.com>
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 2
7 // of the License, or (at your option) any later version.
9 // This provides enhancement functions for the LBFathbf visit form,
10 // "Body Fat". It is invoked by interface/forms/LBF/new.php.
12 // The purpose of this function is to create JavaScript for the <head>
13 // section of the page. This in turn defines desired javaScript
14 // functions.
16 function LBFathbf_javascript() {
17 global $formid;
19 // Compute patient age and sex.
20 $ptrow = sqlQuery("SELECT DOB, sex FROM patient_data WHERE " .
21 "pid = '$pid' LIMIT 1");
22 $pt_age = 0 + getpatientAge($ptrow['DOB']);
23 $pt_sex = strtoupper(substr($ptrow['sex'], 0, 1)) == 'F' ? 1 : 0;
25 echo "// Compute Body Fat Percentage.
26 function athbfComputeBF() {
27 var f = document.forms[0];
28 var age = $pt_age; // Patient age in years
29 var sex = $pt_sex; // 0 = Male, 1 = Female
30 if (!f.form_sf_sum || !f.form_body_fat) return;
31 var sfsum = f.form_sf_sum.value;
32 if (sfsum != parseFloat(sfsum) || sfsum <= 0) {
33 f.form_body_fat.value = '';
34 return;
36 var d = 0;
37 var sflog = Math.LOG10E * Math.log(sfsum);
38 if (sex == 0) {
39 if (age < 17) d = 1.1533 - 0.0643 * sflog;
40 else if (age < 20) d = 1.1620 - 0.0630 * sflog;
41 else if (age < 30) d = 1.1631 - 0.0632 * sflog;
42 else if (age < 40) d = 1.1422 - 0.0544 * sflog;
43 else if (age < 50) d = 1.1620 - 0.0700 * sflog;
44 else d = 1.1715 - 0.0779 * sflog;
46 else {
47 if (age < 17) d = 1.1369 - 0.0598 * sflog;
48 else if (age < 20) d = 1.1549 - 0.0678 * sflog;
49 else if (age < 30) d = 1.1599 - 0.0717 * sflog;
50 else if (age < 40) d = 1.1423 - 0.0632 * sflog;
51 else if (age < 50) d = 1.1333 - 0.0612 * sflog;
52 else d = 1.1339 - 0.0645 * sflog;
54 var bf = 495 / d - 450;
55 f.form_body_fat.value = bf.toFixed(2);
59 echo "// Tally skin fold measurements.
60 function athbfSFChanged() {
61 var f = document.forms[0];
62 var sum = 0;
63 for (var i = 0; i < f.elements.length; ++i) {
64 var e = f.elements[i];
65 if (e.name.substring(0,8) == 'form_sf_' && e.name != 'form_sf_sum') {
66 if (e.value == parseFloat(e.value)) sum += parseFloat(e.value);
69 f.form_sf_sum.value = sum.toFixed(2);
70 athbfComputeBF();
76 // The purpose of this function is to create JavaScript that is run
77 // once when the page is loaded.
79 function LBFathbf_javascript_onload() {
81 echo "
82 var f = document.forms[0];
83 if (f.form_body_fat) {
84 f.form_body_fat.readOnly = true;
86 // More of the same, for skin folds.
87 if (f.form_sf_sum) {
88 f.form_sf_sum.readOnly = true;
89 for (var i = 0; i < f.elements.length; ++i) {
90 var e = f.elements[i];
91 if (e.name.substring(0,8) == 'form_sf_' && e.name != 'form_sf_sum') {
92 e.onchange = function () { athbfSFChanged(); };