| 1 | IBY377PO        ;ALB/ESG - Post Install for IB patch 377 ;29-Nov-2007 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**377**;21-MAR-94;Build 23 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | EN      ; | 
|---|
| 6 | N XPDIDTOT S XPDIDTOT=5 | 
|---|
| 7 | D XREF          ; 1. re-build DD cross reference | 
|---|
| 8 | D PND           ; 2. change one EDI reports menu mnemonic | 
|---|
| 9 | D REL2          ; 3. populate new field 2.312/4.03 | 
|---|
| 10 | D REL355        ; 4. populate new field 355.33/60.14 | 
|---|
| 11 | D EMAIL         ; 5. send email message to FSC | 
|---|
| 12 | ; | 
|---|
| 13 | ; remove identifier label from this field | 
|---|
| 14 | KILL ^DD(355.93,0,"ID",.09)    ; DBIA# 5131 | 
|---|
| 15 | EX      ; | 
|---|
| 16 | Q | 
|---|
| 17 | ; | 
|---|
| 18 | XREF    ; Re-build DD cross references | 
|---|
| 19 | NEW IBXR,IBRES,IBOUT,DIK | 
|---|
| 20 | D BMES^XPDUTL(" STEP 1 of "_XPDIDTOT) | 
|---|
| 21 | D MES^XPDUTL("-------------") | 
|---|
| 22 | D MES^XPDUTL("Re-building the ""C"" cross-reference in file 364.6 ...") | 
|---|
| 23 | KILL ^IBA(364.6,"C")                   ; kill whatever is there | 
|---|
| 24 | S IBXR("FILE")=364.6 | 
|---|
| 25 | S IBXR("NAME")="C" | 
|---|
| 26 | S IBXR("TYPE")="R" | 
|---|
| 27 | S IBXR("USE")="LS" | 
|---|
| 28 | S IBXR("EXECUTION")="F" | 
|---|
| 29 | S IBXR("ACTIVITY")="IR" | 
|---|
| 30 | S IBXR("SHORT DESCR")="Field name lookup" | 
|---|
| 31 | S IBXR("VAL",1)=.1 | 
|---|
| 32 | S IBXR("VAL",1,"SUBSCRIPT")=1 | 
|---|
| 33 | S IBXR("VAL",1,"LENGTH")=40 | 
|---|
| 34 | S IBXR("VAL",1,"COLLATION")="F" | 
|---|
| 35 | S IBXR("VAL",1,"XFORM FOR STORAGE")="S X=$$UP^XLFSTR(X)" | 
|---|
| 36 | D CREIXN^DDMOD(.IBXR,"SW",.IBRES,"IBOUT") | 
|---|
| 37 | S DIK="^IBA(364.6,",DIK(1)=".1^C"      ; set-up | 
|---|
| 38 | D ENALL^DIK                            ; rebuild it | 
|---|
| 39 | XREFX   ; | 
|---|
| 40 | D MES^XPDUTL(" Done.") | 
|---|
| 41 | D UPDATE^XPDID(1) | 
|---|
| 42 | Q | 
|---|
| 43 | ; | 
|---|
| 44 | PND     ; Change one EDI reports menu mnemonic | 
|---|
| 45 | NEW MENUIEN,ITEMIEN,STOP,IBX,DIE,DA,DR | 
|---|
| 46 | D BMES^XPDUTL(" STEP 2 of "_XPDIDTOT) | 
|---|
| 47 | D MES^XPDUTL("-------------") | 
|---|
| 48 | D MES^XPDUTL("Updating EDI reports menu mnemonic ....") | 
|---|
| 49 | ; | 
|---|
| 50 | S MENUIEN=$O(^DIC(19,"B","IBCE TXMT MGMNT REPORTS",0)) I 'MENUIEN G PNDX | 
|---|
| 51 | S ITEMIEN=0,STOP=0 | 
|---|
| 52 | F  S ITEMIEN=$O(^DIC(19,MENUIEN,10,ITEMIEN)) Q:'ITEMIEN  D  Q:STOP | 
|---|
| 53 | . S IBX=$P($G(^DIC(19,MENUIEN,10,ITEMIEN,0)),U,1) Q:'IBX | 
|---|
| 54 | . I $P($G(^DIC(19,IBX,0)),U,1)'="IBCE BATCHES PENDING TOO LONG" Q | 
|---|
| 55 | . S DIE="^DIC(19,"_MENUIEN_",10," | 
|---|
| 56 | . S DA=ITEMIEN,DA(1)=MENUIEN | 
|---|
| 57 | . S DR="2////PND" | 
|---|
| 58 | . D ^DIE | 
|---|
| 59 | . S STOP=1 | 
|---|
| 60 | . Q | 
|---|
| 61 | PNDX    ; | 
|---|
| 62 | D MES^XPDUTL(" Done.") | 
|---|
| 63 | D UPDATE^XPDID(2) | 
|---|
| 64 | Q | 
|---|
| 65 | ; | 
|---|
| 66 | REL2    ; Populate new pt. relation field 2.312/4.03 | 
|---|
| 67 | ; | 
|---|
| 68 | N IBCNT,IEN2,IEN2312,NODE,WINS,X12CODE | 
|---|
| 69 | D BMES^XPDUTL(" STEP 3 of "_XPDIDTOT) | 
|---|
| 70 | D MES^XPDUTL("-------------") | 
|---|
| 71 | D MES^XPDUTL("Updating new patient relationship field in PATIENT file...") | 
|---|
| 72 | ; If this patch has been installed before, then this update has already been completed. | 
|---|
| 73 | I $$ICPLT() D MES^XPDUTL(" This field has already been updated. No further action.") G REL2X | 
|---|
| 74 | D MES^XPDUTL("Each ""."" represents 10,000 records.") | 
|---|
| 75 | D MES^XPDUTL("") | 
|---|
| 76 | S (IEN2,IBCNT)=0 F  S IEN2=$O(^DPT(IEN2)) Q:IEN2?1.A!(IEN2="")  D | 
|---|
| 77 | .S IBCNT=IBCNT+1 W:(IBCNT#10000=0)&'$D(ZTQUEUED) "." | 
|---|
| 78 | .Q:'$D(^DPT(IEN2,.312))  ; make sure file 2.312 exists for this patient | 
|---|
| 79 | .S IEN2312=0 F  S IEN2312=$O(^DPT(IEN2,.312,IEN2312)) Q:IEN2312?1.A!(IEN2312="")  D | 
|---|
| 80 | ..S NODE=$G(^DPT(IEN2,.312,IEN2312,0)),X12CODE=$$PRELCNV^IBCNSP1($P(NODE,U,16),1) | 
|---|
| 81 | ..; if we couldn't find a match, try to use WHOSE INSURANCE field | 
|---|
| 82 | ..S:X12CODE="" WINS=$P(NODE,U,6),X12CODE=$S(WINS="v":"18",WINS="s":"01",1:"") | 
|---|
| 83 | ..Q:X12CODE=""  ; still no valid code - skip this record | 
|---|
| 84 | ..N DIE,DR,DA | 
|---|
| 85 | ..S DIE="^DPT("_IEN2_",.312,",DA=IEN2312,DA(1)=IEN2,DR="4.03////"_X12CODE D ^DIE | 
|---|
| 86 | ..Q | 
|---|
| 87 | .Q | 
|---|
| 88 | D MES^XPDUTL(" Done.") | 
|---|
| 89 | REL2X   ; | 
|---|
| 90 | D UPDATE^XPDID(3) | 
|---|
| 91 | D CLEAN^DILF | 
|---|
| 92 | Q | 
|---|
| 93 | ; | 
|---|
| 94 | REL355  ; Populate new pt. relation field 355.33/60.14 | 
|---|
| 95 | ; | 
|---|
| 96 | N IEN355,NODE,WINS,X12CODE | 
|---|
| 97 | D BMES^XPDUTL(" STEP 4 of "_XPDIDTOT) | 
|---|
| 98 | D MES^XPDUTL("-------------") | 
|---|
| 99 | D MES^XPDUTL("Updating new patient relationship field in INSURANCE BUFFER file...") | 
|---|
| 100 | ; If this patch has been installed before, then this update has already been completed. | 
|---|
| 101 | I $$ICPLT() D MES^XPDUTL(" This field has already been updated. No further action.") G REL355X | 
|---|
| 102 | S IEN355=0 F  S IEN355=$O(^IBA(355.33,IEN355)) Q:IEN355?1.A!(IEN355="")  D | 
|---|
| 103 | .S NODE=$G(^IBA(355.33,IEN355,60)) Q:NODE=""  ; make sure that node 60 of file 355.33 exists | 
|---|
| 104 | .S X12CODE=$$PRELCNV^IBCNSP1($P(NODE,U,6),1) | 
|---|
| 105 | .; if we couldn't find a match, try to use WHOSE INSURANCE field | 
|---|
| 106 | .S:X12CODE="" WINS=$P(NODE,U,5),X12CODE=$S(WINS="v":"18",WINS="s":"01",1:"") | 
|---|
| 107 | .Q:X12CODE=""  ; still no valid code - skip this record | 
|---|
| 108 | .N DIE,DR,DA | 
|---|
| 109 | .S DIE=355.33,DA=IEN355,DR="60.14////"_X12CODE D ^DIE | 
|---|
| 110 | .Q | 
|---|
| 111 | D MES^XPDUTL(" Done.") | 
|---|
| 112 | REL355X ; | 
|---|
| 113 | D UPDATE^XPDID(4) | 
|---|
| 114 | D CLEAN^DILF | 
|---|
| 115 | Q | 
|---|
| 116 | ; | 
|---|
| 117 | ICPLT() ; Returns 1 if this patch has been successfully installed before, 0 otherwise | 
|---|
| 118 | N I,ICPLT,INST | 
|---|
| 119 | D FIND^DIC(9.7,,"@;.02I","QPX","IB*2.0*377",,,,,"INST") | 
|---|
| 120 | S (I,ICPLT)=0 F  S I=$O(INST("DILIST",I)) Q:I=""  S:+$P(INST("DILIST",I,0),U,2)=3 ICPLT=1 Q:ICPLT | 
|---|
| 121 | Q ICPLT | 
|---|
| 122 | ; | 
|---|
| 123 | EMAIL   ; Send an email message to Austin FSC to let them know this site has installed IB patch 377 | 
|---|
| 124 | NEW SITE,SUBJ,MSG,XMTO,LN,GLO,GLB | 
|---|
| 125 | D BMES^XPDUTL(" STEP 5 of "_XPDIDTOT) | 
|---|
| 126 | D MES^XPDUTL("-------------") | 
|---|
| 127 | D MES^XPDUTL("Sending email notification to Austin FSC ... ") | 
|---|
| 128 | I '$$PROD^XUPROD(1) D MES^XPDUTL("No email sent for test account installation.") G EMAILX | 
|---|
| 129 | S SITE=$$SITE^VASITE | 
|---|
| 130 | S SUBJ="IB*2*377 installed at Station# "_$P(SITE,U,3)_" - "_$P(SITE,U,2) | 
|---|
| 131 | S SUBJ=$E(SUBJ,1,65) | 
|---|
| 132 | S MSG(1)="VistA patch IB*2.0*377 was installed successfully at the following site:" | 
|---|
| 133 | S MSG(2)="" | 
|---|
| 134 | S MSG(3)="        Name: "_$P(SITE,U,2) | 
|---|
| 135 | S MSG(4)="    Station#: "_$P(SITE,U,3) | 
|---|
| 136 | S MSG(5)="      Domain: "_$G(^XMB("NETNAME")) | 
|---|
| 137 | S MSG(6)="   Date/Time: "_$$FMTE^XLFDT($$NOW^XLFDT,"5ZPM") | 
|---|
| 138 | S MSG(7)="" | 
|---|
| 139 | S MSG(8)="This patch is eClaims Plus Iteration 3, Phase 2." | 
|---|
| 140 | ; | 
|---|
| 141 | S XMTO("fsc.edi-team@va.gov")="" | 
|---|
| 142 | S XMTO("Eric.Gustafson@va.gov")="" | 
|---|
| 143 | S XMTO("Yan.Gurtovoy@va.gov")="" | 
|---|
| 144 | S XMTO("Mary.Simons@va.gov")="" | 
|---|
| 145 | ; | 
|---|
| 146 | D SENDMSG^XMXAPI(DUZ,SUBJ,"MSG",.XMTO) | 
|---|
| 147 | I '$D(^TMP("XMERR",$J)) G EMAILX    ; no email problems | 
|---|
| 148 | ; | 
|---|
| 149 | D MES^XPDUTL("MailMan problem reported.  Please review messages.") | 
|---|
| 150 | S SUBJ="IB*2*377 email notification failure" | 
|---|
| 151 | K MSG S LN=0 | 
|---|
| 152 | S LN=LN+1,MSG(LN)="MailMan reported the following error(s) when attempting to send the" | 
|---|
| 153 | S LN=LN+1,MSG(LN)="installation notification message for IB patch 377." | 
|---|
| 154 | S LN=LN+1,MSG(LN)="" | 
|---|
| 155 | S (GLO,GLB)="^TMP(""XMERR"","_$J | 
|---|
| 156 | S GLO=GLO_")" | 
|---|
| 157 | F  S GLO=$Q(@GLO) Q:GLO'[GLB  S LN=LN+1,MSG(LN)="   "_GLO_" = "_$G(@GLO) | 
|---|
| 158 | S LN=LN+1,MSG(LN)="" | 
|---|
| 159 | S LN=LN+1,MSG(LN)="Please contact EPS and report this problem by entering a Remedy ticket" | 
|---|
| 160 | S LN=LN+1,MSG(LN)="or by calling the VA Service Desk (ph. 1-888-596-4357)." | 
|---|
| 161 | S LN=LN+1,MSG(LN)="" | 
|---|
| 162 | S LN=LN+1,MSG(LN)="Austin FSC needs to be notified when this patch is installed." | 
|---|
| 163 | S LN=LN+1,MSG(LN)="" | 
|---|
| 164 | K XMTO | 
|---|
| 165 | S XMTO(DUZ)="" | 
|---|
| 166 | S XMTO("G.PATCHES")="" | 
|---|
| 167 | D SENDMSG^XMXAPI(DUZ,SUBJ,"MSG",.XMTO) | 
|---|
| 168 | D MES^XPDUTL(.MSG) | 
|---|
| 169 | ; | 
|---|
| 170 | EMAILX  ; | 
|---|
| 171 | D MES^XPDUTL(" Done.") | 
|---|
| 172 | D UPDATE^XPDID(5) | 
|---|
| 173 | D CLEAN^DILF | 
|---|
| 174 | Q | 
|---|
| 175 | ; | 
|---|