| 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 | ;--------------------------------------------------------------------
|
---|