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

APSPCTR1.m

Go to the documentation of this file.
  1. APSPCTR1 ; IHS/DSD/ENM - CONTROLLED DRUG REPORT PRINTOUT ;11-Nov-2009 10:11;SM
  1. ;;7.0;IHS PHARMACY MODIFICATIONS;**1008**;Sep 23, 2004
  1. ;THIS ROUTINE PRINTS THE PHARMACY CONTROLLED DRUG LISTING
  1. ;IT IS CALLED BY ^APSPCTR
  1. ;Modified - IHS/MSC/PLS - 12/30/08 - Patch 1008 - Routine updated
  1. Q
  1. PRINT ;EP
  1. N APSPPG,DFLG,NEWPG,DPARTIAL,TPARTIAL,DNEW,DREFILL,APSPGT,APSPT
  1. S (APSPPG,DFLG,NEWPG,APSPGT)=0
  1. S (DCOUNT,TCOUNT,DNEW,TNEW,DREFILL,DPARTIAL,TPARTIAL,TREFILL,TQTY)=0
  1. D PRINT1
  1. W:'DFLG !,"No data found..."
  1. Q
  1. ;
  1. PRINT1 ;EP
  1. N DIV,SUB1,SUB2,SUB3,SUB4,SUB5,VAL,LP,LSTFDT,APSPSH
  1. S LSTFDT=0
  1. S APSP(2)=0,APSP("3-5")=0,(APSPT(2),APSPT(35))=0
  1. S DIV=0 F S DIV=$O(^TMP($J,"XREF",DIV)) Q:'DIV D
  1. .D HDR
  1. .I APSPDTDR=2 D ; Drug Name
  1. ..S SUB1="" F S SUB1=$O(^TMP($J,"XREF",DIV,"DRUG",SUB1)) Q:SUB1="" D ; Drug Name
  1. ...S SUB2="" F S SUB2=$O(^TMP($J,"XREF",DIV,"DRUG",SUB1,SUB2)) Q:SUB2="" D ; Drug Class
  1. ....S APSPSH=SUB2
  1. ....S SUB3=0 F S SUB3=$O(^TMP($J,"XREF",DIV,"DRUG",SUB1,SUB2,SUB3)) Q:'SUB3 D ; Fill Date
  1. .....S SUB4=0 F S SUB4=$O(^TMP($J,"XREF",DIV,"DRUG",SUB1,SUB2,SUB3,SUB4)) Q:'SUB4 D ; Data Node
  1. ......D PRINT2(^TMP($J,"DATA",SUB4))
  1. ......S DFLG=1
  1. ......D TOTALS
  1. ....D SUB2
  1. ..D DIVSUB
  1. .E D ; Fill Date
  1. ..S SUB1=0 F S SUB1=$O(^TMP($J,"XREF",DIV,"FDT",SUB1)) Q:'SUB1 D ; Fill Date
  1. ...S SUB2="" F S SUB2=$O(^TMP($J,"XREF",DIV,"FDT",SUB1,SUB2)) Q:SUB2="" D ; Drug Class
  1. ....S APSPSH=SUB2
  1. ....S SUB3="" F S SUB3=$O(^TMP($J,"XREF",DIV,"FDT",SUB1,SUB2,SUB3)) Q:SUB3="" D ; Data Name
  1. .....S SUB4=0 F S SUB4=$O(^TMP($J,"XREF",DIV,"FDT",SUB1,SUB2,SUB3,SUB4)) Q:'SUB4 D ; Data Node
  1. ......D PRINT2(^TMP($J,"DATA",SUB4))
  1. ......S DFLG=1
  1. ......D TOTALS
  1. ....D SUB
  1. ..D DIVSUB1
  1. Q
  1. ; Print the line
  1. PRINT2(DATA) ; EP -
  1. N RX,DFN,HRN
  1. S RX=+DATA
  1. S DFN=$$GET1^DIQ(52,RX,2,"I")
  1. S HRN=$$HRN^AUPNPAT(DFN,DUZ(2))
  1. S TQTY=TQTY+$P(DATA,U,6)
  1. S DCOUNT=DCOUNT+1
  1. I $P(DATA,U,3)="ADP" D
  1. .S DPARTIAL=DPARTIAL+1
  1. E D
  1. .I $P(DATA,U,4) D
  1. ..S DREFILL=DREFILL+1
  1. .E S DNEW=DNEW+1
  1. ; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  1. ;Format: Prescription IEN^Fill Date^Xref ("AD" or "ADP")^Fill SubIEN^Prescription Number^QTY^Drug Class^Drug Name^Fill Type^RI Flg^Drug IEN^RX Division^Days Supply^Prescriber^Pharmacist^Clerk
  1. W !,$P(DATA,U,5),?15,$P(DATA,U,8),?57,$P(DATA,U,6),?64,$$GET1^DIQ(200,$P(DATA,U,14),.01),?83,$$FMTE^XLFDT($P(DATA,U,2),"5Z"),?98,$E($$GET1^DIQ(2,DFN,.01),1,18),?118,HRN,?127,$$GET1^DIQ(200,$P(DATA,U,16),1)
  1. D PRINT3 ;check page length
  1. Q
  1. ; Check page length and optionally print blank line
  1. ;
  1. PRINT3 ;EP
  1. D:$Y+8>IOSL HDR
  1. Q
  1. ;Date order loop
  1. LOOP F APSPD=0:0 S APSPD=$O(^TMP("APSP",$J,APSPDIV,APSPD)) Q:APSPD="" F APSPSH=0:0 S APSPSH=$O(^TMP("APSP",$J,APSPDIV,APSPD,APSPSH)) Q:'APSPSH D LOOP1,SUB
  1. Q
  1. LOOP1 F APSPDR=0:0 S APSPDR=$O(^TMP("APSP",$J,APSPDIV,APSPD,APSPSH,APSPDR)) Q:'APSPDR F APSPN=0:0 S APSPN=$O(^TMP("APSP",$J,APSPDIV,APSPD,APSPSH,APSPDR,APSPN)) Q:'APSPN D PRINT,TOTALS
  1. Q
  1. ;Drug order loop
  1. LOP F APSPDR=0:0 S APSPDR=$O(^TMP("APSP",$J,APSPDIV,APSPDR)) Q:APSPDR="" F APSPSH=0:0 S APSPSH=$O(^TMP("APSP",$J,APSPDIV,APSPDR,APSPSH)) Q:'APSPSH D LOP1,SUB2
  1. Q
  1. LOP1 F APSPD=0:0 S APSPD=$O(^TMP("APSP",$J,APSPDIV,APSPDR,APSPSH,APSPD)) Q:'APSPD F APSPN=0:0 S APSPN=$O(^TMP("APSP",$J,APSPDIV,APSPDR,APSPSH,APSPD,APSPN)) Q:'APSPN D PRINT,TOTALS
  1. Q
  1. DIVSUB ;PRINT TOTAL PRESCRIPTIONS/REFILLS
  1. W ! F I=1:1:IOM W "-"
  1. W !,"TOTAL # OF PRESCRIPTIONS : ",APSPGT
  1. W ?($X+5),"TOTAL # NEW RX'S : ",TNEW
  1. W ?($X+5),"TOTAL # REFILLS : ",TREFILL
  1. W ?($X+5),"TOTAL # PARTIALS : ",TPARTIAL
  1. S (APSP("PAGE"),APSPGT,TNEW,TREFILL,TPARTIAL)=0
  1. I $E(IOST,1,2)="P-" W !,@IOF
  1. Q
  1. DIVSUB1 ;PRINT TOTAL SPECIAL HANDLING CODES
  1. W ! F I=1:1:IOM W "-"
  1. W !,"TOTAL # OF PRESCRIPTIONS : ",APSPGT
  1. W ?($X+5),"TOTAL # CODE 2's : ",APSPT(2)
  1. W ?($X+5),"TOTAL # CODES 3-5 : ",APSPT(35)
  1. S (APSP("PAGE"),APSPT(2),APSPT(35),APSPGT)=0
  1. I $E(IOST,1,2)="P-" W !,@IOF
  1. Q
  1. SUB ;W ! F I=1:1:43 W "-"
  1. S APSP("2")=0,APSP("3-5")=0
  1. Q
  1. SUB2 W ! F I=1:1:43 W "-"
  1. W !,"SUB-TOTAL # OF RX's : ",TCOUNT
  1. W ?($X+5),"TOTAL QTY : ",TQTY,!
  1. S TCOUNT=0,TQTY=0
  1. Q
  1. TOTALS ;
  1. I APSPDTDR=1,"345"[+APSPSH S APSP("3-5")=APSP("3-5")+1,APSPT(35)=APSPT(35)+1
  1. I APSPDTDR=1,+APSPSH=2 S APSP(2)=APSP(2)+1,APSPT(2)=APSPT(2)+1
  1. S TCOUNT=TCOUNT+DCOUNT,APSPGT=APSPGT+DCOUNT,DCOUNT=0
  1. S TNEW=TNEW+DNEW,DNEW=0
  1. S TREFILL=TREFILL+DREFILL,DREFILL=0
  1. S TPARTIAL=TPARTIAL+DPARTIAL,DPARTIAL=0
  1. Q
  1. HDR ;EP
  1. W @IOF
  1. S APSPPG=APSPPG+1
  1. S APSPDV=$P(^PS(59,DIV,0),U)
  1. W !!,APSPDV," CONTROLLED DRUG USE LIST (By ",$S(APSPDTDR=1:"DATE",APSPDTDR=2:"Drug",1:"")_" Order)"
  1. W ?73,"Page ",APSPPG
  1. W !,"DATE OF LISTING: "
  1. W $$FMTE^XLFDT($$DT^XLFDT(),"5Z")
  1. W !,"Drug Class: "_APSPDCTN(APSPDCLS)
  1. K X,Y
  1. I APSPDIV="*" W !,"All Divisions for: ",$P(^DIC(4,DUZ(2),0),U,1)
  1. W !,"Division: ",$G(APSPDV)
  1. W !!,"This list will include all Prescriptions for any controlled"
  1. W " medications dispensed from "
  1. W APSPBDF," through ",APSPEDF,!!
  1. W !!,"RX #",?13,"DRUG",?57,"QTY",?64,"PHYSICIAN"
  1. W ?83,"DATE FILLED",?98,"PATIENT",?118,"CHART #",?127,"CLERK"
  1. W ! F I=1:1:IOM W "-"
  1. I '$D(^TMP($J,"DATA")) W !!?20,"NO PATIENTS RECEIVED MEDICATION"
  1. W !
  1. Q