M语言--罗氏801流水线自动稀释功能改造

本文介绍了对罗氏801流水线的自动稀释功能改造,以应对临床中HCG等项目的特殊需求。改造包括两点:A. 对于备注有稀释字样的标本,按照规定倍数自动稀释;B. 生殖类标本先预设稀释,若效果不佳,检验师可重新发送稀释命令。通过解读仪器接口文档,实现了程序改造,提高了标本处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、需求描述
根据科室要求,对于HCG等项目需要改造自动稀释功能,以解放人工挑选标本再上机,提高效率根据本院需求整理,自动稀释有两个需求点:
A:临床开医嘱时备注有稀释字样的,按照规定倍数进行稀释
B:生殖类标本,先根据预设的倍数稀释,如果效果不理想,则检验师再根据实际情况向LIS系统重新发送稀释命令,仪器根据新的稀释倍数重新复查。
2、仪器接口文档解读
带稀释倍数的样本申请信息发送:
带稀释倍数的样本信息申请发送是复查信息发送特殊的一种,当检测项目结果达到仪器最大线性的时候为了获得准确的结果通常进行稀释测试来获得一个精确的结果。所以发送复查信息的同时需要通知仪器这次复查需要稀释多少倍,这样仪器进行复查的时候就会按照我们设定的倍数进行稀释检测。
文件内容如下:

MSH|^\&|LIS||||||OML^O21|20140911084900886887|||||ER|ER|
PID|1||1110||^Test||19570101|M|
ORC|XO|0457847300|||||R||20140911084900
OBR||0457847300||CL|100||||||A

首先ORC段的样本信息类型为XO修改,如下所示:
ORC段:ORC|XO|0457847300|||||SC||20140911084900
XO :修改申请
20140911084900:该时间戳需要跟Order发送过来的时间一致
OBR||0457847300||CL|100||||||A
0457847300:条码号
CL:复查项目
100 :稀释倍数

如果多个项目需要复查只需按照上面OBR格式添加多行OBR即可。
注:如果Order无结果,需要增加稀释倍数,需要先取消申请,再发带稀释倍数的order,否则不能在空结果的项目上直接加稀释倍数
3、程序改造效果
生殖类标本稀释(检验师根据已出结果效果评估,二次发送稀释命令)
在这里插入图片描述
4、程序改造
A、HCG-BETA、AFP、TPSA等项目备注有稀释字样时,按设定备注自动稀释

ClassMethod GetPredilu(labNo, UpChl)
{
	q:labNo="" ""
	zn "dhc-app"
	s res=""
	s ordId="" f  s ordId=$O(^OEORD(0,"EpisNo",$TR(labNo," "),ordId)) q:ordId=""  d
	.s ordSubId="" f  s ordSubId=$O(^OEORD(0,"EpisNo",$TR(labNo," "),ordId,ordSubId)) q:ordSubId=""  d
	..s orderRowId=ordId_"||"_ordSubId
	..s OrdItmDr=$p(^OEORD(ordId,"I",ordSubId,1),"^",2)
	..s DepProcNotes=$G(^OEORD(ordId,"I",ordSubId,"DEP",1))
 	..b ;01
 	..i ((OrdItmDr="27394||1")&&(UpChl="HCG-BETA")) d
 	...i ((DepProcNotes["稀释")||(DepProcNotes["滴度")||(DepProcNotes["定量"))  s res=20
 	..i ((OrdItmDr="40704||1")&&(UpChl="AFP")) s res=50
 	..i ((OrdItmDr="5345||1")&&(UpChl="TPSA")) s res=50
 	..i ((OrdItmDr="5341||1")&&(UpChl="AFP")) d
 	...i ((DepProcNotes["稀释")||(DepProcNotes["滴度")||(DepProcNotes["定量")) s res=50
 	zn "dhc-lisdata"
 	q res
}

在下图程序中,调用备注稀释程序,实现将有备注的上机时自动稀释,摒弃人工挑选后再稀释的麻烦做法。
在这里插入图片描述

B、二次发送命令的需要改造上传部分程序

ClassMethod QryLabInfoExecute(ByRef qHandle As %Binary, mi As %String, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, Sessions, Output RowCount As %String) As %Status
{
	Set repid=$i(^CacheTemp)
 	Set ind=1
	s mi=$g(mi),flag=$g(flag)
	i '$d(^dbo.BTMIMachineParameterD(mi)) q ""
	s LabnoList=""
	//
	s labno="" f   s labno=$o(^MIFInfinityOne("U",labno)) q:labno=""  d
	.s TCList=^MIFInfinityOne("U",labno)
	.s labnoInfo=labno_","_$replace(TCList,"\","+")_"|@U"
	.d Trace^MI.MIF000(mi,TCList,"H-->M")
	.//cdf
	.s patInfo=..GetPatInfo(mi,labno)
	.d OutputRow
	.k ^MIFInfinityOne("U",labno)
	//
	//IT3000,需申请标本信息查询
	s AddDate="" f  s AddDate=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," C",AddDate)) q:AddDate=""  d
	.s AddTime="" f  s AddTime=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," C",AddDate,AddTime)) q:AddTime=""  d
	..s MiUploadDR=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," C",AddDate,AddTime,""))
	..s labno=$lg(^dbo.RPMachineUploadD(MiUploadDR),3)
	..i '$l(labno) q
	..//ref
	..s labnoInfo=..GetLabnoInfo(mi,labno)_"@C"
	..//cdf
	..s patInfo=..GetPatInfo(mi,labno)
	..d OutputRow
	//IT3000,需取消申请标本信息查询
	s AddDate="" f  s AddDate=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," R",AddDate)) q:AddDate=""  d
	.s AddTime="" f  s AddTime=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," R",AddDate,AddTime)) q:AddTime=""  d
	..s MiUploadDR=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," R",AddDate,AddTime,""))
	..s labno=$lg(^dbo.RPMachineUploadD(MiUploadDR),3)
	..i '$l(labno) q
	..//ref
	..s labnoInfo=..GetLabnoInfo(mi,labno)_"@R"
	..//cdf
	..s patInfo=..GetPatInfo(mi,labno)
	..d OutputRow
	//IT3000,需项目复查标本信息查询
	s AddDate="" f  s AddDate=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," U",AddDate)) q:AddDate=""  d
	.s AddTime="" f  s AddTime=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," U",AddDate,AddTime)) q:AddTime=""  d
	..s MiUploadDR=$o(^dbo.RPMachineUploadI("IndexSendStatus",mi," U",AddDate,AddTime,""))
	..s labno=$lg(^dbo.RPMachineUploadD(MiUploadDR),3)
	..i '$l(labno) q
	..s TCList=$lg(^dbo.RPMachineUploadD(MiUploadDR),7)
	..//ref
	..s labnoInfo=labno_","_$replace(TCList,"\","+")_"@RR"
	..s patInfo=..GetPatInfo(mi,labno)
	..//d OutputRow
	..//h 10
	..//s ^MIFInfinityOne(labno,"R")=0
	..s ^MIFInfinityOne("U",labno)=TCList
	..//s labnoInfo=labno_","_$replace(TCList,"\","+")_"|@U"
	..//d Trace^MI.MIF000(mi,TCList,"H-->M")
	..//cdf
	..//s patInfo=..GetPatInfo(mi,labno)
	..d OutputRow
	
	//查询需要归档的信息
	i $d(^dbo.RPArchiveVisitNumberI("IndexSended","0",$zd($h,8))) d
	.s SRowID="" f  s SRowID=$o(^dbo.RPArchiveVisitNumberI("IndexSended","0",$zd($h,8),SRowID)) q:SRowID=""  d
	..s ArcWorkGroupMachineDR=$lg($g(^dbo.RPArchiveVisitNumberD(SRowID)),2)
	..s MachWorkGroupMachine=$lg($g(^dbo.BTMIMachineParameterD(mi)),6)
	..i MachWorkGroupMachine'=ArcWorkGroupMachineDR q
	..s VisitNumberDR=$lg($g(^dbo.RPArchiveVisitNumberD(SRowID)),4)
	..s labno=$lg($g(^dbo.RPVisitNumberD(VisitNumberDR)),2)
	..//阳性归档
	..s labnoInfo="POS"_"@C"_"@"_SRowID
	..s patInfo=..GetPatInfo(mi,labno)
	..d OutputRow
	//触发上传iReport操作
	i ('$d(^TMPLIS("IT3000",mi,"IReport",$p($h,",",1)))),$p($h,"2")>10000 d
	.s labno="IReport"
	.s labnoInfo="F#C:\INTERFACE\UP\"_$zd($h,8)_"UP.xlsx"
	.s patInfo="-1"
	.d OutputRow
 	Set qHandle=$lb(0,repid,0)
	Quit $$$OK
	
	
OutputRow
    Set Data=$lb(labno,labnoInfo,patInfo)
    //S ^TMP("WWW",labno,+$h,$p($h,",",2))=$lb(labno,labnoInfo,patInfo)
    Set ColFields="labno,labnoInfo,patInfo"
 	Set ^CacheTemp(repid,ind)=##Class(LIS.Util.Common).TransListNull(Data,ColFields)
 	Set ind=ind+1
	quit
}

总结:
罗氏801流水线经过两次改造,其中一次,改造自动核收功能,第二次,改造自动稀释功能,经过两次改造提高了自动化水平,从而更加大大提高了标本出结果效率。(后期再出改造自动核收的程序。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taxuefeilong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值