1 | IBCNSM ;ALB/AAS - INSURANCE MANAGEMENT, LIST MANAGER INIT ROUTINE ;21-OCT-92
|
---|
2 | ;;2.0;INTEGRATED BILLING;**28,46,56,52,82,103,199,276**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;also used for IA #4694
|
---|
6 | ;
|
---|
7 | % ; -- main entry point
|
---|
8 | EN ;
|
---|
9 | D DT^DICRW
|
---|
10 | K XQORS,VALMEVL
|
---|
11 | D EN^VALM("IBCNS INSURANCE MANAGEMENT")
|
---|
12 | ENQ K DFN
|
---|
13 | Q
|
---|
14 | ;
|
---|
15 | ;
|
---|
16 | INIT ; -- set up inital variables
|
---|
17 | S U="^",VALMCNT=0,VALMBG=1
|
---|
18 | K ^TMP("IBNSM",$J),^TMP("IBNSMDX",$J)
|
---|
19 | ;K I,X,SDBEG,SDEND,SDB,XQORNOD,SDFN,SDCLN,DA,DR,DIE,DNM,DQ
|
---|
20 | S DIR(0)="350.9,4.02",DIR("A")="Select Patient Name or Insurance Co."
|
---|
21 | D ^DIR K DIR I $D(DIRUT) S VALMQUIT="" G INITQ
|
---|
22 | S IBY=Y
|
---|
23 | I IBY["DPT(" S IBTYP="P",DFN=+IBY D BLD
|
---|
24 | I IBY["DIC(" S IBTYP="I",IBCNS=+IBY D EN^VALM("IBCNS INSURANCE COMPANY") S VALMQUIT=""
|
---|
25 | ;
|
---|
26 | INITQ Q
|
---|
27 | ;
|
---|
28 | ;
|
---|
29 | PAT ; -- select patient you are working with
|
---|
30 | N DPTNOFZY S DPTNOFZY=1 ;Suppress PATIENT file fuzzy lookups
|
---|
31 | S DIC(0)="AEQMN",DIC="^DPT(" D ^DIC I +Y<1 S VALMQUIT="" Q
|
---|
32 | S DFN=+Y
|
---|
33 | Q
|
---|
34 | ;
|
---|
35 | ;
|
---|
36 | BLD ; -- build list of bills
|
---|
37 | K ^TMP("IBNSM",$J),^TMP("IBNSMDX",$J)
|
---|
38 | N I,J,K,IBHOLD,IBGRP,IBINS,IBCNT,IBCDFND,IBCPOLD
|
---|
39 | S (IBN,IBCNT,VALMCNT)=0,IBFILE=2
|
---|
40 | ;
|
---|
41 | ; -- find all ins. co data
|
---|
42 | K IBINS S IBINS=0
|
---|
43 | D POL^IBCNSU41(DFN)
|
---|
44 | D ALL^IBCNS1(DFN,"IBINS")
|
---|
45 | I $G(IBINS(0)) S K=0 F S K=$O(IBINS(K)) Q:'K D
|
---|
46 | .; -- add to list
|
---|
47 | .W "."
|
---|
48 | .S IBCNT=IBCNT+1
|
---|
49 | .S IBCDFND=$G(IBINS(K,0))
|
---|
50 | .S IBCDFND1=$G(IBINS(K,1))
|
---|
51 | .S IBCPOLD=$G(^IBA(355.3,+$P($G(IBINS(K,0)),"^",18),0))
|
---|
52 | .S X=""
|
---|
53 | .S X=$$SETFLD^VALM1(IBCNT,X,"NUMBER")
|
---|
54 | .I $D(^DIC(36,+IBCDFND,0)) S X=$$SETFLD^VALM1($P(^(0),"^"),X,"NAME")
|
---|
55 | .S X=$$SETFLD^VALM1($E($P(IBCDFND,"^",2),1,14),X,"POLICY")
|
---|
56 | .S IBHOLD=$P(IBCDFND,"^",6),X=$$SETFLD^VALM1($S(IBHOLD="v":"SELF",IBHOLD="s":"SPOUSE",IBHOLD="o":"OTHER",1:"UNKNOWN"),X,"HOLDER")
|
---|
57 | .S X=$$SETFLD^VALM1($E($$GRP^IBCNS($P(IBCDFND,"^",18)),1,10),X,"GROUP")
|
---|
58 | .S X=$$SETFLD^VALM1($$DAT1^IBOUTL($P(IBCDFND,"^",8)),X,"EFFDT")
|
---|
59 | .S X=$$SETFLD^VALM1($$DAT1^IBOUTL($P(IBCDFND,"^",4)),X,"EXPIRE")
|
---|
60 | .S X=$$SETFLD^VALM1($E($P($G(^IBE(355.1,+$P(IBCPOLD,"^",9),0)),U),1,8),X,"TYPE")
|
---|
61 | .S X=$$SETFLD^VALM1($P($G(^IBE(355.1,+$P($G(^IBA(355.3,+$P(IBCDFND,"^",18),0)),"^",9),0)),"^"),X,"TYPEPOL")
|
---|
62 | .S X=$$SETFLD^VALM1($E($P($G(^VA(200,+$P(IBCDFND1,"^",4),0)),U),1,15),X,"VERIFIED BY")
|
---|
63 | .S X=$$SETFLD^VALM1($$DAT1^IBOUTL($P(IBCDFND1,"^",3)),X,"VERIFIED ON")
|
---|
64 | .S X=$$SETFLD^VALM1($$YN($P(IBCPOLD,"^",6)),X,"PRECERT")
|
---|
65 | .S X=$$SETFLD^VALM1($$YN($P(IBCPOLD,"^",5)),X,"UR")
|
---|
66 | .S X=$$SETFLD^VALM1($$YN($P(IBCDFND,"^",20)),X,"COB")
|
---|
67 | .K IBHOLD,IBGRP
|
---|
68 | .D SET(X)
|
---|
69 | I '$D(^TMP("IBNSM",$J)) D
|
---|
70 | .S VALMCNT=2,IBCNT=2,^TMP("IBNSM",$J,1,0)=" "
|
---|
71 | .S ^TMP("IBNSM",$J,2,0)=" No Insurance Policies on file for this patient."
|
---|
72 | S X=$G(^IBA(354,DFN,60)) I X D
|
---|
73 | .S IBCNT=IBCNT+1
|
---|
74 | .S ^TMP("IBNSM",$J,IBCNT,0)=" Verification of No Coverage "_$$FMTE^XLFDT(X)
|
---|
75 | BLDQ ;
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | SET(X) ; -- set arrays
|
---|
79 | S VALMCNT=VALMCNT+1,^TMP("IBNSM",$J,VALMCNT,0)=X
|
---|
80 | S ^TMP("IBNSM",$J,"IDX",VALMCNT,IBCNT)=""
|
---|
81 | S ^TMP("IBNSMDX",$J,IBCNT)=VALMCNT_"^"_IBFILE_"^"_DFN_"^"_K_"^"_IBCDFND
|
---|
82 | Q
|
---|
83 | ;
|
---|
84 | HDR ; -- screen header for initial screen
|
---|
85 | D PID^VADPT
|
---|
86 | S VALMHDR(1)="Insurance Management for Patient: "_$E($P($G(^DPT(DFN,0)),"^"),1,20)_" "_$E($G(^(0)),1)_VA("BID")
|
---|
87 | S VALMHDR(2)=" "
|
---|
88 | I +$$BUFFER^IBCNBU1(DFN) S VALMHDR(2)="*** Patient has Insurance Buffer Records"
|
---|
89 | Q
|
---|
90 | ;
|
---|
91 | FNL ; -- exit and clean up
|
---|
92 | K ^TMP("IBNSM",$J),^TMP("IBNSMDX",$J)
|
---|
93 | K IBFASTXT
|
---|
94 | D CLEAN^VALM10
|
---|
95 | Q
|
---|
96 | ;
|
---|
97 | YN(X,Y) ; -- convert 1 or 0 to yes/no/unknown
|
---|
98 | Q $S($G(X)="":$S($G(Y):"",1:"UNK"),X=0:"NO",X=1:"YES",1:"")
|
---|
99 | ;
|
---|
100 | CP ; -- change patient
|
---|
101 | N VALMQUIT
|
---|
102 | D FULL^VALM1
|
---|
103 | S IBDFN=DFN D PAT
|
---|
104 | I $D(VALMQUIT) S DFN=IBDFN
|
---|
105 | D HDR,BLD
|
---|
106 | S VALMBCK="R"
|
---|
107 | CPQ K IBDFN
|
---|
108 | Q
|
---|
109 | ;
|
---|
110 | PCI S VALMBCK="R" Q
|
---|
111 | ;
|
---|
112 | FASTEXIT ;just sets a flag signaling system should be exited
|
---|
113 | S VALMBCK="Q"
|
---|
114 | D FULL^VALM1
|
---|
115 | K DIR S DIR(0)="Y",DIR("A")="Exit option entirely",DIR("B")="NO" D ^DIR
|
---|
116 | I $D(DIRUT)!(Y) S IBFASTXT=1
|
---|
117 | K DIR
|
---|
118 | Q
|
---|