$TXT Created by HUA,PATRICK at CARVDD.FO-ALBANY.MED.VA.GOV (KIDS) on Wednesday, 01/05/05 at 13:21 ============================================================================= Run Date: JAN 07, 2005 Designation: EAS*1*45 Package : EAS - ENROLLMENT APPLICATION SYSTEM Priority: Mandatory Version : 1 SEQ #51 Status: Released Compliance Date: FEB 07, 2005 ============================================================================= Associated patches: (v)EAS*1*40 <<= must be installed BEFORE `EAS*1*45' (v)DG*5.3*570 <<= must be installed BEFORE `EAS*1*45' (v)IB*2*267 <<= must be installed BEFORE `EAS*1*45' Subject: IB/AR ENCAPSULATION W/EAS Category: - Routine Description: ============ This patch is in support of the Billing Replacement - Encapsulation Project. The objective of this project is to standardize existing VistA Integrated Billing and Accounts Receivable functionality so that a new COTS billing/AR product may be effectively integrated into the VistA suite. This will be accomplished by replacing direct IB and AR touch points with standard authorized APIs available to all VistA packages. This patch will replace with new APIs, all current direct access of Insurance Information from FileMan globals and the use of IB APIs being retired (DBIA10145 and DBIA10146) in the VistA Enrollment Application System package. These IAs provided supported APIs to retrieve and display insurance information. A new supported API, $$INSUR^IBBAPI (DBIA4419), will provide to retrieve insurance information. A new private API, DISP^DGIBDSP (DBIA4408) will provide a generic display of a patient's current insurance information. The IBBAPI calls were released with patch IB*2*256, IB INSURANCE API. This patch addresses the following E3R(s): ------------------------------------------ There are no E3Rs associated with this patch. This patch addresses the following NOIS message(s): --------------------------------------------------- There are no NOIS messages associated with this patch. Test Sites: ----------- Clarksburg, WV - VAMC EL PASO VA HEALTH CARE CENTER MANCHESTER, NH -VAMC Functional Modifications ------------------------ The Application for Extended Care Services, VA Form 10-10EC currently retrieves and displays Medicare and Insurance information directly from the Insurance Type global in the Patient File. The supported API GETWNR^IBCNSMM1 is used to determine if Medicare is set up in the INSURANCE File (#36). If it is, the Insurance Type global is searched for any Medicare matches. This patch will remove the GETWNR() call. The new INSUR() API does not provide this capability. Instead, the INSUR() API will call for all "Active" insurance for the veteran, then check the returned insurance entries for any that match "MEDICARE (WNR)". Additionally, all insurance information printed on the VA Form 10-10EC will be provided by the new INSUR() API. Finally, the code generating the INSURANCE DATA, SCREEN <2> of the LTC Copay Test contained several lines of code which had been marked for removal by a previous patch. This patch removes those lines and modifies the replaced procedure to return a Quit. Insurance information presented through the DISP^IBCNS call (DBIA10146) is being replaced with a display provided by a new API - DISP^DGIBDSP (DBIA #4408). ================INSTALLATION INSTRUCTIONS ================= If installed during the normal workday, it is recommended that the following menu options (File #19) and all of their descendants be disabled to prevent possible conflicts while running the KIDS Install. Other VISTA users will not be affected. Print Application for Extended Care (10-10EC) Add a New LTC Copayment Test Edit an Existing LTC Copayment Test Install Time - 5 MINUTES 1. LOAD TRANSPORT GLOBAL --------------------- Choose the PackMan message containing this patch and invoke the INSTALL/CHECK MESSAGE PackMan option. 2. DISABLE ROUTINE MAPPING (DSM for Open VMS sites only) ----------------------- Disable routine mapping on all systems for the routines listed in step 3 below. NOTE: If the routines included in this patch are not currently in your mapped routine set, please skip this step. 3. COMPONENTS SENT WITH PATCH ------------------------ The following is a list of the routine(s) included in this patch. The second line of each of these routine(s) will look like: ;;1.0;ENROLLMENT APPLICATION SYSTEM;**[patch list]**;Mar 15, 2001 CHECK^XTSUMBLD results Routine name Before Patch After Patch Patch List ============ ============ =========== ========== EASEC100 14813325 17492429 5,7,16,40,45 EASECSC2 4487312 2854185 5,40,45 Total number of routines - 2 4. START UP KIDS ------------- Start up the Kernel Installation and Distribution System Menu [XPD MAIN]: Edits and Distribution ... Utilities ... Installation ... Select Kernel Installation & Distribution System Option: INStallation --- Load a Distribution Print Transport Global Compare Transport Global to Current System Verify Checksums in Transport Global Install Package(s) Restart Install of Package(s) Unload a Distribution Backup a Transport Global Select Installation Option: 5. Select Installation Option: -------------------------- NOTE: The following are OPTIONAL - (When prompted for the INSTALL NAME, enter EAS*1.0*45): a. Backup a Transport Global - This option will create a backup message of any routines exported with this patch. It will not backup any other changes such as DD's or templates. b. Compare Transport Global to Current System - This option will allow you to view all changes that will be made when this patch is installed. It compares all components of this patch (routines, DD's, templates, etc.). c. Verify Checksums in Transport Global - This option will allow you to ensure the integrity of the routines that are in the transport global. 6. Select Installation Option: Install Package(s) ---------------- **This is the step to start the installation of this KIDS patch: a. Choose the Install Package(s) option to start the patch install. b. When prompted 'Want KIDS to INHIBIT LOGONs during the install? YES//' answer NO c. When prompted 'Want to DISABLE Scheduled Options, Menu Options, and Protocols? YES//' answer YES d. When prompted 'Enter options you wish to mark as 'Out Of Order':' Enter the following options: [EASEC LTC COPAY TEST PRINT] Print Application for Extended Care (10-10EC) [EASEC LTC COPAY TEST ADD] Add a New LTC Copayment Test [EASEC LTC COPAY TEST EDIT] Edit an Existing LTC Copayment Test e. When prompted 'Enter protocols you wish to mark as 'Out Of Order':' press . 7. REBUILD MAPPED ROUTINE(S) (DSM for Open VMS sites only) ------------------------- Optional - Include the routines distributed with this patch in the mapped routine set. NOTE: This step is only necessary if you performed step 2 or if you wish to include the routines in your mapped set. Routine Information: ==================== Routine Name: - EASEC100 This routine prints the 1010EC LTC Enrollment form. From the LTC Copayments Menu, select the Print Application for Extended Care (10-10EC). Insurance information is presented in sections I and II. Medicare Parts A & B information is presented in sections I.3A, I.3B, I.4, I.4A, I.4B. Insurance Information is presented in sections II.6 - II.8. Only the first three active insurance company entries are displayed, any additional companies are not displayed. This routine has been modified to retrieve all insurance information through the new INSUR() API. The insurance companies returned by the API are scanned for a company name matching "MEDICARE (WNR)" to match the results of the GETWNR^IBCNSMMI call (there is no DBIA for this call). If a matching entry is found, Part A & B information is pulled for section I. The first three companies returned are then printed in section II. Before ======= 37 ; ** determine medicare info 38 S EASINS=0,(MPA,MPB)="NO",(MPADT,MPBDT,MCN)="" 39 S MDATA=$$GETWNR^IBCNSMM1 ; 40 I +MDATA D ; 41 .F S EASINS=$O(^DPT(EASDFN,.312,EASINS)) Q:'EASINS D 42 ..S INSTMP=$G(^DPT(EASDFN,.312,EASINS,0)) 43 ..Q:$P(INSTMP,"^")'=+MDATA 44 ..I $P(INSTMP,"^",18)=$P(MDATA,"^",3) S MPA="YES",MPADT=$$FMTE^XLFDT ($P(INSTMP,"^",8)),MCN=$P(INSTMP,"^",2) Q 45 ..I $P(INSTMP,"^",18)=$P(MDATA,"^",5) S MPB="YES",MPBDT=$$FMTE^XLFDT ($P(INSTMP,"^",8)),MCN=$P(INSTMP,"^",2) Q 46 S @EASROOT1@(4)=MPA ;medicare part a 47 S @EASROOT1@(5)=MPADT ;medicare part a effective date 48 S @EASROOT1@(6)=MPB ;medicare part b 49 S @EASROOT1@(7)=MPBDT ;medicare part b effective date 50 S @EASROOT1@(8)=MCN ;medicare claim number 51 Q 58 S EASI=0,CNT=2 59 F S EASI=$O(^DPT(EASDFN,.312,EASI)) Q:'EASI!(CNT>16) D 60 .S EASIN1I=EASI_","_EASDFN_"," 61 .D GETS^DIQ(2.312,EASIN1I,".01;.18;1;16;17;","IE","INSUR") 62 .S @EASROOT2@(CNT+3)=$G(INSUR(2.312,EASIN1I,17,"E")) ;insured name 63 .S @EASROOT2@(CNT+4)=$G(INSUR(2.312,EASIN1I,16,"E")) ;relationship 64 .S @EASROOT2@(CNT+5)=$G(INSUR(2.312,EASIN1I,1,"E")) ;policy # 65 .S GRPIEN=$G(INSUR(2.312,EASIN1I,.18,"I")) ;group ien/name 66 .S:GRPIEN @EASROOT2@(CNT+6)=$$GET1^DIQ(355.3,GRPIEN_",",".03","E") 67 .S EASINS=$G(INSUR(2.312,EASIN1I,.01,"I")) ;pointer to insurance fi le #36 68 .D INSDAT(EASINS,CNT) 69 .S CNT=CNT+7 70 Q After ===== 37 ; ** determine medicare info 38 S EASINS=0,(MPA,MPB)="NO",(MPADT,MPBDT,MCN)="" 39 N EAX,INSUR 40 $$INSUR^IBBAPI(EASDFN,,"RA",.EAX,"*") ; Retrieve all active insuran ce 41 I $D(EAX) D 42 . M INSUR=EAX("IBBAPI","INSUR") 43 . S EASINS=0 44 . F S EASINS=$O(INSUR(EASINS)) Q:'EASINS D 45 . . Q:$P(INSUR(EASINS,1),U,2)'["MEDICARE (WNR)" ; Look for MEDICARE insurance 46 . . I $P(INSUR(EASINS,8),U,2)="PART A" S MPA="YES",MPADT=$$FMTE^XLFD T(INSUR(EASINS,10)),MCN=INSUR(EASINS,14) Q ; If Policy Name is "PA RT A", set the Part A variables 47 . . I $P(INSUR(EASINS,8),U,2)="PART B" S MPB="YES",MPBDT=$$FMTE^XLFD T(INSUR(EASINS,10)),MCN=INSUR(EASINS,14) Q ; If Policy Name is "PA RT B", set the Part B variables 48 S @EASROOT1@(4)=MPA ;medicare part a 49 S @EASROOT1@(5)=MPADT ;medicare part a effective date 50 S @EASROOT1@(6)=MPB ;medicare part b 51 S @EASROOT1@(7)=MPBDT ;medicare part b effective date 52 S @EASROOT1@(8)=MCN ;medicare claim number 63 S EASI=0,CNT=2 64 I $$INSUR^IBBAPI(EASDFN,"","ARB",.DGX,"*"); Call Insurance API for d ata 65 M INSUR=DGX("IBBAPI","INSUR") ; Reformat insurance array into more f riendly format 66 F S EASI=$O(INSUR(EASI)) Q:'EASI!(CNT>16) D ; Print out only firs t 3 entries found. 67 . S @EASROOT2@(CNT+3)=$G(INSUR(EASI,13)) ; SUBSCRIBER NAME 68 . S @EASROOT2@(CNT+4)=$P($G(INSUR(EASI,19)),U,2) ;relationship 69 . S @EASROOT2@(CNT+5)=$G(INSUR(EASI,14)) ;policy # (SUBSCRIBER ID) 70 . S @EASROOT2@(CNT+6)=$P($G(INSUR(EASI,8)),U,2) ; GROUP NAME 71 .; Set Insurance Company Information 72 . S @EASROOT2@(CNT)=$P($G(INSUR(EASI,1)),U,2) ; Insurance Co. Name 73 . S @EASROOT2@(CNT+2)=$G(INSUR(EASI,6)) ; ins. phone 74 . S @EASROOT2@((CNT+1),.111)=$G(INSUR(EASI,2)) ; INS. ADDRESS 75 . S @EASROOT2@((CNT+1),.114)=$G(INSUR(EASI,3)) ; INS. CITY 76 . S @EASROOT2@((CNT+1),.115)=$P($G(INSUR(EASI,4)),U,2) ; INS. STATE 77 . S @EASROOT2@((CNT+1),.116)=$G(INSUR(EASI,5)) ; INS. ZIP 78 .S CNT=CNT+7 79 Q Routine Checksum: Routine Name: - EASECSC2 This routine displays the INSURANCE DATA, SCREEN <2>, of the Add a New LTC Copayment Test and the Edit an Existing LTC Copayment Test menu option. The IN procedure contains old code to display the veterans insurance information. This portion of the routine has been replaced by the DISP^IBCNSP2 API. Primarily, only old code from a prior patch was removed to cleanup the routine. No structural code changes required. Before ====== 31 EASECRP5 -- ; Display the screen 32 ; Note: This section was copied from ^DGRP5 and modified specifically 33 ; to work with LTC. 34 ; 35 S DGRPW=1,(DGRPS,DGMTSCI)=2 D HD^EASECSCU S Z=1 D WW W " Covered by Health Insurance: " S Z=$S($D(^DPT(DFN,.31)):$P(^(.31),"^",11),1:"" ),Z=$S(Z="Y":"YES",Z="N":"NO",Z="U":"UNKNOWN",1:"NOT ANSWERED"),Z1= 15 D WW1^DGRPV 36 ; *REMOVEW !!?3 S Z=" Insurance",Z1=27 D WW1^DGRPV S Z="Policy #",Z1 =22 D WW1^DGRPV S Z="Group #",Z1=19 D WW1^DGRPV W "Holder",!?4,"--- ------",?30,"--------",?52,"-------",?71,"-------" 37 ; *REMOVES I1="" F I=0:0 S I=$O(^DPT(DFN,.312,I)) Q:'I S DGRPX=^(I, 0) I $P(DGRPX,"^",4)']""!(+$P(DGRPX,"^",4)'0:$P(DGRPX,U,3),1:"") 44 Q 45 IN S J="*" F J(1)=9:1:14 I $P(DGRPX,"^",J(1))]"" S J=" " 46 S:J="*" DGRPAG="" W !?3,J,$S($D(^DIC(36,+$P(DGRPX,"^",1),0)):$E($P(^ (0),"^",1),1,25),1:DGRPU),?30,$S($P(DGRPX,"^",2)]"":$P(DGRPX,"^",2) ,1:DGRPU),?52,$S($P(DGRPX,"^",3)]"":$P(DGRPX,"^",3),1:DGRPU) 47 W ?71,$S($P(DGRPX,"^",6)="v":"APPLICANT",$P(DGRPX,"^",6)="s":"SPOUSE ",$P(DGRPX,"^",6)="o":"OTHER",1:"UNKNOWN") K J,X Q 48 ; After ===== 31 EASECRP5 -- ; Display the screen 32 ; Note: This section was copied from ^DGRP5 and modified specifically 33 ; to work with LTC. 34 ; 35 S DGRPW=1,(DGRPS,DGMTSCI)=2 D HD^EASECSCU S Z=1 D WW W " Covered by Health Insurance: " S Z=$S($D(^DPT(DFN,.31)):$P(^(.31),"^",11),1:"" ),Z=$S(Z="Y":"YES",Z="N":"NO",Z="U":"UNKNOWN",1:"NOT ANSWERED"),Z1= 15 D WW1^DGRPV 36 W ! D DISP^DGIBDSP 37 W ! S DGRPX=$G(^DPT(DFN,.38)),Z=2 D WW W " Eligible for MEDICAID: ", $S(+DGRPX:"YES",$P(DGRPX,"^",1)=0:"NO",1:DGRPU) 38 S Y=$P(DGRPX,"^",2) I Y X ^DD("DD") W " [last updated ",Y,"]" 39 ;; *** Added for Medicaid information 40 W ! S Z=3 D WW W " Medicaid Number: ",$P(DGRPX,U,3) ;previous $S($P( DGRPX,U,3)>0:$P(DGRPX,U,3),1:"") 41 Q 42 IN Q ; 43 ; 44 WW ;Write number on screens for display and/or edit (Z=number) 45 ; NOTE: This section was copied from WW^DGRPV and modified specifica lly 46 ; for LTC. The code calling ^DGRPV has been redirected here. 47 W:DGRPW ! 48 Q Routine Checksum: ============================================================================= User Information: Entered By : MULLER,RICHARD Date Entered : DEC 10, 2003 Completed By: HUA,PATRICK Date Completed: JAN 07, 2005 Released By : GROOMS,ANTHONY E Date Released : JAN 07, 2005 ============================================================================= Packman Mail Message: ===================== $END TXT