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