| 1 | IBCNEPM1 ;DAOU/ESG - PAYER MAINT/INS COMPANY LIST FOR PAYER ;22-JAN-2003 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**184**;21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | EN(IEN,PAYER,PROFID,INSTID) ; -- main entry point for IBCNE PAYER EXPAND LIST | 
|---|
| 6 | ; IEN is the IEN of the Payer(#365.15).  PAYER is the payer's name. | 
|---|
| 7 | ; PROFID and INSTID are the EDI ID numbers for the selected payer | 
|---|
| 8 | ; These are passed into this routine from EXPND^IBCNEPM2. | 
|---|
| 9 | ; | 
|---|
| 10 | D EN^VALM("IBCNE PAYER EXPAND LIST") | 
|---|
| 11 | D BUILD^IBCNEPM | 
|---|
| 12 | S VALMBCK="R" | 
|---|
| 13 | Q | 
|---|
| 14 | ; | 
|---|
| 15 | HDR ; -- header code | 
|---|
| 16 | S VALMHDR(1)="PAYER: "_$E(PAYER,1,30)_"     Prof. EDI#:"_$E($G(PROFID),1,15)_"  Inst. EDI#:"_$E($G(INSTID),1,15) | 
|---|
| 17 | S VALMHDR(2)="Insurance Company Name - Active Only" | 
|---|
| 18 | Q | 
|---|
| 19 | ; | 
|---|
| 20 | INIT ; -- init variables and list array | 
|---|
| 21 | ; Variable PAYER (payer name) is returned by this procedure and used | 
|---|
| 22 | ; by the list header.  Variable LINE is also set before coming into | 
|---|
| 23 | ; this procedure. | 
|---|
| 24 | ; | 
|---|
| 25 | KILL ^TMP("IBCNEPM",$J,2),^TMP("IBCNEPM",$J,"LINK") | 
|---|
| 26 | NEW INS,ROW,STRING2,NAME,DATA,ADDRESS,DATA2,PROFID,INSTID | 
|---|
| 27 | ; | 
|---|
| 28 | ;IEN is the payer ien (#365.15) | 
|---|
| 29 | ;PAYER is the payer name | 
|---|
| 30 | I IEN=""!(PAYER="") Q | 
|---|
| 31 | ; | 
|---|
| 32 | ; INS is the insurance company ien | 
|---|
| 33 | S INS="",ROW=0 | 
|---|
| 34 | F  S INS=$O(^TMP("IBCNEPM",$J,"PYR",PAYER,IEN,INS)) Q:INS=""  D | 
|---|
| 35 | . S STRING2="",ROW=ROW+1 | 
|---|
| 36 | . S NAME=$P($G(^DIC(36,INS,0)),U)   ; insurance company name | 
|---|
| 37 | . S DATA=$G(^DIC(36,INS,.11)) | 
|---|
| 38 | . S ADDRESS=$P(DATA,U)_"  "_$P(DATA,U,4) | 
|---|
| 39 | . I $P(DATA,U,4)'="" S ADDRESS=ADDRESS_"," | 
|---|
| 40 | . S ADDRESS=ADDRESS_"  "_$P($G(^DIC(5,+$P(DATA,U,5),0)),U,2) | 
|---|
| 41 | . S DATA2=$G(^DIC(36,INS,3)) | 
|---|
| 42 | . S PROFID=$P(DATA2,U,2),INSTID=$P(DATA2,U,4) | 
|---|
| 43 | . S STRING2=$$SETFLD^VALM1(NAME,STRING2,"INSURANCE CO") | 
|---|
| 44 | . S STRING2=$$SETFLD^VALM1(ADDRESS,STRING2,"ADDRESS") | 
|---|
| 45 | . S STRING2=$$SETFLD^VALM1(ROW,STRING2,"LINE") | 
|---|
| 46 | . S STRING2=$$SETFLD^VALM1(PROFID,STRING2,"PROFEDI") | 
|---|
| 47 | . S STRING2=$$SETFLD^VALM1(INSTID,STRING2,"INSTEDI") | 
|---|
| 48 | . D SET^VALM10(ROW,STRING2) | 
|---|
| 49 | . ; | 
|---|
| 50 | . ; "LINK" scratch global structure = payer ien^ins co ien^payer name | 
|---|
| 51 | . S ^TMP("IBCNEPM",$J,"LINK",ROW)=IEN_U_INS_U_PAYER | 
|---|
| 52 | . Q | 
|---|
| 53 | ; | 
|---|
| 54 | S VALMCNT=ROW | 
|---|
| 55 | I VALMCNT=0 S VALMSG=" No Matching Insurance Companies " | 
|---|
| 56 | Q | 
|---|
| 57 | ; | 
|---|
| 58 | HELP ; -- help code | 
|---|
| 59 | N X S X="?" D DISP^XQORM1 W !! | 
|---|
| 60 | Q | 
|---|
| 61 | ; | 
|---|
| 62 | EXIT ; -- exit code | 
|---|
| 63 | Q | 
|---|
| 64 | ; | 
|---|
| 65 | LINK ; -- code to facilitate the linking between the ins company and payer | 
|---|
| 66 | NEW DIR,X,Y,DIRUT,DIROUT,DTOUT,DUOUT,LINKDATA,PIEN,INS,TPAYER,INSNM | 
|---|
| 67 | NEW DA,DIE,DR,D,D0,DI,DIC,DISYS,DQ,% | 
|---|
| 68 | ; | 
|---|
| 69 | ;PIEN - temp variable for payer IEN (#365.15) | 
|---|
| 70 | ;TPAYER - temp variable for payer name | 
|---|
| 71 | ; | 
|---|
| 72 | D FULL^VALM1 | 
|---|
| 73 | I 'VALMCNT D  G LINKX | 
|---|
| 74 | . W !!?5,"There are no insurance companies to select." | 
|---|
| 75 | . D PAUSE^VALM1 | 
|---|
| 76 | . Q | 
|---|
| 77 | ; | 
|---|
| 78 | S DIR(0)="NO^1:"_VALMCNT_":0" | 
|---|
| 79 | S DIR("A")="Select Insurance Company Entry" | 
|---|
| 80 | W ! | 
|---|
| 81 | D ^DIR K DIR | 
|---|
| 82 | I 'Y G LINKX | 
|---|
| 83 | S LINKDATA=$G(^TMP("IBCNEPM",$J,"LINK",+Y)) | 
|---|
| 84 | I LINKDATA="" G LINKX | 
|---|
| 85 | S PIEN=+$P(LINKDATA,U,1),TPAYER=$P($G(^IBE(365.12,PIEN,0)),U,1) | 
|---|
| 86 | S INS=+$P(LINKDATA,U,2),INSNM=$P($G(^DIC(36,INS,0)),U,1) | 
|---|
| 87 | W !!,"             Payer:  ",TPAYER | 
|---|
| 88 | W !," Insurance Company:  ",INSNM | 
|---|
| 89 | W ! | 
|---|
| 90 | S DIR(0)="YO" | 
|---|
| 91 | S DIR("A")=" Do you want to link this insurance company to this payer" | 
|---|
| 92 | S DIR("B")="YES" | 
|---|
| 93 | D ^DIR K DIR | 
|---|
| 94 | I 'Y G LINKX | 
|---|
| 95 | ; | 
|---|
| 96 | ; At this point we know that we should make the linkage | 
|---|
| 97 | S DA=INS,DIE=36,DR="3.1////"_PIEN D ^DIE | 
|---|
| 98 | ; | 
|---|
| 99 | ; update the scratch global by removing this insurance company | 
|---|
| 100 | KILL ^TMP("IBCNEPM",$J,"PYR",$P(LINKDATA,U,3),PIEN,INS) | 
|---|
| 101 | S ^TMP("IBCNEPM",$J,"PYR",$P(LINKDATA,U,3),PIEN)=$G(^TMP("IBCNEPM",$J,"PYR",$P(LINKDATA,U,3),PIEN))-1 | 
|---|
| 102 | KILL ^TMP("IBCNEPM",$J,"INS",INS,PIEN) | 
|---|
| 103 | ; | 
|---|
| 104 | ; search scratch global for remaining pointers to this ins. company | 
|---|
| 105 | S PIEN="" F  S PIEN=$O(^TMP("IBCNEPM",$J,"INS",INS,PIEN)) Q:'PIEN  D | 
|---|
| 106 | . S TPAYER=$G(^TMP("IBCNEPM",$J,"INS",INS,PIEN)) | 
|---|
| 107 | . Q:TPAYER="" | 
|---|
| 108 | . KILL ^TMP("IBCNEPM",$J,"PYR",TPAYER,PIEN,INS) | 
|---|
| 109 | . S ^TMP("IBCNEPM",$J,"PYR",TPAYER,PIEN)=$G(^TMP("IBCNEPM",$J,"PYR",TPAYER,PIEN))-1 | 
|---|
| 110 | . KILL ^TMP("IBCNEPM",$J,"INS",INS,PIEN) | 
|---|
| 111 | ; | 
|---|
| 112 | ; rebuild the LINK area and the ListMan display global | 
|---|
| 113 | D INIT | 
|---|
| 114 | ; | 
|---|
| 115 | ; user message | 
|---|
| 116 | W !!?5,"They are now linked.  You may view/edit this relationship by using the" | 
|---|
| 117 | W !?5,"Insurance Company Entry/Edit option." | 
|---|
| 118 | D PAUSE^VALM1 | 
|---|
| 119 | LINKX ; | 
|---|
| 120 | S VALMBCK="R" | 
|---|
| 121 | Q | 
|---|
| 122 | ; | 
|---|