clqms-fe1/docs/use_case_260214.md
mahdahar f7a884577f feat: Add ADT history, specimens API, and enhance master data pages
- Add VisitADTHistoryModal for ADT tracking
- Create specimens API client
- Add HelpTooltip component
- Enhance all master data pages with improved UI
- Update patient pages and visit management
- Add implementation plans and API docs
2026-02-15 17:58:42 +07:00

27 KiB
Raw Blame History

Here is the converted Markdown format of the Use Case document. I have structured it with headers and lists to make it easily parsable by an AI agent.

# Use Case Document

## Use Case  Authentication
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-01 |
| **Use Case Name** | Authentication |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Phlebotomist Lab, Perawat, DSPK/Konsulen, Supervisor Lab, Manajer Lab, Database Administrator, System Administrator |
| **Aktor Sekunder** | - |
| **Tujuan** | Verifikasi identitas pengguna, yang mencoba mengakses sistem, memastikan bahwa mereka adalah orang yang mereka klaim. Bertindak sebagai mekanisme keamanan primer untuk mencegah akses tidak sah, melindungi data, dan mengurangi risiko seperti pencurian identitas dan pelanggaran keamanan. |
| **Prasyarat** | Data pengguna sudah terdefinisi dalam sistem sebagai User atau Contact. |

### Alur Utama
1. Aktor klik tombol Login.
2. System menampilkan login dialog yang terdiri dari User ID dan Password.
3. Aktor memasukkan email address sebagai User ID.
4. System memeriksa email address di table User, SiteStatus, Contact dan ContactDetail:
   - Jika Aktor menggunakan email pribadi, maka System menampilkan pilihan sites dimana Aktor memiliki akses. Aktor, kemudian memilih salah satu site.
   - Jika Aktor menggunakan email site, maka System langsung mengarahkan ke site yang bersangkutan.
5. Aktor memasukkan password.
6. System memeriksa kebenaran User ID dan password.
7. System memeriksa role dan menu apa saja yang bisa diakses Aktor.
8. System menampilkan halaman utama dengan menu sesuai role Aktor.

### Alur Alternatif
-

### Alur Pengecualian
*   **Aktor tidak terdaftar:**
    *   System menampilkan pesan: “Unregistered user, please contact system administrator”.
*   **Aktor ditemukan tetapi:**
    *   **Disabled:** System menampilkan pesan: “Disabled user, please contact system administrator”.
    *   **Password expired:** System menampilkan pesan: “Your password is expired, please contact system administrator”.
    *   **Password salah:** 
        *   System menampilkan pesan: “Invalid login”.
        *   System menghitung jumlah percobaan login password yang gagal dan mencatat dalam Audit log (device dimana login attempt dilakukan, waktu).
        *   System menghentikan proses login untuk User ID tersebut selama x jam dan menampilkan pesan, ”Please try again in x hours or contact system administrator”.

### Kondisi Akhir
*   Aktor masuk ke halaman utama dan mendapat akses menu-menu system yang sesuai.
*   Audit mencatat User ID, waktu, device dimana Aktor melakukan login.

---

## Use Case  Patient Registration
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-02a |
| **Use Case Name** | Patient Registration |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Mencatatkan data demografi pasien baru ke oleh System |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi dalam System.<br>3. Pasien menunjukkan identitas yang sah (kartu identitas, atau rujukan). |

### Alur Utama
1. Aktor membuka halaman Patient Management  Patient Registration.
2. Aktor memasukkan PID.
3. System memeriksa apakah PID sudah ada.
4. System meminta detail pasien (nama, tanggal lahir, jenis kelamin, informasi kontak, nomor identitas, dst).
5. Aktor memasukkan informasi demografis pasien, dengan mandatory data:
   - patient.NameFirst
   - patient.Gender
   - patient.Birthdate
6. Jika Aktor memasukkan `patidt.IdentifierType` dan `patidt.Identifier`, maka System memeriksa apakah sudah ada record pasien yang menggunakan Identifier yang sama.
7. System membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A04` (Register), mengkonfirmasi registrasi berhasil dan menampilkan ringkasan pasien.
8. Aktor memberikan konfirmasi pendaftaran kepada Pasien (misalnya, slip cetak atau ID digital  barcode, QRIS, dll).

### Alur Alternatif
*   **Record pasien sudah ada:**
    1. Aktor memasukkan PID.
    2. System mengambil record yang sudah ada dan menampilkan data di halaman Patient Management  Patient Search & Update.
    3. Aktor memperbarui data jika diperlukan.
    4. Sistem menyimpan perubahan dan membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A08` (Update patient information).

### Alur Pengecualian
*   **Mandatory data tidak ada:**
    *   System menolak menyimpan record.
    *   Aktor diminta untuk melengkapi, setidaknya mandatory data.
*   **Record pasien tidak ada tetapi ditemukan record yang menggunakan `patidt.IdentifierType` dan `patidt.Identifier` yang sama:**
    *   System menampilkan pesan Multiple IDs found”.
    *   System menampilkan records dengan `patidt.IdentifierType` dan `patidt.Identifier` yang sama.
    *   Aktor melakukan review.
    *   Aktor memilih salah satu dari kemungkinan berikut:
        1. Melanjutkan membuat record pasien baru, mengabaikan record ganda.
        2. Melanjutkan membuat record pasien baru, kemudian menggabungkan record pasien (lihat UC-02b).
        3. Membatalkan pendaftaran.

### Kondisi Akhir
*   Record pasien dibuat atau diperbarui di System.
*   PID pasien tersedia untuk test ordering & tracing.
*   Audit mencatat bahwa record dibuat/diperbarui secara manual, User ID yang mendaftarkan/memperbarui data pasien, device dimana, kapan, dan data apa yang dimasukkan.

---

## Use Case  Patient Link
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-02b |
| **Use Case Name** | Patient Link |
| **Aktor Utama** | Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Link (menghubungkan) satu atau beberapa record (PID) pasien (source) dengan record pasien lainnya (destination). PatientID destination adalah surviving entity, yang akan digunakan dalam semua aktivitas laboratorium. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi dalam System.<br>3. PID source dan destination telah tercatat dalam System.<br>4. PID source dan destination memiliki `patidt.IdentifierType` dan `patidt.Identifier` yang sama atau nama, alamat dan tanggal lahir yang sama. |

### Alur Utama
1. Aktor membuka halaman Patient Management - Patient Link.
2. Aktor mencari PID menggunakan:
   - `patidt.IdentifierType` dan `patidt.Identifier`
   - Nama, alamat dan tanggal lahir
3. System menampilkan semua PID dengan `patidt.IdentifierType` dan `patidt.Identifier` dan/atau nama, alamat dan tanggal lahir yang sama.
4. Aktor memilih dan menentukan satu PID untuk menjadi destination. (Lihat Alur Pengecualian).
5. Aktor memilih dan menentukan satu atau lebih, PID yang menjadi source. (Lihat Alur Pengecualian).
6. Aktor menghubungkan PID-PID tersebut dengan menekan tombol Link.
7. System meminta konfirmasi dari Aktor dengan menampilkan pesan,” Please confirm to link these patient records”. Disertai pilihan “Confirm” dan “Cancel”.
8. Aktor mengkonfirmasi Patient Link dengan menekan tombol Confirm.
9. System melakukan:
   - Membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A24` (Link Patient Information).
   - Mengkonfirmasi Patient Link berhasil.
   - Menampilkan ringkasan PID yang dihubungkan.

### Alur Alternatif
-

### Alur Pengecualian
*   **System menemukan bahwa suatu record pasien telah menjadi source, ditandai dengan field `patient.LinkTo` telah terisi dengan PID dari record lain (ditampilkan):**
    *   **Multiple link:**
        *   Aktor memilih dan menunjuk record tersebut sebagai source bagi PID yang berbeda.
        *   System menampilkan peringatan “Multiple link” di samping PID tersebut dan pilihan (check mark) tidak bisa dilakukan.
    *   **Multi-level Link:**
        *   Aktor memilih dan menunjuk record tersebut sebagai destination bagi PID yang berbeda.
        *   System menampilkan peringatan “Multi-level link” di samping PID tersebut dan pilihan (check mark) tidak bisa dilakukan.
    *   Jika semua atau satu-satunya PID mendapat peringatan tersebut maka, proses Patient Link sama sekali tidak bisa dilanjutkan.
    *   Jika ada PID lain yang tidak mendapat peringatan, maka proses Patient Link dilanjutkan atas PID tanpa peringatan.

### Kondisi Akhir
*   PID source terhubung dengan PID destination.
*   Relasi source dengan test order dan lain-lain tidak berubah sebelum dan sesudah proses Patient Link.
*   Semua test order milik PID source dan destination bisa ditampilkan dalam satu cumulative view/report.
*   PID destination tersedia untuk test ordering & tracing.
*   PID source tetap bisa dicari tetapi tidak bisa di-edit maupun digunakan untuk test ordering.
*   Audit mencatat Patient Link dilakukan secara manual, waktu, User ID yang melakukan Patient Link serta device dimana aktivitas tersebut dilakukan.

---

## Use Case  Patient Unlink
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-02c |
| **Use Case Name** | Patient Unlink |
| **Aktor Utama** | Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Melepaskan link antara source PID dan destination PID. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi dalam System.<br>3. Pasien sudah pernah registrasi di System, ditandai dengan adanya PID dengan `patidt.IdentifierType` dan `patidt.Identifier` yang sama. |

### Alur Utama
1. Aktor membuka halaman Patient Management  Patient Unlink.
2. Aktor mencari record pasien menggunakan PID.
3. System menampilkan PID berikut data demografinya dan semua linked PID.
4. Aktor uncheck source PID(s) yang hendak dilepaskan dari destination PID.
5. Aktor melepas hubungan PID-PID tersebut dengan menekan tombol Unlink.
6. System meminta konfirmasi dari Aktor dengan menampilkan pesan,” Please confirm to unlink these patient records”. Disertai pilihan “Confirm” dan “Cancel”.
7. Aktor mengkonfirmasi Patient Unink dengan menekan tombol Confirm.
8. System melakukan:
   - Mengosongkan field `patient.LinkTo` dari source PID.
   - Membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A37` (Unlink Patient Information).
   - Mengkonfirmasi Patient Unlink berhasil.
   - Menampilkan ringkasan destination dan source PID yang unlinked.

### Alur Alternatif
-

### Alur Pengecualian
-

### Kondisi Akhir
*   Source PID aktif kembali, bisa diedit dan tersedia untuk test ordering & tracing.
*   Unlink source terjadi bisa isi field LinkTo dikosongkan Kembali.
*   Audit mencatat Patient Unlink dilakukan secara manual, waktu, User ID yang melakukan Patient Unlink dan device dimana aktivitas tersebut dilakukan.

---

## Use Case  Patient Admission
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-03a |
| **Use Case Name** | Patient Admission |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Menerima pasien di fasyankes untuk perawatan atau observasi. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Record pasien tersedia di System, ditandai dengan adanya PID. |

### Alur Utama
1. Aktor membuka halaman Patient Visit Management  Patient Admission.
2. Aktor memasukkan PID.
3. System memeriksa apakah PID ada.
4. System menampilkan data demografi pasien dan meminta data-data:
   - **Mandatory data:** PVID, dokter, location.
   - **Optional data:** EpisodeID, diagnosis (bisa lebih dari satu), lampiran-lampiran.
5. System membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A01` (Admit), mengkonfirmasi admission berhasil dan menampilkan ringkasan admission.
6. Aktor memberikan konfirmasi admission kepada Pasien (misalnya, slip cetak atau ID digital  barcode, QRIS, dll).

### Alur Alternatif
*   **PID tidak ada:**
    1. System menampilkan pesan, “PID does not exist. Proceed to Patient Registration?”.
    2. Aktor memilih “Yes” dan System membuka halaman Patient Management  Patient Registration.
    3. Aktor melakukan activity patient registration dilanjutkan patient admission.
*   **Pembaruan optional data:**
    1. Aktor membuka halaman Patient Visit Management  Admission Search & Update.
    2. Aktor memasukkan PVID.
    3. System mengambil record yang sudah ada.
    4. Aktor memperbarui data jika diperlukan.
    5. Sistem menyimpan perubahan.

### Alur Pengecualian
*   **Mandatory data tidak ada:**
    *   System menolak menyimpan record.
    *   Aktor diminta untuk melengkapi, setidaknya mandatory data.

### Kondisi Akhir
*   Kunjungan pasien ke fasyankes tercatat (patvisit records) di System, ditandai dengan adanya PVID dan direlasikan dengan dokter dan ruangan di fasyankes.
*   Audit mencatat admission/perubahannya dilakukan secara manual, User ID yang melakukan, device dimana, kapan, dan data apa saja yang dimasukkan.

---

## Use Case  Cancel Admission
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-03b |
| **Use Case Name** | Cancel Patient Admission |
| **Aktor Utama** | Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Membatalkan penerimaan pasien di fasyankes. Pembatalan bisa disebabkan: Data registrasi salah atau tidak lengkap, Cakupan asuransi tidak valid, Pasien menolak rawat inap, Pasien dialihkan, Permintaan rawat inap salah, Kondisi pasien berubah, Permintaan pasien, dll. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Patient Visit Record tersedia di System, ditandai dengan adanya PVID. |

### Alur Utama
1. Aktor membuka halaman Patient Visit Management  Admission Search & Update.
2. Aktor memasukkan PVID.
3. System menampilkan data admission pasien.
4. Aktor mengkonfirmasi pembatalan admission ke pihak terkait dan melakukan pembatalan.
5. System membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A11` (Cancel Admit), mengkonfirmasi cancel patient admission berhasil dan menampilkan ringkasan cancel patient admission.
6. Aktor memberikan konfirmasi cancel patient admission kepada pihak terkait (misalnya, slip cetak atau ID digital  barcode, QRIS, dll).

### Alur Alternatif
-

### Alur Pengecualian
-

### Kondisi Akhir
*   Cancel patient admission tercatat (patvisit records) di System, ditandai dengan record di `patvisitadt` dengan `patvisitadt.Code: A11`.
*   Audit mencatat cancel patient admission dilakukan secara manual, User ID yang melakukan, device dimana, kapan, dan data apa yang dimasukkan.

---

## Use Case  Change Attending Doctor
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-03c |
| **Use Case Name** | Change Attending Doctor |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Mengganti dokter yang bertanggung jawab atas pengobatan pasien (DPJP). |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Patient Visit Record tersedia di System, ditandai dengan adanya PVID dan telah memiliki data Attending Doctor (`patvisitadt.AttDoc`). |

### Alur Utama
1. Aktor membuka halaman Patient Visit Management  Admission Search & Update.
2. Aktor memasukkan PVID.
3. System menampilkan data admission pasien.
4. Aktor mengganti Attending Doctor.
5. System membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A54` (Change Attending Doctor), mengkonfirmasi penggantian dokter berhasil dan menampilkan data admission yang telah diperbarui.

### Alur Alternatif
-

### Alur Pengecualian
-

### Kondisi Akhir
*   Penggantian Attending Doctor di System sehingga bisa dilakukan pelacakan Attending Doctor sekarang dan sebelumnya.
*   Audit mencatat User ID yang melakukan perubahan Attending Doctor, device dimana perubahan dilakukan, kapan.

---

## Use Case  Change Consulting Doctor
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-03d |
| **Use Case Name** | Change Consulting Doctor |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Mengganti dokter konsulen. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Patient Visit Record tersedia di System, ditandai dengan adanya PVID dan telah memiliki data Consulting Doctor (`patvisitadt.CnsDoc`). |

### Alur Utama
1. Aktor membuka halaman Patient Visit Management  Admission Search & Update.
2. Aktor memasukkan PVID.
3. System menampilkan data admission pasien.
4. Aktor mengganti Consulting Doctor.
5. System membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A61` (Change Consulting Doctor), mengkonfirmasi penggantian dokter berhasil dan menampilkan data admission yang telah diperbarui.

### Alur Alternatif
-

### Alur Pengecualian
-

### Kondisi Akhir
*   Penggantian Consulting Doctor di System sehingga bisa dilakukan pelacakan Consulting Doctor sekarang dan sebelumnya.
*   Audit mencatat User ID yang melakukan perubahan Consulting Doctor, device dimana perubahan dilakukan, kapan.

---

## Use Case  Patient Transfer
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-04 |
| **Use Case Name** | Patient Transfer |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Memindahkan pasien dari satu lokasi ke lokasi lainnya. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Patient Visit Record tersedia di System, ditandai dengan adanya PVID dan telah memiliki data Location ID (`patvisitadt.LocationID`). |

### Alur Utama
1. Aktor membuka halaman Patient Visit Management  Transfer.
2. Aktor memasukkan PVID.
3. System menampilkan data admission pasien.
4. Aktor mengganti Location ID.
5. System membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A02` (Patient Transfer), mengkonfirmasi perpindahan lokasi berhasil dan menampilkan data admission yang telah diperbarui.

### Alur Alternatif
-

### Alur Pengecualian
-

### Kondisi Akhir
*   Penggantian Location ID di System sehingga bisa dilakukan pelacakan Location ID sekarang dan sebelumnya.
*   Audit mencatat User ID yang melakukan perubahan Location ID, device dimana perubahan dilakukan dan kapan.

---

## Use Case  Patient Discharge
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-04a |
| **Use Case Name** | Patient Discharge |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Mengakhiri kunjungan pasien. Close billing. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Patient Visit Record tersedia di System, ditandai dengan adanya PVID. |

### Alur Utama
1. Aktor membuka halaman Patient Visit Management  Discharge.
2. Aktor memasukkan PVID.
3. System memeriksa apakah PVID tersebut memiliki test order.
4. System memeriksa `orderstatus.OrderStatus` dari test order tsb.
5. System menampilkan data admission pasien.
6. Aktor mengisikan tanggal discharge.
7. System membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A03` (Discharge), mengkonfirmasi discharge/end visit berhasil dan menampilkan data admission yang telah di-discharge.

### Alur Alternatif
-

### Alur Pengecualian
*   **Open test order:**
    *   System menolak discharge, jika menemukan `orderstatus.OrderStatus` bernilai ”A” atau “IP” atau “SC” atau “HD”.
    *   Aktor diminta untuk menyelesaikan test order terkait.

### Kondisi Akhir
*   Discharge visit di System.
*   Audit mencatat User ID yang melakukan discharge, device dimana discharge dilakukan dan kapan.
*   Semua record terkait visit tersebut tidak bisa diedit/update lagi  data-data pada `patvisit`, `patdiag`, `patvisitbill`. Hal-hal berikut tidak bisa dilakukan lagi:
   - Perpindahan lokasi dan/atau dokter.
   - Test order.
   - Billing is closed.
*   **Cancel discharge:**
   - Bisa dilakukan atas instruksi dari HIS, misalnya berupa ADT message.
   - Oleh orang tertentu saja di lab.
   - Tidak meng-update existing record tetapi men-trigger tambahan `patvisitadt` record dengan Code: A13 (cancel discharge).

---

## Use Case  Cancel Discharge
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-04b |
| **Use Case Name** | Cancel Patient Discharge |
| **Aktor Utama** | Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Membatalkan Patient Discharge. Open billing. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Patient Visit Record tersedia di System, ditandai dengan adanya PVID dan telah discharge. |

### Alur Utama
1. Aktor membuka halaman Patient Visit Management  Cancel Patient Discharge.
2. Aktor memasukkan PVID.
3. System menampilkan data admission pasien.
4. Aktor membatalkan discharge dengan menekan tombol Cancel Discharge.
5. System membuat record baru di `patvisitadt` dengan `patvisitadt.Code: A13` (Cancel Discharge), mengkonfirmasi cancel discharge berhasil dan menampilkan data admission yang telah dibatalkan discharge-nya.

### Alur Alternatif
-

### Alur Pengecualian
-

### Kondisi Akhir
*   Pembatalan discharge di System.
*   Audit mencatat cancel discharge dilakukan secara manual, User ID yang melakukan, device dimana activity dilakukan dan kapan.
*   Semua record terkait visit tersebut kembali bisa diedit/update lagi  data-data pada `patvisit`, `patdiag`, `patvisitbill`. Hal-hal berikut bisa dilakukan lagi:
   - Perpindahan lokasi dan/atau dokter.
   - Test order.
   - Billing is re-open.

---

## Use Case  Test Ordering
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-5a |
| **Use Case Name** | Test Ordering |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Membuat test order untuk pasien. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Patient Visit Record tersedia di System, ditandai dengan adanya PVID. |

### Alur Utama
1. Aktor membuka halaman Test Ordering  New Test Order.
2. Aktor memasukkan PVID.
3. System menampilkan data demografi, daftar PVID pasien berikut daftar OrderID (OID) yang telah dibuat sebelumnya (menghindari test order berlebihan).
4. Aktor bisa menambahkan komentar dan/atau lampiran ke test order.
5. Aktor memilih test yang diperlukan.
6. Aktor bisa memilih mencetak labels segera setelah klik tombol Save, dengan mencentang Print Patient Label, Print Order Label, Print Specimen Label check boxes.
7. Aktor menyimpan test order dengan menekan tombol Save.
8. System secara otomatis memberi OID.
9. System otomatis membuat records di table specimens.
10. System, mengkonfirmasi test ordering berhasil dan menampilkan data test order berikut daftar SID.

### Alur Alternatif
*   **PVID belum ada:**
    1. System mengarahkan Aktor ke halaman Patient Visit Management  Patient Admission.
    2. Aktor melakukan activity patient admission.
    3. Aktir kembali ke test ordering.
*   **Test ordering menggunakan PID:**
    1. Aktor membuka halaman Test Ordering  New Test Order.
    2. Aktor memasukkan PID.
    3. System menampilkan daftar PVID yang belum discharge.
    4. Aktor memilih salah satu PVID dan melanjutkan activity test ordering.
*   **Future Order:**
    1. Aktor mengisi Effective Date (`ordertest.EffDate`) untuk menjadwalkan kapan test order mulai dikerjakan.
    2. Aktor menyimpan test order dengan menekan tombol Save.
    3. System memberikan OID yang sesuai dengan Effective Date.
*   **OID sudah ada:**
    1. Aktor membuka halaman Test Ordering  Test Order Search & Update.
    2. Aktor memasukan OID.
    3. System menampilkan data-data test order.
    4. Aktor melakukan update dan menyimpannya.
*   **Non patient option** (Not detailed in text).

### Alur Pengecualian
-

### Kondisi Akhir
*   Test order terbentuk di System ditandai dengan adanya OID dengan status (`orderstatus.OrderStatus`) ”SC” (In process, scheduled).
*   SID terbentuk dan specimen label bisa dicetak atau tercetak otomatis.
*   Audit mencatat test order dilakukan secara manual, User ID yang melakukan, device dimana activity dilakukan dan kapan.

---

## Use Case  Update Test Order
| **Field** | **Description** |
| :--- | :--- |
| **Use Case ID** | UC-5b |
| **Use Case Name** | Update Test Order |
| **Aktor Utama** | Admin Lab / Clerk, Analis Lab, Analis Lab Senior, Super User, Supervisor Lab, Manajer Lab |
| **Aktor Sekunder** | Pasien |
| **Tujuan** | Memperbarui test order untuk pasien. |
| **Prasyarat** | 1. System beroperasi dan dapat diakses.<br>2. Petugas pendaftaran telah terautentikasi oleh System.<br>3. Test order tersedia di System, ditandai dengan adanya OID. |

### Alur Utama
1. Aktor membuka halaman Test Ordering  Test Order Search & Update.
2. Aktor memasukkan OID.
3. System menampilkan data-data test order.
4. Aktor melakukan update dan menyimpannya.
5. System, mengkonfirmasi update test order berhasil dan menampilkan data test order berikut daftar SID.

### Alur Alternatif
*   **PVID belum ada:**
    1. System mengarahkan Aktor ke halaman Patient Visit Management  Patient Admission.
    2. Aktor melakukan activity patient admission.
    3. Aktir kembali ke test ordering.
*   **Non patient option** (Not detailed in text).

### Alur Pengecualian
*   **Test order tidak ada:**
    *   System menolak melakukan update dan menampilkan pesan,” Test order does not exists”.
*   **Test order berstatus closed:** Ditandai dengan `ordertest.EndDate` memiliki value dan `orderstatus.OrderStatus` bernilai CL (Closed).
    *   System menolak melakukan update dan menampilkan pesan,” This test order is inaccessible”.
*   **Test order berstatus archived:** Ditandai dengan `ordertest.ArchiveDate` memiliki value dan `orderstatus.OrderStatus` bernilai AC (Archived).
    *   System menolak melakukan update dan menampilkan pesan,” This test order is already archived”.
*   **Test order berstatus deleted:** Ditandai dengan `ordertest.DelDate` memiliki value dan `orderstatus.OrderStatus` bernilai DL (Deleted).
    *   System menolak melakukan update dan menampilkan pesan,” This test order is already deleted”.
*   **Update dilakukan dengan menghapus test yang telah ada hasilnya:**
    *   System menampilkan data-data test order.
    *   Aktor mengganti test yang telah ada hasilnya.
    *   System menolak melakukan update dan menampilkan pesan,” This test order is inaccessible”.

### Kondisi Akhir
*   Test order terbentuk di System ditandai dengan adanya OID dengan status (`orderstatus.OrderStatus`) ”SC” (In process, scheduled).
*   SID terbentuk dan specimen label bisa dicetak atau tercetak otomatis.
*   Audit mencatat test order dilakukan secara manual, User ID yang melakukan, device dimana activity dilakukan dan kapan.