實驗室管理系統[LIS],powerbuilder12.6開發,SQLSERVER2008數據庫

實驗室管理系統,powerbuilder12.6開發,SQLSERVER2008數據庫

一、主要功能:

是專爲醫院檢驗科設計的一套實驗室信息管理系統,能將實驗儀器與計算機組成網絡,使病人樣品接收、實驗數據存取、報告審覈、打印分發,實驗數據統計分析等繁雜的操作過程實現了智能化、自動化和規範化管理。有助於提高實驗室的整體管理水平,減少漏洞,提高檢驗質量。
二、技術特點:

1、先進的開發技術:採用sqlserver2008數據庫,客戶端採用Powerbuilder12.6爲開發工具,採用“事務完整性”,三層結構等技術,確保系統的高性能和安全性。
2、穩定性:產品成熟可靠、性能穩定。
3、專業化:產品的開發具有專業性和延續性,爲用戶提供持續的免費版本升級服務。
4、經濟性:滿足適用範圍內醫院的實際需求,性價比優,經濟實用。
5、靈活性:系統操作方便,滿足用戶的不同管理模式。
6、安全性:系統採用多重權限控制,確保系統安全。
7、支持條碼、磁卡等。
8、少維護性:產品化軟件,減少系統的維護成本。

Long Ll_Row
String Ls_Doctadviseno,Ls_Requester,Ls_PatientId,Ls_Section,Ls_PatientName,Ls_Bed_No,Ls_Sex,Ls_Diagnostic,Ls_Sampletype
String Ls_Sampleno,Ls_Toponymy,Ls_Examinaimcode,Ls_Examinaim,Ls_Fphm,Ls_Age,Ls_Age_Unit,Ls_Brxz,Ls_Sample_jszt,Ls_executor
DateTime Ld_ReceiveTime,Ld_Birthday,Ld_executeTime
Integer Li_bz,Li_StayHospitalMode,Li_Feestatus,Li_RequestMode,Li_Count
Double  Ld_fee
datetime Ld_REQUESTTIME

FOR Ll_Row = 1 TO dw_accept.RowCount()
    Li_bz = dw_accept.Object.bz[Ll_Row]
    IF Li_bz = 1 THEN //【標誌爲1 確定標本接收】
        Ls_executor           = dw_accept.Object.executor[Ll_Row]//【接收者】
        
        Ld_executeTime      = dw_accept.Object.executetime[Ll_Row]//【採集時間,此處需要調整,】
        
        Ls_Doctadviseno     = dw_accept.Object.doctadviseno[Ll_Row]
        Ls_Requester         = dw_accept.Object.requester[Ll_Row]//【申請醫生】
        //----------------2018-07-31增加--------------------------------------------------------
        Ld_REQUESTTIME   =dw_accept.object.REQUESTTIME[Ll_Row]//【申請日期】
        //-------------------------------------------------------------------------------------------------
        Li_StayHospitalMode = dw_accept.Object.stayhospitalmode[Ll_Row]//【樣本類型:門診,住院】
        //【病人標誌】
        Ls_PatientId         = dw_accept.Object.patientid[Ll_Row]         //【診療卡號或住院號】
        Ls_Section          = dw_accept.Object.section[Ll_Row]           //【科室】
        Ls_PatientName      = dw_accept.Object.patientname[Ll_Row]//【病人姓名】
        Ls_Bed_No           = dw_accept.Object.bed_no[Ll_Row]         //【牀號】
        Ls_Sex              = dw_accept.Object.sex[Ll_Row]                 //【性別】
        Ls_Diagnostic       = dw_accept.Object.diagnostic[Ll_Row]     //【診斷】
        Ls_Sampletype       = dw_accept.Object.sampletype[Ll_Row] //【樣本類型】
        Ls_Sampleno         = dw_accept.Object.sampleno[Ll_Row]    //【樣本號】
        Ls_Toponymy         = dw_accept.Object.toponymy[Ll_Row]
        Ls_Examinaimcode    = dw_accept.Object.examinaimcode[Ll_Row]//【檢驗項目代碼】
        Ls_Examinaim        = dw_accept.Object.examinaim[Ll_Row]     //【檢驗項目】
        Ls_Fphm              = dw_accept.Object.fphm[Ll_Row]              //【發票號碼】
        Ls_Age                = dw_accept.Object.age[Ll_Row]                //【年齡】
        Ls_Age_Unit         = dw_accept.Object.age_unit[Ll_Row]         //【年齡單位】
        Ls_Brxz               = dw_accept.Object.brxz[Ll_Row]                  //【病人性質】
        Ls_Sample_jszt      = dw_accept.Object.sample_jszt[Ll_Row]
        Ld_Birthday          = dw_accept.Object.birthday[Ll_Row]           //【出生日期】
        Li_RequestMode      = dw_accept.Object.requestmode[Ll_Row]
        Ld_fee                 = dw_accept.Object.fee[Ll_Row]                    //【金額】
        Li_Feestatus         = dw_accept.Object.feestatus[Ll_Row]        
            Ld_ReceiveTime   = f_sysdate()  //【條碼接收日期,默認爲當前日期,2019-06-08】【服務器端日期】
//【把病人信息插入到Lab_patientinfo的表中】
//【取出表lab_patientinfo中存有該樣本號的病人信息數量】    
SELECT count(*)  INTO :Li_Count FROM lab_patientinfo Where sampleno = :Ls_Sampleno;
//================================================================================
//【取病人身份證號碼,add by zxw at 2017-09-21,modify by zxw at 2018-07-31】
string ll_br_sfzh
choose case  Li_StayHospitalMode
    case 1//【門診,2018-07-31,加上門診事務,以前沒加導致無法寫入身份證號】
//**********************************************************************
choose case login.his_lb
    case '1'//【MY-HIS】
        select sfzh into :ll_br_sfzh from mzbrinfor where mzblh=:Ls_PatientId using mz;
        if ll_br_sfzh='' or isnull(ll_br_sfzh) then
            ll_br_sfzh=''
        end if
    case '2'//【-HIS】
SELECT   dbo.Com_SickBaseInfo.FIDCardNo AS 身份證號碼 into :ll_br_sfzh
FROM      dbo.Com_SickCardInfo INNER JOIN  dbo.Com_SickBaseInfo ON dbo.Com_SickCardInfo.FSickID = dbo.Com_SickBaseInfo.FID
where Com_SickCardInfo.FCardNo =:Ls_PatientId using mz;
        if ll_br_sfzh='' or isnull(ll_br_sfzh) then
            ll_br_sfzh=''
        end if
        if Ls_PatientId='0' then
         Ls_PatientId=Ls_Fphm
end if
    case '3'//【3-兒童醫院】
    select sfzh into :ll_br_sfzh from mzbrinfor where id=:Ls_PatientId using mz;
        if ll_br_sfzh='' or isnull(ll_br_sfzh) then
        ll_br_sfzh=''
        end if
    case '4'    //【4-萬達接口】
        
end choose
//************************************************************************
//================================================================================
case 2//【住院,2018-07-31,加上住院事務,以前沒加導致無法寫入身份證號】
    choose case login.his_lb
    case '1'//【MY-HIS】
         select sicksfzh into :ll_br_sfzh from zyzysickman where zycode=:Ls_PatientId using zy;
        if ll_br_sfzh='' or isnull(ll_br_sfzh) then
            ll_br_sfzh=''
        end if
    case '2'//【HIS】
        //select sfzh into :ll_br_sfzh FROM   view_zymx_mysoft where mzblh=:Ls_PatientId using zy;
        if ll_br_sfzh='' or isnull(ll_br_sfzh) then
            ll_br_sfzh=''
        end if
    case '3'//【3-】
        select top 1 sfzh into :ll_br_sfzh FROM   view_zymx_mysoft where zyhm=:Ls_PatientId using zy;
        if ll_br_sfzh='' or isnull(ll_br_sfzh) then
            ll_br_sfzh=''
        end if
    case '4'//【4-萬達接口】
        
end choose
//=============================================================================
case 3//【體檢】
    ll_br_sfzh=''
end choose
//=============================================================================
//***************************【插入表lab_patientinfo數據】************************************************
        IF Li_Count = 0 THEN    //【若表中無信息,則新插入一條記錄】
            INSERT INTO lab_patientinfo
                (REQUESTTIME ,br_sfzh,doctadviseno,     requester,     stayhospitalmode,     patientid,      section,       depart_bed,
                patientname,      sex,           birthday,             cycle,          diagnostic,    sampletype,
                fee,              feestatus,     sampleno,             receivetime,    receiver,      toponymy,
                examinaimcode,    examinaim,     fphm,                 labdepartment,  resultstatus,  nl,
                nldw,             brxz,          computername,         requestmode,    notes,         executor,    executetime,CHECKOPERATOR)
                VALUES
                (:Ld_REQUESTTIME ,:ll_br_sfzh,:Ls_Doctadviseno, :Ls_Requester, :Li_stayhospitalmode, :Ls_PatientId,  :Ls_Section,   :Ls_Bed_No,
                :Ls_PatientName,  :Ls_Sex,       :Ld_Birthday,         '20',           :Ls_Diagnostic, :Ls_sampletype,
                :Ld_fee,          2,             :Ls_sampleno,         :Ld_receivetime, :login.userid, :Ls_toponymy,
                :Ls_examinaimcode,:Ls_examinaim, :Ls_Fphm,             :is_jyks ,    0,             :Ls_Age,
                :Ls_Age_Unit,     :Ls_Brxz,      :login.computer,      :Li_RequestMode,:Ls_Sample_jszt ,:Ls_executor, :Ld_executetime,:login.checker1)  using sqlca;
    ELSE //【若表中有記錄,把幾個標本的檢驗目的合併】
            //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
            IF MessageBox('系統提示【MYSOFT】',"是否確定把【*"+Ls_PatientName+"*】的標本合併到同一個樣本號!",question!,yesno!,2) = 1 THEN
                UPDATE lab_patientinfo
                    SET  doctadviseno = :Ls_Doctadviseno,requester =:Ls_Requester,stayhospitalmode = :Li_stayhospitalmode,
                    patientid = :Ls_PatientId,section = :Ls_Section,depart_bed = :Ls_Bed_No,    patientname = :Ls_PatientName,sex = :ls_sex ,birthday = :Ld_Birthday ,
                    cycle = '20',    diagnostic = :ls_diagnostic ,    sampletype = :ls_sampletype,    nl = :ls_age ,nldw = :ls_age_unit ,brxz = :ls_brxz ,
                    requestmode = :li_requestmode ,    notes = :ls_sample_jszt,    fphm = :ls_fphm ,    examinaim = examinaim +:Ls_examinaim,fee = :Ld_fee,    feestatus = 2    
                    Where sampleno = :Ls_Sampleno using sqlca;
            ELSE
                CONTINUE
            END IF
            //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    END IF
    //********************************************************************************************
    IF sqlca.SQLCode = 0 THEN
            commit using sqlca;

            IF Li_StayHospitalMode = 2 THEN // 【爲住院病人記帳】
                IF wf_charge_zy(Ls_Doctadviseno,Ls_PatientId,Ls_Requester,Ls_PatientName) = -1 THEN
                    Li_Feestatus = 1 //【未記帳】
                    dw_accept.Object.bz[Ll_Row]
                    rollback using sqlca;
                    //CONTINUE//【於2019-04-16關閉,爲了增加手工錄入,否則導致無法判斷是否掃入條碼】
                ELSE
                    Li_Feestatus = 2 //【已記帳】
                END IF
                dw_accept.Object.feestatus[Ll_Row] = Li_Feestatus
            elseif  Li_StayHospitalMode = 1 then  // 【門診病人】
                IF wf_charge_mz(Ls_Doctadviseno,Ls_PatientName) = -1 THEN
                    Li_Feestatus = 1 //【未記帳】
                    dw_accept.Object.bz[Ll_Row]
                    rollback using sqlca;
                    //CONTINUE //【於2019-04-16關閉,爲了增加手工錄入,否則導致無法判斷是否掃入條碼】
                ELSE
                    Li_Feestatus = 2 //【已記帳】
                END IF
                dw_accept.Object.feestatus[Ll_Row] = Li_Feestatus
            END IF
            
            //===============【修改條碼信息標誌】============================================
            UPDATE lab_jytmxx    SET    deviceid=:is_deviceid_1,feestatus = :Li_Feestatus,receiver = :login.userid,    receivetime = :Ld_receivetime,labdepartment = :is_jyks,samplestatus  = 4,    sample_notes  = '標本合格',    sample_jszt   = :Ls_sample_jszt,sampleno      = :Ls_sampleno 
            Where doctadviseno = :Ls_Doctadviseno;
            IF sqlca.SQLCode = 0 THEN
                commit using sqlca;
        //【樣本管理--修改L_JYTMXX_BBGL】
         if trim(login.bbgl)='1' then
            iuo_bbgl.uf_receive_barcode(sqlca,Ls_doctadviseno,li_stayhospitalmode,login.userid,ld_receivetime,is_jyks,is_deviceid_1)
        end if
        ELSE
                rollback using sqlca;
                MessageBox('系統提示【MYSOFT】','【'+Ls_PatientName+'】----lab_jytmxx保存失敗!~n~n原因是:'+sqlca.SQLErrText)
            END IF
            //============================================================================
        ELSE
               rollback using sqlca;
               MessageBox('系統提示','【'+Ls_PatientName+'】----lab_patientinfo保存失敗!~n~n原因是:'+sqlca.SQLErrText)
        END IF
        
    END IF
NEXT

dw_accept.SetFilter('bz = 0') 
dw_accept.Filter()


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章