1 | BPSOSU1 ;BHAM ISC/FCS/DRS/FLS/DLF - copied for ECME ;06/01/2004
|
---|
2 | ;;1.0;E CLAIMS MGMT ENGINE;**1**;JUN 2004
|
---|
3 | ;----------------------------------------------------------------------
|
---|
4 | ;----------------------------------------------------------------------
|
---|
5 | ;Standard Date Functions
|
---|
6 | ;----------------------------------------------------------------------
|
---|
7 | ;Standard Date PROMPT:
|
---|
8 | ;
|
---|
9 | ;Parameters:
|
---|
10 | ; PROMPT = Text to be displayed before read
|
---|
11 | ; DFLT = Default date (internal format)
|
---|
12 | ; OPT = 1 - Answer optional 0 - Answer required
|
---|
13 | ; SDATE = Minimum date (internal format or NOW and DT)
|
---|
14 | ; EDATE = Maximum date (internal format or NOW and DT)
|
---|
15 | ; %DT = E - Echo answer R - Require time
|
---|
16 | ; S - Seconds returned T - Time allowed but not req
|
---|
17 | ; X - Exact date req
|
---|
18 | ; TIMEOUT = Number of seconds
|
---|
19 | ;
|
---|
20 | ;Returns:
|
---|
21 | ; <null> = No response <^> - Up-arrow entered
|
---|
22 | ; <-1> = Timeout occurred <^^> - Two up-arrows entered
|
---|
23 | ; <date> = Internal FM Date
|
---|
24 | ;----------------------------------------------------------------------
|
---|
25 | ; IHS/SD/lwj 8/5/02 NCPDP 5.1 changes
|
---|
26 | ; Subroutine FM3EXT cloned from FM2EXT - routine used to transfer
|
---|
27 | ; the dates. Now that NCPDP 5.1 stores the field ID with all the
|
---|
28 | ; fields, we needed currently just want to skip transforming the
|
---|
29 | ; date for 5.1 type claims
|
---|
30 | ;
|
---|
31 | ;
|
---|
32 | ;----------------------------------------------------------------------
|
---|
33 | DATE(PROMPT,DFLT,OPT,SDATE,EDATE,%DT,TIMEOUT) ;EP -
|
---|
34 | ;
|
---|
35 | N XDATA,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
|
---|
36 | ;
|
---|
37 | Q:$G(PROMPT)="" ""
|
---|
38 | ;
|
---|
39 | S $P(DIR(0),"^",1)="DA"_$S(OPT=1:"O",1:"")
|
---|
40 | S $P(XDATA,":",1)=SDATE
|
---|
41 | S $P(XDATA,":",2)=EDATE
|
---|
42 | S $P(XDATA,":",3)=%DT
|
---|
43 | S $P(DIR(0),"^",2)=XDATA
|
---|
44 | S DIR("A")=PROMPT
|
---|
45 | S:$G(DFLT)'="" DIR("B")=$$FM2EXT(DFLT)
|
---|
46 | S:+$G(TIMEOUT)>0 DIR("T")=TIMEOUT
|
---|
47 | D ^DIR
|
---|
48 | Q $S($G(DTOUT)=1:-1,$G(DIROUT)=1:"^^",$G(DUOUT)=1:"^",1:Y)
|
---|
49 | ;----------------------------------------------------------------------
|
---|
50 | ;Convert FileMan Date to External Date Format
|
---|
51 | ;
|
---|
52 | ;Parameters: Y - FileMan formatted date (YYYMMDD.HHMMSS)
|
---|
53 | ;Returns: Y - External date
|
---|
54 | ;----------------------------------------------------------------------
|
---|
55 | FM2EXT(Y) ;EP
|
---|
56 | Q:$G(^DD("DD"))="" ""
|
---|
57 | X ^DD("DD")
|
---|
58 | Q $S($E(Y,1,3)?3A:Y,1:"")
|
---|
59 | ;----------------------------------------------------------------------
|
---|
60 | ;
|
---|
61 | FM3EXT(Y) ;EP IHS/SD/lwj 8/5/02 clone of FM2EXT- accommodates 5.1 type clms
|
---|
62 | Q:$E(Y,1,1)["C" Y
|
---|
63 | S Y=Y-17000000
|
---|
64 | Q:$G(^DD("DD"))="" ""
|
---|
65 | X ^DD("DD")
|
---|
66 | Q $S($E(Y,1,3)?3A:Y,1:"")
|
---|
67 | ;----------------------------------------------------------------------
|
---|
68 | ;
|
---|
69 | FM2MDY(Y) ;EP
|
---|
70 | Q:Y="" ""
|
---|
71 | Q $E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3)
|
---|
72 | ;----------------------------------------------------------------------
|
---|
73 | ;Convert External Date to FileMan Date Format
|
---|
74 | ;
|
---|
75 | ;Parameters: X - External date
|
---|
76 | ;Returns: Y - FileMan formatted date (YYYMMDD.HHMMSS)
|
---|
77 | ;----------------------------------------------------------------------
|
---|
78 | EXT2FM(X) ;
|
---|
79 | N %DT,Y
|
---|
80 | Q:$G(X)="" ""
|
---|
81 | D ^%DT
|
---|
82 | Q Y
|
---|
83 | ;----------------------------------------------------------------------
|
---|
84 | ;Returns current Date/Time in FileMan date format
|
---|
85 | NOWFM() ;EP
|
---|
86 | N %,%H,%I,X
|
---|
87 | D NOW^%DTC
|
---|
88 | Q %
|
---|
89 | NOWEXT() ;EP - External form of $$NOWFM
|
---|
90 | N Y S Y=$$NOWFM X ^DD("DD") Q Y
|
---|
91 | ;----------------------------------------------------------------------
|
---|
92 | ;Takes a FileMan date and adds or subtracts days
|
---|
93 | ;
|
---|
94 | ;Parameters: X1 - FileMan formatted date
|
---|
95 | ; X2 - Number of days (ECME = add, neg = subtract)
|
---|
96 | ;Returns: X - Resulting FileMan formatted date
|
---|
97 | ;----------------------------------------------------------------------
|
---|
98 | CDTFM(X1,X2) ;EP - BPSER*,BPSES02
|
---|
99 | N X,%H
|
---|
100 | Q:$G(X1)="" ""
|
---|
101 | Q:$G(X2)="" ""
|
---|
102 | D C^%DTC
|
---|
103 | Q X
|
---|
104 | ;----------------------------------------------------------------------
|
---|
105 | ;Takes a FileMan date and returns 3-digit julian date
|
---|
106 | JULDATE(DT) ;
|
---|
107 | N X,X1,X2,%H,%T,%Y
|
---|
108 | Q:'(DT?7N) ""
|
---|
109 | S X2=$E(DT,1,3)_"0101",X1=DT
|
---|
110 | D ^%DTC
|
---|
111 | S X=X+1
|
---|
112 | Q $TR($J(X,3)," ","0")
|
---|
113 | ;----------------------------------------------------------------------
|
---|
114 | ;
|
---|
115 | ;$$DTR(AA,AB,ADEF,BDEF,T) Input Beginning & Ending prompts, return
|
---|
116 | ; "Begin date^End date" or 0 if unsuccessful.
|
---|
117 | ;$$DTR() is okay - all args are optional
|
---|
118 | ;$$DTP(AA,DEF) Input a prompt, return a single date "Internal^External"
|
---|
119 | ;$$DTM(AA,DEF) Input a prompt, return month/year "Internal^External"
|
---|
120 | ;--------------------------------------------------------------------
|
---|
121 | ;
|
---|
122 | DTR(AA,AB,ADEF,BDEF,T) ;EP - GET THE DATE RANGE (beginning and ending dates)
|
---|
123 | ; IN:
|
---|
124 | ; AA = PROMPT for BEGINNING DATE
|
---|
125 | ; AB = PROMPT for ENDING DATE
|
---|
126 | ; ADEF = DEFAULT date for BEGINNING DATE
|
---|
127 | ; BDEF = DEFAULT date for ENDING DATE
|
---|
128 | ; T = whether TIME is allowed as entry, and if REQUIRED
|
---|
129 | ; (If T="T" then TIME is allowed; is REQ'd if T="R").
|
---|
130 | ; OUT:
|
---|
131 | ; Beginning Date^Ending Date in 7digit FileMan format
|
---|
132 | ; If user enters "^" then out=0
|
---|
133 | ;
|
---|
134 | NEW %DT,X,Y,U,PROMPT,DEFAULT,BEGDT,ENDDT
|
---|
135 | S U="^"
|
---|
136 | ;
|
---|
137 | DTR1 ; -- Get beginning date
|
---|
138 | S %DT="AE"_$G(T)
|
---|
139 | I $D(AA) S PROMPT=AA
|
---|
140 | E S PROMPT="Enter the Beginning Date"_$S($G(T)]"":" @ Time",1:"")_": "
|
---|
141 | S:$D(ADEF) DEFAULT=ADEF
|
---|
142 | S BEGDT=$$DATE^BPSOSU1(PROMPT,$G(DEFAULT),1,1000101,3991231,%DT,$G(DTIME))
|
---|
143 | I BEGDT<1 QUIT 0
|
---|
144 | ;
|
---|
145 | WRITE !
|
---|
146 | S %DT="AE"_$G(T)
|
---|
147 | I $D(AB) S PROMPT=AB
|
---|
148 | E S PROMPT="Enter the Ending Date"_$S($G(T)]"":" @ Time",1:"")_": "
|
---|
149 | S:$D(BDEF) DEFAULT=BDEF
|
---|
150 | S ENDDT=$$DATE^BPSOSU1(PROMPT,$G(DEFAULT),1,BEGDT,3991231,%DT,$G(DTIME))
|
---|
151 | I ENDDT["^" Q 0 ;user wants out if "^"
|
---|
152 | ; -- Ensure END date is not earlier than BEG date
|
---|
153 | I ENDDT<BEGDT WRITE $C(7),!!,"Ending date must not be less than beginning date!",!! HANG 2 GOTO DTR1
|
---|
154 | QUIT BEGDT_U_ENDDT
|
---|
155 | ;--------------------------------------------------------------------
|
---|
156 | ;
|
---|
157 | ;
|
---|
158 | DTP(AA,DEF) ;EP - *** GET A SINGLE PAST DATE, TIME NOT ALLOWED ***
|
---|
159 | ;
|
---|
160 | ; IN: AA = PROMPT you want displayed to user
|
---|
161 | ; DEF = DEFAULT date
|
---|
162 | ; OUT: FileMan Date^readable Date
|
---|
163 | ; If user enters "^" then OUT=0
|
---|
164 | ;
|
---|
165 | NEW %DT,Y,DATE
|
---|
166 | S:'$D(U) U="^"
|
---|
167 | I '$D(DT)#2 DO DT^DICRW ;get today's date
|
---|
168 | S U="^"
|
---|
169 | S %DT="AEPX" ;ask, echo, past dates assumed, exact date reqd
|
---|
170 | S %DT("A")=$S($D(AA):AA,1:"What DATE: ")
|
---|
171 | S:$D(DEF) %DT("B")=DEF
|
---|
172 | DO ^%DT KILL %DT
|
---|
173 | ; -- Q if no data
|
---|
174 | I Y<1 QUIT 0 ;quit if date was invalid
|
---|
175 | I $D(DTOUT) QUIT 0 ;quit if timeout occurred
|
---|
176 | ; -- Define dates
|
---|
177 | ; DATE("Y") is FM format date; DATE is MON DD,YEAR format.
|
---|
178 | S DATE("Y")=Y XECUTE ^DD("DD") S DATE=Y
|
---|
179 | QUIT DATE("Y")_U_DATE
|
---|
180 | ;--------------------------------------------------------------------
|
---|