diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 03b77ae..090b54e 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -5,5 +5,5 @@ use CodeIgniter\Router\RouteCollection; /** * @var RouteCollection $routes */ -//$routes->get('/', 'Home::index'); +$routes->get('/', 'Pages::home'); $routes->post('/api/requests/', 'API::requests'); diff --git a/app/Controllers/API.php b/app/Controllers/API.php index ab86cf2..d844542 100644 --- a/app/Controllers/API.php +++ b/app/Controllers/API.php @@ -5,50 +5,7 @@ use CodeIgniter\RESTful\ResourceController; use CodeIgniter\I18n\Time; class API extends ResourceController { - -/* -{ - "reference_id": "4f52-8e25-48009b4f52-8e25-48009b4f52-8e25-48009b", //required (string) audit trail UUID - "created": "2024-10-19T00:47:06.424654Z", //required (string) audit trail - "company_name": "Padma Medical Group", //required klinik nya "Padma Medical Group" - "branch": "PBMC Bali", //required in :PBMC Surabaya, PBMC Bali, PBMC Jakarta, - "patient": { - "rm_number": "1B0912243", //required - "patient_first_name": "Jenifer", //nullable - "patient_last_name": "Ngo", //required - "patient_dob": "1999-11-12", //required, date_format: Y-m-d - "patient_sex": "Female", //required in : Female, Male - "patient_phone": "62815456655885", //(string) needs to be validated - remove +, between 9-14 digits, allow leading 0 required - "visit_number": "BV002304", //required, generating => BV, SV - "visit_description": null, // can be used later for cross reference diisi di FO saat registrasi - "visit_date_time": "2024-10-19T00:47:06.424654Z", // => UTC - "agent_name": "Apollo Group", //NULL IN REAL AGENT NAME - "agent": true, // or false . REQUIRED TRUE/FALSE AS BOOLEAN - "treating_doctor": "PMG Bali Medical Team", // General : "PMG Bali Medical Team", "PMG Surabaya Medical Team" - "visit_type": "MCU", //WHEN REGISTER AS MCU, required IN : MCU, LAB, OUTPATIENT, SPECIALIST NON VALIDATED ON TD - "tests": [ - { - "test_ref_id": "4f52-8e25-48009b04f52-8e25-4800900", //required (string) audit trail. - "service_id": "SL00140" //required - }, - { - "test_ref_id": "4f52-8e25-48009b04f52-8e25-4800901", // (string) audit trail - "service_id": "SL00142" - } - ] - } -} - -MSH|^~\&|PBMC|NAPIER|TDNL||202501110734||ORM^O01^|SV000||2.3|||| -PID|1||SMAJ2^^^^PATNUMBER||M Zakaria^^^^^^L||20041201|M||^|^^||||||^|||||||||||||||| -PV1|1||PBSBY||||PBSBY|PBSBY||||||||||||||||||||||||||||||||||||202501110734| -ORC|NW|SV000||SV000|||^^^202501110734|||||PBSBY|PBSBY||202501110734||||| -NTE|0|||||||||||||||| -NTE|1|||||||||||||||| -NTE|2|||||||||||||||| -NTE|3|||||||||||||||| -OBR|1|||ALCO||||||||||202501110734||PBSBY|||||||||||^^^^^R| -*/ + public function requests() { $db = \Config\Database::connect(); $raw = $this->request->getVar(); @@ -69,9 +26,18 @@ OBR|1|||ALCO||||||||||202501110734||PBSBY|||||||||||^^^^^R| $sex = $qpat['patient_sex']; $phone = $qpat['patient_phone']; - $sql = "INSERT INTO cmod.dbo.CM_TM_PATIENTS (PATNUMBER, FIRSTNAME, LASTNAME, BIRTHDATE, SEX, PHONE ) VALUES ('$rm', '$firstname', '$lastname', '$dob', '$sex', '$phone' )"; - $db->query($sql); - $patid = $db->insertID(); + $sql = "select PATID from cmod.dbo.CM_TM_PATIENTS where PATNUMBER='$rm'"; + $query = $db->query($sql); + $results = $query->getResultArray(); + if(!isset($results[0])) { + $sql = "INSERT INTO cmod.dbo.CM_TM_PATIENTS (PATNUMBER, FIRSTNAME, LASTNAME, BIRTHDATE, SEX, PHONE ) VALUES ('$rm', '$firstname', '$lastname', '$dob', '$sex', '$phone' )"; + $db->query($sql); + $patid = $db->insertID(); + } else { + $patid = $results[0]['PATID']; + $sql = "UPDATE cmod.dbo.CM_TM_PATIENTS SET FIRSTNAME='$firstname', LASTNAME='$lastname', BIRTHDATE='$dob', SEX='$sex', PHONE='$phone' where PATID='$patid'"; + $db->query($sql); + } //reqdata $reffid = $qdata['reference_id']; @@ -80,7 +46,6 @@ OBR|1|||ALCO||||||||||202501110734||PBSBY|||||||||||^^^^^R| $visitdt = $qpat['visit_date_time']; $agent = $qpat['agent']; $agentname = $qpat['agent_name']; - $doc = $qpat['treating_doctor']; $visittype = $qpat['visit_type']; $company_name = $qdata['company_name']; @@ -91,26 +56,40 @@ OBR|1|||ALCO||||||||||202501110734||PBSBY|||||||||||^^^^^R| $time = $time->setTimezone('Asia/Shanghai'); $orderdt = $time->toDateTimeString(); - $sql = "INSERT INTO cmod.dbo.CM_TM_REQUESTS (REFFID, REQNUMBER, REQDESC, REQTYPE, REQDATE, AGENT, DOC, LOC, PATID, COMPANY, TAKEN) VALUES ('$reffid', '$visitnum', '$visitdesc', '$visittype', '$orderdt', '$agentname', '$doc', '$loc', '$patid', '$company_name', null )"; - $db->query($sql); - $reqid = $db->insertID(); + $sql = "select REQID from cmod.dbo.CM_TM_REQUESTS where REQNUMBER='$visitnum'"; + $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, TAKEN) VALUES ('$reffid', '$visitnum', '$visitdesc', '$visittype', '$orderdt', '$agentname', '$doc', '$loc', '$patid', '$company_name', null )"; + $db->query($sql); + $reqid = $db->insertID(); + } else { + $reqid = $results[0]['REQID']; + $sql = "UPDATE cmod.dbo.CM_TM_REQUESTS SET REQDESC='$visitdesc', REQTYPE='$visittype', REQDATE='$orderdt', AGENT='$agentname', DOC='$doc', LOC='$loc', PATID='$patid' where REQID='$reqid'"; + $db->query($sql); + } // tests - $tests = $qpat['tests']; - print_r($tests); - /* + $tests = json_decode(json_encode($qpat['tests']), true);; $string = ''; foreach($tests as $test) { $testcode = $test['service_id']; $testreffid = $test['test_ref_id']; - $string .= "('$testcode', '$testreffid'),"; + $string .= "( '$testreffid', '$reqid', '$testcode' ),"; } $string = rtrim($string, ','); - $sql = "INSERT INTO cmod.dbo.CM_TM_TESTS(REFFID, REQID, HISCODE) VALUES ($string)"; - echo "$sql"; + //$sql = "INSERT INTO cmod.dbo.CM_TM_TESTS(REFFID, REQID, HISCODE) VALUES $string"; + $sql = "INSERT INTO cmod.dbo.CM_TM_TESTS (REFFID, REQID, HISCODE) + SELECT S.REFFID, S.REQID, S.HISCODE FROM ( VALUES $string ) AS S (REFFID, REQID, HISCODE) + WHERE NOT EXISTS ( SELECT 1 FROM cmod.dbo.CM_TM_TESTS T WHERE T.REQID = S.REQID AND T.HISCODE = S.HISCODE );"; $db->query($sql); - */ - return $this->respond($tests, 201); + $sql = "DELETE T FROM cmod.dbo.CM_TM_TESTS T + LEFT JOIN ( VALUES $string ) AS S (REFFID, REQID, HISCODE) + ON T.REQID = S.REQID AND T.HISCODE = S.HISCODE + WHERE S.REQID IS NULL;"; + $db->query($sql); + + return $this->respond(201); /* if( $db->query($sql) ) { return $this->respond(201); diff --git a/app/Controllers/Pages.php b/app/Controllers/Pages.php new file mode 100644 index 0000000..4e09683 --- /dev/null +++ b/app/Controllers/Pages.php @@ -0,0 +1,11 @@ +