fix revision hide menu and test case
This commit is contained in:
+19
-19
@@ -6,8 +6,8 @@ import {
|
||||
FileText,
|
||||
ChevronLeft,
|
||||
ChevronRight,
|
||||
UserCog,
|
||||
Lock,
|
||||
// UserCog,
|
||||
// Lock,
|
||||
Database,
|
||||
Shield,
|
||||
TrendingUp,
|
||||
@@ -77,23 +77,23 @@ export default function Sidebar({
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Administrasi Sistem",
|
||||
icon: UserCog,
|
||||
color: "text-blue-600",
|
||||
submenu: [
|
||||
{
|
||||
title: "Pengguna",
|
||||
icon: Users,
|
||||
path: "/system-administration/user",
|
||||
},
|
||||
{
|
||||
title: "Peran",
|
||||
icon: Lock,
|
||||
path: "/system-administration/role",
|
||||
},
|
||||
],
|
||||
},
|
||||
// {
|
||||
// title: "Administrasi Sistem",
|
||||
// icon: UserCog,
|
||||
// color: "text-blue-600",
|
||||
// submenu: [
|
||||
// {
|
||||
// title: "Pengguna",
|
||||
// icon: Users,
|
||||
// path: "/system-administration/user",
|
||||
// },
|
||||
// {
|
||||
// title: "Peran",
|
||||
// icon: Lock,
|
||||
// path: "/system-administration/role",
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
];
|
||||
|
||||
const [expandedMenu, setExpandedMenu] = useState<string | null>(null);
|
||||
|
||||
@@ -72,7 +72,7 @@ export default function Dashboard() {
|
||||
</div>
|
||||
|
||||
{/* Alert/Warning Section */}
|
||||
<div className="bg-white rounded-lg shadow-sm border mb-6 p-4">
|
||||
<div className="bg-white rounded-lg shadow-sm border mb-6 p-4 hidden">
|
||||
<div className="flex items-center justify-between mb-4">
|
||||
<h3 className="text-lg font-semibold text-gray-900 flex items-center">
|
||||
<Bell className="h-5 w-5 text-red-500 mr-2" />
|
||||
@@ -150,7 +150,7 @@ export default function Dashboard() {
|
||||
</div>
|
||||
|
||||
{/* Stats Grid */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8 hidden">
|
||||
{stats.map((stat, index) => (
|
||||
<div key={index} className="card p-6">
|
||||
<div className="flex items-center justify-between mb-4">
|
||||
@@ -175,7 +175,7 @@ export default function Dashboard() {
|
||||
</div>
|
||||
|
||||
{/* Main Grid */}
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6 hidden">
|
||||
{/* BPJS Operations */}
|
||||
<div className="card p-6">
|
||||
<div className="flex items-center justify-between mb-6">
|
||||
@@ -320,7 +320,7 @@ export default function Dashboard() {
|
||||
</div>
|
||||
|
||||
{/* Second Row */}
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6 hidden">
|
||||
{/* ICD Recommendations & Cost */}
|
||||
<div className="card p-6">
|
||||
<div className="flex items-center justify-between mb-6">
|
||||
|
||||
@@ -221,14 +221,33 @@ export default function Administrative() {
|
||||
setSearchResults(null);
|
||||
|
||||
setTimeout(() => {
|
||||
const query = searchQuery.toLowerCase();
|
||||
const foundPatient = mockAdministrativeData.find(
|
||||
(patient) =>
|
||||
patient.name.toLowerCase().includes(query) ||
|
||||
patient.medicalRecordNumber.toLowerCase().includes(query) ||
|
||||
patient.bpjsNumber.includes(query)
|
||||
const query = searchQuery.toLowerCase().trim();
|
||||
|
||||
if (!query) {
|
||||
setSearchResults(null);
|
||||
setIsSearching(false);
|
||||
return;
|
||||
}
|
||||
|
||||
const foundPatient = mockAdministrativeData.find((patient) => {
|
||||
// Normalize patient data to lowercase for case-insensitive search
|
||||
const patientName = patient.name.toLowerCase();
|
||||
const patientMRN = patient.medicalRecordNumber.toLowerCase();
|
||||
const patientBPJS = patient.bpjsNumber.toLowerCase();
|
||||
|
||||
// For name search, check if all words in query exist in patient name
|
||||
const queryWords = query.split(/\s+/).filter((word) => word.length > 0);
|
||||
const nameMatch = queryWords.every((word) =>
|
||||
patientName.includes(word)
|
||||
);
|
||||
|
||||
// For MRN and BPJS, use simple includes
|
||||
const mrnMatch = patientMRN.includes(query);
|
||||
const bpjsMatch = patientBPJS.includes(query);
|
||||
|
||||
return nameMatch || mrnMatch || bpjsMatch;
|
||||
});
|
||||
|
||||
if (foundPatient) {
|
||||
// Further filter by birth date if provided
|
||||
if (birthDate) {
|
||||
|
||||
@@ -10,7 +10,6 @@ import {
|
||||
|
||||
interface AssistInput {
|
||||
clinicalNotes: string;
|
||||
labResults: string;
|
||||
procedures: string;
|
||||
}
|
||||
|
||||
@@ -41,7 +40,6 @@ interface AssistResult {
|
||||
export default function BPJSCodeification() {
|
||||
const [assistInput, setAssistInput] = useState<AssistInput>({
|
||||
clinicalNotes: "",
|
||||
labResults: "",
|
||||
procedures: "",
|
||||
});
|
||||
const [assistLoading, setAssistLoading] = useState(false);
|
||||
@@ -60,7 +58,6 @@ export default function BPJSCodeification() {
|
||||
const normalize = (s: string) => s.replace(/\s+/g, " ").trim();
|
||||
return {
|
||||
clinicalNotes: normalize(input.clinicalNotes),
|
||||
labResults: normalize(input.labResults),
|
||||
procedures: normalize(input.procedures),
|
||||
};
|
||||
};
|
||||
@@ -68,8 +65,7 @@ export default function BPJSCodeification() {
|
||||
const mockAssistPipeline = async (
|
||||
input: AssistInput
|
||||
): Promise<AssistResult> => {
|
||||
const text =
|
||||
`${input.clinicalNotes} ${input.labResults} ${input.procedures}`.toLowerCase();
|
||||
const text = `${input.clinicalNotes} ${input.procedures}`.toLowerCase();
|
||||
|
||||
const icd10Codes: ICD10Code[] = [];
|
||||
const procedureCodes: ProcedureCode[] = [];
|
||||
@@ -349,23 +345,7 @@ export default function BPJSCodeification() {
|
||||
className="w-full rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent p-3"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||
Hasil Laboratorium
|
||||
</label>
|
||||
<textarea
|
||||
rows={3}
|
||||
value={assistInput.labResults}
|
||||
onChange={(e) =>
|
||||
setAssistInput((s) => ({
|
||||
...s,
|
||||
labResults: e.target.value,
|
||||
}))
|
||||
}
|
||||
placeholder="Leukosit: 15.000/µL, CRP: 25 mg/L, HbA1c: 7.8%, Glukosa Puasa: 180 mg/dL..."
|
||||
className="w-full rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent p-3"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||
Tindakan / Prosedur yang Dilakukan
|
||||
@@ -388,9 +368,7 @@ export default function BPJSCodeification() {
|
||||
onClick={runAssistPipeline}
|
||||
disabled={
|
||||
assistLoading ||
|
||||
(!assistInput.clinicalNotes &&
|
||||
!assistInput.labResults &&
|
||||
!assistInput.procedures)
|
||||
(!assistInput.clinicalNotes && !assistInput.procedures)
|
||||
}
|
||||
className="flex items-center space-x-2 disabled:opacity-60 bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg disabled:cursor-not-allowed"
|
||||
>
|
||||
|
||||
+277
-221
@@ -6,94 +6,201 @@
|
||||
DAFTAR ISI:
|
||||
1. Clinical.tsx - Test Cases (Rekam Medis Klinis)
|
||||
2. Administrative.tsx - Test Cases (Rekam Medis Administratif)
|
||||
3. CostRecommendation.tsx - Test Cases (Rekomendasi Biaya)
|
||||
4. BPJSCodeification.tsx - Test Cases (Kodefikasi BPJS)
|
||||
5. Instruksi Penggunaan Test Cases
|
||||
3. BPJSCodeification.tsx - Test Cases (Asisten Kodefikasi BPJS)
|
||||
4. CostRecommendation.tsx - Test Cases (Rekomendasi Biaya)
|
||||
5. Sample Data untuk Testing
|
||||
6. Instruksi Penggunaan Test Cases
|
||||
|
||||
================================================================================
|
||||
1. CLINICAL.TSX - TEST CASES (REKAM MEDIS KLINIS)
|
||||
================================================================================
|
||||
|
||||
TEST CASE 1: PENCARIAN PASIEN LENGKAP
|
||||
=====================================
|
||||
SCHEMA PENCARIAN:
|
||||
- Input tunggal: Nama Pasien / Nomor Rekam Medis / Nomor BPJS
|
||||
- Tanggal Lahir (Opsional)
|
||||
- Pencarian fleksibel dengan word matching
|
||||
|
||||
TEST CASE 1: PENCARIAN NAMA LENGKAP
|
||||
==================================
|
||||
Input Form:
|
||||
- Nama/Nomor RM/BPJS: Ahmad Budi Santoso
|
||||
- Tanggal Lahir: 15 Januari 1985
|
||||
- Nama/No. RM/No. BPJS: John Doe
|
||||
- Tanggal Lahir: 15 Juni 1985
|
||||
|
||||
Expected Result:
|
||||
Menampilkan rekam medis lengkap dengan identitas pasien, riwayat medis,
|
||||
pemeriksaan fisik, diagnosis, rencana pengobatan, dan dokumen medis.
|
||||
Menampilkan rekam medis lengkap dengan:
|
||||
- Identitas pasien (John Doe, MR2024001, BPJS: 0001234567890)
|
||||
- Riwayat medis (Hipertensi 2020, Diabetes 2021)
|
||||
- Pemeriksaan fisik dengan tanda vital
|
||||
- Diagnosis ICD-10 (Unstable Angina - I20.0)
|
||||
- Rencana pengobatan dan dokumen medis
|
||||
|
||||
TEST CASE 2: PENCARIAN DENGAN NOMOR REKAM MEDIS
|
||||
TEST CASE 2: PENCARIAN NAMA PARSIAL (WORD MATCHING)
|
||||
==================================================
|
||||
Input Form:
|
||||
- Nama/No. RM/No. BPJS: john
|
||||
- Tanggal Lahir: (kosong)
|
||||
|
||||
Expected Result:
|
||||
Pasien "John Doe" ditemukan meskipun hanya input "john"
|
||||
|
||||
TEST CASE 3: PENCARIAN DENGAN NOMOR REKAM MEDIS
|
||||
===============================================
|
||||
Input Form:
|
||||
- Nama/Nomor RM/BPJS: MRN2024001
|
||||
- Nama/No. RM/No. BPJS: MR2024001
|
||||
- Tanggal Lahir: (kosong)
|
||||
|
||||
Expected Result:
|
||||
Pasien ditemukan berdasarkan nomor rekam medis dengan data klinis lengkap.
|
||||
Pasien John Doe ditemukan berdasarkan nomor rekam medis
|
||||
|
||||
TEST CASE 3: PENCARIAN DENGAN NOMOR BPJS
|
||||
=========================================
|
||||
TEST CASE 4: PENCARIAN DENGAN NOMOR BPJS
|
||||
========================================
|
||||
Input Form:
|
||||
- Nama/Nomor RM/BPJS: 000987654321
|
||||
- Tanggal Lahir: 12 April 1985
|
||||
|
||||
Expected Result:
|
||||
Verifikasi pasien dengan nomor BPJS dan tanggal lahir yang sesuai.
|
||||
|
||||
TEST CASE 4: PENCARIAN NAMA PARSIAL
|
||||
===================================
|
||||
Input Form:
|
||||
- Nama/Nomor RM/BPJS: Sari
|
||||
- Nama/No. RM/No. BPJS: 0001234567890
|
||||
- Tanggal Lahir: (kosong)
|
||||
|
||||
Expected Result:
|
||||
Hasil pencarian untuk pasien dengan nama yang mengandung "Sari".
|
||||
Pasien John Doe ditemukan berdasarkan nomor BPJS
|
||||
|
||||
TEST CASE 5: PENCARIAN CASE INSENSITIVE
|
||||
======================================
|
||||
Input Form:
|
||||
- Nama/No. RM/No. BPJS: JOHN DOE
|
||||
- Tanggal Lahir: (kosong)
|
||||
|
||||
Expected Result:
|
||||
Pasien ditemukan meskipun menggunakan huruf kapital
|
||||
|
||||
================================================================================
|
||||
2. ADMINISTRATIVE.TSX - TEST CASES (REKAM MEDIS ADMINISTRATIF)
|
||||
================================================================================
|
||||
|
||||
TEST CASE 1: PENCARIAN PASIEN AKTIF
|
||||
===================================
|
||||
SCHEMA PENCARIAN:
|
||||
- Input tunggal: Nama Pasien, No. RM, atau No. BPJS
|
||||
- Tanggal Lahir (Opsional)
|
||||
- Flexible word matching untuk nama
|
||||
|
||||
TEST CASE 1: PENCARIAN PASIEN DENGAN STATUS APPROVED
|
||||
====================================================
|
||||
Input Form:
|
||||
- Nama/Nomor RM/BPJS: Siti Nurhaliza
|
||||
- Tanggal Lahir: 25 Juli 1990
|
||||
- Nama/No. RM/No. BPJS: Ahmad Budi Santoso
|
||||
- Tanggal Lahir: 10 Mei 1985
|
||||
|
||||
Expected Result:
|
||||
Detail administratif menampilkan status klaim aktif, informasi pembayaran,
|
||||
dan riwayat kunjungan.
|
||||
Menampilkan data administratif:
|
||||
- Nama: Ahmad Budi Santoso
|
||||
- MRN: MRN2024001, BPJS: 0001234567890
|
||||
- Status Klaim: Disetujui (hijau)
|
||||
- Status Pembayaran: Lunas (hijau)
|
||||
- Total Biaya: Rp 2.500.000
|
||||
- Rawat Jalan di Poli Penyakit Dalam
|
||||
|
||||
TEST CASE 2: PENCARIAN PASIEN BPJS
|
||||
==================================
|
||||
TEST CASE 2: PENCARIAN DENGAN NAMA PARSIAL
|
||||
==========================================
|
||||
Input Form:
|
||||
- Nama/Nomor RM/BPJS: 000123456789
|
||||
- Nama/No. RM/No. BPJS: ahmad santoso
|
||||
- Tanggal Lahir: (kosong)
|
||||
|
||||
Expected Result:
|
||||
Data administratif pasien dengan status klaim BPJS dan detail pembayaran.
|
||||
Menemukan "Ahmad Budi Santoso" dengan flexible matching
|
||||
|
||||
TEST CASE 3: PASIEN KUNJUNGAN TERBARU
|
||||
=====================================
|
||||
TEST CASE 3: PENCARIAN PASIEN UNDER REVIEW
|
||||
==========================================
|
||||
Input Form:
|
||||
- Nama/Nomor RM/BPJS: MRN2024002
|
||||
- Tanggal Lahir: 10 September 1978
|
||||
|
||||
Expected Result:
|
||||
Pasien dengan kunjungan terbaru menampilkan status proses klaim saat ini.
|
||||
|
||||
TEST CASE 4: PASIEN DENGAN MULTIPLE KLAIM
|
||||
=========================================
|
||||
Input Form:
|
||||
- Nama/Nomor RM/BPJS: Bambang Sutrisno
|
||||
- Nama/No. RM/No. BPJS: Siti Aminah
|
||||
- Tanggal Lahir: (kosong)
|
||||
|
||||
Expected Result:
|
||||
Pasien dengan beberapa klaim dan riwayat pembayaran.
|
||||
Menampilkan pasien dengan:
|
||||
- Status Klaim: Sedang Ditinjau (biru)
|
||||
- Status Pembayaran: Menunggu (kuning)
|
||||
- Total Biaya: Rp 1.800.000
|
||||
- Sisa Tagihan: Rp 1.800.000
|
||||
|
||||
TEST CASE 4: PENCARIAN PASIEN INPATIENT
|
||||
=======================================
|
||||
Input Form:
|
||||
- Nama/No. RM/No. BPJS: Roberto Silva
|
||||
- Tanggal Lahir: (kosong)
|
||||
|
||||
Expected Result:
|
||||
Menampilkan pasien dengan:
|
||||
- Rawat Inap - Kelas 2
|
||||
- Status Pembayaran: Sebagian (orange)
|
||||
- IGD Emergency case
|
||||
|
||||
================================================================================
|
||||
3. COSTRECOMMENDATION.TSX - TEST CASES (REKOMENDASI BIAYA)
|
||||
3. BPJSCODIFICATION.TSX - TEST CASES (ASISTEN KODEFIKASI BPJS)
|
||||
================================================================================
|
||||
|
||||
SCHEMA INPUT (UPDATED):
|
||||
- Catatan Medis / Anamnesis (textarea)
|
||||
- Tindakan / Prosedur yang Dilakukan (input)
|
||||
- TIDAK ADA input Hasil Laboratorium (sudah dihapus)
|
||||
|
||||
TEST CASE 1: KASUS PNEUMONIA
|
||||
============================
|
||||
Input Form:
|
||||
|
||||
Catatan Medis / Anamnesis:
|
||||
Pasien mengeluh demam sejak 3 hari, batuk berdahak, sesak napas, nyeri dada.
|
||||
Pemeriksaan fisik ditemukan suara napas menurun di basal kanan. Pasien tampak sesak.
|
||||
|
||||
Tindakan / Prosedur:
|
||||
Rontgen thorax, darah lengkap
|
||||
|
||||
Expected Result:
|
||||
- ICD-10: J18.9 - Pneumonia dengan kuman tidak spesifik
|
||||
- Prosedur: 87.44 - Foto Rontgen thorax, 90.59 - Pemeriksaan darah lengkap
|
||||
- INA-CBG: B-4-13-I - Pneumonia tanpa komplikasi (Rp 3.500.000)
|
||||
|
||||
TEST CASE 2: KASUS DIABETES + HIPERTENSI
|
||||
========================================
|
||||
Input Form:
|
||||
|
||||
Catatan Medis / Anamnesis:
|
||||
Pasien dengan riwayat diabetes mellitus dan hipertensi datang untuk kontrol rutin.
|
||||
Keluhan poliuria, polidipsia. Tekanan darah tinggi 150/95 mmHg. Kadar gula darah tinggi.
|
||||
|
||||
Tindakan / Prosedur:
|
||||
EKG, pemeriksaan HbA1c
|
||||
|
||||
Expected Result:
|
||||
- ICD-10: E11.9 - Diabetes mellitus tipe 2, I10 - Hipertensi esensial
|
||||
- Prosedur: 89.52 - Elektrokardiogram
|
||||
- INA-CBG: E-4-10-I - Diabetes Mellitus tanpa komplikasi (Rp 2.100.000)
|
||||
|
||||
TEST CASE 3: KASUS GASTRITIS
|
||||
============================
|
||||
Input Form:
|
||||
|
||||
Catatan Medis / Anamnesis:
|
||||
Pasien mengeluh nyeri perut, mual, muntah sejak kemarin. Nyeri seperti terbakar di ulu hati.
|
||||
|
||||
Tindakan / Prosedur:
|
||||
Endoskopi lambung
|
||||
|
||||
Expected Result:
|
||||
- ICD-10: K29.1 - Gastritis akut lainnya
|
||||
- Prosedur: 45.13 - Esofagogastroduodenoskopi (EGD)
|
||||
- INA-CBG: G-4-10-I - Gastritis akut tanpa komplikasi (Rp 1.200.000)
|
||||
|
||||
TEST CASE 4: KASUS TIDAK SPESIFIK
|
||||
=================================
|
||||
Input Form:
|
||||
|
||||
Catatan Medis / Anamnesis:
|
||||
Pasien datang dengan keluhan umum tidak jelas
|
||||
|
||||
Tindakan / Prosedur:
|
||||
Pemeriksaan rutin
|
||||
|
||||
Expected Result:
|
||||
- ICD-10: R69 - Penyakit tidak spesifik
|
||||
- Prosedur: 99213 - Kunjungan rawat jalan
|
||||
- INA-CBG: Z-4-00-I - Kondisi tidak spesifik (Rp 750.000)
|
||||
|
||||
================================================================================
|
||||
4. COSTRECOMMENDATION.TSX - TEST CASES (REKOMENDASI BIAYA)
|
||||
================================================================================
|
||||
|
||||
TEST CASE 1: KASUS DEMAM BERDARAH DENGUE
|
||||
@@ -118,8 +225,8 @@ Expected Result:
|
||||
Analisis AI menunjukkan peringatan potensi overclaim untuk transfusi
|
||||
dengan Hb > 7 g/dL threshold.
|
||||
|
||||
TEST CASE 2: KASUS PNEUMONIA
|
||||
============================
|
||||
TEST CASE 2: KASUS PNEUMONIA COMMUNITY
|
||||
======================================
|
||||
Input Form:
|
||||
|
||||
Diagnosis Klinis:
|
||||
@@ -138,204 +245,153 @@ Tanggal Kunjungan Terakhir: 15 Agustus 2024
|
||||
Expected Result:
|
||||
Analisis biaya dengan koding ICD-10 yang tepat dan rekomendasi pengobatan.
|
||||
|
||||
TEST CASE 3: KASUS DIABETES FOLLOW-UP
|
||||
=====================================
|
||||
Input Form:
|
||||
|
||||
Diagnosis Klinis:
|
||||
Pasien laki-laki 55 tahun dengan diabetes mellitus tipe 2 kontrol
|
||||
rutin. Keluhan poliuria, polidipsia ringan. GDS 180 mg/dL,
|
||||
HbA1c 8.2%. TD 140/90 mmHg. Kaki: tidak ada ulkus, sensasi normal.
|
||||
|
||||
Prosedur/Tindakan:
|
||||
Pemeriksaan HbA1c, GDS, urinalisis, konsultasi gizi,
|
||||
edukasi diabetes, penyesuaian dosis metformin, kontrol rutin 1 bulan.
|
||||
|
||||
Tanggal Kunjungan Terakhir: 5 September 2024
|
||||
|
||||
Expected Result:
|
||||
Peringatan interval kontrol untuk kunjungan dalam 30 hari,
|
||||
koding manajemen diabetes yang tepat.
|
||||
|
||||
================================================================================
|
||||
4. BPJSCODIFICATION.TSX - TEST CASES (KODEFIKASI BPJS)
|
||||
5. SAMPLE DATA UNTUK TESTING
|
||||
================================================================================
|
||||
|
||||
TEST CASE 1: KASUS EMERGENCY - APPENDICITIS AKUT
|
||||
================================================
|
||||
Input Form:
|
||||
CLINICAL PAGE - MOCK DATA:
|
||||
=========================
|
||||
Patient Identity:
|
||||
- Name: John Doe
|
||||
- Medical Record Number: MR2024001
|
||||
- BPJS Number: 0001234567890
|
||||
- Birth Date: 1985-06-15
|
||||
- Gender: Male
|
||||
- Blood Type: O+
|
||||
- Address: Jl. Sudirman No. 123, Jakarta Pusat
|
||||
|
||||
Keluhan Pasien:
|
||||
Nyeri perut kanan bawah sejak 12 jam yang lalu, mula-mula nyeri
|
||||
di epigastrium kemudian berpindah ke fossa iliaka dextra.
|
||||
Disertai mual, muntah 2x, demam subfebris.
|
||||
Medical History:
|
||||
- Previous Diseases: Hypertension (2020), Diabetes Mellitus Type 2 (2021)
|
||||
- Allergies: Penicillin, Shellfish
|
||||
- Current Medications: Metformin 500mg, Lisinopril 10mg
|
||||
|
||||
Pemeriksaan Fisik:
|
||||
TD 110/70 mmHg, nadi 88x/menit, suhu 37.8°C. Abdomen:
|
||||
McBurney sign (+), Rovsing sign (+), defans muskuler (+)
|
||||
regio iliaka dextra. Bising usus normal.
|
||||
Primary Diagnosis: Unstable Angina (I20.0)
|
||||
Secondary: Essential Hypertension (I10), Type 2 Diabetes (E11.9)
|
||||
|
||||
Pemeriksaan Penunjang:
|
||||
Leukosit 12.500/μL dengan shift to left, USG abdomen:
|
||||
appendix menebal dengan fluid collection, foto polos
|
||||
abdomen dalam batas normal.
|
||||
ADMINISTRATIVE PAGE - MOCK DATA:
|
||||
===============================
|
||||
Patient 1:
|
||||
- Name: Ahmad Budi Santoso
|
||||
- Birth Date: 1985-05-10
|
||||
- MRN: MRN2024001
|
||||
- BPJS: 0001234567890
|
||||
- Claim Status: approved
|
||||
- Payment Status: paid
|
||||
- Total Cost: 2,500,000
|
||||
- Admission Type: outpatient
|
||||
|
||||
Diagnosis: Acute appendicitis
|
||||
Patient 2:
|
||||
- Name: Siti Aminah
|
||||
- Birth Date: 1990-11-22
|
||||
- MRN: MRN2024002
|
||||
- BPJS: 0009876543210
|
||||
- Claim Status: under_review
|
||||
- Payment Status: pending
|
||||
- Total Cost: 1,800,000
|
||||
- Admission Type: outpatient
|
||||
|
||||
Tindakan: Appendectomy laparoscopic
|
||||
Patient 3:
|
||||
- Name: Roberto Silva
|
||||
- Birth Date: 1978-03-15
|
||||
- MRN: MRN2024003
|
||||
- BPJS: 0003456789012
|
||||
- Claim Status: pending
|
||||
- Payment Status: partial
|
||||
- Total Cost: 5,200,000
|
||||
- Admission Type: inpatient
|
||||
- Room Class: Kelas 2
|
||||
|
||||
Expected Result:
|
||||
ICD-10 K35.9, kode prosedur untuk laparoscopic appendectomy,
|
||||
mapping INA-CBG dengan tarif bedah.
|
||||
BPJS CODIFICATION - DETECTION KEYWORDS:
|
||||
======================================
|
||||
Pneumonia Keywords: pneumonia, infiltrat, demam, batuk, sesak
|
||||
→ ICD-10: J18.9, INA-CBG: B-4-13-I (Rp 3.500.000)
|
||||
|
||||
TEST CASE 2: KASUS MEDIS - KRISIS HIPERTENSI
|
||||
============================================
|
||||
Input Form:
|
||||
Hypertension Keywords: hipertensi, bp 150/95, tekanan darah tinggi
|
||||
→ ICD-10: I10, INA-CBG: F-4-13-II (Rp 1.850.000)
|
||||
|
||||
Keluhan Pasien:
|
||||
Nyeri kepala hebat sejak pagi, pandangan kabur, mual muntah.
|
||||
Pasien memiliki riwayat hipertensi tidak terkontrol,
|
||||
tidak rutin minum obat.
|
||||
Diabetes Keywords: diabetes, hba1c, glukosa, gula darah
|
||||
→ ICD-10: E11.9, INA-CBG: E-4-10-I (Rp 2.100.000)
|
||||
|
||||
Pemeriksaan Fisik:
|
||||
Kesadaran compos mentis, TD 220/120 mmHg, nadi 95x/menit
|
||||
reguler, RR 20x/menit. Funduskopi: perdarahan retina (+),
|
||||
papil edema (+). JVP tidak meningkat.
|
||||
Gastritis Keywords: gastritis, nyeri perut, mual, muntah
|
||||
→ ICD-10: K29.1, INA-CBG: G-4-10-I (Rp 1.200.000)
|
||||
|
||||
Pemeriksaan Penunjang:
|
||||
EKG: LVH dengan strain pattern, urinalisis: proteinuria +2,
|
||||
kreatinin 1.8 mg/dL, troponin negatif. Foto thorax:
|
||||
kardiomegali dengan pulmonary edema.
|
||||
|
||||
Diagnosis: Hypertensive emergency with target organ damage
|
||||
|
||||
Tindakan: IV antihypertensive therapy, cardiac monitoring
|
||||
|
||||
Expected Result:
|
||||
ICD-10 I16.1, kode prosedur untuk monitoring intensif,
|
||||
INA-CBG untuk emergency hipertensi.
|
||||
|
||||
TEST CASE 3: KASUS OBSTETRIK - PERSALINAN NORMAL
|
||||
================================================
|
||||
Input Form:
|
||||
|
||||
Keluhan Pasien:
|
||||
G2P1A0 usia kehamilan 39 minggu datang dengan keluhan
|
||||
kontraksi uterus teratur sejak 6 jam yang lalu,
|
||||
keluar lendir bercampur darah.
|
||||
|
||||
Pemeriksaan Fisik:
|
||||
TD 120/80 mmHg, nadi 80x/menit, kontraksi uterus 3x/10 menit
|
||||
lamanya 40 detik. VT: pembukaan 6 cm, ketuban (+),
|
||||
presentasi kepala, hodge II.
|
||||
|
||||
Pemeriksaan Penunjang:
|
||||
CTG: reactive, variabilitas baik, tidak ada deselerasi.
|
||||
Hb 11.5 g/dL, golongan darah O Rh+, HbsAg non-reaktif,
|
||||
VDRL non-reaktif.
|
||||
|
||||
Diagnosis: Term pregnancy in labor, vertex presentation
|
||||
|
||||
Tindakan: Spontaneous vaginal delivery, episiotomy
|
||||
|
||||
Expected Result:
|
||||
ICD-10 O80, kode prosedur untuk persalinan dan episiotomy,
|
||||
paket INA-CBG maternal.
|
||||
|
||||
TEST CASE 4: KASUS PEDIATRIK - BRONKIOLITIS
|
||||
===========================================
|
||||
Input Form:
|
||||
|
||||
Keluhan Pasien:
|
||||
Bayi laki-laki 8 bulan dibawa orangtua dengan keluhan
|
||||
sesak napas sejak 2 hari, batuk, demam ringan.
|
||||
Riwayat pilek pada kakak 1 minggu sebelumnya.
|
||||
|
||||
Pemeriksaan Fisik:
|
||||
BB 8 kg, suhu 37.5°C, RR 50x/menit, retraksi intercostal (+),
|
||||
wheezing ekspirasi (+) bilateral, ronki basah halus (+).
|
||||
SpO2 94% udara bebas.
|
||||
|
||||
Pemeriksaan Penunjang:
|
||||
Foto thorax: hiperinflasi bilateral, peribronchial thickening.
|
||||
Rapid test RSV positif. Leukosit 8.500/μL,
|
||||
analisa gas darah normal.
|
||||
|
||||
Diagnosis: Acute bronchiolitis due to RSV
|
||||
|
||||
Tindakan: Oxygen therapy, bronchodilator nebulization, supportive care
|
||||
|
||||
Expected Result:
|
||||
ICD-10 J21.0, kode prosedur untuk respiratory support,
|
||||
tarif INA-CBG pediatrik.
|
||||
Procedure Keywords:
|
||||
- rontgen, x-ray → 87.44 Foto Rontgen thorax
|
||||
- darah lengkap, cbc → 90.59 Pemeriksaan darah lengkap
|
||||
- endoskopi → 45.13 Esofagogastroduodenoskopi
|
||||
- ekg, ecg → 89.52 Elektrokardiogram
|
||||
- usg, ultrasound → 88.76 USG abdomen
|
||||
|
||||
================================================================================
|
||||
5. INSTRUKSI PENGGUNAAN TEST CASES
|
||||
6. INSTRUKSI PENGGUNAAN TEST CASES
|
||||
================================================================================
|
||||
|
||||
PERUBAHAN SCHEMA TERBARU:
|
||||
========================
|
||||
|
||||
1. ADMINISTRATIVE.TSX:
|
||||
✅ Input tunggal untuk Nama/MRN/BPJS (bukan 3 field terpisah)
|
||||
✅ Flexible word matching untuk nama (ahmad santoso → Ahmad Budi Santoso)
|
||||
✅ Case insensitive search
|
||||
✅ Dapat mencari dengan kata parsial
|
||||
|
||||
2. BPJSCODIFICATION.TSX:
|
||||
✅ DIHAPUS: Input "Hasil Laboratorium"
|
||||
✅ Hanya 2 input: Catatan Medis + Prosedur
|
||||
✅ Interface lebih sederhana
|
||||
|
||||
3. CLINICAL.TSX:
|
||||
✅ Tetap sama dengan pencarian fleksibel
|
||||
|
||||
CARA MELAKUKAN TESTING:
|
||||
=======================
|
||||
|
||||
1. CLINICAL.TSX:
|
||||
- Masukkan data pasien sesuai test case
|
||||
- Klik tombol "Cari Rekam Medis"
|
||||
- Verifikasi tampilan rekam medis lengkap
|
||||
- Input: "john" → Harus menemukan "John Doe"
|
||||
- Input: "MR2024001" → Harus menemukan pasien
|
||||
- Input: "0001234567890" → Harus menemukan via BPJS
|
||||
|
||||
2. ADMINISTRATIVE.TSX:
|
||||
- Input data pasien
|
||||
- Klik tombol "Cari Rekam Medis"
|
||||
- Periksa informasi billing/klaim status
|
||||
- Input: "ahmad santoso" → Harus menemukan "Ahmad Budi Santoso"
|
||||
- Input: "siti" → Harus menemukan "Siti Aminah"
|
||||
- Input: "MRN2024001" → Harus menemukan via MRN
|
||||
- Verifikasi flexible word matching
|
||||
|
||||
3. COSTRECOMMENDATION.TSX:
|
||||
- Masukkan diagnosis klinis (copy paste dari test case)
|
||||
- Masukkan prosedur/tindakan
|
||||
- Pilih tanggal kunjungan terakhir
|
||||
- Klik "Analisis Rekomendasi"
|
||||
- Verifikasi analisis AI dan deteksi overclaim
|
||||
3. BPJSCODIFICATION.TSX:
|
||||
- Hanya isi 2 field (bukan 3)
|
||||
- Test dengan keyword: "pneumonia, batuk, sesak"
|
||||
- Prosedur: "rontgen thorax"
|
||||
- Verifikasi ICD-10 dan tarif yang benar
|
||||
|
||||
4. BPJSCODIFICATION.TSX:
|
||||
- Input data klinis lengkap sesuai test case
|
||||
- Klik tombol untuk generate koding
|
||||
- Periksa hasil ICD-10, prosedur, dan mapping INA-CBG
|
||||
4. COSTRECOMMENDATION.TSX:
|
||||
- Copy paste diagnosis klinis lengkap
|
||||
- Isi prosedur/tindakan
|
||||
- Pilih tanggal kunjungan
|
||||
- Verifikasi analisis AI
|
||||
|
||||
PERILAKU YANG DIHARAPKAN:
|
||||
========================
|
||||
TESTING CHECKLIST:
|
||||
==================
|
||||
✓ Search dengan nama parsial berhasil
|
||||
✓ Search case insensitive berfungsi
|
||||
✓ BPJS Codification hanya 2 input field
|
||||
✓ Word matching fleksibel (ahmad santoso → Ahmad Budi Santoso)
|
||||
✓ Loading spinner tampil
|
||||
✓ Error handling untuk data tidak ditemukan
|
||||
✓ Format mata uang Indonesia (Rp)
|
||||
✓ Responsive di mobile dan desktop
|
||||
✓ Konsistensi warna dan UI
|
||||
|
||||
✓ Loading Spinner: Tampil saat proses pencarian/analisis
|
||||
✓ Hasil Lengkap: Informasi pasien/analisis yang komprehensif
|
||||
✓ Error Handling: Pesan yang tepat jika tidak ada hasil
|
||||
✓ Format Tanggal: Format Indonesia di seluruh aplikasi
|
||||
✓ Status Tombol: Disabled/enabled yang tepat
|
||||
✓ Responsive: Berfungsi di berbagai ukuran layar
|
||||
✓ Bahasa Indonesia: Semua text dalam bahasa Indonesia
|
||||
✓ Tema Biru-Putih: Konsistensi warna tombol
|
||||
|
||||
COVERAGE TESTING:
|
||||
================
|
||||
|
||||
✓ Kasus Emergency (Appendicitis)
|
||||
✓ Kasus Medis (Hipertensi, Pneumonia, Diabetes)
|
||||
✓ Kasus Bedah (Appendectomy)
|
||||
✓ Kasus Obstetrik (Persalinan Normal)
|
||||
✓ Kasus Pediatrik (Bronkiolitis)
|
||||
✓ Pencarian Nama, Nomor RM, BPJS
|
||||
✓ Analisis Biaya dan Overclaim
|
||||
✓ Kodefikasi ICD-10 dan INA-CBG
|
||||
EXPECTED BEHAVIOR:
|
||||
==================
|
||||
✓ Pencarian TIDAK mengembalikan "tidak ada data" jika input valid
|
||||
✓ Flexible matching untuk nama dengan urutan kata berbeda
|
||||
✓ Interface yang sederhana dan user-friendly
|
||||
✓ Performance yang responsif
|
||||
✓ Data yang konsisten dan realistis
|
||||
|
||||
================================================================================
|
||||
CATATAN PENTING:
|
||||
================================================================================
|
||||
|
||||
1. Semua test case menggunakan data medis yang realistis
|
||||
2. Format tanggal menggunakan bahasa Indonesia
|
||||
3. Input diagnosis dan prosedur sudah disesuaikan dengan terminologi medis
|
||||
4. Test case mencakup berbagai spesialisasi medis
|
||||
5. Verifikasi response time dan user experience
|
||||
6. Pastikan tidak ada error di console browser
|
||||
7. Test di berbagai browser (Chrome, Firefox, Edge)
|
||||
|
||||
================================================================================
|
||||
CREATED: Desember 2024
|
||||
VERSION: 1.0
|
||||
UPDATED: Desember 2024
|
||||
VERSION: 2.0
|
||||
CHANGES: Updated schema for unified search input and removed lab results field
|
||||
SYSTEM: Claim Guard Frontend - Medical Records Module
|
||||
================================================================================
|
||||
Reference in New Issue
Block a user