| [623] | 1 | IBCEP82 ;ALB/CLT, Special cross references and data entry for fields in file 355.93 ; 14 Apr 2006  9:41 AM
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**343,374**;21-MAR-94;Build 16
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; Call at tags only
 | 
|---|
 | 5 |  Q
 | 
|---|
 | 6 |  ;This routine will ask for the NPI, check for duplicate entries, and check for proper
 | 
|---|
 | 7 |  ;format using the double-add-double formula.  If the NPI is being deleted it will ask
 | 
|---|
 | 8 |  ;the user why it is being deleted.
 | 
|---|
 | 9 |  ;If it is being deleted because of an erroneous entry it will be completely deleted.
 | 
|---|
 | 10 |  ;If it is a valid NPI being deleted because of possible inappropriate usage it will be
 | 
|---|
 | 11 |  ;maintained in the history cross reference to preclude anyone from using this NPI again.
 | 
|---|
 | 12 |  ;
 | 
|---|
 | 13 | EN ;Routine primary entry point
 | 
|---|
 | 14 |  N DTOUT,DUOUT,DIR,DIE,DIC,DR,X,Y
 | 
|---|
 | 15 |  N IBIEN,IBNPI,IBCHECK,IBOLDNPI,IBRBNPI,IBRB
 | 
|---|
 | 16 |  S IBIEN=DA,IBOLDNPI=""
 | 
|---|
 | 17 | EN1 ;
 | 
|---|
 | 18 |  K DIR
 | 
|---|
 | 19 |  S DIR(0)="FO^10:10",DIR("A")="NPI",DIR("?")="Enter a 10 digit National Provider Identifier"
 | 
|---|
 | 20 |  I $G(DA) S:$P($G(^IBA(355.93,DA,0)),U,14)'="" (DIR("B"),IBOLDNPI)=$P($G(^IBA(355.93,DA,0)),U,14)
 | 
|---|
 | 21 |  D ^DIR S IBCHECK=0
 | 
|---|
 | 22 |  I X="^" W *7,!,"   EXIT NOT ALLOWED ??" G EN1
 | 
|---|
 | 23 |  I $E(X)="^" W *7,!,"   JUMPING NOT ALLOWED ??" G EN1
 | 
|---|
 | 24 |  I X="@" G:IBOLDNPI'="" DEL W *7,"??" G EN1
 | 
|---|
 | 25 |  I $G(DUOUT)!$G(DTOUT)!(X="")!(Y=IBOLDNPI) G XIT
 | 
|---|
 | 26 |  S IBNPI=Y
 | 
|---|
 | 27 |  I '$$CHKDGT^XUSNPI(IBNPI) W !,*7,"Not a valid NPI.  Please try again.",! G EN1
 | 
|---|
 | 28 |  I $$NPIUSED^IBCEP81(IBNPI) G EN1
 | 
|---|
 | 29 |  S IBCHECK=1
 | 
|---|
 | 30 |  I IBOLDNPI="" D ACTI
 | 
|---|
 | 31 |  I IBOLDNPI'="" D:IBNPI'=IBOLDNPI INACT
 | 
|---|
 | 32 |  S $P(^IBA(355.93,IBIEN,0),U,14)=IBNPI,^IBA(355.93,"NPI",IBNPI,IBIEN)="",^IBA(355.93,"NPIHISTORY",IBNPI,IBIEN)=""
 | 
|---|
 | 33 |  G XIT
 | 
|---|
 | 34 |  ;
 | 
|---|
 | 35 | ACTI ;CREATE AN ACTIVATED ENTRY IN MULTIPLE NPISTATUS FIELD
 | 
|---|
 | 36 |  S DA(1)=IBIEN,DIC="^IBA(355.93,"_DA(1)_",""NPISTATUS"",",DIC(0)="L",X=$$NOW^XLFDT()
 | 
|---|
 | 37 |  S DIC("DR")=".02////^S X=1;.03////^S X=IBNPI;.04////^S X=DUZ"
 | 
|---|
 | 38 |  D FILE^DICN
 | 
|---|
 | 39 |  S $P(^IBA(355.93,IBIEN,0),U,14)=IBNPI
 | 
|---|
 | 40 |  Q
 | 
|---|
 | 41 |  ;
 | 
|---|
 | 42 | DEL ;NPI HAS BEEN DELETED
 | 
|---|
 | 43 |  ;If the user deletes the NPI this subroutine will determine why it was deleted and if it was because it was found
 | 
|---|
 | 44 |  ;in a false identity situation will mark it in history to never be used again.
 | 
|---|
 | 45 |  S IBNPI=DIR("B")
 | 
|---|
 | 46 |  K DIR
 | 
|---|
 | 47 |  S DIR(0)="Y"
 | 
|---|
 | 48 |  S DIR("A")="Are you sure you wish to delete this NPI"
 | 
|---|
 | 49 |  S DIR("?")="You have indicated you wish to delete the NPI.  This is a second chance check."
 | 
|---|
 | 50 |  D ^DIR
 | 
|---|
 | 51 |  G:Y(0)="NO" XIT
 | 
|---|
 | 52 |  S DIR(0)="S^E:ERROR;V:VALID",DIR("A")="Was this a Valid NPI or an NPI entered in Error"
 | 
|---|
 | 53 |  S DIR("?",1)="An example of an NPI entered in error is if the entry person transposed numbers,"
 | 
|---|
 | 54 |  S DIR("?",2)="or if the NPI for one provider is accidentally assigned to a different provider."
 | 
|---|
 | 55 |  S DIR("?")="Enter an 'E' for Error or a 'V' for Valid."
 | 
|---|
 | 56 |  D ^DIR
 | 
|---|
 | 57 |  I Y="E" D COMP W !,"The NPI has been deleted.",!
 | 
|---|
 | 58 |  I Y="V" S IBCHECK=2 D INACT W !,"The NPI is now inactive.",!
 | 
|---|
 | 59 |  Q
 | 
|---|
 | 60 |  ;
 | 
|---|
 | 61 | COMP ;COMPLETELY DELETE THE NPI
 | 
|---|
 | 62 |  ;This subroutine will delete the NPI from the file 355.93.
 | 
|---|
 | 63 |  S OIEN=$O(^IBA(355.93,IBIEN,"NPISTATUS","C",IBOLDNPI,"A"),-1)
 | 
|---|
 | 64 |  D DELNPI(IBIEN,OIEN)
 | 
|---|
 | 65 |  K ^IBA(355.93,"NPI",IBOLDNPI,DA),^IBA(355.93,"NPIHISTORY",IBOLDNPI,DA)
 | 
|---|
 | 66 |  S IBRB=0
 | 
|---|
 | 67 |  D  ; Find the most recent status '0' (inactive) NPI entry in the list.
 | 
|---|
 | 68 |  . N IBRBLST,IBRBTMP
 | 
|---|
 | 69 |  . ; Don't want to roll back to the same number you are deleting.
 | 
|---|
 | 70 |  . S IBRBLST(IBOLDNPI)=""
 | 
|---|
 | 71 |  . S IBRBTMP="A"
 | 
|---|
 | 72 |  . ; Go through each entry in reverse order
 | 
|---|
 | 73 |  . F  S IBRBTMP=$O(^IBA(355.93,IBIEN,"NPISTATUS",IBRBTMP),-1) Q:'IBRBTMP  D  Q:IBRB'=0
 | 
|---|
 | 74 |  .. S IBRBLST=^IBA(355.93,IBIEN,"NPISTATUS",IBRBTMP,0)
 | 
|---|
 | 75 |  .. ; If this is an 'active' entry then ignore it.
 | 
|---|
 | 76 |  .. I $P(IBRBLST,U,2)=1 Q
 | 
|---|
 | 77 |  .. ; If this entry does not have an NPI then ignore it.
 | 
|---|
 | 78 |  .. I $P(IBRBLST,U,3)="" Q
 | 
|---|
 | 79 |  .. ;If this is an inactive entry then report it.
 | 
|---|
 | 80 |  .. I $P(IBRBLST,U,2)=0 S IBRB=IBRBTMP Q
 | 
|---|
 | 81 |  .. Q
 | 
|---|
 | 82 |  . Q
 | 
|---|
 | 83 |  I IBRB>0 D ROLLBACK
 | 
|---|
 | 84 |  Q
 | 
|---|
 | 85 |  ;
 | 
|---|
 | 86 | DELNPI(IEN,OIEN) ;DELETE-INVALID removes NPI from file.
 | 
|---|
 | 87 |  NEW DIE,DIK,DIC,DA,DR,D,D0,DI,DIC,DQ,X
 | 
|---|
 | 88 |  NEW DP,DM,DK,DL,DIEL
 | 
|---|
 | 89 |  S DIE="^IBA(355.93,",DA=IEN,DR="41.01////@"
 | 
|---|
 | 90 |  D ^DIE
 | 
|---|
 | 91 |  S DA(1)=IEN,DIK="^IBA(355.93,"_DA(1)_",""NPISTATUS"",",DA=OIEN
 | 
|---|
 | 92 |  D ^DIK
 | 
|---|
 | 93 |  Q
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 | INACT ;INACTIVATE AN ENTRY
 | 
|---|
 | 96 |  ;This subroutine makes two entries in the NPI multiple field.
 | 
|---|
 | 97 |  ;One for the deactivation of the old NPI and the second
 | 
|---|
 | 98 |  ;for the activation of a new NPI.
 | 
|---|
 | 99 |  S DA(1)=IBIEN,DIC="^IBA(355.93,"_DA(1)_",""NPISTATUS"",",DIC(0)="L",X=$$NOW^XLFDT()
 | 
|---|
 | 100 |  S DIC("DR")=".02////^S X=0;.03////^S X=IBOLDNPI;.04////^S X=DUZ"
 | 
|---|
 | 101 |  D FILE^DICN
 | 
|---|
 | 102 |  S ^IBA(355.93,"NPIHISTORY",IBOLDNPI,DA(1))=""
 | 
|---|
 | 103 |  K ^IBA(355.93,"NPI",IBOLDNPI,DA(1))
 | 
|---|
 | 104 |  S $P(^IBA(355.93,IBIEN,0),U,14)=""
 | 
|---|
 | 105 |  I $G(IBCHECK)<2 D ACTI
 | 
|---|
 | 106 |  S ^IBA(355.93,"NPIHISTORY",IBNPI,DA(1))=""
 | 
|---|
 | 107 |  Q
 | 
|---|
 | 108 |  ;
 | 
|---|
 | 109 | ROLLBACK ;Rollback or delete NPI
 | 
|---|
 | 110 |  S IBRBNPI=$P(^IBA(355.93,IBIEN,"NPISTATUS",IBRB,0),U,3)
 | 
|---|
 | 111 |  NEW DIE,DIK,DIC,DA,DR,D,D0,DI,DIC,DQ,X
 | 
|---|
 | 112 |  NEW DP,DM,DK,DL,DIEL
 | 
|---|
 | 113 |  S DA(1)=IBIEN,DIK="^IBA(355.93,"_DA(1)_",""NPISTATUS"",",DA=IBRB
 | 
|---|
 | 114 |  D ^DIK
 | 
|---|
 | 115 |  S $P(^IBA(355.93,IBIEN,0),U,14)=IBRBNPI,^IBA(355.93,"NPI",IBRBNPI,IBIEN)=""
 | 
|---|
 | 116 |  Q
 | 
|---|
 | 117 |  ;
 | 
|---|
 | 118 | XIT ;CLEAN AND EXIT
 | 
|---|
 | 119 |  Q
 | 
|---|
 | 120 |  ;
 | 
|---|
 | 121 | XR ;Set the primary taxonomy code cross reference for field 42
 | 
|---|
 | 122 |  N ATAX S ATAX=""
 | 
|---|
 | 123 |  I $D(^IBA(355.93,DA(1),"TAXONOMY","D")) D:X=1
 | 
|---|
 | 124 |  . F  S ATAX=$O(^IBA(355.93,DA(1),"TAXONOMY","D",1,ATAX)) Q:ATAX=""  D
 | 
|---|
 | 125 |  .. K ^IBA(355.93,DA(1),"TAXONOMY","D",1,ATAX)
 | 
|---|
 | 126 |  .. I ATAX'=DA S $P(^IBA(355.93,DA(1),"TAXONOMY",ATAX,0),U,2)=0,^IBA(355.93,DA(1),"TAXONOMY","D",0,ATAX)=""
 | 
|---|
 | 127 |  S ^IBA(355.93,DA(1),"TAXONOMY","D",X,DA)=""
 | 
|---|
 | 128 |  Q
 | 
|---|
 | 129 |  ;
 | 
|---|
 | 130 | KXR ;Kill primary taxonomy code cross reference for field 42
 | 
|---|
 | 131 |  N K
 | 
|---|
 | 132 |  F K=0,1 K ^IBA(355.93,DA(1),"TAXONOMY","D",K,DA)
 | 
|---|
 | 133 |  Q
 | 
|---|