| [613] | 1 | PRPFPUR1 ;CTB/ALTOONA  PURGE ONE PATIENT FUNDS RECORD ;7/15/97  9:55 AM
 | 
|---|
 | 2 | V ;;3.0;PATIENT FUNDS;**6,7**;JUNE 1, 1989
 | 
|---|
 | 3 | ONE(X) ;
 | 
|---|
 | 4 |  ;PURGE PATIENT FUNDS MASTER TRANSACTION FILE AND PATIENT TRANSACTION
 | 
|---|
 | 5 |  ;  MULTIPLE FOR ONE PATIENT THRU AND INCLUDING EDATE.
 | 
|---|
 | 6 |  ;DFN=INTERNAL REFERENCE FOR PATIENT
 | 
|---|
 | 7 |  ;EDATE=INTERNAL FM DATE, ALL TRANSACTIONS THRU AND INCLUDING THIS
 | 
|---|
 | 8 |  ;  DATE WILL BE SUMMARIZED AND DELETED.
 | 
|---|
 | 9 |  ;K ^TMP(UCIJOB,"PRPFPURGE",DFN)
 | 
|---|
 | 10 |  N DATE,ERROR,PBAL,GBAL,TRDA,TRNODE,MADA,MANODE,BAL,REC,MREC,MRECID,UCIJOB,DFN,EDATE
 | 
|---|
 | 11 |  S DFN=$P(X,",",1),EDATE=$P(X,",",2)
 | 
|---|
 | 12 |  X ^%ZOSF("UCI") S UCIJOB=Y_","_$J
 | 
|---|
 | 13 |  S (DATE,ERROR,PBAL,GBAL,BAL)=0
 | 
|---|
 | 14 |  F  S DATE=$O(^PRPF(470,DFN,3,"AC",DATE)) Q:DATE=""!(DATE>EDATE)!(ERROR)  D
 | 
|---|
 | 15 |  . S (TRDA,ERROR)=0
 | 
|---|
 | 16 |  . F  S TRDA=$O(^PRPF(470,DFN,3,"AC",DATE,TRDA)) Q:TRDA=""  D  Q:ERROR
 | 
|---|
 | 17 |  . . S ERROR=$$VERIFY(DFN,TRDA,DATE) Q:ERROR
 | 
|---|
 | 18 |  . . S ^TMP(UCIJOB,"PRPFPURGE",DFN,TRDA)=""
 | 
|---|
 | 19 |  . . QUIT
 | 
|---|
 | 20 |  . QUIT
 | 
|---|
 | 21 |  I ERROR S X="ERROR FOUND IN PROCESSING PURGE FOR "_$P(^DPT(DFN,0),"^",1)_".   <No Purge has occurred for this patient>" D MSG^PRPFU1 Q
 | 
|---|
 | 22 |  S TRDA=0,REC=0
 | 
|---|
 | 23 |  F  S TRDA=$O(^TMP(UCIJOB,"PRPFPURGE",DFN,TRDA)) Q:'TRDA  D
 | 
|---|
 | 24 |  . N TRNODE,TPAMT,TGAMT,TAMT,MADA,MID
 | 
|---|
 | 25 |  . S TRNODE=^PRPF(470,DFN,3,TRDA,0)
 | 
|---|
 | 26 |  . S TPAMT=$P(TRNODE,"^",4),TGAMT=$P(TRNODE,"^",5),TAMT=$P(TRNODE,"^",3),MADA=$P(TRNODE,"^",1),MID=$P(^PRPF(470.1,MADA,0),"^")
 | 
|---|
 | 27 |  . S PBAL=PBAL+TPAMT,GBAL=GBAL+TGAMT,BAL=BAL+TAMT
 | 
|---|
 | 28 |  . S REC=TRDA,MREC=MADA,MRECID=MID
 | 
|---|
 | 29 |  . D  ;DELETE MASTER TRANSACTION
 | 
|---|
 | 30 |  . . N NODE
 | 
|---|
 | 31 |  . . S NODE=$G(^PRPF(470.1,MADA,0)) Q:NODE=""
 | 
|---|
 | 32 |  . . I $P(NODE,"^",1)]"" K ^PRPF(470.1,"B",$P(NODE,"^",1),MADA)
 | 
|---|
 | 33 |  . . I $P(NODE,"^",5)]"" K ^PRPF(470.1,"AD",$P(NODE,"^",4),MADA)
 | 
|---|
 | 34 |  . . I $P(NODE,"^",6)]"" K ^PRPF(470.1,"AC",$P(NODE,"^",6),MADA)
 | 
|---|
 | 35 |  . . L +^PRPF(470.1,0):10 I $T S $P(^(0),"^",4)=$P(^PRPF(470.1,0),"^",4)-1 L -^PRPF(470.1,0)
 | 
|---|
 | 36 |  . . K ^PRPF(470.1,MADA)
 | 
|---|
 | 37 |  . . QUIT  ;DELETE MASTER TRANSACTION
 | 
|---|
 | 38 |  . D  ;DELETE PATIENT TRANSACTION
 | 
|---|
 | 39 |  . . N NODE
 | 
|---|
 | 40 |  . . S NODE=$G(^PRPF(470,DFN,3,TRDA,0)) Q:NODE=""
 | 
|---|
 | 41 |  . . I $P(NODE,"^",1)]"" K ^PRPF(470,DFN,3,"B",$P(NODE,"^",1),TRDA)
 | 
|---|
 | 42 |  . . I $P(NODE,"^",2)]"" K ^PRPF(470,DFN,3,"AC",$P(NODE,"^",2),TRDA)
 | 
|---|
 | 43 |  . . L +^PRPF(470,DFN,3,0):10 I $T S $P(^(0),"^",4)=$P(^PRPF(470,DFN,3,0),"^",4)-1 L -^PRPF(470,DFN,3,0)
 | 
|---|
 | 44 |  . . K ^PRPF(470,DFN,3,TRDA)
 | 
|---|
 | 45 |  . . QUIT  ;DELETE PATIENT TRANSACTION
 | 
|---|
 | 46 |  . QUIT
 | 
|---|
 | 47 |  ;ENTER BALANCE CARRIED FORWARD TRANSACTION
 | 
|---|
 | 48 |  Q:REC=0
 | 
|---|
 | 49 |  L +^PRPF
 | 
|---|
 | 50 |  S $P(^PRPF(470.1,0),"^",4)=$P(^PRPF(470.1,0),"^",4)+1
 | 
|---|
 | 51 |  S $P(^PRPF(470,DFN,3,0),"^",4)=$P(^PRPF(470,DFN,3,0),"^",4)+1
 | 
|---|
 | 52 |  S ^PRPF(470,DFN,3,REC,0)=MREC_"^"_EDATE_"^"_BAL_"^"_PBAL_"^"_GBAL_"^",^PRPF(470,DFN,3,"B",MREC,REC)="",^PRPF(470,DFN,3,"AC",EDATE,REC)=""
 | 
|---|
 | 53 |  S X=$O(^PRPF(470.2,"B","BALCARFWD",0))
 | 
|---|
 | 54 |  S MREC(0)=MRECID_"^"_DFN_"^"_REC_"^"_BAL_"^"_EDATE_"^"_EDATE_"^BALCARFWD^D^3^B^"_X_"^"_PBAL_"^"_GBAL_"^"_DUZ_"^^Balance Carried Forward - Purge"
 | 
|---|
 | 55 |  S MREC(1)=$P(^VA(200,DUZ,0),"^")
 | 
|---|
 | 56 |  S STRING=$$SUM^PRPFSIG(MREC_"^"_$P(MREC(0),"^",4,6))
 | 
|---|
 | 57 |  S $P(MREC(0),"^",15)=$$ENCODE^PRPFSIG(MREC(1),DUZ,STRING)
 | 
|---|
 | 58 |  S ^PRPF(470.1,MREC,0)=MREC(0),^(1)=MREC(1)
 | 
|---|
 | 59 |  S ^PRPF(470.1,"B",MRECID,MREC)="",^PRPF(470.1,"AD",EDATE,MREC)="",^PRPF(470.1,"AC",EDATE,MREC)=""
 | 
|---|
 | 60 |  L -^PRPF
 | 
|---|
 | 61 |  K ^TMP(UCIJOB,"PRPFPURGE")
 | 
|---|
 | 62 |  QUIT
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 | VERIFY(DFN,TRDA,DATE) ;VERIFY INTEGRITY OF INDIVIDUAL PATIENT TRANSACTION
 | 
|---|
 | 65 |  ;   AND ASSOCIATED MASTER TRANSACTION.
 | 
|---|
 | 66 |  N TRNODE,ERROR,TDATE,MDATE,MAMT,MPAMT,MGAMT,TGAMT,TAMT,TPAMT,TBAL,MADA,MNODE
 | 
|---|
 | 67 |  S TRNODE=$G(^PRPF(470,DFN,3,TRDA,0)) I TRNODE="" S ERROR=1 D ERROR Q
 | 
|---|
 | 68 |  S TDATE=$P(TRNODE,"^",2),TAMT=$P(TRNODE,"^",3),TPAMT=$P(TRNODE,"^",4),TGAMT=$P(TRNODE,"^",5),TBAL=$P(TRNODE,"^",6),MADA=+TRNODE
 | 
|---|
 | 69 |  S MNODE=$G(^PRPF(470.1,+MADA,0)) I MNODE="" S ERROR=3 D ERROR Q 1
 | 
|---|
 | 70 |  S MDATE=$P(MNODE,"^",5),MAMT=$P(MNODE,"^",4),MPAMT=$P(MNODE,"^",12),MGAMT=$P(MNODE,"^",13)
 | 
|---|
 | 71 |  I TDATE=""!(TDATE'=$P(DATE,".")) S ERROR=1 D ERROR Q 1
 | 
|---|
 | 72 |  I (+TAMT'=+MAMT)!(+TPAMT'=+MPAMT)!(+TGAMT'=+MGAMT) S ERROR=4 D ERROR Q 1
 | 
|---|
 | 73 |  I MDATE'=TDATE S ERROR=2 D ERROR Q 1
 | 
|---|
 | 74 |  Q 0
 | 
|---|
 | 75 | ERROR S X=$P($T(ERROR+ERROR),";",3,99)_" "_TRDA D MSG^PRPFU1 W ! Q
 | 
|---|
 | 76 |  ;;INVALID 'AC' CROSS REFERENCE IN FILE 470, FIELD 30
 | 
|---|
 | 77 |  ;;DATE IN TRANSACTION MULTIPLE OF 470 DOES NOT MATCH CROSS REFERENCE
 | 
|---|
 | 78 |  ;;PATIENT TRANSACTION MULTIPLE POINTS TO INVALID MASTER RECORD
 | 
|---|
 | 79 |  ;;BALANCES ARE OUT OF DATE BETWEEN MASTER TRANSACTION FILE AND PATIENT TRANSACTION MULTIPLE
 | 
|---|