4 Commits

5 changed files with 237 additions and 17 deletions

View File

@@ -313,7 +313,7 @@ class Transactionv5 extends MY_Controller
public function post_auth()
{
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/auth/auth.php';
$headers = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken']
@@ -392,7 +392,7 @@ class Transactionv5 extends MY_Controller
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$headers = array(
@@ -948,7 +948,7 @@ class Transactionv5 extends MY_Controller
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . 'api/transaction_full/transaksi.php';
$headers = array(
@@ -1477,7 +1477,7 @@ class Transactionv5 extends MY_Controller
}
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . 'api/medrec?id=' . $noreg;
@@ -1513,7 +1513,7 @@ class Transactionv5 extends MY_Controller
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/medrec';
$headers = [
@@ -1631,7 +1631,7 @@ class Transactionv5 extends MY_Controller
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/medrec';
$headers = [
@@ -1748,7 +1748,7 @@ class Transactionv5 extends MY_Controller
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$headers = array(
@@ -2248,7 +2248,7 @@ class Transactionv5 extends MY_Controller
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$headers = array(
@@ -2744,7 +2744,7 @@ class Transactionv5 extends MY_Controller
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$headers = array(
@@ -3242,7 +3242,7 @@ class Transactionv5 extends MY_Controller
}
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaksi?id=' . $id;
@@ -3301,7 +3301,7 @@ class Transactionv5 extends MY_Controller
}
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaksi?id=' . $labnumber;
@@ -3337,7 +3337,7 @@ class Transactionv5 extends MY_Controller
}
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaksi?id=' . $labnumber;
@@ -3517,7 +3517,7 @@ class Transactionv5 extends MY_Controller
// Get config first before using it
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$headers = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken'],
@@ -3596,7 +3596,7 @@ class Transactionv5 extends MY_Controller
// Get config first before using it
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrlSC'];
$baseUrl = $dt_config['AisConfigBaseUrl'];
$headers = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken'],

View File

@@ -777,6 +777,16 @@ class Order extends MY_Controller
}
}
if ($icd10_code != '') {
$fn_save_icd10 = $this->save_icd10($header_id, $icd10_code, $icd10_display, $userid);
if (!$fn_save_icd10['status']) {
$this->db_smartone->trans_rollback();
$message = $fn_save_icd10['message'] ?? 'Terjadi kesalahan saat menyimpan data ICD10';
$this->sys_error($message);
exit;
}
}
$this->db_smartone->trans_commit();
//print_r($dt_menu);
$xurl = '';
@@ -3614,4 +3624,70 @@ GROUP BY T_SampleStationID ";
return $row;
}
}
function save_icd10($header_id, $icd10_code, $icd10_name, $userid)
{
$check = $this->db_smartone->query(
"SELECT T_OrderHeaderICD10ID FROM t_orderheader_icd10 WHERE T_OrderHeaderICD10T_OrderHeaderID = ? LIMIT 1",
[$header_id]
);
if ($check && $check->num_rows() > 0) {
return ['status' => true];
}
$sql = "INSERT IGNORE INTO t_orderheader_icd10 (
T_OrderHeaderICD10T_OrderHeaderID,
T_OrderHeaderICD10Code,
T_OrderHeaderICD10Name,
T_OrderHeaderICD10IsActive,
T_OrderHeaderICD10Created,
T_OrderHeaderICD10CreatedUserID,
T_OrderHeaderICD10LastUpdated,
T_OrderHeaderICD10LastUpdatedUserID
) VALUES (?, ?, ?, 'Y', NOW(), ?, NOW(), ?)";
$query = $this->db_smartone->query($sql, [
$header_id,
$icd10_code,
$icd10_name,
$userid,
$userid
]);
if (!$query) {
$this->insert_log_error($this->db_smartone->last_query(), ['INSERT_T_ORDERHEADER_ICD10', 'order/save'], [
'header_id' => $header_id,
'icd10_code' => $icd10_code,
'error' => $this->db_smartone->error()
]);
return ['status' => false, 'message' => 'error insert t_orderheader_icd10 | ' . $this->db_smartone->error()['message']];
}
return ['status' => true];
}
function search_icd10()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$sql = "SELECT terminology.*, CONCAT(code,' | ', display) as display_name
FROM one_terminology.terminology
WHERE
attribute_path = 'icd10' AND ( code LIKE CONCAT('%',?,'%') OR MATCH (display) AGAINST (? IN NATURAL LANGUAGE MODE) OR CONCAT(code,' | ', display) LIKE CONCAT('%',?,'%'))
GROUP BY code";
$query = $this->db_onedev->query($sql, array($prm['search'], $prm['search'], $prm['search']));
if (!$query) {
$this->sys_error("Gagal cari ICD10");
}
$result = $query->result_array();
$this->sys_ok($result);
exit;
}
}

View File

@@ -585,13 +585,14 @@ class Px extends MY_Controller
$ids_str = implode(',', array_unique($test_ids));
$sql = "SELECT T_TestID, T_TestNat_GroupID FROM t_test WHERE T_TestID IN ($ids_str)";
$query = $this->db_smartone->query($sql);
$nat_group_map = [];
if ($query) {
foreach ($query->result_array() as $r) {
$result = mysqli_query($this->db_smartone->conn_id, $sql);
if ($result) {
while ($r = mysqli_fetch_assoc($result)) {
$nat_group_map[(int)$r['T_TestID']] = (int)$r['T_TestNat_GroupID'];
}
mysqli_free_result($result);
}
$filtered = [];

View File

@@ -0,0 +1,127 @@
# Dokumentasi API ICD10 — Walk-in Registration Stemcell
Base URL dev:
```text
https://devcpone.aplikasi.web.id/one-api/mockup/fo/walk_in_registration_stemcell/order
```
Semua response API menggunakan format standar:
```json
{
"status": "OK",
"data": []
}
```
Jika gagal:
```json
{
"status": "ERR",
"message": "Pesan error"
}
```
---
## 1. Search ICD10
Digunakan untuk mencari data ICD10 berdasarkan kode atau nama diagnosis. Hasil dapat digunakan untuk mengisi field `selected_icd10` pada saat registrasi.
**Endpoint:**
```http
POST /search_icd10
```
**Request body:**
| Field | Tipe | Wajib | Keterangan |
|----------|--------|-------|-------------------------------------|
| `search` | string | Ya | Kata kunci pencarian (kode / nama) |
**Contoh request:**
```json
{
"search": "diabetes"
}
```
**Contoh response sukses:**
```json
{
"status": "OK",
"data": [
{
"code": "E11",
"display": "Type 2 diabetes mellitus",
"display_name": "E11 | Type 2 diabetes mellitus"
},
{
"code": "E10",
"display": "Type 1 diabetes mellitus",
"display_name": "E10 | Type 1 diabetes mellitus"
}
]
}
```
**Contoh curl:**
```bash
curl -X POST "https://devcpone.aplikasi.web.id/one-api/mockup/fo/walk_in_registration_stemcell/order/search_icd10" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{"search": "diabetes"}'
```
**Catatan:**
- Pencarian mendukung kode ICD10 (contoh: `E11`), nama diagnosis, maupun kombinasi keduanya.
- Gunakan field `code` dan `display` dari hasil pencarian untuk mengisi `selected_icd10` pada payload `save`.
---
## 2. Save (dengan ICD10)
Fungsi `save` yang sudah ada kini secara otomatis menyimpan data ICD10 ke tabel `t_orderheader_icd10` jika field `selected_icd10` diisi.
**Endpoint:**
```http
POST /save
```
**Tambahan field pada request body:**
| Field | Tipe | Wajib | Keterangan |
|-----------------|--------|-------|--------------------------------------------------|
| `selected_icd10` | object | Tidak | Objek ICD10 yang dipilih dari hasil `search_icd10` |
**Struktur `selected_icd10`:**
| Field | Tipe | Keterangan |
|-----------|--------|-------------------------|
| `code` | string | Kode ICD10 (contoh: `E11`) |
| `display` | string | Nama diagnosis |
**Contoh potongan request body:**
```json
{
"selected_icd10": {
"code": "E11",
"display": "Type 2 diabetes mellitus"
},
...field lainnya seperti biasa...
}
```
**Perilaku:**
- Jika `selected_icd10` tidak diisi atau `code` kosong, data ICD10 tidak disimpan dan proses save tetap berjalan normal.
- Jika `selected_icd10` diisi, sistem akan menyimpan satu record ke `t_orderheader_icd10`.
- Satu order header hanya boleh punya satu record ICD10. Jika sudah ada, insert akan dilewati (tidak error).
- Jika insert ICD10 gagal, seluruh transaksi save akan di-rollback.

View File

@@ -0,0 +1,16 @@
CREATE TABLE IF NOT EXISTS cpone.`t_orderheader_icd10` (
`T_OrderHeaderICD10ID` INT NOT NULL AUTO_INCREMENT,
`T_OrderHeaderICD10T_OrderHeaderID` INT NOT NULL DEFAULT 0,
`T_OrderHeaderICD10Code` VARCHAR(25) DEFAULT NULL,
`T_OrderHeaderICD10Name` TEXT DEFAULT NULL,
`T_OrderHeaderICD10IsActive` CHAR(1) NOT NULL DEFAULT 'Y',
`T_OrderHeaderICD10Created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`T_OrderHeaderICD10CreatedUserID` INT NOT NULL DEFAULT 0,
`T_OrderHeaderICD10LastUpdated` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`T_OrderHeaderICD10LastUpdatedUserID` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`T_OrderHeaderICD10ID`),
KEY `T_OrderHeaderICD10T_OrderHeaderID` (`T_OrderHeaderICD10T_OrderHeaderID`),
KEY `T_OrderHeaderICD10Code` (`T_OrderHeaderICD10Code`),
KEY `T_OrderHeaderICD10IsActive` (`T_OrderHeaderICD10IsActive`),
UNIQUE KEY `uq_orderheader_icd10` (`T_OrderHeaderICD10T_OrderHeaderID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;