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

PSUSUM5.m

Go to the documentation of this file.
  1. PSUSUM5 ;BIR/DAM - Patient Demographics Summary for IV/UD ; 20 DEC 2001
  1. ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
  1. ;
  1. EN ;EN CALLED FROM PSUUD0
  1. ;
  1. I $D(^XTMP("PSU_"_PSUJOB,"PSUFLAG2"))!$D(^XTMP("PSU_"_PSUJOB,"PSUFLAG3")) K ^XTMP("PSU_"_PSUJOB,"PSUSUMA")
  1. I $D(^XTMP("PSU_"_PSUJOB,"PSUNONE","IV"))&$D(^XTMP("PSU_"_PSUJOB,"PSUNONE","UD")) D Q ;Summary report if there is no data
  1. .D NODATA
  1. .I $D(^XTMP("PSU_"_PSUJOB,"PSUFLAG1"))!$D(^XTMP("PSU_"_PSUJOB,"PSUFLAG2")) K ^XTMP("PSU_"_PSUJOB,"PSUNONE")
  1. ;
  1. D DATE
  1. S I=7 ;Line Counter
  1. D UNIQUE
  1. D DIV
  1. D TOTAL
  1. D TAB1^PSUSUM4
  1. D PDSUM^PSUDEM5 ;Mail message
  1. K ^XTMP("PSU_"_PSUJOB,"PSUIVOUT")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUUDIN")
  1. I $D(^XTMP("PSU_"_PSUJOB,"PSUFLAG2")) K ^XTMP("PSU_"_PSUJOB,"PSUSUMA")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUFIN")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUIVSSN")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUIVDIV")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUNEW")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUTOTAL")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUFLAG2")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUFLAG3")
  1. K ^XTMP("PSU_"_PSUJOB,"PSUUDDIV")
  1. ;
  1. K ^XTMP("PSU_"_PSUJOB,"PSURXCTA")
  1. Q
  1. ;
  1. DATE ;Convert date range of extract to external format
  1. ;
  1. D PULL^PSUCP
  1. S %H=$E($H,1,5) ;today's date
  1. D YX^%DTC
  1. N PSUD S PSUD=Y
  1. ;
  1. S Y=PSUSDT
  1. D DD^%DT
  1. N PSUS S PSUS=Y
  1. ;
  1. S Y=PSUEDT
  1. D DD^%DT
  1. N PSUE S PSUE=Y
  1. ;
  1. D IVUDSUM
  1. Q
  1. ;
  1. IVUDSUM ;Summary report header
  1. ;
  1. S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",1)="PHARMACY INPATIENT (UD & IV) UNIQUE PATIENTS REPORT "_PSUD
  1. S $P(^XTMP("PSU_"_PSUJOB,"PSUSUMA",2),"-",80)="" ;Separator bar
  1. S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",3)=" "_PSUS_" through "_PSUE
  1. S $P(^XTMP("PSU_"_PSUJOB,"PSUSUMA",4),"=",80)=""
  1. S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",5)=" UNIQUE"
  1. S $P(^XTMP("PSU_"_PSUJOB,"PSUSUMA",6),"-",70)=""
  1. Q
  1. ;
  1. UNIQUE ;Find Total unique patient number across all divisions
  1. ;
  1. N PSUSIT
  1. S PSUSIT=PSUSNDR
  1. ;
  1. N PSUIPSUM,PSUOPSUM
  1. I '$D(^XTMP("PSU_"_PSUJOB,"PSUIVIN")) S $P(^XTMP("PSU_"_PSUJOB,"PSUIVIN"),U,1)=0
  1. I '$D(^XTMP("PSU_"_PSUJOB,"PSUUDIN")) S $P(^XTMP("PSU_"_PSUJOB,"PSUUDIN"),U,1)=0
  1. I '$D(^XTMP("PSU_"_PSUJOB,"PSUIVOUT")) S $P(^XTMP("PSU_"_PSUJOB,"PSUIVOUT"),U,1)=0
  1. ;
  1. ;Create IP unique global. Screen out duplicates
  1. M ^XTMP("PSU_"_PSUJOB,"PSUIPSUM")=^XTMP("PSU_"_PSUJOB,"PSUUDIN")
  1. M ^XTMP("PSU_"_PSUJOB,"PSUIPSUM")=^XTMP("PSU_"_PSUJOB,"PSUIN")
  1. ;
  1. S N=1
  1. S PSUSUM=0
  1. F S PSUSUM=$O(^XTMP("PSU_"_PSUJOB,"PSUIPSUM",PSUSUM)) Q:PSUSUM="" D
  1. .S PSUIPSUM=N S N=N+1
  1. ;
  1. S PSUOPSUM=$P($G(^XTMP("PSU_"_PSUJOB,"PSUIVOUT")),U,1)
  1. D TAB
  1. Q
  1. ;
  1. TAB ;Calculate tab spacing
  1. ;
  1. N PSUTB2,PSUTB3,PSUTB4,PSUTB5
  1. ;
  1. S PSUTB1=" "
  1. S PSUTB2="Total Inpatients across all divisions:"
  1. S PSUTB3=(64-$L(PSUIPSUM))-$L(PSUTB2)
  1. F S2=1:1:(PSUTB3-1) S PSUTB(S2)=" " D
  1. .S PSUTB1=PSUTB1_PSUTB(S2)
  1. ;
  1. S PSUTB6=" "
  1. S PSUTB4="Total Outpatients across all divisions:"
  1. S PSUTB5=(64-$L(PSUOPSUM))-$L(PSUTB4)
  1. F S3=1:1:(PSUTB5-1) S PSUTB(S3)=" " D
  1. .S PSUTB6=PSUTB6_PSUTB(S3)
  1. D TOT
  1. Q
  1. ;
  1. TOT ;Set total number of unique in-patients and out-patients into
  1. ;summary message
  1. ;
  1. S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",I)=PSUTB2_PSUTB1_(PSUIPSUM) S I=I+1
  1. S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",I)=PSUTB4_PSUTB6_(PSUOPSUM) S I=I+1
  1. S $P(^XTMP("PSU_"_PSUJOB,"PSUSUMA",I),"-",70)="" S I=I+1
  1. Q
  1. ;
  1. DIV ;Set all divisions from both IV and UD extracts into one global
  1. ;
  1. M ^XTMP("PSU_"_PSUJOB,"PSUFIN")=^XTMP("PSU_"_PSUJOB,"PSUDIV1") ;IP division name/SSN
  1. M ^XTMP("PSU_"_PSUJOB,"PSUFIN")=^XTMP("PSU_"_PSUJOB,"PSUDIVUD") ;UD division name/SSN
  1. Q
  1. S E=1 ;Counter for new global
  1. S PSUZ=0
  1. F S PSUZ=$O(^XTMP("PSU_"_PSUJOB,"PSUIVINDIV",PSUZ)) Q:PSUZ="" D
  1. .S ^XTMP("PSU_"_PSUJOB,"PSUNEW",PSUZ,E)=$P($G(^XTMP("PSU_"_PSUJOB,"PSUIVINDIV",PSUZ)),U,1) ;IV
  1. .S E=E+1
  1. ;
  1. S PSUZ1=0
  1. F S PSUZ1=$O(^XTMP("PSU_"_PSUJOB,"PSUUDDIV",PSUZ1)) Q:PSUZ1="" D
  1. .S ^XTMP("PSU_"_PSUJOB,"PSUNEW",PSUZ1,E)=$P($G(^XTMP("PSU_"_PSUJOB,"PSUUDDIV",PSUZ1)),U,1)
  1. .S E=E+1
  1. Q
  1. ;
  1. ;
  1. TOTAL ;Calculate sum of all divisions and set individual division lines
  1. ;into summary message
  1. ;
  1. S T=1
  1. S PSUDNAM=0
  1. F S PSUDNAM=$O(^XTMP("PSU_"_PSUJOB,"PSUFIN",PSUDNAM)) Q:PSUDNAM="" D
  1. .S PSUNUM1=0
  1. .F S PSUNUM1=$O(^XTMP("PSU_"_PSUJOB,"PSUFIN",PSUDNAM,PSUNUM1)) Q:PSUNUM1="" D
  1. ..S ^XTMP("PSU_"_PSUJOB,"PSUTOTAL")=T S T=T+1 ;Set total count
  1. ..I $D(^XTMP("PSU_"_PSUJOB,"PSUTOT",PSUDNAM)) D
  1. ...S C=C+1
  1. ...S ^XTMP("PSU_"_PSUJOB,"PSUTOT",PSUDNAM)=C
  1. ..I '$D(^XTMP("PSU_"_PSUJOB,"PSUTOT",PSUDNAM)) D
  1. ...S C=1
  1. ...S ^XTMP("PSU_"_PSUJOB,"PSUTOT",PSUDNAM)=C
  1. ;
  1. S PSUDNAM1=0
  1. N PSUSNUM
  1. F S PSUDNAM1=$O(^XTMP("PSU_"_PSUJOB,"PSUTOT",PSUDNAM1)) Q:PSUDNAM1="" D
  1. .S PSUNUM=$P($G(^XTMP("PSU_"_PSUJOB,"PSUTOT",PSUDNAM1)),U,1)
  1. .D TAB1
  1. .S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",I)=" "_PSUDNAM1_" Division:"_PSUTB6_PSUNUM
  1. .S I=I+1
  1. ;
  1. Q
  1. ;
  1. TAB1 ;Calculate tab spacing
  1. ;
  1. S PSUTB6=" "
  1. S PSUTB7=(59-$L(PSUNUM))-$L(PSUDNAM1)-10
  1. F S2=1:1:(PSUTB7-1) S PSUTB(S2)=" " D
  1. .S PSUTB6=PSUTB6_PSUTB(S2) ;Tab position
  1. Q
  1. ;
  1. NODATA ;Summary report line to be sent if there is no data
  1. ;
  1. S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",1)="PHARMACY INPATIENT (UD & IV) UNIQUE PATIENTS REPORT"
  1. S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",2)=" "
  1. S ^XTMP("PSU_"_PSUJOB,"PSUSUMA",3)="No data to report"
  1. D PDSUM^PSUDEM5
  1. Q