1 | VAQPUR11 ;ALB/JRP - PURGING;15JUL93
|
---|
2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
|
---|
3 | PRGCHK(POINTER,PRGDATE,SETPRGE) ;CHECK TO SEE IF TRANSACTION SHOULD BE PURGE
|
---|
4 | ;INPUT : POINTER - Pointer to transaction to check
|
---|
5 | ; PRGDATE - Date purging will be based on (FileMan format)
|
---|
6 | ; SETPRGE - Flag indicating if purge flag should be set
|
---|
7 | ; when required data is not present
|
---|
8 | ; If 0, don't set purge flag (default)
|
---|
9 | ; If 1, set purge flag
|
---|
10 | ;OUTPUT : 0 - Transaction does not require purging
|
---|
11 | ; 1 - Transaction does require purging
|
---|
12 | ; 2^0 - Required info for transaction was not present and
|
---|
13 | ; purge flag was not set
|
---|
14 | ; 2^1 - Required info for transaction was not present and
|
---|
15 | ; purge flag has been set
|
---|
16 | ; 2^-1 - Required info for transaction was not present and
|
---|
17 | ; purge flag could not be set
|
---|
18 | ; 3 - Transaction was already flaged for purging
|
---|
19 | ; -1 - Error determing if transaction should be purged
|
---|
20 | ;
|
---|
21 | ;CHECK INPUT
|
---|
22 | Q:('(+$G(POINTER))) -1
|
---|
23 | Q:('(+$G(PRGDATE))) -1
|
---|
24 | Q:('$D(^VAT(394.61,POINTER))) -1
|
---|
25 | S SETPRGE=+$G(SETPRGE)
|
---|
26 | ;DECLARE VARIABLES
|
---|
27 | N NUMBER,CURTYPE,RELTYPE,NAME,SSN,RQSTDATE
|
---|
28 | N ATHRDATE,SEGS,X1,X2,X,%Y,TMP,FLAG,RQSTOLD,ATHROLD
|
---|
29 | S FLAG=0
|
---|
30 | ;CHECK PURGE FLAG
|
---|
31 | Q:($D(^VAT(394.61,"PURGE",1,POINTER))) 3
|
---|
32 | ;GET REQUIRED INFORMATION
|
---|
33 | ;TRANSACTION NUMBER
|
---|
34 | S NUMBER=+$G(^VAT(394.61,POINTER,0))
|
---|
35 | ;CURRENT TYPE
|
---|
36 | S CURTYPE=""
|
---|
37 | S TMP=$$STATYPE^VAQCON1(POINTER,1)
|
---|
38 | S:($P(TMP,"^",1)'="-1") CURTYPE=$P(TMP,"^",2)
|
---|
39 | ;RELEASE TYPE
|
---|
40 | S RELTYPE=""
|
---|
41 | S TMP=$$STATYPE^VAQCON1(POINTER,0)
|
---|
42 | S:($P(TMP,"^",1)'="-1") RELTYPE=$P(TMP,"^",2)
|
---|
43 | ;PATIENT NAME & SSN
|
---|
44 | S TMP=$G(^VAT(394.61,POINTER,"QRY"))
|
---|
45 | S NAME=$P(TMP,"^",1)
|
---|
46 | S SSN=$P(TMP,"^",2)
|
---|
47 | ;REQUEST DATE
|
---|
48 | S RQSTDATE=+$P($G(^VAT(394.61,POINTER,"RQST1")),"^",1)
|
---|
49 | ;AUTHORIZE DATE
|
---|
50 | S ATHRDATE=+$P($G(^VAT(394.61,POINTER,"ATHR1")),"^",1)
|
---|
51 | ;SEGMENTS
|
---|
52 | S SEGS=+$O(^VAT(394.61,POINTER,"SEG",0))
|
---|
53 | ;CHECK REQUIRED INFO
|
---|
54 | S:('NUMBER) FLAG=1
|
---|
55 | S:((CURTYPE="")&(RELTYPE="")) FLAG=1
|
---|
56 | S:((NAME="")&(SSN="")) FLAG=1
|
---|
57 | S:(('ATHRDATE)&('RQSTDATE)) FLAG=1
|
---|
58 | I ('RQSTDATE) D
|
---|
59 | .S TMP="^REQ^ACK^RES^"
|
---|
60 | .S X="^"_CURTYPE_"^"
|
---|
61 | .S:(TMP[X) FLAG=1
|
---|
62 | I ('ATHRDATE) D
|
---|
63 | .S TMP="^UNS^RES^"
|
---|
64 | .S X="^"_CURTYPE_"^"
|
---|
65 | .S:(TMP[X) FLAG=1
|
---|
66 | S:('SEGS) FLAG=1
|
---|
67 | ;CHECK REQUEST & AUTHORIZE DATES AGAINST PURGE DATE
|
---|
68 | S X1=PRGDATE
|
---|
69 | S X2=RQSTDATE
|
---|
70 | D ^%DTC
|
---|
71 | S X=+$G(X)
|
---|
72 | S RQSTOLD=$S(((X=0)!(X>0)):1,1:0)
|
---|
73 | S X1=PRGDATE
|
---|
74 | S X2=ATHRDATE
|
---|
75 | D ^%DTC
|
---|
76 | S X=+$G(X)
|
---|
77 | S ATHROLD=$S(((X=0)!(X>0)):1,1:0)
|
---|
78 | ;CHECK FOR ERROR DURING MESSAGE RECEIPT (CONSIDERD REQUIRED INFO)
|
---|
79 | I (CURTYPE="REC") D
|
---|
80 | .;NO REQUEST DATE BUT AUTHORIZE DATE OLDER THAN PURGE DATE
|
---|
81 | .I (('RQSTDATE)&(ATHROLD)) S FLAG=1 Q
|
---|
82 | .;NO AUTHORIZE DATE BUT REQUEST DATE OLDER THAN PURGE DATE
|
---|
83 | .I (('ATHRDATE)&(RQSTOLD)) S FLAG=1 Q
|
---|
84 | ;REQUIRED INFORMATION WAS NOT ALL PRESENT
|
---|
85 | I (FLAG) D Q TMP
|
---|
86 | .;DON'T FLAG FOR PURGING
|
---|
87 | .I ('SETPRGE) S TMP="2^0" Q
|
---|
88 | .;FLAG FOR PURGING
|
---|
89 | .S TMP=+$$FILEINFO^VAQFILE(394.61,POINTER,90,"YES")
|
---|
90 | .S TMP="2^"_$S(('TMP):"1",1:"-1")
|
---|
91 | ;REQUEST & AUTHORIZE DATES BOTH OLDER THAN PURGE DATE
|
---|
92 | Q:((RQSTOLD)&(ATHROLD)) 1
|
---|
93 | ;DON'T PURGE
|
---|
94 | Q 0
|
---|