首页 > 其他分享 >M语言--罗氏801流水线自动稀释功能改造

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

时间:2024-05-30 16:02:15浏览次数:22  
标签:dbo .. labno -- AddDate mi 罗氏 稀释 801

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流水线经过两次改造,其中一次,改造自动核收功能,第二次,改造自动稀释功能,经过两次改造提高了自动化水平,从而更加大大提高了标本出结果效率。(后期再出改造自动核收的程序。)

标签:dbo,..,labno,--,AddDate,mi,罗氏,稀释,801
From: https://blog.csdn.net/taxuefeilong/article/details/139311363

相关文章

  • Mistral 发布 Codestral,它的第一个代码生成人工智能模型,精通 80 多种编程语言
    Mistral是一家由微软支持、估值60亿美元的法国人工智能初创公司,它发布了第一个用于编码的生成式人工智能模型,名为Codestral。与其他代码生成模型一样,Codestral旨在帮助开发人员编写代码并与代码交互。Mistral在博客文章中解释说,它接受了80多种编程语言的培训,包括Py......
  • 汇编:x86汇编环境搭建与基础框架(32位)
    32位汇编代码编写环境:VisualStudio(笔者用的版本为2017);先来说一下在VisualStudio2017中编写汇编代码的准备操作:①创建空项目②设置项目属性:平台工具集设置为VisualStudio2015(v140),因为一些库再2015版本后取消了;③为该项目生成自定义依赖项;勾选masm文件④设置汇编......
  • 漏洞复现1day(大量资产存在)方正畅享全媒体采编系统明文账号密码泄露
      0x01免责声明文章内容仅供日常学习使用,请勿非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。如有内容争议或侵权,我们会及时删除。0x02漏洞描述方正电子在传媒行业3......
  • 基于MCTS的三维四子棋AI模拟和基于PyQt5的应用交互界面
    '''三维四子棋是在三维空间率先四子连珠的游戏,在传统五子棋基本被研究透的情况下,三维四子棋增加了规则和难度,更加考验计算力、空间感、观察力和想象力。本模块实现三维四子棋的GUI。仅供学习和参考。BySoulCheungOnMay28thEmail:[email protected]:1594983583'''......
  • 类与对象(中)
    目录​编辑一、类的6个默认成员函数二、构造函数2.1概念2.2特性三、析构函数3.1概念3.2特性四、拷贝构造函数4.1概念4.2特征五、赋值运算符重载5.1运算符重载5.2赋值运算符重载1.赋值运算符重载格式2.赋值运算符只能重载成类的成员函数不能重载成全......
  • java 注解和反射
    8.注解和反射8.1什么是注解annotationjkd5.0提供的8.2内置注解:@override覆盖方法@Deprecated不推荐使用,@suppressWarnings抑制警告信息:8.3元注解:解释其他注解的注解meta-annotation@Target描述注解范围@Retention注解生命周期:source<class<runtime@Documented:注......
  • C++入门 类(构造函数 & 析构函数 & 显式调用)
    目录类的6个默认成员函数 构造函数特性函数名与类名相同无返回值(不需要写void) 无参构造函数和带参构造函数 构造函数可以重载编译器自动生成构造函数 默认构造函数 实践总结析构函数 显式调用隐式调用 特性 析构函数名是在类名前加字符~ 无参数无返......
  • 车载以太网的未来:OPEN Alliance下17个技术委员会的最新进展与行业影响(上)
        OPENAllianceSIG(One-PairEtherNetSpecialInterestGroup)是一个非营利的、开放的行业联盟,成员主要是来自全世界的160多个汽车主机厂和供应商。迄今为止,OPENAlliance成立了17个技术委员会(Techcommittee,TC),各技术委员会通过解决车载以太网在不同方向的问题,合作推动......
  • 服务器内存不足该怎么办?
    当服务器的物理内存使用率达到或者是接近百分之百时,会导致系统没有办法为新的进程或者是请求分配足够的内存空间,在这种情况下,服务器的性能很有可能会受到一定的影响,严重的会导致系统崩溃或者服务出现中断。那我们面临服务器内存不足时应该怎么办呢?首先服务器内存已满的情况......
  • 关于工厂方法和抽象工厂
    简单工厂简单工厂中没有抽象工厂类,在仅有的简单工厂中,创建工作根据传入的需求,采用相应的分支,创建相应的对象。说白了就是ifelse,然后newProductX/Y/Z…工厂方法工厂方法中,抽象工厂定义了一个抽象方法,具体工厂实现了该抽象方法,并在实现中创建一种对象。具体创建哪种对象取决于......