diff --git a/app/Controllers/Patient.php b/app/Controllers/Patient.php index 2da6f05..b925150 100644 --- a/app/Controllers/Patient.php +++ b/app/Controllers/Patient.php @@ -138,7 +138,7 @@ class Patient extends Controller { public function create() { try { $input = $this->request->getJSON(true); - + $now = date('Y-m-d H:i:s'); $LinkTo = null; if (!empty($input['LinkTo'])) { $ids = []; // Temporary @@ -218,7 +218,7 @@ class Patient extends Controller { "DeathIndicator" => ($input['DeathIndicator'] ?? '') !== '' ? (int)$input['DeathIndicator'] : null, "DeathDateTime" => ($input['DeathDateTime'] ?? '') !== '' ? $input['DeathDateTime'] : null, "Custodian" => ($input['Custodian'] ?? '') !== '' ? (int)$input['Custodian'] : null, - "CreateDate" => date('Y-m-d H:i:s'), + "CreateDate" => $now, "DelDate" => null, "LinkTo" => $LinkTo ]; @@ -235,12 +235,24 @@ class Patient extends Controller { $dataPatidt = [ "IdentifierType" => $input['Identity']['IdentifierType'] === '' ? null : ($input['Identity']['IdentifierType'] ?? null), "Identifier" => $input['Identity']['Identifier'] === '' ? null : ($input['Identity']['Identifier'] ?? null), - "CreateDate" => date('Y-m-d H:i:s'), + "CreateDate" => $now, ]; $rulesDataPatidt = [ 'Identifier' => 'required|is_unique[patidt.Identifier]', ]; + + foreach($input['Attachments'] as $attachment) { + $dataPatatt[] = [ + "Address" => $attachment['Address'], + "CreateDate" => $now + ]; + } + + $rulesDataPatatt = [ + 'Address' => 'required|is_unique[patatt.Address]', + ]; + // ========================= // Validasi semua sebelum insert // ========================= @@ -268,15 +280,22 @@ class Patient extends Controller { $this->db->table('patient')->insert($dataPatient); $newInternalPatientId = $this->db->insertID(); + $dataPatidt['InternalPID'] = $newInternalPatientId; + $this->db->table('patidt')->insert($dataPatidt); + + if(isset($dataPatatt)) { + for($i=0;$idb->table('patatt')->insertBatch($dataPatatt); + } + $dbError = $this->db->error(); if (!empty($dbError['message'])) { $this->db->transRollback(); return $this->failServerError('Insert patient failed: ' . $dbError['message']); } - $dataPatidt['InternalPID'] = $newInternalPatientId; - $this->db->table('patidt')->insert($dataPatidt); - $this->db->transComplete(); if ($this->db->transStatus() === false) { diff --git a/public/clqms01.sql b/public/clqms01.sql index 89eb19b..9fd211b 100644 --- a/public/clqms01.sql +++ b/public/clqms01.sql @@ -1,4 +1,4 @@ --- Adminer 5.2.1 MariaDB 10.4.32-MariaDB dump +-- Adminer 5.3.0 MariaDB 11.8.2-MariaDB-1 from Debian dump SET NAMES utf8; SET time_zone = '+00:00'; @@ -7,8 +7,7 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; SET NAMES utf8mb4; -DROP DATABASE IF EXISTS `clqms01`; -CREATE DATABASE `clqms01` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */; +CREATE DATABASE `clqms01`; USE `clqms01`; DROP TABLE IF EXISTS `country`; @@ -347,6 +346,32 @@ CREATE TABLE `patidt` ( PRIMARY KEY (`PatIdtID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +INSERT INTO `patidt` (`PatIdtID`, `InternalPID`, `IdentifierType`, `Identifier`, `EffectiveDate`, `ExpirationDate`, `CreateDate`, `DelDate`) VALUES +(11, 26, 'KTP', '3174011505900001', NULL, NULL, NULL, NULL), +(12, 28, 'KTP', '3174011505900000', NULL, NULL, NULL, NULL), +(13, 29, 'KTP', '32132132', NULL, NULL, NULL, NULL), +(14, 30, 'KTP', 'Q0026', NULL, NULL, NULL, NULL), +(15, 31, 'KTP', 'Q0027', NULL, NULL, NULL, NULL), +(16, 32, 'KTP', 'Q0028', NULL, NULL, '2025-08-09 02:30:29', NULL), +(17, 33, 'KTP', 'Q0029', NULL, NULL, '2025-08-09 05:12:16', NULL), +(18, 34, 'KTP', 'Q0030', NULL, NULL, '2025-08-11 02:31:45', NULL), +(19, 35, 'KTAS', '32232327474', NULL, NULL, '2025-08-11 03:53:04', NULL), +(20, 35, 'KTP', '21321312', NULL, NULL, NULL, NULL), +(22, 36, 'SIM', '23131131', NULL, NULL, '2025-08-11 06:12:13', NULL), +(23, 37, 'KTP', '122121312', NULL, NULL, '2025-08-11 07:14:28', NULL), +(24, 38, 'KTP', 'Q0001', NULL, NULL, '2025-08-12 02:04:16', NULL), +(25, 39, 'KTP', 'Q0002', NULL, NULL, '2025-08-12 02:26:42', NULL), +(26, 40, 'KTP', 'Q0003', NULL, NULL, '2025-08-12 04:00:16', NULL), +(27, 41, 'KTP', 'Q0004', NULL, NULL, '2025-08-12 04:03:37', NULL), +(28, 42, 'PASS', 'Q0005', NULL, NULL, '2025-08-12 04:11:26', NULL), +(29, 43, 'SIM', 'Q0006', NULL, NULL, '2025-08-12 06:11:09', NULL), +(30, 44, 'SSN', 'Q0007', NULL, NULL, '2025-08-12 06:40:15', NULL), +(31, 45, 'KTP', 'Q0008', NULL, NULL, '2025-08-25 02:26:26', NULL), +(32, 46, 'KTP', 'Q0009', NULL, NULL, '2025-08-25 03:02:29', NULL), +(33, 47, 'KTP', 'Q0010', NULL, NULL, '2025-08-25 03:08:34', NULL), +(34, 48, 'KTP', 'Q0011', NULL, NULL, '2025-08-25 03:11:58', NULL), +(35, 49, 'KTP', 'Q0012', NULL, NULL, '2025-08-25 03:28:26', NULL), +(36, 50, 'KTP', 'Q0013', NULL, NULL, '2025-08-25 03:32:41', NULL); DROP TABLE IF EXISTS `patient`; CREATE TABLE `patient` ( @@ -362,19 +387,19 @@ CREATE TABLE `patient` ( `NameAlias` varchar(255) DEFAULT NULL, `Gender` int(11) DEFAULT NULL, `PlaceOfBirth` varchar(255) DEFAULT NULL, - `BirthDate` datetime DEFAULT NULL, + `Birthdate` datetime DEFAULT NULL, `Street_1` varchar(255) DEFAULT NULL, `Street_2` varchar(255) DEFAULT NULL, `Street_3` varchar(255) DEFAULT NULL, `City` varchar(255) DEFAULT NULL, `Province` varchar(255) DEFAULT NULL, `ZIP` varchar(255) DEFAULT NULL, - `CountryID` int(11) DEFAULT NULL, - `Emailaddress1` varchar(255) DEFAULT NULL, - `Emailaddress2` varchar(255) DEFAULT NULL, + `IntCountryID` int(11) DEFAULT NULL, + `EmailAddress1` varchar(255) DEFAULT NULL, + `EmailAddress2` varchar(255) DEFAULT NULL, `Phone` varchar(255) DEFAULT NULL, - `Mobilephone` varchar(255) DEFAULT NULL, - `Mother` int(11) DEFAULT NULL, + `MobilePhone` varchar(255) DEFAULT NULL, + `Custodian` int(11) DEFAULT NULL, `AccountNumber` int(11) DEFAULT NULL, `RaceID` int(11) DEFAULT NULL, `MaritalStatus` varchar(1) DEFAULT NULL, @@ -389,9 +414,24 @@ CREATE TABLE `patient` ( PRIMARY KEY (`InternalPID`), UNIQUE KEY `PatientID` (`PatientID`), UNIQUE KEY `AlternatePID` (`AlternatePID`), - UNIQUE KEY `Emailaddress1` (`Emailaddress1`) + UNIQUE KEY `Emailaddress1` (`EmailAddress1`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +INSERT INTO `patient` (`InternalPID`, `PatientID`, `AlternatePID`, `Prefix`, `NameFirst`, `NameMiddle`, `NameMaiden`, `NameLast`, `Suffix`, `NameAlias`, `Gender`, `PlaceOfBirth`, `Birthdate`, `Street_1`, `Street_2`, `Street_3`, `City`, `Province`, `ZIP`, `IntCountryID`, `EmailAddress1`, `EmailAddress2`, `Phone`, `MobilePhone`, `Custodian`, `AccountNumber`, `RaceID`, `MaritalStatus`, `ReligionID`, `EthnicID`, `Citizenship`, `DeathIndicator`, `DeathDateTime`, `LinkTo`, `CreateDate`, `DelDate`) VALUES +(37, 'Q0050', '0050', 'Kyai', 'Kyai', 'Kyai', 'Kyai', 'Kyai', 'Kyai', 'Kyai', 2, 'Kyai', '2025-08-01 00:00:00', 'Kyai', 'Kyai', 'Kyai', 'jakarta', 'dki', '', 36, 'Kyai@gmail.com', 'Kyai@gmail.comq', '231312312', '143242312', NULL, NULL, 18, 'A', 1, 1, 'Kyai', CONVERT(b'0', UNSIGNED), NULL, '40', '2025-08-11 07:14:28', NULL), +(38, 'Q0001', 'Q0001', 'mr', 'Q0001', 'mid', 'maidn', '', '', '', 2, '', '2025-08-01 00:00:00', '', '', '', '', '', '', 0, 'Q0001@gmail.com', '', '', NULL, NULL, NULL, 0, 'S', 1, 0, '', CONVERT(b'0', UNSIGNED), NULL, NULL, '2025-08-12 02:04:16', NULL), +(39, 'Q0002', 'Q0002', 'mr', 'Q0002', 'mid', 'mad', 'asat', 'ffx', 'boy', 1, 'rere', '2025-08-10 00:00:00', 'st1', 'st2', 'st4', NULL, NULL, NULL, 136, 'Q0002@gmail.com', 'Q0002@gmail.com', '6232324231', '62372837823', NULL, NULL, 17, 'D', 6, 7, 'wna', CONVERT(b'1', UNSIGNED), '2025-08-01 00:12:00', NULL, '2025-08-12 02:26:42', NULL), +(40, 'Q0003', 'Q0003', NULL, 'Q0003', NULL, NULL, NULL, NULL, NULL, 2, NULL, '2025-08-02 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, 0, 'Q0003@gmail.com', NULL, '6232132132166', '6232132132166', NULL, NULL, NULL, NULL, NULL, NULL, NULL, CONVERT(b'0', UNSIGNED), NULL, NULL, '2025-08-12 04:00:16', NULL), +(41, 'Q0004', 'Q0004', '', 'Q0004', '', '', '', '', '', 1, '', '2025-08-01 00:00:00', '', '', '', '', '', '', 0, 'Q0004@gmail.com', '', '623909090', NULL, NULL, NULL, 0, '', 0, 0, '', CONVERT(b'0', UNSIGNED), NULL, NULL, '2025-08-12 04:03:37', NULL), +(42, 'Q0005', 'Q0005', NULL, 'Q0005', NULL, NULL, NULL, NULL, NULL, 1, NULL, '2025-08-01 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, 0, 'Q0005@gmail.com', NULL, '62389238298', '664324324343', 50, NULL, NULL, NULL, NULL, NULL, NULL, CONVERT(b'0', UNSIGNED), NULL, NULL, '2025-08-12 04:11:26', NULL), +(43, 'Q0006', 'Q0006', 'mr', 'Q0006', NULL, NULL, 'boi', NULL, 'Baboy', 2, 'Semarang', '2025-08-01 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, 105, 'Q0006@gmail.com', NULL, '62327837283', NULL, NULL, NULL, NULL, 'M', 2, NULL, 'indon', CONVERT(b'1', UNSIGNED), '2025-08-11 00:13:00', '37,38', '2025-08-12 06:11:09', NULL), +(44, 'Q0007', 'Q0007', 'mr', 'Q0007', 'midone', 'maidun', 'Q0007 mwehehe', NULL, 'babouy', 2, 'Sini', '2025-08-01 00:00:00', 'jl1', NULL, NULL, NULL, NULL, NULL, 19, 'Q0007@gmail.com', NULL, '6237823782', NULL, 43, NULL, 19, 'D', 1, 1, 'ara ara', CONVERT(b'1', UNSIGNED), '2025-08-12 00:13:00', '38,39,40,42', '2025-08-12 06:40:15', '2025-08-12 09:02:59'), +(45, 'Q0008', 'Q0008', NULL, 'Mie', 'Sedaap', NULL, 'Cup', NULL, NULL, 2, NULL, '2025-08-01 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Q0008@gmail.com', NULL, '627382737823', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, CONVERT(b'1', UNSIGNED), '2025-08-19 00:16:00', NULL, '2025-08-25 02:26:26', NULL), +(46, 'Q0009', 'Q0009', NULL, 'Pet', NULL, NULL, 'Food', NULL, NULL, 1, NULL, '2025-08-01 00:00:00', 'st1', NULL, NULL, NULL, NULL, NULL, NULL, 'Q0009@gmail.com', NULL, '623232733', NULL, 43, NULL, NULL, NULL, NULL, NULL, NULL, CONVERT(b'1', UNSIGNED), '2025-08-14 10:12:00', '45', '2025-08-25 03:02:29', NULL), +(47, 'Q0010', 'Q0010', NULL, 'Berat', NULL, NULL, 'Bersih', NULL, NULL, 2, NULL, '2025-08-01 00:00:00', 'st1', NULL, NULL, NULL, NULL, NULL, NULL, 'Q0010@gmail.com', NULL, '62783928933', NULL, 44, NULL, NULL, NULL, NULL, NULL, NULL, CONVERT(b'0', UNSIGNED), NULL, NULL, '2025-08-25 03:08:34', NULL), +(48, 'Q0011', 'Q0011', 'mr', 'Pangeran', NULL, NULL, 'Nipunegoro', NULL, NULL, 1, NULL, '2025-08-01 00:00:00', 'st1', NULL, NULL, NULL, NULL, NULL, NULL, 'Q0011@gmail.com', NULL, '62473434343', NULL, 45, NULL, NULL, NULL, NULL, NULL, NULL, CONVERT(b'0', UNSIGNED), NULL, NULL, '2025-08-25 03:11:58', NULL), +(49, 'Q0012', 'Q0012', 'mr', 'Pangeran', NULL, NULL, 'Nipunegoro', NULL, NULL, 1, NULL, '2025-08-01 00:00:00', 'st1', NULL, NULL, NULL, NULL, NULL, NULL, 'Q0011@gmail1.com', NULL, '62473434343', NULL, 45, NULL, NULL, NULL, NULL, NULL, NULL, CONVERT(b'0', UNSIGNED), NULL, NULL, '2025-08-25 03:28:26', NULL), +(50, 'Q0013', 'Q0013', 'mr', 'Pangeran', NULL, NULL, 'Nipunegoro', NULL, NULL, 1, NULL, '2025-08-01 00:00:00', 'st1', NULL, NULL, NULL, NULL, NULL, NULL, 'Q001211@gmail1.com', NULL, '62473434343', NULL, 45, NULL, NULL, NULL, NULL, NULL, NULL, CONVERT(b'0', UNSIGNED), NULL, NULL, '2025-08-25 03:32:41', NULL); DROP TABLE IF EXISTS `patreglog`; CREATE TABLE `patreglog` ( @@ -547,8 +587,8 @@ INSERT INTO `religion` (`SiteID`, `CodingSysID`, `ReligionID`, `Religion`, `Crea (NULL, NULL, 2, 'Kristen', NULL, NULL), (NULL, NULL, 3, 'Katolik', NULL, NULL), (NULL, NULL, 4, 'Hindu', NULL, NULL), -(NULL, NULL, 5, 'Budha', NULL, NULL), -(NULL, NULL, 6, 'Khong Hu Cu', NULL, NULL), +(NULL, NULL, 5, 'Buddha', NULL, NULL), +(NULL, NULL, 6, 'Konghucu', NULL, NULL), (NULL, NULL, 7, 'Lainnya', NULL, NULL); --- 2025-07-31 22:24:07 UTC +-- 2025-09-02 05:55:52 UTC