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