# data_structures.py from typing import Dict, List from dataclasses import dataclass # Common Templates COMMON_TEMPLATES = { "patient_base_fields": { "HN": "เลขประจำตัวคนไข้ของโรงพยาบาล", "Patient_Name": "ชื่อคนไข้", "Age": "อายุ", "Sex": "เพศ", "RightName": "สิทธิการรักษาพยาบาล", "Patient_Type": "ประเภทคนไข้(สิทธิ์)" }, "opd_base_fields": { "VisitDate": "วันที่มาโรงพยาบาล", "VN": "เลขประจำตัวผู้ป่วยนอก", "PrescriptionNo": "เลขที่ใบยา", "Clinic": "รหัสคลินิก", "Clinic_Name": "ชื่อคลินิก", "Doctor": "รหัสแพทย์", "Doctor_Name": "ชื่อแพทย์" } } def build_report_fields(*templates: str, additional_fields: dict = None) -> dict: """Build report fields from templates and additional fields""" fields = {} for template in templates: fields.update(COMMON_TEMPLATES.get(template, {})) if additional_fields: fields.update(additional_fields) return fields # Import all your report structures here # OPD_REPORTS, IPD_REPORTS, PCT_REPORTS, etc. OPD_REPORTS = { "appointment": { "name": "Appointment report", "description": "รายงานการนัดหมาย", "filters": ["Clinic", "Doctor", "HN", "Date"], "fields": build_report_fields("patient_base_fields", additional_fields={ "AppointDateTime": "วันที่นัดหมายมาโรงพยาบาล", "AppointmentNo": "เลขที่นัดหมายในระบบ", "PrePatientNo": "เลขประจำตัวคนไข้ของโรงพยาบาล(กรณียังไม่เปิดHN)", "เหตุผลนัดหมาย_1": "เหตุผลการนัดหมายลำดับที่ 1", "เหตุผลนัดหมาย_2": "เหตุผลการนัดหมายลำดับที่ 2", "เหตุผลนัดหมาย_3": "เหตุผลการนัดหมายลำดับที่ 3", "เหตุผลนัดหมาย_4": "เหตุผลการนัดหมายลำดับที่ 4", "เหตุผลนัดหมาย_5": "เหตุผลการนัดหมายลำดับที่ 5", "NurseNote": "บันทึกรายละเอียดพยาบาล", "Telephone": "เบอร์ติดต่อคนไข้", "EntryDateTime": "วัดที่สร้างนัดหมาย", "EntryDate_to_AppointDate": "ระยะเวลารอนัด จากวันที่สร้างนัดถึงวันที่นัดหมายพบแพทย์", "Last_AppointmentLog": "สถานะบัตรนัดหมายล่าสุด" }) }, "diagnosis": { "name": "Diagnosis(ICD) Details report", "description": "รายงานการวินิจฉัยโรคผู้ป่วยนอก(ICD)", "filters": ["Clinic", "Doctor", "Diagnosis type", "รหัสโรค", "Date"], "fields": build_report_fields("patient_base_fields", "opd_base_fields", additional_fields={ "Diagnosis_Type": "ประเภทลำดับโรค", "ICD_Code": "รหัสโรค (มาตรฐาน ICD10)", "ICD_Name": "ชื่อโรค (มาตรฐาน ICD10)" }) }, "diagnosis_top100": { "name": "Diagnosis Top 100 report", "description": "รายงาน100อันดับการวินิจฉัยโรคผู้ป่วยนอก(ICD)", "filters": ["Clinic", "Doctor", "Date"], "fields": { "ICD_Code": "รหัสโรค (มาตรฐาน ICD10)", "ICD_Name": "ชื่อโรค (มาตรฐาน ICD10)", "VN_Count": "จำนวน VN รวม" } }, "visit_today": { "name": "Visit today report", "description": "รายงานการเข้ารับบริการผู้ป่วยนอก", "filters": ["HN", "Date"], "fields": build_report_fields("patient_base_fields", additional_fields={ "VisitDate": "วันที่มาโรงพยาบาล", "VN": "เลขประจำตัวผู้ป่วยนอก", "Visit_Name": "ประเภทการมาโรงพยาบาล", "InDateTime": "วันเวลาเริ่มต้นการเข้ารับบริการ", "OutDateTime": "วันเวลาสิ้นสุดการเข้ารับบริการ", "New_Patient": "ผู้ป่วยใหม่-เก่า", "ClaimCode": "รหัสการขอ Authentication สปสช" }) }, "prescription_today": { "name": "Prescription today report", "description": "รายงานการเข้ารับบริการผู้ป่วยนอกตามใบยา", "filters": ["HN", "clinic", "doctor", "Date"], "fields": build_report_fields("patient_base_fields", "opd_base_fields", additional_fields={ "Visit_Name": "ประเภทการมาโรงพยาบาลตามคลินิก", "InDateTime": "วันเวลาเริ่มต้นการเข้ารับบริการ", "OutDateTime": "วันเวลาสิ้นสุดการเข้ารับบริการ", "New_Patient": "ผู้ป่วยใหม่-เก่า", "ClaimCode": "รหัสการขอ Authentication สปสช", "CloseVisit": "ประเภทการปิดใบยา" }) }, "telemedicine": { "name": "Tele Medicine report", "description": "รายงานการเข้ารับบริการผู้ป่วย Tele Medicine", "filters": ["HN", "Clinic", "Doctor", "Date"], "fields": build_report_fields("patient_base_fields", "opd_base_fields", additional_fields={ "Visit_Name": "ประเภทการมาโรงพยาบาลตามคลินิก", "InDateTime": "วันเวลาเริ่มต้นการเข้ารับบริการ", "OutDateTime": "วันเวลาสิ้นสุดการเข้ารับบริการ", "New_Patient": "ผู้ป่วยใหม่-เก่า", "ClaimCode": "รหัสการขอ Authentication สปสช" }) }, "disease_details": { "name": "Disease Details report", "description": "รายงานการลงโรคผู้ป่วยนอก(โดยแพทย์)", "filters": ["HN", "Clinic", "Doctor", "Date"], "fields": build_report_fields("patient_base_fields", "opd_base_fields", additional_fields={ "Diagnosis_Type": "ประเภทการวินิจฉัยโรค", "Disease_Code": "รหัสการวินิจฉัย", "Disease_Name": "ชื่อการวินิจฉัย" }) }, "waiting_times": { "name": "Waiting Times report", "description": "รายงานระยะเวลารอคอยผู้ป่วยนอก", "filters": ["HN", "Clinic", "Doctor", "Date"], "fields": build_report_fields("patient_base_fields", "opd_base_fields", additional_fields={ "Location": "อาคารให้บริการ", "AppointDateTime": "เวลานัดหมาย", "Register": "เวลาเปิดเลขประจำตัวผู้ป่วยนอก", "Prescription_Print": "เวลาปิด VN Slip", "NurseCounter_Acknowledge": "เวลาพยาบาลรับผู้ป่วย", "Diag_Rms_Check_In": "เวลารับผู้ป่วยเข้าห้องตรวจ", "Doctor_Approve_Prescription": "เวลาแพทย์ยืนยันการตรวจและสั่งยา", "Diag_Rms_Check_Out": "เวลาผู้ป่วยออกจากห้องตรวจ", "NurseCounter_Release": "เวลาปิดใบยาหรือส่งผู้ป่วยออกจากคลินิก", "Drug_Acknowledge": "เวลาห้องยารับทราบใบสั่งยา", "Drug_Ready": "เวลาห้องยาจัดยาเสร็จสิ้น", "Drug_Check_Out": "เวลาผู้ป่วยรับยา", "Cashier_Receive": "เวลาออกใบเสร็จ", "Register_to_Prescription_Print": "ระยะเวลาเปิด VN ถึง ปริ้นใบยา(นาที)", "Status1": "ตรวจสอบสถานะคนไข้นัดหมายหรือwalkin", "Wait_Time_Statistics": { "NurseCounter_to_Diag": "ระยะเวลาพยาบาลรับผู้ป่วยถึงเวลาเข้าห้องตรวจ(นาที)", "Doctor_Service_Time": "ระยะเวลาที่แพทย์ใช้ในการตรวจ", "Prescription_to_Release": "ระยะเวลาแพทย์ยืนยันใบสั่งยาถึงผู้ป่วยออกจากคลินิก(นาที)", "Drug_Service_Time": "ระยะเวลาห้องยารับทราบใบสั่งยาถึงผู้ป่วยรับยา(นาที)" } }) } } IPD_REPORTS = { "diagnosis": { "name": "IPD Diagnosis Details report", "description": "รายงานการวินิจฉัยโรคผู้ป่วยใน(ICD)", "filters": ["Ward", "Doctor", "Diagnosis Type", "Icd", "Date"], "fields": build_report_fields("patient_base_fields", additional_fields={ "AN": "เลขประจำตัวผู้ป่วยใน", "AdmDateTime": "วันเวลาเข้ารับการรักษาเป็นผู้ป่วยใน", "DischargeDateTime": "วันเวลาการจำหน่ายผู้ป่วยกลับบ้าน", "DiagnosisType": "ประเภทการวินิจฉัยโรค", "ICDCode": "รหัสโรค", "ICDName": "ชื่อโรค", "ActiveWardName": "หอผู้ป่วยสุดท้ายก่อนจำหน่าย", "DoctorName": "แพทย์เจ้าของไข้" }) }, "admission": { "name": "IPD Admission report", "description": "รายงานการเข้ารับบริการผู้ป่วยใน", "filters": ["Clinic From OPD", "Date"], "fields": build_report_fields("patient_base_fields", additional_fields={ "AN": "เลขประจำตัวผู้ป่วยใน", "AdmDateTime": "วันเวลาเข้ารับการรักษาเป็นผู้ป่วยใน", "FromOPDDoctorName": "แพทย์ผู้ตรวจจากผู้ป่วยนอก", "FromClinicName": "ตรวจจากคลินิก", "AdmCodeName": "ประเภทการรับเข้ารับการรักษาเป็นผู้ป่วยใน", "AdmWard": "หอผู้ป่วยแรกรับ", "AdmHNBedNo": "เลขเตียงผู้ป่วยแรกรับ", "ActiveWard": "หอผู้ป่วยปัจจุบัน", "ActiveHNBedNo": "เลขเตียงผู้ป่วยปัจจุบัน", "AdmDoctor": "แพทย์รับผู้ป่วยเข้าเป็นผู้ป่วยใน" }) }, "discharge": { "name": "IPD Discharge report", "description": "รายงานการจำหน่ายผู้ป่วยในกลับบ้าน", "filters": ["Ward", "Date"], "fields": build_report_fields("patient_base_fields", additional_fields={ "AN": "เลขประจำตัวผู้ป่วยใน", "AdmDateTime": "วันเวลาเข้ารับการรักษาเป็นผู้ป่วยใน", "DischargeDateTime": "วันเวลาการจำหน่ายผู้ป่วยกลับบ้าน", "AdmCode": "ประเภทการรับเข้ารับการรักษาเป็นผู้ป่วยใน", "DischargeCode": "ประเภทการจำหน่ายผู้ป่วยกลับบ้าน", "AdmWard": "หอผู้ป่วยแรกรับ", "AdmHNBedNo": "เลขเตียงผู้ป่วยแรกรับ", "ActiveWard": "หอผู้ป่วยปัจจุบัน", "ActiveHNBedNo": "เลขเตียงผู้ป่วยปัจจุบัน", "AdmDoctor": "แพทย์รับผู้ป่วยเข้าเป็นผู้ป่วยใน", "DischargeDoctor": "แพทย์จำหน่ายผู้ป่วย", "Diag": "โรค" }) }, "drg": { "name": "DRG report", "description": "รายงานผู้ป่วยในรูปแบบตามมาตรฐานข้อมูล DRG", "filters": ["Date"], "fields": build_report_fields("patient_base_fields", additional_fields={ "AN": "เลขประจำตัวผู้ป่วยใน", "DOB": "วันเดือนปีเกิดผู้ป่วย", "DateAdm": "วันที่รับเป็นผู้ป่วยใน", "TimeAdm": "เวลารับเป็นผู้ป่วยใน", "DateDsc": "วันที่จำหน่ายผู้ป่วยกลับบ้าน", "TimeDsc": "เวลาจำหน่ายผู้ป่วยกลับบ้าน", "Discht": "ประเภทการจำหน่าย", "Admwt": "น้ำหนักผู้ป่วยแรกรับ", "PDX": "รหัสการวินิจฉัยโรคหลัก", "Secondary_Diagnoses": { **{f"SDX{i}": f"รหัสการวินิจฉัยโรคร่วมลำดับที่ {i}" for i in range(1, 21)} }, "Procedures": { **{f"Proc{i}": f"รหัสการทำหัตถการลำดับที่ {i}" for i in range(1, 21)} }, "DRG_Details": { "DRG": "DRG Code", "MDC": "Major Diagnostic Category", "RW": "Relative Weight", "AdjRW": "Adjusted Relative Weight", "LOS": "จำนวนวันนอน", "ActLOS": "Actual Length of Stay", "WtLOS": "Weighted Length of Stay", }, "Additional_Info": { "Mcode1": "รหัส Morphology 1", "Mcode2": "รหัส Morphology 2", "Mcode3": "รหัส Morphology 3", "ID": "เลขบัตรประจำตัวประชาชน", "Nation": "สัญชาติ", "Right_Main": "สิทธิ์หลักประจำผู้ป่วย", "Right_Adm": "สิทธิ์ที่ใช้ในการรักษาครั้งนี้", "Province": "รหัสจังหวัด", "Ward": "รหัสหอผู้ป่วย", "Department": "รหัสแผนก", "DischargeStatus": "สถานะการจำหน่าย", "DoctorMaster": "แพทย์เจ้าของไข้" } }) } } PCT_TEMPLATES = { "pct_base_fields": { "HN": "เลขประจำตัวคนไข้ของโรงพยาบาล", "AN": "เลขประจำตัวผู้ป่วยใน", "DateAdm": "วันที่รับเป็นผู้ป่วยใน", "TimeAdm": "เวลารับเป็นผู้ป่วยใน", "DateDsc": "วันที่จำหน่ายผู้ป่วยกลับบ้าน", "TimeDsc": "เวลาจำหน่ายผู้ป่วยกลับบ้าน", "AdmCode": "ประเภทการรับเข้ารับการรักษาเป็นผู้ป่วยใน", "RightAdm": "สิทธิ์ที่ใช้ในการรักษาครั้งนี้", "PDX": "รหัสการวินิจฉัยโรคหลัก", "SDX1": "รหัสการวินิจฉัยโรคร่วมลำดับที่ 1", "SDX2": "รหัสการวินิจฉัยโรคร่วมลำดับที่ 2", "SDX3": "รหัสการวินิจฉัยโรคร่วมลำดับที่ 3", "SDX4": "รหัสการวินิจฉัยโรคร่วมลำดับที่ 4", "SDX5": "รหัสการวินิจฉัยโรคร่วมลำดับที่ 5", "SDX6": "รหัสการวินิจฉัยโรคร่วมลำดับที่ 6", "ICDCm1": "รหัสการทำหัตถการลำดับที่ 1", "ICDCm2": "รหัสการทำหัตถการลำดับที่ 2", "ICDCm3": "รหัสการทำหัตถการลำดับที่ 3", "AdmDoctor": "แพทย์รับผู้ป่วยเข้าเป็นผู้ป่วยใน", "DischargeDoctor": "แพทย์จำหน่ายผู้ป่วย", "DoctorMaster": "แพทย์เจ้าของไข้", "ActiveWard": "หอผู้ป่วยปัจจุบัน", "LOS": "จำนวนวันนอน", "DischargeCode": "สถานะการจำหน่าย", "DischargeType": "ประเภทการจำหน่าย", "Age": "อายุ", "ORDateTime": "วันที่เข้ารับการผ่าตัด" } } # Initialize PCT_REPORTS PCT_REPORTS = { "med_sepsis": { "name": "PCT Med_Sepsis report", "description": "รายงานระยะเวลาวันนอนรหัสโรคหลัก A40 - A41", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "med_fn": { "name": "PCT Med_FN", "description": "รายงานระยะเวลาวันนอนรหัสโรคหลัก D70 และ R509", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "med_upper_gi_bleeding": { "name": "PCT Med_Upper GI bleeding", "description": "รายงานระยะเวลาวันนอนรหัสโรคหลัก K922", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "med_vte": { "name": "PCT Med_VTE", "description": "รายงานระยะเวลาวันนอนรหัส K645,K550,I676,I81,I80*,I82*", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "med_stroke": { "name": "PCT Med_Stroke Fast track", "description": "รายงานระยะเวลาวันนอนรหัสโรค I63-I66", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "surg_lc": { "name": "PCT Surg_LC", "description": "รายงานระยะเวลาวันนอนผู้ป่วยทำหัตถการรหัส 5123", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "surg_hernia": { "name": "PCT Surg_Inguinal Hernia", "description": "รายงานระยะเวลาวันนอนรหัสโรค K40 ทั้งหมด", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "surg_gastostomy": { "name": "PCT Surg_Gastostomy", "description": "รายงานระยะเวลาวันนอนผู้ป่วยทำหัตถการรหัส 4311 และ 4319", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "surg_colostomy": { "name": "PCT Surg_Colostomy", "description": "รายงานระยะเวลาวันนอนผู้ป่วยทำหัตถการรหัส 4610-4614, 4603", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "surg_hemorrhoidectomy": { "name": "PCT Surg_Hemorrhoidectomy", "description": "รายงานระยะเวลาวันนอนผู้ป่วยทำหัตถการรหัส 4941-4949", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "surg_fistula": { "name": "PCT Surg_Ligation of Internal Fistula Tract", "description": "รายงานระยะเวลาวันนอนผู้ป่วยทำหัตถการรหัส 4973", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "surg_fistulotomy": { "name": "PCT Surg_Fistulotomy", "description": "รายงานระยะเวลาวันนอนผู้ป่วยทำหัตถการรหัส 4911", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "surg_sphincterotomy": { "name": "PCT Surg_Lateral Internal Sphincterotomy", "description": "Phase 2", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "gyne_hysterectomy": { "name": "PCT Gyne_Radical Hysterectomy", "description": "Phase 2", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") }, "gyne_laparoscopic": { "name": "PCT Gyne_Total Laparoscopic Hysterectomy", "description": "Phase 2", "filters": ["Date"], "fields": build_report_fields("pct_base_fields") } } # Define OR base fields from PDF OR_TEMPLATES = { "or_base_fields": { "FacilityRmsNo": "", # ห้องผ่าตัด "AN/VN": "เลขที่ประจำตัวคนไข้", "RequestNo": "รหัสเคสการผ่าตัด", "OperationDateTime": "วันที่ทำการผ่าตัด", "OpertivePlan": "แพลนการทำหัตถการในห้องผ่าตัด" } } # Define OR Reports structure OR_REPORTS = { "transaction": { "name": "OR Transaction Amount report", "description": "รายงานการผ่าตัดและค่าใช้จ่ายประจำวัน", "filters": ["FacilityRms", "Date"], "fields": { **OR_TEMPLATES["or_base_fields"], "HNActivityCode": "หมวดหมู่ค่าใช้จ่าย", "ChargeDateTime": "วันที่คิดค่าใช้จ่าย", "HNChargeType": "ประเภทการคิดเงิน", "ChargeAmt": "จำนวนเงิน" } }, "emergency": { "name": "OR Emergency type report", "description": "รายงานการผ่าตัดประเภทเร่งด่วนฉุกเฉิน", "filters": ["FacilityRms", "Date"], "fields": { "RequestNo": "รหัสเคสการผ่าตัด", "HN": "เลขที่ประจำตัวคนไข้โรงพยาบาล", "FacilityRmsNo": "รหัสประเภทห้องผ่าตัด", "AppointmentNo": "วันที่นัดหมาย", "ORConfirmDateTime": "วันที่ยืนยันทำการผ่าตัด", "AttendDateTime": "หมวดหมู่ค่าใช้จ่าย", "Surgeon": "แพทย์ผ่าตัด", "ORCaseType": "ประเภทการผ่าตัด Emergency and Urgency", "ORClassifiedType": "ประเภทการผ่าตัด Major, Minor", "TranferTo": "ประเภทจำหน่ายผู้ป่วยออกจากห้องผ่าตัด", "OperationProcedure": "แพลนการทำหัตถการในห้องผ่าตัด", "ChargeAN": "เลขประจำตัวผู้ป่วยใน", "ChargeVN": "เลขประจำตัวผู้ป่วยนอก", "ChargeVisitDate": "วันที่มาโรงพยาบาล" } } } STAT_REPORTS = { "hn_stat_ward": { "name": "HN stat ward", "description": "รายงานสถิติคนไข้ในหอผู้ป่วยทั้งหมด", "filters": ["Ward", "Date"], "fields": { "StatDate": "วันที่สถิติ", "WardName": "หอผู้ป่วย", "NoBedInventory": "จำนวนเตียงรวม", "NoBedOccBFW": "จำนวนการครองเตียง", "NoPatientBFW": "จำนวนคนไข้", "WellBabyBFW": "", "NoBedUnAcknowledge": "เตียงที่ยังไม่กดรับเข้า", "NoPatientAdm": "จำนวนคนไข้รับใหม่", "NoPatientTransferIN": "จำนวนคนไข้รับเข้าจากหอผู้ป่วยอื่น", "NoPatientTransferINFromICU": "จำนวนคนไข้รับเข้าจากหอผู้ป่วยวิกฤต", "NoBedOccNew": "จำนวนเตียงรับใหม่", "NoBedReserveUseCount": "", "NoPatientDischarge": "จำนวนคนไข้จำหน่ายออก", "NoPatientCxlAdm": "จำนวนคนไข้ยกเลิกรับเข้า", "LengthOfStay": "จำนวนวันนอน", "NoPatientDead": "จำนวนคนไข้เสียชีวิต", "NoPatientTransferOUT": "จำนวนคนไข้ส่งต่อไปหอผู้ป่วยอื่น", "NoPatientTransferOUTToICU": "จำนวนคนไข้ส่งต่อไปหอผู้ป่วยวิกฤต", "NoBedReturn": "จำนวนการคืนเตียง", "NoBedOccCF": "", "NoPatientAdmER": "จำนวนคนไข้รับเข้าจากแผนกฉุกเฉิน", "NoPatientAdmOPD": "จำนวนคนไข้รับเข้าจากแผนกผู้ป่วยนอก", "NoPatientTransferINFromCCU": "จำนวนคนไข้รับเข้าจากหอผู้ป่วยวิกฤตหัวใจ" } }, "hn_stat_xray": { "name": "HN stat x-ray", "description": "รายงานสถิติจำนวนการส่งตรวจทางรังสีวินิจฉัย", "filters": ["HNStat type", "Date"], "fields": { "StatDate": "วันที่สถิติ", "FacilityRmsName": "รหัสประเภทกลุ่ม", "XrayName": "ชื่อการตรวจทางรังสี", "HNStatXrayCountTypName": "ประเภทข้อมูลสถิติ", "HNStatName1": "คำอธิบายประเภทข้อมูลสถิติ", "Counter": "จำนวนการตรวจ", "ExposureQty": "", "TotalUsageQty": "", "WasteQty": "", "Amt": "จำนวนเงินรวม", "CounterFemale": "จำนวนการตรวจเพศหญิง", "CounterMale": "จำนวนการตรวจเพศชาย" } } } SUMMARY_REPORTS = { "appointment_summary": { "name": "Appointment summary by clinic", "description": "รายงานจำนวนการนัดหมายแต่ละคลินิกรายเดือน", "filters": ["Clinic", "Date"], "fields": { "AppointCount": "จำนวนการนัดหมายในแต่ละคลินิก" } }, "diagnosis_summary": { "name": "Diagnosis(ICD) Summary", "description": "รายงานอันดับการวินิจฉัยโรค(ICD10)", "filters": ["Date"], "fields": { "DiagnosisCount": "จำนวนการวินิจฉัยโรค" } }, "visit_today_summary": { "name": "Visit today Summary", "description": "รายงานสถิติการเข้ารับบริการผู้ป่วยนอก", "filters": ["Date"], "fields": { "VisitCount": "จำนวนการเข้ารับบริการ" } }, "visit_by_clinic": { "name": "Visit summary by clinic", "description": "รายงานสถิติการเข้ารับบริการผู้ป่วยนอกแยกตามคลินิก", "filters": ["Clinic", "Date"], "fields": { "VisitCountByClinic": "จำนวนการเข้ารับบริการแยกตามคลินิก" } }, "telemedicine_by_clinic": { "name": "Tele Medicine Summary by clinic", "description": "รายงานสถิติการเข้ารับบริการผู้ป่วยTele medicineแยกตามคลินิก", "filters": ["Clinic", "Date"], "fields": { "TeleMedVisitCount": "จำนวนการเข้ารับบริการ Telemedicine" } }, "doctor_performance": { "name": "Doctor performance Summary", "description": "รายงานสถิติการออกตรวจแพทย์", "filters": ["Doctor", "Date"], "fields": { "DoctorPerformanceCount": "จำนวนการออกตรวจ" } }, "opd_treatment": { "name": "OPD by treatment summary", "description": "รายงานสถิติการให้บริการการรักษาผู้ป่วยนอก", "filters": ["Date"], "fields": { "TreatmentCount": "จำนวนการให้บริการการรักษา" } } } # Define Other Reports structure OTHER_REPORTS = { "revenue": { "name": "Revenue Report", "description": "รายงานข้อมูลรายได้", "filters": ["Date"], "fields": { "RevenueData": "ข้อมูลรายได้" } }, "laboratory": { "name": "Laboratory Report", "description": "รายงานการส่งตรวจทางห้องปฏิบัติการ", "filters": ["Date"], "fields": { "LabData": "ข้อมูลการส่งตรวจทางห้องปฏิบัติการ" } }, "radiology": { "name": "Radiology Report", "description": "รายงานการส่งตรวจทางรังสีวินิจฉัย", "filters": ["Date"], "fields": { "RadiologyData": "ข้อมูลการส่งตรวจทางรังสีวินิจฉัย" } }, "medicine": { "name": "Medicine Report", "description": "รายงานการจ่ายยา", "filters": ["Date"], "fields": { "MedicineData": "ข้อมูลการจ่ายยา" } }, "pt": { "name": "PT Report", "description": "รายงานการให้บริการทางกายภาพบำบัด", "filters": ["Date"], "fields": { "PTData": "ข้อมูลการให้บริการทางกายภาพบำบัด" } } } WEB_DATA_REPORTS = { "OPD": OPD_REPORTS, "IPD": IPD_REPORTS, "PCT": PCT_REPORTS, "OR": OR_REPORTS, "STAT": STAT_REPORTS, "SUMMARY": SUMMARY_REPORTS, "OTHER": OTHER_REPORTS }