query初体验


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
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值