Class Whl.SP Extends %RegisteredObject
{
/// Desc: 根据患者生日日期获取患者基本信息
/// Input: 患者生日日期
/// Return: 患者基本信息
/// Test: do ##class(%ResultSet).RunQuery("Whl.SP","PatInfo","1998-11-12","1998-11-12")
/// SqlDbx Call web_XFXZYY_Tool.PatInfo_PatInfo("1995-10-04","1995-10-04")
Query PatInfo(SDate As %String = "", EDate As %String = "") As websys.Query(ROWSPEC = "Index,IDNo,NAME,SEX,CardID,TelNo,MZ,XXDZ,Dob") [ SqlProc ]
{
}
ClassMethod PatInfoExecute(ByRef qHandle As %Binary, SDate As %String = "", EDate As %String = "") As %Status
{
Set repid=$I(^CacheTemp)
Set ind=1
If $g(ind)="" Set ind=1
s SDate=$tr(SDate,$c(0),"") //处理因字符问题导致入参乱码
s EDate=$tr(EDate,$c(0),"")
i SDate="" s SDate=$zd(+$h,3) //如果入参为空,取当前时间
i EDate="" s EDate=$zd(+$h,3)
s StDate=$zdh(SDate,3) //处理时间格式
s EdDate=$zdh(EDate,3)
s (Index,Date,MZ,MZDr)=""
for Date=StDate:1:EdDate {
for{
s Index=$o(^PAPERi("DOB2",Date,Index)) //$o遍历
//s IDNo=$o(^PAPERi("PAPMI_PatNo",$$ALPHAUP^SSUTIL4(IDNo),INDEX))
q:Index="" //这一步必须要有,防止使用$o后出现死循环
S IDNo= $p(^PAPER(Index,"PAT",1),"^",1) //登记号
S NAME= $p(^PAPER(Index,"ALL"),"^",1) //姓名
S SEX= $p(^CT("SEX",$p(^PAPER(Index,"ALL"),"^",7)),"^",2) //性别
S CardID = $p(^PAPER(Index,"ALL"),"^",9) //身份证号
S TelNo = $p(^PAPER(Index,"PER",1),"^",11) //电话号码
s MZDr=$p($G(^PAPER(Index,"PER",2)),"^",1)
If (MZDr'="") s MZ = $p(^CT("NAT",MZDr),"^",2)
Else s MZ="无民族信息" //民族
S XXDZ= $g(^PAPER(Index,"GPA"))
s:XXDZ="" XXDZ="无地址信息" //地址
S Dob = $zd($p(^PAPER(Index,"ALL"),"^",6),3) //生日
d OutputRow
}
}
Set qHandle=$lb("",repid,"")
Quit $$$OK
OutputRow
s data=$lb(Index,IDNo,NAME,SEX,CardID,TelNo,MZ,XXDZ,Dob)
s ^CacheTemp(repid,ind)=data
s ind=ind+1
}
}
query初体验
最新推荐文章于 2024-07-12 16:35:20 发布