]> Softwares of Agnibho - pdosage.git/commitdiff
Show dosage rate
authorAgnibho Mondal <mail@agnibho.com>
Sun, 11 Dec 2016 09:39:16 +0000 (15:09 +0530)
committerAgnibho Mondal <mail@agnibho.com>
Sun, 11 Dec 2016 09:39:16 +0000 (15:09 +0530)
27 files changed:
index.html
src/AboutView.vue
src/DataInput.vue
src/Dosage.js [new file with mode: 0644]
src/DrugView.vue
src/data/aciclovir.json
src/data/amikacin.json
src/data/amoxycillin_clavulinic_acid.json
src/data/cefixime.json
src/data/ceftriaxone.json
src/data/cefuroxime.json
src/data/diazepam.json [new file with mode: 0644]
src/data/domperidone.json
src/data/furosemide.json
src/data/hydroxyzine.json
src/data/levosalbutamol.json
src/data/ofloxacin.json
src/data/ondansetron.json
src/data/paracetamol.json
src/data/phenytoin.json [new file with mode: 0644]
src/data/prednisolone.json
src/data/ranitidine.json
src/data/valproate.json [new file with mode: 0644]
src/data/zinc.json
src/dosage.js [deleted file]
src/main.js
src/routine.js

index 517db77f07d30e97e77f044fd50a1fd658e8086b..b6a120322b5b26e73401a8d7e21c1031ec6aa6b6 100755 (executable)
@@ -68,7 +68,7 @@
            <div class="text-primary">
                <div class="jumbotron">
                    <h1>PDosage</h1>
            <div class="text-primary">
                <div class="jumbotron">
                    <h1>PDosage</h1>
-                   <h2>Pediatric Dose Calculator</h2>
+                   <h2>Drug Dose Calculator</h2>
                </div>
            </div>
            <div class="row" id="app">
                </div>
            </div>
            <div class="row" id="app">
index 72dc6c6cda6dcb6b2fca8bf6fcf018c765a7cd80..82994b18fca7883a04bbdcabc6c7f2c4954531b5 100644 (file)
        <div class="col-md-6 col-md-offset-3">
            <div class="panel panel-default">
                <div class="panel-heading">
        <div class="col-md-6 col-md-offset-3">
            <div class="panel panel-default">
                <div class="panel-heading">
-                   <h3>About PDosage</h3>
+                   <h3>About PDosage <span class="version"></span></h3>
                </div>
                <div class="panel-body">
                    <p>PDosage is a web application for calculating dosage of some commonly used drugs. Although it's primarily designed for the practice of Pediatrics, it also provides adult doses of drugs, making it useful for other disciplines too.</p>
                    <p>PDosage is written in Javascript.</p>
                </div>
                <div class="panel-body">
                    <p>PDosage is a web application for calculating dosage of some commonly used drugs. Although it's primarily designed for the practice of Pediatrics, it also provides adult doses of drugs, making it useful for other disciplines too.</p>
                    <p>PDosage is written in Javascript.</p>
+                   <p>App Version: <span class="version"></span></p>
+                   <p>Data version: <span class="data-ver"></span></p>
                    <p>Copyright &copy; <span class="copyright" data-start="2016">2016</span> Agnibho Mondal</p>
                    <p>E-mail: mail@agnibho.com</p>
                </div>
                    <p>Copyright &copy; <span class="copyright" data-start="2016">2016</span> Agnibho Mondal</p>
                    <p>E-mail: mail@agnibho.com</p>
                </div>
index 9ac78aafb6a2cbb8ec99636ac0dfd052338e4782..4b21cf2d8ea665adb5531425b5655aa352fe713e 100644 (file)
      props:["patient"],
      data:function(){
         return{
      props:["patient"],
      data:function(){
         return{
-            inWt: "",
-            inAgeY: "",
-            inAgeM: "",
-            inAgeD: ""
+            inWt: this.patient.wt,
+            inAgeY: this.patient.age.y,
+            inAgeM: this.patient.age.m,
+            inAgeD: this.patient.age.d
         }
      },
      watch: {
         }
      },
      watch: {
diff --git a/src/Dosage.js b/src/Dosage.js
new file mode 100644 (file)
index 0000000..672ea52
--- /dev/null
@@ -0,0 +1,220 @@
+/**********************************************************************
+ * Title: PDosage
+ * Description: Pediatric Calculator
+ * Author: Agnibho Mondal
+ * Website: http://code.agnibho.com
+ **********************************************************************
+   Copyright (c) 2016 Agnibho Mondal
+   All rights reserved
+ **********************************************************************
+   This file is part of PDosage.
+   
+   PDosage is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
+   PDosage is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with PDosage. If not, see <http://www.gnu.org/licenses/>.
+ **********************************************************************/
+
+export default function Dosage(data){
+
+    Object.defineProperty(data, "prop", {
+       writable: false
+    });
+
+    this.get=function(){
+       return data;
+    }
+
+    this.listDrugs=function(){
+       var list=data.map(function(obj){
+           return obj.name;
+       });
+       return list;
+    }
+
+    this.getDrug=function(name, patient){
+       if(this.listDrugs().indexOf(name)==-1){
+           return null;
+       }
+       var drug=JSON.parse(JSON.stringify(data.filter(extract)[0]));
+       function extract(obj){
+           return (obj.name == name);
+       }
+       for(var i=0; i<drug.form.length; i++){
+           drug.form[i]=calculateDose(drug.form[i], patient);
+       }
+       return drug;
+    }
+
+    function calculateDose(form, patient){
+       while(form.hasOwnProperty("range")){
+           var res=isolateRange(form, patient);
+           delete form.range;
+           if(res!=null){
+               if(res.hasOwnProperty("range")){
+                   form.range=res.range;
+               }
+               else{
+                   form.dose=res.dose;
+               }
+           }
+       }
+       if(form.dose){
+           form.dose=[].concat(form.dose);
+           for(var i=0; i<form.dose.length; i++){
+               if(form.dose[i].hasOwnProperty("val")){
+                   form.dose[i].val=[].concat(form.dose[i].val);
+               }
+               else if(form.dose[i].hasOwnProperty("perKg")){
+                   form.dose[i].perKg=[].concat(form.dose[i].perKg);
+                   form.dose[i].val=[];
+                   form.dose[i].val[0]=Math.round(parseFloat(form.dose[i].perKg[0])*parseFloat(patient.wt)*100)/100;
+                   form.dose[i].val[1]=Math.round(parseFloat(form.dose[i].perKg[1])*parseFloat(patient.wt)*100)/100;
+                   form.dose[i]=setLimit(form.dose[i]);
+               }
+               else if(form.dose[i].hasOwnProperty("approx")){
+                   form.dose[i].val=[];
+                   form.dose[i].val=findApprox(form.dose[i].approx);
+                   form.dose[i]=setLimit(form.dose[i]);
+               }
+               else if(form.dose[i].hasOwnProperty("eq")){
+                   form.dose[i].eq=[].concat(form.dose[i].eq);
+                   form.dose[i].val=[];
+                   form.dose[i].val[0]=solveEq(form.dose[i].eq[0]);
+                   form.dose[i].val[1]=solveEq(form.dose[i].eq[1]);
+                   form.dose[i]=setLimit(form.dose[i]);
+               }
+               else{
+                   form.dose[i].val=[];
+                   form.dose[i].val[0]=null;
+                   form.dose[i].val[1]=null;
+               }
+           }
+       }
+       return form;
+
+       function isolateRange(form, patient){
+           var min=0;
+           var max=0;
+           var type="";
+           if(patient.age.y===null && patient.age.m===null && patient.age.d===null){
+               return null;
+           }
+           var pDays=patient.age.y*365+patient.age.m*30+patient.age.d;
+           for(var i=0; i<form.range.length; i++){
+               if(form.range[i].hasOwnProperty("min")){
+                   if(form.range[i].min.indexOf("kg")!=-1){
+                       min=form.range[i].min.slice(0, str.indexOf("kg"));
+                       type="wt";
+                   }
+                   else{
+                       min=strToDays(form.range[i].min);
+                       type="age";
+                   }
+               }
+               else{
+                   min=0;
+               }
+               if(form.range[i].hasOwnProperty("max")){
+                   if(form.range[i].max.indexOf("kg")!=-1){
+                       max=form.range[i].max.slice(0, str.indexOf("kg"));
+                       type="wt";
+                   }
+                   else{
+                       max=strToDays(form.range[i].max);
+                       type="age";
+                   }
+               }
+               else{
+                   max=Infinity;
+               }
+               if(type=="wt"){
+                   if(patient.wt>=min && patient.wt<max){
+                       return form.range[i];
+                   }
+               }
+               else if(type=="age"){
+                   if(pDays>=min && pDays<max){
+                       return form.range[i];
+                   }
+               }
+           }
+           return null;
+
+           function strToDays(str){
+               var age={y: 0, m: 0, d: 0};
+               var days=0;
+               str=str.replace(/\s+/g, "");
+               if(str.indexOf("y")!=-1){
+                   age.y=str.slice(0, str.indexOf("y"));
+                   str=str.slice(str.indexOf("y", -1));
+               }
+               if(str.indexOf("m")!=-1){
+                   age.m=str.slice(0, str.indexOf("m"));
+                   str=str.slice(str.indexOf("m", -1));
+               }
+               if(str.indexOf("d")!=-1){
+                   age.d=str.slice(0, str.indexOf("d"));
+                   str=str.slice(str.indexOf("d", -1));
+               }
+               days=age.y*365+age.m*30+age.d;
+               return days;
+           }
+       }
+
+       function findApprox(arr){
+           var ret=[];
+           arr[0]=arr[0]/2;
+           for(var i=1; i<arr.length; i++){
+               arr[i]=solveEq(arr[i]);
+               ret[i-1]=Math.round(arr[i]/arr[0])/2;
+           }
+           if(!ret[0] || (ret[0]==ret[1])){
+               ret[0]=ret[1];
+               ret[1]=null;
+           }
+           return ret;
+       }
+
+       function solveEq(str){
+           var bw=parseFloat(patient.wt);
+           var ageY=patient.age.y;
+           var ageM=ageY*12+patient.age.m;
+           var ageD=ageM*30+patient.age.d;
+           var ret=eval(str);
+           ret=Math.round(ret*100)/100;
+           return ret;
+       }
+
+       function setLimit(dose){
+           if(dose.adult && dose.val){
+               if(dose.val[0]>dose.adult[0]){
+                   dose.val[0]=dose.adult[0];
+               }
+               if(dose.val[1]>dose.adult[1]){
+                   dose.val[1]=dose.adult[1];
+               }
+           }
+           if(dose.limit && dose.val){
+               if(dose.val[0]>dose.limit[0]){
+                   dose.val[0]=dose.limit[0];
+               }
+               if(dose.val[1]>dose.limit[1]){
+                   dose.val[1]=dose.limit[1];
+               }
+           }
+           if(dose.val[1]==dose.val[0]){
+               dose.val[1]=null;
+           }
+           return dose;
+       }
+    }
+}
index 3ba592829660d333edbd6ace663b67f84a52196a..6bcf5cedf2201d06d1fe977e023041f80446c221 100644 (file)
                                            <template v-for="i in item.dose">
                                                <template v-if="i.val[0]">
                                                    <tr>
                                            <template v-for="i in item.dose">
                                                <template v-if="i.val[0]">
                                                    <tr>
-                                                       <td class="active">Dose:</td>
-                                                       <td>{{i.val[0]}}<span v-if="i.val[1]"> - {{i.val[1]}}</span> {{i.unit}} </td>
+                                                       <td class="active" rowspan="2">Dose:</td>
+                                                       <td>{{i.val[0]}}<span v-if="i.val[1]"> - {{i.val[1]}}</span> {{i.unit}}</td>
                                                        <td><span v-if="i.txt">{{i.txt}}</span><span v-else>per dose</span></td>
                                                        <td><span v-if="i.txt">{{i.txt}}</span><span v-else>per dose</span></td>
-                                                       <td v-if="i.comment">{{i.comment}}</td>
+                                                   </tr>
+                                                   <tr>
+                                                       <td><template v-if="i.perKg && (!i.limit || i.limit[0]!=i.val[0] || i.limit[1]!=i.val[1])">
+                                                           <template v-if="i.perKg">
+                                                               <span v-if="i.perKg[0]">( {{i.perKg[0]}}<span v-if="i.perKg[1]">-{{i.perKg[1]}}</span> {{i.unit}}/kg</span>
+                                                               <template v-if="i.adult">
+                                                                   ; Adult: {{i.adult[0]}}<span v-if="i.adult[1] && i.adult[1]!=i.adult[0]">-{{i.adult[1]}}</span> {{i.unit}}
+                                                               </template>
+                                                               <template v-if="i.limit">
+                                                                   ; Limit: {{i.limit[0]}}<span v-if="i.limit[1] && i.limit[1]!=i.limit[0]">-{{i.limit[1]}}</span> {{i.unit}}
+                                                               </template>
+                                                               )
+                                                           </template>
+                                                       </td>
+                                                       <td><span v-if="i.comment">{{i.comment}}</span></td>
                                                    </tr>
                                                </template>
                                            </template>
                                                    </tr>
                                                </template>
                                            </template>
index e854d8324668847c55f76fa16cdeb40af729475b..770af2d94accc043585e146b0f48ac0a4c19c7ff 100644 (file)
@@ -9,7 +9,7 @@
                    "min": "2y",
                    "dose": {
                        "perKg": 80,
                    "min": "2y",
                    "dose": {
                        "perKg": 80,
-                       "limit": [
+                       "adult": [
                            3200,
                            3200
                        ],
                            3200,
                            3200
                        ],
@@ -28,7 +28,7 @@
                    "min": "2y",
                    "dose": {
                        "perKg": 80,
                    "min": "2y",
                    "dose": {
                        "perKg": 80,
-                       "limit": [
+                       "adult": [
                            3200,
                            3200
                        ],
                            3200,
                            3200
                        ],
index 8c3e6e6e29f650a737ae2188649c1f5999952b98..f3c9ce232fec1a37866f3cd206118196415eac3e 100644 (file)
@@ -9,7 +9,7 @@
                    15,
                    20
                ],
                    15,
                    20
                ],
-               "limit": [
+               "adult": [
                    1500,
                    1500
                ],
                    1500,
                    1500
                ],
@@ -27,7 +27,7 @@
                    "15*bw",
                    "20*bw"
                ],
                    "15*bw",
                    "20*bw"
                ],
-               "limit": [
+               "adult": [
                    15,
                    15
                ],
                    15,
                    15
                ],
@@ -45,7 +45,7 @@
                    "15*bw",
                    "20*bw"
                ],
                    "15*bw",
                    "20*bw"
                ],
-               "limit": [
+               "adult": [
                    6,
                    6
                ],
                    6,
                    6
                ],
@@ -63,7 +63,7 @@
                    "15*bw",
                    "20*bw"
                ],
                    "15*bw",
                    "20*bw"
                ],
-               "limit": [
+               "adult": [
                    3,
                    3
                ],
                    3,
                    3
                ],
index 87e319b8d7ca891699aaf19b91ad481e73f4914a..32f1e4d23c3e754284d5bc495cef8a3cbb2c9975 100644 (file)
@@ -9,7 +9,7 @@
                    25,
                    50
                ],
                    25,
                    50
                ],
-               "limit": [
+               "adult": [
                    250,
                    500
                ],
                    250,
                    500
                ],
@@ -25,7 +25,7 @@
                    50,
                    100
                ],
                    50,
                    100
                ],
-               "limit": [
+               "adult": [
                    1200,
                    1200
                ],
                    1200,
                    1200
                ],
@@ -42,7 +42,7 @@
                    "25*bw",
                    "50*bw"
                ],
                    "25*bw",
                    "50*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
@@ -59,7 +59,7 @@
                    "25*bw",
                    "50*bw"
                ],
                    "25*bw",
                    "50*bw"
                ],
-               "limit": [
+               "adult": [
                    0.5,
                    1
                ],
                    0.5,
                    1
                ],
@@ -75,7 +75,7 @@
                    1,
                    2
                ],
                    1,
                    2
                ],
-               "limit": [
+               "adult": [
                    10,
                    20
                ],
                    10,
                    20
                ],
@@ -92,7 +92,7 @@
                    "50*bw",
                    "100*bw"
                ],
                    "50*bw",
                    "100*bw"
                ],
-               "limit": [
+               "adult": [
                    8,
                    8
                ],
                    8,
                    8
                ],
                    "50*bw",
                    "100*bw"
                ],
                    "50*bw",
                    "100*bw"
                ],
-               "limit": [
+               "adult": [
                    4,
                    4
                ],
                    4,
                    4
                ],
                    "50*bw",
                    "100*bw"
                ],
                    "50*bw",
                    "100*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    2
                ],
                    2,
                    2
                ],
                    "50*bw",
                    "100*bw"
                ],
                    "50*bw",
                    "100*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    1
                ],
                    1,
                    1
                ],
index 21e05ff64b23ec55d09bb0ed7026fa49bc12d87b..58f6006c000954bb831629ec4af030adf191e1c8 100644 (file)
@@ -6,7 +6,7 @@
            "gen": true,
            "dose": {
                "perKg": 8,
            "gen": true,
            "dose": {
                "perKg": 8,
-               "limit": [
+               "adult": [
                    400,
                    400
                ],
                    400,
                    400
                ],
@@ -19,7 +19,7 @@
            "gen": true,
            "dose": {
                "perKg": 20,
            "gen": true,
            "dose": {
                "perKg": 20,
-               "limit": [
+               "adult": [
                    400,
                    400
                ],
                    400,
                    400
                ],
@@ -36,7 +36,7 @@
                    50,
                    "8*bw"
                ],
                    50,
                    "8*bw"
                ],
-               "limit": [
+               "adult": [
                    8,
                    8
                ],
                    8,
                    8
                ],
@@ -52,7 +52,7 @@
                    100,
                    "8*bw"
                ],
                    100,
                    "8*bw"
                ],
-               "limit": [
+               "adult": [
                    4,
                    4
                ],
                    4,
                    4
                ],
@@ -68,7 +68,7 @@
                    200,
                    "8*bw"
                ],
                    200,
                    "8*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    2
                ],
                    2,
                    2
                ],
@@ -84,7 +84,7 @@
                    400,
                    "8*bw"
                ],
                    400,
                    "8*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    1
                ],
                    1,
                    1
                ],
@@ -97,7 +97,7 @@
            "content": "100mg/5ml",
            "dose": {
                "perKg": 0.4,
            "content": "100mg/5ml",
            "dose": {
                "perKg": 0.4,
-               "limit": [
+               "adult": [
                    20,
                    20
                ],
                    20,
                    20
                ],
index 39bcb207c45c417f88f0a179a265418f692b1b86..38e58edc14d7ae0ba7923f7d7b89f33318ab8752 100644 (file)
@@ -9,7 +9,7 @@
                    50,
                    75
                ],
                    50,
                    75
                ],
-               "limit": [
+               "adult": [
                    1000,
                    1000
                ],
                    1000,
                    1000
                ],
        },
        {
            "mode": "Inj",
        },
        {
            "mode": "Inj",
+           "gen": true,
            "dose": {
                "perKg": 50,
            "dose": {
                "perKg": 50,
-               "limit": [
+               "adult": [
                    1000,
                    1000
                ],
                    1000,
                    1000
                ],
@@ -32,6 +33,7 @@
        },
        {
            "mode": "Inj",
        },
        {
            "mode": "Inj",
+           "gen": true,
            "range": [
                {
                    "max": "1y",
            "range": [
                {
                    "max": "1y",
@@ -40,7 +42,7 @@
                            25,
                            50
                        ],
                            25,
                            50
                        ],
-                       "limit": [
+                       "adult": [
                            125,
                            125
                        ],
                            125,
                            125
                        ],
        },
        {
            "mode": "Inj",
        },
        {
            "mode": "Inj",
+           "gen": true,
            "dose": {
                "val": 125,
                "unit": "mg",
                "txt": "single IM",
                "comment": "prophylaxis for N. meningitidis."
            }
            "dose": {
                "val": 125,
                "unit": "mg",
                "txt": "single IM",
                "comment": "prophylaxis for N. meningitidis."
            }
+       },
+       {
+           "mode": "Inj",
+           "content": "125mg",
+           "dose": {
+               "approx": [
+                   125,
+                   "50*bw",
+                   "75*bw"
+               ],
+               "adult": [
+                   8,
+                   8
+               ],
+               "unit": "vial",
+               "txt": ""
+           }
+       },
+       {
+           "mode": "Inj",
+           "content": "250mg",
+           "dose": {
+               "approx": [
+                   250,
+                   "50*bw",
+                   "75*bw"
+               ],
+               "adult": [
+                   4,
+                   4
+               ],
+               "unit": "vial",
+               "txt": ""
+           }
+       },
+       {
+           "mode": "Inj",
+           "content": "500mg",
+           "dose": {
+               "approx": [
+                   500,
+                   "50*bw",
+                   "75*bw"
+               ],
+               "adult": [
+                   2,
+                   2
+               ],
+               "unit": "vial",
+               "txt": ""
+           }
+       },
+       {
+           "mode": "Inj",
+           "content": "1000mg",
+           "dose": {
+               "approx": [
+                   1000,
+                   "50*bw",
+                   "75*bw"
+               ],
+               "adult": [
+                   1,
+                   1
+               ],
+               "unit": "vial",
+               "txt": ""
+           }
        }
     ]
 }
        }
     ]
 }
index 1e9b49b4cf595d00e9bc8ec0ab08c20bd50d442a..4bcf877c37156259a43937ca651a37b2415c654c 100644 (file)
@@ -9,7 +9,7 @@
                    20,
                    30
                ],
                    20,
                    30
                ],
-               "limit": [
+               "adult": [
                    500,
                    1000
                ],
                    500,
                    1000
                ],
@@ -22,7 +22,7 @@
            "gen": true,
            "dose": {
                "perKg": 40,
            "gen": true,
            "dose": {
                "perKg": 40,
-               "limit": [
+               "adult": [
                    500,
                    1000
                ],
                    500,
                    1000
                ],
@@ -39,7 +39,7 @@
                    100,
                    150
                ],
                    100,
                    150
                ],
-               "limit": [
+               "adult": [
                    2250,
                    2250
                ],
                    2250,
                    2250
                ],
@@ -71,7 +71,7 @@
                    "20*bw",
                    "30*bw"
                ],
                    "20*bw",
                    "30*bw"
                ],
-               "limit": [
+               "adult": [
                    4,
                    8
                ],
                    4,
                    8
                ],
@@ -88,7 +88,7 @@
                    "20*bw",
                    "30*bw"
                ],
                    "20*bw",
                    "30*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    4
                ],
                    2,
                    4
                ],
                    "20*bw",
                    "30*bw"
                ],
                    "20*bw",
                    "30*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
                    0.8,
                    1.2
                ],
                    0.8,
                    1.2
                ],
-               "limit": [
+               "adult": [
                    20,
                    40
                ],
                    20,
                    40
                ],
                    "100*bw",
                    "150*bw"
                ],
                    "100*bw",
                    "150*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    4
                ],
                    2,
                    4
                ],
diff --git a/src/data/diazepam.json b/src/data/diazepam.json
new file mode 100644 (file)
index 0000000..3d792cc
--- /dev/null
@@ -0,0 +1,110 @@
+{
+    "name": "Diazepam",
+    "form": [
+       {
+           "mode": "Inj",
+           "gen": true,
+           "range": [
+               {
+                   "max": "1m",
+                   "dose": [
+                       {
+                           "val": [
+                               1,
+                               5
+                           ],
+                           "unit": "mg",
+                           "txt": "slow IV for Neonatal Tetanus, max 2mg/kg, every 2-4 hrs alternating with Chlorpromazine."
+                       },
+                       {
+                           "perKg": [
+                               15,
+                               40
+                           ],
+                           "unit": "mg",
+                           "txt": "per day continuous infusion for Neonatal Tetanus."
+                       }
+                   ]
+               },
+               {
+                   "min": "1m",
+                   "max": "5y",
+                   "dose": {
+                       "perKg": [
+                           0.2,
+                           0.5
+                       ],
+                       "limit": [
+                           5,
+                           5
+                       ],
+                       "unit": "mg",
+                       "txt": "IV or IM as anti-convulsant, maybe repeated q 3-5 mins"
+                   }
+               },
+               {
+                   "min": "5y",
+                   "dose": {
+                       "perKg": [
+                           0.2,
+                           0.5
+                       ],
+                       "limit": [
+                           10,
+                           10
+                       ],
+                       "unit": "mg",
+                       "txt": "IV or IM as anti-convulsant, maybe repeated q 3-5 mins"
+                   }
+               }
+           ]
+       },
+       {
+           "mode": "Oral/IV/IM",
+           "gen": true,
+           "range": [
+               {
+                   "max": "12y",
+                   "dose": {
+                       "perKg": [
+                           0.1,
+                           0.2
+                       ],
+                       "unit": "mg",
+                       "txt": ""
+                   }
+               },
+               {
+                   "min": "12y",
+                   "dose": [
+                       {
+                           "val": [
+                               2,
+                               10
+                           ],
+                           "unit": "mg",
+                           "txt": "per day for anxiety"
+                       },
+                       {
+                           "val": [
+                               5,
+                               10
+                           ],
+                           "unit": "mg",
+                           "txt": "at bedtime for Insomnia"
+                       },
+                       {
+                           "val": [
+                               10,
+                               30
+                           ],
+                           "unit": "mg",
+                           "txt": "for muscle spasms & premedication"
+                       }
+                   ]
+               }
+           ]
+       }
+    ],
+    "comment": "Available forms- Tab 2mg,5mg,10mg; Syr 2mg/5ml; Inj 10mg/2ml; Rectal sol 2mg/ml,5mg/5ml; Suppository 2.5mg,5mg"
+}
index 798262cdabdfffbf45bdf388bbe3597c85ef9d34..95f9d558f2465aa8ed6ae9d2d016ca07cc26f1a4 100644 (file)
@@ -9,7 +9,7 @@
                    0.2,
                    0.4
                ],
                    0.2,
                    0.4
                ],
-               "limit": [
+               "adult": [
                    10,
                    20
                ],
                    10,
                    20
                ],
@@ -26,7 +26,7 @@
                    "0.2*bw",
                    "0.4*bw"
                ],
                    "0.2*bw",
                    "0.4*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
@@ -43,7 +43,7 @@
                    "0.2*bw",
                    "0.4*bw"
                ],
                    "0.2*bw",
                    "0.4*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    4
                ],
                    2,
                    4
                ],
@@ -59,7 +59,7 @@
                    0.2,
                    0.4
                ],
                    0.2,
                    0.4
                ],
-               "limit": [
+               "adult": [
                    10,
                    20
                ],
                    10,
                    20
                ],
@@ -75,7 +75,7 @@
                    0.02,
                    0.04
                ],
                    0.02,
                    0.04
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
index 8e6b8f4bf4e509d6a7cc273b644b8ade097c8835..daddab8848f6a028e03cf214693cc483a1eec01c 100644 (file)
@@ -10,7 +10,7 @@
                        2,
                        6
                    ],
                        2,
                        6
                    ],
-                   "limit": [
+                   "adult": [
                        40,
                        80
                    ],
                        40,
                        80
                    ],
@@ -22,7 +22,7 @@
                        1,
                        2
                    ],
                        1,
                        2
                    ],
-                   "limit": [
+                   "adult": [
                        40,
                        80
                    ],
                        40,
                        80
                    ],
@@ -53,7 +53,7 @@
                    1,
                    3
                ],
                    1,
                    3
                ],
-               "limit": [
+               "adult": [
                    20,
                    40
                ],
                    20,
                    40
                ],
@@ -70,7 +70,7 @@
                    2,
                    6
                ],
                    2,
                    6
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
@@ -86,7 +86,7 @@
                    0.2,
                    0.6
                ],
                    0.2,
                    0.6
                ],
-               "limit": [
+               "adult": [
                    4,
                    8
                ],
                    4,
                    8
                ],
index 7e7f30595391a241b6003fb63b4caca97260e869..4bad040567f222f621ace7190208233f69669dd7 100644 (file)
@@ -9,7 +9,7 @@
                    "min": "6m",
                    "dose": {
                        "perKg": 2,
                    "min": "6m",
                    "dose": {
                        "perKg": 2,
-                       "limit": [
+                       "adult": [
                            50,
                            200
                        ],
                            50,
                            200
                        ],
@@ -30,7 +30,7 @@
                            0.5,
                            1
                        ],
                            0.5,
                            1
                        ],
-                       "limit": [
+                       "adult": [
                            50,
                            200
                        ],
                            50,
                            200
                        ],
@@ -51,7 +51,7 @@
                            10,
                            "2*bw"
                        ],
                            10,
                            "2*bw"
                        ],
-                       "limit": [
+                       "adult": [
                            5,
                            20
                        ],
                            5,
                            20
                        ],
@@ -72,7 +72,7 @@
                            25,
                            "2*bw"
                        ],
                            25,
                            "2*bw"
                        ],
-                       "limit": [
+                       "adult": [
                            2,
                            8
                        ],
                            2,
                            8
                        ],
@@ -90,7 +90,7 @@
                    "min": "6m",
                    "dose": {
                        "perKg": 1,
                    "min": "6m",
                    "dose": {
                        "perKg": 1,
-                       "limit": [
+                       "adult": [
                            25,
                            100
                        ],
                            25,
                            100
                        ],
                    "min": "6m",
                    "dose": {
                        "perKg": 0.33,
                    "min": "6m",
                    "dose": {
                        "perKg": 0.33,
-                       "limit": [
+                       "adult": [
                            8.33,
                            33.33
                        ],
                            8.33,
                            33.33
                        ],
                            0.02,
                            0.04
                        ],
                            0.02,
                            0.04
                        ],
-                       "limit": [
+                       "adult": [
                            2,
                            8
                        ],
                            2,
                            8
                        ],
index 72a579cf87400a62622c198f5ad664c82b5888cf..b3479382e1373790f908c8a19ca9da791d1f7e0a 100644 (file)
@@ -9,7 +9,7 @@
                    0.05,
                    0.2
                ],
                    0.05,
                    0.2
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
@@ -26,7 +26,7 @@
                    "0.05*bw",
                    "0.2*bw"
                ],
                    "0.05*bw",
                    "0.2*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
@@ -43,7 +43,7 @@
                    "0.05*bw",
                    "0.2*bw"
                ],
                    "0.05*bw",
                    "0.2*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
@@ -59,7 +59,7 @@
                    0.25,
                    1
                ],
                    0.25,
                    1
                ],
-               "limit": [
+               "adult": [
                    5,
                    10
                ],
                    5,
                    10
                ],
@@ -75,7 +75,7 @@
                    0.5,
                    2
                ],
                    0.5,
                    2
                ],
-               "limit": [
+               "adult": [
                    10,
                    20
                ],
                    10,
                    20
                ],
index 908a55616b234ec1d2b2f6c74a2d6cd7320c1fce..ef030328b7c7adeab7dbe3e6a46fcd49f09696cc 100644 (file)
@@ -6,7 +6,7 @@
            "gen": true,
            "dose": {
                "perKg": 15,
            "gen": true,
            "dose": {
                "perKg": 15,
-               "limit": [
+               "adult": [
                    400,
                    800
                ],
                    400,
                    800
                ],
@@ -22,7 +22,7 @@
                    5,
                    10
                ],
                    5,
                    10
                ],
-               "limit": [
+               "adult": [
                    400,
                    800
                ],
                    400,
                    800
                ],
@@ -38,7 +38,7 @@
                    100,
                    "15*bw"
                ],
                    100,
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    4,
                    8
                ],
                    4,
                    8
                ],
@@ -54,7 +54,7 @@
                    200,
                    "15*bw"
                ],
                    200,
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    4
                ],
                    2,
                    4
                ],
@@ -70,7 +70,7 @@
                    400,
                    "15*bw"
                ],
                    400,
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
@@ -83,7 +83,7 @@
            "content": "100mg/5ml",
            "dose": {
                "perKg": 0.75,
            "content": "100mg/5ml",
            "dose": {
                "perKg": 0.75,
-               "limit": [
+               "adult": [
                    20,
                    40
                ],
                    20,
                    40
                ],
@@ -99,7 +99,7 @@
                    2.5,
                    5
                ],
                    2.5,
                    5
                ],
-               "limit": [
+               "adult": [
                    200,
                    400
                ],
                    200,
                    400
                ],
                    1.25,
                    2.5
                ],
                    1.25,
                    2.5
                ],
-               "limit": [
+               "adult": [
                    100,
                    200
                ],
                    100,
                    200
                ],
index e2cadfeb2ee3fedcf04a7f34fce91632fdddf25b..659bb5e73ee417755a52bc342e4d9bad53325273 100644 (file)
@@ -47,7 +47,7 @@
                            0.15,
                            0.45
                        ],
                            0.15,
                            0.45
                        ],
-                       "limit": [
+                       "adult": [
                            8,
                            8
                        ],
                            8,
                            8
                        ],
@@ -59,7 +59,7 @@
        },
        {
            "mode": "Tab",
        },
        {
            "mode": "Tab",
-           "content": "4",
+           "content": "4mg",
            "range": [
                {
                    "min": "3y",
            "range": [
                {
                    "min": "3y",
                            0.08,
                            0.22
                        ],
                            0.08,
                            0.22
                        ],
-                       "limit": [
+                       "adult": [
                            4,
                            4
                        ],
                            4,
                            4
                        ],
index 59d157f4199f477d6c88917357d4115503c5e32d..0a0fc51119d8593f4c36ab8ceeb93d36d81a93c8 100644 (file)
@@ -6,11 +6,8 @@
            "gen": true,
            "dose": [
                {
            "gen": true,
            "dose": [
                {
-                   "perKg": [
-                       15,
-                       15
-                   ],
-                   "limit": [
+                   "perKg": 15,
+                   "adult": [
                        500,
                        1000
                    ],
                        500,
                        1000
                    ],
@@ -19,7 +16,7 @@
                },
                {
                    "perKg": 60,
                },
                {
                    "perKg": 60,
-                   "limit": [
+                   "adult": [
                        4000,
                        4000
                    ],
                        4000,
                        4000
                    ],
            "mode": "Rectal",
            "gen": true,
            "dose": {
            "mode": "Rectal",
            "gen": true,
            "dose": {
-               "perKg": [
-                   15,
-                   15
-               ],
-               "limit": [
+               "perKg": 15,
+               "adult": [
                    500,
                    1000
                ],
                    500,
                    1000
                ],
            "mode": "IM",
            "gen": true,
            "dose": {
            "mode": "IM",
            "gen": true,
            "dose": {
-               "perKg": [
-                   5,
-                   5
-               ],
-               "limit": [
+               "perKg": 5,
+               "adult": [
                    500,
                    1000
                ],
                    500,
                    1000
                ],
@@ -69,7 +60,7 @@
                    "15*bw",
                    "15*bw"
                ],
                    "15*bw",
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    2
                ],
                    1,
                    2
                ],
@@ -86,7 +77,7 @@
                    "15*bw",
                    "15*bw"
                ],
                    "15*bw",
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    1.5
                ],
                    1,
                    1.5
                ],
                    "15*bw",
                    "15*bw"
                ],
                    "15*bw",
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    4
                ],
                    2,
                    4
                ],
                    "15*bw",
                    "15*bw"
                ],
                    "15*bw",
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    1
                ],
                    1,
                    1
                ],
            "content":"125mg/5ml",
            "dose": {
                "perKg": 0.6,
            "content":"125mg/5ml",
            "dose": {
                "perKg": 0.6,
-               "limit": [
+               "adult": [
                    20,
                    40
                ],
                    20,
                    40
                ],
            "content":"250mg/5ml",
            "dose": {
                "perKg": 0.3,
            "content":"250mg/5ml",
            "dose": {
                "perKg": 0.3,
-               "limit": [
+               "adult": [
                    10,
                    20
                ],
                    10,
                    20
                ],
            "content":"100mg/ml",
            "dose": {
                "perKg": 0.15,
            "content":"100mg/ml",
            "dose": {
                "perKg": 0.15,
-               "limit": [
+               "adult": [
                    5,
                    10
                ],
                    5,
                    10
                ],
                    "15*bw",
                    "15*bw"
                ],
                    "15*bw",
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    4,
                    8
                ],
                    4,
                    8
                ],
                    "15*bw",
                    "15*bw"
                ],
                    "15*bw",
                    "15*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    4
                ],
                    2,
                    4
                ],
            "content":"150mg/5ml",
            "dose": {
                "perKg": 0.03,
            "content":"150mg/5ml",
            "dose": {
                "perKg": 0.03,
-               "limit": [
+               "adult": [
                    3,
                    6.5
                ],
                    3,
                    6.5
                ],
diff --git a/src/data/phenytoin.json b/src/data/phenytoin.json
new file mode 100644 (file)
index 0000000..55b5665
--- /dev/null
@@ -0,0 +1,173 @@
+{
+    "name": "Phenytoin",
+    "form": [
+       {
+           "mode": "Oral",
+           "gen": true,
+           "dose": {
+               "perKg": [
+                   5,
+                   8
+               ],
+               "adult": [
+                   150,
+                   300
+               ],
+               "unit": "mg",
+               "txt": "per day q 12 hr or single dose",
+               "comment": "Increased to max 200-400mg in adults"
+           }
+       },
+       {
+           "mode": "IV",
+           "gen": true,
+           "dose": {
+               "perKg": [
+                   15,
+                   20
+               ],
+               "unit": "mg",
+               "txt": "Loading dose @ 1mg/kg/min",
+               "comment": "diluted in NS, require cardiac monitoring"
+           }
+       },
+       {
+           "mode": "IV",
+           "gen": true,
+           "dose": [
+               {
+                   "perKg": 1.25,
+                   "adult":[
+                       1500,
+                       1500
+                   ],
+                   "unit": "mg",
+                   "txt": "q 5min",
+                   "comment": "Loading dose for arrythmia"
+               },
+               {
+                   "perKg": 15,
+                   "adult":[
+                       1500,
+                       1500
+                   ],
+                   "unit": "mg",
+                   "txt": "",
+                   "comment": "Max loading dose for arrythmia"
+               },
+               {
+                   "perKg": [
+                       5,
+                       10
+                   ],
+                   "unit": "mg",
+                   "txt": "per day q 12 hr",
+                   "comment": "Maintenance dose for arrythmia"
+               }
+           ]
+       },
+       {
+           "mode": "Oral",
+           "gen": true,
+           "dose": {
+               "perKg": [
+                   5,
+                   10
+               ],
+               "unit": "mg",
+               "txt": "per day q 12 hr",
+               "comment": "Maintenance dose for arrythmia"
+           }
+       },
+       {
+           "mode": "Tab",
+           "content": "50mg",
+           "dose": {
+               "approx": [
+                   50,
+                   "5*bw",
+                   "8*bw"
+               ],
+               "adult": [
+                   3,
+                   6
+               ],
+               "unit": "tab",
+               "txt": ""
+           }
+       },
+       {
+           "mode": "Tab",
+           "content": "100mg",
+           "dose": {
+               "approx": [
+                   100,
+                   "5*bw",
+                   "8*bw"
+               ],
+               "adult": [
+                   1.5,
+                   3
+               ],
+               "unit": "tab",
+               "txt": ""
+           }
+       },
+       {
+           "mode": "Susp",
+           "content": "125mg/5ml",
+           "dose": {
+               "perKg": [
+                   0.2,
+                   0.32
+               ],
+               "adult": [
+                   6,
+                   12
+               ],
+               "unit": "ml",
+               "txt": ""
+           }
+       },
+       {
+           "mode": "Syr",
+           "content": "30mg/5ml",
+           "dose": {
+               "perKg": [
+                   0.8,
+                   1.3
+               ],
+               "adult": [
+                   25,
+                   50
+               ],
+               "unit": "ml",
+               "txt": ""
+           }
+       },
+       {
+           "mode": "IV",
+           "content": "25mg/ml",
+           "dose": {
+               "perKg": [
+                   0.6,
+                   0.8
+               ],
+               "unit": "ml",
+               "txt": ""
+           }
+       },
+       {
+           "mode": "IV",
+           "content": "50mg/ml",
+           "dose": {
+               "perKg": [
+                   0.3,
+                   0.4
+               ],
+               "unit": "ml",
+               "txt": ""
+           }
+       }
+    ]
+}
index db1dccbc7ec2367c666e1e22687d01e1eb6ce201..b6b2dc9c2e4abfd1addc7be1003ec3911f973375 100644 (file)
@@ -9,7 +9,7 @@
                    1,
                    2
                ],
                    1,
                    2
                ],
-               "limit": [
+               "adult": [
                    60,
                    60
                ],
                    60,
                    60
                ],
@@ -41,7 +41,7 @@
                    "1*bw",
                    "2*bw"
                ],
                    "1*bw",
                    "2*bw"
                ],
-               "limit": [
+               "adult": [
                    12,
                    12
                ],
                    12,
                    12
                ],
@@ -58,7 +58,7 @@
                    "1*bw",
                    "2*bw"
                ],
                    "1*bw",
                    "2*bw"
                ],
-               "limit": [
+               "adult": [
                    6,
                    6
                ],
                    6,
                    6
                ],
@@ -75,7 +75,7 @@
                    "1*bw",
                    "2*bw"
                ],
                    "1*bw",
                    "2*bw"
                ],
-               "limit": [
+               "adult": [
                    3,
                    3
                ],
                    3,
                    3
                ],
@@ -92,7 +92,7 @@
                    "1*bw",
                    "2*bw"
                ],
                    "1*bw",
                    "2*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    2
                ],
                    2,
                    2
                ],
                    "1*bw",
                    "2*bw"
                ],
                    "1*bw",
                    "2*bw"
                ],
-               "limit": [
+               "adult": [
                    1.5,
                    1.5
                ],
                    1.5,
                    1.5
                ],
                    1,
                    2
                ],
                    1,
                    2
                ],
-               "limit": [
+               "adult": [
                    60,
                    60
                ],
                    60,
                    60
                ],
                    0.33,
                    0.66
                ],
                    0.33,
                    0.66
                ],
-               "limit": [
+               "adult": [
                    20,
                    20
                ],
                    20,
                    20
                ],
index 52cfd13c6ac26d1d0cd41341af6667df260ffa5d..041ccfcbec609d0331c813c260ac81d9c6220ddd 100644 (file)
@@ -9,7 +9,7 @@
                    2,
                    4
                ],
                    2,
                    4
                ],
-               "limit": [
+               "adult": [
                    300,
                    300
                ],
                    300,
                    300
                ],
@@ -25,7 +25,7 @@
                    4,
                    8
                ],
                    4,
                    8
                ],
-               "limit": [
+               "adult": [
                    600,
                    600
                ],
                    600,
                    600
                ],
@@ -42,7 +42,7 @@
                    1,
                    2
                ],
                    1,
                    2
                ],
-               "limit": [
+               "adult": [
                    200,
                    200
                ],
                    200,
                    200
                ],
@@ -59,7 +59,7 @@
                    "2*bw",
                    "4*bw"
                ],
                    "2*bw",
                    "4*bw"
                ],
-               "limit": [
+               "adult": [
                    2,
                    2
                ],
                    2,
                    2
                ],
@@ -76,7 +76,7 @@
                    "2*bw",
                    "4*bw"
                ],
                    "2*bw",
                    "4*bw"
                ],
-               "limit": [
+               "adult": [
                    1,
                    1
                ],
                    1,
                    1
                ],
@@ -92,7 +92,7 @@
                    0.13,
                    0.26
                ],
                    0.13,
                    0.26
                ],
-               "limit": [
+               "adult": [
                    20,
                    20
                ],
                    20,
                    20
                ],
                    0.04,
                    0.08
                ],
                    0.04,
                    0.08
                ],
-               "limit": [
+               "adult": [
                    8,
                    8
                ],
                    8,
                    8
                ],
diff --git a/src/data/valproate.json b/src/data/valproate.json
new file mode 100644 (file)
index 0000000..7c64505
--- /dev/null
@@ -0,0 +1,65 @@
+{
+    "name": "Valproate",
+    "form": [
+       {
+           "mode": "Oral",
+           "gen": true,
+           "dose": [
+               {
+                   "perKg": [
+                       10,
+                       15
+                   ],
+                   "adult": [
+                       600,
+                       600
+                   ],
+                   "unit": "mg",
+                   "txt": "per day q 12 hr initially"
+               },
+               {
+                   "perKg": [
+                       5,
+                       10
+                   ],
+                   "adult": [
+                       200,
+                       200
+                   ],
+                   "unit": "mg",
+                   "txt": "per day; increment at weekly interval"
+               },
+               {
+                   "perKg": 60,
+                   "adult": [
+                       5000,
+                       5000
+                   ],
+                   "unit": "mg",
+                   "txt": "per day; maximum dose",
+                   "comment": "usual adult dose 1-2gm/day"
+               }
+           ]
+       },
+       {
+           "mode": "IV",
+           "gen": true,
+           "dose": [
+               {
+                   "perKg": 20,
+                   "unit": "mg",
+                   "txt": "loading dose"
+               },
+               {
+                   "perKg": [
+                       5,
+                       10
+                   ],
+                   "unit": "q 8 hr",
+                   "txt": "maintenance dose @ 20mg/min max"
+               }
+           ]
+       }
+    ],
+    "comment": "Available forms- Tab 200mg,300mg,400mg,500mg; Syr 200mg/5ml; Inj 100mg/ml."
+}
index 81847ac943c7730edc3f374e6c36e6baa218aea2..9331d03bdbd1efae485b729a378fdd53dac65813 100644 (file)
@@ -45,7 +45,7 @@
            "gen": true,
            "dose": {
                "perKg": 6,
            "gen": true,
            "dose": {
                "perKg": 6,
-               "limit": [
+               "adult": [
                    220,
                    220
                ],
                    220,
                    220
                ],
diff --git a/src/dosage.js b/src/dosage.js
deleted file mode 100644 (file)
index 7fa8ce5..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/**********************************************************************
- * Title: PDosage
- * Description: Pediatric Calculator
- * Author: Agnibho Mondal
- * Website: http://code.agnibho.com
- **********************************************************************
-   Copyright (c) 2016 Agnibho Mondal
-   All rights reserved
- **********************************************************************
-   This file is part of PDosage.
-   
-   PDosage is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-   
-   PDosage is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with PDosage. If not, see <http://www.gnu.org/licenses/>.
- **********************************************************************/
-
-export default function Dosage(data){
-
-    Object.defineProperty(data, "prop", {
-       writable: false
-    });
-
-    this.get=function(){
-       return data;
-    }
-
-    this.listDrugs=function(){
-       var list=data.map(function(obj){
-           return obj.name;
-       });
-       return list;
-    }
-
-    this.getDrug=function(name, patient){
-       if(this.listDrugs().indexOf(name)==-1){
-           return null;
-       }
-       var drug=JSON.parse(JSON.stringify(data.filter(extract)[0]));
-       function extract(obj){
-           return (obj.name == name);
-       }
-       for(var i=0; i<drug.form.length; i++){
-           drug.form[i]=calculateDose(drug.form[i], patient);
-       }
-       return drug;
-    }
-
-    function calculateDose(form, patient){
-       while(form.hasOwnProperty("range")){
-           var res=isolateRange(form, patient);
-           delete form.range;
-           if(res!=null){
-               if(res.hasOwnProperty("range")){
-                   form.range=res.range;
-               }
-               else{
-                   form.dose=res.dose;
-               }
-           }
-       }
-       if(form.dose){
-           form.dose=[].concat(form.dose);
-           for(var i=0; i<form.dose.length; i++){
-               if(form.dose[i].hasOwnProperty("val")){
-                   form.dose[i].val=[].concat(form.dose[i].val);
-               }
-               else if(form.dose[i].hasOwnProperty("perKg")){
-                   form.dose[i].perKg=[].concat(form.dose[i].perKg);
-                   form.dose[i].val=[];
-                   form.dose[i].val[0]=Math.round(parseFloat(form.dose[i].perKg[0])*parseFloat(patient.wt)*100)/100;
-                   form.dose[i].val[1]=Math.round(parseFloat(form.dose[i].perKg[1])*parseFloat(patient.wt)*100)/100;
-                   form.dose[i]=setLimit(form.dose[i]);
-               }
-               else if(form.dose[i].hasOwnProperty("approx")){
-                   form.dose[i].val=[];
-                   form.dose[i].val=findApprox(form.dose[i].approx);
-                   form.dose[i]=setLimit(form.dose[i]);
-               }
-               else if(form.dose[i].hasOwnProperty("eq")){
-                   form.dose[i].eq=[].concat(form.dose[i].eq);
-                   form.dose[i].val=[];
-                   form.dose[i].val[0]=solveEq(form.dose[i].eq[0]);
-                   form.dose[i].val[1]=solveEq(form.dose[i].eq[1]);
-                   form.dose[i]=setLimit(form.dose[i]);
-               }
-               else{
-                   form.dose[i].val=[];
-                   form.dose[i].val[0]=null;
-                   form.dose[i].val[1]=null;
-               }
-           }
-       }
-       return form;
-
-       function isolateRange(form, patient){
-           var min=0;
-           var max=0;
-           var type="";
-           if(patient.age.y===null && patient.age.m===null && patient.age.d===null){
-               return null;
-           }
-           var pDays=patient.age.y*365+patient.age.m*30+patient.age.d;
-           for(var i=0; i<form.range.length; i++){
-               if(form.range[i].hasOwnProperty("min")){
-                   if(form.range[i].min.indexOf("kg")!=-1){
-                       min=form.range[i].min.slice(0, str.indexOf("kg"));
-                       type="wt";
-                   }
-                   else{
-                       min=strToDays(form.range[i].min);
-                       type="age";
-                   }
-               }
-               else{
-                   min=0;
-               }
-               if(form.range[i].hasOwnProperty("max")){
-                   if(form.range[i].max.indexOf("kg")!=-1){
-                       max=form.range[i].max.slice(0, str.indexOf("kg"));
-                       type="wt";
-                   }
-                   else{
-                       max=strToDays(form.range[i].max);
-                       type="age";
-                   }
-               }
-               else{
-                   max=Infinity;
-               }
-               if(type=="wt"){
-                   if(patient.wt>=min && patient.wt<max){
-                       return form.range[i];
-                   }
-               }
-               else if(type=="age"){
-                   if(pDays>=min && pDays<max){
-                       return form.range[i];
-                   }
-               }
-           }
-           return null;
-
-           function strToDays(str){
-               var age={y: 0, m: 0, d: 0};
-               var days=0;
-               str=str.replace(/\s+/g, "");
-               if(str.indexOf("y")!=-1){
-                   age.y=str.slice(0, str.indexOf("y"));
-                   str=str.slice(str.indexOf("y", -1));
-               }
-               if(str.indexOf("m")!=-1){
-                   age.m=str.slice(0, str.indexOf("m"));
-                   str=str.slice(str.indexOf("m", -1));
-               }
-               if(str.indexOf("d")!=-1){
-                   age.d=str.slice(0, str.indexOf("d"));
-                   str=str.slice(str.indexOf("d", -1));
-               }
-               days=age.y*365+age.m*30+age.d;
-               return days;
-           }
-       }
-
-       function findApprox(arr){
-           var ret=[];
-           arr[0]=arr[0]/2;
-           for(var i=1; i<arr.length; i++){
-               arr[i]=solveEq(arr[i]);
-               ret[i-1]=Math.round(arr[i]/arr[0])/2;
-           }
-           if(!ret[0] || (ret[0]==ret[1])){
-               ret[0]=ret[1];
-               ret[1]=null;
-           }
-           return ret;
-       }
-
-       function solveEq(str){
-           var bw=parseFloat(patient.wt);
-           var ageY=patient.age.y;
-           var ageM=ageY*12+patient.age.m;
-           var ageD=ageM*30+patient.age.d;
-           var ret=eval(str);
-           ret=Math.round(ret*100)/100;
-           return ret;
-       }
-
-       function setLimit(dose){
-           //console.log(">>"+JSON.stringify(dose));
-           if(dose.limit && dose.val){
-               if(dose.val[0]>dose.limit[0]){
-                   dose.val[0]=dose.limit[0];
-               }
-               if(dose.val[1]>dose.limit[1]){
-                   dose.val[1]=dose.limit[1];
-               }
-           }
-           if(dose.val[1]==dose.val[0]){
-               dose.val[1]=null;
-           }
-           return dose;
-       }
-    }
-}
index 911745e7e063822fccacf05fe0ac8cd5d73ee001..55c918f3316783229918abd0c53bc5c67eae00ee 100644 (file)
@@ -36,7 +36,7 @@ import "bootstrap";
 import "bootstrap-validator";
 
 //Backend files
 import "bootstrap-validator";
 
 //Backend files
-import Dosage from "./dosage.js";
+import Dosage from "./Dosage.js";
 import data from "./data.json";
 
 //Vue Components
 import data from "./data.json";
 
 //Vue Components
@@ -58,7 +58,7 @@ new Vue({
        "about-view": AboutView
     },
     data: {
        "about-view": AboutView
     },
     data: {
-       patient: {age: {y:null, m:null, d:null}, wt:null},
+       patient: {age: {y:30, m:null, d:null}, wt:50},
        dosage: "",
        favs: "[]"
     },
        dosage: "",
        favs: "[]"
     },
index f334d446678932fa587370a0a96792a83bb0d2bf..a23f32939acb25371a15294b6d310d5b6e53e391 100644 (file)
@@ -31,6 +31,7 @@ $(document).ready(function(){
 
     //Insert version code
     $(".version").text(VERSION);
 
     //Insert version code
     $(".version").text(VERSION);
+    $(".data-ver").text(JSON.parse(localStorage.getItem("pdosage_data")).version);
 
     //Update copyright
     $(".copyright").each(function(){
 
     //Update copyright
     $(".copyright").each(function(){