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

APCLBP1.m

Go to the documentation of this file.
  1. APCLBP1 ; IHS/CMI/LAB - CALC WEIGHT REPORT ;
  1. ;;2.0;IHS PCC SUITE;**4,15**;MAY 14, 2009;Build 11
  1. ;
  1. ; APCLBTYP - blood pressure type measurement (4)
  1. ; APCLOCTL - Blood pressure out of control flag
  1. START ;
  1. S APCLBTYP=$O(^AUTTMSR("B","BP",0))
  1. S Y=DT D DD^%DT S APCLDT=Y
  1. S APCLJOB=$J,APCLBTH=$H,APCLPTOT=0,APCLTPOC=0
  1. D XTMP^APCLOSUT("APCLBP","PCC BLOOD PRESSURE - OUT OF CONTROL - REPORT")
  1. ; If Search Template used
  1. I APCLSEAT'="" D Q
  1. .S DFN=0 F S DFN=$O(^DIBT(APCLSEAT,1,DFN)) Q:'DFN I $D(^DPT(DFN,0)),'$P(^DPT(DFN,0),U,19) D PROC
  1. S DFN=0 F S DFN=$O(^AUPNPAT(DFN)) Q:'DFN I $D(^DPT(DFN,0)),'$P(^DPT(DFN,0),U,19) D PROC
  1. D KILL
  1. Q
  1. ;
  1. PROC ;
  1. Q:$$DEMO^APCLUTL(DFN,$G(APCLDEMO))
  1. S Y=DFN D ^AUPNPAT
  1. Q:AUPNSEX=""
  1. I APCLSEX'="B",APCLSEX'=AUPNSEX Q ;quit if want only one sex and this patient isn't that sex
  1. ;
  1. ; Quit if communities are selected and the patient's community is blank
  1. ; or the patient's community is not one of the ones selected
  1. ;
  1. S APCLCMTY=$$COMMRES^AUPNPAT(DFN,"E") S:"-1"[APCLCMTY APCLCMTY=$P($G(^AUPNPAT(DFN,11)),U,18)
  1. I $D(APCLCOMM) Q:APCLCMTY="" Q:'$D(APCLCOMM(APCLCMTY))
  1. S:APCLCMTY="" APCLCMTY="~UNKNOWN" ; the ~ puts it last in the sort
  1. ; Quit if no birth date
  1. Q:AUPNDOB=""
  1. S APCLAGE=(AUPNDAYS\365.25)
  1. S APCLCLAS=$$BEN^AUPNPAT(DFN,"C") ; returns classifications/beneficiary in format F
  1. Q:APCLCLAS=""
  1. I APCLIBEN=1,APCLCLAS'="01" Q
  1. S X1=DT,X2=AUPNDOB D ^%DTC S APCLAGE=(X\365.25) ;recalculate age based on date of weight
  1. I $D(APCLAGER) Q:APCLAGE<$P(APCLAGER,"-") Q:APCLAGE>$P(APCLAGER,"-",2)
  1. ;
  1. ; APCLOCTL - Blood pressure out of control flag
  1. ;
  1. S (APCLOCTL,APCLTSBP,APCLTDBP,APCLBPC)=0
  1. S APCLDT=APCLED-1 F S APCLDT=$O(^AUPNVMSR("AA",DFN,APCLBTYP,APCLDT)) Q:'APCLDT Q:APCLDT>APCLSD D
  1. .S APCLMIEN=0 F S APCLMIEN=$O(^AUPNVMSR("AA",DFN,APCLBTYP,APCLDT,APCLMIEN)) Q:'APCLMIEN D:$D(^AUPNVMSR(APCLMIEN))
  1. ..Q:$P($G(^AUPNVMSR(APCLMIEN,2)),U,1) ;entered in error
  1. ..S APCLVSIT=$P(^AUPNVMSR(APCLMIEN,0),U,3),APCLCLIN=$P(^AUPNVSIT(APCLVSIT,0),U,8)
  1. ..I $D(APCLCLNT) Q:APCLCLIN="" Q:'$D(APCLCLNT(APCLCLIN))
  1. ..S APCLVCLN=APCLCLIN,APCLBPC=APCLBPC+1,APCLSBP=$P(^AUPNVMSR(APCLMIEN,0),U,4),APCLDBP=$P(APCLSBP,"/",2),APCLSBP=+APCLSBP,APCLTSBP=APCLTSBP+APCLSBP,APCLTDBP=APCLTDBP+APCLDBP
  1. ;
  1. ; If blood pressure count (APCLPBC) > 0 then the patient meets the selection criteria
  1. ; APCLPTOT - Total patients that were checked
  1. ; APCLTPOC - Total patients with BP out of control
  1. ; APCLTOCTL blood pressure out of control flag
  1. ; = 1 or 11 Systolic out of control (#10>0)
  1. ; = 10 or 11 Diastolic out of control (> 1)
  1. D:APCLBPC
  1. .S APCLOCTL=0,APCLMSBP=APCLTSBP\APCLBPC
  1. .S:APCLMSBP>139 APCLOCTL=1
  1. .I APCLRTYP="S" S APCLBPTY=1,APCLSORT=APCLCMTY,APCLTBP=APCLTSBP D COUNT1 S APCLSORT=0 D COUNT1
  1. .S APCLMDBP=APCLTDBP\APCLBPC S:APCLMDBP>89 APCLOCTL=APCLOCTL+10
  1. .I APCLOCTL,APCLRTYP="C" S ^DIBT(APCLSTMP,1,DFN)="" Q
  1. .I APCLRTYP="S" S APCLBPTY=2,APCLSORT=APCLCMTY,APCLTBP=APCLTDBP D COUNT1 S APCLSORT=0 D COUNT1
  1. Q:APCLRTYP="C"
  1. D
  1. .;If the report type is Detail save patient data and B/P readings only,
  1. .; otherwise collect summary statistics data
  1. .;
  1. .I APCLRTYP="D" D:APCLOCTL SET Q
  1. .S APCLSORT=APCLCMTY D COUNT ; do count for community
  1. .S APCLSORT=0 D COUNT ; do count for total
  1. Q
  1. ;
  1. ; APCLSORT - is the community name, it's set to zero when summing stats
  1. ; for the grand total
  1. ;
  1. ; stored at the APCLSORT level:
  1. ;Piece
  1. ; 1 APCLCPT - Patient count
  1. ; 2 APCLCBC - count of blood pressures taken
  1. ; APCLTYP = 1 used to store systolic values
  1. ; = 2 used to store diastolic values
  1. ; Pieces stored at this level pertaining to the specific type
  1. ; 1 Sum total of values of blood pressure readings
  1. ; 2 total out of countrol patients
  1. ; 3 total out of control counts of B/P
  1. ; 4 Sum total of values of blood pressures readings for
  1. ; out of control blood pressures
  1. ;
  1. ; Used for setting data for the statistical summary report
  1. COUNT ;
  1. S APCLPTOT=APCLPTOT+1
  1. S APCLX=$G(^XTMP("APCLBP",APCLJOB,APCLBTH,"STATS",APCLSORT))
  1. S APCLCPT=$P(APCLX,U)+1,APCLTOPT=$P(APCLX,U,2)+(APCLOCTL>0),APCLCBC=$P(APCLX,U,3)+APCLBPC
  1. S ^XTMP("APCLBP",APCLJOB,APCLBTH,"STATS",APCLSORT)=APCLCPT_U_APCLTOPT_U_APCLCBC
  1. Q
  1. ;
  1. COUNT1 ;
  1. S APCLX=$G(^XTMP("APCLBP",APCLJOB,APCLBTH,"STATS",APCLSORT,APCLBPTY))
  1. S APCLCTB=$P(APCLX,U,1)+APCLTBP,APCLTOP=$P(APCLX,U,2),APCLTOBC=$P(APCLX,U,3),APCLTOBP=$P(APCLX,U,4)
  1. I APCLOCTL,$S(APCLBPTY=1:APCLOCTL#10,1:APCLOCTL>1) S APCLTOP=APCLTOP+1,APCLTOBC=APCLTOBC+APCLBPC,APCLTOBP=APCLTOBP+APCLTBP
  1. S ^XTMP("APCLBP",APCLJOB,APCLBTH,"STATS",APCLSORT,APCLBPTY)=APCLCTB_U_APCLTOP_U_APCLTOBC_U_APCLTOBP
  1. Q
  1. ;
  1. ; Collects data for the detail report
  1. SET ;
  1. S APCLPTOT=APCLPTOT+1
  1. S APCLNAME=$P(^DPT(DFN,0),U)
  1. S APCLHRN=$S($D(^AUPNPAT(DFN,41,DUZ(2),0)):$P(^(0),U,2),1:"NONE")
  1. ; If sort is neither Patient or Age then the report type must be
  1. ; Summary, not Detail, therefore community will be used for the sort
  1. S APCLSRT=$S(APCLSORT="P":APCLNAME,APCLSORT="A":APCLAGE,1:APCLCMTY)
  1. S:APCLVCLN'="" APCLVCLN=$P(^DIC(40.7,APCLVCLN,0),U,1)
  1. S ^XTMP("APCLBP",APCLJOB,APCLBTH,"PATS",APCLSRT,DFN)=APCLNAME_U_APCLHRN_U_APCLAGE_U_AUPNSEX_U_APCLCMTY_U_APCLVCLN_U_APCLBPC_U_$J(APCLMSBP,3)_"/"_APCLMDBP
  1. Q
  1. ;
  1. KILL ;
  1. K APCLAGE,APCLBPC,APCLBPTY,APCLBTYP,APCLCBC,APCLCLAS,APCLCMTY,APCLCPT,APCLCTB,APCLDT,APCLGRAN,APCLHRN,APCLMBP,APCLMDBP,APCLMIEN,APCLMSBP,APCLNAME,APCLOCTL,APCLSORT,APCLSRT,APCLTBP
  1. K APCLTDBP,APCLTOBC,APCLTOBP,APCLTOP,APCLTOPT,APCLTPOC,APCLTSBP,APCLVCLN,APCLX,DFN,X1,X2,Y
  1. D KILL^AUPNPAT
  1. Q