วันอังคารที่ 24 ตุลาคม พ.ศ. 2566

SmartEMR Smart Refer

 git clone https://gitlab.com/smartrefer-ubonratchathani/docker-server/smartrefer-client.git

https://gitlab.com/smartrefer/smartemr-web.git

https://gitlab.com/smartrefer/smartemr-api.git
http://192.168.200.92:8081/#/login   
http://192.168.200.92:8081/allergy/
http://192.168.200.92:8081/api/smartemr/
http://192.168.200.92:8081/smartemr/#/main

 docker-compose pull

 docker-compose up -d
ทดสอบ http://localhost:10021/services/visit/2023-10-01/2023-10-01

npm i -g typescript

npm i -g ts-node

npm i -g nodemon

 npm i --force

pm2 start nodemon --name xxxx
pm2 save
######## Smartemr-web๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒๒

npm i  ถ้าไม่ได้ npm i --force
npm start  รอจนกว่า Compiled เสร็จ

ng serve --host 0.0.0.0 --port 4200 
----- EMR ---
smartrefer_client

.การอัพเดทโปรแกรมเพื่อดึง images ใหม่ใชค ้ า สั่งดงัน ้ ี
docker-compose down
docker-compose pull
docker-compose up -d
คำสั่ง down = docker-compose down
คำสั่ง รัน = docker-compose up -d
คำสั่ง รันและดูError  = docker-compose up 
GET::http://192.168.200.92:8081/api/smartemr/
GET::: http://192.168.200.92:8081/api/smartemr/services/visit/2022-10-02/2022-10-30













วันอังคารที่ 10 ตุลาคม พ.ศ. 2566

ClaimDT

 {

    "statusCode"200,
    "results": {
        "seq""0002982975",
        "hn""031416",
        "pid""2341400019081",
        "id_type""1",
        "title""น.ส.",
        "fname""จรงค์ทรัพย์",
        "lname""พันธุ์วรรณ",
        "marriage""1",
        "dob""1993-07-20",
        "sex""2",
        "nation""099",
        "hcode""10953",
        "hospital_name""โรงพยาบาลม่วงสามสิบ",
        "visit_date_time""2023-10-08T20:25:39.000Z",
        "vaccine": [
            {
                "code""106",
                "lot_number""233L7002B",
                "dose_quantity""1",
                "manufacturer""",
                "expiration_date""2024-07-31",
                "occurence_time""2022-06-27  13:00",
                "site_code""",
                "route_code""IM",
                "license_no""ว.20812",
                "name""นพ.ประจักษ์ สีลาชาติ ",
                "note"""
            }
        ]
    },
    "results_claim": {
        "error""unauthorized",
        "message""JWT Expire",
        "message_th""ยืนยันตัวตนไม่สำเร็จ",
        "status"401
    }
} ##########################################################################
SELECT distinct o.visit_id as seq ,o.hn ,p.cid as pid ,'1' as id_type ,CASE WHEN p.PRENAME not in('') THEN TRIM(p.PRENAME) WHEN TIMESTAMPDIFF(year,p.BIRTHDATE,NOW()) < '15' AND p.sex='1' THEN 'ด.ช.' WHEN TIMESTAMPDIFF(year,p.BIRTHDATE,NOW()) >= '15' AND p.sex='1' THEN 'นาย' WHEN TIMESTAMPDIFF(year,p.BIRTHDATE,NOW()) < '15' AND p.sex='2' THEN 'ด.ญ.' WHEN TIMESTAMPDIFF(year,p.BIRTHDATE,NOW()) >= '15' AND p.sex='2' AND p.MARRIAGE ='1' THEN 'น.ส.' ELSE 'นาง' END as title ,trim(p.fname) as fname ,trim(p.lname) as lname ,oc.oc_name as nameoccptn ,CASE WHEN p.marriage = '1' THEN '1' WHEN p.marriage = '2' THEN '2' WHEN p.marriage = '3' THEN '3' WHEN p.marriage = '4' THEN '6' ELSE '9' END AS marriage ,p.birthdate as dob ,p.sex ,timestampdiff(year,p.birthdate,o.reg_datetime) as age ,concat('0',n.natn_id) as nation ,h.hospcode as hcode ,concat('โรงพยาบาล',h.hospname) as hospital_name ,DATE_FORMAT(o.reg_datetime,'%Y-%m-%dT%T.000Z') as visit_date_time ,'' as code_status ,d.drug_id ,d.drug_name FROM address_hosp h, opd_visits o INNER JOIN cid_hn c ON o.HN=c.HN AND o.IS_CANCEL=0 INNER JOIN population p ON p.CID=c.CID LEFT JOIN opd_diagnosis dx on dx.visit_id= o.visit_id AND dx.is_cancel=0 LEFT JOIN icd10new i on i.icd10=dx.icd10 INNER JOIN prescriptions pr ON pr.visit_id = o.visit_id and pr.IS_CANCEL = 0 LEFT JOIN drugs d ON d.drug_id = pr.drug_id LEFT JOIN occupation_new oc ON oc.oc_id = p.oc_id LEFT JOIN nations n ON n.natn_id = p.natn_id LEFT JOIN ipd_reg ipd ON ipd.visit_id = o.visit_id AND ipd.is_cancel = 0 where o.visit_id = ${info.vn} #o.reg_datetime BETWEEN CURDATE()-2 AND NOW() AND ipd.adm_id is null AND TIMESTAMPDIFF(year,p.birthdate,o.reg_datetime) >= 25 AND d.drug_id = '1850' ตามด้วย SELECT DISTINCT CASE WHEN cv.dose_time = '1' THEN '106' WHEN cv.dose_time = '2' THEN '107' WHEN cv.dose_time = '3' THEN '108' ELSE '109' END as 'code' ,max(od.lot_no) as lot_number ,'1' as dose_quantity ,'' as manufacturer ,DATE_FORMAT(max(od.exp_date),'%Y-%m-%d') as expiration_date ,DATE_FORMAT(cv.vac_datetime,'%Y-%m-%d %H:%s') as occurence_time ,'' as site_code ,'IM' as route_code ,'ว.20812' as license_no ,'นพ.ประจักษ์ สีลาชาติ ' as 'name' ,'' as note FROM opd_visits o INNER JOIN cid_hn c ON o.HN=c.HN AND o.IS_CANCEL=0 INNER JOIN population p ON p.CID=c.CID LEFT JOIN cid_vaccinate_v2 cv ON o.visit_id = o.visit_id LEFT JOIN vaccinecovid vc ON vc.vaccine_id = cv.vaccine_id LEFT JOIN order_details od ON od.ivt_id = vc.drug_id #LEFT JOIN invoices v ON v.ivs_id = od.ivs_id where o.visit_id = '0002982975' #o.visit_id = ${info.vn} AND vc.drug_id = '1850' LIMIT 1

วันศุกร์ที่ 29 กันยายน พ.ศ. 2566

InnoDB กับ Lock wait timeout exceeded!

 ผมใช้ innoDB  ใน MySQL แล้วเจอข้อความ error นี้

Lock wait timeout exceeded; try restarting  transaction

1 thought on “InnoDB กับ Lock wait timeout exceeded!”

  1. ubuntu
    Path::::: /etc/mysql/my.cnf
    sudo nano /etc/mysql/my.cnf

    วิธีแก้คือไปเพิ่มใน my.cnf หรือ my.ini
    innodb_log_file_size = 100M
    file นี้มันเก็บ transaction ไว้ default ของมันแค่ 5mb
    มันไม่พอต้องเพิ่ม

    สมมุติสเปกเครื่องเซิร์ฟเวอร์ CPU 4 core  RAM 4 GB)

    # InnoDB Settings
    default_storage_engine          = InnoDB
    innodb_buffer_pool_instances    = 1     # Use 1 instance per 1GB of InnoDB pool size
    innodb_buffer_pool_size         = 1G    # Use up to 70-80% of RAM
    innodb_file_per_table           = 1
    innodb_flush_log_at_trx_commit  = 0
    innodb_flush_method             = O_DIRECT
    innodb_log_buffer_size          = 8M
    innodb_log_file_size            = 256M
    innodb_stats_on_metadata        = 0
    

    คำสั่งคิวรีที่ใช้ตรวจสอบค่าที่เหมาะสมของ innodb_buffer_pool_size

    SELECT CEILING(Total_InnoDB_Bytes*1.6/POWER(1024,3)) RIBPS FROM
    (SELECT SUM(data_length+index_length) Total_InnoDB_Bytes
    FROM information_schema.tables WHERE engine='InnoDB') A;
    

    เมื่อใช้ดาต้าเบสไปได้ 1-2 สัปดาห์ ให้ใช้คำสั่งคิวรีนี้เพื่อใช้ตรวจสอบว่าหน่วยความจำ GB จริงที่ถูกใช้โดย InnoDB Data ใน InnoDB Buffer Pool ในขณะนี้ถูกใช้งานไปเท่าไร

    SELECT (PagesData*PageSize)/POWER(1024,3) DataGB FROM
    (SELECT variable_value PagesData
    FROM information_schema.global_status
    WHERE variable_name='Innodb_buffer_pool_pages_data') A,
    (SELECT variable_value PageSize
    FROM information_schema.global_status
    WHERE variable_name='Innodb_page_size') B;
    

    และมีค่าอื่นๆ อีกเช่น

    join_buffer_size = 1M
    read_buffer_size = 1M
    sort_buffer_size = 2M
    read_rnd_buffer_size = 1M
    

    เสร็จแล้วให้บักทึก และ Restart การทำงาน MySql/Mariadb ใหม่อีกครั้ง

    แนะนำบทความเพื่อศึกษาเพิ่มเติม : Tuning MySQL : สำรวจตัวเองและเข้าใจตัวแปร



วันเสาร์ที่ 9 กันยายน พ.ศ. 2566

Backup VMware ESXI6.7

 Custom Pocy Regis  ///เป็นวิธีที่เสถียรมากที่สุด
--Datastore---> .VMDK.File----->Regis.VMX
https://www.youtube.com/watch?v=qU5HMZveN9E

--ไปที่เก็บ Datastore  Browser
--เลือกโฟลเดอร์ที่เก็บ vm
--หา 2 ไฟล์ 
   * 1.  .vmdk
   * 2. . vmx   // ไฟล์ Rergister


--สร้างโฟลเดอร์ ที่จะเก็บ Image