Saturday, 1 February 2025

ระบบ API VISIT HIS และ SMAST OPD




 ระบบ API VISIT HIS และ SMAST OPD เป็นระบบที่พัฒนาขึ้นเพื่อเชื่อมต่อการทำงานระหว่างระบบต่างๆ ในโรงพยาบาลและสถานพยาบาล โดยมีคุณสมบัติดังนี้:

คุณสมบัติหลัก

  1. การจัดการสิทธิการรักษา
    • รองรับการ Authentication ผ่าน NHSO Authen Code
  2. ระบบการส่งต่อผู้ป่วย
    • จัดการการส่งต่อระหว่างห้องและแผนกได้อัตโนมัติ
    • พิมพ์ใบนำทางขนาด 58 mm ได้
    • เชื่อมต่อกับระบบ Smart OPD Auto
  3. การเชื่อมต่อและการสื่อสาร
    • รองรับโปรโตคอล HL7 (Health Level 7)
    • เชื่อมต่อกับอุปกรณ์ KIOS และ Smart BP
    • รองรับการทำงานผ่าน Telemedicine

การทำงานนอกสถานที่

  1. การติดตั้ง Gateway Server
    • ติดตั้งที่เครื่องในวง LAN เดียวกับ Server รพ.สต.
    • ไม่จำเป็นต้องมี IP จริงสำหรับ รพ.สต.
    • รองรับการทำงานผ่านอินเตอร์เน็ต
  2. ประสิทธิภาพการทำงาน
    • ความเร็วในการเปิด Visit ขึ้นอยู่กับความเร็วอินเตอร์เน็ตทั้งสองฝั่ง
    • รองรับการทำงานแบบ Real-time
    • มีระบบ Cache เพื่อลดการใช้งานเครือข่าย

การรับส่งข้อมูลผ่าน HL7

ระบบรองรับการรับส่งข้อมูลผ่านโปรโตคอล HL7 โดยมีโครงสร้างข้อมูลมาตรฐานดังตัวอย่างในโค้ดด้านบน

ข้อแนะนำการใช้งาน

  1. ควรตรวจสอบความเร็วอินเตอร์เน็ตทั้งสองฝั่งก่อนการใช้งาน
  2. ติดตั้ง Gateway Server ในตำแหน่งที่เหมาะสมเพื่อประสิทธิภาพสูงสุด
  3. ตรวจสอบการเชื่อมต่อกับระบบ สปสช. อย่างสม่ำเสมอ

ระบบนี้ได้รับการออกแบบมาเพื่อรองรับการทำงานทั้งในและนอกสถานที่ โดยเน้นความยืดหยุ่นและประสิทธิภาพในการใช้งาน พร้อมทั้งรักษามาตรฐานความปลอดภัยของข้อมูลผู้ป่วย


// ตัวอย่าง HL7 Message สำหรับส่งข้อมูลผู้ป่วย

MSH|^~\&|BPM01|SCK MED PLUS|HIS|SCK-HOSCS|20230922142041||ORU^R01|2701|P|2.4

PID|1|||1111111111119

PV1||O|||||||||||||||||

OBR|1|||||20230220093044||||||||20230220093044

// ตัวอย่าง HL7 Message สำหรับส่งข้อมูลการวัด Vital Signs และอื่นๆ

OBX|1|ST|WEIGHT||45.5|KG.|||||F|||20230220093044

OBX|2|ST|HEIGHT||155.0|CM.|||||F|||20230220093044

OBX|3|ST|BMI||24.1|Kg/m2|||||F|||20230220093044

OBX|4|ST|WAIST||90.0|CM.|||||F|||20230220093044

OBX|5|ST|TEMP||36.6|C|||||F|||20230220093044

OBX|6|ST|SYSTOLIC||123.0|mmHg|||||F|||20230220093044

OBX|7|ST|DIASTOLIC||85.0|mmHg|||||F|||20230220093044

OBX|8|ST|PULSE||76.0|bpm|||||F|||20230220093044

OBX|9|ST|O2SAT||111.0|%Spo2|||||F|||20230220093044

OBX|10|ST|RR||20.0|RM|||||F|||20230220093044

OBX|11|ST|DTX|0|121.0|mg/DL|||||F|||20230220093044

OBX|12|ST|URIC|0|6.99|mg/DL|||||F|||20230220093044

// ตัวอย่าง HL7 Message สำหรับส่งข้อมูล NHSO Authen Code

OBX|13|ST|claimcode_nhso||PP1597923018||||||F|||20230207112218


ESP32 เก็บ ข้อมูล การเปิดปิดประตู เข้า google sheet งบไม่เกิน 100 บาท

 


วิธีการทำงานโดยรวม

  1. ESP32 ตรวจจับสถานะประตู

    • ใช้เซ็นเซอร์แม่เหล็ก (Reed Switch) หรือเซ็นเซอร์ Hall Effect เพื่อตรวจจับว่าเปิดหรือปิด
    • ใช้ ESP32 อ่านค่าสถานะจาก GPIO
  2. ESP32 ส่งข้อมูลไปยัง Google Sheets

    • ESP32 ใช้ HTTP POST/GET เพื่อส่งข้อมูลไปยัง Google Apps Script
    • Google Apps Script จะจัดการบันทึกข้อมูลลง Google Sheets

ขั้นตอนการตั้งค่า Google Sheets และ Apps Script

  1. สร้าง Google Sheets

    • สร้างไฟล์ใหม่ ตั้งชื่อ เช่น DoorLog
    • ตั้งชื่อคอลัมน์ เช่น Timestamp, Status
  2. สร้าง Google Apps Script

    • เปิด Extensions > Apps Script
    • วางโค้ดนี้ลงไป

function doGet(e) {
    return doPost(e);
}

function doPost(e) {
    var sheet = SpreadsheetApp.openById("YOUR_SHEET_ID").getActiveSheet();
    var status = e.parameter.status;
    var timestamp = new Date();

    sheet.appendRow([timestamp, status]);

    return ContentService.createTextOutput("Success");
}


    • เปลี่ยน "YOUR_SHEET_ID" เป็น ID ของ Google Sheets
    • กด Deploy > New Deployment > Web app
    • กำหนดให้ Anyone สามารถเข้าถึงได้
    • คัดลอก URL ที่ได้มา
โค้ด ESP32 (Arduino)

#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char* scriptURL = "YOUR_SCRIPT_URL"; 

const int doorSensor = 4; // ขา GPIO ที่เชื่อมกับเซ็นเซอร์
int lastState = HIGH;

void setup() {
    Serial.begin(115200);
    pinMode(doorSensor, INPUT_PULLUP);
    WiFi.begin(ssid, password);
    
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to WiFi...");
    }
    Serial.println("Connected to WiFi!");
}

void loop() {
    int currentState = digitalRead(doorSensor);

    if (currentState != lastState) {
        lastState = currentState;
        String status = (currentState == HIGH) ? "Closed" : "Opened";
        
        HTTPClient http;
        http.begin(scriptURL + "?status=" + status);
        int httpResponseCode = http.GET();
        http.end();

        Serial.println("Door Status: " + status);
    }

    delay(1000);
}



  • ESP32 ตรวจจับสถานะประตู
  • ส่งข้อมูลไปยัง Google Apps Script
  • Apps Script บันทึกข้อมูลลง Google Sheets

หากต้องการปรับปรุงระบบ เช่น เพิ่มการแจ้งเตือนผ่าน Line Notify หรือ Telegram แจ้งให้ฉันทราบได้! 


อุปกรณ์ที่ใช้

  1. ESP32
  2. Reed Switch (เซ็นเซอร์แม่เหล็ก)
  3. ตัวต้านทาน 10kΩ (Pull-up Resistor)
  4. สาย Jumper

การต่อวงจร

  • Reed Switch มี 2 ขา
    • ขาหนึ่งต่อกับ GND
    • อีกขาหนึ่งต่อกับ GPIO 4 ของ ESP32 (สามารถใช้ขาอื่นได้)
    • ใช้ตัวต้านทาน 10kΩ ต่อระหว่าง GPIO 4 และ 3.3V เพื่อทำ Pull-up

หลักการทำงาน

  • เมื่อประตูปิด → วงจรสมบูรณ์ → GPIO 4 อ่านค่า LOW
  • เมื่อประตูเปิด → วงจรขาด → GPIO 4 อ่านค่า HIGH