update new patient endpoint for adding patatt

This commit is contained in:
mahdahar 2025-09-02 13:44:59 +07:00
parent adccdcfd73
commit 532cde9ca0
2 changed files with 78 additions and 19 deletions

View File

@ -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;$i<count($dataPatatt);$i++) {
$dataPatatt[$i]['InternalPID'] = $newInternalPatientId;
}
$this->db->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) {

View File

@ -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