1 | RCCPCSV1 ;WASH-ISC@ALTOONA,PA/LDB-Receive and Process CCPC messages ;1/6/97 2:54 PM
|
---|
2 | ;;4.5;Accounts Receivable;**34,70,76,130,153**;Mar 20, 1995
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | IS ;INVALID STATEMENT
|
---|
6 | D CHKTRAN(LABEL)
|
---|
7 | S ERR="The following statements did not print due to errors:" D ERRMSG
|
---|
8 | S ERR=" " D ERRMSG
|
---|
9 | S ERR=" KEY ERROR" D ERRMSG S ERR=" " D ERRMSG
|
---|
10 | D ID
|
---|
11 | S ERR="If these errors are corrected, these statements will not print until" D ERRMSG S ERR="the next billing cycle." D ERRMSG
|
---|
12 | Q
|
---|
13 | ;
|
---|
14 | ID ;INVALID STATEMENT DETAIL ERROR
|
---|
15 | F S RCMSG=$O(^TMP($J,"MSG",RCMSG)) Q:'RCMSG D
|
---|
16 | .I $P(^TMP($J,"MSG",RCMSG),"^")'="ID" S ERR="ERROR IN READING CCPC ERROR RECORD" D ERRMSG Q
|
---|
17 | .S KEY=$P(^TMP($J,"MSG",RCMSG),"^",2),KEY=$TR(KEY," ",""),KEY=$E(KEY,$F(KEY,$$SITE^RCMSITE),999)
|
---|
18 | .I KEY']"" D KEYERR Q
|
---|
19 | .S DEB=$O(^RCPS(349.2,"AKEY",KEY,0)) I 'DEB D KEYERR Q
|
---|
20 | .S ERROR=$P(^TMP($J,"MSG",RCMSG),"^",3),^RCPS(349.2,+DEB,5)=ERROR
|
---|
21 | .F RCX=1:5:21 S RCX1=RCX+4 S ERR(0)=$E(ERROR,RCX,RCX1) Q:ERR(0)="" D
|
---|
22 | ..S ERR(1)=$O(^RCPSE(349.7,"B",ERR(0),""))
|
---|
23 | ..I 'ERR(1) S ERR="NO ERROR DESCRIPTION FOR ERROR CODE: "_ERR(0)
|
---|
24 | ..I ERR(1) S ERR=$P(^RCPSE(349.7,+ERR(1),0),"^",4)
|
---|
25 | ..S ERR=KEY_" "_ERR(0)_" "_ERR
|
---|
26 | ..D ERRMSG
|
---|
27 | ..S ERR=" " D ERRMSG
|
---|
28 | .S ^RCPS(349.2,+DEB,5)=$P(^TMP($J,"MSG",RCMSG),"^",3)
|
---|
29 | .S ^RCPS(349.2,"AD","E",+DEB)=""
|
---|
30 | Q
|
---|
31 | ;
|
---|
32 | ;
|
---|
33 | KEYERR ;SEND MESSAGE TO MAIL GROUP INDICATING NO KEY
|
---|
34 | S ERR="CCPC ERROR MESSAGE - NO AR KEY ID FOR CCPC KEY: "_KEY D ERRMSG
|
---|
35 | S ERR="This patient record is corrupted. Please contact IRM." D ERRMSG
|
---|
36 | S ERR=" " D ERRMSG
|
---|
37 | Q
|
---|
38 | ;
|
---|
39 | PA ;STATEMENT ACKNOWLEDGEMENT
|
---|
40 | N STDT,SSTDT
|
---|
41 | Q:$P(RCTR,"^")'="PA"
|
---|
42 | D CHKTRAN(LABEL)
|
---|
43 | S SDAT=$P(RCTR,"^",7) S SDAT=$E(SDAT,1,2)_"/"_$E(SDAT,3,4)_"/"_$E(SDAT,5,8) S X=SDAT D ^%DT S SDAT=Y
|
---|
44 | S STOT=+$P(RCTR,"^",6)
|
---|
45 | S SEQ=+$P(RCTR,"^",3)
|
---|
46 | F S RCMSG=$O(^TMP($J,"MSG",RCMSG)) Q:'RCMSG D
|
---|
47 | .S RCTR=^TMP($J,"MSG",RCMSG)
|
---|
48 | .Q:$P(RCTR,"^")'="AD"
|
---|
49 | .S KEY=$P(RCTR,"^",2),KEY=$TR(KEY," ",""),KEY=$E(KEY,$F(KEY,$$SITE^RCMSITE),999)
|
---|
50 | .I KEY']"" D KEYERR Q
|
---|
51 | .S DEB=$O(^RCPS(349.2,"AKEY",KEY,0))
|
---|
52 | .I 'DEB D KEYERR Q
|
---|
53 | .S END=$P(^RCPS(349.2,+DEB,0),"^",10)
|
---|
54 | .S:'END END=$O(^RCPS(349.2,0)),END=$P($G(^(+END,0)),"^",10)
|
---|
55 | .F P=13:1:17 S SBAL(P)=$P(^RCPS(349.2,+DEB,0),"^",P)
|
---|
56 | .;update patient statement date in 341 to end process time
|
---|
57 | .D OPEN^RCEVDRV1(2,$P(^RCD(340,DEB,0),U),END,DUZ,$$SITE^RCMSITE,.ERR,.EVN,SBAL(13)_U_SBAL(14)_U_SBAL(15)_U_SBAL(16)_U_SBAL(17))
|
---|
58 | .I EVN S DR=".07////"_END_";.11////"_1,DA=+EVN,DIE="^RC(341," D ^DIE K DIE,DR,DA
|
---|
59 | .I EVN S $P(^RC(341,+EVN,6),"^")=$G(SDAT)
|
---|
60 | .;update bill file 430 letter fields
|
---|
61 | .NEW BN,DA,DIC,DIE,DR,II,LET,NOT,X,Y
|
---|
62 | .S DIE="^PRCA(430,",NOT=0,BN=0
|
---|
63 | .F S BN=$O(^PRCA(430,"AS",DEB,16,BN)) Q:'BN S DA=BN D
|
---|
64 | ..S LET=$G(^PRCA(430,BN,6))
|
---|
65 | ..I $P(LET,"^",21)>END Q
|
---|
66 | ..S END=$G(SDAT)
|
---|
67 | ..F II=1:1:4 Q:$P(LET,U,II)=END I $P(LET,U,II)="" S DR=$S(II=1:61,II=2:62,II=3:63,1:68)_"////^S X="_END_";68.1////^S X="_END D ^DIE Q
|
---|
68 | .S ^RCPS(349.2,+DEB,6)=1
|
---|
69 | PAMAIL S XMSUB="Patient Acknowledgments received from CCPC."
|
---|
70 | S XMY("G.RCCPC STATEMENTS")="",XMDUZ="AR PACKAGE",XMTEXT="MSG("
|
---|
71 | S MSG(1)="Patient acknowledgment message "_$G(XMZ)_" received."
|
---|
72 | S MSG(2)="This means that CCPC has printed patient statements for this statement period."
|
---|
73 | D ^XMD
|
---|
74 | Q
|
---|
75 | ;CODE BELOW NO LONGER NEEDED SINCE INTEREST/ADMIN UPDATE NOW DONE
|
---|
76 | ;WHEN STATEMENTS ARE GENERATED.
|
---|
77 | N ZTDESC,ZTDTH,ZTRTN,ZTSAVE
|
---|
78 | S DATE=$G(SDAT) Q:'DATE
|
---|
79 | S ZTDTH=$S(DT'>SDAT:$$FMADD^XLFDT(SDAT,1),1:$$FMADD^XLFDT(DT,1))_".02"
|
---|
80 | S ZTIO="",ZTRTN="FIRSTPTY^RCBECHGS",ZTDESC="Accrue interest/admin charges"
|
---|
81 | S ZTSAVE("RCUPDATE")=DATE
|
---|
82 | D ^%ZTLOAD
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | CHKTRAN(LABEL) ;Check for incomplete message from CCPC
|
---|
86 | Q:$G(LABEL)']""
|
---|
87 | S LABEL(1)=+$O(^RCT(349.1,"B",LABEL,0))
|
---|
88 | I LABEL(1) S:$P(^TMP($J,"MSG",RCMSG),"^",2)=$P(^TMP($J,"MSG",RCMSG),"^",3) $P(^RCT(349.1,+LABEL(1),4),"^",1,2)=$P(^TMP($J,"MSG",RCMSG),"^",2,3),$P(^RCT(349.1,+LABEL(1),4),"^",3)=$G(XMZ)
|
---|
89 | Q
|
---|
90 | ;
|
---|
91 | TRANCHK ;Check for complete ACK transmission
|
---|
92 | N MSG,RCT,SEG,SEQ,X
|
---|
93 | F RCT=3,4 I $P($G(^RCT(349.1,+RCT,4)),"^")'=$P($G(^RCT(349.1,+RCT,4)),"^",2) D
|
---|
94 | .S XMDUZ="AR PACKAGE"
|
---|
95 | .S XMSUB="CCPC ACKNOWLEDGMENT TRANSMISSION(S) INCOMPLETE"
|
---|
96 | .I $O(^XMB(3.8,"B","RCCPC STATEMENTS",0)) S XMY("G.RCCPC STATEMENTS")="" E S XMY(.5)=""
|
---|
97 | .S XMTEXT="MSG("
|
---|
98 | .S SEG=$S(RCT=3:"IS",1:"PA")
|
---|
99 | .S SEG(1)=$P(^RCT(349.1,+RCT,4),"^",2)
|
---|
100 | .S MSG(2)="The last "_SEG_" segment message received from CCPC was numbered "_SEG(1)_"."
|
---|
101 | .S MSG(3)="This was not labeled the final message in that segment type transmission."
|
---|
102 | .S MSG(4)="This may cause patient statement information to be missing."
|
---|
103 | .S MSG(5)="The last message number received was "_$P($G(^RCT(349.1,RCT,4)),"^",3)
|
---|
104 | .S MSG(6)="Please contact the CCPC in Austin."
|
---|
105 | .D ^XMD
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | ;
|
---|
109 | IT ;INVALID TRANSMISSION
|
---|
110 | S ERR="The CCPC patient statement messages were not accepted by CCPC" D ERRMSG
|
---|
111 | S ERR="due to the following error(s):" D ERRMSG
|
---|
112 | S ERR=" " D ERRMSG
|
---|
113 | S RCMSG=1 F S RCMSG=$O(^TMP($J,"MSG",RCMSG)) Q:'RCMSG D
|
---|
114 | .S MSG=^TMP($J,"MSG",RCMSG)
|
---|
115 | .S MSG=$P(MSG,"^",8)
|
---|
116 | .F RCX=1:5:21 S RCX1=RCX+4 S ERROR=$E(MSG,RCX,RCX1) Q:ERROR="" D
|
---|
117 | ..S ERR(1)=$O(^RCPSE(349.7,"B",ERROR,""))
|
---|
118 | ..I 'ERR(1) S ERR="NO ERROR DESCRIPTION FOR ERROR CODE: "_ERROR
|
---|
119 | ..I ERR(1) S ERR=$P(^RCPSE(349.7,+ERR(1),0),"^",4),ERR=ERROR_" "_ERR
|
---|
120 | ..I ERR(1) S:$P(^RCPSE(349.7,+ERR(1),0),"^",3)="R" RE=1
|
---|
121 | ..D ERRMSG
|
---|
122 | S ERR=" " D ERRMSG
|
---|
123 | S ERR="Please contact IRM."
|
---|
124 | D ERRMSG
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | ERRMSG ;ERROR MESSAGE
|
---|
128 | S LN=LN+1,^TMP($J,"ERR",LN)=ERR
|
---|
129 | Q
|
---|