| [613] | 1 | PSOADDR ;BIR/RTR-Print address changes from Audit file ;10/17/01
 | 
|---|
 | 2 |  ;;7.0;OUTPATIENT PHARMACY;**127,233**;DEC 1997;Build 8
 | 
|---|
 | 3 |  ;External reference to ^DIA supported by DBIA 2602
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 | EN ;
 | 
|---|
 | 6 |  N PSOFORM,PSOAPAT,PSOSDT,PSOEDT,PSOSDTX,PSOEDTX,X,Y,X1,X2
 | 
|---|
 | 7 |  W !!,"This option provides a report that displays changes made to permanent and"
 | 
|---|
 | 8 |  W !,"temporary mailing address information in the PATIENT file (#2). Also changes"
 | 
|---|
 | 9 |  W !,"to the MAIL field (#.03) and the MAIL STATUS EXPIRATION DATE field (#.05)"
 | 
|---|
 | 10 |  W !,"in the PHARMACY PATIENT file (#55) will be displayed."
 | 
|---|
 | 11 |  W !,"Changes can only be displayed if the edits were made using VA FileMan, and the"
 | 
|---|
 | 12 |  W !,"Audit function was turned on for the field(s) at the time of the edit.",!!
 | 
|---|
 | 13 |  K DIR S DIR(0)="SB^S:Single;A:All",DIR("A")="Print report for a Single patient, or All patients",DIR("B")="Single",DIR("?")=" ",DIR("?",1)="Enter 'S' to print address changes for one patient over the selected"
 | 
|---|
 | 14 |  S DIR("?",2)="date range, enter 'A' to print address changes for all patients",DIR("?",3)="over the selected date range."
 | 
|---|
 | 15 |  D ^DIR K DIR I Y["^"!($D(DTOUT))!($D(DUOUT)) D MESS Q
 | 
|---|
 | 16 |  S PSOFORM=$S(Y="S":1,1:0)
 | 
|---|
 | 17 |  I 'PSOFORM G DATE
 | 
|---|
 | 18 |  K DIC W ! S DIC="^DPT(",DIC(0)="QEAM",DIC("A")="Select PATIENT: " D ^DIC K DIC I Y<1!($D(DUOUT))!($D(DTOUT)) D MESS Q
 | 
|---|
 | 19 |  S PSOAPAT=+Y
 | 
|---|
 | 20 | DATE ;
 | 
|---|
 | 21 |  W !!
 | 
|---|
 | 22 |  I PSOFORM W !,"This report will be sorted by Date/time of edit."
 | 
|---|
 | 23 |  I 'PSOFORM W !,"This report will be sorted by Patient Name, and within Patient Name will be",!,"sorted by Date/time of edit."
 | 
|---|
 | 24 |  W !,"A beginning and ending date must now be entered for the search."
 | 
|---|
 | 25 |  K DIR W ! S DIR(0)="DAO^:DT:APEX",DIR("A")="Beginning Date: ",DIR("?")=" ",DIR("?",1)="Enter the date to begin searching for changes to address fields.",DIR("?",2)="A future date cannot be entered." D ^DIR K DIR
 | 
|---|
 | 26 |  I 'Y!($D(DTOUT))!($D(DUOUT)) D MESS Q
 | 
|---|
 | 27 |  S PSOSDT=Y D DD^%DT S PSOSDTX=Y
 | 
|---|
 | 28 |  S X1=PSOSDT,X2=-1 D C^%DTC S PSOSDT=X_".9999"
 | 
|---|
 | 29 |  W ! K DIR S DIR(0)="DAO^"_PSOSDT_"::APEX",DIR("A")="Ending Date: ",DIR("?")=" ",DIR("?",1)="Enter the ending date of the search for changes to address fields.",DIR("?",2)="This date cannot be before the beginning date." D ^DIR K DIR
 | 
|---|
 | 30 |  I 'Y!($D(DTOUT))!($D(DUOUT)) D MESS Q
 | 
|---|
 | 31 |  S PSOEDT=Y D DD^%DT S PSOEDTX=Y
 | 
|---|
 | 32 |  S X1=PSOEDT,X2=+1 D C^%DTC S PSOEDT=X
 | 
|---|
 | 33 |  K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP) D MESS Q
 | 
|---|
 | 34 |  I $D(IO("Q")) D  Q
 | 
|---|
 | 35 |  .S ZTRTN="REP^PSOADDR",ZTDESC="Pharmacy Address change report",ZTSAVE("PSOFORM")="",ZTSAVE("PSOAPAT")="",ZTSAVE("PSOSDT")="",ZTSAVE("PSOEDT")="",ZTSAVE("PSOEDTX")="",ZTSAVE("PSOSDTX")="" D ^%ZTLOAD K %ZIS W !!,"Report queued to print.",!
 | 
|---|
 | 36 | REP ;
 | 
|---|
 | 37 |  K ^TMP("PSOADD",$J)
 | 
|---|
 | 38 |  N PSODEV,PSOUT,PSOLINE,PSOPAGE,PSOADND,PSOADUSR,PSOADF,PSOADFF,PSOAOPT,PSOAOPTA,PSOAOPTZ,PSOAOPTB,PSOAOPTC,PSOADLP,PSOANODE,PSOADX,PSOADXX,PSOADATE,PSOC,PSOAALL,PSOADFN,PSOANAME,PSONI,PSONX,PSONB,PSOASN,VA,DFN,PSONSSN,PSOAFLAG
 | 
|---|
 | 39 |  U IO
 | 
|---|
 | 40 |  S (PSOUT,PSOAFLAG)=0,PSODEV=$S($E(IOST,1,2)'="C-":0,1:1),PSOPAGE=1
 | 
|---|
 | 41 |  S $P(PSOLINE,"-",78)=""
 | 
|---|
 | 42 |  I $G(PSOFORM) G ONE
 | 
|---|
 | 43 | ALL ;Print report for all patients
 | 
|---|
 | 44 |  N PSOFILE
 | 
|---|
 | 45 |  F PSOFILE=2,55 F PSOAALL=PSOSDT:0 S PSOAALL=$O(^DIA(PSOFILE,"C",PSOAALL)) Q:'PSOAALL!(PSOEDT'>PSOAALL)  S PSOADLP="" F  S PSOADLP=$O(^DIA(PSOFILE,"C",PSOAALL,PSOADLP)) Q:PSOADLP=""  D
 | 
|---|
 | 46 |  .S PSOADFN=$P($G(^DIA(PSOFILE,PSOADLP,0)),"^"),PSOC=$P($G(^(0)),"^",3) Q:'PSOADFN
 | 
|---|
 | 47 |  .S PSOANAME=$P($G(^DPT(PSOADFN,0)),"^") Q:PSOANAME=""
 | 
|---|
 | 48 |  .I PSOFILE=2 I PSOC=.111!(PSOC=.112)!(PSOC=.113)!(PSOC=.114)!(PSOC=.115)!(PSOC=.116)!(PSOC=.1211)!(PSOC=.1212)!(PSOC=.1213)!(PSOC=.1214)!(PSOC=.1215)!(PSOC=.1216)!(PSOC=.1112)!(PSOC=.12112)!(PSOC=.121)!(PSOC=.1217)!(PSOC=.1218)!(PSOC=.12105) D
 | 
|---|
 | 49 |  ..S ^TMP("PSOADD",$J,PSOANAME,PSOADFN,PSOAALL,PSOFILE,PSOADLP)=$G(^DIA(2,PSOADLP,0))
 | 
|---|
 | 50 |  .I PSOFILE=55 I PSOC=.03!(PSOC=.05) D
 | 
|---|
 | 51 |  ..S ^TMP("PSOADD",$J,PSOANAME,PSOADFN,PSOAALL,PSOFILE,PSOADLP)=$G(^DIA(55,PSOADLP,0))
 | 
|---|
 | 52 |  D HD
 | 
|---|
 | 53 |  I '$D(^TMP("PSOADD",$J)) W !!,"No data found to print for this date range.",! G END
 | 
|---|
 | 54 |  S PSONI="" F  S PSONI=$O(^TMP("PSOADD",$J,PSONI)) Q:PSONI=""!(PSOUT)  S PSONX="" F  S PSONX=$O(^TMP("PSOADD",$J,PSONI,PSONX)) Q:PSONX=""!(PSOUT)  D NAME S PSONB="" F  S PSONB=$O(^TMP("PSOADD",$J,PSONI,PSONX,PSONB)) Q:PSONB=""!(PSOUT)  D
 | 
|---|
 | 55 |  .F PSOFILE=2,55 S PSOADXX="" F  S PSOADXX=$O(^TMP("PSOADD",$J,PSONI,PSONX,PSONB,PSOFILE,PSOADXX)) Q:PSOADXX=""!(PSOUT)  D
 | 
|---|
 | 56 |  ..I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 57 |  ..S Y=PSONB D DD^%DT S PSOADATE=Y
 | 
|---|
 | 58 |  ..S PSOADND=$G(^TMP("PSOADD",$J,PSONI,PSONX,PSONB,PSOFILE,PSOADXX))
 | 
|---|
 | 59 |  ..D FLD
 | 
|---|
 | 60 |  ..D PRALL
 | 
|---|
 | 61 |  G END
 | 
|---|
 | 62 | ONE ;Print report for one patient
 | 
|---|
 | 63 |  N PSOFILE
 | 
|---|
 | 64 |  F PSOFILE=2,55 S PSOADLP="" F  S PSOADLP=$O(^DIA(PSOFILE,"B",PSOAPAT,PSOADLP)) Q:PSOADLP=""  S PSOC=$P($G(^DIA(PSOFILE,PSOADLP,0)),"^",3) D
 | 
|---|
 | 65 |  .S PSOANODE=$G(^DIA(PSOFILE,PSOADLP,0))
 | 
|---|
 | 66 |  .I +$P($G(PSOANODE),"^",2)>PSOSDT,+$P($G(PSOANODE),"^",2)<PSOEDT D
 | 
|---|
 | 67 |  ..I PSOFILE=2 I PSOC=.111!(PSOC=.112)!(PSOC=.113)!(PSOC=.114)!(PSOC=.115)!(PSOC=.116)!(PSOC=.1211)!(PSOC=.1212)!(PSOC=.1213)!(PSOC=.1214)!(PSOC=.1215)!(PSOC=.1216)!(PSOC=.1112)!(PSOC=.12112)!(PSOC=.121)!(PSOC=.1217)!(PSOC=.1218)!(PSOC=.12105) D
 | 
|---|
 | 68 |  ...S ^TMP("PSOADD",$J,+$P(PSOANODE,"^",2),PSOFILE,PSOADLP)=PSOANODE
 | 
|---|
 | 69 |  ..I PSOFILE=55 I PSOC=.03!(PSOC=.05) D
 | 
|---|
 | 70 |  ...S ^TMP("PSOADD",$J,+$P(PSOANODE,"^",2),PSOFILE,PSOADLP)=PSOANODE
 | 
|---|
 | 71 |  K VA S DFN=PSOAPAT D PID^VADPT6 S PSOASN=$P($G(^DPT(+$G(PSOAPAT),0)),"^")_"  ("_$E(VA("PID"),5,12)_")"
 | 
|---|
 | 72 |  K VA
 | 
|---|
 | 73 |  D HD
 | 
|---|
 | 74 |  I '$D(^TMP("PSOADD",$J)) W !!,"No data found to print for this date range.",! G END
 | 
|---|
 | 75 |  S PSOADX="" F  S PSOADX=$O(^TMP("PSOADD",$J,PSOADX)) Q:PSOADX=""!(PSOUT)  F PSOFILE=2,55 S PSOADXX="" F  S PSOADXX=$O(^TMP("PSOADD",$J,PSOADX,PSOFILE,PSOADXX)) Q:PSOADXX=""!(PSOUT)  D
 | 
|---|
 | 76 |  .I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 77 |  .S Y=PSOADX D DD^%DT S PSOADATE=Y
 | 
|---|
 | 78 |  .S PSOADND=$G(^TMP("PSOADD",$J,PSOADX,PSOFILE,PSOADXX))
 | 
|---|
 | 79 |  .D FLD
 | 
|---|
 | 80 |  .W ! D PRONE
 | 
|---|
 | 81 | END ;
 | 
|---|
 | 82 |  K ^TMP("PSOADD",$J)
 | 
|---|
 | 83 |  I '$G(PSOUT),PSODEV W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
 | 
|---|
 | 84 |  I 'PSODEV W !!,"End of Report."
 | 
|---|
 | 85 |  I PSODEV W !
 | 
|---|
 | 86 |  E  W @IOF
 | 
|---|
 | 87 |  D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
 | 88 |  Q
 | 
|---|
 | 89 | HD ;
 | 
|---|
 | 90 |  I '$G(PSOFORM) S PSOAFLAG=1
 | 
|---|
 | 91 |  I PSODEV,PSOPAGE'=1 W ! K DIR S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSOUT=1 Q
 | 
|---|
 | 92 |  I PSOPAGE=1,'PSODEV W ! I 1
 | 
|---|
 | 93 |  E  W @IOF
 | 
|---|
 | 94 |  D  W ?67,"PAGE: "_PSOPAGE S PSOPAGE=PSOPAGE+1
 | 
|---|
 | 95 |  .I PSOFORM W !,"Address changes for "_$G(PSOASN) Q
 | 
|---|
 | 96 |  .W !,"Address changes for ALL Patients"
 | 
|---|
 | 97 |  W !,"made between "_$G(PSOSDTX)_" and "_$G(PSOEDTX)
 | 
|---|
 | 98 |  W !,PSOLINE
 | 
|---|
 | 99 |  Q
 | 
|---|
 | 100 | MESS ;
 | 
|---|
 | 101 |  W !!,"Nothing queued to print.",!
 | 
|---|
 | 102 |  Q
 | 
|---|
 | 103 | NAME ;Set name(ssn)
 | 
|---|
 | 104 |  K VA S DFN=PSONX D PID^VADPT6
 | 
|---|
 | 105 |  S PSONSSN=$G(PSONI)_"   ("_$E(VA("PID"),5,12)_")"
 | 
|---|
 | 106 |  K VA
 | 
|---|
 | 107 |  Q
 | 
|---|
 | 108 | PRALL ;Print data for all patients
 | 
|---|
 | 109 |  S PSOAFLAG=0
 | 
|---|
 | 110 |  W !!,"          Patient: ",$G(PSONSSN) I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 111 | PRONE ;Print data for one patient
 | 
|---|
 | 112 |  D CON W !,"Date/time of edit: ",$G(PSOADATE) I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 113 |  D CON W !,"     Field edited: ",$G(PSOADFF) I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 114 |  D CON W !,"        Edited by: ",$G(PSOADUSR) I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 115 |  D CON W !,"  Option/Protocol: ",$G(PSOAOPT) I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 116 |  D CON W !,"        Old Value: ",$S($P($G(^DIA(PSOFILE,PSOADXX,2)),"^")'="":$P($G(^(2)),"^"),1:"<no previous value>") I ($Y+5)>IOSL D HD Q:PSOUT
 | 
|---|
 | 117 |  D CON W !,"        New Value: ",$S($P($G(^DIA(PSOFILE,PSOADXX,3)),"^")'="":$P($G(^(3)),"^"),1:"<no current value>") I ($Y+5)>IOSL D HD
 | 
|---|
 | 118 |  Q
 | 
|---|
 | 119 | CON ;
 | 
|---|
 | 120 |  I PSOAFLAG,'PSOFORM W !,"  Patient (cont.): ",$G(PSONSSN) S PSOAFLAG=0
 | 
|---|
 | 121 |  Q
 | 
|---|
 | 122 | FLD ;Set field value
 | 
|---|
 | 123 |  K PSOADF D FIELD^DID(PSOFILE,$P(PSOADND,"^",3),"","LABEL","PSOADF")
 | 
|---|
 | 124 |  S PSOADFF=$G(PSOADF("LABEL"))
 | 
|---|
 | 125 | USR ;Set user value
 | 
|---|
 | 126 |  S PSOADUSR=$P(PSOADND,"^",4) I 'PSOADUSR S PSOADUSR="UNKNOWN"
 | 
|---|
 | 127 |  I PSOADUSR'="UNKNOWN" K DIC S DIC="^VA(200,",DIC(0)="MZO",X="`"_PSOADUSR D ^DIC S PSOADUSR=$P($G(Y),"^",2) K DIC
 | 
|---|
 | 128 |  I $G(PSOADUSR)="" S PSOADUSR="UNKNOWN"
 | 
|---|
 | 129 | PROT ;Set value of protocol or option
 | 
|---|
 | 130 |  S (PSOAOPT,PSOAOPTB,PSOAOPTC)=""
 | 
|---|
 | 131 |  I $G(^DIA(PSOFILE,PSOADXX,4.1))="" S PSOAOPT="/" Q
 | 
|---|
 | 132 |  S PSOAOPTA=$P($G(^DIA(PSOFILE,PSOADXX,4.1)),"^")
 | 
|---|
 | 133 |  I PSOAOPTA K DIQ,DIC,PSOAOPTZ S DIC=19,DR=".01",DA=PSOAOPTA,DIQ(0)="E",DIQ="PSOAOPTZ" D EN^DIQ1 S PSOAOPTB=$G(PSOAOPTZ(19,PSOAOPTA,.01,"E")) K DIQ,DA,DR,PSOAOPTZ
 | 
|---|
 | 134 |  S PSOAOPTA=$P($G(^DIA(PSOFILE,PSOADXX,4.1)),"^",2)
 | 
|---|
 | 135 |  K PSOAOPTZ I $P(PSOAOPTA,";",2)="ORD(101," K DIC S DIC=101,DR=".01",DA=+PSOAOPTA,DIQ(0)="E",DIQ="PSOAOPTZ" D EN^DIQ1 S PSOAOPTC=$G(PSOAOPTZ(101,+PSOAOPTA,.01,"E")) K DA,DR,DIC,DIQ,PSOAOPTZ
 | 
|---|
 | 136 |  I $P(PSOAOPTA,";",2)'="ORD(101,",+PSOAOPTA K DIC,DIQ S DIC=19,DR=".01",DA=+PSOAOPTA,DIQ(0)="E",DIQ="PSOAOPTZ" D EN^DIQ1 S PSOAOPTC=$G(PSOAOPTZ(19,+PSOAOPTA,.01,"E")) K PSOAOPTZ,DIC,DA,DR,DIQ
 | 
|---|
 | 137 |  S PSOAOPT=$G(PSOAOPTB)_"/"_$G(PSOAOPTC)
 | 
|---|
 | 138 |  Q
 | 
|---|