From 35785ef6ce7475fa2457c966fc772180bb0cd750 Mon Sep 17 00:00:00 2001 From: mahdahar <89adham@gmail.com> Date: Mon, 13 Jan 2025 16:49:48 +0700 Subject: [PATCH] progress 202501131649 --- app/Controllers/API.php | 106 ++++++++++++++++++++++++++++++++++++++-- cretab.sql | 27 +++++----- 2 files changed, 119 insertions(+), 14 deletions(-) diff --git a/app/Controllers/API.php b/app/Controllers/API.php index f6b10cd..ab86cf2 100644 --- a/app/Controllers/API.php +++ b/app/Controllers/API.php @@ -2,25 +2,125 @@ namespace App\Controllers; 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(); // log to cm_tm_logs $data = json_encode($raw); - $sql = "INSERT INTO cmod.dbo.CM_TM_LOGS (LOGTEXT, LOGDATE) VALUES ('$data', GETDATE())"; + //$sql = "INSERT INTO cmod.dbo.CM_TM_LOGS (URL, METHOD, BODY, LOGDATE) VALUES ('API/REQUESTS', 'POST', '$data', GETDATE())"; + $data = array(); + $qdata = (array)$raw; + $qpat = (array)$qdata['patient']; + + //patdata + $rm = $qpat['rm_number']; + $firstname = $qpat['patient_first_name']; + $lastname = $qpat['patient_last_name']; + $dob = $qpat['patient_dob']; + $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(); + + //reqdata + $reffid = $qdata['reference_id']; + $visitnum = $qpat['visit_number']; + $visitdesc = $qpat['visit_description']; + $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']; + $loc = $qdata['branch']; + $utcdt = $qdata['created']; + $data['created'] = $utcdt; + $time = Time::createFromFormat('Y-m-d\TH:i:s.u\Z', $utcdt, 'UTC'); + $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(); + + // tests + $tests = $qpat['tests']; + print_r($tests); + /* + $string = ''; + foreach($tests as $test) { + $testcode = $test['service_id']; + $testreffid = $test['test_ref_id']; + $string .= "('$testcode', '$testreffid'),"; + } + $string = rtrim($string, ','); + $sql = "INSERT INTO cmod.dbo.CM_TM_TESTS(REFFID, REQID, HISCODE) VALUES ($string)"; + echo "$sql"; + $db->query($sql); + */ + return $this->respond($tests, 201); + /* if( $db->query($sql) ) { - return $this->respond($raw,201); + return $this->respond(201); } else { $response = [ 'errors' => $db->errors(), 'message' => 'Invalid Messages' ]; return $this->fail($response , 409); } + */ } } diff --git a/cretab.sql b/cretab.sql index 8a5ae8e..076077f 100644 --- a/cretab.sql +++ b/cretab.sql @@ -1,6 +1,6 @@ USE [cmod] GO -/****** Object: Table [dbo].[CM_TM_LOGS] Script Date: 13/01/2025 06:08:27 ******/ +/****** Object: Table [dbo].[CM_TM_LOGS] Script Date: 13/01/2025 16:49:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -17,7 +17,7 @@ CREATE TABLE [dbo].[CM_TM_LOGS]( )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO -/****** Object: Table [dbo].[CM_TM_PATIENTS] Script Date: 13/01/2025 06:08:27 ******/ +/****** Object: Table [dbo].[CM_TM_PATIENTS] Script Date: 13/01/2025 16:49:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON @@ -30,34 +30,39 @@ CREATE TABLE [dbo].[CM_TM_PATIENTS]( [BIRTHDATE] [date] NULL, [SEX] [varchar](10) NULL, [PHONE] [varchar](50) NULL, - [ADDRESS] [varchar](200) NULL + [TAKEN] [varchar](1) NULL ) ON [PRIMARY] GO -/****** Object: Table [dbo].[CM_TM_REQUESTS] Script Date: 13/01/2025 06:08:27 ******/ +/****** Object: Table [dbo].[CM_TM_REQUESTS] Script Date: 13/01/2025 16:49:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CM_TM_REQUESTS]( [REQID] [int] IDENTITY(1,1) NOT NULL, + [REFFID] [text] NULL, [REQNUMBER] [varchar](10) NULL, + [REQTYPE] [varchar](10) NULL, [REQDATE] [datetime] NULL, - [PAYERNAME] [varchar](100) NULL, - [TREATDOC] [varchar](100) NULL, - [PATID] [int] NULL, + [AGENT] [varchar](100) NULL, + [DOC] [varchar](100) NULL, [LOC] [varchar](10) NULL, - [ISTAKEN] [char](1) NULL -) ON [PRIMARY] + [PATID] [int] NULL, + [COMPANY] [varchar](50) NULL, + [REQDESC] [varchar](50) NULL, + [TAKEN] [varchar](1) NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO -/****** Object: Table [dbo].[CM_TM_TESTS] Script Date: 13/01/2025 06:08:27 ******/ +/****** Object: Table [dbo].[CM_TM_TESTS] Script Date: 13/01/2025 16:49:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CM_TM_TESTS]( [REQTESTID] [int] IDENTITY(1,1) NOT NULL, + [REFFID] [text] NULL, [REQID] [int] NOT NULL, [HISCODE] [varchar](10) NOT NULL, [TESTSTATUS] [char](1) NULL -) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO