]> Softwares of Agnibho - simpleipd.git/blob - lib/functions.php
Bugfix
[simpleipd.git] / lib / functions.php
1 <?php
2 function resolveRange($arr, $val=false){
3 if($val){
4 if(!empty($arr[0]) && $val<$arr[0]){
5 return "text-danger";
6 }
7 elseif(!empty($arr[1]) && $val>$arr[1]){
8 return "text-danger";
9 }
10 else{
11 return "";
12 }
13 }
14 else{
15 $part=["","","",""];
16 if(!empty($arr[0])){
17 $part[1]=$arr[0];
18 }
19 else{
20 $part[0]="&lt;";
21 }
22 if(!empty($arr[1])){
23 $part[3]=$arr[1];
24 }
25 else{
26 $part[0]="&gt";
27 }
28 if(!empty($arr[0]) && !empty($arr[1])){
29 $part[2]="-";
30 }
31 return implode("",$part);
32 }
33 }
34 function schema2form($file, $pid=null, $id=null, $cat=null, $data=null, $time=null){
35 global $db;
36 $schema=json_decode(file_get_contents($file));
37
38 $lockpid="";
39 if(!empty($pid) && !empty($id) && !empty($cat)){
40 $data=json_decode($db->getData($pid, $id, $cat)->fetchArray()["data"]);
41 }
42 elseif(!empty($pid) && $file=="forms/admission.schema.json"){
43 $data=json_decode($db->getAdmissionData($pid)->fetchArray()["data"]);
44 $lockpid="readonly";
45 }
46 elseif(!empty($pid) && $file=="forms/history.schema.json"){
47 $data=json_decode($db->getHistory($pid)->fetchArray()["history"]);
48 $lockpid="readonly";
49 }
50
51 $form="<form method='post'>";
52 $form=$form."<input type='hidden' name='form' value='".str_replace(["forms/",".schema.json"], "", $file)."'>";
53
54 foreach($schema->properties as $field=>$prop){
55 if($prop->type == "integer") $prop->type="number";
56 if($prop->type == "string") $prop->type="text";
57 if(!empty($data->$field)){
58 $value="value='".$data->$field."'";
59 $value2=$data->$field;
60 }
61 elseif(!empty($time) && $field=="date"){
62 $value="value='".date("Y-m-d", $time)."'";
63 $value2=date("Y-m-d", $time);
64 }
65 elseif(!empty($time) && $field=="time"){
66 $value="value='".date("H:i", $time)."'";
67 $value2=date("H:i", $time);
68 }
69 else{
70 $value="";
71 $value2="";
72 }
73 if(in_array($field, $schema->required)){
74 $req="required";
75 }
76 else{
77 $req="";
78 }
79 if(isSet($prop->format)){
80 $type=$prop->format;
81 }
82 else{
83 $type=$prop->type;
84 }
85
86 $form=$form."<div>";
87 $form=$form."<label class='form-label' for='".$field."'>".$prop->description."</label>";
88 if(isSet($prop->enum)){
89 $form=$form."<select class='form-control' ".$req." name='".$field."' id='".$field."'>";
90 foreach($prop->enum as $opt){
91 if($opt==$value2){
92 $form=$form."<option selected>".$opt."</option>";
93 }
94 else{
95 $form=$form."<option>".$opt."</option>";
96 }
97 }
98 $form=$form."</select>";
99 }
100 elseif(isSet($prop->format) && $prop->format=="textarea"){
101 $form=$form."<textarea class='form-control' name='".$field."' id='".$field."'>".$value2."</textarea>";
102 }
103 elseif($field=="pid"){
104 $form=$form."<input class='form-control' ".$lockpid." ".$req." type='".$type."' step='any' name='".$field."' id='".$field."' ".$value.">";
105 }
106 else{
107 $form=$form."<input class='form-control' ".$req." type='".$type."' step='any' name='".$field."' id='".$field."' ".$value.">";
108 }
109 $form=$form."</div>";
110
111 }
112 if(!empty($data->extra_note)){
113 $extra_note=$data->extra_note;
114 }
115 else{
116 $extra_note="";
117 }
118 $form=$form."<div><label class='form-label' for='extra_note'>Extra Notes</label><textarea class='form-control' name='extra_note' id='extra_note'>".$extra_note."</textarea></div>";
119 $form=$form."<button class='btn btn-primary mt-3' type='submit'>Save</button>";
120 $form=$form."</form>";
121 return $form;
122 }
123
124 function getInfo($pid){
125 global $db;
126 $info="<table class='table'>";
127 $info=$info."<tr><td>ID</td><td>".$pid."</td></tr>";
128 $info=$info."<tr><td>Name</td><td id='info-name'>".$db->getName($pid)->fetchArray()["name"]."</td></tr>";
129 $info=$info."<tr><td>Age</td><td id='info-age'>".$db->getAge($pid)->fetchArray()["age"]."</td></tr>";
130 $info=$info."<tr><td>Sex</td><td id='info-sex'>".$db->getSex($pid)->fetchArray()["sex"]."</td></tr>";
131 $info=$info."<tr><td>Bed</td><td>".$db->getWard($pid)->fetchArray()["ward"]."-".$db->getBed($pid)->fetchArray()["bed"]."</td></tr>";
132 $info=$info."<tr><td>Diagnosis</td><td>".$db->getDiagnosis($pid)->fetchArray()["diagnosis"]."</td></tr>";
133 $info=$info."</table>";
134 return $info;
135 }
136
137 function viewData($data, $edit=null){
138 if(!empty($data)){
139 $data=json_decode($data);
140 if(!empty($data->form)){
141 $schema=json_decode(file_get_contents("forms/".$data->form.".schema.json"));
142 }
143 unset($data->cat);
144 $view="<table class='table'>";
145 if(!empty($schema->description)){
146 $description=$schema->description;
147 }
148 else{
149 $description="";
150 }
151 if(!empty($data->date)){
152 if(!empty($data->time)){
153 $date=date("M d, Y h:i a", strtotime($data->date." ".$data->time));
154 }
155 else{
156 $date=$data->date;
157 }
158 }
159 else{
160 $date="";
161 }
162 if(!empty($data->rdate)){
163 if(!empty($data->rtime)){
164 $rdate=date("M d, Y h:i a", strtotime($data->rdate." ".$data->rtime));
165 }
166 else{
167 $rdate=$data->rdate;
168 }
169 }
170 else{
171 $rdate="";
172 }
173 $view=$view."<tr><th class='w-25'>".$description."</th><th>".$date."</th>";
174 $view=$view."<th></th>";
175 $view=$view."</tr>";
176 if(!empty($rdate)){
177 $view=$view."<tr><td class='w-25'>Reported</td><td>".$rdate."</td>";
178 $view=$view."<td></td>";
179 $view=$view."</tr>";
180 }
181 foreach($data as $field=>$value){
182 $warn="";
183 if(!empty($schema->properties->$field->range)){
184 $warn=resolveRange($schema->properties->$field->range, $value);
185 }
186 else{
187 $warn="";
188 }
189 if(!empty($value) && $field!="form" && $field!="date" && $field!="time" && $field!="rdate" && $field!="rtime"){
190 if(!empty($schema->properties->$field)){
191 $view=$view."<tr><td>".$schema->properties->$field->description."</td><td class='".$warn."'>".$value."</td>";
192 if(!empty($schema->properties->$field->range)){
193 $view=$view."<td>".resolveRange($schema->properties->$field->range)."</td>";
194 }
195 else{
196 $view=$view."<td></td>";
197 }
198 $view=$view."</tr>";
199 }
200 elseif($field=="extra_note"){
201 $view=$view."<tr><td>Extra Notes</td><td><pre>".$value."</pre></td><td></td></tr>";
202 }
203 else{
204 $view=$view."<tr><td>".$field."</td><td>".$value."</td><td></td></tr>";
205 }
206 }
207 }
208 if(!empty($edit)){
209 $view=$view."<tr><td colspan='3'><a href='".$edit."'>Edit</a>";
210 }
211 $view=$view."</table>";
212 return $view;
213 }
214 else{
215 return "";
216 }
217 }
218
219 function viewAntibiogram($data, $edit=null){
220 $data=json_decode($data);
221 $view="<table class='table table-striped'>";
222 $view=$view."<tr><th>Vitek Report</th><th colspan='2'>".$data->date."</th></tr>";
223 if(!empty($data->rdate)){
224 $view=$view."<tr><td>Reported on</td><td colspan='2'>".$data->rdate."</td></tr>";
225 }
226 $view=$view."<tr><td>Sample</td><td colspan='2'>".$data->sample."</td></tr>";
227 $view=$view."<tr><td>Lab ID</td><td colspan='2'>".$data->labid."</td></tr>";
228 $view=$view."<tr><td>Organism</td><td colspan='2'>".$data->organism."</td></tr>";
229 $view=$view."<tr><th>Antibiotic</th><th>MIC</th><th>Interpretation</th>";
230 foreach($data as $k=>$v){
231 if(is_object($v)){
232 $view=$view."<tr><td>".$v->name."</td><td>".$v->mic."</td><td>".$v->interpretation."</td></tr>";
233 }
234 }
235 if(!empty($data->note)){
236 $view=$view."<tr><td>Note</td><td colspan='2'>".$data->note."</td></tr>";
237 }
238 if(!empty($edit)){
239 $view=$view."<tr><td colspan='2'><a href='".$edit."'>Edit</a></td></tr>";
240 }
241 $view=$view."</table>";
242 return $view;
243 }
244
245 function view_drug($file){
246 if(is_file($file)){
247 $druglist=json_decode(file_get_contents($file));
248 }
249 else{
250 $druglist=[];
251 }
252 $view="<form method='post' id='omitter'></form><table class='table'>";
253 $view=$view."<tr><th>Drug</th><th>Dose</th><th>Route</th><th>Frequency</th><th>Duration</th></tr>";
254 foreach($druglist as $id=>$drug){
255 if($drug->omit){
256 $omit="style='display:none'";
257 }
258 else{
259 $omit="";
260 }
261 $view=$view."<tr><td>".$drug->drug."</td><td>".$drug->dose."</td><td>".$drug->route."</td><td>".$drug->freq."</td><td>".$drug->duration."</td><td>".$drug->note."</td><td><button name='omit' value='".$id."' form='omitter' ".$omit.">Omit</button></td></tr>";
262 }
263 $view=$view."</table>";
264 return $view;
265 }
266 ?>