1 | RMPOPS23 ;HIN/RVD - HOME OXYGEN BILLING - POST TO 2319 ;5/18/99
|
---|
2 | ;;3.0;PROSTHETICS;**29,44,41,110**;Feb 09, 1996;Build 10
|
---|
3 | ;
|
---|
4 | ;This routine will only post records already been posted in IFCAP.
|
---|
5 | ;Patient records are sorted by fund control point (FCP), DFN and
|
---|
6 | ;then post to 2319.
|
---|
7 | Q
|
---|
8 | ;
|
---|
9 | POST ;main module to post billing transactions to 2319
|
---|
10 | D HOME^%ZIS S QUIT=0
|
---|
11 | D HOSITE^RMPOUTL0 Q:('$D(RMPOXITE))!QUIT
|
---|
12 | D MONTH^RMPOBIL0() Q:$D(RMPODATE)=0!QUIT
|
---|
13 | D VENDOR^RMPOBIL0() Q:$D(RMPOVDR)=0!QUIT
|
---|
14 | S FIL=665.72,SITE=RMPOXITE,RVDT=RMPODATE,VDR=RMPOVDR,QUIT=0
|
---|
15 | W !,"Processing..." D BUILD
|
---|
16 | I $O(^TMP($J,""))="" W !,"Everything posted okay!!" G EXIT
|
---|
17 | S FCP="" F S FCP=$O(^TMP($J,FCP)) Q:FCP="" F DFN=0:0 S DFN=$O(^TMP($J,FCP,DFN)) Q:DFN'>0 D F660
|
---|
18 | ;K DIR S DIR(0)="FO",DIR("A")="Press any Key to Continue" D ^DIR
|
---|
19 | ;
|
---|
20 | EXIT ;
|
---|
21 | K ^TMP($J)
|
---|
22 | ;K DFN,ITM,ITDT,ITNO,PATNAM,PATSSN,LNAM,PATFLG,ITSTR,FCP,LCK,ITOT
|
---|
23 | N RMPRSITE,RMPR D KILL^XUSCLEAN
|
---|
24 | Q
|
---|
25 | ;
|
---|
26 | BUILD ;Build array IFCAP with patient transactions to post
|
---|
27 | ;Separate patient individual items by fund control point
|
---|
28 | ;tMP($J) array
|
---|
29 | ; ^TMP($J,FCP)=FCP total^Post flag^error message^purchase card total
|
---|
30 | ; ^TMP($J,FCP,DFN)=patient tot^pat last name_" "_4 digit SSN^post flag^
|
---|
31 | ; IFCAP error message^pat name
|
---|
32 | ; ^TMP($J,FCP,DFN,ITEM)=item tot
|
---|
33 | K ^TMP($J)
|
---|
34 | S DFN=0 F S DFN=$O(^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN)) Q:DFN'>0 D
|
---|
35 | . S PATFLG=^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,0)
|
---|
36 | . ;check patient post flag
|
---|
37 | . Q:$P(PATFLG,U,3)'="Y"
|
---|
38 | . D DEM^VADPT S PATNAM=VADM(1),PATSSN=VA("BID") ;patient name & ssn
|
---|
39 | . ;lock patient record
|
---|
40 | . S LCK=$$PATLCK() I 'LCK W !,PATNAM," record locked by another user" Q
|
---|
41 | . ;get items not posted for each patient
|
---|
42 | . S ITM=0
|
---|
43 | . F S ITM=$O(^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,1,ITM)) Q:'ITM D
|
---|
44 | . . S ITDT=^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,1,ITM,0)
|
---|
45 | . . ;check if item posted
|
---|
46 | . . Q:$P(ITDT,U,10)'="Y"
|
---|
47 | . . Q:$P(ITDT,U,16)>0
|
---|
48 | . . S ITNO=$P(ITDT,U),FCP=$P(ITDT,U,3),ITOT=$P(ITDT,U,6)
|
---|
49 | . . I ITOT'>0 Q ;no amount to post
|
---|
50 | . . I FCP="" Q ;no fund control point
|
---|
51 | . . ;set ^TMP($J) array
|
---|
52 | . . S ^TMP($J,FCP)=$S('$D(^TMP($J,FCP)):0.00,1:^TMP($J,FCP))+ITOT
|
---|
53 | . . I $G(^TMP($J,FCP,DFN))="" D
|
---|
54 | . . . S LNAM=$E($P(PATNAM,",")_" ",1,7)
|
---|
55 | . . . S ^TMP($J,FCP,DFN)="^"_LNAM_" "_PATSSN_"^^^"_$E(PATNAM,1,18)
|
---|
56 | . . S $P(^TMP($J,FCP,DFN),U)=+^TMP($J,FCP,DFN)+ITOT,^TMP($J,FCP,DFN,ITM)=ITOT
|
---|
57 | . D UNLKPAT
|
---|
58 | Q
|
---|
59 | ;
|
---|
60 | F660 ;Post to file ^RMPR(660 for form 2319
|
---|
61 | S D665A=$G(^RMPR(665,DFN,"RMPOA")) I D665A="" Q
|
---|
62 | D ;AMIS grouper number
|
---|
63 | . L +^RMPR(669.9,RMPOXITE,0):9999 I $T=0 S RMPOG=DT_$P(DT,2,3) Q
|
---|
64 | . S RMPOG=$P(^RMPR(669.9,RMPOXITE,0),U,7),RMPOG=RMPOG-1
|
---|
65 | . S $P(^RMPR(669.9,RMPOXITE,0),U,7)=RMPOG
|
---|
66 | . L -^RMPR(669.9,RMPOXITE,0)
|
---|
67 | S TRXDT=$P(^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RMPOVDR,0),U,2)
|
---|
68 | S RFCPIEN=$O(^RMPO(665.72,1,1,RMPODATE,2,"B",FCP,0))
|
---|
69 | S SRVORD=$P(^RMPO(665.72,RMPOXITE,1,RMPODATE,2,RFCPIEN,0),U,4)
|
---|
70 | S PAYINF=$P(^RMPO(665.72,RMPOXITE,1,RMPODATE,2,RFCPIEN,0),U,2)
|
---|
71 | S ITM=0 F S ITM=$O(^TMP($J,FCP,DFN,ITM)) Q:ITM'>0 D
|
---|
72 | . S ITMD=$G(^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RMPOVDR,"V",DFN,1,ITM,0))
|
---|
73 | . S RMITEM=$P(ITMD,U,1)
|
---|
74 | . I $G(RMITEM),$D(^RMPR(661,RMITEM,0)) S RITIEN=$P(^RMPR(661,RMITEM,0),U,1)
|
---|
75 | . I ITMD="" Q
|
---|
76 | . I $P(ITMD,U,6)'>0 Q ;nothing posted to IFCAP
|
---|
77 | . S RMCPHC=$P(ITMD,U,2),RMCPT="",RMCPRENT=$P(ITMD,U,18),RMCPSO="C"
|
---|
78 | . S RMCPTY=$P(ITMD,U,14),RMCPQH=$P(ITMD,U,19)
|
---|
79 | . S RMCPT1=$G(^RMPR(661.1,RMCPHC,4))
|
---|
80 | . I RMCPT1["RP",((RMCPTY="R")!(RMCPTY="X")) S RMCPT=RMCPT_"RP,"
|
---|
81 | . I RMCPT1["QH",($G(RMCPQH)) S RMCPT=RMCPT_"QH,"
|
---|
82 | . I (RMCPRENT=1),(RMCPT1["RR") S RMCPT=RMCPT_"RR,"
|
---|
83 | . I RMCPT1["NU",(RMCPT'["RR") S RMCPT=RMCPT_"NU,"
|
---|
84 | . I $L(RMCPT)>2 S RMCLEN=$L(RMCPT),RMCPT=$E(RMCPT,1,RMCLEN-1)
|
---|
85 | . S DIC="^RMPR(660,",DIC(0)="L",X=DT
|
---|
86 | . K DD,DO D FILE^DICN I +Y<0 Q
|
---|
87 | . S D6I=+Y,D6X=D6I_","
|
---|
88 | . K DIE,DA,DR S DA(4)=RMPOXITE,DA(3)=RMPODATE,DA(2)=RMPOVDR,DA(1)=DFN
|
---|
89 | . S DIE="^RMPO(665.72,"_DA(4)_",1,"_DA(3)_",1,"_DA(2)_",""V"","_DA(1)
|
---|
90 | . S DIE=DIE_",1,",DA=ITM,DR="15////^S X=D6I" D ^DIE
|
---|
91 | . S D660(660,D6X,.02)=DFN ;Patient name pointer
|
---|
92 | . S D660(660,D6X,1)=TRXDT ;Request date
|
---|
93 | . S D660(660,D6X,2)=$P(ITMD,U,14) ;Type of transaction
|
---|
94 | . S D660(660,D6X,4)=$P(ITMD,U) ;item
|
---|
95 | . S D660(660,D6X,4.1)=$P(^RMPR(661.1,$P(ITMD,U,2),0),U,4) ;HCPCS
|
---|
96 | . S D660(660,D6X,4.5)=$P(ITMD,U,2) ;PSAS HCPCS
|
---|
97 | . S D660(660,D6X,4.7)=RMCPT ;RMCPT
|
---|
98 | . S D660(660,D6X,5)=$P(ITMD,U,7) ;quantity
|
---|
99 | . S D660(660,D6X,7)=RMPOVDR ;vendor
|
---|
100 | . S D660(660,D6X,8)=RMPO("STA") ;station
|
---|
101 | . S D660(660,D6X,10)=DT ;Delivery date
|
---|
102 | . I $P(PAYINF,U) S D660(660,D6X,11)=9
|
---|
103 | . I $P(PAYINF,U)="P" S D660(660,D6X,11)=14
|
---|
104 | . S D660(660,D6X,23)=SRVORD ;IFCAP transaction number
|
---|
105 | . S D660(660,D6X,12)="C" ;Source
|
---|
106 | . S D660(660,D6X,14)=$P(ITMD,U,6) ;total cost
|
---|
107 | . S D660(660,D6X,16)=$P(ITMD,U,4) ;remarks
|
---|
108 | . S SUSDES=$S($P(ITMD,U,11)'="":"Suspended Amt "_$P(ITMD,U,11)_" ",1:"")
|
---|
109 | . S D660(660,D6X,24)=SUSDES_$P(ITMD,U,12) ;description
|
---|
110 | . S D660(660,D6X,27)=DUZ ;initator
|
---|
111 | . S D660(660,D6X,62)=$P(D665A,U) ;patient category
|
---|
112 | . S D660(660,D6X,63)=$P(D665A,U,5) ;special category
|
---|
113 | . S D660(660,D6X,68)=RMPOG
|
---|
114 | . S D660(660,D6X,78)=$P(ITMD,U,15) ;unit of issue
|
---|
115 | . D FILE^DIE("K","D660","ERR")
|
---|
116 | . I $D(ERR) D
|
---|
117 | . . W !!,"Posting to 2319 for item ",ITM," patient ",DFN," failed."
|
---|
118 | . . W "Posting will be done later"
|
---|
119 | . I '$D(ERR),$D(^DPT(DFN,0)),$D(^PRC(441,RITIEN,0)) D
|
---|
120 | . . W !,"Patient: ",$P(^DPT(DFN,0),U,1)," Item: ",ITM," posted to 2319."
|
---|
121 | K DIC,X,Y
|
---|
122 | Q
|
---|
123 | ;
|
---|
124 | PATLCK() ;Lock patient level in ^RMPO(665.72
|
---|
125 | L +^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,0):5
|
---|
126 | Q $T
|
---|
127 | ;
|
---|
128 | UNLKPAT ;Unlock patient level in ^RMPO(665.72
|
---|
129 | L -^RMPO(FIL,SITE,1,RVDT,1,VDR,"V",DFN,0)
|
---|
130 | Q
|
---|
131 | ;
|
---|
132 | QUIT() S QUIT=$D(DTOUT)!$D(DUOUT)!$D(DIROUT) Q QUIT
|
---|