diff --git a/app/Controllers/API_Requests.php b/app/Controllers/API_Requests.php index e0a53b9..e71bc1c 100644 --- a/app/Controllers/API_Requests.php +++ b/app/Controllers/API_Requests.php @@ -43,16 +43,22 @@ class API_Requests extends ResourceController { //reqdata $reffid = $qdata['reference_id']; + $company_name = $qdata['company_name']; + $loc = $qdata['branch']; + $visitnum = $qpat['visit_number']; $visitdesc = $qpat['visit_description']; $visitdt = $qpat['visit_date_time']; $agent = $qpat['agent']; $agentname = $qpat['agent_name']; $visittype = $qpat['visit_type']; - $company_name = $qdata['company_name']; - $loc = $qdata['branch']; $doc = $qpat['treating_doctor']; + $createdt = $qdata['created']; + $qant = (array)$qpat['anthropometry']; + $bw = $qant['weight']; + $bh = $qant['height']; + /* $time = Time::createFromFormat('Y-m-d\TH:i:s.u\Z', $utcdt, 'UTC'); //2024-10-19T00:47:06.424654Z $time = $time->setTimezone('Asia/Shanghai'); @@ -62,12 +68,13 @@ class API_Requests extends ResourceController { $query = $db->query($sql); $results = $query->getResultArray(); if(!isset($results[0])) { - $sql = "INSERT INTO cmod.dbo.CM_TM_REQUESTS (REFFID, REQNUMBER, REQDESC, REQTYPE, REQDATE, AGENT, DOC, LOC, PATID, COMPANY, LOGDATE) VALUES ('$reffid', '$visitnum', '$visitdesc', '$visittype', '$visitdt', '$agentname', '$doc', '$loc', '$patid', '$company_name', '$createdt' )"; + $sql = "INSERT INTO cmod.dbo.CM_TM_REQUESTS (REFFID, REQNUMBER, REQDESC, REQTYPE, REQDATE, AGENT, DOC, LOC, PATID, COMPANY, LOGDATE, BW, BH) + VALUES ('$reffid', '$visitnum', '$visitdesc', '$visittype', '$visitdt', '$agentname', '$doc', '$loc', '$patid', '$company_name', '$createdt', '$bw', '$bh' )"; $db->query($sql); $reqid = $db->insertID(); } else { $reqid = $results[0]['REQID']; - $sql = "UPDATE cmod.dbo.CM_TM_REQUESTS SET REQNUMBER='$visitnum', REQDESC='$visitdesc', REQTYPE='$visittype', REQDATE='$visitdt', AGENT='$agentname', DOC='$doc', LOC='$loc', PATID='$patid', LOGDATE='$createdt' where REQID='$reqid'"; + $sql = "UPDATE cmod.dbo.CM_TM_REQUESTS SET REQNUMBER='$visitnum', REQDESC='$visitdesc', REQTYPE='$visittype', REQDATE='$visitdt', AGENT='$agentname', DOC='$doc', LOC='$loc', PATID='$patid', LOGDATE='$createdt', BW='$bw', BH='$bh' where REQID='$reqid'"; $db->query($sql); } @@ -94,6 +101,8 @@ class API_Requests extends ResourceController { ON T.REQID = S.REQID AND T.HISCODE = S.HISCODE;"; $db->query($sql); + //sendORM + //$this->orm($reqid); return $this->respond(201); /* @@ -108,7 +117,69 @@ class API_Requests extends ResourceController { */ } - function sendHL7Message($host, $port, $message, $timeout = 5) { + public function orm($reqid) { + $db = \Config\Database::connect(); + $sql = "select r.REFFID, r.LOC, p.PATNUMBER, p.FIRSTNAME, p.LASTNAME, p.BIRTHDATE, p.SEX, r.REQNUMBER, r.REQDATE, r.AGENT, r.DOC + from cmod.dbo.CM_TM_REQUESTS r + left join cmod.dbo.CM_TM_PATIENTS p on p.PATID=r.PATID + where r.REQID='$reqid'"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $res = $results[0]; + + $reffid = $res['REFFID']; + $patnumber = $res['PATNUMBER']; + $loc = $res['LOC']; + $doc = $res['DOC']; + $firstname = $res['FIRSTNAME']; + $lastname = $res['LASTNAME']; + $dob = $res['BIRTHDATE']; + $sex = $res['SEX']; + $hosp = $res['REQNUMBER']; + $reqdate = $res['REQDATE']; + $time = Time::createFromFormat('Y-m-d\TH:i:s.u\Z', $reqdate, 'UTC'); //2024-10-19T00:47:06.424654Z + $agent = $res['AGENT']; + + // LOC + if($loc == "PBMC Bali") { + $loc = "PADMA"; $doc = "PBDPS"; + $time = $time->setTimezone('Asia/Shanghai'); + $reqdate= date_format($time, 'YmdHi'); + } else { + $loc = "PBSBY"; $doc = "PBSBY"; + $time = $time->setTimezone('Asia/Jakarta'); + $reqdate= date_format($time, 'YmdHi'); + } + + $orm = "MSH|^~\&|PBMC|TM|TDNL||||ORM^O01^|||2.3||||\r"; + $orm .= "PID|1||$patnumber^^^^PATNUMBER||$firstname^$lastname^^^^^L||$dob|$sex||^|^^||||||^||||||||||||||||\r"; + $orm .= "PV1|||$loc^^^||||$doc|$doc||||||||||||||||||||||||||||||||||||$reqdate||||||||||\r"; + + $sql = "select t.TESTSTATUS, m.LISCODE from cmod.dbo.CM_TM_TESTS t + left join cmod.dbo.CM_DICT_MAPPINGS m on m.HISCODE=t.HISCODE + where t.REQID='$reqid'"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $i = 1; + foreach($results as $qdata) { + $liscode = $qdata['LISCODE']; + $status = $qdata['TESTSTATUS']; + if($liscode != '') { + if($status!=1 || $status !=2) {$status="NW";} else {$status="CA";} + $orm .= "ORC|$status|$reffid||$reffid|||^^^$reqdate|||||$doc|$loc||$reqdate|||||||||\r"; + $orm .= "OBR|$i|||$liscode|||||||R|||||$doc|||||||||||||||||||||||||\r"; + $i++; + } + } + + //echo "
$orm";
+ //sendHL7Message($host, $port, $message, $timeout = 5);
+ $this->sendHL7Message( "localhost", "8101", $orm, $timeout = 5);
+ //$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
+
+ }
+
+ public function sendHL7Message($host, $port, $message, $timeout = 5) {
try {
// Create a TCP/IP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
@@ -164,63 +235,4 @@ class API_Requests extends ResourceController {
return false; // Indicate failure
}
}
-
- public function orm($reqid) {
- $db = \Config\Database::connect();
- $sql = "select r.REFFID, r.LOC, p.PATNUMBER, p.FIRSTNAME, p.LASTNAME, p.BIRTHDATE, p.SEX, r.REQNUMBER, r.REQDATE, r.AGENT, r.DOC
- from cmod.dbo.CM_TM_REQUESTS r
- left join cmod.dbo.CM_TM_PATIENTS p on p.PATID=r.PATID
- where r.REQID='$reqid'";
- $query = $db->query($sql);
- $results = $query->getResultArray();
- $res = $results[0];
-
- $reffid = $res['REFFID'];
- $patnumber = $res['PATNUMBER'];
- $loc = $res['LOC'];
- $doc = $res['DOC'];
- $firstname = $res['FIRSTNAME'];
- $lastname = $res['LASTNAME'];
- $dob = $res['BIRTHDATE'];
- $sex = $res['SEX'];
- $hosp = $res['REQNUMBER'];
- $reqdate = $res['REQDATE'];
- $time = Time::createFromFormat('Y-m-d\TH:i:s.u\Z', $reqdate, 'UTC'); //2024-10-19T00:47:06.424654Z
- $agent = $res['AGENT'];
-
- // LOC
- if($loc == "PBMC Bali") {
- $loc = "PADMA"; $doc = "PBDPS";
- $time = $time->setTimezone('Asia/Shanghai');
- $reqdate= date_format($time, 'YmdHi');
- } else {
- $loc = "PBSBY"; $doc = "PBSBY";
- $time = $time->setTimezone('Asia/Jakarta');
- $reqdate= date_format($time, 'YmdHi');
- }
-
- $orm = "MSH|^~\&|PBMC|TM|TDNL||||ORM^O01^|||2.3||||\r";
- $orm .= "PID|1||$patnumber^^^^PATNUMBER||$firstname^$lastname^^^^^L||$dob|$sex||^|^^||||||^||||||||||||||||\r";
- $orm .= "PV1|||$loc^^^||||$doc|$doc||||||||||||||||||||||||||||||||||||$reqdate||||||||||\r";
-
- $sql = "select t.TESTSTATUS, m.LISCODE from cmod.dbo.CM_TM_TESTS t
- left join cmod.dbo.CM_DICT_MAPPINGS m on m.HISCODE=t.HISCODE
- where t.REQID='$reqid'";
- $query = $db->query($sql);
- $results = $query->getResultArray();
- $i = 1;
- foreach($results as $qdata) {
- $liscode = $qdata['LISCODE'];
- $status = $qdata['TESTSTATUS'];
- if($liscode != '') {
- if($status!=1 || $status !=2) {$status="NW";} else {$status="CA";}
- $orm .= "ORC|$status|$reffid||$reffid|||^^^$reqdate|||||$loc|$doc||$reqdate|||||||||\r";
- $orm .= "OBR|$i|||$liscode|||||||R|||||$loc|||||||||||||||||||||||||\r";
- $i++;
- }
- }
-
- echo "$orm";
- //sendHL7Message($host, $port, $message, $timeout = 5);
- }
}