| 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
 | 
|---|