| 1 | RMPRPF1 ;HOIFO/TH,DDA - PFSS Account Creation ;8/18/05 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**98**;Feb 09, 1996 | 
|---|
| 3 | ; | 
|---|
| 4 | ; This routine collects PFSS Account Creation required data elements, | 
|---|
| 5 | ; sends pre-cert or update message to IBB; obtains and stores a PFSS | 
|---|
| 6 | ; Account Reference in file 660. | 
|---|
| 7 | ; | 
|---|
| 8 | ; DBIA #4664 for GETACCT^IBBAPI | 
|---|
| 9 | ; DBIA #1997 for STATCHK^ICPTAPIU | 
|---|
| 10 | Q | 
|---|
| 11 | ; | 
|---|
| 12 | EN ; Entry Point | 
|---|
| 13 | S OK=1 | 
|---|
| 14 | S RMPRSWDT=$P($$SWSTAT^IBBAPI(),"^",2) | 
|---|
| 15 | ; Quit if Entry Date is before PFSS Switch on date | 
|---|
| 16 | I $P(^RMPR(660,RMPRDA,0),"^")<RMPRSWDT D DELAPH Q | 
|---|
| 17 | EN2 ; Entry to be used if Delivery Date is greater than PFSS Switch on date | 
|---|
| 18 | ; Quit if PFSS Charge ID exists | 
|---|
| 19 | I $P(^RMPR(660,RMPRDA,"PFSS"),U,2)'="" D DELAPH Q | 
|---|
| 20 | ; Quit if Historical Data | 
|---|
| 21 | I $P(^RMPR(660,RMPRDA,0),U,13)=13 D DELAPH Q | 
|---|
| 22 | ; Quit if Shipping Charge exists | 
|---|
| 23 | I $P(^RMPR(660,RMPRDA,0),U,17)>0 D DELAPH Q | 
|---|
| 24 | S RMPREVNT="A05"        ; Pre-cert | 
|---|
| 25 | ; Check if PFSS Account Ref exists | 
|---|
| 26 | S OK=1 | 
|---|
| 27 | I $P(^RMPR(660,RMPRDA,"PFSS"),U,1)'="" D | 
|---|
| 28 | . ; Quit if PSAS HCPCS did not get updated | 
|---|
| 29 | . I $P(^RMPR(660,RMPRDA,1),U,4)=$P(^RMPR(660,RMPRDA,"PFSS"),U,3) D DELAPH S OK=0 Q | 
|---|
| 30 | . S RMPREVNT="A08"      ; Update Patient Info | 
|---|
| 31 | I OK D | 
|---|
| 32 | . D GETDATA | 
|---|
| 33 | . D GETACCT | 
|---|
| 34 | . ; If msg was sent successfully, store data and kill x-ref | 
|---|
| 35 | . I RMPRARFN'=0 D | 
|---|
| 36 | . . D STORE | 
|---|
| 37 | . . D DELAPH | 
|---|
| 38 | D EXIT | 
|---|
| 39 | Q | 
|---|
| 40 | ; | 
|---|
| 41 | GETDATA ; Get pre-cert data | 
|---|
| 42 | S (RMPRDFN,RMPRARFN,RMPRAPLR)="" | 
|---|
| 43 | S RMPRDFN=$P(^RMPR(660,RMPRDA,0),U,2)   ; Patient ID | 
|---|
| 44 | S RMPRAPLR="GETACCT;RMPRPF1" | 
|---|
| 45 | I RMPREVNT="A08",($P(^RMPR(660,RMPRDA,"PFSS"),U,1)'="") D | 
|---|
| 46 | . S RMPRARFN=$P(^RMPR(660,RMPRDA,"PFSS"),U,1)   ; Acct Ref | 
|---|
| 47 | ; | 
|---|
| 48 | ; PV1 | 
|---|
| 49 | S RMPRPV1(2)="O"        ; Patient Class | 
|---|
| 50 | S RMPRSTA=$P(^RMPR(660,RMPRDA,0),U,10) | 
|---|
| 51 | D GETSITE | 
|---|
| 52 | S RMPRPV1(3)=RMPRHLOC   ; Patient Location | 
|---|
| 53 | S (RMPRORD,RMPRADDT)="" | 
|---|
| 54 | S RMPRORD=$P($G(^RMPR(660,RMPRDA,10)),U,6) | 
|---|
| 55 | S RMPRPV1(7)=RMPRORD    ; Attending Physician | 
|---|
| 56 | S RMPRADDT=$P(^RMPR(660,RMPRDA,0),U,1) | 
|---|
| 57 | S RMPRPV1(44)=RMPRADDT  ; Admit Date/Time | 
|---|
| 58 | ; | 
|---|
| 59 | ; PV2 | 
|---|
| 60 | S RMPRPV2(8)=RMPRADDT   ; Expected Admit Date/Time | 
|---|
| 61 | S RMPREXDT="" | 
|---|
| 62 | S RMPREXDT=$P($G(^RMPR(660,RMPRDA,10)),U,1) | 
|---|
| 63 | S RMPRPV2(46)=$P(RMPREXDT,".",1) ; Patient Status Effective Date | 
|---|
| 64 | ; | 
|---|
| 65 | ; PR1 | 
|---|
| 66 | S RMPRHCPC=$P(^RMPR(660,RMPRDA,1),U,4)    ; PSAS HCPCS | 
|---|
| 67 | S RMPRHCDT=RMPRADDT    ;Event date | 
|---|
| 68 | D PSASHCPC^RMPOPF    ;CSV check; return RMPRVHC and RMPRTHC. | 
|---|
| 69 | S RMPRPR1(3)=RMPRVHC    ; Procedure code | 
|---|
| 70 | S RMPRPR1(4)=RMPRTHC    ; PSAS HCPCS text | 
|---|
| 71 | ; Procedure Functional Type - I:Stock Issue; P:Purchasing | 
|---|
| 72 | S RMPRPR1(6)=$S($P(^RMPR(660,RMPRDA,0),U,13)=11:"I",1:"P") | 
|---|
| 73 | ; | 
|---|
| 74 | ; DG1 AND ZCL | 
|---|
| 75 | D DG1ZCL^RMPRPF2 | 
|---|
| 76 | Q | 
|---|
| 77 | ; | 
|---|
| 78 | GETSITE ; Get Patient Location | 
|---|
| 79 | ; requires RMPRSTA=file 4 pointer | 
|---|
| 80 | ; return RMPRHLOC= hospital location or NULL if there is none. | 
|---|
| 81 | S RMPRHLOC="",RMPRSIEN="" | 
|---|
| 82 | F  S RMPRSIEN=$O(^RMPR(669.9,"C",RMPRSTA,RMPRSIEN)) Q:RMPRSIEN'>0  D | 
|---|
| 83 | .S RMPRHLOC=$P(^RMPR(669.9,RMPRSIEN,"PCE"),U,3) | 
|---|
| 84 | .Q | 
|---|
| 85 | I RMPRHLOC="" D | 
|---|
| 86 | .S RMPRSIEN=0 | 
|---|
| 87 | .F  S RMPRSIEN=$O(^RMPR(669.9,RMPRSIEN)) Q:(RMPRSIEN'>0)!(+RMPRHLOC)  D | 
|---|
| 88 | ..S RMPRHLOC=$P(^RMPR(669.9,RMPRSIEN,"PCE"),U,3) | 
|---|
| 89 | ..Q | 
|---|
| 90 | .Q | 
|---|
| 91 | Q | 
|---|
| 92 | ; | 
|---|
| 93 | GETACCT ; Call GETACCT^IBBAPI to send data and get PFSS Account Reference | 
|---|
| 94 | S RMPRARFN=$$GETACCT^IBBAPI(RMPRDFN,RMPRARFN,RMPREVNT,RMPRAPLR,.RMPRPV1,.RMPRPV2,.RMPRPR1,.RMPRDG1,.RMPRZCL,"","") | 
|---|
| 95 | Q | 
|---|
| 96 | ; | 
|---|
| 97 | STORE ; Store data | 
|---|
| 98 | S (RMPRQTY,RMPRTC)="" | 
|---|
| 99 | S RMPRQTY=$P(^RMPR(660,RMPRDA,0),U,7)   ; QTY | 
|---|
| 100 | S RMPRTC=$P(^RMPR(660,RMPRDA,0),U,16)    ; Total Cost | 
|---|
| 101 | ; | 
|---|
| 102 | L +^RMPR(660,RMPRDA) | 
|---|
| 103 | ; Store 100-PFSS Account Reference; 102-latest PSAS HCPCS; 103-latest QTY; 104-latest Total Cost; | 
|---|
| 104 | ; 105-latest Ordering Provider | 
|---|
| 105 | S DIE="^RMPR(660,",DA=RMPRDA | 
|---|
| 106 | S DR="100////^S X=RMPRARFN;102////^S X=RMPRHCPC;" | 
|---|
| 107 | S DR=DR_"103////^S X=RMPRQTY;104////^S X=RMPRTC;105////^S X=RMPRORD" | 
|---|
| 108 | D ^DIE | 
|---|
| 109 | L -^RMPR(660,RMPRDA) | 
|---|
| 110 | K DA,DIE,DR | 
|---|
| 111 | Q | 
|---|
| 112 | ; | 
|---|
| 113 | DELAPD ; Delete the "APD" Flag | 
|---|
| 114 | S DIE="^RMPR(660," | 
|---|
| 115 | S DA=RMPRDA | 
|---|
| 116 | S DR="107///@" | 
|---|
| 117 | D ^DIE | 
|---|
| 118 | K DIE,DA,DR | 
|---|
| 119 | Q | 
|---|
| 120 | ; | 
|---|
| 121 | DELAPH ; Delete the "APH" Flag | 
|---|
| 122 | S DIE="^RMPR(660," | 
|---|
| 123 | S DA=RMPRDA | 
|---|
| 124 | S DR="106///@" | 
|---|
| 125 | D ^DIE | 
|---|
| 126 | K DIE,DA,DR | 
|---|
| 127 | Q | 
|---|
| 128 | EXIT ; Exit | 
|---|
| 129 | K OK,RMPREVNT,RMPRARFN,RMPRDFN,RMPRAPLR,RMPRPR1,RMPRSTA | 
|---|
| 130 | K RMPRPV1,RMPRHLOC,RMPRORD,RMPRADDT,RMPRSIEN,RMPRHCPC | 
|---|
| 131 | K RMPRPV2,RMPREXDT,RMPRDG1,RMPRDIAG,RMPRRICP,RMRICPP | 
|---|
| 132 | K RMPRZCL,RMPRNODE,RMPRQTY,RMPRTC,RMPRCPT,RMPRSWDT | 
|---|
| 133 | Q | 
|---|