Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BMXADE2

BMXADE2.m

Go to the documentation of this file.
  1. BMXADE2 ; IHS/OIT/HMW - BMXNet ADO.NET PROVIDER ;
  1. ;;4.0;BMX;;JUN 28, 2010
  1. ;
  1. ;
  1. ;Dental Excel report demo
  1. ;
  1. BMXADE(BMXGBL,BMXBEG,BMXEND) ;EP
  1. ;Returns recordset containing services and minutes by reporting facility, Provider, and ADA Code
  1. ;
  1. N BMXBEGDT,BMXENDDT,BMXTMP,BMXDT,BMXRD,BMXIEN,BMXNOD,BMXCOM,BMXFAC,BMXSU,BMXCOMP,BMXSUP,BMXFACP,BMXSVC,BMXMIN,BMXLVL,BMXFEE
  1. S U="^",BMXRD=$C(30)
  1. K ^BMXTEMP($J),^BMXTMP($J)
  1. S BMXGBL="^BMXTEMP("_$J_")"
  1. S ^BMXTEMP($J,0)="T00030FACILITY^T00030PROVIDER^T00030ADA_CODE^T00030LEVEL^I00030SERVICES^I00030MINUTES^I00030FEE"_BMXRD
  1. S X=BMXBEG,%DT="P" D ^%DT S BMXBEGDT=Y
  1. S X=BMXEND,%DT="P" D ^%DT S BMXENDDT=Y
  1. I BMXENDDT<BMXBEGDT S BMXTMP=BMXENDDT,BMXENDDT=BMXBEGDT,BMXBEGDT=BMXTMP
  1. S BMXBEGDT=$P(BMXBEGDT,".")
  1. S BMXENDDT=$P(BMXENDDT,"."),$P(BMXENDDT,".",2)=99999
  1. ;
  1. ;$O Thru ADEPCD("AC" DATE X-REF
  1. ;Temp global is (FAC,PROV,CODE)=SVCS^MINS
  1. ;
  1. S BMXDT=BMXBEGDT F S BMXDT=$O(^ADEPCD("AC",BMXDT)) Q:'+BMXDT Q:BMXDT>BMXENDDT D
  1. . S BMXIEN=0 F S BMXIEN=$O(^ADEPCD("AC",BMXDT,BMXIEN)) Q:'+BMXIEN D
  1. . . Q:'$D(^ADEPCD(BMXIEN,0))
  1. . . S BMXNOD=^ADEPCD(BMXIEN,0)
  1. . . S BMXFACP=+$P(BMXNOD,U,3)
  1. . . S BMXPRVP=+$P(BMXNOD,U,4)
  1. . . S BMXCODP=0 F S BMXCODP=$O(^ADEPCD(BMXIEN,"ADA","B",BMXCODP)) Q:'+BMXCODP D
  1. . . . D CALCMIN(BMXCODP,.BMXMIN)
  1. . . . D CALCFEE(BMXCODP,.BMXFEE)
  1. . . . S BMXCODPS=0,BMXSVC=0 F S BMXCODPS=$O(^ADEPCD(BMXIEN,"ADA","B",BMXCODP,BMXCODPS)) Q:'+BMXCODPS D
  1. . . . . S BMXSVC=BMXSVC+1
  1. . . . S:'$D(^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP)) ^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP)="0^0"
  1. . . . S $P(^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP),U)=$P(^(BMXCODP),U)+BMXSVC
  1. . . . S $P(^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP),U,2)=$P(^(BMXCODP),U,2)+(BMXSVC*BMXMIN)
  1. . . . S $P(^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP),U,3)=$P(^(BMXCODP),U,3)+(BMXSVC*BMXFEE)
  1. . . . Q
  1. . . Q
  1. . Q
  1. ;
  1. ;Traverse ^BMXTMP and fill in ^BMXTEMP
  1. S BMXI=0
  1. S BMXFACP=-1 F S BMXFACP=$O(^BMXTMP($J,BMXFACP)) Q:BMXFACP="" D
  1. . I BMXFACP=0 S BMXFAC="UNKNOWN"
  1. . E S BMXFAC=$P($G(^DIC(4,BMXFACP,0)),U) S:BMXFAC="" BMXFAC="UNKNOWN"
  1. . S BMXPRVP=-1 F S BMXPRVP=$O(^BMXTMP($J,BMXFACP,BMXPRVP)) Q:BMXPRVP="" D
  1. . . S BMXPRV=$P($G(^DIC(16,BMXPRVP,0)),U) S:BMXPRV="" BMXPRV="UNKNOWN"
  1. . . S BMXCODP=-1 F S BMXCODP=$O(^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP)) Q:'+BMXCODP D
  1. . . . D CODLVL(BMXCODP,.BMXCOD,.BMXLVL)
  1. . . . S BMXI=BMXI+1
  1. . . . S BMXSVC=$P(^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP),U)
  1. . . . S BMXMIN=$P(^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP),U,2)
  1. . . . S BMXFEE=$P(^BMXTMP($J,BMXFACP,BMXPRVP,BMXCODP),U,3)
  1. . . . S ^BMXTEMP($J,BMXI)=BMXFAC_U_BMXPRV_U_BMXCOD_U_BMXLVL_U_BMXSVC_U_BMXMIN_U_BMXFEE_BMXRD
  1. . . . Q
  1. . . Q
  1. . Q
  1. S BMXI=BMXI+1
  1. S ^BMXTEMP($J,BMXI)=$C(31)
  1. Q
  1. ;
  1. CALCMIN(BMXCODP,BMXMIN) ;
  1. ;Returns Minutes for code BMXCOD
  1. N BMXANOD
  1. S BMXMIN=0
  1. Q:'$D(^AUTTADA(BMXCODP,0))
  1. S BMXANOD=^AUTTADA(BMXCODP,0)
  1. ;S BMXLVL=$P(BMXANOD,U,5)
  1. S BMXMIN=$P(BMXANOD,U,4)
  1. Q
  1. ;
  1. CALCFEE(BMXCODP,BMXFEE) ;
  1. ;Returns FEE for code BMXCOD. Only works for ANMC local fee field
  1. N BMXANOD
  1. S BMXFEE=0
  1. Q:'$D(^AUTTADA(BMXCODP,0))
  1. S BMXANOD=^AUTTADA(BMXCODP,0)
  1. S BMXFEE=+$P(BMXANOD,U,12)
  1. Q
  1. ;
  1. CODLVL(BMXCODP,BMXCOD,BMXLVL) ;
  1. ;Returns Name and Level of code at ADACODP
  1. N BMXANOD
  1. S BMXCOD="",BMXLVL=""
  1. Q:'$D(^AUTTADA(BMXCODP,0))
  1. S BMXANOD=^AUTTADA(BMXCODP,0)
  1. S BMXCOD=$P(BMXANOD,U)
  1. S BMXLVL=$P(BMXANOD,U,5)