ข้ามไปที่เนื้อหา

Flowchart: กระบวนการจัดการผู้ป่วยผิดนัดหมาย

Flow การทำงานที่รองรับทั้งกรณี เปลี่ยนแพทย์/เปลี่ยนโรค (Walk-in Visit) และกรณี เลื่อนนัด (Reschedule)

flowchart TD
    Start(["ผู้ป่วยมาติดต่อ<br/>(ผิดนัด/มาช้ากว่ากำหนด)"]) --> Registration["จุดลงทะเบียน/เวชระเบียน"]

    Registration --> CheckStatus{"ตรวจสอบสถานะ<br/>แพทย์เจ้าของไข้เดิม"}

    CheckStatus -- "แพทย์ยังออกตรวจ" --> SendToOriginal["ส่งตรวจแพทย์เดิม<br/>(ออกใบนำทาง)"]

    CheckStatus -- "แพทย์กลับแล้ว/ไม่อยู่" --> AssessCondition["ประเมินความจำเป็น"]

    AssessCondition -- "ไม่ด่วน/รอได้" --> OptionReschedule{"ต้องการเลื่อนนัด<br/>เป็นวันอื่นหรือไม่?"}

    AssessCondition -- "จำเป็นต้องตรวจวันนี้" --> CheckOtherDoc{"หาแพทย์ท่านอื่น<br/>หรือคลินิกโรคทั่วไป"}

    CheckOtherDoc -- "มีแพทย์รับเคส" --> ChangeDoctor["**เวชระเบียน**<br/>เปลี่ยนชื่อแพทย์/คลินิกใน Visit"]
    ChangeDoctor --> GenVisit["ออกใบนำทางใหม่"]

    CheckOtherDoc -- "ไม่มีแพทย์/คิวเต็ม" --> OptionReschedule

    OptionReschedule -- "เลื่อนนัด (Reschedule)" --> RescheduleProcess["**เวชระเบียน/พยาบาล**<br/>ทำการเลื่อนนัดในระบบ"]
    RescheduleProcess --> CancelOldApp["ยกเลิกนัดเดิม<br/>(ระบบระบุสาเหตุ: มาผิดนัด)"]
    CancelOldApp --> NewApp["ออกใบนัดใหม่"]

    OptionReschedule -- "ไม่เลื่อน (ยืนยันจะตรวจ)" --> ER["ส่งเข้าห้องฉุกเฉิน/เวรบ่าย<br/>(กรณีจำเป็นจริงๆ)"]

    SendToOriginal --> Screening["จุดซักประวัติ"]
    GenVisit --> Screening

    Screening --> End(["เข้าสู่กระบวนการตรวจรักษา"])
    NewApp --> EndProcess(["จบกระบวนการ"])

Revised Workflow: เมื่อพยาบาลซักประวัติเป็นผู้จัดการคิว (Nurse-Driven Flow)

flowchart TD
    Start(["ผู้ป่วยมาติดต่อ<br/>(ผิดนัด/มาช้ากว่ากำหนด)"]) --> Registration["**1. จุดลงทะเบียน/เวชระเบียน**<br/>(ตรวจสอบสิทธิ์ / เปิด Visit)"]

    Registration --> SendToScreening["ส่งผู้ป่วยไปจุดซักประวัติ<br/>(ตามคลินิกที่ระบุในนัดเดิม)"]

    SendToScreening --> Screening["**2. จุดซักประวัติ**<br/>(พยาบาลเรียกซักอาการ)"]

    Screening --> CheckDocRealtime{"**พยาบาลตรวจสอบ**<br/>แพทย์เจ้าของไข้อยู่หรือไม่?"}

    CheckDocRealtime -- "แพทย์อยู่/ยังตรวจไม่เสร็จ" --> VitalSign["วัดสัญญาณชีพ / ซักประวัติ"]
    VitalSign --> SendToDoc["ส่งเข้าห้องตรวจแพทย์เดิม"]

    CheckDocRealtime -- "แพทย์กลับแล้ว/ไม่อยู่" --> ConsultPatient["แจ้งผู้ป่วย & ประเมินอาการ"]

    ConsultPatient --> PatientChoice{"ผู้ป่วยเลือกทางไหน?"}

    PatientChoice -- "ตรวจกับหมอท่านอื่นได้" --> CheckSwap{"มีแพทย์ท่านอื่น<br/>รับเคสแทนหรือไม่?"}

    CheckSwap -- "มีแพทย์รับ" --> ChangeDocProcess["**พยาบาล** ทำการ<br/>เปลี่ยนแพทย์/โอนย้ายห้องตรวจ"]
    ChangeDocProcess --> SendToNewDoc["ส่งเข้าห้องตรวจแพทย์ท่านใหม่"]

    CheckSwap -- "ไม่มีแพทย์รับ" --> ForceReschedule["จำเป็นต้องเลื่อนนัด"]

    PatientChoice -- "ต้องการรอตรวจกับหมอเดิม" --> ForceReschedule

    ForceReschedule --> RescheduleAction["**พยาบาล** ทำการเลื่อนนัด<br/>ในระบบนัดหมาย"]
    RescheduleAction --> ManagePreOrder{"จัดการใบสั่ง Lab/X-ray<br/>ที่สั่งไว้ล่วงหน้า"}

    ManagePreOrder -- "เก็บไว้ทำครั้งหน้า" --> UpdateOrderDate["เลื่อนวันที่ใบสั่งตรวจ"]
    ManagePreOrder -- "ยกเลิก" --> CancelOrder["ยกเลิกใบสั่งตรวจ"]

    UpdateOrderDate --> PrintNewApp["ออกใบนัดใหม่ให้ผู้ป่วย"]
    CancelOrder --> PrintNewApp

    SendToDoc --> DoctorRoom["ห้องตรวจแพทย์"]
    SendToNewDoc --> DoctorRoom
    PrintNewApp --> EndNode(["ผู้ป่วยกลับบ้าน"])
    DoctorRoom --> EndNode