| [613] | 1 | PPPPRT2 ;ALB/DMB/DAD - CLINIC MEDICATION PROFILE PRINT ROUTINE ; 3/12/92 | 
|---|
|  | 2 | ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**17**;APR 7,1995 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | START ; | 
|---|
|  | 6 | N PPPARRY,PPPDOB,PPPNAME,PPPSSN,PPPTMP,BNR1,BNR2,BNR3,RSLTPTR,UNSPTR | 
|---|
|  | 7 | N CLNPTEND,CLNPTST,CSCNEND,CSCNSTRT,DFNARRY,DIR,FFXIFN,I,IDX | 
|---|
|  | 8 | N LKUPERR,NAMEARRY,ND,NODE,NODELEN,NOPRTFLG,OUT,PAGE,PAP,PATDFN | 
|---|
|  | 9 | N PATDOB,PATNAME,PATNODE,PATSSN,PCP,PCPD,PDXNODE,PDXPTR,PDXSTAT | 
|---|
|  | 10 | N PHRMARRY,POVNAME,POVNODE,PRMNODE0,SCANDT,TMP,TPATS,X,X1,X2,Y | 
|---|
|  | 11 | N ZTQUEUED,ZTREQ | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | S PPPMRT="START_PPPPRT2" | 
|---|
|  | 14 | S LKUPERR=-9003 | 
|---|
|  | 15 | S CSCNSTRT=1006 | 
|---|
|  | 16 | S CSCNEND=1007 | 
|---|
|  | 17 | S CLNPTST=1014 | 
|---|
|  | 18 | S CLNPTEND=1015 | 
|---|
|  | 19 | S NOPRTFLG=1016 | 
|---|
|  | 20 | S PHRMARRY="^TMP(""PPP"","_$J_",""PHRM"")" | 
|---|
|  | 21 | S DFNARRY="^TMP(""PPP"","_$J_",""DFN"")" | 
|---|
|  | 22 | S NAMEARRY="^TMP(""PPP"","_$J_",""NAME"")" | 
|---|
|  | 23 | S BNR1="PPP - Medication Profiles from other VAMC(s)" | 
|---|
|  | 24 | S BNR2="Patient Medication Profiles For Clinics On " | 
|---|
|  | 25 | S BNR3="Date Printed: "_$$DTE^PPPUTL1(DT,0) | 
|---|
|  | 26 | S PAGE=0 | 
|---|
|  | 27 | S OUT="" | 
|---|
|  | 28 | S RSLTPTR=$$GETSTPTR^PPPGET7("VAQ-RSLT") | 
|---|
|  | 29 | S UNSPTR=$$GETSTPTR^PPPGET7("VAQ-UNSOL") | 
|---|
|  | 30 | S TMP=$$LOGEVNT^PPPMSC1(CLNPTST,PPPMRT) | 
|---|
|  | 31 | S PRMNODE0=$G(^PPP(1020.1,1,0)) | 
|---|
|  | 32 | I PRMNODE0="" D  Q | 
|---|
|  | 33 | .S TMP=$$LOGEVNT^PPPMSC1(LKUPERR,PPPMRT,"Parameter File Not Found") | 
|---|
|  | 34 | S PCP=$P(PRMNODE0,"^",7) | 
|---|
|  | 35 | S PAP=$P(PRMNODE0,"^",8) | 
|---|
|  | 36 | S PCPD=$P(PRMNODE0,"^",10) | 
|---|
|  | 37 | I 'PCP D  Q | 
|---|
|  | 38 | .S TMP=$$LOGEVNT^PPPMSC1(NOPRTFLG,PPPMRT) | 
|---|
|  | 39 | ; Determine clinic scan date. | 
|---|
|  | 40 | I +PCPD>0 D | 
|---|
|  | 41 | .S X1=DT | 
|---|
|  | 42 | .S X2=+PCPD | 
|---|
|  | 43 | .D C^%DTC | 
|---|
|  | 44 | .S SCANDT=X | 
|---|
|  | 45 | E  D | 
|---|
|  | 46 | .S SCANDT=DT | 
|---|
|  | 47 | S BNR2=BNR2_$$I2EDT^PPPCNV1(SCANDT) | 
|---|
|  | 48 | ; Scan the clinics for patients scheduled on SCANDT | 
|---|
|  | 49 | S TMP=$$LOGEVNT^PPPMSC1(CSCNSTRT,PPPMRT) | 
|---|
|  | 50 | S TPATS=$$CLINSCAN^PPPSCN2(SCANDT,DFNARRY) | 
|---|
|  | 51 | S TMP=$$LOGEVNT^PPPMSC1(CSCNEND,PPPMRT,"TOTAL PATIENTS = "_TPATS) | 
|---|
|  | 52 | ; Now sort the clinic list by name | 
|---|
|  | 53 | S TMP=$$NAMESRT^PPPPRT4(DFNARRY,NAMEARRY) | 
|---|
|  | 54 | K @DFNARRY | 
|---|
|  | 55 | ; Now order through the NAME's and get the data to print. | 
|---|
|  | 56 | K @PHRMARRY | 
|---|
|  | 57 | S PATNAME="" | 
|---|
|  | 58 | F IDX=0:0 D  Q:(PATNAME="")!(OUT["^") | 
|---|
|  | 59 | .S PATNAME=$O(@NAMEARRY@(PATNAME)) Q:PATNAME="" | 
|---|
|  | 60 | .F PATDFN=0:0 D  Q:PATDFN="" | 
|---|
|  | 61 | ..S PATDFN=$O(@NAMEARRY@(PATNAME,PATDFN)) Q:PATDFN="" | 
|---|
|  | 62 | ..S PATNODE=$G(@NAMEARRY@(PATNAME,PATDFN)) | 
|---|
|  | 63 | ..S PATDOB=$P(PATNODE,"^",1) | 
|---|
|  | 64 | ..S PATSSN=$P(PATNODE,"^",2) | 
|---|
|  | 65 | ..F FFXIFN=0:0 D  Q:FFXIFN="" | 
|---|
|  | 66 | ...S FFXIFN=$O(^PPP(1020.2,"B",PATDFN,FFXIFN)) Q:FFXIFN="" | 
|---|
|  | 67 | ...S PDXNODE=$G(^PPP(1020.2,FFXIFN,1)) Q:PDXNODE="" | 
|---|
|  | 68 | ...S POVNODE=$G(^PPP(1020.2,FFXIFN,0)) Q:POVNODE="" | 
|---|
|  | 69 | ...S PDXPTR=$P(PDXNODE,"^",1) | 
|---|
|  | 70 | ...S PDXSTAT=$P(PDXNODE,"^",3) | 
|---|
|  | 71 | ...S POVNUM=$P(POVNODE,"^",2) | 
|---|
|  | 72 | ...I $D(^DIC(4,"D",POVNUM)) S POVIEN=$O(^DIC(4,"D",POVNUM,0)),POVNAME=$P($G(^DIC(4,POVIEN,0)),"^") K POVIEN | 
|---|
|  | 73 | ...I '$D(POVNAME),$D(^PPP(1020.8,"B",POVNUM)) S POVIEN=$O(^PPP(1020.8,"B",POVNUM,0)),POVNAME=$P($P($G(^PPP(1020.8,POVIEN,0))<"^",2),".",1) K POVIEN | 
|---|
|  | 74 | ...I '$D(POVNAME) S POVNAME=POVNUM_" (Unknown)" | 
|---|
|  | 75 | ...I (PDXPTR) I ((PDXSTAT=RSLTPTR)!(PDXSTAT=UNSPTR)) I $$PDXDAT^PPPDSP2(PDXPTR) D | 
|---|
|  | 76 | ....S PPPTMP(POVNAME,0)="1^"_PDXPTR_"^"_POVNUM | 
|---|
|  | 77 | ..I PAP,($D(PPPTMP)) D | 
|---|
|  | 78 | ...S TMP=$$GLPHRM^PPPGET8(PATDFN,PHRMARRY) | 
|---|
|  | 79 | ..I $D(PPPTMP) D | 
|---|
|  | 80 | ...S TMP=$$GETPDX^PPPGET2("PPPTMP",PHRMARRY) | 
|---|
|  | 81 | ..; If there is anything to print... print it. | 
|---|
|  | 82 | ..I $D(@PHRMARRY) D | 
|---|
|  | 83 | ...S PPPNAME=PATNAME | 
|---|
|  | 84 | ...S PPPDOB=PATDOB | 
|---|
|  | 85 | ...S PPPSSN=PATSSN | 
|---|
|  | 86 | ...S PAGE=PAGE+1 D HEADING1 Q:OUT["^"  D NARRATIV | 
|---|
|  | 87 | ...K @PHRMARRY,PPPTMP | 
|---|
|  | 88 | I $E(IOST,1,2)="C-"&(OUT'["^") D | 
|---|
|  | 89 | .W !!,"Listing Complete." | 
|---|
|  | 90 | ; Log end of print utility | 
|---|
|  | 91 | S TMP=$$LOGEVNT^PPPMSC1(CLNPTEND,PPPMRT) | 
|---|
|  | 92 | K @PHRMARRY,@NAMEARRY | 
|---|
|  | 93 | Q | 
|---|
|  | 94 | ; | 
|---|
|  | 95 | HEADING1 ; Write the page heading, Pause if a crt. | 
|---|
|  | 96 | ; | 
|---|
|  | 97 | I PAGE>1,$E(IOST,1,2)="C-" D  Q:OUT["^" | 
|---|
|  | 98 | .S DIR(0)="E" D ^DIR | 
|---|
|  | 99 | .I +Y=0 S OUT="^" | 
|---|
|  | 100 | W @IOF,! | 
|---|
|  | 101 | W ?((IOM-$L(BNR1))\2),BNR1,?(IOM-15),"Page ",PAGE,! | 
|---|
|  | 102 | W ?((IOM-$L(BNR3))\2),BNR3,!! | 
|---|
|  | 103 | W !,"Patient: ",PPPNAME_" ("_PPPSSN_")",?60,"DOB: ",PPPDOB | 
|---|
|  | 104 | W ! F I=1:1:IOM W "=" | 
|---|
|  | 105 | Q | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | HEADING2 ; Write the page heading, Pause if a crt. | 
|---|
|  | 108 | ; | 
|---|
|  | 109 | I PAGE>1,($E(IOST,1,2)="C-"),($D(NARRATIV)) D  Q:OUT["^" | 
|---|
|  | 110 | .S DIR(0)="E" D ^DIR | 
|---|
|  | 111 | .I +Y=0 S OUT="^" | 
|---|
|  | 112 | W !,"RX #",?9,"DRUG",?41,"ST",?45,"QTY",?51,"ISSUED",?65,"LAST FILLED" | 
|---|
|  | 113 | W ! F I=1:1:IOM W "=" | 
|---|
|  | 114 | Q | 
|---|
|  | 115 | ; | 
|---|
|  | 116 | NARRATIV ; Print the narratives | 
|---|
|  | 117 | ; | 
|---|
|  | 118 | S NARRATIV=1 | 
|---|
|  | 119 | S STANAME="" | 
|---|
|  | 120 | I $D(@PHRMARRY@(0)) D | 
|---|
|  | 121 | .F  S STANAME=$O(@PHRMARRY@(0,STANAME)) Q:STANAME=""!(OUT["^")  D | 
|---|
|  | 122 | ..I $Y+5>IOSL S PAGE=PAGE+1 D HEADING1 Q:OUT["^" | 
|---|
|  | 123 | ..W !!,"NARRATIVE FROM ",STANAME | 
|---|
|  | 124 | ..W !,"  => ",@PHRMARRY@(0,STANAME) | 
|---|
|  | 125 | .W ! | 
|---|
|  | 126 | K NARRATIV | 
|---|
|  | 127 | ; | 
|---|
|  | 128 | DRUGS I $Y+8<IOSL D HEADING2 | 
|---|
|  | 129 | S RVRSDT=0 | 
|---|
|  | 130 | F  S RVRSDT=$O(@PHRMARRY@(RVRSDT)) Q:RVRSDT'>0!(OUT["^")  D | 
|---|
|  | 131 | .S STAPTR="" | 
|---|
|  | 132 | .F  S STAPTR=$O(@PHRMARRY@(RVRSDT,STAPTR)) Q:STAPTR=""!(OUT["^")  D | 
|---|
|  | 133 | ..S RXIDX=-1 | 
|---|
|  | 134 | ..F  S RXIDX=$O(@PHRMARRY@(RVRSDT,STAPTR,RXIDX)) Q:RXIDX=""!(RXIDX="PID")!(OUT["^")  D | 
|---|
|  | 135 | ...I $Y+6>IOSL S PAGE=PAGE+1 D HEADING1 Q:OUT["^"  D HEADING2 | 
|---|
|  | 136 | ...S ND=$G(@PHRMARRY@(RVRSDT,STAPTR,RXIDX)) Q:ND="" | 
|---|
|  | 137 | ...W !!,$P(ND,"^"),?9,$E($P(ND,"^",2),1,30),?41,$E($P(ND,"^",3),1),?45,$P(ND,"^",4),?51,$$SLASHDT^PPPCNV1($P(ND,"^",5)),?65,$$SLASHDT^PPPCNV1($P(ND,"^",6)) | 
|---|
|  | 138 | ...W !,?9,"SIG: ",$E($P(ND,"^",7),1,25),?40,"ISSUED AT ",$P(ND,"^",8)," (",$P(ND,"^",9),")" | 
|---|
|  | 139 | ...W !,?9,"PROVIDER: ",$P(ND,"^",10) | 
|---|
|  | 140 | K @PHRMARRY | 
|---|
|  | 141 | Q | 
|---|