Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IB20P342

IB20P342.m

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