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