M语言--BC6800系列仪器保存仪器报警信息

这篇博客介绍了如何使用M语言处理BC6800系列仪器的通讯数据,特别是关注IS标记的仪器报警信息。通过示例程序,博主展示了如何保存这些报警信息,并改造后使得报警信息能直观地显示在界面上,以便于审核报告时提高审核医师的工作效率。
摘要由CSDN通过智能技术生成

1、仪器通讯示例

H<--M : MSH|^~\&|LabXpert|Mindray|||20240531085047||ORU^R01|13343|P|2.3.1||||||UNICODE
H-->M : ACK
H<--M : PID|1||0003117896^^^^MR||王迎桐^王迎桐||20201105000000|Fmale
H<--M : PV1|1|O|ENKMZ-儿内科门诊^^|||||||||||||||||Public
H<--M : OBR|1||3008950337|00001^Automated□Count^99MRC|||20240531085046|||林丽星||||||||||||||HM|NotValidated|||||||service
H<--M : OBX|1|IS|08001^Take□Mode^99MRC||A||||||F
H<--M : OBX|2|IS|08002^Blood□Mode^99MRC||M||||||F
H<--M : OBX|38|NM|32623-1^MPV^LN||9.7|fL|6.5-12.0|N|||F
H<--M : OBX|39|NM|32207-3^PDW^LN||16.1||15.0-17.0|N|||F
H<--M : OBX|40|NM|10002^PCT^99MRC||0.305|%|0.108-0.282|H~N|||F
H<--M : OBX|41|NM|10013^PLCC^99MRC||73|10*9/L|30-90|N|||F
H<--M : OBX|42|NM|10014^PLCR^99MRC||23.4|%|11.0-45.0|N|||F
H<--M : OBX|43|NM|30392-5^NRBC#^LN||0.000|10*9/L|0.000-9999.999|N|||F
H<--M : OBX|44|NM|26461-4^NRBC%^LN||0.00|/100WBC|0.00-9999.99|N|||F
H<--M : OBX|45|NM|10022^PLT-I^99MRC||313|10*9/L||N|||F
H<--M : OBX|65|NM|71426-1^FR-CRP^LN||20.54|mg/L|0.00-4.00|H~N|||F
H<--M : OBX|66|NM|71426-1-1^hs-CRP^99MRC||>10.00|mg/L|0.00-4.00|H~N|||F
H<--M : OBX|67|NM|71426-1-2^CRP^99MRC||20.54|mg/L|0.00-4.00|H~N|||F
H<--M : OBX|68|NM|12227-5^CORRECTED□WBC^LN||7.51|10*9/L|4.00-10.00|N|||F
H<--M :OBX|69|IS|15192-8^Atypical□Lymphs?^LN||T||||||F
H<--M :OBX|70|ED|15056^RBC□Histogram.□BMP^99MRC||^Image^BMP^Base64^Qk0OQgAAAAAAALYDAAAoAAAAlgAAAGkAA

根据通讯文档说明
OBX开头,以“|”分隔的第三位如图是IS则为仪器报警信息,是NM则为仪器结果信息,是ED则为图片数据。
仪器报警存储不分改造:

// 解析仪器报警信息,WKT 2023-08-31
    			I dataTye="IS" {	  
	    			    ;D Trace^MI.MIF000(mi,epis_"^"_channe,"channe")
		    			s value1=$$GetWarResult^MI.MIFZHCAL8000X(channe)
		    			
		    			;S result1=result1_channel_par10_value_par11	
		    			i $l(result1) s result1=result1_par11_value1
	                    e  s result1=value1
	                    ;D Trace^MI.MIF000(mi,epis_"^"_result1,"result1")
		    		
	    		}

保存仪器报警信息

Save  
    D Trace^MI.MIF000(mi,epis_"^"_result,"Test")	
  	I $l(epis),$l(result) {
	  	S QC=""
  		D Save^MI.MIF000(mi,epis,result,date,time,QC)
  	}
  	// 解析仪器报警信息,WKT 2023-08-31
  	D Trace^MI.MIF000(mi,epis_"^"_result1,"baojing")
  	I $l(epis),$l(result1) {
	  	;SaveResultWarned
	  	;D Trace^MI.MIF000(mi,epis_"^"_result1,"result2")
  		D SaveResultWarned^MI.MIFZHCAL8000X(epis,result1,mi)
  	}
  	S (sample,epis,surname,rec,res,result,date,time,QC,resultType)=""
  	Q

保存程序:

SaveResultWarned(labno, conclusion, predealMI)
	s labno=$g(labno)
	s conclusion=$g(conclusion)
	s predealMI=$g(predealMI)
	s curWorkGroupMachineDR=$lg($g(^dbo.BTMIMachineParameterD(predealMI)),6)
	s hasFindRep=0
	i $d(^dbo.RPVisitNumberI("IndexVisitNumber"," "_$zcvt(labno,"U"))) d
	.s VisitNumberDR=$o(^dbo.RPVisitNumberI("IndexVisitNumber"," "_$zcvt(labno,"U"),""))
	.i $d(^dbo.RPVisitNumberReportI("IndexReportID",VisitNumberDR)) d
	..s WorkGroupMachineDR="" f  s WorkGroupMachineDR=$o(^dbo.RPVisitNumberReportI("IndexReportID",VisitNumberDR,WorkGroupMachineDR)) q:WorkGroupMachineDR=""  d
	...s OrderNo="" f  s OrderNo=$o(^dbo.RPVisitNumberReportI("IndexReportID",VisitNumberDR,WorkGroupMachineDR,OrderNo)) q:OrderNo=""  d
	....s ReportDR="" f  s ReportDR=$o(^dbo.RPVisitNumberReportI("IndexReportID",VisitNumberDR,WorkGroupMachineDR,OrderNo,ReportDR)) q:ReportDR=""  d
	.....s Status=$lg($g(^dbo.RPVisitNumberReportD(ReportDR)),22) 
	.....i Status="3" q
	.....s WorkGroupMachineDR=$lg($g(^dbo.RPVisitNumberReportD(ReportDR)),4) 
	.....s objrep=##Class(dbo.RPVisitNumberReport).%OpenId(ReportDR)
	.....i $l(objrep.ResultWarned) s objrep.ResultWarned=objrep.ResultWarned_","_conclusion
	.....e  s objrep.ResultWarned=conclusion
	.....s sc=objrep.%Save()
	.....s hasFindRep=1
	.....i ('$SYSTEM.Status.IsOK(sc)) d
	......d Trace^MI.MIF000(predealMI,"-1^存仪器报警信息失败:"_$SYSTEM.Status.GetErrorText(sc),"H<--M")
	i hasFindRep=0,$l(curWorkGroupMachineDR),$d(^dbo.RPVisitNumberReportI("IndexEpisodeNo",$zd($h,8),curWorkGroupMachineDR," "_$zcvt(labno,"U"))) d
	.s ReportDR=$o(^dbo.RPVisitNumberReportI("IndexEpisodeNo",$zd($h,8),curWorkGroupMachineDR," "_$zcvt(labno,"U"),""))
	.s objrep=##Class(dbo.RPVisitNumberReport).%OpenId(ReportDR)
	.s objrep.ResultWarned=conclusion
	.s sc=objrep.%Save()
	.s hasFindRep=1 
	i hasFindRep=0 d Trace^MI.MIF000(predealMI,labno_":没有找到报告","H<--M")
	q "1"

改造后效果
在这里插入图片描述
总结:
将仪器报警信息显示到界面,方便审核报告时做参考,已给审核医师明显的提醒,提高审核效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

taxuefeilong

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

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

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

打赏作者

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

抵扣说明:

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

余额充值