1 | DGMTUTL ;ALB/CAW/BRM/LBD - Means Test generic utilities ; 8/12/02 4:33pm
|
---|
2 | ;;5.3;Registration;**3,31,166,182,454**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | FDATE(Y) ; -- return formatted date
|
---|
5 | ; input: Y := field name
|
---|
6 | ; output: [returned] := formatted date only
|
---|
7 | N DGY
|
---|
8 | S DGY=$$FMTE^XLFDT(Y,"5F"),DGY=$TR(DGY," ","0")
|
---|
9 | Q DGY
|
---|
10 | ;
|
---|
11 | FTIME(Y) ; -- return formatted date/time
|
---|
12 | ; input: Y := internal date/time
|
---|
13 | ; output: [returned] := formatted date and time
|
---|
14 | D DD^%DT
|
---|
15 | Q Y
|
---|
16 | ;
|
---|
17 | RANGE(WHEN) ; select date range
|
---|
18 | ; input: WHEN := past or future dates (optional)
|
---|
19 | ; output: DGBEG := begin date
|
---|
20 | ; DGEND := end date
|
---|
21 | ; return: was selection made [ 1|yes 0|no]
|
---|
22 | W !!,$$LINE("Date Range Selection")
|
---|
23 | DATE S DIR(0)="D^::EX",DIR("A")="Enter Beginning Date",DIR("?")="^D HELP^%DTC" D ^DIR K DIR G:$D(DIRUT) RANGEQ S DGBEG=Y
|
---|
24 | I $G(WHEN)="P",DGBEG>(DT_.9999) W !," Future dates are not allowed.",*7 K DGBEG G DATE
|
---|
25 | I $G(WHEN)="F",(DGBEG_.9999)<DT W !," Past dates are not allowed.",*7 K DGBEG G DATE
|
---|
26 | ;select ending date
|
---|
27 | S DIR(0)="D^::EX",DIR("A")="Enter Ending Date",DIR("?")="^D HELP^%DTC" D ^DIR K DIR G:$D(DIRUT) RANGEQ
|
---|
28 | S DGEND=Y
|
---|
29 | I $G(WHEN)="P",DGEND>(DT_.9999) W !," Future dates are not allowed.",*7 K DGEND G DATE
|
---|
30 | I $G(WHEN)="F",(DGEND_.9999)<DT W !," Past dates are not allowed.",*7 K DGEND G DATE
|
---|
31 | I DGEND<DGBEG W !!,"Beginning Date must be prior to Ending Date" K DGEND G DATE
|
---|
32 | RANGEQ Q $D(DGEND)
|
---|
33 | ;
|
---|
34 | DIV() ; -- get division data
|
---|
35 | ; input: none
|
---|
36 | ; output: VAUTD := divs selected (VAUTD=1 for all)
|
---|
37 | ; return: was selection made [ 1|yes 0|no]
|
---|
38 | ;
|
---|
39 | W:$P($G(^DG(43,1,"GL")),U,2) !!,$$LINE("Division Selection")
|
---|
40 | D ASK2 I Y<0 K VAUTD
|
---|
41 | Q $D(VAUTD)>0
|
---|
42 | ;
|
---|
43 | CLINIC() ; -- get clinic data
|
---|
44 | ; input: VAUTD := divisions selected
|
---|
45 | ; output: VAUTC := clinic selected (VAUTC=1 for all)
|
---|
46 | ; return: was selection made [ 1|yes 0|no]
|
---|
47 | ;
|
---|
48 | W !!,$$LINE("Clinic Selection")
|
---|
49 | S DIC("S")="I $S(VAUTD:1,$D(VAUTD(+$P(^SC(Y,0),U,15))):1,'+$P(^(0),U,15)&$D(VAUTD(+$O(^DG(40.8,0)))):1,1:0)"
|
---|
50 | S DIC="^SC(",VAUTSTR="clinic",VAUTVB="VAUTC",VAUTNI=2
|
---|
51 | D FIRST^VAUTOMA
|
---|
52 | I Y<0 K VAUTC
|
---|
53 | CLINICQ Q $D(VAUTC)>0
|
---|
54 | ;
|
---|
55 | ;
|
---|
56 | LINE(STR) ; -- print line
|
---|
57 | ; input: STR := text to insert
|
---|
58 | ; output: none
|
---|
59 | ; return: text to use
|
---|
60 | ;
|
---|
61 | N X
|
---|
62 | S:STR]"" STR=" "_STR_" "
|
---|
63 | S $P(X,"_",(IOM/2)-($L(STR)/2))=""
|
---|
64 | Q X_STR_X
|
---|
65 | ;
|
---|
66 | ASK2 S (VAUTD,Y)=0 I '$D(^DG(40.8,+$O(^DG(40.8,0)),0)) W !,*7,"***WARNING...MEDICAL CENTER DIVISION FILE IS NOT SET UP" G ASK2Q
|
---|
67 | I '$P($G(^DG(43,1,"GL")),U,2) S VAUTD=1 G ASK2Q
|
---|
68 | I $D(^DG(43,1,"GL")),$P(^("GL"),U,2) G DIVISION^VAUTOMA
|
---|
69 | S I=$O(^DG(40.8,0)) G:'$D(^DG(40.8,+I,0)) ASK2Q S VAUTD(I)=$P(^(0),U) K DIC Q
|
---|
70 | ASK2Q ;
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | CLOSE ; Utility to clean up tasked outputs
|
---|
74 | Q:'$D(ZTQUEUED)
|
---|
75 | D KILL^%ZTLOAD K ZTSK,ZTDESC,ZTRTN,ZTREQ,ZTSAVE,ZTIO,ZTDTH,ZTUCI,IO("Q"),IO("C")
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | XMY(GROUP,DGDUZ,DGPOST) ; -- set up XMY for mail group members
|
---|
79 | ; input: GROUP := mail group efn [required]
|
---|
80 | ; DGDUZ := send to current user [ 0|no ; 1|yes] [optional]
|
---|
81 | ; DGPOST := send to postmaster if XMY is undefined
|
---|
82 | ; [ 0|no ; 1|yes] [optional]
|
---|
83 | ; output: XMY := array of users
|
---|
84 | ; XMDUZ := message sender set postmaster
|
---|
85 | ;
|
---|
86 | N I K XMY
|
---|
87 | I '$D(DGDUZ) N DGDUZ S DGDUZ=1
|
---|
88 | I '$D(DGPOST) N DGPOST S SDPOST=1
|
---|
89 | S XMY("G."_$P($G(^XMB(3.8,GROUP,0)),U))=""
|
---|
90 | I DGDUZ,DUZ S XMY(DUZ)=""
|
---|
91 | ; makes sure it gets sent to someone
|
---|
92 | I '$D(XMY),DGPOST S XMY(.5)=""
|
---|
93 | ; make postmaster the sender so it will show up as new to DUZ
|
---|
94 | S XMDUZ=.5
|
---|
95 | Q
|
---|
96 | ;
|
---|
97 | ;
|
---|
98 | LOCK(DFN) ;
|
---|
99 | ; Description: Sets a lock used to synchronize local income test
|
---|
100 | ; options with the income test upload.
|
---|
101 | ;
|
---|
102 | ; Input:
|
---|
103 | ; DFN - ien of record in PATIENT file
|
---|
104 | ;
|
---|
105 | ; Output:
|
---|
106 | ; Function value - returns 1 if the lock was obtained, 0 otherwise.
|
---|
107 | ;
|
---|
108 | Q:'$G(DFN) 1
|
---|
109 | L +^DGMT("LOCAL INCOME TEST",DFN):5
|
---|
110 | Q $T
|
---|
111 | ;
|
---|
112 | ;
|
---|
113 | UNLOCK(DFN) ;
|
---|
114 | ; Description: Release the lock obtained by calling $$LOCK(DFN).
|
---|
115 | ;
|
---|
116 | ; Input:
|
---|
117 | ; DFN - ien of record in PATIENT file
|
---|
118 | ;
|
---|
119 | ; Output: none
|
---|
120 | ;
|
---|
121 | Q:'$G(DFN)
|
---|
122 | L -^DGMT("LOCAL INCOME TEST",DFN)
|
---|
123 | Q
|
---|
124 | ;
|
---|
125 | PA(DGMTI) ;Determine if the Pending Adjudication is for MT or GMT
|
---|
126 | ; Input:
|
---|
127 | ; DGMTI - IEN of Annual Means Test file #408.31
|
---|
128 | ; Output:
|
---|
129 | ; Returns "MT","GMT", or "" if it can't be determined
|
---|
130 | ;
|
---|
131 | N PA,DGMT0,MTTHR,GMTTHR
|
---|
132 | S PA=""
|
---|
133 | I '$G(DGMTI) Q PA
|
---|
134 | S DGMT0=$G(^DGMT(408.31,DGMTI,0))
|
---|
135 | ; If means test status is not Pending Adjudication, quit
|
---|
136 | I $P(DGMT0,U,3)'=2 Q PA
|
---|
137 | ; Get MT Threshold and GMT Threshold
|
---|
138 | S MTTHR=+$P(DGMT0,U,12) I 'MTTHR Q PA
|
---|
139 | S GMTTHR=+$P(DGMT0,U,27)
|
---|
140 | ; If GMT Threshold is greater than MT Threshold then return GMT,
|
---|
141 | ; otherwise return MT
|
---|
142 | S PA=$S(GMTTHR>MTTHR:"GMT",1:"MT")
|
---|
143 | Q PA
|
---|