Bot WA AI untuk Healthcare

Panduan bot AI WhatsApp untuk klinik dan healthcare. Booking, reminder, FAQ kesehatan. Tutorial lengkap dengan compliance!

Bot WA AI untuk Healthcare
Bot WA AI untuk Healthcare

Healthcare + AI Bot = Better patient experience!

Bot AI untuk healthcare bisa handle appointment booking, medication reminders, FAQ kesehatan, dan triage awal - dengan tetap mematuhi regulasi.


Use Cases Healthcare

šŸ„ USE CASES:

KLINIK/RUMAH SAKIT:
- Booking appointment
- Reschedule/cancel
- Reminder H-1
- Info dokter & jadwal
- Estimasi biaya

APOTEK:
- Cek ketersediaan obat
- Info harga
- Reminder minum obat
- Refill notification

LABORATORIUM:
- Booking test
- Info persiapan test
- Hasil lab ready notification

ASURANSI KESEHATAN:
- Cek coverage
- Claim status
- Provider network
- FAQ polis

Compliance & Safety

āš ļø PENTING - HEALTHCARE COMPLIANCE:

1. BUKAN PENGGANTI DOKTER
   • Bot TIDAK boleh diagnosa
   • TIDAK boleh resep obat
   • TIDAK boleh advice medis spesifik

2. DISCLAIMER WAJIB
   • Setiap info kesehatan harus ada disclaimer
   • Selalu sarankan konsultasi profesional

3. DATA PRIVACY
   • Enkripsi data pasien
   • Sesuai regulasi (HIPAA/local)
   • Consent untuk data

4. EMERGENCY HANDLING
   • Detect emergency keywords
   • Direct ke hotline/IGD
   • Jangan delay dengan bot

System Prompt Healthcare

javascript

const HEALTHCARE_PROMPT = `Kamu adalah AI assistant untuk [KLINIK NAME].

PERAN:
- Membantu booking appointment
- Memberikan info umum tentang layanan
- Menjawab FAQ non-medis
- BUKAN dokter, TIDAK memberikan diagnosis

LAYANAN KLINIK:
- Dokter Umum: Rp 150.000
- Dokter Spesialis: Rp 300.000 - 500.000
- Lab Test: Bervariasi
- Vaksinasi: Sesuai jenis

JADWAL:
- Senin-Jumat: 08:00-21:00
- Sabtu: 08:00-15:00
- Minggu: Tutup

DOKTER:
- dr. Andi (Umum) - Senin-Jumat
- dr. Budi, Sp.PD (Penyakit Dalam) - Selasa, Kamis
- dr. Citra, Sp.A (Anak) - Senin, Rabu, Jumat

ATURAN KETAT:
1. JANGAN PERNAH memberikan diagnosis
2. JANGAN PERNAH meresepkan obat
3. JANGAN PERNAH memberikan advice medis spesifik
4. Selalu sarankan konsultasi dengan dokter
5. Jika emergency, langsung arahkan ke IGD/119

CONTOH YANG TIDAK BOLEH:
āŒ "Sepertinya Anda terkena flu"
āŒ "Coba minum paracetamol"
āŒ "Itu gejala diabetes"

CONTOH YANG BOLEH:
āœ… "Untuk keluhan tersebut, sebaiknya konsultasi dengan dokter umum"
āœ… "Saya bisa bantu booking dengan dr. Andi"
āœ… "Info lebih lanjut tentang gejala bisa ditanyakan saat konsultasi"

EMERGENCY KEYWORDS:
Jika ada kata: darurat, emergency, sesak napas berat, 
nyeri dada, pingsan, kejang, kecelakaan
→ LANGSUNG arahkan ke IGD atau hubungi 119`;

Appointment Booking

javascript

const appointmentTools = [
    {
        type: 'function',
        function: {
            name: 'check_doctor_schedule',
            description: 'Check doctor availability',
            parameters: {
                type: 'object',
                properties: {
                    doctorId: { type: 'string' },
                    date: { type: 'string' }
                }
            }
        }
    },
    {
        type: 'function',
        function: {
            name: 'create_appointment',
            description: 'Book an appointment',
            parameters: {
                type: 'object',
                properties: {
                    patientName: { type: 'string' },
                    patientPhone: { type: 'string' },
                    doctorId: { type: 'string' },
                    date: { type: 'string' },
                    time: { type: 'string' },
                    complaint: { type: 'string' }
                },
                required: ['patientName', 'doctorId', 'date', 'time']
            }
        }
    }
];

async function createAppointment(data) {
    // Check availability
    const isAvailable = await checkSlotAvailability(
        data.doctorId, 
        data.date, 
        data.time
    );
    
    if (!isAvailable) {
        return {
            success: false,
            message: 'Slot tidak tersedia',
            alternatives: await getAlternativeSlots(data.doctorId, data.date)
        };
    }
    
    // Create appointment
    const appointment = {
        appointmentId: generateAppointmentId(),
        patientName: data.patientName,
        patientPhone: data.patientPhone,
        doctorId: data.doctorId,
        doctorName: await getDoctorName(data.doctorId),
        date: data.date,
        time: data.time,
        complaint: data.complaint,
        status: 'confirmed',
        createdAt: new Date()
    };
    
    await db.appointments.insertOne(appointment);
    
    // Schedule reminders
    await scheduleReminder(appointment, 'H-1');
    await scheduleReminder(appointment, 'H-3h');
    
    return {
        success: true,
        appointment
    };
}

Emergency Detection

javascript

const EMERGENCY_KEYWORDS = [
    'darurat', 'emergency', 'gawat',
    'sesak napas', 'tidak bisa napas',
    'nyeri dada', 'sakit dada',
    'pingsan', 'tidak sadar',
    'kejang', 'step',
    'kecelakaan', 'luka parah',
    'perdarahan', 'darah banyak',
    'stroke', 'serangan jantung',
    'keracunan', 'overdosis'
];

function detectEmergency(message) {
    const lowerMessage = message.toLowerCase();
    return EMERGENCY_KEYWORDS.some(keyword => 
        lowerMessage.includes(keyword)
    );
}

async function handleMessage(userId, message) {
    // PRIORITY: Check for emergency first
    if (detectEmergency(message)) {
        return handleEmergency(userId, message);
    }
    
    // Normal flow
    return await processNormalMessage(userId, message);
}

function handleEmergency(userId, message) {
    // Log emergency
    logEmergencyDetection(userId, message);
    
    // Alert staff
    alertEmergencyStaff(userId, message);
    
    return `🚨 KONDISI DARURAT TERDETEKSI

Jika ini adalah keadaan darurat medis:

1ļøāƒ£ SEGERA hubungi 119 (Ambulans)
2ļøāƒ£ Atau langsung ke IGD terdekat

šŸ„ IGD [KLINIK]: [ALAMAT]
šŸ“ž Hotline: [NOMOR]

Jangan tunda penanganan medis darurat!

---

Jika ini bukan darurat dan Anda ingin 
booking konsultasi biasa, ketik BOOKING.`;
}

Medical FAQ with Disclaimer

javascript

async function handleMedicalFAQ(message) {
    const response = await openai.chat.completions.create({
        model: 'gpt-4o',
        messages: [
            {
                role: 'system',
                content: `Kamu adalah assistant untuk FAQ kesehatan UMUM.

ATURAN:
- Berikan info UMUM saja
- SELALU tambahkan disclaimer
- JANGAN diagnosis
- JANGAN resep obat
- Selalu sarankan konsultasi dokter

FORMAT JAWABAN:
1. Info umum singkat
2. Disclaimer
3. Saran untuk konsultasi`
            },
            { role: 'user', content: message }
        ]
    });
    
    let answer = response.choices[0].message.content;
    
    // Ensure disclaimer is present
    if (!answer.includes('konsultasi') && !answer.includes('dokter')) {
        answer += '\n\nāš ļø _Informasi ini bersifat umum. Untuk kondisi spesifik Anda, silakan konsultasi dengan dokter._';
    }
    
    return answer;
}

Medication Reminder

javascript

// For pharmacy or clinic with medication reminders
async function setupMedicationReminder(userId, medication) {
    const reminder = {
        oderId
userId,
        medicationName: medication.name,
        dosage: medication.dosage,
        frequency: medication.frequency, // e.g., "3x sehari"
        times: medication.times, // e.g., ["08:00", "14:00", "20:00"]
        startDate: medication.startDate,
        endDate: medication.endDate,
        withFood: medication.withFood,
        active: true
    };
    
    await db.medicationReminders.insertOne(reminder);
    
    // Schedule reminders
    for (const time of reminder.times) {
        await scheduleRecurringReminder(reminder, time);
    }
    
    return `āœ… Reminder obat sudah diset!

šŸ’Š ${medication.name} ${medication.dosage}
ā° ${medication.times.join(', ')}
šŸ“… Sampai ${formatDate(medication.endDate)}

Aku akan ingatkan setiap jadwal minum obat ya!

āš ļø _Reminder ini sebagai pengingat saja. 
Ikuti petunjuk dokter/apoteker Anda._`;
}

async function sendMedicationReminder(reminder) {
    const message = `ā° REMINDER OBAT

Waktunya minum obat:

šŸ’Š ${reminder.medicationName}
šŸ“‹ Dosis: ${reminder.dosage}
${reminder.withFood ? 'šŸ½ļø Diminum setelah makan' : 'šŸ’§ Bisa diminum kapan saja'}

Sudah minum? Reply āœ…
Snooze 15 menit? Reply ā°

_Jaga kesehatan ya!_ šŸ’Ŗ`;

    await sendWhatsApp(reminder.userId, message);
}

Conversation Example

šŸ‘¤: Hai, mau booking dokter

šŸ¤–: Hai! Selamat datang di [Klinik] 😊

Mau konsultasi dengan dokter apa kak?

šŸ‘Øā€āš•ļø Dokter kami:
1ļøāƒ£ dr. Andi (Umum)
2ļøāƒ£ dr. Budi, Sp.PD (Penyakit Dalam)
3ļøāƒ£ dr. Citra, Sp.A (Anak)

Atau ceritakan keluhannya, aku bantu 
arahkan ke dokter yang tepat!

---

šŸ‘¤: Anak saya demam sudah 2 hari

šŸ¤–: Untuk keluhan demam pada anak, 
sebaiknya konsultasi dengan dr. Citra, Sp.A 
(Spesialis Anak) ya kak.

šŸ“… Jadwal dr. Citra:
- Senin, Rabu, Jumat
- 09:00 - 15:00

Mau booking untuk tanggal berapa kak?

āš ļø _Jika demam disertai kejang, sesak napas, 
atau kondisi memburuk, segera ke IGD._

---

šŸ‘¤: Hari Rabu bisa?

šŸ¤–: Rabu, 19 Feb 2026 dengan dr. Citra ya!

ā° Slot tersedia:
- 09:00 āœ…
- 10:00 āœ…
- 11:00 āœ…
- 13:00 āœ…
- 14:00 āœ…

Pilih jam berapa kak?

---

šŸ‘¤: Jam 10 aja

šŸ¤–: Baik kak! Untuk booking, aku butuh:

1ļøāƒ£ Nama lengkap pasien (anak)
2ļøāƒ£ Tanggal lahir anak
3ļøāƒ£ Nama orang tua/wali

---

šŸ‘¤: Anak: Dinda, 5 tahun. Ortu: Sari

šŸ¤–: āœ… BOOKING BERHASIL!

šŸ“‹ Detail Appointment:
━━━━━━━━━━━━━━━━━━━━
šŸŽ« No: APT-20260219-010
šŸ‘¶ Pasien: Dinda (5 thn)
šŸ‘© Ortu: Sari
šŸ‘©ā€āš•ļø Dokter: dr. Citra, Sp.A
šŸ“… Rabu, 19 Feb 2026
ā° 10:00 WIB
šŸ“ [Alamat Klinik]
━━━━━━━━━━━━━━━━━━━━

šŸ’° Biaya konsultasi: Rp 300.000
   (Belum termasuk obat/lab jika ada)

šŸ“ Yang perlu dibawa:
- Kartu identitas ortu
- Kartu BPJS (jika pakai)
- Catatan suhu demam anak

Aku akan reminder H-1 ya kak!
Semoga Dinda cepat sembuh šŸ™

Best Practices

DO āœ…

- Clear disclaimer setiap info medis
- Detect dan prioritaskan emergency
- Konfirmasi detail appointment
- Send reminders
- Respect patient privacy
- Escalate appropriately

DON'T āŒ

- Diagnosa penyakit
- Resepkan obat
- Delay emergency cases
- Store data tanpa consent
- Over-promise treatment
- Replace doctor consultation

FAQ

Bot boleh kasih info kesehatan?

Info UMUM boleh dengan disclaimer. Diagnosis dan resep TIDAK boleh.

Bagaimana handle emergency?

Detect keywords, langsung arahkan ke 119/IGD. Jangan proses sebagai chat biasa.


Kesimpulan

Healthcare Bot = Better access, with responsibility!

Without BotWith AI Bot
Call to book24/7 booking
Miss remindersAuto reminder
Wait for infoInstant FAQ

Build Healthcare Bot →


Artikel Terkait