source: FOIAVistA/trunk/r/INTEGRATED_BILLING-IB-PRQ--IBD--IBQ--PRQS/IB20P297.m@ 1611

Last change on this file since 1611 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 4.0 KB
Line 
1IB20P297 ;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 ;
11POST ;
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 ;
23DQ ; 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 ;
81SET(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
Note: See TracBrowser for help on using the repository browser.