[613] | 1 | IB20P297 ;OAK/ELZ - POST INSTALL ROUTINE FOR IB*2*297 ;03-JAN-2005
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**297**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; This is the post install routine for IB*2*297. This routine will
|
---|
| 6 | ; run through the patient's insurance companies and identify insurance
|
---|
| 7 | ; companies that do not have a plan associated with them.
|
---|
| 8 | ; This routine can be deleted after the install, but you may want to
|
---|
| 9 | ; keep it to review the insurance data again in the future.
|
---|
| 10 | ;
|
---|
| 11 | POST ;
|
---|
| 12 | N IBMSG,ZTRTN,ZTDESC,ZTSK
|
---|
| 13 | S IBMSG(1)="I need to search for patient's with bad insurance data. You should queue"
|
---|
| 14 | S IBMSG(2)="this task to run a non-peek hours."
|
---|
| 15 | D MES^XPDUTL(.IBMSG)
|
---|
| 16 | ;
|
---|
| 17 | S ZTRTN="DQ^IB20P297",ZTDESC="BAD INSURANCE DATA LIST",ZTIO=""
|
---|
| 18 | D ^%ZTLOAD
|
---|
| 19 | D MES^XPDUTL($S($G(ZTSK):"Task Queued #"_ZTSK,1:"Task not scheduled, you can run this by calling POST^IB20P297"))
|
---|
| 20 | ;
|
---|
| 21 | Q
|
---|
| 22 | ;
|
---|
| 23 | DQ ; tasked entry point
|
---|
| 24 | N DFN,IBINS,IBINSM,IBGRP,IBLINE,IBSAVE,XMDUZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZ,DIK,DA
|
---|
| 25 | K ^TMP("IB297",$J)
|
---|
| 26 | S IBLINE=8,IBSAVE=""
|
---|
| 27 | ;
|
---|
| 28 | ;
|
---|
| 29 | ; first check out the AB xref to make sure everything is there
|
---|
| 30 | S DFN=0 F S DFN=$O(^DPT(DFN)) Q:'DFN S IBINSM=0 F S IBINSM=$O(^DPT(DFN,.312,IBINSM)) Q:'IBINSM S IBINS=+$G(^DPT(DFN,.312,IBINSM,0)) D
|
---|
| 31 | . I $D(^DPT("AB",IBINS,DFN,IBINSM)) Q
|
---|
| 32 | . I IBINS,DFN,IBINSM S DIK="^DPT("_DFN_",.312,",DA(1)=DFN,DA=IBINSM,DIK(1)=.01 D EN^DIK
|
---|
| 33 | ;
|
---|
| 34 | ;
|
---|
| 35 | S IBINS=0 F S IBINS=$O(^DPT("AB",IBINS)) Q:'IBINS S DFN=0 F S DFN=$O(^DPT("AB",IBINS,DFN)) Q:'DFN S IBINSM=0 F S IBINSM=$O(^DPT("AB",IBINS,DFN,IBINSM)) Q:'IBINSM D
|
---|
| 36 | . ;
|
---|
| 37 | . ; first verify good x-ref or clean up
|
---|
| 38 | . S IBINS0=$G(^DPT(DFN,.312,IBINSM,0))
|
---|
| 39 | . I 'IBINS0 K ^DPT("AB",IBINS,DFN,IBINSM) Q
|
---|
| 40 | . ;
|
---|
| 41 | . ; do i have a plan?
|
---|
| 42 | . I '$P(IBINS0,"^",18) D SET(DFN,IBINS,IBINSM,"No Plan in Patient File") Q
|
---|
| 43 | . ;
|
---|
| 44 | . ; good pointer to 36?
|
---|
| 45 | . I '$D(^DIC(36,+IBINS0,0)) D SET(DFN,IBINS,IBINSM,"Ins Co not in File 36") Q
|
---|
| 46 | . ;
|
---|
| 47 | . ; good pointer in 355.3?
|
---|
| 48 | . I '$D(^IBA(355.3,+$P(IBINS0,"^",18),0)) D SET(DFN,IBINS,IBINSM,"Plan pointer not found") Q
|
---|
| 49 | . ;
|
---|
| 50 | . ; check out 355.3 to 36
|
---|
| 51 | . I $P(IBINS0,"^")'=$P($G(^IBA(355.3,+$P(IBINS0,"^",18),0)),"^") D SET(DFN,IBINS,IBINSM,"Plan to Ins Co Mis-match")
|
---|
| 52 | ;
|
---|
| 53 | ; data all looks good
|
---|
| 54 | I '$D(^TMP("IB297",$J)) S ^TMP("IB297",$J,IBLINE,0)="Data looks good, no problems to report"
|
---|
| 55 | ;
|
---|
| 56 | ; start message
|
---|
| 57 | S IBGRP=$P($G(^IBE(350.9,1,4)),"^",4),IBGRP=$S(IBGRP:$$EXTERNAL^DILFD(350.9,4.04,"",IBGRP),1:"IB NEW INSURANCE")
|
---|
| 58 | ;
|
---|
| 59 | ; build header
|
---|
| 60 | S ^TMP("IB297",$J,1,0)="The following insurance entries have been found with errors that need to"
|
---|
| 61 | S ^TMP("IB297",$J,2,0)="be resolved. You should use the ""Patient Insurance Info View/Edit [IBCN"
|
---|
| 62 | S ^TMP("IB297",$J,3,0)="PATIENT INSURANCE]"" option to edit the patient's insurance information"
|
---|
| 63 | S ^TMP("IB297",$J,4,0)="and correct as needed. If you just see a NULL value in a field that"
|
---|
| 64 | S ^TMP("IB297",$J,5,0)="indicates either the pointer value in a field is invalid or missing. You"
|
---|
| 65 | S ^TMP("IB297",$J,6,0)="may need to involve your IRM to resolve some of the issues on this report."
|
---|
| 66 | S ^TMP("IB297",$J,7,0)=""
|
---|
| 67 | ;
|
---|
| 68 | ; send away
|
---|
| 69 | S XMDUZ=$S(DUZ:DUZ,1:.5)
|
---|
| 70 | S XMSUBJ="INSURANCE FILE CLEAN UP NEEDED"
|
---|
| 71 | S XMBODY="^TMP(""IB297"",$J)"
|
---|
| 72 | S (XMTO("G.IB NEW INSURANCE"),XMTO($S(DUZ:DUZ,1:.5)))=""
|
---|
| 73 | S XMINSTR("FROM")="INTEGRATED BILLING PACKAGE"
|
---|
| 74 | D SENDMSG^XMXAPI(XMDUZ,XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZ)
|
---|
| 75 | ;
|
---|
| 76 | ;
|
---|
| 77 | K ^TMP("IB297",$J)
|
---|
| 78 | ;
|
---|
| 79 | Q
|
---|
| 80 | ;
|
---|
| 81 | SET(DFN,IBINS,IBINSM,IBERR) ;
|
---|
| 82 | N IBDFN0,IBINS0
|
---|
| 83 | ;
|
---|
| 84 | ; new ins co?
|
---|
| 85 | I IBSAVE'=IBINS S IBLINE=IBLINE+1,^TMP("IB297",$J,IBLINE,0)="",IBLINE=IBLINE+1,^TMP("IB297",$J,IBLINE,0)=" Insurance Co: "_$$EXTERNAL^DILFD(2.312,.01,"",IBINS),IBSAVE=IBINS
|
---|
| 86 | ;
|
---|
| 87 | ; get some data
|
---|
| 88 | S IBDFN0=$G(^DPT(DFN,0)),IBINS0=$G(^DPT(DFN,.312,+IBINSM,0))
|
---|
| 89 | ;
|
---|
| 90 | ; set the line
|
---|
| 91 | S IBLINE=IBLINE+1
|
---|
| 92 | S ^TMP("IB297",$J,IBLINE,0)=$$LJ^XLFSTR($P(IBDFN0,"^"),"20T")_" "_$$LJ^XLFSTR($P(IBDFN0,"^",9),"10T")_" "_$$LJ^XLFSTR($$EXTERNAL^DILFD(2.312,.18,"",$P(IBINS0,"^",18)),"15T")_" "_IBERR
|
---|
| 93 | ;S ^TMP("IB297",$J,IBLINE,0)=$E($P(IBDFN0,"^"),1,20)_" "_$P(IBDFN0,"^",9)_" "_$E($$EXTERNAL^DILFD(2.312,.18,"",$P(IBINS0,"^",18)),1,15)_" "_IBERR
|
---|
| 94 | ;
|
---|
| 95 | Q
|
---|