fix revision hide menu and test case
This commit is contained in:
@@ -6,8 +6,8 @@ import {
|
|||||||
FileText,
|
FileText,
|
||||||
ChevronLeft,
|
ChevronLeft,
|
||||||
ChevronRight,
|
ChevronRight,
|
||||||
UserCog,
|
// UserCog,
|
||||||
Lock,
|
// Lock,
|
||||||
Database,
|
Database,
|
||||||
Shield,
|
Shield,
|
||||||
TrendingUp,
|
TrendingUp,
|
||||||
@@ -77,23 +77,23 @@ export default function Sidebar({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
title: "Administrasi Sistem",
|
// title: "Administrasi Sistem",
|
||||||
icon: UserCog,
|
// icon: UserCog,
|
||||||
color: "text-blue-600",
|
// color: "text-blue-600",
|
||||||
submenu: [
|
// submenu: [
|
||||||
{
|
// {
|
||||||
title: "Pengguna",
|
// title: "Pengguna",
|
||||||
icon: Users,
|
// icon: Users,
|
||||||
path: "/system-administration/user",
|
// path: "/system-administration/user",
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
title: "Peran",
|
// title: "Peran",
|
||||||
icon: Lock,
|
// icon: Lock,
|
||||||
path: "/system-administration/role",
|
// path: "/system-administration/role",
|
||||||
},
|
// },
|
||||||
],
|
// ],
|
||||||
},
|
// },
|
||||||
];
|
];
|
||||||
|
|
||||||
const [expandedMenu, setExpandedMenu] = useState<string | null>(null);
|
const [expandedMenu, setExpandedMenu] = useState<string | null>(null);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ export default function Dashboard() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Alert/Warning Section */}
|
{/* 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">
|
<div className="flex items-center justify-between mb-4">
|
||||||
<h3 className="text-lg font-semibold text-gray-900 flex items-center">
|
<h3 className="text-lg font-semibold text-gray-900 flex items-center">
|
||||||
<Bell className="h-5 w-5 text-red-500 mr-2" />
|
<Bell className="h-5 w-5 text-red-500 mr-2" />
|
||||||
@@ -150,7 +150,7 @@ export default function Dashboard() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Stats Grid */}
|
{/* 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) => (
|
{stats.map((stat, index) => (
|
||||||
<div key={index} className="card p-6">
|
<div key={index} className="card p-6">
|
||||||
<div className="flex items-center justify-between mb-4">
|
<div className="flex items-center justify-between mb-4">
|
||||||
@@ -175,7 +175,7 @@ export default function Dashboard() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Main Grid */}
|
{/* 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 */}
|
{/* BPJS Operations */}
|
||||||
<div className="card p-6">
|
<div className="card p-6">
|
||||||
<div className="flex items-center justify-between mb-6">
|
<div className="flex items-center justify-between mb-6">
|
||||||
@@ -320,7 +320,7 @@ export default function Dashboard() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Second Row */}
|
{/* 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 */}
|
{/* ICD Recommendations & Cost */}
|
||||||
<div className="card p-6">
|
<div className="card p-6">
|
||||||
<div className="flex items-center justify-between mb-6">
|
<div className="flex items-center justify-between mb-6">
|
||||||
|
|||||||
@@ -221,14 +221,33 @@ export default function Administrative() {
|
|||||||
setSearchResults(null);
|
setSearchResults(null);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const query = searchQuery.toLowerCase();
|
const query = searchQuery.toLowerCase().trim();
|
||||||
const foundPatient = mockAdministrativeData.find(
|
|
||||||
(patient) =>
|
if (!query) {
|
||||||
patient.name.toLowerCase().includes(query) ||
|
setSearchResults(null);
|
||||||
patient.medicalRecordNumber.toLowerCase().includes(query) ||
|
setIsSearching(false);
|
||||||
patient.bpjsNumber.includes(query)
|
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) {
|
if (foundPatient) {
|
||||||
// Further filter by birth date if provided
|
// Further filter by birth date if provided
|
||||||
if (birthDate) {
|
if (birthDate) {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import {
|
|||||||
|
|
||||||
interface AssistInput {
|
interface AssistInput {
|
||||||
clinicalNotes: string;
|
clinicalNotes: string;
|
||||||
labResults: string;
|
|
||||||
procedures: string;
|
procedures: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,7 +40,6 @@ interface AssistResult {
|
|||||||
export default function BPJSCodeification() {
|
export default function BPJSCodeification() {
|
||||||
const [assistInput, setAssistInput] = useState<AssistInput>({
|
const [assistInput, setAssistInput] = useState<AssistInput>({
|
||||||
clinicalNotes: "",
|
clinicalNotes: "",
|
||||||
labResults: "",
|
|
||||||
procedures: "",
|
procedures: "",
|
||||||
});
|
});
|
||||||
const [assistLoading, setAssistLoading] = useState(false);
|
const [assistLoading, setAssistLoading] = useState(false);
|
||||||
@@ -60,7 +58,6 @@ export default function BPJSCodeification() {
|
|||||||
const normalize = (s: string) => s.replace(/\s+/g, " ").trim();
|
const normalize = (s: string) => s.replace(/\s+/g, " ").trim();
|
||||||
return {
|
return {
|
||||||
clinicalNotes: normalize(input.clinicalNotes),
|
clinicalNotes: normalize(input.clinicalNotes),
|
||||||
labResults: normalize(input.labResults),
|
|
||||||
procedures: normalize(input.procedures),
|
procedures: normalize(input.procedures),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -68,8 +65,7 @@ export default function BPJSCodeification() {
|
|||||||
const mockAssistPipeline = async (
|
const mockAssistPipeline = async (
|
||||||
input: AssistInput
|
input: AssistInput
|
||||||
): Promise<AssistResult> => {
|
): Promise<AssistResult> => {
|
||||||
const text =
|
const text = `${input.clinicalNotes} ${input.procedures}`.toLowerCase();
|
||||||
`${input.clinicalNotes} ${input.labResults} ${input.procedures}`.toLowerCase();
|
|
||||||
|
|
||||||
const icd10Codes: ICD10Code[] = [];
|
const icd10Codes: ICD10Code[] = [];
|
||||||
const procedureCodes: ProcedureCode[] = [];
|
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"
|
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>
|
||||||
<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>
|
<div>
|
||||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||||
Tindakan / Prosedur yang Dilakukan
|
Tindakan / Prosedur yang Dilakukan
|
||||||
@@ -388,9 +368,7 @@ export default function BPJSCodeification() {
|
|||||||
onClick={runAssistPipeline}
|
onClick={runAssistPipeline}
|
||||||
disabled={
|
disabled={
|
||||||
assistLoading ||
|
assistLoading ||
|
||||||
(!assistInput.clinicalNotes &&
|
(!assistInput.clinicalNotes && !assistInput.procedures)
|
||||||
!assistInput.labResults &&
|
|
||||||
!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"
|
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"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -6,94 +6,201 @@
|
|||||||
DAFTAR ISI:
|
DAFTAR ISI:
|
||||||
1. Clinical.tsx - Test Cases (Rekam Medis Klinis)
|
1. Clinical.tsx - Test Cases (Rekam Medis Klinis)
|
||||||
2. Administrative.tsx - Test Cases (Rekam Medis Administratif)
|
2. Administrative.tsx - Test Cases (Rekam Medis Administratif)
|
||||||
3. CostRecommendation.tsx - Test Cases (Rekomendasi Biaya)
|
3. BPJSCodeification.tsx - Test Cases (Asisten Kodefikasi BPJS)
|
||||||
4. BPJSCodeification.tsx - Test Cases (Kodefikasi BPJS)
|
4. CostRecommendation.tsx - Test Cases (Rekomendasi Biaya)
|
||||||
5. Instruksi Penggunaan Test Cases
|
5. Sample Data untuk Testing
|
||||||
|
6. Instruksi Penggunaan Test Cases
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
1. CLINICAL.TSX - TEST CASES (REKAM MEDIS KLINIS)
|
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:
|
Input Form:
|
||||||
- Nama/Nomor RM/BPJS: Ahmad Budi Santoso
|
- Nama/No. RM/No. BPJS: John Doe
|
||||||
- Tanggal Lahir: 15 Januari 1985
|
- Tanggal Lahir: 15 Juni 1985
|
||||||
|
|
||||||
Expected Result:
|
Expected Result:
|
||||||
Menampilkan rekam medis lengkap dengan identitas pasien, riwayat medis,
|
Menampilkan rekam medis lengkap dengan:
|
||||||
pemeriksaan fisik, diagnosis, rencana pengobatan, dan dokumen medis.
|
- 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:
|
Input Form:
|
||||||
- Nama/Nomor RM/BPJS: MRN2024001
|
- Nama/No. RM/No. BPJS: MR2024001
|
||||||
- Tanggal Lahir: (kosong)
|
- Tanggal Lahir: (kosong)
|
||||||
|
|
||||||
Expected Result:
|
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:
|
Input Form:
|
||||||
- Nama/Nomor RM/BPJS: 000987654321
|
- Nama/No. RM/No. BPJS: 0001234567890
|
||||||
- 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
|
|
||||||
- Tanggal Lahir: (kosong)
|
- Tanggal Lahir: (kosong)
|
||||||
|
|
||||||
Expected Result:
|
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)
|
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:
|
Input Form:
|
||||||
- Nama/Nomor RM/BPJS: Siti Nurhaliza
|
- Nama/No. RM/No. BPJS: Ahmad Budi Santoso
|
||||||
- Tanggal Lahir: 25 Juli 1990
|
- Tanggal Lahir: 10 Mei 1985
|
||||||
|
|
||||||
Expected Result:
|
Expected Result:
|
||||||
Detail administratif menampilkan status klaim aktif, informasi pembayaran,
|
Menampilkan data administratif:
|
||||||
dan riwayat kunjungan.
|
- 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:
|
Input Form:
|
||||||
- Nama/Nomor RM/BPJS: 000123456789
|
- Nama/No. RM/No. BPJS: ahmad santoso
|
||||||
- Tanggal Lahir: (kosong)
|
- Tanggal Lahir: (kosong)
|
||||||
|
|
||||||
Expected Result:
|
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:
|
Input Form:
|
||||||
- Nama/Nomor RM/BPJS: MRN2024002
|
- Nama/No. RM/No. BPJS: Siti Aminah
|
||||||
- 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
|
|
||||||
- Tanggal Lahir: (kosong)
|
- Tanggal Lahir: (kosong)
|
||||||
|
|
||||||
Expected Result:
|
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
|
TEST CASE 1: KASUS DEMAM BERDARAH DENGUE
|
||||||
@@ -118,8 +225,8 @@ Expected Result:
|
|||||||
Analisis AI menunjukkan peringatan potensi overclaim untuk transfusi
|
Analisis AI menunjukkan peringatan potensi overclaim untuk transfusi
|
||||||
dengan Hb > 7 g/dL threshold.
|
dengan Hb > 7 g/dL threshold.
|
||||||
|
|
||||||
TEST CASE 2: KASUS PNEUMONIA
|
TEST CASE 2: KASUS PNEUMONIA COMMUNITY
|
||||||
============================
|
======================================
|
||||||
Input Form:
|
Input Form:
|
||||||
|
|
||||||
Diagnosis Klinis:
|
Diagnosis Klinis:
|
||||||
@@ -138,204 +245,153 @@ Tanggal Kunjungan Terakhir: 15 Agustus 2024
|
|||||||
Expected Result:
|
Expected Result:
|
||||||
Analisis biaya dengan koding ICD-10 yang tepat dan rekomendasi pengobatan.
|
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
|
CLINICAL PAGE - MOCK DATA:
|
||||||
================================================
|
=========================
|
||||||
Input Form:
|
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:
|
Medical History:
|
||||||
Nyeri perut kanan bawah sejak 12 jam yang lalu, mula-mula nyeri
|
- Previous Diseases: Hypertension (2020), Diabetes Mellitus Type 2 (2021)
|
||||||
di epigastrium kemudian berpindah ke fossa iliaka dextra.
|
- Allergies: Penicillin, Shellfish
|
||||||
Disertai mual, muntah 2x, demam subfebris.
|
- Current Medications: Metformin 500mg, Lisinopril 10mg
|
||||||
|
|
||||||
Pemeriksaan Fisik:
|
Primary Diagnosis: Unstable Angina (I20.0)
|
||||||
TD 110/70 mmHg, nadi 88x/menit, suhu 37.8°C. Abdomen:
|
Secondary: Essential Hypertension (I10), Type 2 Diabetes (E11.9)
|
||||||
McBurney sign (+), Rovsing sign (+), defans muskuler (+)
|
|
||||||
regio iliaka dextra. Bising usus normal.
|
|
||||||
|
|
||||||
Pemeriksaan Penunjang:
|
ADMINISTRATIVE PAGE - MOCK DATA:
|
||||||
Leukosit 12.500/μL dengan shift to left, USG abdomen:
|
===============================
|
||||||
appendix menebal dengan fluid collection, foto polos
|
Patient 1:
|
||||||
abdomen dalam batas normal.
|
- 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:
|
BPJS CODIFICATION - DETECTION KEYWORDS:
|
||||||
ICD-10 K35.9, kode prosedur untuk laparoscopic appendectomy,
|
======================================
|
||||||
mapping INA-CBG dengan tarif bedah.
|
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
|
Hypertension Keywords: hipertensi, bp 150/95, tekanan darah tinggi
|
||||||
============================================
|
→ ICD-10: I10, INA-CBG: F-4-13-II (Rp 1.850.000)
|
||||||
Input Form:
|
|
||||||
|
|
||||||
Keluhan Pasien:
|
Diabetes Keywords: diabetes, hba1c, glukosa, gula darah
|
||||||
Nyeri kepala hebat sejak pagi, pandangan kabur, mual muntah.
|
→ ICD-10: E11.9, INA-CBG: E-4-10-I (Rp 2.100.000)
|
||||||
Pasien memiliki riwayat hipertensi tidak terkontrol,
|
|
||||||
tidak rutin minum obat.
|
|
||||||
|
|
||||||
Pemeriksaan Fisik:
|
Gastritis Keywords: gastritis, nyeri perut, mual, muntah
|
||||||
Kesadaran compos mentis, TD 220/120 mmHg, nadi 95x/menit
|
→ ICD-10: K29.1, INA-CBG: G-4-10-I (Rp 1.200.000)
|
||||||
reguler, RR 20x/menit. Funduskopi: perdarahan retina (+),
|
|
||||||
papil edema (+). JVP tidak meningkat.
|
|
||||||
|
|
||||||
Pemeriksaan Penunjang:
|
Procedure Keywords:
|
||||||
EKG: LVH dengan strain pattern, urinalisis: proteinuria +2,
|
- rontgen, x-ray → 87.44 Foto Rontgen thorax
|
||||||
kreatinin 1.8 mg/dL, troponin negatif. Foto thorax:
|
- darah lengkap, cbc → 90.59 Pemeriksaan darah lengkap
|
||||||
kardiomegali dengan pulmonary edema.
|
- endoskopi → 45.13 Esofagogastroduodenoskopi
|
||||||
|
- ekg, ecg → 89.52 Elektrokardiogram
|
||||||
Diagnosis: Hypertensive emergency with target organ damage
|
- usg, ultrasound → 88.76 USG abdomen
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
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:
|
CARA MELAKUKAN TESTING:
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
1. CLINICAL.TSX:
|
1. CLINICAL.TSX:
|
||||||
- Masukkan data pasien sesuai test case
|
- Input: "john" → Harus menemukan "John Doe"
|
||||||
- Klik tombol "Cari Rekam Medis"
|
- Input: "MR2024001" → Harus menemukan pasien
|
||||||
- Verifikasi tampilan rekam medis lengkap
|
- Input: "0001234567890" → Harus menemukan via BPJS
|
||||||
|
|
||||||
2. ADMINISTRATIVE.TSX:
|
2. ADMINISTRATIVE.TSX:
|
||||||
- Input data pasien
|
- Input: "ahmad santoso" → Harus menemukan "Ahmad Budi Santoso"
|
||||||
- Klik tombol "Cari Rekam Medis"
|
- Input: "siti" → Harus menemukan "Siti Aminah"
|
||||||
- Periksa informasi billing/klaim status
|
- Input: "MRN2024001" → Harus menemukan via MRN
|
||||||
|
- Verifikasi flexible word matching
|
||||||
|
|
||||||
3. COSTRECOMMENDATION.TSX:
|
3. BPJSCODIFICATION.TSX:
|
||||||
- Masukkan diagnosis klinis (copy paste dari test case)
|
- Hanya isi 2 field (bukan 3)
|
||||||
- Masukkan prosedur/tindakan
|
- Test dengan keyword: "pneumonia, batuk, sesak"
|
||||||
- Pilih tanggal kunjungan terakhir
|
- Prosedur: "rontgen thorax"
|
||||||
- Klik "Analisis Rekomendasi"
|
- Verifikasi ICD-10 dan tarif yang benar
|
||||||
- Verifikasi analisis AI dan deteksi overclaim
|
|
||||||
|
|
||||||
4. BPJSCODIFICATION.TSX:
|
4. COSTRECOMMENDATION.TSX:
|
||||||
- Input data klinis lengkap sesuai test case
|
- Copy paste diagnosis klinis lengkap
|
||||||
- Klik tombol untuk generate koding
|
- Isi prosedur/tindakan
|
||||||
- Periksa hasil ICD-10, prosedur, dan mapping INA-CBG
|
- 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
|
EXPECTED BEHAVIOR:
|
||||||
✓ Hasil Lengkap: Informasi pasien/analisis yang komprehensif
|
==================
|
||||||
✓ Error Handling: Pesan yang tepat jika tidak ada hasil
|
✓ Pencarian TIDAK mengembalikan "tidak ada data" jika input valid
|
||||||
✓ Format Tanggal: Format Indonesia di seluruh aplikasi
|
✓ Flexible matching untuk nama dengan urutan kata berbeda
|
||||||
✓ Status Tombol: Disabled/enabled yang tepat
|
✓ Interface yang sederhana dan user-friendly
|
||||||
✓ Responsive: Berfungsi di berbagai ukuran layar
|
✓ Performance yang responsif
|
||||||
✓ Bahasa Indonesia: Semua text dalam bahasa Indonesia
|
✓ Data yang konsisten dan realistis
|
||||||
✓ 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
|
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
CATATAN PENTING:
|
UPDATED: Desember 2024
|
||||||
================================================================================
|
VERSION: 2.0
|
||||||
|
CHANGES: Updated schema for unified search input and removed lab results field
|
||||||
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
|
|
||||||
SYSTEM: Claim Guard Frontend - Medical Records Module
|
SYSTEM: Claim Guard Frontend - Medical Records Module
|
||||||
================================================================================
|
================================================================================
|
||||||
Reference in New Issue
Block a user