1 | PSGEUDD ;BIR/MV-EXTRA UNITS DISPENSED REPORT ;14 JAN 97 / 9:22 AM
|
---|
2 | ;;5.0; INPATIENT MEDICATIONS ;**27,31,59,111**;16 DEC 97
|
---|
3 | ;
|
---|
4 | ; Reference to ^PS(55 is supported by DBIA# 2191
|
---|
5 | ; Reference to ^DIC(42 is supported by DBIA# 10039
|
---|
6 | ;
|
---|
7 | NEW ;***New needed variables.
|
---|
8 | K ^TMP($J)
|
---|
9 | NEW AMT,DRG,ND,NO,PPN,TM,WHO,XDESC,XSAVE,XTRTN,PSJACNWP
|
---|
10 | ;
|
---|
11 | ASK ;***Ask for date range and output device
|
---|
12 | Q:$$STDATE^PSJMDIR S PSGSDT=Y
|
---|
13 | K DIR S DIR(0)="DAO^"_PSGSDT_"::,EXAR",DIR("A")="Enter Ending Date and Time: ",DIR("?")="Please enter a date and time that is greater than the Start Date" D ^DIR S PSGEDT=Y Q:$$STOP^PSJMDIR
|
---|
14 | Q:$$GWP^PSJMDIR1(0)
|
---|
15 | Q:$$SELDEV^PSJMUTL
|
---|
16 | W:'$D(IO("Q")) !,"this may take a while...(you should QUEUE the Extra Units Dispensed report)"
|
---|
17 | ;***Queue to sort in the background.
|
---|
18 | I $D(IO("Q")) D G EXIT
|
---|
19 | . S XDESC="Extra Unit Dose Dispensed (Sort)"
|
---|
20 | . ;Added PSGWGNM to XSAVE to enable printing of ward group total for queued prints
|
---|
21 | . S XSAVE="PSGWGNM;PSGSDT;PSGEDT;PSGSS;PSGIO;PSGWG;PSGWD;PSGWN;PSGTMALL;PSGTM;PSGPAT(;PSGP(;PSGIODOC"
|
---|
22 | . S XTRTN="START^PSGEUDD"
|
---|
23 | . D SETSORTQ^PSJMUTL(XDESC,XSAVE,XTRTN)
|
---|
24 | D START
|
---|
25 | ;
|
---|
26 | EXIT ;***Exit report here.
|
---|
27 | D ENKV^PSGSETU
|
---|
28 | D EXIT^PSJMUTL
|
---|
29 | K ^TMP($J),PSGDT,PSGEDT,PSGIO,PSGORD,PSGP,PSGPAT,PSGSDT,PSGSS,PSGTM,PSGTMALL,PSGWD,PSGWG,PSGWGNM,PSGWN,PSJSTOP
|
---|
30 | Q
|
---|
31 | START ;***Start queuing here.
|
---|
32 | D @PSGSS
|
---|
33 | ;***Queue to the printer.
|
---|
34 | I $D(PSGIO) D G EXIT
|
---|
35 | . S XDESC="Extra Unit Dose Dispensed (Print)"
|
---|
36 | . S XSAVE="^TMP($J,;PSGWGNM;PSGTMALL;PSGTM;PSGSDT;PSGEDT;PSGSS;PSGIODOC"
|
---|
37 | . S XTRTN="^PSGEUDP"
|
---|
38 | . D SETPRTQ^PSJMUTL(XDESC,XSAVE,XTRTN)
|
---|
39 | D ^PSGEUDP
|
---|
40 | Q
|
---|
41 | ;
|
---|
42 | P ;***Select by Patient
|
---|
43 | S PPN="" F S PPN=$O(PSGPAT(PPN)) Q:PPN="" S PSGP=PSGPAT(PPN),PSJACNWP="" K PSJPPID,PSJPRB D ^PSJAC,LOOP
|
---|
44 | Q
|
---|
45 | ;
|
---|
46 | C ;***Select by CLINIC
|
---|
47 | N DT,CLIN
|
---|
48 | S TM="ZZ",PSJACNWP=""
|
---|
49 | S DT=PSGSDT F S DT=$O(^PS(55,"AUDC",DT)) Q:DT>PSGEDT!(DT="") S CLIN=0 F S CLIN=$O(^PS(55,"AUDC",DT,CLIN)) Q:'CLIN D
|
---|
50 | .S PSGP=0 F S PSGP=$O(^PS(55,"AUDC",DT,CLIN,PSGP)) Q:'PSGP D ^PSJAC S PPN=PSGP(0) D LOOP
|
---|
51 | Q
|
---|
52 | G ;***Select by WARD GROUP
|
---|
53 | D WARDGP
|
---|
54 | Q
|
---|
55 | W ;***Select by Ward
|
---|
56 | D WARD
|
---|
57 | Q
|
---|
58 | WARDGP ;*** Find wards within a ward group
|
---|
59 | S PSGWD="",TM="ZZ" F S PSGWD=$O(^PS(57.5,"AC",PSGWG,PSGWD)) Q:'PSGWD I $D(^DIC(42,+PSGWD,0)) S PSGWN=$P(^(0),U) D WARD
|
---|
60 | Q
|
---|
61 | ;
|
---|
62 | WARD ;*** Go through each patient within a given WARD
|
---|
63 | ;*** Var used in PSJAC. Set to null to skip WP^PSJAC
|
---|
64 | S PSJACNWP=""
|
---|
65 | F PSGP=0:0 S PSGP=$O(^DPT("CN",PSGWN,PSGP)) Q:'PSGP D ^PSJAC S PPN=PSGP(0) D:PSGSS="W" TEAM D:PSGSS="G" LOOP
|
---|
66 | Q
|
---|
67 | TEAM ;*** Look up selected team. PSGTMALL= All teams were selected.
|
---|
68 | S TM=""
|
---|
69 | I PSGTMALL D ALLTM,LOOP Q
|
---|
70 | I 'PSGTM S TM="ZZ" D LOOP Q
|
---|
71 | D ALLTM D:$D(PSGTM(TM)) LOOP
|
---|
72 | Q
|
---|
73 | ;
|
---|
74 | ALLTM ;*** Get UNIT DOSE information from ^PS(55
|
---|
75 | ;
|
---|
76 | S TM="ZZ"
|
---|
77 | S TM=$S(PSJPRB="":0,1:+$O(^PS(57.7,"AWRT",PSGWD,PSJPRB,0))),TM=$S('TM:"ZZ",'$D(^PS(57.7,PSGWD,1,TM,0)):TM,$P(^(0),U)]"":$P(^(0),U),1:TM)
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | LOOP ;***Loop thru ^PS(55 on the Dispense log multiple.
|
---|
81 | F PSGORD=0:0 S PSGORD=$O(^PS(55,+PSGP,5,PSGORD)) Q:'PSGORD D
|
---|
82 | . S PSGDT=PSGSDT-.000001
|
---|
83 | . F S PSGDT=$O(^PS(55,+PSGP,5,+PSGORD,11,"B",PSGDT)) Q:'PSGDT!(PSGEDT<PSGDT) D
|
---|
84 | ..F NO=0:0 S NO=$O(^PS(55,+PSGP,5,+PSGORD,11,"B",PSGDT,NO)) Q:'NO S ND=^PS(55,+PSGP,5,+PSGORD,11,NO,0) D
|
---|
85 | ...I $P(ND,U,5)=3 S DRG=$$ENDDN^PSGMI($P(ND,U,2)),AMT=$P(ND,U,3),WHO=$P(ND,U,6) D @($S(PSGSS="P":"TMPPT",1:"TMPWG"))
|
---|
86 | Q
|
---|
87 | ;
|
---|
88 | TMPWG ;***Set ^TMP global for selected by Ward/Ward Group.
|
---|
89 | S ^TMP($J,PSGWN,TM,DRG,$E(PPN,1,10)_"^"_+PSGP,PSGDT)=AMT_U_WHO_U_PSJPBID
|
---|
90 | Q
|
---|
91 | ;
|
---|
92 | TMPPT ;***Set ^TMP global for selected by patient.
|
---|
93 | S ^TMP($J,$E(PPN,1,10)_"^"_+PSGP,DRG,PSGDT)=AMT_U_WHO_U_PSJPPID_U_PSJPRB_U_PSJPWDN
|
---|
94 | Q
|
---|