[613] | 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
|
---|