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