M语言--星童pylon免疫分析仪双向接口

星童pylon免疫分析仪仪器如下图
在这里插入图片描述
双向接口发送医嘱部分
星童pylon免疫分析仪采用读文件形式实现双向,因此在给仪器发送医嘱时必须以.csv格式将文件生成到固定文件夹底下,仪器自动读取,当标本上机时,仪器自动识别项目,从而实现双向

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 num=0
    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)
    ..s labnoOld=labno
    ..i '$l(labno) q
    ..//得到通道号
    ..s chl=$lg($g(^dbo.RPMachineUploadD(MiUploadDR)),7)
    ..s len=$l(chl,"\")
    ..//测试类型0:文本,1:数据库
    ..s TestType="0"
    ..i TestType="0" d
    ...//文本双向上传开始******************************************************
    ...s patInfo=""
    ...s num=num+1
    ...//控制输出文本的内容
    ...i num=1 d
    ....s labnoInfo="id,sample_time,barcode,item_code,patient_name,patient_sex,patient_age,patient_class,patient_code,progress,descs,Specimen,HCT"
    ....i ($l(chl)&&(len>=2)) d
    .....;解决Excel中多项目换行问题,一个项目一行
    .....f temi=1:1:$l(chl,"\") d
    ......s WGMIDR=$p(chl,"\",temi)
    ......s labnoInfo=labnoInfo_"[13][10]"_","_","_labno_","_WGMIDR_","_","_","_","_","_","_","_","_","    //"\r\n"为换行
    ....e  d              ;单项目情况
    .....s labnoInfo=labnoInfo_"[13][10]"_","_","_labno_","_chl_","_","_","_","_","_","_","_","_","    //"\r\n"为换行
    ....//文本类型的控制
    ....//控制输出文本的路径和文件名
    ....s labno=labnoOld_"^"_$zd($h,8)_labno_".csv"
    ....d OutputRow
    ....//文本双向上传结束******************************************************    
    ..i TestType="1" d
    ...//数据库双向上传开始******************************************************
    ...s labnoInfo=""
    ...//控制执行sql
    ...s patInfo="insert into 仪器上传(EpisNo,Ca,Fe,K,Na,Mg) values('"_labno_"'"
    ...//控制连接的odbc
    ...s labno=labnoOld_"^DSN=监听测试"
    ...s Ca=""
    ...s Fe=""
    ...s K=""
    ...s Na=""
    ...s Mg=""
    ...f i=1:1:$l(chl,"\") d
    ....s curChl=$p(chl,"\",i)
    ....i curChl="Ca" s Ca=curChl
    ....i curChl="Fe" s Fe=curChl
    ....i curChl="K" s K=curChl
    ....i curChl="Na" s Na=curChl
    ....i curChl="Mg" s Mg=curChl
    ...s patInfo=patInfo_",'"_Ca_"'"
    ...s patInfo=patInfo_",'"_Fe_"'"
    ...s patInfo=patInfo_",'"_K_"'"
    ...s patInfo=patInfo_",'"_Na_"'"
    ...s patInfo=patInfo_",'"_Mg_"')"
    ...d OutputRow
    ..//数据库双向上传结束******************************************************
    Set qHandle=$lb(0,repid,0)
    Quit $$$OK
    
    
OutputRow
    Set Data=$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
}

结果解析


ClassMethod fileMTHD(mi, record, epis, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, Sessions, Output RowCount As %String) As %String
{
    s mi=$g(mi)
    i '$d(^dbo.BTMIMachineParameterD(mi)) q ""
    i '$l(record) q ""
    d Trace^MI.MIF000(mi,record,"H<--M")
    s (sample,result,date,time,QC)=""
    i record["sampleno" q ""
  	s epis=$P(record,"~",4)
  	s code=$P(record,"~",5)
  	s res=$P(record,"~",8)
  	s result=code_$c(92)_res_$c(44)
    i $l(epis),$l(result) d ##Class(MI.Common.MIFBase).Save(mi, epis, result, date, time, QC)
    q ""
}

特别注意:
要实现多标本生成到一个文件而仪器能识别,则必须使得每个项目换行,不换行则仪器不能识别项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

taxuefeilong

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

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

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

打赏作者

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

抵扣说明:

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

余额充值