Update Patients API
This commit is contained in:
parent
7b69906c13
commit
8d9ba774da
@ -16,4 +16,5 @@ $routes->post('/auth/register/', 'Auth::register');
|
||||
|
||||
$routes->get('/patient', 'Patient::index');
|
||||
$routes->post('/patient', 'Patient::create');
|
||||
$routes->delete('/patient/(:any)', 'Patient::delete/$1');
|
||||
$routes->patch('/patient/(:num)', 'Patient::update/$1');
|
||||
@ -12,7 +12,10 @@ class Patient extends Controller {
|
||||
$this->db = \Config\Database::connect();
|
||||
}
|
||||
|
||||
// OK
|
||||
public function index() {
|
||||
|
||||
try {
|
||||
$pat_num = $this->request->getVar('pat_num');
|
||||
$pat_altnum = $this->request->getVar('pat_altnum');
|
||||
$pat_name = $this->request->getVar('pat_name');
|
||||
@ -38,39 +41,66 @@ class Patient extends Controller {
|
||||
|
||||
$filteredPatients = $builder->get()->getResultArray();
|
||||
|
||||
// Data pasien tidak ada mengembalikan - success 200
|
||||
if (empty($filteredPatients)) {
|
||||
return $this->failNotFound([
|
||||
'status' => 'error',
|
||||
'message' => 'No patient records found matching the criteria.'
|
||||
]);
|
||||
}
|
||||
|
||||
return $this->respond([
|
||||
'status' => 'success',
|
||||
'data' => $filteredPatients,
|
||||
]);
|
||||
'message' => 'No patient records found matching the criteria.',
|
||||
'data' => []
|
||||
], 200);
|
||||
}
|
||||
|
||||
// Data pasien ditemukan dan mengembalikan - success 200
|
||||
return $this->respond([
|
||||
'status' => 'success',
|
||||
'message'=> "Patients fetched successfully",
|
||||
'data' => $filteredPatients,
|
||||
], 200);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
|
||||
// Error Server Mengembalikan 500
|
||||
return $this->failServerError('Something went wrong');
|
||||
}
|
||||
}
|
||||
|
||||
// OK
|
||||
public function show($id = null) {
|
||||
|
||||
try {
|
||||
|
||||
$builder = $this->db->table('patients');
|
||||
$patient = $builder->where('pat_num', $id)->get()->getRowArray();
|
||||
|
||||
// Data pasien tidak ada mengembalikan - success 200
|
||||
if (empty($patient)) {
|
||||
return $this->failNotFound([
|
||||
'status' => 'error',
|
||||
'message' => 'Patient with ID ' . $id . ' not found.'
|
||||
]);
|
||||
}
|
||||
|
||||
return $this->respond([
|
||||
'status' => 'success',
|
||||
'message' => 'Patient with ID ' . $id . ' not found.',
|
||||
'data' => [],
|
||||
], 200);
|
||||
}
|
||||
|
||||
// Data pasien ditemukan dan mengembalikan - success 200
|
||||
return $this->respond([
|
||||
'status' => 'success',
|
||||
'message'=> "Patient Show Successfully",
|
||||
'data' => $patient,
|
||||
]);
|
||||
], 200);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
|
||||
// Error Server Mengembalikan 500
|
||||
return $this->failServerError('Something went wrong');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// OK
|
||||
public function create() {
|
||||
$data = $this->request->getJSON(true);
|
||||
|
||||
try {
|
||||
$input = $this->request->getJSON(true);
|
||||
|
||||
// $datas = [
|
||||
// 'name_first' => $data['name_first'],
|
||||
@ -105,36 +135,36 @@ class Patient extends Controller {
|
||||
// 'create_date' => date('Y-m-d H:i:s'),
|
||||
// ];
|
||||
|
||||
$datas = [
|
||||
'name_first' => $data['firstName'], // Mengambil dari firstName
|
||||
'name_last' => $data['lastName'], // Mengambil dari lastName
|
||||
'name_middle' => $data['middleName'] ?? null, // Mengambil dari middleName
|
||||
'name_maiden' => $data['maindenName'] ?? null, // Mengambil dari maindenName
|
||||
'pat_num' => $data['patientID'], // Mengambil dari patientID
|
||||
'prefix' => $data['title'] ?? null, // Mengambil dari title
|
||||
'suffix' => $data['suffixName'] ?? null, // Mengambil dari suffixName
|
||||
'birth_date' => $data['birthdate'] ?? null, // Mengambil dari birthdate
|
||||
'pat_altnum' => $data['alternateID'] ?? null, // Mengambil dari alternateID
|
||||
'address_1' => $data['street1'] ?? null, // Mengambil dari street1
|
||||
'address_2' => $data['street2'] ?? null, // Mengambil dari street2
|
||||
'address_3' => $data['placeOfBirthdate'] ?? null, // Memetakan placeOfBirthdate ke address_3, jika diperlukan
|
||||
'city' => $data['city'] ?? null, // Mengambil dari city
|
||||
'province' => $data['province'] ?? null, // Mengambil dari province
|
||||
$data = [
|
||||
'name_first' => $input['firstName'], // Mengambil dari firstName
|
||||
'name_last' => $input['lastName'], // Mengambil dari lastName
|
||||
'name_middle' => $input['middleName'] ?? null, // Mengambil dari middleName
|
||||
'name_maiden' => $input['maindenName'] ?? null, // Mengambil dari maindenName
|
||||
'pat_num' => $input['patientID'], // Mengambil dari patientID
|
||||
'prefix' => $input['title'] ?? null, // Mengambil dari title
|
||||
'suffix' => $input['suffixName'] ?? null, // Mengambil dari suffixName
|
||||
'birth_date' => $input['birthdate'] ?? null, // Mengambil dari birthdate
|
||||
'pat_altnum' => $input['alternateID'] ?? null, // Mengambil dari alternateID
|
||||
'address_1' => $input['street1'] ?? null, // Mengambil dari street1
|
||||
'address_2' => $input['street2'] ?? null, // Mengambil dari street2
|
||||
'address_3' => $input['placeOfBirthdate'] ?? null, // Memetakan placeOfBirthdate ke address_3, jika diperlukan
|
||||
'city' => $input['city'] ?? null, // Mengambil dari city
|
||||
'province' => $input['province'] ?? null, // Mengambil dari province
|
||||
'zip' => null, // Tidak ada padanan langsung di newPatientForm, bisa diisi manual atau dari input lain
|
||||
'email_1' => $data['email1'] ?? null, // Mengambil dari email1
|
||||
'email_2' => $data['email2'] ?? null, // Mengambil dari email2
|
||||
'phone' => $data['phone'] ?? null, // Mengambil dari phone
|
||||
'mobile_phone' => $data['mobile'] ?? null, // Mengambil dari mobile
|
||||
'mother' => $data['motherName'] ?? null, // Mengambil dari motherName
|
||||
'email_1' => $input['email1'] ?? null, // Mengambil dari email1
|
||||
'email_2' => $input['email2'] ?? null, // Mengambil dari email2
|
||||
'phone' => $input['phone'] ?? null, // Mengambil dari phone
|
||||
'mobile_phone' => $input['mobile'] ?? null, // Mengambil dari mobile
|
||||
'mother' => $input['motherName'] ?? null, // Mengambil dari motherName
|
||||
'account_number' => null, // Tidak ada padanan langsung, bisa diisi manual atau dari input lain
|
||||
'marital_status' => $data['maritalStatus'] ?? null, // Mengambil dari maritalStatus
|
||||
'marital_status' => $input['maritalStatus'] ?? null, // Mengambil dari maritalStatus
|
||||
'country_id' => null, // Tidak ada padanan langsung, perlu penyesuaian jika ada input negara
|
||||
// 'race_id' => $data['race'] ?? null, // Mengambil dari race
|
||||
// 'religion_id' => $data['religion'] ?? null, // Mengambil dari religion
|
||||
// 'ethnic_id' => $data['ethnic'] ?? null, // Mengambil dari ethnic
|
||||
'citizenship' => null, // Tidak ada padanan langsung, perlu penyesuaian jika ada input kewarganegaraan
|
||||
'death' => $data['death'] ?? null, // Mengambil dari death (asumsi 0/1 atau boolean)
|
||||
'death_date' => $data['deathTime'] ?? null, // Mengambil dari deathTime
|
||||
'death' => $input['death'] ?? null, // Mengambil dari death (asumsi 0/1 atau boolean)
|
||||
'death_date' => $input['deathTime'] ?? null, // Mengambil dari deathTime
|
||||
'create_date' => date('Y-m-d H:i:s'), // Ini adalah tanggal dan waktu saat ini di server PHP
|
||||
];
|
||||
|
||||
@ -152,23 +182,72 @@ class Patient extends Controller {
|
||||
'city' => 'permit_empty',
|
||||
];
|
||||
|
||||
if (!$this->validateData($datas, $rules)) {
|
||||
return $this->failValidationErrors($this->validator->getErrors());
|
||||
// Request dari client tidak valid atau tidak bisa diproses oleh server - 400
|
||||
if (!$this->validateData($data, $rules)) {
|
||||
return $this->respond([
|
||||
'status' => 'error',
|
||||
'message' => 'Validation failed',
|
||||
'errors' => $this->validator->getErrors()
|
||||
], 400);
|
||||
}
|
||||
|
||||
$this->db->table('patients')->insert($datas);
|
||||
$this->db->table('patients')->insert($data);
|
||||
$newPatientId = $this->db->insertID();
|
||||
|
||||
// Sukses & Insert = 201 - Kirim data patient ID
|
||||
return $this->respondCreated([
|
||||
'status' => 'success',
|
||||
'message' => 'Patient created successfully',
|
||||
'pat_id' => $newPatientId
|
||||
]);
|
||||
'data' => $newPatientId
|
||||
], 201);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
|
||||
// Error Server = 500
|
||||
return $this->failServerError('Something went wrong');
|
||||
}
|
||||
}
|
||||
|
||||
// OK
|
||||
public function update($pat_id = null) {
|
||||
$data = $this->request->getJSON(true);
|
||||
|
||||
try {
|
||||
$input = $this->request->getJSON(true);
|
||||
|
||||
$data = [
|
||||
'name_first' => $input['name_first'], // Mengambil dari firstName
|
||||
'name_last' => $input['name_last'], // Mengambil dari lastName
|
||||
'name_middle' => $input['middleName'] ?? null, // Mengambil dari middleName
|
||||
'name_maiden' => $input['maindenName'] ?? null, // Mengambil dari maindenName
|
||||
'pat_num' => $input['pat_num'], // Mengambil dari patientID
|
||||
'prefix' => $input['title'] ?? null, // Mengambil dari title
|
||||
'suffix' => $input['suffixName'] ?? null, // Mengambil dari suffixName
|
||||
'birth_date' => $input['birthdate'] ?? null, // Mengambil dari birthdate
|
||||
'pat_altnum' => $input['alternateID'] ?? null, // Mengambil dari alternateID
|
||||
'address_1' => $input['street1'] ?? null, // Mengambil dari street1
|
||||
'address_2' => $input['street2'] ?? null, // Mengambil dari street2
|
||||
'address_3' => $input['placeOfBirthdate'] ?? null, // Memetakan placeOfBirthdate ke address_3, jika diperlukan
|
||||
'city' => $input['city'] ?? null, // Mengambil dari city
|
||||
'province' => $input['province'] ?? null, // Mengambil dari province
|
||||
'zip' => null, // Tidak ada padanan langsung di newPatientForm, bisa diisi manual atau dari input lain
|
||||
'email_1' => $input['email1'] ?? null, // Mengambil dari email1
|
||||
'email_2' => $input['email2'] ?? null, // Mengambil dari email2
|
||||
'phone' => $input['phone'] ?? null, // Mengambil dari phone
|
||||
'mobile_phone' => $input['mobile'] ?? null, // Mengambil dari mobile
|
||||
'mother' => $input['motherName'] ?? null, // Mengambil dari motherName
|
||||
'account_number' => null, // Tidak ada padanan langsung, bisa diisi manual atau dari input lain
|
||||
'marital_status' => $input['maritalStatus'] ?? null, // Mengambil dari maritalStatus
|
||||
'country_id' => null, // Tidak ada padanan langsung, perlu penyesuaian jika ada input negara
|
||||
'citizenship' => null, // Tidak ada padanan langsung, perlu penyesuaian jika ada input kewarganegaraan
|
||||
'death' => $input['death'] ?? null, // Mengambil dari death (asumsi 0/1 atau boolean)
|
||||
'death_date' => $input['deathTime'] ?? null, // Mengambil dari deathTime
|
||||
'create_date' => date('Y-m-d H:i:s'), // Ini adalah tanggal dan waktu saat ini di server PHP
|
||||
];
|
||||
|
||||
// Apakah Pasien Ada
|
||||
$existingPatient = $this->db->table('patients')->where('pat_id', $pat_id)->get()->getRowArray();
|
||||
|
||||
// Mengembalikan 404
|
||||
if (empty($existingPatient)) {
|
||||
return $this->failNotFound('Patient with ID ' . $pat_id . ' not found.');
|
||||
}
|
||||
@ -187,8 +266,8 @@ class Patient extends Controller {
|
||||
'city' => 'permit_empty',
|
||||
];
|
||||
|
||||
// Validate the input data
|
||||
if (!$this->validate($rules)) {
|
||||
// Request dari client tidak valid atau tidak bisa diproses oleh server - 400
|
||||
if (!$this->validateData($data, $rules)) {
|
||||
return $this->failValidationErrors($this->validator->getErrors());
|
||||
}
|
||||
|
||||
@ -206,15 +285,56 @@ class Patient extends Controller {
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($datas)) {
|
||||
if (empty($data)) {
|
||||
return $this->failValidationError('No data provided for update.');
|
||||
}
|
||||
|
||||
$this->db->table('patients')->where('pat_id', $pat_id)->update($datas);
|
||||
$this->db->table('patients')->where('pat_id', $pat_id)->update($data);
|
||||
|
||||
return $this->respond([
|
||||
// Sukses & Insert = 201 - Kirim data patient ID
|
||||
return $this->respondCreated([
|
||||
'status' => 'success',
|
||||
'message' => 'Patient updated successfully',
|
||||
'pat_id' => $pat_id
|
||||
'data' => $data
|
||||
], 201);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
// Error Server = 500
|
||||
return $this->failServerError('Something went wrong '.$e);
|
||||
}
|
||||
}
|
||||
|
||||
// OK
|
||||
public function delete($pat_id = null) {
|
||||
|
||||
try {
|
||||
|
||||
if (!$pat_id) {
|
||||
return $this->failValidationError('Patient ID is required.');
|
||||
}
|
||||
|
||||
// Cari data pasien
|
||||
$patient = $this->db->table('patients')
|
||||
->where('pat_id', $pat_id)
|
||||
->get()
|
||||
->getRow();
|
||||
|
||||
if (!$patient) {
|
||||
return $this->failNotFound("Patient ID with {$pat_id} not found.");
|
||||
}
|
||||
|
||||
// Hapus data pasien berdasarkan pat_num
|
||||
$this->db->table('patients')->where('pat_id', $pat_id)->delete();
|
||||
|
||||
// Mengembalikan 200
|
||||
return $this->respondDeleted([
|
||||
'status' => 'success',
|
||||
'message' => "Patient ID with {$pat_id} deleted successfully."
|
||||
]);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return $this->failServerError("Internal server error: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user