1 | FBUTL ;WCIOFO/SAB-FEE BASIS UTILITY ;4/8/2004
|
---|
2 | ;;3.5;FEE BASIS;**16,78**;JAN 30, 1995
|
---|
3 | Q
|
---|
4 | ;
|
---|
5 | AUTH(FBDA,FBCUT) ; FEE Authorization extrinsic function
|
---|
6 | ; Determines if the patient has any FEE authorizations on file.
|
---|
7 | ; An optional date can be specified to determine if the patient has
|
---|
8 | ; any FEE authorizations in effect on or after the specified date.
|
---|
9 | ; input
|
---|
10 | ; FBDA - patient internal entry number (DFN)
|
---|
11 | ; of the PATIENT (#2) and FEE BASIS PATIENT (#161) file
|
---|
12 | ; FBCUT - (optional) cutoff date (fileman format)
|
---|
13 | ; Default: none
|
---|
14 | ; authorizations with a TO DATE prior to the
|
---|
15 | ; cutoff date (if specified) will not be considered.
|
---|
16 | ; returns a value of 1 or 0
|
---|
17 | ; will be true (1) if patient has one or more FEE authorizations
|
---|
18 | ;
|
---|
19 | N FBDA1,FBRET,FBY0
|
---|
20 | S FBCUT=$S($G(FBCUT)?7N:FBCUT,1:"")
|
---|
21 | S FBRET=0 ; assume no authorizations will meet criteria
|
---|
22 | ; reverse loop thru authorizations - stop when any one meets criteria
|
---|
23 | S FBDA1=" " F S FBDA1=$O(^FBAAA(FBDA,1,FBDA1),-1) Q:'FBDA1 D Q:FBRET
|
---|
24 | . Q:$P($G(^FBAAA(FBDA,1,FBDA1,"ADEL")),U)="Y" ; ignore Austin Deleted
|
---|
25 | . S FBY0=$G(^FBAAA(FBDA,1,FBDA1,0))
|
---|
26 | . I FBCUT]"",$P(FBY0,U,2)<FBCUT Q ; To Date before cutoff date
|
---|
27 | . Q:$P(FBY0,U,3)="" ; FEE Program required
|
---|
28 | . ; passed all checks
|
---|
29 | . S FBRET=1
|
---|
30 | ;
|
---|
31 | Q FBRET
|
---|
32 | ;
|
---|
33 | AUTHL(FBDFN,FBSN,FBDT,FBAR) ; authorization list for patient
|
---|
34 | ; Integration Agreement #4396
|
---|
35 | ; This API returns authorization data for a specified patient.
|
---|
36 | ; Authorizations that have been Austin Deleted will not be returned.
|
---|
37 | ;
|
---|
38 | ; input
|
---|
39 | ; FBDFN - patient DFN (File #2 internal entry number), required
|
---|
40 | ; FBSN - station number, optional
|
---|
41 | ; If specified, the station number will be used to select
|
---|
42 | ; authorizations from the national Fee Replacement system.
|
---|
43 | ; Only authorizations whose issuing station Starts With this
|
---|
44 | ; parameter value will be returned.
|
---|
45 | ; This parameter will not be evaluated until the API is
|
---|
46 | ; modified to obtain data from the fee replacement system.
|
---|
47 | ; FBDT - cutoff date, optional, VA FileMan internal format
|
---|
48 | ; If specified, only authorizations whose To Date is
|
---|
49 | ; equal to or after the cutoff date will be returned.
|
---|
50 | ; FBAR - name of output array, optional, default value "FBAUTH"
|
---|
51 | ; closed root, must not equal variables newed by this API
|
---|
52 | ; such as FBAR.
|
---|
53 | ; examples: "FBAUTH", "DGAUTH(12)", "^TMP($J)"
|
---|
54 | ; The array will be initialized by this API.
|
---|
55 | ; output
|
---|
56 | ; returns string value
|
---|
57 | ; = count of authorizations in array
|
---|
58 | ; OR
|
---|
59 | ; = -1^exception number^exception text
|
---|
60 | ;
|
---|
61 | ; If an exception did not occur, then the output array will contain
|
---|
62 | ; authorization data subscripted by sequential canonic
|
---|
63 | ; numbers and a header node subscripted by 0.
|
---|
64 | ; array(0) = count of authorizations in array
|
---|
65 | ; array(#,"FDT") = authorization # From Date (internal format)
|
---|
66 | ; array(#,"TDT") = authorization # To Date (internal format)
|
---|
67 | ; OR
|
---|
68 | ; Example if "FBAUTH" used as array name
|
---|
69 | ; FBAUTH(0)=2
|
---|
70 | ; FBAUTH(1,"FDT")=3011021
|
---|
71 | ; FBAUTH(1,"TDT")=3011030
|
---|
72 | ; FBAUTH(2,"FDT")=3000101
|
---|
73 | ; FBAUTH(2,"TDT")=3031231
|
---|
74 | ; Note that additional subscripts may be added in the future to
|
---|
75 | ; provide more authorization data. The calling application should
|
---|
76 | ; kill the entire output array so any added subscripts will be
|
---|
77 | ; cleaned-up (e.g. K FBAUTH).
|
---|
78 | ; List of exceptions
|
---|
79 | ; 101^Patient DFN not specified.
|
---|
80 | ; 104^ICN could not be determined for the specified patient.
|
---|
81 | ; 105^Array name conflicts with a variable in the API.
|
---|
82 | ; 110^Database Unavailable.
|
---|
83 | ; The database unavailable exception will not occur until this API
|
---|
84 | ; is modified to obtain data from the fee replacement system.
|
---|
85 | ; However, calling applications should code to handle this exception
|
---|
86 | ; now so appropriate action will be taken once the data is moved from
|
---|
87 | ; the local VistA system to the remote fee replacement system.
|
---|
88 | ;
|
---|
89 | N FBC,FBDA,FBICN,FBRET,FBY
|
---|
90 | ;
|
---|
91 | S FBAR=$G(FBAR,"FBAUTH")
|
---|
92 | S FBSN=$G(FBSN)
|
---|
93 | S FBDT=$G(FBDT)
|
---|
94 | S FBRET=""
|
---|
95 | ;
|
---|
96 | ; ensure input array name is not one of the newed variables.
|
---|
97 | ; If conflict, then array will not be changed by this API.
|
---|
98 | I "^FBDFN^FBAR^FBC^FBDA^FBDT^FBICN^FBRET^FBSN^FBY^"[(U_FBAR_U) S FBRET="-1^105^Array name conflicts with a variable in the API."
|
---|
99 | ;
|
---|
100 | ; initialize output array
|
---|
101 | I FBRET'<0 K @FBAR
|
---|
102 | ;
|
---|
103 | ; check for required input
|
---|
104 | I FBRET'<0,$G(FBDFN)="" S FBRET="-1^101^Patient DFN not specified."
|
---|
105 | ;
|
---|
106 | ; get patient ICN
|
---|
107 | I FBRET'<0 D
|
---|
108 | . I $$IFLOCAL^MPIF001(FBDFN) S FBRET="-1^104^ICN could not be determined for the specified patient." Q ; must not be local ICN
|
---|
109 | . S FBICN=$$GETICN^MPIF001(FBDFN) I FBICN<0 S FBRET="-1^104^ICN could not be determined for the specified patient." Q
|
---|
110 | ;
|
---|
111 | ; if optional date passed then check if valid value
|
---|
112 | I FBRET'<0,FBDT'="" D
|
---|
113 | . I FBDT'?7N S FBRET="-1^101^Valid date not specified." Q
|
---|
114 | . I $$FMTHL7^XLFDT(FBDT)<0 S FBRET="-1^101^Valid date not specified." Q
|
---|
115 | ;
|
---|
116 | ; get authorization data
|
---|
117 | I FBRET'<0 D
|
---|
118 | . S FBC=0 ; initialize count/subscript of authorizations in output array
|
---|
119 | . ; loop thru AUTHORIZATION multiple of file #161
|
---|
120 | . S FBDA=0 F S FBDA=$O(^FBAAA(FBDFN,1,FBDA)) Q:'FBDA D
|
---|
121 | . . Q:$P($G(^FBAAA(FBDFN,1,FBDA,"ADEL")),U)="Y" ; skip Austin Deleted
|
---|
122 | . . S FBY=$G(^FBAAA(FBDFN,1,FBDA,0))
|
---|
123 | . . I FBDT,$P(FBY,U,2)<FBDT Q ; skip if To Date before optional Cutoff
|
---|
124 | . . ; increment count and store authorization data in array
|
---|
125 | . . S FBC=FBC+1
|
---|
126 | . . S @FBAR@(FBC,"FDT")=$P(FBY,U)
|
---|
127 | . . S @FBAR@(FBC,"TDT")=$P(FBY,U,2)
|
---|
128 | . ;
|
---|
129 | . ; set return value and header node of output array
|
---|
130 | . S FBRET=FBC
|
---|
131 | . S @FBAR@(0)=FBC
|
---|
132 | ;
|
---|
133 | Q FBRET
|
---|
134 | ;
|
---|
135 | ;FBUTL
|
---|