实验室管理系统[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()


 

 

 

 

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