| [613] | 1 | IB20P342 ;DALOI/SS - IB ECME EVNT REPORT ;01/03/2006
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**342**;21-MAR-94;Build 18
 | 
|---|
 | 3 |  ;; Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;; 
 | 
|---|
 | 5 |  Q
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 |  ;move data from ^XTMP("IBNCPDP-..." to file #366.14
 | 
|---|
 | 8 | EN ;
 | 
|---|
 | 9 |  N IBDT,IBRECNO,IBDATE,IBIBDTYP,IBRET,IBTYPE,IBDTIEN,IBCALVAL
 | 
|---|
 | 10 |  N IBMSG1,IBMSG2
 | 
|---|
 | 11 |  I +$O(^IBCNR(366.14,0)) D  Q
 | 
|---|
 | 12 |  . D ERRMSG("Conversion of IB ECME EVNT REPORT data will not be done in this site")
 | 
|---|
 | 13 |  . D ERRMSG("since data have been already converted in the past.")
 | 
|---|
 | 14 |  . ;send e-mail about post-install completion
 | 
|---|
 | 15 |  . S IBMSG1="The conversion of data from the ^XTMP global array into the IB NCPDP"
 | 
|---|
 | 16 |  . S IBMSG2="EVENT LOG file has been skipped as the data has already been converted."
 | 
|---|
 | 17 |  . D SNDMAIL("IB*2.0*342 installation has been completed",IBMSG1,IBMSG2)
 | 
|---|
 | 18 |  S IBDT="IBNCPDP-"
 | 
|---|
 | 19 |  F  S IBDT=$O(^XTMP(IBDT)) Q:IBDT'["IBNCPDP-"  D
 | 
|---|
 | 20 |  . S IBRECNO=0
 | 
|---|
 | 21 |  . S IBDATE=+$P(IBDT,"-",2)
 | 
|---|
 | 22 |  . D BMES^XPDUTL("Add date: "_IBDATE)
 | 
|---|
 | 23 |  . S IBDTIEN=$$ADDDATE^IBNCPLOG(IBDATE)
 | 
|---|
 | 24 |  . I +IBDTIEN=0 D ERRMSG("Cannot create a DATE entry for "_IBDATE)
 | 
|---|
 | 25 |  . F  S IBRECNO=$O(^XTMP(IBDT,IBRECNO)) Q:+IBRECNO=0  D
 | 
|---|
 | 26 |  . . ;create node and .01 for events multiple
 | 
|---|
 | 27 |  . . I '$D(^XTMP(IBDT,IBRECNO,"CALL")) D ERRMSG(" there is no CALL node in ^XTMP") Q
 | 
|---|
 | 28 |  . . ;Add event (CALL) = ^XTMP(IBDT,IBRECNO,"CALL")
 | 
|---|
 | 29 |  . . S IBCALVAL=$G(^XTMP(IBDT,IBRECNO,"CALL"))
 | 
|---|
 | 30 |  . . I $$ADDEVENT(IBDATE,IBRECNO,IBCALVAL)<0 D ERRMSG(" EVENT entry wasn't created for "_IBCALVAL) Q
 | 
|---|
 | 31 |  . . ;quit if was not created
 | 
|---|
 | 32 |  . . S IBTYPE=""
 | 
|---|
 | 33 |  . . ;Loop through fields...
 | 
|---|
 | 34 |  . . F  S IBTYPE=$O(^XTMP(IBDT,IBRECNO,IBTYPE)) Q:IBTYPE=""  D
 | 
|---|
 | 35 |  . . . I IBTYPE="CALL" Q  ;was already created
 | 
|---|
 | 36 |  . . . ;fields general fields (other than IBD)
 | 
|---|
 | 37 |  . . . I IBTYPE="DEVICE" Q  ;we do not use DEVICE in new file
 | 
|---|
 | 38 |  . . . I IBTYPE'="IBD" S IBRET=$$GENFLDS(IBDT,IBRECNO,IBTYPE,IBDATE) D:+IBRET=0  Q
 | 
|---|
 | 39 |  . . . . D ERRMSG(" >"_IBTYPE_":"_$P(IBRET,U,2))
 | 
|---|
 | 40 |  . . . ;if IBD fields
 | 
|---|
 | 41 |  . . . S IBIBDTYP=""
 | 
|---|
 | 42 |  . . . F  S IBIBDTYP=$O(^XTMP(IBDT,IBRECNO,IBTYPE,IBIBDTYP)) Q:IBIBDTYP=""  D
 | 
|---|
 | 43 |  . . . . ; if Insurance 
 | 
|---|
 | 44 |  . . . . I IBIBDTYP="INS" S IBRET=$$INS(IBDT,IBRECNO,IBDATE) D:+IBRET=0  Q
 | 
|---|
 | 45 |  . . . . . D ERRMSG(" >>INSURANCE node was not populated")
 | 
|---|
 | 46 |  . . . . ; other IBD fields
 | 
|---|
 | 47 |  . . . . S IBRET=$$IBD(IBDT,IBRECNO,IBIBDTYP,IBDATE)
 | 
|---|
 | 48 |  . . . . D:+IBRET=0 ERRMSG(" >>IBD field "_IBIBDTYP_" was not populated")
 | 
|---|
 | 49 |  ;send e-mail about conversion completion
 | 
|---|
 | 50 |  S IBMSG1="The conversion of data from the ^XTMP global array into the IB NCPDP"
 | 
|---|
 | 51 |  S IBMSG2="EVENT LOG file has successfully completed."
 | 
|---|
 | 52 |  D SNDMAIL("IB*2.0*342 installation has been completed",IBMSG1,IBMSG2)
 | 
|---|
 | 53 |  Q
 | 
|---|
 | 54 |  ;process the fields common for all messages
 | 
|---|
 | 55 | GENFLDS(IBDT,IBRECNO,IBTYPE,IBDATE) ;
 | 
|---|
 | 56 |  N IBVAL,IBFLDNO,IBDTIEN,IBRETV
 | 
|---|
 | 57 |  S IBRETV=0
 | 
|---|
 | 58 |  S IBVAL=$G(^XTMP(IBDT,IBRECNO,IBTYPE))
 | 
|---|
 | 59 |  S IBDTIEN=+$O(^IBCNR(366.14,"B",IBDATE,0))
 | 
|---|
 | 60 |  Q:+IBDTIEN=0 0
 | 
|---|
 | 61 |  I IBTYPE="CALL" S IBFLDNO=".01" G EDITFLD
 | 
|---|
 | 62 |  I IBTYPE="DFN" S IBFLDNO=".03" G EDITFLD
 | 
|---|
 | 63 |  I IBTYPE="JOB" S IBFLDNO=".04" G EDITFLD
 | 
|---|
 | 64 |  I IBTYPE="TIME" S IBFLDNO=".05" G EDITFLD
 | 
|---|
 | 65 |  I IBTYPE="USER" S IBFLDNO=".06" G EDITFLD
 | 
|---|
 | 66 |  I IBTYPE="RESULT" D
 | 
|---|
 | 67 |  . S IBRETV=+$$FILLFLDS^IBNCPUT1(366.141,".07",IBRECNO_","_IBDTIEN,+IBVAL)
 | 
|---|
 | 68 |  . S IBRETV=+$$FILLFLDS^IBNCPUT1(366.141,".08",IBRECNO_","_IBDTIEN,$P(IBVAL,U,2))
 | 
|---|
 | 69 |  Q IBRETV
 | 
|---|
 | 70 | EDITFLD ;
 | 
|---|
 | 71 |  Q +$$FILLFLDS^IBNCPUT1(366.141,IBFLDNO,IBRECNO_","_IBDTIEN,IBVAL)
 | 
|---|
 | 72 |  ;---------
 | 
|---|
 | 73 |  ;store IBD array data
 | 
|---|
 | 74 |  ;input:
 | 
|---|
 | 75 |  ;IBDT -date node as it is in ^XTMP global, i.e. "IBNCPDP-3060214"
 | 
|---|
 | 76 |  ;IBRECNO -ien in [EVENTS] multiple
 | 
|---|
 | 77 |  ;IBIBDTYP -type subscript in IBD array (BILL, PAID, RESPONSE, etc)
 | 
|---|
 | 78 |  ;IBDATE -date 
 | 
|---|
 | 79 |  ;Output:
 | 
|---|
 | 80 |  ;0 -failure
 | 
|---|
 | 81 |  ;1^record number - success
 | 
|---|
 | 82 |  ;
 | 
|---|
 | 83 | IBD(IBDT,IBRECNO,IBIBDTYP,IBDATE) ;
 | 
|---|
 | 84 |  N IBVAL,IBFLDNO,IBDTIEN
 | 
|---|
 | 85 |  S IBVAL=$G(^XTMP(IBDT,IBRECNO,"IBD",IBIBDTYP))
 | 
|---|
 | 86 |  S IBDTIEN=$O(^IBCNR(366.14,"B",IBDATE,0))
 | 
|---|
 | 87 |  Q:+IBDTIEN=0 0
 | 
|---|
 | 88 |  I IBIBDTYP="AUTH #" S IBFLDNO=".11" G EDITIBD
 | 
|---|
 | 89 |  I IBIBDTYP="BCID" S IBFLDNO=".12" G EDITIBD
 | 
|---|
 | 90 |  I IBIBDTYP="CLAIMID" S IBFLDNO=".13" G EDITIBD
 | 
|---|
 | 91 |  I IBIBDTYP="DFN" S IBFLDNO=".14" G EDITIBD
 | 
|---|
 | 92 |  I IBIBDTYP="DIVISION" S IBFLDNO=".15" G EDITIBD
 | 
|---|
 | 93 |  I IBIBDTYP="RESPONSE" S IBFLDNO=".16" G EDITIBD
 | 
|---|
 | 94 |  I IBIBDTYP="REVERSAL REASON" S IBFLDNO=".17" G EDITIBD
 | 
|---|
 | 95 |  I IBIBDTYP="RTS-DEL" S IBFLDNO=".18" G EDITIBD
 | 
|---|
 | 96 |  I IBIBDTYP="STATUS" S IBFLDNO=".19" G EDITIBD
 | 
|---|
 | 97 |  I IBIBDTYP="RX NO" S IBFLDNO=".202" G EDITIBD
 | 
|---|
 | 98 |  I IBIBDTYP="FILL NUMBER" S IBFLDNO=".203" G EDITIBD
 | 
|---|
 | 99 |  I IBIBDTYP="DRUG" S IBFLDNO=".204" G EDITIBD
 | 
|---|
 | 100 |  I IBIBDTYP="NDC" S IBFLDNO=".205" G EDITIBD
 | 
|---|
 | 101 |  I IBIBDTYP="FILL DATE" S IBFLDNO=".206" G EDITIBD
 | 
|---|
 | 102 |  I IBIBDTYP="RELEASE DATE" S IBFLDNO=".207" G EDITIBD
 | 
|---|
 | 103 |  I IBIBDTYP="QTY" S IBFLDNO=".208" G EDITIBD
 | 
|---|
 | 104 |  I IBIBDTYP="DAYS SUPPLY" S IBFLDNO=".209" G EDITIBD
 | 
|---|
 | 105 |  I IBIBDTYP="DEA" S IBFLDNO=".21" G EDITIBD
 | 
|---|
 | 106 |  I IBIBDTYP="FILLED BY" S IBFLDNO=".211" G EDITIBD
 | 
|---|
 | 107 |  I IBIBDTYP="AO" S IBFLDNO=".401" G EDITIBD
 | 
|---|
 | 108 |  I IBIBDTYP="CV" S IBFLDNO=".402" G EDITIBD
 | 
|---|
 | 109 |  I IBIBDTYP="EC" S IBFLDNO=".403" G EDITIBD
 | 
|---|
 | 110 |  I IBIBDTYP="IR" S IBFLDNO=".404" G EDITIBD
 | 
|---|
 | 111 |  I IBIBDTYP="MST" S IBFLDNO=".405" G EDITIBD
 | 
|---|
 | 112 |  I IBIBDTYP="HNC" S IBFLDNO=".406" G EDITIBD
 | 
|---|
 | 113 |  I IBIBDTYP="SC" S IBFLDNO=".407" G EDITIBD
 | 
|---|
 | 114 |  I IBIBDTYP="BILL" S IBFLDNO=".301" G EDITIBD
 | 
|---|
 | 115 |  I IBIBDTYP="BILLED" S IBFLDNO=".302" G EDITIBD
 | 
|---|
 | 116 |  I IBIBDTYP="PLAN" S IBFLDNO=".303" G EDITIBD
 | 
|---|
 | 117 |  I IBIBDTYP="COST" S IBFLDNO=".304" G EDITIBD
 | 
|---|
 | 118 |  I IBIBDTYP="PAID" S IBFLDNO=".305" G EDITIBD
 | 
|---|
 | 119 |  I IBIBDTYP="CLOSE COMMENT" S IBFLDNO=".306" G EDITIBD
 | 
|---|
 | 120 |  I IBIBDTYP="CLOSE REASON" S IBFLDNO=".307" G EDITIBD
 | 
|---|
 | 121 |  I IBIBDTYP="DROP TO PAPER" S IBFLDNO=".308" G EDITIBD
 | 
|---|
 | 122 |  I IBIBDTYP="RELEASE COPAY" S IBFLDNO=".309" G EDITIBD
 | 
|---|
 | 123 |  I IBIBDTYP="USER" S IBFLDNO=".31" G EDITIBD
 | 
|---|
 | 124 |  I IBIBDTYP="PRESCRIPTION" S IBFLDNO=".201" G EDITIBD
 | 
|---|
 | 125 |  I IBIBDTYP="IEN" S IBFLDNO=".212" G EDITIBD
 | 
|---|
 | 126 |  Q 0
 | 
|---|
 | 127 | EDITIBD ;
 | 
|---|
 | 128 |  Q +$$FILLFLDS^IBNCPUT1(366.141,IBFLDNO,IBRECNO_","_IBDTIEN,IBVAL)
 | 
|---|
 | 129 |  ;------
 | 
|---|
 | 130 |  ;
 | 
|---|
 | 131 |  ; IBD("INS",n,1) = insurance array to bill in n order
 | 
|---|
 | 132 |  ;                  file 355.3 ien (group)^bin^pcn^payer sheet B1^group id^
 | 
|---|
 | 133 |  ;                  cardholder id^patient relationship code^
 | 
|---|
 | 134 |  ;                  cardholder first name^cardholder last name^
 | 
|---|
 | 135 |  ;                  home plan state^Payer Sheet B2^Payer Sheet B3^
 | 
|---|
 | 136 |  ;                  Software/Vendor Cert ID^Ins Name^
 | 
|---|
 | 137 |  ;                  (see RX^IBNCPDP1 for details)
 | 
|---|
 | 138 |  ;                  
 | 
|---|
 | 139 |  ;    ("INS",n,2) = dispensing fee^basis of cost determination^
 | 
|---|
 | 140 |  ;                  awp or tort rate or cost^gross amount due^
 | 
|---|
 | 141 |  ;                  administrative fee
 | 
|---|
 | 142 |  ;
 | 
|---|
 | 143 |  ;    ("INS",n,3) = group name^insurance phone number^plan ID ;
 | 
|---|
 | 144 |  ;
 | 
|---|
 | 145 | INS(IBDT,IBRECNO,IBDATE) ;
 | 
|---|
 | 146 |  N IBSET1,IBSET2,IBSET3,IBFLDNO,IBDTIEN,IBINSNO,RECNO,IBVAL
 | 
|---|
 | 147 |  S IBDTIEN=$O(^IBCNR(366.14,"B",IBDATE,0))
 | 
|---|
 | 148 |  Q:+IBDTIEN=0 0
 | 
|---|
 | 149 |  S IBINSNO=0
 | 
|---|
 | 150 |  F  S IBINSNO=$O(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO)) Q:+IBINSNO=0  D
 | 
|---|
 | 151 |  . S IBSET1=$G(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,1))
 | 
|---|
 | 152 |  . S IBSET2=$G(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,2))
 | 
|---|
 | 153 |  . S IBSET3=$G(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,3))
 | 
|---|
 | 154 |  . ;INS  IBINSNO
 | 
|---|
 | 155 |  . ;  1  IBSET1
 | 
|---|
 | 156 |  . ;  2  IBSET2
 | 
|---|
 | 157 |  . ;  3  IBSET3
 | 
|---|
 | 158 |  . S RECNO=$$ADDINS^IBNCPLOG(IBDTIEN,IBRECNO)
 | 
|---|
 | 159 |  . I +RECNO=0 D ERRMSG(" >INSURANCE node was not created") Q
 | 
|---|
 | 160 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.02,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,1))
 | 
|---|
 | 161 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.03,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,2))
 | 
|---|
 | 162 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.04,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,3))
 | 
|---|
 | 163 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.05,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,4))
 | 
|---|
 | 164 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.06,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,5))
 | 
|---|
 | 165 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.07,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,6))
 | 
|---|
 | 166 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.08,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,7))
 | 
|---|
 | 167 |  . ;
 | 
|---|
 | 168 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.101,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,8))
 | 
|---|
 | 169 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.102,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,9))
 | 
|---|
 | 170 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.103,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,10))
 | 
|---|
 | 171 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.104,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,11))
 | 
|---|
 | 172 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.105,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,12))
 | 
|---|
 | 173 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.106,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,13))
 | 
|---|
 | 174 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.107,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,14))
 | 
|---|
 | 175 |  . ;
 | 
|---|
 | 176 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.201,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,1))
 | 
|---|
 | 177 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.202,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,2))
 | 
|---|
 | 178 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.203,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,3))
 | 
|---|
 | 179 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.204,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,4))
 | 
|---|
 | 180 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.205,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,5))
 | 
|---|
 | 181 |  . ;
 | 
|---|
 | 182 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.301,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,1))
 | 
|---|
 | 183 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.302,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,2))
 | 
|---|
 | 184 |  . I +$$FILLFLDS^IBNCPUT1(366.1412,.303,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,3))
 | 
|---|
 | 185 |  Q RECNO
 | 
|---|
 | 186 |  ;
 | 
|---|
 | 187 |  ;create EVENT entry in #366.14
 | 
|---|
 | 188 |  ;IBDATE date in FM format
 | 
|---|
 | 189 |  ;EVNTRECN event recno required  
 | 
|---|
 | 190 |  ;EVNTTYPE event type (value for .01)
 | 
|---|
 | 191 |  ;returns ien for the event
 | 
|---|
 | 192 | ADDEVENT(IBDATE,EVNTRECN,EVNTTYPE) ;
 | 
|---|
 | 193 |  N IBIEN,IBX
 | 
|---|
 | 194 |  S IBIEN=+$O(^IBCNR(366.14,"B",IBDATE,0))
 | 
|---|
 | 195 |  I IBIEN=0 Q -1
 | 
|---|
 | 196 |  Q $$INSITEM^IBNCPUT1(366.141,IBIEN,$$EXT2INT^IBNCPUT1(EVNTTYPE),EVNTRECN)
 | 
|---|
 | 197 |  ;
 | 
|---|
 | 198 | DELDATE(IBIEN) ;
 | 
|---|
 | 199 |  N IBPDA,ERRARR
 | 
|---|
 | 200 |  S IBPDA(366.14,IBIEN_",",.01)="@"
 | 
|---|
 | 201 |  D FILE^DIE("","IBPDA","ERRARR")
 | 
|---|
 | 202 |  I $D(ERRARR) Q "0^"_ERRARR("DIERR",1,"TEXT",1)
 | 
|---|
 | 203 |  Q 1
 | 
|---|
 | 204 |  ;
 | 
|---|
 | 205 |  ;display error message 
 | 
|---|
 | 206 |  ;IBERRMSG - error message text
 | 
|---|
 | 207 | ERRMSG(IBERRMSG) ;
 | 
|---|
 | 208 |  D BMES^XPDUTL(IBERRMSG)
 | 
|---|
 | 209 |  Q
 | 
|---|
 | 210 |  ;
 | 
|---|
 | 211 |  ;send mail to the user
 | 
|---|
 | 212 | SNDMAIL(IBSUBJ,IBMESS1,IBMESS2) ;
 | 
|---|
 | 213 |  N DIFROM ;IMPORTANT - if you send e-mail from post-install !!!
 | 
|---|
 | 214 |  N TMPARR,XMDUZ,XMSUB,XMTEXT,XMY
 | 
|---|
 | 215 |  S TMPARR(1)=""
 | 
|---|
 | 216 |  S TMPARR(2)=IBMESS1
 | 
|---|
 | 217 |  S TMPARR(3)=IBMESS2
 | 
|---|
 | 218 |  S TMPARR(4)=""
 | 
|---|
 | 219 |  S XMSUB=IBSUBJ
 | 
|---|
 | 220 |  S XMDUZ="INTEGRATED BILLING PACKAGE"
 | 
|---|
 | 221 |  S XMTEXT="TMPARR("
 | 
|---|
 | 222 |  S XMY(DUZ)=""
 | 
|---|
 | 223 |  D ^XMD
 | 
|---|
 | 224 |  Q
 | 
|---|
 | 225 |  ;
 | 
|---|
 | 226 |  ;IB20P342
 | 
|---|