| [613] | 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 | 
|---|