[613] | 1 | RMPOPF ;HINES-FO/DDA - MAIN INTERFACE ROUTINE FOR PFSS AND HOME OXYGEN ;8/18/05
|
---|
| 2 | ;;3.0;PROSTHETICS;**98**;Feb 09, 1996
|
---|
| 3 | EN ; ENTRY POINT FOR HOME OXYGEN BACKGROUND PROCESSING
|
---|
| 4 | ; Loop on APNEW and APO cross-references.
|
---|
| 5 | D APNEW,APO
|
---|
| 6 | K RMPR6699,RMPRACCT,RMPRAPLR,RMPRDFN,RMPRDG1,RMPRDRG,RMPREVNT,RMPRHCPC,RMPRHCPT,RMPRIEN,RMPRITEM,RMPRPAR,RMPRPR1,RMPRPV1,RMPRPV2,RMPRRX,RMPRRXDT,RMPRRXEX,RMPRRXI,RMPRRXLP,RMPRSITE,RMPRSTAT,RMPRZCL
|
---|
| 7 | Q
|
---|
| 8 | APNEW ;Loop on file #665 APNEW cross-reference.
|
---|
| 9 | ; Delete ITEM'S PFSS ACCOUNT REFERENCE associated with previous prescription date.
|
---|
| 10 | ; Set PFSS ACCOUNT FLAG. This will trigger the background process to obtain a new
|
---|
| 11 | ; PFSS ACCOUNT REFERENCE for the new prescription date.
|
---|
| 12 | S RMPRIEN=0
|
---|
| 13 | F S RMPRIEN=$O(^RMPR(665,"APNEW",1,RMPRIEN)) Q:RMPRIEN'>0 D
|
---|
| 14 | .; Check for valid prescription
|
---|
| 15 | .D VALIDRX
|
---|
| 16 | .I RMPRRXDT=0 D EXITNEW Q
|
---|
| 17 | .S RMPRITEM=0
|
---|
| 18 | .F S RMPRITEM=$O(^RMPR(665,RMPRIEN,"RMPOC",RMPRITEM)) Q:RMPRITEM'>0 D
|
---|
| 19 | ..S DIE="^RMPR(665,"_RMPRIEN_",""RMPOC"","
|
---|
| 20 | ..S DA(1)=RMPRIEN,DA=RMPRITEM
|
---|
| 21 | ..S DR="101///@;100///1"
|
---|
| 22 | ..D ^DIE
|
---|
| 23 | ..K DIE,DA,DR
|
---|
| 24 | ..Q
|
---|
| 25 | .D EXITNEW
|
---|
| 26 | Q
|
---|
| 27 | EXITNEW ; Remove the APNEW flag
|
---|
| 28 | S RMPRRX=0
|
---|
| 29 | F S RMPRRX=$O(^RMPR(665,"APNEW",1,RMPRIEN,RMPRRX)) Q:RMPRRX'>0 D
|
---|
| 30 | .S DIE="^RMPR(665,"_RMPRIEN_",""RMPOB"","
|
---|
| 31 | .S DA(1)=RMPRIEN,DA=RMPRRX
|
---|
| 32 | .S DR="100///@"
|
---|
| 33 | .D ^DIE
|
---|
| 34 | .K DIE,DA,DR
|
---|
| 35 | .Q
|
---|
| 36 | Q
|
---|
| 37 | APO ;Loop on file #665 APO cross-reference and gather data for GETACCT api.
|
---|
| 38 | S RMPRIEN=0
|
---|
| 39 | F S RMPRIEN=$O(^RMPR(665,"APO",1,RMPRIEN)) Q:RMPRIEN'>0 D GETACCT
|
---|
| 40 | Q
|
---|
| 41 | GETACCT ; ENTRY POINT TO SEND HOME OXYGEN ACCOUNT CREATION, PRE-CERTIFICATION
|
---|
| 42 | ;OR UPDATE DATA TO OBTAIN A PFSS ACCOUNT REFERENCE.
|
---|
| 43 | ; QUIT IF ALL VALID PRESCRIPTIONS HAVE EXPIRED.
|
---|
| 44 | D VALIDRX ; LOOP ON EACH ITEM
|
---|
| 45 | S RMPRITEM=0
|
---|
| 46 | F S RMPRITEM=$O(^RMPR(665,"APO",1,RMPRIEN,RMPRITEM)) Q:RMPRITEM'>0 D
|
---|
| 47 | .I RMPRRXDT=0 D Q
|
---|
| 48 | ..; Remove APO Flag
|
---|
| 49 | ..S DIE="^RMPR(665,"_RMPRIEN_",""RMPOC"","
|
---|
| 50 | ..S DA(1)=RMPRIEN,DA=RMPRITEM
|
---|
| 51 | ..S DR="100///@"
|
---|
| 52 | ..D ^DIE
|
---|
| 53 | ..K DIE,DA,DR
|
---|
| 54 | ..Q
|
---|
| 55 | .S RMPRDFN=RMPRIEN
|
---|
| 56 | .S RMPRPAR=$P($G(^RMPR(665,RMPRIEN,"RMPOC",RMPRITEM,"PFSS")),"^",2)
|
---|
| 57 | .S:RMPRPAR="" RMPREVNT="A05"
|
---|
| 58 | .S:RMPRPAR'="" RMPREVNT="A08"
|
---|
| 59 | .S RMPRAPLR="GETACCT;RMPOPF"
|
---|
| 60 | .S RMPRPV1(2)="O"
|
---|
| 61 | .S RMPRSTA=$P($G(^RMPR(665,RMPRIEN,0)),"^",2)
|
---|
| 62 | .D GETSITE^RMPRPF1
|
---|
| 63 | .S RMPRPV1(3)=RMPRHLOC
|
---|
| 64 | .S RMPRPV1(7)=$P($G(^RMPR(665,RMPRIEN,"RMPOB",RMPRRXI,"PFSS")),"^",2)
|
---|
| 65 | .S RMPRPV1(44)=RMPRRXDT
|
---|
| 66 | .S RMPRPV2(8)=RMPRRXDT
|
---|
| 67 | .; INSURE HCPCS IS CODE SET VERSIONED
|
---|
| 68 | .S RMPRHCPC=$P($G(^RMPR(665,RMPRIEN,"RMPOC",RMPRITEM,0)),"^",7),RMPRHCDT=RMPRRXDT
|
---|
| 69 | .D PSASHCPC
|
---|
| 70 | .; If HCPCS version check fails then quit, but leave APO Flag intact for future processing.
|
---|
| 71 | .; The HCPCS should eventually be corrected.
|
---|
| 72 | .Q:RMPRVHC=0
|
---|
| 73 | .S RMPRPR1(3)=RMPRVHC
|
---|
| 74 | .S RMPRPR1(4)=RMPRTHC
|
---|
| 75 | .S RMPRPR1(6)="O"
|
---|
| 76 | .; INSURE ICD9 IS CODE SET VERSIONED
|
---|
| 77 | .S RMPRDRG=$P($G(^RMPR(665,RMPRIEN,"RMPOC",RMPRITEM,0)),"^",8)
|
---|
| 78 | .S:RMPRDRG'="" RMPRDRG=$$STATCHK^ICDAPIU($P($G(^ICD9(RMPRDRG,0)),"^"),RMPRRXDT)
|
---|
| 79 | .S RMPRDG1(1,3)=""
|
---|
| 80 | .S:$P(RMPRDRG,"^")=1 RMPRDG1(1,3)=$P(RMPRDRG,"^",2),RMPRDG1(1,6)="F"
|
---|
| 81 | .;ZCL SEGMENT TO GO HERE
|
---|
| 82 | .S RMPRZCL=""
|
---|
| 83 | .; FIELDS NOT YET ENTERED.
|
---|
| 84 | .; Call GETACCT api
|
---|
| 85 | .S RMPRACCT=$$GETACCT^IBBAPI(RMPRDFN,RMPRPAR,RMPREVNT,RMPRAPLR,.RMPRPV1,.RMPRPV2,.RMPRPR1,.RMPRDG1,.RMPRZCL)
|
---|
| 86 | .; Store PFSS ACCOUNT REFERENCE data and Delete the APO flag.
|
---|
| 87 | .S DIE="^RMPR(665,"_RMPRIEN_",""RMPOC"","
|
---|
| 88 | .S DA(1)=RMPRIEN,DA=RMPRITEM
|
---|
| 89 | .S DR="100///@;101///`"_RMPRACCT
|
---|
| 90 | .D ^DIE
|
---|
| 91 | .K DIE,DA,DR
|
---|
| 92 | .K RMPRDFN,RMPRPAR,RMPREVNT,RMPRAPLR,RMPRPV1,RMPRPV2,RMPRSTA,RMPRHLOC,RMPRHCPC,RMPRPR1,RMPRDRG,RMPRDG1,RMPRZCL,RMPRACCT,RMPRSTAT,RMPRCHDT,RMPRVHC,RMPRTHC,RMPREHC
|
---|
| 93 | .Q
|
---|
| 94 | EXITGET ;
|
---|
| 95 | K RMPRRXDT,RMPRRXI,RMPRITEM
|
---|
| 96 | Q
|
---|
| 97 | PSASHCPC ; determine correct HCPCS code to send based on PSAS HCPCS.
|
---|
| 98 | ; UPON ENTRY RMPRHCPC = POINTER TO 661.1 AND RMPRHCDT = FILEMAN DATE
|
---|
| 99 | ; Returns with RMPRVHC having the correct value to pass to IBB.
|
---|
| 100 | I RMPRHCPC="" S RMPREHC="A9900",RMPRTHC="HCPCS DELETED" G CHK
|
---|
| 101 | S RMPREHC=$P($G(^RMPR(661.1,RMPRHCPC,0)),"^")
|
---|
| 102 | S RMPRTHC=$P($G(^RMPR(661.1,RMPRHCPC,0)),"^",2)
|
---|
| 103 | CHK S RMPRSTAT=$$STATCHK^ICPTAPIU(RMPREHC,RMPRHCDT)
|
---|
| 104 | I ($A($E(RMPREHC,2,2))>64)!($P(RMPRSTAT,"^")=0) D
|
---|
| 105 | .S RMPREHC="A9900"
|
---|
| 106 | .S RMPRSTAT=$$STATCHK^ICPTAPIU(RMPREHC,RMPRHCDT)
|
---|
| 107 | .Q
|
---|
| 108 | I $P(RMPRSTAT,"^")=1 S RMPRVHC=$P(RMPRSTAT,"^",2) Q
|
---|
| 109 | S RMPRVHC=0
|
---|
| 110 | Q
|
---|
| 111 | VALIDRX ; GET ASSOCIATED RX MAKE SURE IT HAS NOT EXPIRED.
|
---|
| 112 | S (RMPRRXLP,RMPRRX,RMPRRXI,RMPRRXEX,RMPRRXDT)=0
|
---|
| 113 | F S RMPRRXLP=$O(^RMPR(665,RMPRIEN,"RMPOB","B",RMPRRXLP)) Q:RMPRRXLP'>0 D
|
---|
| 114 | .F S RMPRRX=$O(^RMPR(665,RMPRIEN,"RMPOB","B",RMPRRXLP,RMPRRX)) Q:RMPRRX'>0 D
|
---|
| 115 | ..S:$P($G(^RMPR(665,RMPRIEN,"RMPOB",RMPRRX,0)),"^",3)'<DT RMPRRXEX=$P($G(^RMPR(665,RMPRIEN,"RMPOB",RMPRRX,0)),"^",3),RMPRRXDT=RMPRRXLP,RMPRRXI=RMPRRX
|
---|
| 116 | ..Q
|
---|
| 117 | .Q
|
---|
| 118 | K RMPRRXLP,RMPRRX,RMPRRXEX
|
---|
| 119 | Q
|
---|
| 120 | ACCTCNCL ; ENTRY POINT TO SEND HOME OXYGEN ACCOUNT CANCELLATION DATA.
|
---|
| 121 | ; THIS TAG IS CALLED AS A ONE-TIME TASKMAN TASK LOADED FROM ACCTTASK^PMPOPF.
|
---|
| 122 | ; Input variables from TaskMan-
|
---|
| 123 | ; RMPRDFN = DA (also DFN)
|
---|
| 124 | ; RMPRRXDT = Home Oxygen Prescription date
|
---|
| 125 | ; RMPRRXEN = Home Oxygen Prescription IEN
|
---|
| 126 | ;
|
---|
| 127 | ;CHECK IF HOME OXYGEN PRESCRIPTION SUB RECORD HAS BEEN DELETED.
|
---|
| 128 | ; EXIT IF IT STILL EXISTS
|
---|
| 129 | G:$D(^RMPR(665,RMPRDFN,"RMPOB","B",RMPRRXDT,RMPRRXEN)) EXITCNCL
|
---|
| 130 | ; THE RECORD WAS DELETED
|
---|
| 131 | ; LOOP ON PATIENT'S ITEMS.
|
---|
| 132 | S RMPRITEM=0
|
---|
| 133 | F S RMPRITEM=$O(^RMPR(665,RMPRDFN,"RMPOC",RMPRITEM)) Q:RMPRITEM'>0 D CANCEL
|
---|
| 134 | EXITCNCL ;
|
---|
| 135 | K RMPRDFN,RMPRRXDT,RMPRRXEN,RMPRITEM
|
---|
| 136 | Q
|
---|
| 137 | CANCEL ; ENTRY POINT TO SEND HOME OXYGEN ACCOUNT CANCELLATION DATA.
|
---|
| 138 | ; THIS TAG IS CALLED AS A ONE-TIME TASKMAN TASK LOADED FROM ITEMTASK^PMPOPF.
|
---|
| 139 | ; Input variables from TaskMan-
|
---|
| 140 | ; RMPRDFN = DA (also DFN)
|
---|
| 141 | ; RMPRITEM = Home Oxygen Item IEN
|
---|
| 142 | ;
|
---|
| 143 | ;CHECK IF HOME OXYGEN PRESCRIPTION SUB RECORD HAS BEEN DELETED.
|
---|
| 144 | ; EXIT IF IT STILL EXISTS
|
---|
| 145 | ; SET FROM:
|
---|
| 146 | ; RMPRDFN = DFN SENT WITHIN TASKMAN
|
---|
| 147 | ; RMPRPAR = HOME OXYGEN ITEM (19.4); PFSS Account Reference (101)
|
---|
| 148 | ; RMPREVNT = "A38"
|
---|
| 149 | ; RMPRAPLR = "CANCEL1;RMPOPF"
|
---|
| 150 | ; RMPRPV1(2) = "O"
|
---|
| 151 | ; RMPRPV1(3) = FILE 669.9, FIELD 52
|
---|
| 152 | ; RMPRPV1(44) = THE HOME OXYGEN PRESCRIPTION DATE SENT WITHIN TASKMAN
|
---|
| 153 | S RMPRPAR=$P($G(^RMPR(665,RMPRDFN,"RMPOC",RMPRITEM,"PFSS")),"^",2)
|
---|
| 154 | CANCEL1 ; ENTRY POINT FOR SINGLE ITEM DELETE (ITEMTASK)
|
---|
| 155 | S RMPREVNT="A38"
|
---|
| 156 | S RMPRAPLR="CANCEL1;RMPOPF"
|
---|
| 157 | S RMPRPV1(2)="O"
|
---|
| 158 | S RMPRSTA=$P($G(^RMPR(665,RMPRDFN,0)),"^",2)
|
---|
| 159 | D GETSITE^RMPRPF1
|
---|
| 160 | S RMPRPV1(3)=RMPRHLOC
|
---|
| 161 | S RMPRIEN=RMPRDFN D VALIDRX
|
---|
| 162 | S:RMPRRXDT'=0 RMPRPV1(44)=RMPRRXDT
|
---|
| 163 | ; SEND A38 GETACCT FOR THE ITEM
|
---|
| 164 | S RMPRCNCL=$$GETACCT^IBBAPI(RMPRDFN,RMPRPAR,RMPREVNT,RMPRAPLR,.RMPRPV1)
|
---|
| 165 | K RMPRPAR,RMPREVNT,RMPRAPLR,RMPRPV1,RMPRSTA,RMPRHLOC,RMPRCNCL
|
---|
| 166 | Q
|
---|
| 167 | ACCTTASK ; FILE #665, HOME OXYGEN PRESCRITION; DATE FIELD MUMPS XREF KILL LOGIC.
|
---|
| 168 | ; TASKMAN LOAD A ONE TIME TASKMAN TASK.
|
---|
| 169 | Q:'+$$SWSTAT^IBBAPI()
|
---|
| 170 | N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTUCI,ZTCPU,ZTPRI,ZTSAVE,ZTKIL,ZTSYNC
|
---|
| 171 | S ZTIO="",ZTRTN="ACCTCNCL^RMPOPF",ZTDESC="Prosthetics Home Oxygen PFSS Account Cancel",ZTDTH=$H
|
---|
| 172 | S ZTSAVE("RMPRDFN")=DA(1),ZTSAVE("RMPRRXEN")=DA,ZTSAVE("RMPRRXDT")=X
|
---|
| 173 | D ^%ZTLOAD
|
---|
| 174 | Q
|
---|
| 175 | ITEMTASK ; FILE #665, HOME OXYGEN ITEM; ITEM FIELD MUMPS XREF
|
---|
| 176 | ;KILL LOGIC.
|
---|
| 177 | ; TASKMAN LOAD A ONE TIME TASKMAN TASK.
|
---|
| 178 | Q:'+$$SWSTAT^IBBAPI()
|
---|
| 179 | S RMPRPAR=$P($G(^RMPR(665,DA(1),"RMPOC",DA,"PFSS")),"^",2)
|
---|
| 180 | N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTUCI,ZTCPU,ZTPRI,ZTSAVE,ZTKIL,ZTSYNC
|
---|
| 181 | S ZTIO="",ZTRTN="CANCEL1^RMPOPF",ZTDESC="Prosthetics Home Oxygen PFSS Item Cancel",ZTDTH=$H
|
---|
| 182 | S ZTSAVE("RMPRDFN")=DA(1),ZTSAVE("RMPRITEM")=DA,ZTSAVE("RMPRPAR")=RMPRPAR
|
---|
| 183 | D ^%ZTLOAD
|
---|
| 184 | K RMPRPAR
|
---|
| 185 | Q
|
---|
| 186 | CHRGTASK ; FILE #665.72, BILLING MONTH; VENDOR; PATIENT; ITEM FIELD MUMPS XREF
|
---|
| 187 | ;KILL LOGIC.
|
---|
| 188 | ; TASKMAN LOAD A ONE TIME TASKMAN TASK.
|
---|
| 189 | Q:'+$$SWSTAT^IBBAPI()
|
---|
| 190 | S RMPRPFSS=^RMPO(665.72,DA(4),1,DA(3),1,DA(2),"V",DA(1),1,DA,"PFSS")
|
---|
| 191 | N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTUCI,ZTCPU,ZTPRI,ZTSAVE,ZTKIL,ZTSYNC
|
---|
| 192 | S ZTIO="",ZTRTN="CHRGCRED^RMPOPF1",ZTDESC="Prosthetics Home Oxygen PFSS Charge Credit",ZTDTH=$H
|
---|
| 193 | S ZTSAVE("RMPRDFN")=DA(1),ZTSAVE("RMPRITEM")=DA,ZTSAVE("RMPRVDR")=DA(2),ZTSAVE("RMPRBLDT")=DA(3),ZTSAVE("RMPRSITE")=DA(4)
|
---|
| 194 | S ZTSAVE("RMPRPFSS")=^RMPO(665.72,DA(4),1,DA(3),1,DA(2),"V",DA(1),1,DA,"PFSS")
|
---|
| 195 | D ^%ZTLOAD
|
---|
| 196 | Q
|
---|
| 197 | CHARGE ; Called from RMPOPST3.
|
---|
| 198 | ;IMPORTANT VARIBLES PASSED IN FROM RMPOPST3.
|
---|
| 199 | ; D6I= FILE 660 IEN
|
---|
| 200 | ; RMPOXITE= FILE 665.72 SITE (IEN)
|
---|
| 201 | ; RMPODATE= FILE 665.72 BILLING MONTH mult IEN
|
---|
| 202 | ; RMPOVDR= FILE 665.72 VENDOR mult IEN (DINUM to 440)
|
---|
| 203 | ; DFN= FILE 665.72 PATIENT mult IEN (DINUM to 2)
|
---|
| 204 | ; ITM= FILE 665.72 ITEM mult IEN
|
---|
| 205 | ; TRXDT= Date TRX Built
|
---|
| 206 | ; ITMD= Item multiple zero node
|
---|
| 207 | ;
|
---|
| 208 | Q:'+$$SWSTAT^IBBAPI()
|
---|
| 209 | D CHARGE^RMPOPF1
|
---|
| 210 | Q
|
---|