1 | TIULMED3 ; SLC/MAM - Cont. of Active/Recent Med Objects Routine ;1/30/07
|
---|
2 | ;;1.0;TEXT INTEGRATION UTILITIES;**198,213**;Jun 20, 1997;Build 3
|
---|
3 | GETCLASS ; Get Drug Class, filter out supplies BP/ELR
|
---|
4 | I +DRUGIDX D
|
---|
5 | .N TEMPNODE
|
---|
6 | .S DRUGCLAS=$$DRGCLASS^TIULMED2(DRUGIDX)
|
---|
7 | .S TEMPNODE=U_DRUGCLAS_U_$$DEA^TIULMED2(DRUGIDX)
|
---|
8 | .I 'SUPPLIES,($E(DRUGCLAS,1,2)="XA") D
|
---|
9 | ..S KEEPMED='($P(TEMPNODE,U,3)["S")
|
---|
10 | Q
|
---|
11 | ;
|
---|
12 | PATCHSOK() ; Function Checks for Pharmacy Package and required patches
|
---|
13 | ;Returns 1 if ok, 0 if not
|
---|
14 | N CHECKOK S CHECKOK=1
|
---|
15 | I '$L($T(OCL^PSOORRL)) D S CHECKOK=0 G CKX
|
---|
16 | . D ADD^TIULMED1("Outpatient Pharmacy 7.0 Required for this Object.")
|
---|
17 | . D ADD^TIULMED1(" ")
|
---|
18 | I '$$PATCH^XPDUTL("PSO*7.0*20") D S CHECKOK=0 G CKX
|
---|
19 | . D ADD^TIULMED1("Outpatient Pharmacy Patch PSO*7.0*20 is required for this Object.")
|
---|
20 | . D ADD^TIULMED1(" ")
|
---|
21 | I '$$PATCH^XPDUTL("PSJ*5.0*22") D S CHECKOK=0 G CKX
|
---|
22 | . D ADD^TIULMED1("Inpatient Pharmacy Patch PSJ*5.0*22 is required for this Object.")
|
---|
23 | . D ADD^TIULMED1(" ")
|
---|
24 | CKX Q CHECKOK
|
---|
25 | ;
|
---|
26 | SORTSAVE ;Sort & save Meds Data in TARGET
|
---|
27 | ; *** Check for empty condition ***
|
---|
28 | ;
|
---|
29 | I EMPTY D G SORTX
|
---|
30 | .D ADD^TIULMED1("No Medications Found")
|
---|
31 | .D ADD^TIULMED1(" ")
|
---|
32 | ;
|
---|
33 | ; *** Sort Meds in "C" temp xref - sort by Med Type, Status
|
---|
34 | ; Med Name, and reverse issue date, followed by a counter
|
---|
35 | ; to avoid erasing meds issued on the same day
|
---|
36 | ;
|
---|
37 | N MED,CNT,XSTR,TIUXSTAT
|
---|
38 | N DATA,NODE
|
---|
39 | S MED="",CNT=1000000
|
---|
40 | F S MED=$O(@TARGET@("B",MED)) Q:MED="" D
|
---|
41 | .S (XSTR,TIUXSTAT)=""
|
---|
42 | .F S XSTR=$O(@TARGET@("B",MED,XSTR)) Q:XSTR="" D
|
---|
43 | .. F S TIUXSTAT=$O(@TARGET@("B",MED,XSTR,TIUXSTAT)) Q:TIUXSTAT="" D
|
---|
44 | ...S NODE=@TARGET@("B",MED,XSTR,TIUXSTAT)
|
---|
45 | ...S DATA=$P(NODE,U,3)_U_$P(NODE,U,5)_U_MED,CNT=CNT+1
|
---|
46 | ...S @TARGET@("C",DATA,(9999999-$P(NODE,U))_CNT)=$P(NODE,U,2)_U_$P(NODE,U,4)
|
---|
47 | ;
|
---|
48 | ; Read sorted data and save final version to TARGET
|
---|
49 | ;
|
---|
50 | N LASTCLAS,LASTMEDT,LASTSTS,COUNT,TOTAL
|
---|
51 | N INDEX,MEDTYPE,STATIDX,DRUGCLAS,TYPE
|
---|
52 | N NODE,LASTMEDT,LASTSTS,TEMP,OLDTAB,OLDHEADR
|
---|
53 | S (DATA,LASTCLAS)="",(LASTMEDT,LASTSTS,COUNT,TOTAL)=0
|
---|
54 | D WARNING^TIULMED1
|
---|
55 | F S DATA=$O(@TARGET@("C",DATA)) Q:DATA="" D
|
---|
56 | .S MEDTYPE=$E(DATA),STATIDX=$E(DATA,2)
|
---|
57 | .S DRUGCLAS=$P(DATA,U,2),MED=$P(DATA,U,3),CNT=""
|
---|
58 | .F S CNT=$O(@TARGET@("C",DATA,CNT)) Q:CNT="" D
|
---|
59 | ..S INDEX=@TARGET@("C",DATA,CNT)
|
---|
60 | ..S TYPE=$P(INDEX,U,2),INDEX=+INDEX
|
---|
61 | ..S NODE=^TMP("PS",$J,INDEX,0)
|
---|
62 | ..I $P($P(NODE,U),";")["N" S $P(NODE,U,2)="Non-VA "_$P(NODE,U,2)
|
---|
63 | ..I (MEDTYPE'=LASTMEDT)!(STATIDX'=LASTSTS) D ; Create Header
|
---|
64 | ...I CLASSORT'=2,DRUGCLAS'=" " S LASTCLAS=DRUGCLAS
|
---|
65 | ...I 'HEADER Q
|
---|
66 | ...S LASTMEDT=MEDTYPE,LASTSTS=STATIDX,TAB=0
|
---|
67 | ...I COUNT>0 D ADD^TIULMED1(" ")
|
---|
68 | ...I CLASSORT D ADD^TIULMED1(" ")
|
---|
69 | ...S COUNT=0
|
---|
70 | ...I DETAILED D
|
---|
71 | ....I MEDTYPE=OUTPTYPE D I 1
|
---|
72 | .....D ADD^TIULMED1(SPACE60_"Issue Date")
|
---|
73 | .....D ADD^TIULMED1($E($E(SPACE60,1,47)_"Status"_SPACE60,1,60)_"Last Fill")
|
---|
74 | ....E D ADD^TIULMED1(SPACE60_"Start Date")
|
---|
75 | ...I 'ONELIST D
|
---|
76 | ....S TEMP=$S(STATIDX=1:"Active",STATIDX=2:"Pending",1:"Inactive")_" "
|
---|
77 | ...E S TEMP=""
|
---|
78 | ...S TEMP=TEMP_$S(MEDTYPE=INPTYPE:"Inpatient",MEDTYPE=NVATYPE:"Non-VA",1:"Outpatient")
|
---|
79 | ...S TEMP=" "_TEMP_" Medications"
|
---|
80 | ...I CLASSORT D
|
---|
81 | ....I DETAILED S TEMP=TEMP_" (By Class)"
|
---|
82 | ....E S TEMP=TEMP_" (By Drug Class)"
|
---|
83 | ...I DETAILED D I 1
|
---|
84 | ....S TEMP=$E(TEMP_SPACE60,1,47)
|
---|
85 | ....I MEDTYPE=INPTYPE S TEMP=TEMP_"Status"
|
---|
86 | ....E S TEMP=TEMP_"Refills"
|
---|
87 | ....S TEMP=$E(TEMP_SPACE60,1,60)
|
---|
88 | ....I MEDTYPE=INPTYPE S TEMP=TEMP_"Stop Date"
|
---|
89 | ....E S TEMP=TEMP_"Expiration"
|
---|
90 | ...E D
|
---|
91 | ....S TEMP=$E(TEMP_SPACE60,1,60)_"Status"
|
---|
92 | ...D ADD^TIULMED1(TEMP),ADD^TIULMED1(DASH73)
|
---|
93 | ..I CLASSORT,DRUGCLAS'="",DRUGCLAS'=LASTCLAS D
|
---|
94 | ...S LASTCLAS=DRUGCLAS,OLDTAB=TAB,OLDHEADR=HEADER
|
---|
95 | ...S (TAB,HEADER)=0
|
---|
96 | ...I COUNT>0 D ADD^TIULMED1(" ")
|
---|
97 | ...I (CLASSORT=2)!(DRUGCLAS=" ") D I 1
|
---|
98 | ....I DRUGCLAS=" " S TEMP=" ====== Drug Class Unknown "
|
---|
99 | ....E S TEMP=" ====== Drug Class: "_DRUGCLAS_" "
|
---|
100 | ...E S TEMP=" "
|
---|
101 | ...S TEMP=$E(TEMP_DASH73,1,LLEN-2)
|
---|
102 | ...D ADD^TIULMED1(TEMP)
|
---|
103 | ...S HEADER=OLDHEADR,TAB=OLDTAB
|
---|
104 | ..S COUNT=COUNT+1,TOTAL=TOTAL+1
|
---|
105 | ..D ADDMED^TIULMED1(0)
|
---|
106 | I COUNT'=TOTAL D
|
---|
107 | .S TAB=0
|
---|
108 | .D ADD^TIULMED1(" ")
|
---|
109 | .D ADD^TIULMED1(TOTAL_" Total Medications")
|
---|
110 | SORTX ;
|
---|
111 | Q
|
---|
112 | ;
|
---|