PSURT2 ; BIR/RDC - DYNAMIC REPORT OF PATIENT DEMOGRAPHIC DATA; 12 APR 2004
 ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
 ;
 ; THIS PROGRAM IS CALLED TO EXTRACT DATES FROM ^PSUDEM AND 
 ; CALLS ^PSUDEM1 TO EXTRACT PMB PATIENT DEMOGRAPHIC DATA
 ;
EN ;
 D INITZ
 D LODXTMP
 D MAILIT
 K ^XTMP("PSU"_PSUJOB,"REXMT")
 Q
 ;
INITZ ;
 S START=PSUSTART,LAST=PSULAST
 I $D(PSURMON) S PSURMON=$E(PSURMON,1,5)
 I '$D(PSURMON) S PSURMON=PSUSRNG_" through "_PSUERNG
 S PSUJOB=$J_"_"_$P($H,",",2)
 S PSUMASF=$G(PSUMASF)
 S PSUDUZ=$G(PSUDUZ)
 S PSUPBMG=$G(PSUPBMG)
 N PSURXMT
 S PSURXMT=1
 ;
 S X=$$VALI^PSUTL(4.3,1,217)
 S PSUSNDR=+$$VAL^PSUTL(4,X,99)
 S X=PSUSNDR,DIC=40.8,DIC(0)="X",D="C" D IX^DIC  ; ** set facility
 S X=+Y S PSUVDIV=$$VAL^PSUTL(40.8,X,.01)        ; ** set division
 ;
 Q
 ;
LODXTMP ;
 ;
 S START=START-1
 F  S START=$O(^PSUDEM("B",START)) Q:START>LAST!(START="")  D
 . S I=""
 . S I=$O(^PSUDEM("B",START,I))
 . S DFN=$P(^PSUDEM(I,0),U,2)
 . S ^XTMP("PSU"_PSUJOB,"REXMT",DFN)=""
 ;
 ; ** ^XTMP SHOULD NOW HOLD ONE NODE PER PATIENT FOR THIS TIME FRAME **
 Q
 ;
MAILIT ;
 S ^XTMP("PSU_"_PSUJOB,"REXMIT")="YES"
 S XMCHAN=1
 S XMDUZ=DUZ
 I $G(PSUMSTR) S PSUXMYH("G.PSU PBM@CMOP-NAT.DOMAIN.EXT")=""
 I $G(PSUMME) S PSUXMYH(DUZ)="",PSUXMYH("G.PSU PBM")=""
 M XMY=PSUXMYH
 ; MAILGROUPS ARE SET INTO XMY
 S DFN=""
 F  S (DFN,PSUDMDFN)=$O(^XTMP("PSU"_PSUJOB,"REXMT",DFN)) Q:PSUDMDFN=""  D
 . D DAT^PSUDEM1
 . D DEM1^PSUDEM1
 D XMD^PSUDEM1
 D CONFIRM
 ;
 Q
CONFIRM ;
 I $G(PSUMSTR) S PSUXMYH("G.PSU PBM@CMOP-NAT.DOMAIN.EXT")=""
 I $G(PSUMME) S PSUXMYH(DUZ)="",PSUXMYH("G.PSU PBM")=""
 M XMY=PSUXMYH
 F I=1:1:79 S $E(ZZ,I)="-"
 S PSUPKG="Patient Demographics"
 S PSUCONF(1)="The chart below shows the package(s) whose dispensing statistics were extracted"
 S PSUCONF(2)="by the PBM Pharmacy Statistics Retransmission option."
 S PSUCONF(3)=" "
 S PSUCONF(4)="PACKAGE"_$J("# Line items",35)_$J("# MailMan msgs",19)
 S PSUCONF(5)=ZZ
 K ^XTMP(PSUSUB,"XMD")
 M ^XTMP(PSUSUB,"XMD")=PSUCONF
 S ^XTMP(PSUSUB,"XMD",6)=PSUPKG_$J(PSUMLC,37-$L(PSUPKG))_$J(PSUM,12)
 S XMSUB="V. 4.0 PBMRXMT "_PSURMON_" "_PSUSIT_" "_PSUDIVNM
 S XMDUZ=DUZ
 S XMCHAN=1
 S XMTEXT="^XTMP(PSUSUB,""XMD"","
 D ^XMD
 ;
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSURT2   2263     printed  Sep 23, 2025@20:04:05                                                                                                                                                                                                      Page 2
PSURT2    ; BIR/RDC - DYNAMIC REPORT OF PATIENT DEMOGRAPHIC DATA; 12 APR 2004
 +1       ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
 +2       ;
 +3       ; THIS PROGRAM IS CALLED TO EXTRACT DATES FROM ^PSUDEM AND 
 +4       ; CALLS ^PSUDEM1 TO EXTRACT PMB PATIENT DEMOGRAPHIC DATA
 +5       ;
EN        ;
 +1        DO INITZ
 +2        DO LODXTMP
 +3        DO MAILIT
 +4        KILL ^XTMP("PSU"_PSUJOB,"REXMT")
 +5        QUIT 
 +6       ;
INITZ     ;
 +1        SET START=PSUSTART
           SET LAST=PSULAST
 +2        IF $DATA(PSURMON)
               SET PSURMON=$EXTRACT(PSURMON,1,5)
 +3        IF '$DATA(PSURMON)
               SET PSURMON=PSUSRNG_" through "_PSUERNG
 +4        SET PSUJOB=$JOB_"_"_$PIECE($HOROLOG,",",2)
 +5        SET PSUMASF=$GET(PSUMASF)
 +6        SET PSUDUZ=$GET(PSUDUZ)
 +7        SET PSUPBMG=$GET(PSUPBMG)
 +8        NEW PSURXMT
 +9        SET PSURXMT=1
 +10      ;
 +11       SET X=$$VALI^PSUTL(4.3,1,217)
 +12       SET PSUSNDR=+$$VAL^PSUTL(4,X,99)
 +13      ; ** set facility
           SET X=PSUSNDR
           SET DIC=40.8
           SET DIC(0)="X"
           SET D="C"
           DO IX^DIC
 +14      ; ** set division
           SET X=+Y
           SET PSUVDIV=$$VAL^PSUTL(40.8,X,.01)
 +15      ;
 +16       QUIT 
 +17      ;
LODXTMP   ;
 +1       ;
 +2        SET START=START-1
 +3        FOR 
               SET START=$ORDER(^PSUDEM("B",START))
               if START>LAST!(START="")
                   QUIT 
               Begin DoDot:1
 +4                SET I=""
 +5                SET I=$ORDER(^PSUDEM("B",START,I))
 +6                SET DFN=$PIECE(^PSUDEM(I,0),U,2)
 +7                SET ^XTMP("PSU"_PSUJOB,"REXMT",DFN)=""
               End DoDot:1
 +8       ;
 +9       ; ** ^XTMP SHOULD NOW HOLD ONE NODE PER PATIENT FOR THIS TIME FRAME **
 +10       QUIT 
 +11      ;
MAILIT    ;
 +1        SET ^XTMP("PSU_"_PSUJOB,"REXMIT")="YES"
 +2        SET XMCHAN=1
 +3        SET XMDUZ=DUZ
 +4        IF $GET(PSUMSTR)
               SET PSUXMYH("G.PSU PBM@CMOP-NAT.DOMAIN.EXT")=""
 +5        IF $GET(PSUMME)
               SET PSUXMYH(DUZ)=""
               SET PSUXMYH("G.PSU PBM")=""
 +6        MERGE XMY=PSUXMYH
 +7       ; MAILGROUPS ARE SET INTO XMY
 +8        SET DFN=""
 +9        FOR 
               SET (DFN,PSUDMDFN)=$ORDER(^XTMP("PSU"_PSUJOB,"REXMT",DFN))
               if PSUDMDFN=""
                   QUIT 
               Begin DoDot:1
 +10               DO DAT^PSUDEM1
 +11               DO DEM1^PSUDEM1
               End DoDot:1
 +12       DO XMD^PSUDEM1
 +13       DO CONFIRM
 +14      ;
 +15       QUIT 
CONFIRM   ;
 +1        IF $GET(PSUMSTR)
               SET PSUXMYH("G.PSU PBM@CMOP-NAT.DOMAIN.EXT")=""
 +2        IF $GET(PSUMME)
               SET PSUXMYH(DUZ)=""
               SET PSUXMYH("G.PSU PBM")=""
 +3        MERGE XMY=PSUXMYH
 +4        FOR I=1:1:79
               SET $EXTRACT(ZZ,I)="-"
 +5        SET PSUPKG="Patient Demographics"
 +6        SET PSUCONF(1)="The chart below shows the package(s) whose dispensing statistics were extracted"
 +7        SET PSUCONF(2)="by the PBM Pharmacy Statistics Retransmission option."
 +8        SET PSUCONF(3)=" "
 +9        SET PSUCONF(4)="PACKAGE"_$JUSTIFY("# Line items",35)_$JUSTIFY("# MailMan msgs",19)
 +10       SET PSUCONF(5)=ZZ
 +11       KILL ^XTMP(PSUSUB,"XMD")
 +12       MERGE ^XTMP(PSUSUB,"XMD")=PSUCONF
 +13       SET ^XTMP(PSUSUB,"XMD",6)=PSUPKG_$JUSTIFY(PSUMLC,37-$LENGTH(PSUPKG))_$JUSTIFY(PSUM,12)
 +14       SET XMSUB="V. 4.0 PBMRXMT "_PSURMON_" "_PSUSIT_" "_PSUDIVNM
 +15       SET XMDUZ=DUZ
 +16       SET XMCHAN=1
 +17       SET XMTEXT="^XTMP(PSUSUB,""XMD"","
 +18       DO ^XMD
 +19      ;
 +20       QUIT