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

PSORRP.m

Go to the documentation of this file.
  1. PSORRP ;AITC/BWF - Remote RX report ;8/15/16 5:44pm
  1. ;;7.0;OUTPATIENT PHARMACY;**454,643**;DEC 1997;Build 35
  1. ;
  1. EN ; -- main entry point for PSO LM REMOTE RX REPORT
  1. N PSOREPORT
  1. D EN^VALM("PSO LM REMOTE RX REPORT")
  1. Q
  1. ;
  1. HDR ; -- header code
  1. S VALMHDR(1)=$P("Prescriptions dispensed for other Host Pharmacies^Our prescriptions, filled by other facilities as the Dispensing Pharmacy^All OneVA Pharmacy Prescription Activity","^",PSOREPORT)
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. ;F LINE=1:1:30 D SET^VALM10(LINE,LINE_" Line number "_LINE)
  1. ;S VALMCNT=30
  1. N SBY,DONE,QUIT,SDATE,EDATE,DFN,SITEIEN,DISP,DIR,Y,%DT,DIC,DFN,SITEIEN,DISP
  1. S VALMCNT=0
  1. ;S DIR(0)="S^1:Prescriptions dispensed for other Host Pharmacies;2:Our prescriptions, filled by other facilities as the Dispensing Pharmacy;3:All OneVA Pharmacy Prescription Activity"
  1. ;S DIR("A")="Select item" D ^DIR S PSOREPORT=Y
  1. S DIR(0)="N^1:3:0"
  1. S DIR("A",1)=""
  1. S DIR("A",2)=" 1. Prescriptions dispensed for other Host Pharmacies"
  1. S DIR("A",3)=" 2. Our prescriptions, filled by other facilities as the Dispensing Pharmacy"
  1. S DIR("A",4)=" 3. All OneVA Pharmacy Prescription Activity"
  1. S DIR("A",5)=""
  1. S DIR("A")=" Select item"
  1. S DIR("?")="Answer with 1, 2, or 3."
  1. S DIR("?",1)=""
  1. S DIR("?",2)="Selecting 1 will display the list of prescriptions that our local facility has"
  1. S DIR("?",3)="dispensed on behalf of other host Pharmacy locations as part of the OneVA"
  1. S DIR("?",4)="Pharmacy program. Selecting 2 will display the list of prescriptions other VA"
  1. S DIR("?",5)="Pharmacy locations have filled as a dispensing site for a prescription that"
  1. S DIR("?",6)="originated from our location. Selecting 3 will list all prescriptions that"
  1. S DIR("?",7)="either we have filled for other Pharmacy locations as the dispensing site or"
  1. S DIR("?",8)="other Pharmacy locations have filled on our behalf."
  1. S DIR("?",9)=""
  1. ;S DIR("??")="^D EXTHLP^PSORRP"
  1. ;
  1. ;
  1. D ^DIR S PSOREPORT=Y
  1. ;
  1. I Y="^" S VALMQUIT="" Q
  1. S DISP=Y
  1. W " ",$S(DISP=1:"Prescriptions dispensed for other Host Pharmacies",DISP=2:"Our prescriptions, filled by other facilities as the Dispensing Pharmacy",DISP=3:"All OneVA Pharmacy Prescription Activity",1:"")
  1. ;
  1. S DISP=$S(DISP=1:"RF^PR",DISP=2:"OR^OP",1:"RF^PR^OR^OP")
  1. K DIR
  1. S DIR(0)="S^D:DATE RANGE;P:PATIENT;S:SITE"
  1. S DIR("A")="Search by"
  1. S DIR("?")="specific patient or S for a report for a specific VA Pharmacy."
  1. S DIR("?",1)="Answer with D for report within a specific date range or P for a report for a"
  1. ;
  1. D ^DIR
  1. I Y="^" S VALMQUIT="" Q
  1. S SBY=Y
  1. ; if date range
  1. S QUIT=0
  1. I SBY="D" D G:QUIT INIT
  1. .S DONE=0
  1. .F D Q:DONE!(QUIT)
  1. ..S %DT="AQEP",%DT("A")="Enter start date: ",%DT("B")=$$FMTE^XLFDT($$FMADD^XLFDT(DT,-30),1) D ^%DT
  1. ..I Y<0 S QUIT=1 Q
  1. ..I Y S SDATE=Y,DONE=1
  1. . Q:QUIT
  1. .S DONE=0
  1. .F D Q:DONE!(QUIT)
  1. ..S %DT="AQEP",%DT("A")="Enter end date: ",%DT("B")=$$FMTE^XLFDT(DT,1) D ^%DT
  1. ..I Y<0 S QUIT=1 Q
  1. ..I Y S EDATE=Y,DONE=1
  1. . Q:QUIT
  1. .D DTRNG(SDATE,EDATE,DISP)
  1. I SBY="P" D G:QUIT INIT
  1. .S DIC="^DPT(",DIC(0)="QEAMZ" D ^DIC I Y<0 S QUIT=1 Q
  1. .S DFN=+Y
  1. .D PAT(DFN,DISP)
  1. I SBY="S" D G:QUIT INIT
  1. .S DIC="^DIC(4,",DIC(0)="QEAMZ" D ^DIC I Y<0 S QUIT=1 Q
  1. .S SITEIEN=+Y
  1. .D SITE(SITEIEN,DISP)
  1. I 'VALMCNT,SBY="D" K DIR S DIR(0)="FO",DIR("A")="Nothing to list for this date range. Press return to continue" D ^DIR S VALMQUIT=1
  1. I 'VALMCNT,SBY="P" K DIR S DIR(0)="FO",DIR("A")="Nothing to list for this patient. Press return to continue" D ^DIR S VALMQUIT=1
  1. I 'VALMCNT,SBY="S" K DIR S DIR(0)="FO",DIR("A")="Nothing to list for this site. Press return to continue" D ^DIR S VALMQUIT=1
  1. Q
  1. INITQ ;
  1. Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. D CLEAN^VALM10
  1. K VALMQUIT,VALMLST,VALMHDR,VALMAR,VALMBG,VALMCNT
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. DTRNG(BEG,END,FLTR) ;
  1. N IEN,LINE,TCOST,TYPE
  1. S (LINE,TCOST)=0
  1. S BEG=BEG-.01,END=END_.2359
  1. F S BEG=$O(^PSRXR(52.09,"B",BEG)) Q:'BEG!(BEG>END) D
  1. .S IEN=0 F S IEN=$O(^PSRXR(52.09,"B",BEG,IEN)) Q:'IEN D
  1. ..S TYPE=$$GET1^DIQ(52.09,IEN,.05,"I") I FLTR'[TYPE Q
  1. ..S TCOST=$G(TCOST)+$J($$GET1^DIQ(52.09,IEN,1.2,"I"),0,2)
  1. ..S LINE=LINE+1 D BLDLINE(IEN,.LINE)
  1. S LINE=LINE+1 D SET^VALM10(LINE,"")
  1. S LINE=LINE+1 D SET^VALM10(LINE,"Total Cost for items in this report: $"_$J(TCOST,0,2))
  1. Q
  1. PAT(DFN,FLTR) ;
  1. N IEN,LINE,TCOST,TYPE
  1. S (LINE,TCOST)=0
  1. S IEN=0 F S IEN=$O(^PSRXR(52.09,"C",DFN,IEN)) Q:'IEN D
  1. .S TYPE=$$GET1^DIQ(52.09,IEN,.05,"I") I FLTR'[TYPE Q
  1. .S TCOST=$G(TCOST)+$J($$GET1^DIQ(52.09,IEN,1.2,"I"),0,2)
  1. .S LINE=LINE+1 D BLDLINE(IEN,.LINE)
  1. S LINE=LINE+1 D SET^VALM10(LINE,"")
  1. S LINE=LINE+1 D SET^VALM10(LINE,"Total Cost for items in this report: $"_$J(TCOST,0,2))
  1. Q
  1. SITE(SITEIEN,FLTR) ;
  1. N IEN,LINE,TCOST,TYPE
  1. S (LINE,TCOST)=0
  1. S IEN=0 F S IEN=$O(^PSRXR(52.09,"E",SITEIEN,IEN)) Q:'IEN D
  1. .S TYPE=$$GET1^DIQ(52.09,IEN,.05,"I") I FLTR'[TYPE Q
  1. .S TCOST=$G(TCOST)+$J($$GET1^DIQ(52.09,IEN,1.2,"I"),0,2)
  1. .S LINE=LINE+1 D BLDLINE(IEN,.LINE)
  1. S LINE=LINE+1 D SET^VALM10(LINE,"")
  1. S LINE=LINE+1 D SET^VALM10(LINE,"Total Cost for items in this report: $"_$J(TCOST,0,2))
  1. Q
  1. BLDLINE(IEN,LINE) ;
  1. N DATE,PAT,DRUG,SITE,TYPE,QTY,DSUPP,F,IENS,DATA,IENS,LINEVAR
  1. S IENS=IEN_","
  1. S F=52.09
  1. D GETS^DIQ(F,IENS,"**","IE","DATA")
  1. S LINEVAR=""
  1. S DATE=$P(DATA(F,IENS,.01,"E"),U)
  1. S PAT=$G(DATA(F,IENS,.02,"E"))
  1. S SITE=$G(DATA(F,IENS,.04,"E"))
  1. S TYPE=$G(DATA(F,IENS,.05,"I"))
  1. S QTY=$G(DATA(F,IENS,.07,"E"))
  1. S DSUPP=$G(DATA(F,IENS,.08,"E"))
  1. S DRUG=$G(DATA(F,IENS,1,"E"))
  1. S LINEVAR=$$SETFLD^VALM1($J(LINE,2),LINEVAR,"LINENO")
  1. S LINEVAR=$$SETFLD^VALM1(DATE,LINEVAR,"DATE")
  1. S LINEVAR=$$SETFLD^VALM1(PAT,LINEVAR,"PATIENT")
  1. ;S LINEVAR=$$SETFLD^VALM1(SITE,LINEVAR,"SITE")
  1. S LINEVAR=$$SETFLD^VALM1(DRUG,LINEVAR,"DRUG")
  1. S LINEVAR=$$SETFLD^VALM1(TYPE,LINEVAR,"TYPE")
  1. S LINEVAR=$$SETFLD^VALM1(QTY,LINEVAR,"QTY")
  1. S LINEVAR=$$SETFLD^VALM1(DSUPP,LINEVAR,"DSUPP")
  1. D SET^VALM10(LINE,LINEVAR,IEN)
  1. S VALMCNT=$G(VALMCNT)+1
  1. Q
  1. SEL ;
  1. N DIR,ITEM,IEN,IENS,DATA,CNT,F,ARY,SITELBL,PSOPRRF,PSOPRRT,PSOPRRS
  1. S ARY=$NA(^TMP("PSORRD",$J))
  1. K @ARY
  1. S CNT=1
  1. S F=52.09
  1. I $P(XQORNOD(0),"=",2) S Y=+$P(XQORNOD(0),"=",2)
  1. I '$P(XQORNOD(0),"=",2) D Q:'Y
  1. .;S DIR(0)="N^"_VALMBG_":"_VALMLST_":0" D ^DIR Q:'Y
  1. . S DIR(0)="N^"_1_":"_VALMCNT_":0" D ^DIR Q:'Y
  1. S ITEM=Y,IEN=$O(@VALMAR@("IDX",ITEM,0))
  1. Q:'IEN
  1. S IENS=IEN_","
  1. D GETS^DIQ(F,IENS,"**","IE","DATA")
  1. S PSOPRRT=$G(DATA(F,IENS,.05,"I"))
  1. S PSOPRRF=$S($E(PSOPRRT)="O":1,1:0)
  1. I PSOPRRF S PSOPRRS=$S($E(PSOPRRT,2)="R":1,1:0)
  1. ; set up data
  1. S @ARY@(CNT,0)="Request Date/Time: "_$G(DATA(F,IENS,.01,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Patient: "_$G(DATA(F,IENS,.02,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="RX #: "_$G(DATA(F,IENS,.03,"I")),CNT=CNT+1
  1. S SITELBL=$S(PSOPRRF:"Rx Dispensed by Site: ",1:"Rx Hosted at Site: ")
  1. S @ARY@(CNT,0)=SITELBL_$G(DATA(F,IENS,.04,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Request Type: "_$G(DATA(F,IENS,.05,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Requesting Pharmacist: "_$S('PSOPRRF:$G(DATA(F,IENS,.06,"E")),1:$G(DATA(F,IENS,.061,"E"))),CNT=CNT+1
  1. S @ARY@(CNT,0)="Quantity: "_$G(DATA(F,IENS,.07,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Days Supply: "_$G(DATA(F,IENS,.08,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Dispensed Date: "_$G(DATA(F,IENS,.1,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Drug Name at Host site: "_$G(DATA(F,IENS,1,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Local (matched) drug: "_$G(DATA(F,IENS,1.1,"E"))_$S(PSOPRRF:"",1:" ("_$G(DATA(F,IENS,1.1,"I"))_")") S CNT=CNT+1
  1. S @ARY@(CNT,0)="Cost of Local Refill/Partial: $"_$J($G(DATA(F,IENS,1.2,"E")),0,2),CNT=CNT+1
  1. S @ARY@(CNT,0)="Remote Filling Person: "_$G(DATA(F,IENS,.061,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Remote Checking Pharmacist: "_$G(DATA(F,IENS,.062,"E")),CNT=CNT+1
  1. I PSOPRRF S @ARY@(CNT,0)="Host "_$S(PSOPRRS:"Refill",1:"Partial")_" IEN: "_$S(PSOPRRS:" ",1:"")_$G(DATA(F,IENS,$S(PSOPRRS:.063,1:.064),"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="OPAI Message ID: "_$G(DATA(F,IENS,4,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Disp ADD Name: "_$G(DATA(F,IENS,4.2,"E")),CNT=CNT+1
  1. S @ARY@(CNT,0)="Disp ADD DNS: "_$G(DATA(F,IENS,4.3,"E"))
  1. S PSORCNT=CNT
  1. D ^PSORRD
  1. K @ARY,PSORCNT
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. EXTHLP ;
  1. W !,"Selecting 1 will display the list of prescriptions that our local facility has"
  1. W !,"dispensed on behalf of other host Pharmacy locations as part of the OneVA"
  1. W !,"Pharmacy program. Selecting 2 will display the list of prescriptions other VA"
  1. W !,"Pharmacy locations have filled as a dispensing site for a prescription that"
  1. W !,"originated from our location. Selecting 3 will list all prescriptions that"
  1. W !,"either we have filled for other Pharmacy locations as the dispensing site or"
  1. W !,"other Pharmacy locations have filled on our behalf."
  1. Q