星童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 ""
}
特别注意:
要实现多标本生成到一个文件而仪器能识别,则必须使得每个项目换行,不换行则仪器不能识别项目。