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

PSDSUBOX.m

Go to the documentation of this file.
  1. PSDSUBOX ;BHAM ISC/JAM - DEA DATA - Waived Practitioner Report ;05 July 2011 5:30 pm
  1. ;;3.0;CONTROLLED SUBSTANCES;**73,83**;13 Feb 97;Build 10
  1. ;External reference to ^PS(59 supported by DBIA #2621
  1. ;External reference to ^PSRX( supported by DBIA #1977
  1. ;External reference to ^PSDRUG( supported by DBIA #221
  1. ;
  1. ;ask division/site
  1. N PSDIV,PSPRV,RPTYP,PSDED,PSDBD,PSDSD
  1. D DIVSEL(.PSDIV) I $G(PSDIV)="^" G EXIT
  1. I $G(PSDIV)="^ALL" S PSDIV=0 F S PSDIV=$O(^PS(59,PSDIV)) Q:'PSDIV I $S('$D(^PS(59,+PSDIV,"I")):1,'^("I"):1,DT'>^("I"):1,1:0) S PSDIV(PSDIV)=""
  1. I '$D(PSDIV) G EXIT
  1. ;
  1. DATE ;ask date range
  1. W ! K %DT S %DT(0)=-DT,%DT="AEP",%DT("A")="Start Date: " D ^%DT
  1. I Y<0!($D(DTOUT)) G EXIT
  1. S (%DT(0),PSDBD)=Y,%DT("A")="End Date: "
  1. W ! D ^%DT I Y<0!($D(DTOUT)) G EXIT
  1. S PSDED=Y,PSDSD=PSDBD-.000001
  1. PRV ;ask provider(s)
  1. W !!,?5,"You may select a single provider, several providers,",!,?5,"or enter ^ALL to select all providers.",!!
  1. K PRV,DIC S DIC("A")="Select Provider: ",DIC=200,DIC(0)="QEAM"
  1. S DIC("S")="I $D(^(""PS"")),$P(^(""PS""),""^""),$S('$P(^(""PS""),""^"",4):1,1:$P(^(""PS""),""^"",4)'<DT)"
  1. F D ^DIC Q:+Y<0 S PSPRV(+Y)=""
  1. K DIC I $$UP^XLFSTR(X)="^ALL" K DUOUT G TYP
  1. I ($D(DUOUT))!($D(DTOUT)) G EXIT
  1. I '$D(PSPRV)&(Y<0) G PRV
  1. TYP ;ask report selection - detail or summary
  1. S DIR(0)="SA^D:Detailed;S:Summary",DIR("A")="Detailed/Summary Report: ",DIR("B")="D"
  1. D ^DIR
  1. I $D(DIRUT) G EXIT
  1. S RPTYP=Y
  1. W ! K %ZIS,IOP,IO("Q"),POP S %ZIS="QM",%ZIS("B")="" D ^%ZIS I POP W !!,"NO DEVICE SELECTED OR REPORT PRINTED!!",! K IOP G EXIT
  1. I $D(IO("Q")) D G EXIT
  1. .S ZTRTN="RPT^PSDSUBOX",ZTDESC="DEA Waived Practitioner Report",ZTSAVE("PSDIV(")="",ZTSAVE("PSPRV(")=""
  1. .F G="PSDSD","PSDED","PSDBD","RPTYP" S:$D(@G) ZTSAVE(G)=""
  1. .D ^%ZTLOAD W:$D(ZTSK) !,"Report Queued to Print !!",! D HOME^%ZIS K ZTSK,IO("Q")
  1. U IO
  1. ;
  1. RPT ;generate report
  1. N RXN,ND0,ND2,DRGDA,DRGNM,DEA,DIV,PRVDA,PRVNM,PG,DTM,PATIEN
  1. S PG=1,DTM=$$FMTE^XLFDT(DT)
  1. K ^TMP("PSDSUBOX",$J),^TMP("PSDSUBOXC",$J)
  1. F S PSDSD=$O(^PSRX("AFDT",PSDSD)) Q:'PSDSD!(PSDSD>(PSDED+.99)) D
  1. .S RXN=0 F S RXN=$O(^PSRX("AFDT",PSDSD,RXN)) Q:'RXN D
  1. ..S ND0=$G(^PSRX(RXN,0)),DRGDA=$P(ND0,"^",6),DRGNM=$$GET1^DIQ(50,DRGDA,.01),DEA=$$GET1^DIQ(50,DRGDA,3),PATIEN=$P(ND0,U,2)
  1. ..Q:DEA<1 Q:DEA>5 Q:'$$DETOX^PSSOPKI(DRGDA)
  1. ..S ND2=$G(^PSRX(RXN,2)),DIV=$P(ND2,"^",9),PRVDA=$P(ND0,"^",4),PRVNM=$$GET1^DIQ(59,PRVDA,.01)
  1. ..I '$D(PSDIV(+DIV)) Q
  1. ..I $D(PSPRV) I '$D(PSPRV(+PRVDA)) Q
  1. ..D SETMP
  1. D PRT
  1. ;
  1. EXIT D ^%ZISC K PG,G,DR,X,Y,DIR,DIRUT,DUOUT,I,Y,DIC,DTOUT,%DT
  1. K ZTDESC,ZTRTN,ZTSAVE S:$D(ZTQUEUED) ZTREQ="@" K ZTQUEUED D KVA^VADPT
  1. Q
  1. ;
  1. SETMP ;set ^TMP("PSDSUBOX",$J global
  1. N DRUGINFO,PROVIEN
  1. S DRUGINFO=$E(DRGNM,1,50)_"^"_DRGDA
  1. S PROVIEN=$E(PRVNM,1,50)_"^"_PRVDA
  1. ;S ^TMP("PSDSUBOX",$J,DIV,DRUGINFO,PROVIEN)=$G(^TMP("PSDSUBOX",$J,DIV,DRUGINFO,PROVIEN))+1
  1. S ^TMP("PSDSUBOX",$J,DIV,PROVIEN,DRUGINFO,RXN)=""
  1. I '$D(^TMP("PSDSUBOXC",$J,DIV,PROVIEN,PATIEN)) D
  1. .S ^TMP("PSDSUBOXC",$J,DIV,PROVIEN,PATIEN)=""
  1. .S ^TMP("PSDSUBOXC",$J,DIV,PROVIEN)=$G(^TMP("PSDSUBOXC",$J,DIV,PROVIEN))+1
  1. Q
  1. ;
  1. PRT ;prints report
  1. N DIV,DRG,PRV,PSDATE,PEDATE,PSDOUT
  1. S PSDOUT=0,PSDATE=$$FMTE^XLFDT(PSDBD),PEDATE=$$FMTE^XLFDT(PSDED)
  1. I '$D(^TMP("PSDSUBOX",$J)) D HD W !,?25,"***NO DATA FOUND FOR SELECTION***",!! D HD1^PSDDSOR I $D(DIRUT) Q
  1. S DIV=0 F S DIV=$O(^TMP("PSDSUBOX",$J,DIV)) Q:'DIV D I PSDOUT Q
  1. .D HD,PGCHK I PSDOUT Q
  1. .S PRV="" F S PRV=$O(^TMP("PSDSUBOX",$J,DIV,PRV)) Q:PRV="" D I PSDOUT Q
  1. ..I RPTYP="S" W !,$$GET1^DIQ(200,$P(PRV,"^",2),.01),?60,$G(^TMP("PSDSUBOXC",$J,DIV,PRV))
  1. ..S DRG="" F S DRG=$O(^TMP("PSDSUBOX",$J,DIV,PRV,DRG)) Q:DRG="" D I PSDOUT Q
  1. ...D PRT1 Q:PSDOUT D PGCHK
  1. ..I RPTYP="S" W !
  1. Q
  1. ;
  1. PRT1 ;print report details
  1. N ND0,LIN,DFN,PL,EE
  1. ;/BLB/ PSD*83 - ADDED NEW COUNTER TO CORRECTLY COUNT PATIENTS PRESCRIBED SUBOXONE
  1. I RPTYP="S" W !?3,$P(DRG,"^") Q
  1. S RXN=0 F S RXN=$O(^TMP("PSDSUBOX",$J,DIV,PRV,DRG,RXN)) Q:'RXN D Q:PSDOUT
  1. .S ND0=$G(^PSRX(RXN,0)),DFN=$P(ND0,"^",2)
  1. .W ?2,"Issue Date: ",$$FMTE^XLFDT($P(ND0,"^",13))
  1. .D DEM^VADPT,ADD^VADPT
  1. .W !?2,"Patient: ",VADM(1)
  1. .W !?2,VAPA(1),$S(VAPA(2)'="":", "_VAPA(2),1:"")
  1. .I VAPA(3)'="" W !?2,VAPA(3)
  1. .W !?2,$S(VAPA(4)'="":VAPA(4)_", ",1:""),$P(VAPA(5),"^",2)," ",VAPA(6)
  1. .D PGCHK I PSDOUT Q
  1. .W !!?2,$$GET1^DIQ(50,$P(DRG,"^",2),.01),?50,"Qty: ",$P(ND0,"^",7),?60,"# of Refills: ",$P(ND0,"^",9)
  1. .D FSIG^PSDDSOR1("R",RXN,75)
  1. .I $G(FSIG(1))'="" D
  1. ..W !?2,"SIG: ",$$UNESC^ORHLESC($G(FSIG(1)))
  1. ..I $O(FSIG(1)) D
  1. ...F EE=1:0 S EE=$O(FSIG(EE)) Q:'EE D
  1. ....W !?6,$$UNESC^ORHLESC($G(FSIG(EE)))
  1. .D PGCHK I PSDOUT Q
  1. .W !!?2,"Provider: ",$$GET1^DIQ(200,$P(ND0,"^",4),.01),!
  1. .D VADR($$GET1^DIQ(52,RXN,39.3,"I"),.VADR)
  1. .I $D(VADR(1)) W ?2,$P(VADR(1),"^"),!?2,VADR(2),!?2,VADR(3),!
  1. .F LIN=1:1:80 W "="
  1. .D PGCHK I PSDOUT Q
  1. ; PSD*3.0*83 - cleaning up FSIG
  1. K FSIG,VADM,VADR,VAPA
  1. Q
  1. HD ;header
  1. N DVL,DVN,LIN
  1. W @IOF,?22,"DEA DATA-Waived Practitioner Report",?67,DTM,!,?32,$S(RPTYP="D":"Detailed",1:"Summary")_" Report"
  1. S DVN=$P($G(^PS(59,+$G(DIV),0)),"^",1),DVL=80-(9+$L(DVN))/2
  1. I DVN'="" W !?DVL,"DIVISION: ",DVN
  1. W !?26,PSDATE_" to "_PEDATE,?70,"Page: "_PG,!
  1. I RPTYP="S" W !,"PROVIDER/DRUG",?55,"# OF PATIENTS",!
  1. F LIN=1:1:80 W "-"
  1. S PG=PG+1
  1. Q
  1. PGCHK ;check for page break
  1. I ($Y+4)>IOSL D Q
  1. .W ! D HD1^PSDDSOR I $D(DIRUT) S PSDOUT=1 Q
  1. .D HD W !
  1. Q
  1. ;
  1. DIVSEL(ARY) ;Division selection (one, multiple or ALL)
  1. N DIC,DTOUT,DUOUT,QF,Y,X
  1. W !!,?5,"You may select a single or multiple Divisions,"
  1. W !,?5,"or enter ^ALL to select all Divisions.",!
  1. S DIC("S")="I $S('$D(^PS(59,+Y,""I"")):1,'^(""I""):1,DT'>^(""I""):1,1:0)"
  1. S DIC="^PS(59,",DIC(0)="QEZAM",DIC("A")="Division: ",QF=0
  1. F D ^DIC Q:X="" D Q:QF
  1. .I $$UP^XLFSTR(X)="^ALL" K ARY S ARY="^ALL",QF=1 Q
  1. .I $D(DTOUT)!$D(DUOUT) K ARY S ARY="^",QF=1 Q
  1. .W " ",$P(Y,"^",2),$S($D(ARY(+Y)):" (already selected)",1:"")
  1. .W ! S ARY(+Y)=""
  1. I '$D(ARY) S ARY="^"
  1. Q
  1. VADR(ORN,VADD) ;Get Provider's Address
  1. ;ORN: Order IEN (Pointer to file #100)
  1. K ^TMP($J,"ORDEA"),VADD
  1. D ARCHIVE^ORDEA(ORN)
  1. I $D(^TMP($J,"ORDEA",ORN,3)) S VADD=^(3) D
  1. .I $P(VADD,"^",2)="" Q
  1. .S VADD(1)=$P(VADD,"^",2),VADD(2)=$P(VADD,"^",3)
  1. .S VADD(3)=$P(VADD,"^",4)_", "_$P(VADD,"^",5)_" "_$P(VADD,"^",6)
  1. K ^TMP($J,"ORDEA")
  1. Q