在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
http://www.jiandande.com/html/ITzixun-jishu/Lisyanjiuyuan/2013/0204/1600_3.html 看了后觉得不错,可能有需要的 --------------------------------------------- 本人是做His的,有几家医院非要让我帮他们做Lis,这些仪器的资料真是不太好找,比做His麻烦多了,下面这些东西提供给需要的人,省得找这么辛苦。 Function C2000_A(RxStr:string):BOOL;//普利生C2000-A全自动血凝仪 Function LBY_N6C(RxStr:string):BOOL;//普利生LBY-N6C全自动血液流变仪 Function AU_680(RxStr:string):BOOL;//贝克曼AU680生化分析仪 Function DIMENSION(RxStr:string):BOOL;//西门子Dimension Xpand生化分析仪 Function CENTAU(RxStr:string):BOOL;//西门子ADVIA Centaur CP发光免疫分析仪 Function XT1800I(RxStr:string):BOOL;//希森美康XT-1800i全自动血液细胞分析仪 Function XS500i(RxStr:string):BOOL;//希森美康XS-500i全自动血液细胞分析仪 Function MEJER_600(RxStr:string):BOOL;//美侨MEJER-600尿液分析仪 本文来自: HC3i中国数字医疗论坛(http://bbs.hc3i.cn/) 详细:http://bbs.hc3i.cn/thread-80160-1.html Function C2000_A(RxStr:string):BOOL;//普利生C2000-A全自动血凝仪 var B:BOOL; sStr,sF:string; sSampleNo,sItemChannel,sIdItem,sResult:String; I,aaa:Integer; bbb:string; begin try RxStr:=StringReplace(RxStr,#2+'2 ',#2,[rfReplaceAll]); while True do begin if pos(#3,RxStr)>0 then begin sStr:= copy(RxStr,1,pos(#3,RxStr)); Delete(RxStr,1,pos(#3,RxStr)); end else Break; if Length(sStr)<10 then continue; //获取实验号: sSampleNo:= Trim(copy(sStr,pos(#2,sStr)+1,5)); Delete(sStr,pos(#2,sStr)+1,5); with PutStrToStrList(sStr,#$A#$D) do begin for i:=0 to Count-1 do begin if Length(Trim(Strings))<5 then Continue; sF:=Trim(Strings); sItemChannel:=Trim(PutStrToStrList(sF,' ').Strings[0]); sResult:= Trim(PutStrToStrList(sF,' ').Strings[2]); sResult:= CutNumeric(sResult); sIdItem:=dm.GetStr('IdItem', 'BaseItemChannel', ' and IdEquipment='+g_nSysEquipmentId+' And channel='''+sItemChannel+''''); if (sSampleNo<>'') and (sIdItem<>'') then begin DataPos(g_nSysEquipmentId,sSampleNo,sIdItem,sResult,'0'); end; if (sItemChannel='12') And (PutStrToStrList(sF,' ').Count>4) then begin sItemChannel:='12_1'; sResult:= Trim(PutStrToStrList(sF,' ').Strings[5]); sResult:= CutNumeric(sResult); sIdItem:=dm.GetStr('IdItem', 'BaseItemChannel', ' and IdEquipment='+g_nSysEquipmentId+' And channel='''+sItemChannel+''''); if sIdItem='' then sIdItem:=dm.GetStr('Id', 'BaseItem', ' and IdEquipment='+g_nSysEquipmentId+' And Code='''+sItemChannel+''''); begin DataPos(g_nSysEquipmentId,sSampleNo,sIdItem,sResult,'0'); end; end; end; Free; end; if sSampleNo<>'' then AutoCalc(g_nSysEquipmentId,sSampleNo); end; B:=True; except B:=False; end; Result:= B; end; 本文来自: HC3i中国数字医疗论坛(http://bbs.hc3i.cn/) 详细:http://bbs.hc3i.cn/thread-80160-1.html Function LBY_N6C(RxStr:string):BOOL;//普利生LBY-N6C全自动血液流变仪 var B:BOOL; sStr:string; sSampleNo,sItemChannel,sIdItem,sResult:String; I:Integer; begin if RightStr(RxStr,1)<>#3 then RxStr:=RxStr+#3; while True do begin if pos(#3,RxStr)>0 then begin sStr:= copy(RxStr,1,pos(#3,RxStr)); Delete(RxStr,1,pos(#3,RxStr)); end else Break; if Length(sStr)<10 then continue; //获取实验号: sSampleNo:= Trim(copy(sStr,pos(#2,sStr)+9,4)); with PutStrToStrList(sStr,'B') do begin for i:=0 to Count-1 do begin if i=0 then Continue; sItemChannel:=Trim(copy(Strings,1,2)); sResult:= Trim(copy(Strings,3,10)); sResult:= CutNumeric(sResult); sIdItem:=dm.GetStr('IdItem', 'BaseItemChannel', ' and IdEquipment='+g_nSysEquipmentId+' And channel='''+sItemChannel+''''); if sIdItem='' then sIdItem:=dm.GetStr('Id', 'BaseItem', ' and IdEquipment='+g_nSysEquipmentId+' And Code='''+sItemChannel+''''); if (sSampleNo<>'') and (sIdItem<>'') then begin DataPos(g_nSysEquipmentId,sSampleNo,sIdItem,sResult,'0'); end; end; Free; end; if sSampleNo<>'' then AutoCalc(g_nSysEquipmentId,sSampleNo); end; B:=True; except B:=False; end; Result:= B; end; Function AU_680(RxStr:string):BOOL;//贝克曼AU680生化分析仪 var B:BOOL; sStr:string; sSampleNo,sItemChannel,sIdItem,sResult:String; begin try while True do begin if pos(#3,RxStr)>0 then begin sStr:= copy(RxStr,1,pos(#3,RxStr)); Delete(RxStr,1,pos(#3,RxStr)); end else Break; //获取实验号: sSampleNo:= Trim(copy(sStr,pos(#2,sStr)+9+3,4)); if uppercase(copy(sStr,pos(#2,sStr)+1,2))=':K' then //质控标本从1001开始 sSampleNo:=sSampleNo+'10'+Trim(copy(sStr,pos(#2,sStr)+5,2)); //获取项目数 sStr:= copy(sStr,pos(#2,sStr)+41,pos(#3,sStr)); while Length(sStr)>=13 do begin sItemChannel:= Trim(copy(sStr,1,2)); sResult:= Trim(copy(sStr,3,10)); sResult:= CutNumeric(sResult); sIdItem:=dm.GetStr('IdItem', 'BaseItemChannel', ' and IdEquipment='+g_nSysEquipmentId+' And channel='''+sItemChannel+''''); if sIdItem='' then sIdItem:=dm.GetStr('Id', 'BaseItem', ' and IdEquipment='+g_nSysEquipmentId+' And Code='''+sItemChannel+''''); if (sSampleNo<>'') and (sIdItem<>'') then // and (sResult<>'') begin DataPos(g_nSysEquipmentId,sSampleNo,sIdItem,sResult,'0'); end; sStr:=copy(sStr,13+1) end; if sSampleNo<>'' then AutoCalc(g_nSysEquipmentId,sSampleNo); end; B:=True; except B:=False; end; Result:= B; end; 本文来自: HC3i中国数字医疗论坛(http://bbs.hc3i.cn/) 详细:http://bbs.hc3i.cn/thread-80160-1.html Function DIMENSION(RxStr:string):BOOL;//西门子Dimension Xpand生化分析仪 var B:BOOL; sStr:string; sSampleNo,sItemChannel,sIdItem,sResult:String; i,nLoop:integer; //循环数量 begin try nLoop:= 0; while True do begin if pos(#3,RxStr)>0 then begin sStr:=copy(RxStr,pos(#2,RxStr),pos(#3,RxStr)); Delete(RxStr,1,pos(#3,RxStr)); end else Break; //获取实验号: sSampleNo:=Trim(GetFileld(sStr,char(28),4)); if (Length(sSampleNo)>3) and (IsInteger(RightStr(sSampleNo,1))) then begin sSampleNo:=IntToStr(ToInt(GetNumberOnly(sSampleNo,1))+ToInt(RightStr(sSampleNo,1))-1); end else begin sSampleNo:=GetNumberOnly(sSampleNo,1); end; nLoop:=StrToInt(Trim(GetFileld(sStr,char(28),11))); for i:=1 to nLoop do begin sItemChannel:=Trim(GetFileld(sStr,char(28),8+i*4)); sResult:=Trim(GetFileld(sStr,char(28),9+i*4)); sResult:= CutNumeric(sResult); sIdItem:=dm.GetStr('IdItem', 'BaseItemChannel', ' and IdEquipment='+g_nSysEquipmentId+' And channel='''+sItemChannel+''''); if sIdItem='' then sIdItem:=dm.GetStr('Id', 'BaseItem', ' and IdEquipment='+g_nSysEquipmentId+' And Code='''+sItemChannel+''''); if (sSampleNo<>'') and (sIdItem<>'') then //and (sResult<>'') begin DataPos(g_nSysEquipmentId,sSampleNo,sIdItem,sResult,'0'); end; end; if sSampleNo<>'' then AutoCalc(g_nSysEquipmentId,sSampleNo); end; B:=True; except B:=False; end; Result:= B; end; 本文来自: HC3i中国数字医疗论坛(http://bbs.hc3i.cn/) 详细:http://bbs.hc3i.cn/thread-80160-1.html Function CENTAU(RxStr:string):BOOL;//西门子ADVIA Centaur CP发光免疫分析仪 var B:BOOL; sStr,sIndexStr:string; sSampleNo,sItemChannel,sIdItem,sResult,sDate:String; i:integer; //循环数量 begin try RxStr:=StringReplace(RxStr,#2,'',[rfReplaceAll, rfIgnoreCase]); RxStr:=StringReplace(RxStr,#23,'',[rfReplaceAll, rfIgnoreCase]); RxStr:=StringReplace(RxStr,#3,'',[rfReplaceAll, rfIgnoreCase]); RxStr:=StringReplace(RxStr,#4,'',[rfReplaceAll, rfIgnoreCase]); while True do begin if pos('L|1',RxStr)>0 then begin sStr:=copy(RxStr,1,pos('L|1',RxStr)+7); Delete(RxStr,1,pos('L|1',RxStr)+7); end else Break; with PutStrToStrList(sStr,#10) do begin for i:=0 to Count-1 do begin with PutStrToStrList(Strings,'|') do begin if Count<1 then else begin sIndexStr:=Trim(RightStr(Strings[0],1))+'Camei'; case sIndexStr[1] of 'O': if Count>2 then sSampleNo:=Trim(Strings[2]) else sSampleNo:=''; 'R': if Count>3 then begin if Count>12 then sDate:=Trim(Strings[12]); if RightStr(Strings[2],4)='DOSE' then begin sItemChannel:=Trim(GetFileld(Strings[2],'^',4)); sResult:=Trim(Strings[3]); //sResult:= CutNumeric(sResult); sIdItem:=dm.GetStr('IdItem', 'BaseItemChannel', ' and IdEquipment='+g_nSysEquipmentId+' And channel='''+sItemChannel+''''); if sIdItem='' then sIdItem:=dm.GetStr('Id', 'BaseItem', ' and IdEquipment='+g_nSysEquipmentId+' And Code='''+sItemChannel+''''); if sIdItem='' then sIdItem:='0'; if (sSampleNo<>'') and (sIdItem<>'') then //and (sResult<>'') begin DataPos(g_nSysEquipmentId,sSampleNo,sIdItem,sResult,'0'); end; end; end; //'L': //H (header) record //P (patient) record //O (order) record //L (termination) record end; end; Free; end; end; Free; if sSampleNo<>'' then AutoCalc(g_nSysEquipmentId,sSampleNo); end; end; B:=True; except B:=False; end; Result:= B; end; 本文来自: HC3i中国数字医疗论坛(http://bbs.hc3i.cn/) 详细:http://bbs.hc3i.cn/thread-80160-1.html //希森美康XT-1800i全自动血液细胞分析仪 Function XT1800I(RxStr:string):BOOL; var B,bIsQc:BOOL; sStr:string; sSampleDate,sSampleNo,sItemChannel,sIdItem,sResult:String; II,J:integer; //循环数量 sD2U,sDBU:string; sPicPath:string; nHeadPos:integer; sProcessdata,sItem,sExtra,sFilena:string; nLens:Integer; lStr:TDateRec; slistPicName:TStringList; const sItemName:string='D3U,D4U,D1G,D2G,D3G,D4G,D5G,D6G,D7G'; sPicName:string='HRBC,HPLT,SDIFF,SBASO,SPLT,SRET,SPLT-O,SRET-E,SNRBC'; begin try while True do begin if pos(#3,RxStr)>0 then begin sStr:= copy(RxStr,pos(#2,RxStr)+1,pos(#3,RxStr)-1); Delete(RxStr,1,pos(#3,RxStr)); end else Break; if LeftStr(sStr,2)='DI' then bIsQc:=False else begin if ((LeftStr(sStr,2)='D1C') or (LeftStr(sStr,2)='D2C')) then bIsQc:=True; end; if bIsQc=False then begin sSampleNo:=Trim(Copy(sStr,65,15));//IntToStr(ToInt(Trim(Copy(sStr,65,15)))); sSampleDate:=Trim(Copy(sStr,43,4))+'-'+Trim(Copy(sStr,47,2))+'-'+Trim(Copy(sStr,49,2)); ////检验结果 sD2U:= copy(sStr,pos('D2U',sStr),216); for II:= 0 to 31 do begin sResult:= copy(sD2U,ToInt(sXT1800D2U[II,1]),ToInt(sXT1800D2U[II,2])-1); if Trim(sResult)<>'' then begin if ToInt(sXT1800D2U[II,3])<> 0 then sResult:= LeftStr(sResult,ToInt(sXT1800D2U[II,2])-ToInt(sXT1800D2U[II,3]))+'.'+rightstr(sResult,ToInt(sXT1800D2U[II,3])-1); if pos('*',sResult)> 0 then sResult:='-----'; sItemChannel:=sXT1800D2U[II,0]; sIdItem:=dm.GetStr('IdItem', 'BaseItemChannel', ' and IdEquipment='+g_nSysEquipmentId+' And channel='''+sItemChannel+''''); if sIdItem='' then sIdItem:=dm.GetStr('Id', 'BaseItem', ' and IdEquipment='+g_nSysEquipmentId+' And Code='''+sItemChannel+''''); if (sSampleNo<>'') and (sIdItem<>'') then //and (sResult<>'') begin DataPos(g_nSysEquipmentId,sSampleNo,sIdItem,sResult,'0'); end; end; end; if sSampleNo<>'' then AutoCalc(g_nSysEquipmentId,sSampleNo); /////不详//////////////// sDBU:=copy(sStr,pos('DBU',sStr),106); /////图片//////////////// sPicPath:=g_sSysResultPath+'Graph\'+g_sSysEquipmentCode+'\'+FormatDateTime('YYYYMMDD',strtodate(sSampleDate)); ForceDirectories(PChar(sPicPath)); //CreateDirectory with PutStrToStrList(sItemName,',') do begin for J:=0 to Count-1 do begin nHeadPos:=pos(Trim(Strings[J]),sStr); if nHeadPos<=0 then else begin slistPicName:=PutStrToStrList(sPicName,','); if (Trim(Strings[J])='D3U') or (Trim(Strings[J])='D4U') then begin // 全部评论
专题导读
热门推荐
热门话题
阅读排行榜
|
请发表评论