| 1 | IBCEPCID ;ALB/WCJ - Provider ID functions ;13 Feb 2006
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**320**;21-MAR-94
 | 
|---|
| 3 |  ;; Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  G AWAY
 | 
|---|
| 6 | AWAY Q
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | COPY(IBINS) ;  The purpose of this routine is to sync up insurance company IDs
 | 
|---|
| 9 |  ; It is passed an insurance company.  If the insurance company is a stand alone company,
 | 
|---|
| 10 |  ; it quits.  If it is passed a child, it synchs up with the parent.  If it is passed a parent, it syncs
 | 
|---|
| 11 |  ; up with all it's children.
 | 
|---|
| 12 |  ; 
 | 
|---|
| 13 |  ; The IDs that synched up are Provider ID's defined for providers by an insurance company, default IDs for all
 | 
|---|
| 14 |  ; Providers for and an insurance company, and additonal billing providers IDs for an insuracne company.
 | 
|---|
| 15 |  ; 
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  N TYPE,PARENT,CHILD,COPYINS
 | 
|---|
| 18 |  Q:$G(IBINS)=""
 | 
|---|
| 19 |  S TYPE=$$TYPE(IBINS)
 | 
|---|
| 20 |  Q:TYPE=""
 | 
|---|
| 21 |  I TYPE="P" S PARENT=IBINS,CHILD=""
 | 
|---|
| 22 |  I TYPE="C" S CHILD=IBINS,PARENT=$P($G(^DIC(36,IBINS,3)),U,14) Q:PARENT=""
 | 
|---|
| 23 |  D COPYTO(PARENT,CHILD,.COPYINS)
 | 
|---|
| 24 |  D LOOPTRNS(.COPYINS)
 | 
|---|
| 25 |  Q
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 | TYPE(IBINS) ;
 | 
|---|
| 28 |  Q $P($G(^DIC(36,+IBINS,3)),U,13)
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | COPYTO(PARENT,CHILD,COPYINS) ; Figure out who to copy to:
 | 
|---|
| 31 |  I CHILD]"" S COPYINS(PARENT,CHILD)="" Q
 | 
|---|
| 32 |  F  S CHILD=$O(^DIC(36,"APC",PARENT,CHILD)) Q:'CHILD   S COPYINS(PARENT,CHILD)=""
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 | LOOPTRNS(COPYINS) ;
 | 
|---|
| 36 |  N PARENT,CHILD,IBFILE
 | 
|---|
| 37 |  S PARENT=$O(COPYINS(""))
 | 
|---|
| 38 |  Q:PARENT=""   ; just in case
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  S CHILD=""  F  S CHILD=$O(COPYINS(PARENT,CHILD)) Q:CHILD=""  D
 | 
|---|
| 41 |  .F IBFILE=355.9,355.91,355.92 D
 | 
|---|
| 42 |  .. I IBFILE=355.9 D  Q
 | 
|---|
| 43 |  ... N IBPRV,CU,FT,CT,QUAL,CDA,PDA
 | 
|---|
| 44 |  ... ;
 | 
|---|
| 45 |  ... ; File 355.9
 | 
|---|
| 46 |  ... ; Delete IDs in child but not parent
 | 
|---|
| 47 |  ... ; Edit IDs that are in both 
 | 
|---|
| 48 |  ... S IBPRV="" F  S IBPRV=$O(^IBA(IBFILE,"AUNIQ",IBPRV)) Q:IBPRV=""  D
 | 
|---|
| 49 |  .... Q:IBPRV'[";VA(200,"    ; only copying VA providers
 | 
|---|
| 50 |  .... Q:'$D(^IBA(IBFILE,"AUNIQ",IBPRV,CHILD))
 | 
|---|
| 51 |  .... S CU="" F  S CU=$O(^IBA(IBFILE,"AUNIQ",IBPRV,CHILD,CU)) Q:CU=""  D
 | 
|---|
| 52 |  ..... S FT="" F  S FT=$O(^IBA(IBFILE,"AUNIQ",IBPRV,CHILD,CU,FT)) Q:FT=""  D
 | 
|---|
| 53 |  ...... S CT=""  F  S CT=$O(^IBA(IBFILE,"AUNIQ",IBPRV,CHILD,CU,FT,CT)) Q:CT=""  D
 | 
|---|
| 54 |  ....... S QUAL=""  F  S QUAL=$O(^IBA(IBFILE,"AUNIQ",IBPRV,CHILD,CU,FT,CT,QUAL)) Q:QUAL=""  D
 | 
|---|
| 55 |  ........ S CDA=$O(^IBA(IBFILE,"AUNIQ",IBPRV,CHILD,CU,FT,CT,QUAL,0))
 | 
|---|
| 56 |  ........ Q:'CDA
 | 
|---|
| 57 |  ........ I '$D(^IBA(IBFILE,"AUNIQ",IBPRV,PARENT,CU,FT,CT,QUAL)) D DEL(IBFILE,CDA) Q
 | 
|---|
| 58 |  ........ S PDA=$O(^IBA(IBFILE,"AUNIQ",IBPRV,PARENT,CU,FT,CT,QUAL,0))
 | 
|---|
| 59 |  ........ Q:PDA=""
 | 
|---|
| 60 |  ........ D MOD(IBFILE,CDA,PDA) Q
 | 
|---|
| 61 |  ... ;
 | 
|---|
| 62 |  ... ; File 355.9
 | 
|---|
| 63 |  ... ; Add IDs in parent but not child
 | 
|---|
| 64 |  ... S IBPRV="" F  S IBPRV=$O(^IBA(IBFILE,"AUNIQ",IBPRV)) Q:IBPRV=""  D
 | 
|---|
| 65 |  .... Q:IBPRV'[";VA(200,"    ; only copying VA providers
 | 
|---|
| 66 |  .... Q:'$D(^IBA(IBFILE,"AUNIQ",IBPRV,PARENT))
 | 
|---|
| 67 |  .... S CU="" F  S CU=$O(^IBA(IBFILE,"AUNIQ",IBPRV,PARENT,CU)) Q:CU=""  D
 | 
|---|
| 68 |  ..... S FT="" F  S FT=$O(^IBA(IBFILE,"AUNIQ",IBPRV,PARENT,CU,FT)) Q:FT=""  D
 | 
|---|
| 69 |  ...... S CT=""  F  S CT=$O(^IBA(IBFILE,"AUNIQ",IBPRV,PARENT,CU,FT,CT)) Q:CT=""  D
 | 
|---|
| 70 |  ....... S QUAL=""  F  S QUAL=$O(^IBA(IBFILE,"AUNIQ",IBPRV,PARENT,CU,FT,CT,QUAL)) Q:QUAL=""  D
 | 
|---|
| 71 |  ........ S PDA=$O(^IBA(IBFILE,"AUNIQ",IBPRV,PARENT,CU,FT,CT,QUAL,0))
 | 
|---|
| 72 |  ........ Q:'PDA
 | 
|---|
| 73 |  ........ I '$D(^IBA(IBFILE,"AUNIQ",IBPRV,CHILD,CU,FT,CT,QUAL)) D ADD(IBFILE,PDA,CHILD) Q
 | 
|---|
| 74 |  .. ;
 | 
|---|
| 75 |  .. ; Files 355.91 and 355.92
 | 
|---|
| 76 |  .. ; Delete IDs in Child but not parent
 | 
|---|
| 77 |  .. ; Edit IDs that are in both
 | 
|---|
| 78 |  .. I $D(^IBA(IBFILE,"AUNIQ",CHILD)) D
 | 
|---|
| 79 |  ... N CU,FT,CTORD,QUAL,PDA,CDA,DELFL
 | 
|---|
| 80 |  ... S CU="" F  S CU=$O(^IBA(IBFILE,"AUNIQ",CHILD,CU)) Q:CU=""  D
 | 
|---|
| 81 |  .... S FT="" F  S FT=$O(^IBA(IBFILE,"AUNIQ",CHILD,CU,FT)) Q:FT=""  D
 | 
|---|
| 82 |  ..... S CTORD=""  F  S CTORD=$O(^IBA(IBFILE,"AUNIQ",CHILD,CU,FT,CTORD)) Q:CTORD=""  D
 | 
|---|
| 83 |  ...... S QUAL=""  F  S QUAL=$O(^IBA(IBFILE,"AUNIQ",CHILD,CU,FT,CTORD,QUAL)) Q:QUAL=""  D
 | 
|---|
| 84 |  ....... S CDA=""  F  S CDA=$O(^IBA(IBFILE,"AUNIQ",CHILD,CU,FT,CTORD,QUAL,CDA)) Q:CDA=""  D
 | 
|---|
| 85 |  ........ S PDA=$O(^IBA(IBFILE,"AUNIQ",PARENT,CU,FT,CTORD,QUAL,0))
 | 
|---|
| 86 |  ........ S DELFL=1
 | 
|---|
| 87 |  ........ I PDA,IBFILE=355.91,$D(^IBA(IBFILE,"AUNIQ",PARENT,CU,FT,CTORD,QUAL)) S DELFL=0
 | 
|---|
| 88 |  ........ I PDA,IBFILE=355.92 S DELFL=0
 | 
|---|
| 89 |  ........ D:DELFL DEL(IBFILE,CDA)
 | 
|---|
| 90 |  ........ D:'DELFL MOD(IBFILE,CDA,PDA)
 | 
|---|
| 91 |  .. ;
 | 
|---|
| 92 |  .. ; Files 355.91 and 355.92
 | 
|---|
| 93 |  .. ; Add IDs that are in parent but not child
 | 
|---|
| 94 |  .. I $D(^IBA(IBFILE,"AUNIQ",PARENT)) D
 | 
|---|
| 95 |  ... N CU,FT,CTORD,QUAL,PDA
 | 
|---|
| 96 |  ... S CU="" F  S CU=$O(^IBA(IBFILE,"AUNIQ",PARENT,CU)) Q:CU=""  D
 | 
|---|
| 97 |  .... S FT="" F  S FT=$O(^IBA(IBFILE,"AUNIQ",PARENT,CU,FT)) Q:FT=""  D
 | 
|---|
| 98 |  ..... S CTORD=""  F  S CTORD=$O(^IBA(IBFILE,"AUNIQ",PARENT,CU,FT,CTORD)) Q:CTORD=""  D
 | 
|---|
| 99 |  ...... S QUAL=""  F  S QUAL=$O(^IBA(IBFILE,"AUNIQ",PARENT,CU,FT,CTORD,QUAL)) Q:QUAL=""  D
 | 
|---|
| 100 |  ....... S PDA="" F  S PDA=$O(^IBA(IBFILE,"AUNIQ",PARENT,CU,FT,CTORD,QUAL,PDA)) Q:PDA=""  D
 | 
|---|
| 101 |  ........ Q:$O(^IBA(IBFILE,"AUNIQ",CHILD,CU,FT,CTORD,QUAL,0))
 | 
|---|
| 102 |  ........ D ADD(IBFILE,PDA,CHILD) Q
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 | ADD(IBFILE,IEN,INS) ; Add a provider ID
 | 
|---|
| 106 |  N DIC,DIR,X,Y,Z,DA,DR,DIE,DO,DD,DLAYGO,DTOUT,DUOUT
 | 
|---|
| 107 |  N ZERO,CU,FT,CTORD,QUAL,ID
 | 
|---|
| 108 |  S ZERO=$G(^IBA(IBFILE,IEN,0))
 | 
|---|
| 109 |  Q:ZERO=""
 | 
|---|
| 110 |  S CU=$P(ZERO,U,3)
 | 
|---|
| 111 |  S FT=$P(ZERO,U,4)
 | 
|---|
| 112 |  S CTORD=$P(ZERO,U,5)
 | 
|---|
| 113 |  S QUAL=$P(ZERO,U,6)
 | 
|---|
| 114 |  S ID=$P(ZERO,U,7)
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 |  I IBFILE=355.91!(IBFILE=355.92) D
 | 
|---|
| 117 |  . S X=INS
 | 
|---|
| 118 |  . S DIC("DR")=".03////"_CU_";.04////"_FT_";.05////"_CTORD_";.06////"_QUAL_";.07////"_ID
 | 
|---|
| 119 |  . I IBFILE=355.92 S DIC("DR")=DIC("DR")_";.08////A"
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  I IBFILE=355.9 D
 | 
|---|
| 122 |  . S DIC("DR")=".02////"_INS_";.03////"_CU_";.04////"_FT_";.05////"_CTORD_";.06////"_QUAL_";.07////"_ID
 | 
|---|
| 123 |  . S X=$P(ZERO,U)
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 |  S DIC(0)="L",(DIC,DLAYGO)=IBFILE
 | 
|---|
| 126 |  D FILE^DICN
 | 
|---|
| 127 |  Q
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 | DEL(IBFILE,DA) ; Delete a Provider ID
 | 
|---|
| 130 |  N DIK,DIR,X,Y,Z,I
 | 
|---|
| 131 |  S DIK="^IBA("_IBFILE_","
 | 
|---|
| 132 |  F I=1:1 L +^IBA(IBFILE,DA):5 I  Q
 | 
|---|
| 133 |  D ^DIK
 | 
|---|
| 134 |  L -^IBA(IBFILE,DA)
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 | MOD(IBFILE,IEN,PIEN) ; Modify an existing Provider ID
 | 
|---|
| 138 |  N I,ZERO,ID,PID,PZERO,FDAROOT
 | 
|---|
| 139 |  S ZERO=$G(^IBA(IBFILE,IEN,0))
 | 
|---|
| 140 |  Q:ZERO=""
 | 
|---|
| 141 |  S PZERO=$G(^IBA(IBFILE,PIEN,0))
 | 
|---|
| 142 |  Q:PZERO=""
 | 
|---|
| 143 |  S ID=$P(ZERO,U,7)
 | 
|---|
| 144 |  S PID=$P(PZERO,U,7)
 | 
|---|
| 145 |  Q:ID=PID
 | 
|---|
| 146 |  S FDAROOT(IBFILE,IEN_",",.07)=PID
 | 
|---|
| 147 |  F I=1:1 L +^IBA(IBFILE,IEN):5 I  Q
 | 
|---|
| 148 |  D FILE^DIE(,"FDAROOT")
 | 
|---|
| 149 |  L -^IBA(IBFILE,IEN)
 | 
|---|
| 150 |  Q
 | 
|---|
| 151 |  ;
 | 
|---|
| 152 | RESYNCH() ; Resynch everything
 | 
|---|
| 153 |  L +^DIC(36):5 E  W *7,!!,"Can not lock insurance company file, please try later.",!! Q
 | 
|---|
| 154 |  N INS
 | 
|---|
| 155 |  S INS="" F  S INS=$O(^DIC(36,"APC",INS)) Q:INS=""  D COPY(INS)
 | 
|---|
| 156 |  L -^DIC(36)
 | 
|---|
| 157 |  Q
 | 
|---|