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

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

initial load of FOIAVistA 6/30/08 version

File size: 4.9 KB
Line 
1IBCNSP2 ;ALB/AAS - PATIENT INSURANCE INTERFACE FOR REGISTRATION ;21-JUNE-93
2 ;;2.0;INTEGRATED BILLING;**6,28,75,82,155,371**;21-MAR-94;Build 57
3 ;;Per VHA Directive 2004-038, this routine should not be modified.
4 ;
5% ;
6REG ; --Edit Patient insurance from registration, fee and mccr, allow new entries
7 ; only edit policy if new policy
8 ; call event driver if adding a new policy
9 ;
10 ; -- Input DFN = patient
11 ;
12 I $G(DGPRFLG) D PREG^IBCNBME(DFN) Q
13 D REG^IBCNBME(DFN)
14 Q
15 ;
16 N DIC,DIE,DE,DQ,DIR,DA,DR,DIC,DIV,X,Y,I,J,L,D,DIH,DIY,IBSEL,IBDD,IBD,IBNEW,IBNEWP,IBDT,IBQUIT,IBCNS,IBCDFN,IBCNSEH,IBCNP,IBCPOL,IBOK,VALMQUIT,IBCNT,IBEVT1,IBEVTA,VAERR,IBCOVP
17 S IBCNP=1
18 I '$D(DFN) D G:$D(VALMQUIT) REGQ
19 .S DIC="^DPT(",DIC(0)="AEQMN" D ^DIC
20 .S DFN=+Y
21 I $G(DFN)<1 S IBQUIT=1,VALMQUIT="" G REGQ
22 ;
23 I '$$ASKCOVD(DFN,.IBCOV,.IBCOVP) S IBQUIT=1 G REGQ
24 ;
25R1 S (IBNEW,IBNEWP,IBQUIT)=0
26 S DIC="^DPT("_DFN_",.312,",DIC(0)="AEQLM",DIC("A")="Select INSURANCE COMPANY: "
27 S DIC("W")="N IBD S IBD=$G(^DPT(DFN,.312,+Y,0)) W "" Group: ""_$$GRP^IBCNS($P(IBD,U,18))_"" Whose: ""_$$EXPAND^IBTRE(2.312,6,$P(IBD,U,6))"
28 I IBCNP=1 S X=$P($G(^DIC(36,+$G(^DPT(DFN,.312,+$P($G(^DPT(DFN,.312,0)),"^",3),0)),0)),"^") I X'="" S DIC("B")=X
29 S DA(1)=DFN
30 I $G(^DPT(DFN,.312,0))="" S ^DPT(DFN,.312,0)="^2.312PAI^^"
31 D ^DIC K DIC I +Y<1 S IBQUIT=1,VALMQUIT="" G REGQ
32 S IBCDFN=+Y,IBCNS=$P(Y,"^",2)
33 I $P(Y,"^",3) S IBNEW=1 I $$DUPCO^IBCNSOK1(DFN,IBCNS,IBCDFN,1)
34 D BEFORE^IBCNSEVT
35 S IBCNSEH=$P($G(^IBE(350.9,1,4)),"^",1)
36 S IBCNP=IBCNP+1
37 I 'IBNEW,$P($G(^DPT(DFN,.312,+IBCDFN,0)),"^",18)="" D G REGQ
38 .I '$P($G(^IBE(350.9,1,3)),"^",18) W !,"Insurance conversion not complete, NO EDITING ALLOWED",!! S IBQUIT=1 H 3 Q
39 .I $P($G(^IBE(350.9,1,3)),"^",18) W !,"INVALID ENTRY, DELETE AND RE-ENTER, NO EDITING ALLOWED",!! S IBQUIT=1 H 3 Q
40 ;
41 I $G(IBFEE),'$G(IBNEW) G REGQ ; fee users can add but not edit existing info
42 I $G(IBNEW) D G:$G(IBQUIT) REGQ
43 .D SEL^IBCNSEH
44 .S IBCPOL=$$LK^IBCNSM31(IBCNS)
45 .I IBCPOL<1 D NEW^IBCNSJ3(IBCNS,.IBCPOL) S:IBCPOL<1 IBQUIT=1 Q:IBQUIT S IBNEWP=1
46 .; dgprflg is a 1 if called from pre-registration, set default 4
47 .; for pre-reg, otherwise set the default to 1 for interview
48 .S DR=".18////"_IBCPOL_";1.09////"_$S($G(DGPRFLG):4,1:1)_";1.05///NOW;1.06////"_DUZ
49 .S DA=IBCDFN,DA(1)=DFN,DIE="^DPT("_DFN_",.312," D ^DIE
50 .K DIE,DA,DR,DIC
51 ;
52 ; -- edit patient ins. data
53 S IBREG=1 G:$G(IBQUIT) REGQ
54 D PAT^IBCNSEH,PATPOL^IBCNSM32(IBCDFN),UPDCLM(+$G(IBIFN),DFN,IBCDFN)
55 ;
56 ; -- edit policy specific data if new or have key
57 I $G(IBNEWP)!($D(^XUSEC("IB INSURANCE SUPERVISOR",DUZ))) D:'$G(IBQUIT) POL^IBCNSEH,EDPOL^IBCNSM3(IBCDFN)
58 K IBREG S IBQUIT=0
59 ;
60REGQ ; -- exit logic and checks
61 ; -- if no policy pointer delete
62 I $G(IBNEW),$G(IBCDFN),$P($G(^DPT(DFN,.312,+IBCDFN,0)),"^",18)="" D
63 .D DP1^IBCNSM1 W !,"<DELETED> GROUP INSURANCE PLAN REQUIRED BUT NOT ENTERED" K IBNEW
64 ;
65 ; -- call event driver
66 I $G(IBCDFN),$P($G(^DPT(DFN,.312,+$G(IBCDFN),0)),"^",18) D
67 .K IBNEW
68 .D AFTER^IBCNSEVT,^IBCNSEVT
69 ;
70 K IBCNS,IBCDFN,IBNEW,IBNEWP
71 I '$G(IBQUIT) W ! G R1
72 D COVERED^IBCNSM31(DFN,$G(IBCOVP))
73 K IBQUIT
74 Q
75 ;
76FEE ; -- fee entry point to add patient insurance.
77 D FEE^IBCNBME(DFN)
78 Q
79 ;
80MCCR ; -- called from screen 3 of the edit bill option in mccr
81 N DLAYGO,DIC,DIE,DE,DQ,DIR,DA,DR,DIC,DIV,X,Y,I,J,L,D,DIH,DIY,IBSEL,IBDD,IBD,IBNEW,IBNEWP,IBDT,IBQUIT,IBCNS,IBCDFN,IBCNSEH,IBCNP,IBCPOL,IBOK,VALMQUIT,IBMCR
82 ;
83 S IBCNP=1,IBMCR=$$WNRBILL^IBEFUNC(IBIFN)
84 S DIE="^DGCR(399,",DA=IBIFN,DR="[IB SCREEN3]" D ^DIE K DIC,DIE,DA,DR
85 ;
86 I $G(IBADI)=1 D R1 S IBCNRTN=1 K IBADI G MCCR
87 I 'IBMCR,$$WNRBILL^IBEFUNC(IBIFN) S DGRVRCAL=1
88 K IBCNRTN
89 Q
90 ;
91UPDCLM(IBIFN,DFN,IBCDFN) ; Update the claim's insurance nodes when edits are made
92 ; to the patient insurance file.
93 ; This procedure is called when a claim is being edited from IB billing
94 ; screen#3 and also when the patient insurance is being edited directly.
95 ;
96 I '$G(IBIFN)!'$G(DFN)!'$G(IBCDFN) Q ; missing something
97 I $P($G(^DGCR(399,IBIFN,0)),U,2)'=DFN Q ; mismatch of claim and DFN
98 I $P($G(^DGCR(399,IBIFN,0)),U,13)'=1 Q ; claim not editable
99 I '$D(^DPT(DFN,.312,IBCDFN,0)) Q ; missing pat ins data
100 NEW X,Z,NODE
101 S X=IBCDFN
102 F Z=1:1:3 I $P($G(^DGCR(399,IBIFN,"M")),U,11+Z)=IBCDFN D Q
103 . S NODE="I"_Z
104 . D IX^IBCNS2(IBIFN,NODE)
105 . Q
106 Q
107 ;
108DISP ; -- Display Patient insurance policy information for registrations
109 Q:'$D(DFN)
110 D DISP^IBCNS
111DISPQ Q
112 ;
113ASKCOVD(DFN,IBCOV,IBCOVP) ; ask user if patient covered by insurance (2,.3192), returns true if answered yes
114 ;
115 N IBX,IBINSD,DIC,DIE,DA,DR,X,Y,DTOUT
116 ;
117 S IBCOV=$P($G(^DPT(DFN,.31)),"^",11),IBINSD=$$INSURED^IBCNS1(DFN),IBX=1 W !
118 ;
119 ; -- if covered by ins but none currently active so indicate
120 I IBCOV="Y",'IBINSD W !!,"Covered By Health Insurance indicates 'YES' but none currently Active.",!,"Please Review!",!!
121 ;
122 ; -- ask if covered by insurance
123 S DIE="^DPT(",DR=".3192",DA=DFN D ^DIE K DIC,DIE,DA,DR I $D(Y)!($D(DTOUT)) S IBX=0
124 ;
125 S IBCOVP=$P($G(^DPT(DFN,.31)),"^",11) I +IBX,IBCOVP'="Y",'IBINSD S IBX=0
126 ;
127 Q IBX
Note: See TracBrowser for help on using the repository browser.