IB20P342 ;DALOI/SS - IB ECME EVNT REPORT ;01/03/2006
;;2.0;INTEGRATED BILLING;**342**;21-MAR-94;Build 18
;; Per VHA Directive 10-93-142, this routine should not be modified.
;;
Q
;
;move data from ^XTMP("IBNCPDP-..." to file #366.14
EN ;
N IBDT,IBRECNO,IBDATE,IBIBDTYP,IBRET,IBTYPE,IBDTIEN,IBCALVAL
N IBMSG1,IBMSG2
I +$O(^IBCNR(366.14,0)) D Q
. D ERRMSG("Conversion of IB ECME EVNT REPORT data will not be done in this site")
. D ERRMSG("since data have been already converted in the past.")
. ;send e-mail about post-install completion
. S IBMSG1="The conversion of data from the ^XTMP global array into the IB NCPDP"
. S IBMSG2="EVENT LOG file has been skipped as the data has already been converted."
. D SNDMAIL("IB*2.0*342 installation has been completed",IBMSG1,IBMSG2)
S IBDT="IBNCPDP-"
F S IBDT=$O(^XTMP(IBDT)) Q:IBDT'["IBNCPDP-" D
. S IBRECNO=0
. S IBDATE=+$P(IBDT,"-",2)
. D BMES^XPDUTL("Add date: "_IBDATE)
. S IBDTIEN=$$ADDDATE^IBNCPLOG(IBDATE)
. I +IBDTIEN=0 D ERRMSG("Cannot create a DATE entry for "_IBDATE)
. F S IBRECNO=$O(^XTMP(IBDT,IBRECNO)) Q:+IBRECNO=0 D
. . ;create node and .01 for events multiple
. . I '$D(^XTMP(IBDT,IBRECNO,"CALL")) D ERRMSG(" there is no CALL node in ^XTMP") Q
. . ;Add event (CALL) = ^XTMP(IBDT,IBRECNO,"CALL")
. . S IBCALVAL=$G(^XTMP(IBDT,IBRECNO,"CALL"))
. . I $$ADDEVENT(IBDATE,IBRECNO,IBCALVAL)<0 D ERRMSG(" EVENT entry wasn't created for "_IBCALVAL) Q
. . ;quit if was not created
. . S IBTYPE=""
. . ;Loop through fields...
. . F S IBTYPE=$O(^XTMP(IBDT,IBRECNO,IBTYPE)) Q:IBTYPE="" D
. . . I IBTYPE="CALL" Q ;was already created
. . . ;fields general fields (other than IBD)
. . . I IBTYPE="DEVICE" Q ;we do not use DEVICE in new file
. . . I IBTYPE'="IBD" S IBRET=$$GENFLDS(IBDT,IBRECNO,IBTYPE,IBDATE) D:+IBRET=0 Q
. . . . D ERRMSG(" >"_IBTYPE_":"_$P(IBRET,U,2))
. . . ;if IBD fields
. . . S IBIBDTYP=""
. . . F S IBIBDTYP=$O(^XTMP(IBDT,IBRECNO,IBTYPE,IBIBDTYP)) Q:IBIBDTYP="" D
. . . . ; if Insurance
. . . . I IBIBDTYP="INS" S IBRET=$$INS(IBDT,IBRECNO,IBDATE) D:+IBRET=0 Q
. . . . . D ERRMSG(" >>INSURANCE node was not populated")
. . . . ; other IBD fields
. . . . S IBRET=$$IBD(IBDT,IBRECNO,IBIBDTYP,IBDATE)
. . . . D:+IBRET=0 ERRMSG(" >>IBD field "_IBIBDTYP_" was not populated")
;send e-mail about conversion completion
S IBMSG1="The conversion of data from the ^XTMP global array into the IB NCPDP"
S IBMSG2="EVENT LOG file has successfully completed."
D SNDMAIL("IB*2.0*342 installation has been completed",IBMSG1,IBMSG2)
Q
;process the fields common for all messages
GENFLDS(IBDT,IBRECNO,IBTYPE,IBDATE) ;
N IBVAL,IBFLDNO,IBDTIEN,IBRETV
S IBRETV=0
S IBVAL=$G(^XTMP(IBDT,IBRECNO,IBTYPE))
S IBDTIEN=+$O(^IBCNR(366.14,"B",IBDATE,0))
Q:+IBDTIEN=0 0
I IBTYPE="CALL" S IBFLDNO=".01" G EDITFLD
I IBTYPE="DFN" S IBFLDNO=".03" G EDITFLD
I IBTYPE="JOB" S IBFLDNO=".04" G EDITFLD
I IBTYPE="TIME" S IBFLDNO=".05" G EDITFLD
I IBTYPE="USER" S IBFLDNO=".06" G EDITFLD
I IBTYPE="RESULT" D
. S IBRETV=+$$FILLFLDS^IBNCPUT1(366.141,".07",IBRECNO_","_IBDTIEN,+IBVAL)
. S IBRETV=+$$FILLFLDS^IBNCPUT1(366.141,".08",IBRECNO_","_IBDTIEN,$P(IBVAL,U,2))
Q IBRETV
EDITFLD ;
Q +$$FILLFLDS^IBNCPUT1(366.141,IBFLDNO,IBRECNO_","_IBDTIEN,IBVAL)
;---------
;store IBD array data
;input:
;IBDT -date node as it is in ^XTMP global, i.e. "IBNCPDP-3060214"
;IBRECNO -ien in [EVENTS] multiple
;IBIBDTYP -type subscript in IBD array (BILL, PAID, RESPONSE, etc)
;IBDATE -date
;Output:
;0 -failure
;1^record number - success
;
IBD(IBDT,IBRECNO,IBIBDTYP,IBDATE) ;
N IBVAL,IBFLDNO,IBDTIEN
S IBVAL=$G(^XTMP(IBDT,IBRECNO,"IBD",IBIBDTYP))
S IBDTIEN=$O(^IBCNR(366.14,"B",IBDATE,0))
Q:+IBDTIEN=0 0
I IBIBDTYP="AUTH #" S IBFLDNO=".11" G EDITIBD
I IBIBDTYP="BCID" S IBFLDNO=".12" G EDITIBD
I IBIBDTYP="CLAIMID" S IBFLDNO=".13" G EDITIBD
I IBIBDTYP="DFN" S IBFLDNO=".14" G EDITIBD
I IBIBDTYP="DIVISION" S IBFLDNO=".15" G EDITIBD
I IBIBDTYP="RESPONSE" S IBFLDNO=".16" G EDITIBD
I IBIBDTYP="REVERSAL REASON" S IBFLDNO=".17" G EDITIBD
I IBIBDTYP="RTS-DEL" S IBFLDNO=".18" G EDITIBD
I IBIBDTYP="STATUS" S IBFLDNO=".19" G EDITIBD
I IBIBDTYP="RX NO" S IBFLDNO=".202" G EDITIBD
I IBIBDTYP="FILL NUMBER" S IBFLDNO=".203" G EDITIBD
I IBIBDTYP="DRUG" S IBFLDNO=".204" G EDITIBD
I IBIBDTYP="NDC" S IBFLDNO=".205" G EDITIBD
I IBIBDTYP="FILL DATE" S IBFLDNO=".206" G EDITIBD
I IBIBDTYP="RELEASE DATE" S IBFLDNO=".207" G EDITIBD
I IBIBDTYP="QTY" S IBFLDNO=".208" G EDITIBD
I IBIBDTYP="DAYS SUPPLY" S IBFLDNO=".209" G EDITIBD
I IBIBDTYP="DEA" S IBFLDNO=".21" G EDITIBD
I IBIBDTYP="FILLED BY" S IBFLDNO=".211" G EDITIBD
I IBIBDTYP="AO" S IBFLDNO=".401" G EDITIBD
I IBIBDTYP="CV" S IBFLDNO=".402" G EDITIBD
I IBIBDTYP="EC" S IBFLDNO=".403" G EDITIBD
I IBIBDTYP="IR" S IBFLDNO=".404" G EDITIBD
I IBIBDTYP="MST" S IBFLDNO=".405" G EDITIBD
I IBIBDTYP="HNC" S IBFLDNO=".406" G EDITIBD
I IBIBDTYP="SC" S IBFLDNO=".407" G EDITIBD
I IBIBDTYP="BILL" S IBFLDNO=".301" G EDITIBD
I IBIBDTYP="BILLED" S IBFLDNO=".302" G EDITIBD
I IBIBDTYP="PLAN" S IBFLDNO=".303" G EDITIBD
I IBIBDTYP="COST" S IBFLDNO=".304" G EDITIBD
I IBIBDTYP="PAID" S IBFLDNO=".305" G EDITIBD
I IBIBDTYP="CLOSE COMMENT" S IBFLDNO=".306" G EDITIBD
I IBIBDTYP="CLOSE REASON" S IBFLDNO=".307" G EDITIBD
I IBIBDTYP="DROP TO PAPER" S IBFLDNO=".308" G EDITIBD
I IBIBDTYP="RELEASE COPAY" S IBFLDNO=".309" G EDITIBD
I IBIBDTYP="USER" S IBFLDNO=".31" G EDITIBD
I IBIBDTYP="PRESCRIPTION" S IBFLDNO=".201" G EDITIBD
I IBIBDTYP="IEN" S IBFLDNO=".212" G EDITIBD
Q 0
EDITIBD ;
Q +$$FILLFLDS^IBNCPUT1(366.141,IBFLDNO,IBRECNO_","_IBDTIEN,IBVAL)
;------
;
; IBD("INS",n,1) = insurance array to bill in n order
; file 355.3 ien (group)^bin^pcn^payer sheet B1^group id^
; cardholder id^patient relationship code^
; cardholder first name^cardholder last name^
; home plan state^Payer Sheet B2^Payer Sheet B3^
; Software/Vendor Cert ID^Ins Name^
; (see RX^IBNCPDP1 for details)
;
; ("INS",n,2) = dispensing fee^basis of cost determination^
; awp or tort rate or cost^gross amount due^
; administrative fee
;
; ("INS",n,3) = group name^insurance phone number^plan ID ;
;
INS(IBDT,IBRECNO,IBDATE) ;
N IBSET1,IBSET2,IBSET3,IBFLDNO,IBDTIEN,IBINSNO,RECNO,IBVAL
S IBDTIEN=$O(^IBCNR(366.14,"B",IBDATE,0))
Q:+IBDTIEN=0 0
S IBINSNO=0
F S IBINSNO=$O(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO)) Q:+IBINSNO=0 D
. S IBSET1=$G(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,1))
. S IBSET2=$G(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,2))
. S IBSET3=$G(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,3))
. ;INS IBINSNO
. ; 1 IBSET1
. ; 2 IBSET2
. ; 3 IBSET3
. S RECNO=$$ADDINS^IBNCPLOG(IBDTIEN,IBRECNO)
. I +RECNO=0 D ERRMSG(" >INSURANCE node was not created") Q
. I +$$FILLFLDS^IBNCPUT1(366.1412,.02,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,1))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.03,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,2))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.04,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,3))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.05,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,4))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.06,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,5))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.07,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,6))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.08,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,7))
. ;
. I +$$FILLFLDS^IBNCPUT1(366.1412,.101,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,8))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.102,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,9))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.103,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,10))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.104,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,11))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.105,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,12))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.106,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,13))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.107,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET1,U,14))
. ;
. I +$$FILLFLDS^IBNCPUT1(366.1412,.201,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,1))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.202,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,2))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.203,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,3))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.204,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,4))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.205,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET2,U,5))
. ;
. I +$$FILLFLDS^IBNCPUT1(366.1412,.301,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,1))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.302,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,2))
. I +$$FILLFLDS^IBNCPUT1(366.1412,.303,RECNO_","_IBRECNO_","_IBDTIEN,$P(IBSET3,U,3))
Q RECNO
;
;create EVENT entry in #366.14
;IBDATE date in FM format
;EVNTRECN event recno required
;EVNTTYPE event type (value for .01)
;returns ien for the event
ADDEVENT(IBDATE,EVNTRECN,EVNTTYPE) ;
N IBIEN,IBX
S IBIEN=+$O(^IBCNR(366.14,"B",IBDATE,0))
I IBIEN=0 Q -1
Q $$INSITEM^IBNCPUT1(366.141,IBIEN,$$EXT2INT^IBNCPUT1(EVNTTYPE),EVNTRECN)
;
DELDATE(IBIEN) ;
N IBPDA,ERRARR
S IBPDA(366.14,IBIEN_",",.01)="@"
D FILE^DIE("","IBPDA","ERRARR")
I $D(ERRARR) Q "0^"_ERRARR("DIERR",1,"TEXT",1)
Q 1
;
;display error message
;IBERRMSG - error message text
ERRMSG(IBERRMSG) ;
D BMES^XPDUTL(IBERRMSG)
Q
;
;send mail to the user
SNDMAIL(IBSUBJ,IBMESS1,IBMESS2) ;
N DIFROM ;IMPORTANT - if you send e-mail from post-install !!!
N TMPARR,XMDUZ,XMSUB,XMTEXT,XMY
S TMPARR(1)=""
S TMPARR(2)=IBMESS1
S TMPARR(3)=IBMESS2
S TMPARR(4)=""
S XMSUB=IBSUBJ
S XMDUZ="INTEGRATED BILLING PACKAGE"
S XMTEXT="TMPARR("
S XMY(DUZ)=""
D ^XMD
Q
;
;IB20P342
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIB20P342 9987 printed Oct 16, 2024@18:02:58 Page 2
IB20P342 ;DALOI/SS - IB ECME EVNT REPORT ;01/03/2006
+1 ;;2.0;INTEGRATED BILLING;**342**;21-MAR-94;Build 18
+2 ;; Per VHA Directive 10-93-142, this routine should not be modified.
+3 ;;
+4 QUIT
+5 ;
+6 ;move data from ^XTMP("IBNCPDP-..." to file #366.14
EN ;
+1 NEW IBDT,IBRECNO,IBDATE,IBIBDTYP,IBRET,IBTYPE,IBDTIEN,IBCALVAL
+2 NEW IBMSG1,IBMSG2
+3 IF +$ORDER(^IBCNR(366.14,0))
Begin DoDot:1
+4 DO ERRMSG("Conversion of IB ECME EVNT REPORT data will not be done in this site")
+5 DO ERRMSG("since data have been already converted in the past.")
+6 ;send e-mail about post-install completion
+7 SET IBMSG1="The conversion of data from the ^XTMP global array into the IB NCPDP"
+8 SET IBMSG2="EVENT LOG file has been skipped as the data has already been converted."
+9 DO SNDMAIL("IB*2.0*342 installation has been completed",IBMSG1,IBMSG2)
End DoDot:1
QUIT
+10 SET IBDT="IBNCPDP-"
+11 FOR
SET IBDT=$ORDER(^XTMP(IBDT))
if IBDT'["IBNCPDP-"
QUIT
Begin DoDot:1
+12 SET IBRECNO=0
+13 SET IBDATE=+$PIECE(IBDT,"-",2)
+14 DO BMES^XPDUTL("Add date: "_IBDATE)
+15 SET IBDTIEN=$$ADDDATE^IBNCPLOG(IBDATE)
+16 IF +IBDTIEN=0
DO ERRMSG("Cannot create a DATE entry for "_IBDATE)
+17 FOR
SET IBRECNO=$ORDER(^XTMP(IBDT,IBRECNO))
if +IBRECNO=0
QUIT
Begin DoDot:2
+18 ;create node and .01 for events multiple
+19 IF '$DATA(^XTMP(IBDT,IBRECNO,"CALL"))
DO ERRMSG(" there is no CALL node in ^XTMP")
QUIT
+20 ;Add event (CALL) = ^XTMP(IBDT,IBRECNO,"CALL")
+21 SET IBCALVAL=$GET(^XTMP(IBDT,IBRECNO,"CALL"))
+22 IF $$ADDEVENT(IBDATE,IBRECNO,IBCALVAL)<0
DO ERRMSG(" EVENT entry wasn't created for "_IBCALVAL)
QUIT
+23 ;quit if was not created
+24 SET IBTYPE=""
+25 ;Loop through fields...
+26 FOR
SET IBTYPE=$ORDER(^XTMP(IBDT,IBRECNO,IBTYPE))
if IBTYPE=""
QUIT
Begin DoDot:3
+27 ;was already created
IF IBTYPE="CALL"
QUIT
+28 ;fields general fields (other than IBD)
+29 ;we do not use DEVICE in new file
IF IBTYPE="DEVICE"
QUIT
+30 IF IBTYPE'="IBD"
SET IBRET=$$GENFLDS(IBDT,IBRECNO,IBTYPE,IBDATE)
if +IBRET=0
Begin DoDot:4
+31 DO ERRMSG(" >"_IBTYPE_":"_$PIECE(IBRET,U,2))
End DoDot:4
QUIT
+32 ;if IBD fields
+33 SET IBIBDTYP=""
+34 FOR
SET IBIBDTYP=$ORDER(^XTMP(IBDT,IBRECNO,IBTYPE,IBIBDTYP))
if IBIBDTYP=""
QUIT
Begin DoDot:4
+35 ; if Insurance
+36 IF IBIBDTYP="INS"
SET IBRET=$$INS(IBDT,IBRECNO,IBDATE)
if +IBRET=0
Begin DoDot:5
+37 DO ERRMSG(" >>INSURANCE node was not populated")
End DoDot:5
QUIT
+38 ; other IBD fields
+39 SET IBRET=$$IBD(IBDT,IBRECNO,IBIBDTYP,IBDATE)
+40 if +IBRET=0
DO ERRMSG(" >>IBD field "_IBIBDTYP_" was not populated")
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+41 ;send e-mail about conversion completion
+42 SET IBMSG1="The conversion of data from the ^XTMP global array into the IB NCPDP"
+43 SET IBMSG2="EVENT LOG file has successfully completed."
+44 DO SNDMAIL("IB*2.0*342 installation has been completed",IBMSG1,IBMSG2)
+45 QUIT
+46 ;process the fields common for all messages
GENFLDS(IBDT,IBRECNO,IBTYPE,IBDATE) ;
+1 NEW IBVAL,IBFLDNO,IBDTIEN,IBRETV
+2 SET IBRETV=0
+3 SET IBVAL=$GET(^XTMP(IBDT,IBRECNO,IBTYPE))
+4 SET IBDTIEN=+$ORDER(^IBCNR(366.14,"B",IBDATE,0))
+5 if +IBDTIEN=0
QUIT 0
+6 IF IBTYPE="CALL"
SET IBFLDNO=".01"
GOTO EDITFLD
+7 IF IBTYPE="DFN"
SET IBFLDNO=".03"
GOTO EDITFLD
+8 IF IBTYPE="JOB"
SET IBFLDNO=".04"
GOTO EDITFLD
+9 IF IBTYPE="TIME"
SET IBFLDNO=".05"
GOTO EDITFLD
+10 IF IBTYPE="USER"
SET IBFLDNO=".06"
GOTO EDITFLD
+11 IF IBTYPE="RESULT"
Begin DoDot:1
+12 SET IBRETV=+$$FILLFLDS^IBNCPUT1(366.141,".07",IBRECNO_","_IBDTIEN,+IBVAL)
+13 SET IBRETV=+$$FILLFLDS^IBNCPUT1(366.141,".08",IBRECNO_","_IBDTIEN,$PIECE(IBVAL,U,2))
End DoDot:1
+14 QUIT IBRETV
EDITFLD ;
+1 QUIT +$$FILLFLDS^IBNCPUT1(366.141,IBFLDNO,IBRECNO_","_IBDTIEN,IBVAL)
+2 ;---------
+3 ;store IBD array data
+4 ;input:
+5 ;IBDT -date node as it is in ^XTMP global, i.e. "IBNCPDP-3060214"
+6 ;IBRECNO -ien in [EVENTS] multiple
+7 ;IBIBDTYP -type subscript in IBD array (BILL, PAID, RESPONSE, etc)
+8 ;IBDATE -date
+9 ;Output:
+10 ;0 -failure
+11 ;1^record number - success
+12 ;
IBD(IBDT,IBRECNO,IBIBDTYP,IBDATE) ;
+1 NEW IBVAL,IBFLDNO,IBDTIEN
+2 SET IBVAL=$GET(^XTMP(IBDT,IBRECNO,"IBD",IBIBDTYP))
+3 SET IBDTIEN=$ORDER(^IBCNR(366.14,"B",IBDATE,0))
+4 if +IBDTIEN=0
QUIT 0
+5 IF IBIBDTYP="AUTH #"
SET IBFLDNO=".11"
GOTO EDITIBD
+6 IF IBIBDTYP="BCID"
SET IBFLDNO=".12"
GOTO EDITIBD
+7 IF IBIBDTYP="CLAIMID"
SET IBFLDNO=".13"
GOTO EDITIBD
+8 IF IBIBDTYP="DFN"
SET IBFLDNO=".14"
GOTO EDITIBD
+9 IF IBIBDTYP="DIVISION"
SET IBFLDNO=".15"
GOTO EDITIBD
+10 IF IBIBDTYP="RESPONSE"
SET IBFLDNO=".16"
GOTO EDITIBD
+11 IF IBIBDTYP="REVERSAL REASON"
SET IBFLDNO=".17"
GOTO EDITIBD
+12 IF IBIBDTYP="RTS-DEL"
SET IBFLDNO=".18"
GOTO EDITIBD
+13 IF IBIBDTYP="STATUS"
SET IBFLDNO=".19"
GOTO EDITIBD
+14 IF IBIBDTYP="RX NO"
SET IBFLDNO=".202"
GOTO EDITIBD
+15 IF IBIBDTYP="FILL NUMBER"
SET IBFLDNO=".203"
GOTO EDITIBD
+16 IF IBIBDTYP="DRUG"
SET IBFLDNO=".204"
GOTO EDITIBD
+17 IF IBIBDTYP="NDC"
SET IBFLDNO=".205"
GOTO EDITIBD
+18 IF IBIBDTYP="FILL DATE"
SET IBFLDNO=".206"
GOTO EDITIBD
+19 IF IBIBDTYP="RELEASE DATE"
SET IBFLDNO=".207"
GOTO EDITIBD
+20 IF IBIBDTYP="QTY"
SET IBFLDNO=".208"
GOTO EDITIBD
+21 IF IBIBDTYP="DAYS SUPPLY"
SET IBFLDNO=".209"
GOTO EDITIBD
+22 IF IBIBDTYP="DEA"
SET IBFLDNO=".21"
GOTO EDITIBD
+23 IF IBIBDTYP="FILLED BY"
SET IBFLDNO=".211"
GOTO EDITIBD
+24 IF IBIBDTYP="AO"
SET IBFLDNO=".401"
GOTO EDITIBD
+25 IF IBIBDTYP="CV"
SET IBFLDNO=".402"
GOTO EDITIBD
+26 IF IBIBDTYP="EC"
SET IBFLDNO=".403"
GOTO EDITIBD
+27 IF IBIBDTYP="IR"
SET IBFLDNO=".404"
GOTO EDITIBD
+28 IF IBIBDTYP="MST"
SET IBFLDNO=".405"
GOTO EDITIBD
+29 IF IBIBDTYP="HNC"
SET IBFLDNO=".406"
GOTO EDITIBD
+30 IF IBIBDTYP="SC"
SET IBFLDNO=".407"
GOTO EDITIBD
+31 IF IBIBDTYP="BILL"
SET IBFLDNO=".301"
GOTO EDITIBD
+32 IF IBIBDTYP="BILLED"
SET IBFLDNO=".302"
GOTO EDITIBD
+33 IF IBIBDTYP="PLAN"
SET IBFLDNO=".303"
GOTO EDITIBD
+34 IF IBIBDTYP="COST"
SET IBFLDNO=".304"
GOTO EDITIBD
+35 IF IBIBDTYP="PAID"
SET IBFLDNO=".305"
GOTO EDITIBD
+36 IF IBIBDTYP="CLOSE COMMENT"
SET IBFLDNO=".306"
GOTO EDITIBD
+37 IF IBIBDTYP="CLOSE REASON"
SET IBFLDNO=".307"
GOTO EDITIBD
+38 IF IBIBDTYP="DROP TO PAPER"
SET IBFLDNO=".308"
GOTO EDITIBD
+39 IF IBIBDTYP="RELEASE COPAY"
SET IBFLDNO=".309"
GOTO EDITIBD
+40 IF IBIBDTYP="USER"
SET IBFLDNO=".31"
GOTO EDITIBD
+41 IF IBIBDTYP="PRESCRIPTION"
SET IBFLDNO=".201"
GOTO EDITIBD
+42 IF IBIBDTYP="IEN"
SET IBFLDNO=".212"
GOTO EDITIBD
+43 QUIT 0
EDITIBD ;
+1 QUIT +$$FILLFLDS^IBNCPUT1(366.141,IBFLDNO,IBRECNO_","_IBDTIEN,IBVAL)
+2 ;------
+3 ;
+4 ; IBD("INS",n,1) = insurance array to bill in n order
+5 ; file 355.3 ien (group)^bin^pcn^payer sheet B1^group id^
+6 ; cardholder id^patient relationship code^
+7 ; cardholder first name^cardholder last name^
+8 ; home plan state^Payer Sheet B2^Payer Sheet B3^
+9 ; Software/Vendor Cert ID^Ins Name^
+10 ; (see RX^IBNCPDP1 for details)
+11 ;
+12 ; ("INS",n,2) = dispensing fee^basis of cost determination^
+13 ; awp or tort rate or cost^gross amount due^
+14 ; administrative fee
+15 ;
+16 ; ("INS",n,3) = group name^insurance phone number^plan ID ;
+17 ;
INS(IBDT,IBRECNO,IBDATE) ;
+1 NEW IBSET1,IBSET2,IBSET3,IBFLDNO,IBDTIEN,IBINSNO,RECNO,IBVAL
+2 SET IBDTIEN=$ORDER(^IBCNR(366.14,"B",IBDATE,0))
+3 if +IBDTIEN=0
QUIT 0
+4 SET IBINSNO=0
+5 FOR
SET IBINSNO=$ORDER(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO))
if +IBINSNO=0
QUIT
Begin DoDot:1
+6 SET IBSET1=$GET(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,1))
+7 SET IBSET2=$GET(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,2))
+8 SET IBSET3=$GET(^XTMP(IBDT,IBRECNO,"IBD","INS",IBINSNO,3))
+9 ;INS IBINSNO
+10 ; 1 IBSET1
+11 ; 2 IBSET2
+12 ; 3 IBSET3
+13 SET RECNO=$$ADDINS^IBNCPLOG(IBDTIEN,IBRECNO)
+14 IF +RECNO=0
DO ERRMSG(" >INSURANCE node was not created")
QUIT
+15 IF +$$FILLFLDS^IBNCPUT1(366.1412,.02,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,1))
+16 IF +$$FILLFLDS^IBNCPUT1(366.1412,.03,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,2))
+17 IF +$$FILLFLDS^IBNCPUT1(366.1412,.04,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,3))
+18 IF +$$FILLFLDS^IBNCPUT1(366.1412,.05,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,4))
+19 IF +$$FILLFLDS^IBNCPUT1(366.1412,.06,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,5))
+20 IF +$$FILLFLDS^IBNCPUT1(366.1412,.07,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,6))
+21 IF +$$FILLFLDS^IBNCPUT1(366.1412,.08,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,7))
+22 ;
+23 IF +$$FILLFLDS^IBNCPUT1(366.1412,.101,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,8))
+24 IF +$$FILLFLDS^IBNCPUT1(366.1412,.102,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,9))
+25 IF +$$FILLFLDS^IBNCPUT1(366.1412,.103,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,10))
+26 IF +$$FILLFLDS^IBNCPUT1(366.1412,.104,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,11))
+27 IF +$$FILLFLDS^IBNCPUT1(366.1412,.105,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,12))
+28 IF +$$FILLFLDS^IBNCPUT1(366.1412,.106,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,13))
+29 IF +$$FILLFLDS^IBNCPUT1(366.1412,.107,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET1,U,14))
+30 ;
+31 IF +$$FILLFLDS^IBNCPUT1(366.1412,.201,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET2,U,1))
+32 IF +$$FILLFLDS^IBNCPUT1(366.1412,.202,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET2,U,2))
+33 IF +$$FILLFLDS^IBNCPUT1(366.1412,.203,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET2,U,3))
+34 IF +$$FILLFLDS^IBNCPUT1(366.1412,.204,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET2,U,4))
+35 IF +$$FILLFLDS^IBNCPUT1(366.1412,.205,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET2,U,5))
+36 ;
+37 IF +$$FILLFLDS^IBNCPUT1(366.1412,.301,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET3,U,1))
+38 IF +$$FILLFLDS^IBNCPUT1(366.1412,.302,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET3,U,2))
+39 IF +$$FILLFLDS^IBNCPUT1(366.1412,.303,RECNO_","_IBRECNO_","_IBDTIEN,$PIECE(IBSET3,U,3))
End DoDot:1
+40 QUIT RECNO
+41 ;
+42 ;create EVENT entry in #366.14
+43 ;IBDATE date in FM format
+44 ;EVNTRECN event recno required
+45 ;EVNTTYPE event type (value for .01)
+46 ;returns ien for the event
ADDEVENT(IBDATE,EVNTRECN,EVNTTYPE) ;
+1 NEW IBIEN,IBX
+2 SET IBIEN=+$ORDER(^IBCNR(366.14,"B",IBDATE,0))
+3 IF IBIEN=0
QUIT -1
+4 QUIT $$INSITEM^IBNCPUT1(366.141,IBIEN,$$EXT2INT^IBNCPUT1(EVNTTYPE),EVNTRECN)
+5 ;
DELDATE(IBIEN) ;
+1 NEW IBPDA,ERRARR
+2 SET IBPDA(366.14,IBIEN_",",.01)="@"
+3 DO FILE^DIE("","IBPDA","ERRARR")
+4 IF $DATA(ERRARR)
QUIT "0^"_ERRARR("DIERR",1,"TEXT",1)
+5 QUIT 1
+6 ;
+7 ;display error message
+8 ;IBERRMSG - error message text
ERRMSG(IBERRMSG) ;
+1 DO BMES^XPDUTL(IBERRMSG)
+2 QUIT
+3 ;
+4 ;send mail to the user
SNDMAIL(IBSUBJ,IBMESS1,IBMESS2) ;
+1 ;IMPORTANT - if you send e-mail from post-install !!!
NEW DIFROM
+2 NEW TMPARR,XMDUZ,XMSUB,XMTEXT,XMY
+3 SET TMPARR(1)=""
+4 SET TMPARR(2)=IBMESS1
+5 SET TMPARR(3)=IBMESS2
+6 SET TMPARR(4)=""
+7 SET XMSUB=IBSUBJ
+8 SET XMDUZ="INTEGRATED BILLING PACKAGE"
+9 SET XMTEXT="TMPARR("
+10 SET XMY(DUZ)=""
+11 DO ^XMD
+12 QUIT
+13 ;
+14 ;IB20P342