วันอังคารที่ 28 พฤศจิกายน พ.ศ. 2566

Jhcis-SQL

 https://jhcismuanglampang.blogspot.com/p/blog-page.html
https://drive.google.com/drive/folders/0B2hokdFdQRsxT2pxb1VyaGdUS2M?resourcekey=0-ctji3-1c-TioO1ao8fvcMA //ไฟล์คิวรี่

https://www.facebook.com/JhcisBetong/?locale=th_TH

โค้ดรายชื่อประชากรอายุ 20-50 ปี เป้าหมายการฉีดวัคซีน dt (เกิดตั้งแต่ 1 ม.ค.08-31 ธ.ค.38)


SELECT person.pid AS pid, concat(ctitle.titlename,person.fname,' ',person.lname)as pname, person.birth AS pbirth, GetAgeYearNum(person.birth,CURRENT_DATE)as age, person.idcard AS pcid, person.sex AS sex, person.hnomoi AS hno, person.mumoi AS mu, village.villno AS village_villno, village.villname AS village_villname FROM person INNER JOIN ctitle ON person.prename = ctitle.titlecode INNER JOIN house ON person.pcucodeperson = house.pcucode AND person.hcode = house.hcode INNER JOIN village ON house.pcucode = village.pcucode AND village.villcode = house.villcode WHERE person.typelive IN ('1','3') and person.pid not in (SELECT persondeath.pid FROM persondeath) and person.birth between '1965-01-01' and '1995-12-31' and SUBSTRING(house.villcode,7,2)<>'00' AND nation='99' order BY village.villno,person.hnomoi*1;
* สปสช.ออนไลน์
https://www.nhso.go.th/page/online_service
* Facebook สปสช.
https://www.facebook.com/NHSO.Thailand/
* Web NEW Authen
https://authenservice.nhso.go.th/authencode/#/login
* Web NEW E-Claim บันทึกข้อมูลเบิก
https://eclaim.nhso.go.th/Client/login
* Web E-claim
https://eclaim.nhso.go.th/webComponent/main/MainWebAction.do
* OP/PP Individual Records
https://op.nhso.go.th/op/main/MainWebAction.do
* รายงานระบบบริหารการเบิกจ่ายกองทุนหลักประกันสุขภาพแห่งชาติ (Smart Money Transfer)
https://smt.nhso.go.th/smtf/#/home/budget/summary
* ระบบข้อมูลพื้นฐานหน่วยบริการ (สำหรับสร้าง QR Code ในการ Scan เพื่อ Authen)
http://cpp.nhso.go.th/CPP/
* KTB
https://www.healthplatform.krungthai.com/healthPlatform/login
* ระบบบูรณาการติดตามข้อมูลการจ่ายชดเชยโรคเฉพาะ (Seamless for DMIS)
https://seamlessfordmis.nhso.go.th/seamlessfordmis/faces/login.jsf
* Drug Catalogue
http://drug.nhso.go.th/drugcatalogue
* Moph-IC
https://cvp1.moph.go.th/dashboard
* Moph Claim
https://claim-nhso.moph.go.th/nhso/
* สกส. SSOP
https://cs5.chi.or.th/ssopupload/Main
* หมอพร้อม Digital ID
https://mohpromt.moph.go.th/mpc/mp-pf/mohprompt-did/
* MOPH IDP Center (สำหรับกำหนดรายชื่อและอุปกรณ์ผู้พิสูจน์ตัวตนสำหรับหมอพร้อม)
https://phr1.moph.go.th/idpadmin
* หมอพร้อม Moph ID
https://moph.id.th/login

วันอังคารที่ 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 : สำรวจตัวเองและเข้าใจตัวแปร