| [613] | 1 | IB20P279 ;ISP/TDP - IB*2*279 PRE-INIT ROUTINE ;07/21/2004
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**279**;21-MAR-94
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | ENV ; environment check
 | 
|---|
 | 5 | PRE ; set up check points for pre-init
 | 
|---|
 | 6 |  N %
 | 
|---|
 | 7 |  S %=$$NEWCP^XPDUTL("PROVID","PROVID^IB20P279")
 | 
|---|
 | 8 |  Q
 | 
|---|
 | 9 | PROVID ;Search files 355.9 and 355.91 for invalid Care Unit pointers to file
 | 
|---|
 | 10 |  ;355.96.
 | 
|---|
 | 11 |  D BMES^XPDUTL("Beginning invalid Care Unit pointer search.")
 | 
|---|
 | 12 |  D 3559,35591 I $D(^TMP($J,"IB20P279")) D MESSAGE
 | 
|---|
 | 13 |  D COMPLETE
 | 
|---|
 | 14 |  D END
 | 
|---|
 | 15 |  Q
 | 
|---|
 | 16 | 35591 ;Search file 355.91 for invalid Care Unit pointers to file 355.96.
 | 
|---|
 | 17 |  D BMES^XPDUTL("Searching for invalid Care Unit pointers in file 355.91.")
 | 
|---|
 | 18 |  N DA,DIE,DR,IB35591,IBCARE,IBCIVAL,IBCNT,IBCU,IBCUCHK,IBECNT,IBFORM
 | 
|---|
 | 19 |  N IBINS,IBINSNM,IBNUM,IBPRVID,IBPRVTYP
 | 
|---|
 | 20 |  S (IBCNT,IBECNT,IBNUM)=0
 | 
|---|
 | 21 |  S DIE="^IBA(355.91,"
 | 
|---|
 | 22 |  F  S IBNUM=$O(^IBA(355.91,IBNUM)) Q:IBNUM=""  D
 | 
|---|
 | 23 |  . I 'IBNUM Q
 | 
|---|
 | 24 |  . S IB35591=$G(^IBA(355.91,IBNUM,0)) I IB35591="" Q
 | 
|---|
 | 25 |  . S IBINS=$P(IB35591,U,1)
 | 
|---|
 | 26 |  . S IBCU=$P(IB35591,U,3) I IBCU="" Q
 | 
|---|
 | 27 |  . S IBFORM=$P(IB35591,U,4)
 | 
|---|
 | 28 |  . S IBCARE=$P(IB35591,U,5)
 | 
|---|
 | 29 |  . S IBPRVID=$P(IB35591,U,6)
 | 
|---|
 | 30 |  . D VALIDCU I IBCIVAL=IBCU Q
 | 
|---|
 | 31 |  . S IBCUCHK=0 D CUCHK I IBCUCHK D  Q
 | 
|---|
 | 32 |  .. S IBINSNM=$P($G(^DIC(36,IBINS,0)),U,1) I IBINSNM="" S IBINSNM="UNKNOWN (IEN "_IBINS_")"
 | 
|---|
 | 33 |  .. S IBPRVTYP=$P($G(^IBE(355.97,IBPRVID,0)),U,1)
 | 
|---|
 | 34 |  .. S ^TMP($J,"IB20P279",IBINSNM,IBPRVTYP,"<<INS CO DEFAULT>>",IBNUM)=IB35591
 | 
|---|
 | 35 |  .. S IBECNT=IBECNT+1
 | 
|---|
 | 36 |  .. D OUTPUT
 | 
|---|
 | 37 |  . D FILE
 | 
|---|
 | 38 |  D TOTALS
 | 
|---|
 | 39 |  Q
 | 
|---|
 | 40 | 3559 ;Search file 355.9 for invalid Care Unit pointers to file 355.96.
 | 
|---|
 | 41 |  D BMES^XPDUTL("Searching for invalid Care Unit pointers in file 355.9.")
 | 
|---|
 | 42 |  N DA,DIE,DR,IB3559,IBCARE,IBCIVAL,IBCNT,IBCU,IBCUCHK,IBECNT,IBFORM,IBGBL
 | 
|---|
 | 43 |  N IBINS,IBINSNM,IBNAME,IBNUM,IBPROV,IBPRVID,IBPRVTYP
 | 
|---|
 | 44 |  K ^TMP($J,"IB20P279")
 | 
|---|
 | 45 |  S (IBCNT,IBECNT,IBNUM)=0
 | 
|---|
 | 46 |  S DIE="^IBA(355.9,"
 | 
|---|
 | 47 |  F  S IBNUM=$O(^IBA(355.9,IBNUM)) Q:IBNUM=""  D
 | 
|---|
 | 48 |  . I 'IBNUM Q
 | 
|---|
 | 49 |  . S IB3559=$G(^IBA(355.9,IBNUM,0)) I IB3559="" Q
 | 
|---|
 | 50 |  . S IBPROV=$P(IB3559,U,1)
 | 
|---|
 | 51 |  . S IBINS=$P(IB3559,U,2)
 | 
|---|
 | 52 |  . S IBCU=$P(IB3559,U,3) I IBCU="" Q
 | 
|---|
 | 53 |  . S IBFORM=$P(IB3559,U,4)
 | 
|---|
 | 54 |  . S IBCARE=$P(IB3559,U,5)
 | 
|---|
 | 55 |  . S IBPRVID=$P(IB3559,U,6)
 | 
|---|
 | 56 |  . D VALIDCU I IBCIVAL=IBCU Q
 | 
|---|
 | 57 |  . S IBCUCHK=0 D CUCHK I IBCUCHK D  Q
 | 
|---|
 | 58 |  .. S IBINSNM=$P($G(^DIC(36,IBINS,0)),U,1) I IBINSNM="" S IBINSNM="UNKNOWN (IEN "_IBINS_")"
 | 
|---|
 | 59 |  .. S IBPRVTYP=$P($G(^IBE(355.97,IBPRVID,0)),U,1)
 | 
|---|
 | 60 |  .. S IBGBL="^"_$P($G(IBPROV),";",2)_$P($G(IBPROV),";",1)_",0)"
 | 
|---|
 | 61 |  .. S IBNAME=$P($G(@IBGBL),"^",1)
 | 
|---|
 | 62 |  .. S ^TMP($J,"IB20P279",IBINSNM,IBPRVTYP,IBNAME,IBNUM)=IB3559
 | 
|---|
 | 63 |  .. S IBECNT=IBECNT+1
 | 
|---|
 | 64 |  .. D OUTPUT
 | 
|---|
 | 65 |  . D FILE
 | 
|---|
 | 66 |  D TOTALS
 | 
|---|
 | 67 |  Q
 | 
|---|
 | 68 | TOTALS ; Print cleanup totals.
 | 
|---|
 | 69 |  N IBFILE
 | 
|---|
 | 70 |  S IBFILE=$S(DIE["355.91":"355.91.",1:"355.9.")
 | 
|---|
 | 71 |  I 'IBCNT,'IBECNT D BMES^XPDUTL("There were no invalid Care Unit pointers in file "_IBFILE) Q
 | 
|---|
 | 72 |  I IBCNT D BMES^XPDUTL(IBCNT_" total invalid Care Unit pointer(s) were corrected in file "_IBFILE)
 | 
|---|
 | 73 |  I IBECNT D BMES^XPDUTL(IBECNT_" total invalid Care Unit pointer(s) were NOT corrected in file "_IBFILE)
 | 
|---|
 | 74 |  Q
 | 
|---|
 | 75 | OUTPUT ; Failed conversion message.
 | 
|---|
 | 76 |  D MES^XPDUTL("> Cannot change Care Unit Pointer for "_DIE_IBNUM_").  A Mailman")
 | 
|---|
 | 77 |  D MES^XPDUTL("  message will be generated with more information.")
 | 
|---|
 | 78 |  Q
 | 
|---|
 | 79 | FILE ; Save change and display success message.
 | 
|---|
 | 80 |  N IBL,IBLOCK,X
 | 
|---|
 | 81 |  S IBL=0
 | 
|---|
 | 82 |  S IBLOCK=DIE_IBNUM_")"
 | 
|---|
 | 83 |  F X=1:1:10 L +@IBLOCK:2 H:'$T 5 I $T S IBL=1 Q
 | 
|---|
 | 84 |  I 'IBL D  Q
 | 
|---|
 | 85 |  . S IBINSNM=$P($G(^DIC(36,IBINS,0)),U,1) I IBINSNM="" S IBINSNM="UNKNOWN (IEN "_IBINS_")"
 | 
|---|
 | 86 |  . S IBPRVTYP=$P($G(^IBE(355.97,IBPRVID,0)),U,1)
 | 
|---|
 | 87 |  . S IBGBL="^"_$P($G(IBPROV),";",2)_$P($G(IBPROV),";",1)_",0)"
 | 
|---|
 | 88 |  . S IBNAME=$P($G(@IBGBL),"^",1)
 | 
|---|
 | 89 |  . S ^TMP($J,"IB20P279",IBINSNM,IBPRVTYP,IBNAME,IBNUM)=$S($D(IB3559):IB3559,1:IB35591)
 | 
|---|
 | 90 |  . S IBECNT=IBECNT+1
 | 
|---|
 | 91 |  . D OUTPUT
 | 
|---|
 | 92 |  S DA=IBNUM
 | 
|---|
 | 93 |  S DR=".03////"_IBCIVAL
 | 
|---|
 | 94 |  D ^DIE K DA,DR
 | 
|---|
 | 95 |  L -@IBLOCK
 | 
|---|
 | 96 |  D MES^XPDUTL("> Care Unit Pointer for "_DIE_IBNUM_") has been updated.")
 | 
|---|
 | 97 |  S IBCNT=IBCNT+1
 | 
|---|
 | 98 |  Q
 | 
|---|
 | 99 | VALIDCU ;Checks for valid Care Unit combination.
 | 
|---|
 | 100 |  ;Set IBCIVAL to insure Care Unit Pointer (355.9 and 355.91) is correct.
 | 
|---|
 | 101 |  N IBCUVAL
 | 
|---|
 | 102 |  S IBCUVAL=$P($G(^IBA(355.96,+IBCU,0)),U,1) I IBCUVAL="" S IBCIVAL="@" Q
 | 
|---|
 | 103 |  S IBCIVAL=$O(^IBA(355.96,"AUNIQ",IBINS,IBCUVAL,IBFORM,IBCARE,IBPRVID,"")) I IBCIVAL'="" Q
 | 
|---|
 | 104 |  S IBCIVAL=$O(^IBA(355.96,"AUNIQ",IBINS,IBCUVAL,IBFORM,0,IBPRVID,"")) I IBCIVAL'="" Q
 | 
|---|
 | 105 |  S IBCIVAL=$O(^IBA(355.96,"AUNIQ",IBINS,IBCUVAL,0,IBCARE,IBPRVID,"")) I IBCIVAL'="" Q
 | 
|---|
 | 106 |  S IBCIVAL=$O(^IBA(355.96,"AUNIQ",IBINS,IBCUVAL,0,0,IBPRVID,"")) I IBCIVAL'="" Q
 | 
|---|
 | 107 |  S IBCIVAL="@"
 | 
|---|
 | 108 |  Q
 | 
|---|
 | 109 | CUCHK ;Checks for existing Care Unit combination.
 | 
|---|
 | 110 |  I DIE="^IBA(355.91,",$D(^IBA(355.91,"AUNIQ",IBINS,$S(IBCIVAL="@":"*N/A*",IBCIVAL:IBCIVAL,1:$P(IB35591,U,10)),IBFORM,IBCARE,IBPRVID)) S IBCUCHK=1
 | 
|---|
 | 111 |  I DIE="^IBA(355.9,",$D(^IBA(355.9,"AUNIQ",IBPROV,IBINS,$S(IBCIVAL="@":"*N/A*",IBCIVAL:IBCIVAL,1:$P(IB3559,U,16)),IBFORM,IBCARE,IBPRVID)) S IBCUCHK=1
 | 
|---|
 | 112 |  Q
 | 
|---|
 | 113 | MESSAGE ;Send message to user if unable to change Care Unit pointer(s).
 | 
|---|
 | 114 |  N IBC,IBCARE,IBCNT,IBCU,IBDATA,IBFORM,IBGROUP,IBGRP,IBINS,IBMSG,IBNAME
 | 
|---|
 | 115 |  N IBNCNT,IBNETNM,IBNME,IBNMSPC,IBNUM,IBPARAM,IBPRV,IBPRVID,IBTST,IBTXT
 | 
|---|
 | 116 |  N XMDUZ,XMERR,XMSUB,XMTEXT,XMY
 | 
|---|
 | 117 |  S XMSUB="PROVIDER ID CARE UNIT POINTERS INVALID"
 | 
|---|
 | 118 |  I DUZ="" N DUZ S DUZ=.5 ; if user not defined set to postmaster
 | 
|---|
 | 119 |  S XMDUZ=DUZ,XMTEXT="IBTXT"
 | 
|---|
 | 120 |  S IBPARAM("FROM")="PATCH IB*2.0*279 PRE-INIT"
 | 
|---|
 | 121 |  S IBGROUP="IB EDI SUPERVISOR"
 | 
|---|
 | 122 |  S IBGRP=$O(^XMB(3.8,"B",IBGROUP,"")) I IBGRP D  ; billing group defined
 | 
|---|
 | 123 |  . I +$P($G(^XMB(3.8,IBGRP,1,0)),U,4)'>0 Q  ; no members defined
 | 
|---|
 | 124 |  . S XMY("G."_IBGROUP)="" ; send message to the group.
 | 
|---|
 | 125 |  S XMY(DUZ)="" ; send message to user
 | 
|---|
 | 126 |  S IBTST=".TEST.MIR.TST.MIRROR.TRAIN."     ; various test names
 | 
|---|
 | 127 |  S IBNETNM=$G(^XMB("NETNAME"))
 | 
|---|
 | 128 |  I IBNETNM'="",('$F(IBTST,"."_$P(IBNETNM,".",1)_".")) S XMY("PHELPS,TY@FORUM.VA.GOV")=""
 | 
|---|
 | 129 |  S IBC=0
 | 
|---|
 | 130 |  S IBC=IBC+1,IBTXT(IBC)="This message has been sent by patch IB*2.0*279 at the completion of"
 | 
|---|
 | 131 |  S IBC=IBC+1,IBTXT(IBC)="the pre-init routine."
 | 
|---|
 | 132 |  S IBC=IBC+1,IBTXT(IBC)="  "
 | 
|---|
 | 133 |  S IBC=IBC+1,IBTXT(IBC)="The Care Unit pointer values could not be corrected automatically for the"
 | 
|---|
 | 134 |  S IBC=IBC+1,IBTXT(IBC)="following Provider ID entries.  These entries need to be deleted or modified"
 | 
|---|
 | 135 |  S IBC=IBC+1,IBTXT(IBC)="by choosing INSURANCE CO IDS from the Provider ID Maintenance [IBCE PROVIDER"
 | 
|---|
 | 136 |  S IBC=IBC+1,IBTXT(IBC)="MAINT] menu option.  If there is only one entry with the combination"
 | 
|---|
 | 137 |  S IBC=IBC+1,IBTXT(IBC)="selected, then choose Edit an ID Record and accept all the defaults.  The"
 | 
|---|
 | 138 |  S IBC=IBC+1,IBTXT(IBC)="Care Unit combination pointer will be corrected.  If there are two (2)"
 | 
|---|
 | 139 |  S IBC=IBC+1,IBTXT(IBC)="identical entries, and you are unable to determine which one needs to be"
 | 
|---|
 | 140 |  S IBC=IBC+1,IBTXT(IBC)="corrected, then delete both entries and then re-enter the data.  If you are"
 | 
|---|
 | 141 |  S IBC=IBC+1,IBTXT(IBC)="able to distinguish which entry is the invalid one, then you can either edit"
 | 
|---|
 | 142 |  S IBC=IBC+1,IBTXT(IBC)="the Care Unit to a new one which does not create a duplicate combination or"
 | 
|---|
 | 143 |  S IBC=IBC+1,IBTXT(IBC)="you may delete it.  It is important that the invalid entry NOT be left"
 | 
|---|
 | 144 |  S IBC=IBC+1,IBTXT(IBC)="unchanged on the system."
 | 
|---|
 | 145 |  S IBC=IBC+1,IBTXT(IBC)="  "
 | 
|---|
 | 146 |  S IBC=IBC+1,IBTXT(IBC)="INSURANCE CO."
 | 
|---|
 | 147 |  S IBC=IBC+1,IBTXT(IBC)="   PROVIDER ID TYPE                  CARE"
 | 
|---|
 | 148 |  S IBC=IBC+1,IBTXT(IBC)="      PROVIDER                 FORM  TYPE       CARE UNIT        ID#"
 | 
|---|
 | 149 |  S IBC=IBC+1,IBTXT(IBC)="==============================================================================="
 | 
|---|
 | 150 |  S IBNMSPC="                         "
 | 
|---|
 | 151 |  S IBCNT=0,IBINS=""
 | 
|---|
 | 152 |  F  S IBINS=$O(^TMP($J,"IB20P279",IBINS)) Q:IBINS=""  D
 | 
|---|
 | 153 |  . S IBC=IBC+1,IBTXT(IBC)="  "
 | 
|---|
 | 154 |  . S IBC=IBC+1,IBTXT(IBC)=IBINS
 | 
|---|
 | 155 |  . S IBPRV=""
 | 
|---|
 | 156 |  . F  S IBPRV=$O(^TMP($J,"IB20P279",IBINS,IBPRV)) Q:IBPRV=""  D
 | 
|---|
 | 157 |  .. S IBC=IBC+1,IBTXT(IBC)="   "_IBPRV
 | 
|---|
 | 158 |  .. S IBNAME=""
 | 
|---|
 | 159 |  .. F  S IBNAME=$O(^TMP($J,"IB20P279",IBINS,IBPRV,IBNAME)) Q:IBNAME=""  D
 | 
|---|
 | 160 |  ... S IBNME=$E(IBNAME_"                         ",1,24)_" "
 | 
|---|
 | 161 |  ... S IBNCNT=0
 | 
|---|
 | 162 |  ... S IBNUM=""
 | 
|---|
 | 163 |  ... F  S IBNUM=$O(^TMP($J,"IB20P279",IBINS,IBPRV,IBNAME,IBNUM)) Q:IBNUM=""  D
 | 
|---|
 | 164 |  .... S IBDATA=$G(^TMP($J,"IB20P279",IBINS,IBPRV,IBNAME,IBNUM)) I IBDATA="" Q
 | 
|---|
 | 165 |  .... S IBFORM=$P(IBDATA,U,4),IBFORM=$E($S(IBFORM=1:"UB-92",IBFORM=2:"HCFA",1:"BOTH")_"     ",1,5)_" "
 | 
|---|
 | 166 |  .... S IBCARE=$P(IBDATA,U,5),IBCARE=$E($S(IBCARE=1:"INPT",IBCARE=2:"OUTPT",1:"INPT/OUTPT")_"          ",1,10)_" "
 | 
|---|
 | 167 |  .... S IBCU=$P($G(^IBA(355.95,$P($G(^IBA(355.96,$P(IBDATA,U,3),0)),"^",1),0)),"^",1),IBCU=$E(IBCU_"                ",1,16)_" "
 | 
|---|
 | 168 |  .... S IBPRVID=$E($P(IBDATA,U,7)_"              ",1,14)
 | 
|---|
 | 169 |  .... S IBC=IBC+1,IBTXT(IBC)="      "_$S(IBNCNT:IBNMSPC,1:IBNME)_IBFORM_IBCARE_IBCU_IBPRVID
 | 
|---|
 | 170 |  .... S IBCNT=IBCNT+1
 | 
|---|
 | 171 |  .... I 'IBNCNT S IBNCNT=1
 | 
|---|
 | 172 |  S IBC=IBC+1,IBTXT(IBC)="  "
 | 
|---|
 | 173 |  S IBC=IBC+1,IBTXT(IBC)="  "
 | 
|---|
 | 174 |  S IBC=IBC+1,IBTXT(IBC)="Total records needing to be modified: "_IBCNT_"."
 | 
|---|
 | 175 |  D SENDMSG^XMXAPI(XMDUZ,XMSUB,XMTEXT,.XMY,.IBPARAM,"","")
 | 
|---|
 | 176 |  S IBMSG(1)=" "
 | 
|---|
 | 177 |  S IBMSG(2)="******************************************************************************"
 | 
|---|
 | 178 |  S IBMSG(3)="** Provider ID Care Unit clean up message "_$S($D(XMERR):"not sent due to error in",1:"sent to the ")
 | 
|---|
 | 179 |  I $D(XMERR) S IBMSG(4)="** message set up.  Dumping message to screen."
 | 
|---|
 | 180 |  I '$D(XMERR) S IBMSG(3)=IBMSG(3)_$S(DUZ=.5:"postmaster",1:"user")_$S('$D(XMY("G.IB EDI SUPERVISOR")):".",1:"")
 | 
|---|
 | 181 |  I '$D(XMERR) S IBMSG(4)=$S($D(XMY("G.IB EDI SUPERVISOR")):"** and the IB EDI SUPERVISOR mail group.",1:"** Please forward message to your billing staff for action.")
 | 
|---|
 | 182 |  S IBMSG(5)="******************************************************************************"
 | 
|---|
 | 183 |  D BMES^XPDUTL(.IBMSG)
 | 
|---|
 | 184 |  I $D(XMERR) D BMES^XPDUTL("  "),BMES^XPDUTL(.IBTXT)
 | 
|---|
 | 185 |  K ^TMP($J,"IB20P279")
 | 
|---|
 | 186 |  Q
 | 
|---|
 | 187 | COMPLETE ; display message that step has completed
 | 
|---|
 | 188 |  D BMES^XPDUTL("Step complete.")
 | 
|---|
 | 189 |  Q
 | 
|---|
 | 190 | END ; display message that pre-init has completed successfully
 | 
|---|
 | 191 |  D BMES^XPDUTL("Pre-init complete")
 | 
|---|
 | 192 |  Q
 | 
|---|