| [613] | 1 | IBCEP9B ;ALB/TMP - UPDATE OF PROVIDER ID FROM FILE UTILITIES ;14-NOV-00
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**137,200,320**;21-MAR-94
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  Q
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | READFILE ; Read records stored in ^TMP($J
 | 
|---|
 | 7 |  ;
 | 
|---|
 | 8 |  N D,DA,DIC,IBCT,IBP,IBQUIT,IBS,IBX,P,P3,X,Y,Z
 | 
|---|
 | 9 |  S (IBCT,IBQUIT,IBQUIT1,IBS)=0
 | 
|---|
 | 10 |  U IO(0)
 | 
|---|
 | 11 |  ;
 | 
|---|
 | 12 |  F  S IBCT=$O(^TMP($J,IBCT)) Q:'IBCT  S X=$G(^(IBCT)) I X'="" D  Q:IBQUIT
 | 
|---|
 | 13 |  . D  Q:IBQUIT
 | 
|---|
 | 14 |  .. I $P($G(IBPOS),U)="D" D
 | 
|---|
 | 15 |  ... D CSV(X,.IBX,$P(IBPOS,U,2),$P(IBPOS,U,3))
 | 
|---|
 | 16 |  ... D DSETUP(.IBX,.IBPOS,.P) K IBX
 | 
|---|
 | 17 |  .. I $P($G(IBPOS),U)'="D" D FSETUP(X,.IBPOS,.P)
 | 
|---|
 | 18 |  . ;
 | 
|---|
 | 19 |  . I $G(P(1))'="" S P(1)=$$NOPUNCT^IBCEF(P(1),1),X=P(1),D="SSN",DIC="^VA(200,",DIC(0)="" D IX^DIC
 | 
|---|
 | 20 |  . S IBP=+Y,IBVNAME=$P(Y,U,2)
 | 
|---|
 | 21 |  . I $S($G(P(1))="":1,1:Y'>0) D  Q
 | 
|---|
 | 22 |  .. S ^TMP("IBPID-ERR",$J,1,$S($G(P(1))'="":P(1),1:"NO SSN"),$G(P(2))_" ","??")=""
 | 
|---|
 | 23 |  .. N IBID
 | 
|---|
 | 24 |  .. S IBID=$S(IBFT=0!(IBFT=1):$G(P("INST_ID")),1:$G(P("PROF_ID")))
 | 
|---|
 | 25 |  .. S ^TMP("IBPID-ERR",$J,1,$S($G(P(1))'="":P(1),1:"NO SSN"),$G(P(2))_" ","PROV ID")=IBID
 | 
|---|
 | 26 |  . ;
 | 
|---|
 | 27 |  . S ^TMP("IBPID_IN",$J,U,IBP)=P(1)_U_P(2)_U_IBVNAME
 | 
|---|
 | 28 |  . F Q0=0,"TID","UPIN","INST_ID","PROF_ID","CU","CRED" S ^TMP("IBPID_IN",$J,U,IBP,Q0)=$G(P(Q0))
 | 
|---|
 | 29 |  Q
 | 
|---|
 | 30 |  ;
 | 
|---|
 | 31 | CSV(X,IBX,IBDEL,IBQUOTES) ; Parse out fields from a delimited file
 | 
|---|
 | 32 |  ; X = data string in CSV format to be parsed
 | 
|---|
 | 33 |  ; IBX = array returned if passed by reference, subscripted by field #
 | 
|---|
 | 34 |  ; IBDEL = the delimiter
 | 
|---|
 | 35 |  ; If IBQUOTES=1, quoted strings are double quoted within a field
 | 
|---|
 | 36 |  N FC,I,PC,QCT,QM,QM2,QM4,STR,TPC
 | 
|---|
 | 37 |  S FC=0,TPC=$L(X,IBDEL),QM=$C(34),QM2=QM_QM,QM4=QM2_QM2
 | 
|---|
 | 38 |  F PC=1:1:TPC D
 | 
|---|
 | 39 |  . S STR=$P(X,IBDEL,PC)
 | 
|---|
 | 40 |  . S FC=FC+1
 | 
|---|
 | 41 |  . I (STR=QM2)!(STR=QM4) S IBX(FC)="" Q
 | 
|---|
 | 42 |  . I $E(STR,1)=QM D
 | 
|---|
 | 43 |  .. F QCT=0:1 Q:$E(STR,QCT+1)'=QM
 | 
|---|
 | 44 |  .. F  Q:($E(STR,1,QCT)=$E(STR,$L(STR)-(QCT-1),$L(STR)))  S PC=PC+1 Q:PC>TPC  S STR=STR_IBDEL_$P(X,IBDEL,PC)
 | 
|---|
 | 45 |  .. I PC>TPC S IBX(0)="-1^UNMATCHED QUOTE MARKS" Q
 | 
|---|
 | 46 |  .. F  Q:$E(STR,1)'=QM  I $E(STR,$L(STR))=QM S STR=$E(STR,2,$L(STR)-1)
 | 
|---|
 | 47 |  . I IBQUOTES,STR[QM2 D
 | 
|---|
 | 48 |  .. F I=1:1:$L(STR) I $E(STR,I,I+1)=QM2 S STR=$E(STR,1,I)_$E(STR,I+2,9999)
 | 
|---|
 | 49 |  . S IBX(FC)=STR
 | 
|---|
 | 50 |  Q
 | 
|---|
 | 51 |  ;
 | 
|---|
 | 52 | MANUAL ; Manual entry to get providers from VistA
 | 
|---|
 | 53 |  N IBCRED,IBDA,IBNAM,IBSSN
 | 
|---|
 | 54 |  ; S IBCNT=0 ; this looks like extraneous code, IBCNT not used anywhere.
 | 
|---|
 | 55 |  F  D  I X=""!(X["^") Q
 | 
|---|
 | 56 |  . S Y=$$LOOKUP^XUSER Q:X=""  I X["^" S IBQUIT1=1 Q
 | 
|---|
 | 57 |  . S IBDA=+Y,IBNAM=$P(Y,U,2)
 | 
|---|
 | 58 |  . S IBSSN=$$GET1^DIQ(200,IBDA_",",9,"I")
 | 
|---|
 | 59 |  . S IBCRED=$$GET1^DIQ(200,IBDA_",",10.6,"I")
 | 
|---|
 | 60 |  . S ^TMP("IBPID_IN",$J,U,IBDA)=IBSSN_U_IBNAM_" "_IBCRED
 | 
|---|
 | 61 |  Q
 | 
|---|
 | 62 |  ;
 | 
|---|
 | 63 | DIR1(DIR,Z,IBQUIT,IBQUIT1) ; Ask position
 | 
|---|
 | 64 |  N X,Y
 | 
|---|
 | 65 |  S Y=$$DIR^IBCEP9(.DIR,.IBQUIT,.IBQUIT1)
 | 
|---|
 | 66 |  I IBQUIT1 S Y="" G DIRQ
 | 
|---|
 | 67 |  I $P(Z,U,4),Y'>0 S Y="",(IBQUIT1,IBQUIT)=1
 | 
|---|
 | 68 |  I Y'>0 S Y=""
 | 
|---|
 | 69 | DIRQ Q Y
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 | DISP(Q,IBID,IBINS,IBPTYP,IBFT,IBCT,IBCU,IBPID,IBSRC) ; Display provider data
 | 
|---|
 | 72 |  ;  includes ID data if IBID=1
 | 
|---|
 | 73 |  ; Q = SSN^provider name from input^provider name from file #200
 | 
|---|
 | 74 |  ; IBPID = array of id numbers to be stored
 | 
|---|
 | 75 |  N A,IBL,Q0,Z
 | 
|---|
 | 76 |  S $P(Q,U,2)=$$FLEN($P(Q,U,2))
 | 
|---|
 | 77 |  S Q0(1)="PROVIDER : "_$P(Q,U)_$S($P(Q,U,2)'="":" ("_$P(Q,U,2)_")",1:"")_$S(IBSRC="F":" <- input file data",1:"")
 | 
|---|
 | 78 |  S Q0(2)="" S:IBSRC="F" Q0(2)=$J("("_$P(Q,U,3),22+$L($P(Q,U,3)))_") <- VA match"
 | 
|---|
 | 79 |  S IBL=0
 | 
|---|
 | 80 |  D DISP^IBCEP4("Q0",IBINS,IBPTYP,IBFT,IBCT,3,.IBL)
 | 
|---|
 | 81 |  I $G(IBCU)'="" S Q0(IBL+1)="CARE UNIT: "_IBCU
 | 
|---|
 | 82 |  W !
 | 
|---|
 | 83 |  S A=0 F  S A=$O(Q0(A)) Q:'A  W !,Q0(A)
 | 
|---|
 | 84 |  I $G(IBID),$O(IBPID(""))'="" D  ; Display id's to be filed
 | 
|---|
 | 85 |  . W ! S Z="" F  S Z=$O(IBPID(Z)) Q:Z=""  I IBPID(Z)'="" D
 | 
|---|
 | 86 |  .. W !,$S(Z="TID":"TAX ID NUMBER",Z="INST_ID":"INSTITUTIONAL ID",Z="PROF_ID":"PROFESSIONAL ID",Z="UPIN":"UPIN",1:"PROV ID"),": ",IBPID(Z)
 | 
|---|
 | 87 |  Q
 | 
|---|
 | 88 |  ;
 | 
|---|
 | 89 | DSETUP(IBX,IBPOS,P) ; Set up the subscripted array P with the correct data
 | 
|---|
 | 90 |  ; from IBX(pc #) based on the parameters in array IBPOS
 | 
|---|
 | 91 |  ; RETURNED: P(data index)=data value (pass by reference)
 | 
|---|
 | 92 |  N Q,Z,Z0
 | 
|---|
 | 93 |  S Z=$G(IBPOS("SSN")),P(1)=""
 | 
|---|
 | 94 |  F Z0=+Z:1:$S('$P(Z,U,2):Z,1:$P(Z,U,2)) S P(1)=P(1)_$S(P(1)'=""&($G(IBX(Z0))'=""):" ",1:"")_$G(IBX(Z0))
 | 
|---|
 | 95 |  S Z=$G(IBPOS("NAM")),P(2)=""
 | 
|---|
 | 96 |  F Z0=+Z:1:$S('$P(Z,U,2):Z,1:$P(Z,U,2)) S P(2)=P(2)_$S(P(2)'=""&($G(IBX(Z0))'=""):" ",1:"")_$G(IBX(Z0))
 | 
|---|
 | 97 |  F Q="TID","UPIN","INST_ID","PROF_ID","CRED","CU","LIC" D
 | 
|---|
 | 98 |  . S Z=$G(IBPOS(Q)),P(Q)=""
 | 
|---|
 | 99 |  . Q:'Z
 | 
|---|
 | 100 |  . F Z0=+Z:1:$S('$P(Z,U,2):Z,1:$P(Z,U,2)) S P(Q)=P(Q)_$S(P(Q)'=""&($G(IBX(Z0))'=""):" ",1:"")_$G(IBX(Z0))
 | 
|---|
 | 101 |  Q
 | 
|---|
 | 102 |  ;
 | 
|---|
 | 103 | FSETUP(X,IBPOS,P) ;Set up the subscripted array P with the correct data
 | 
|---|
 | 104 |  ; from record data in X, based on the parameters in array IBPOS for a
 | 
|---|
 | 105 |  ; fixed length data field format
 | 
|---|
 | 106 |  ; RETURNED: P(data index)=data value (pass by reference)
 | 
|---|
 | 107 |  ;
 | 
|---|
 | 108 |  N Q,Z
 | 
|---|
 | 109 |  S Z=$G(IBPOS("SSN")),P(1)=""
 | 
|---|
 | 110 |  S P(1)=$E(X,+Z,$S($P(Z,U,2):$P(Z,U,2),1:+Z))
 | 
|---|
 | 111 |  S Z=$G(IBPOS("NAM")),P(2)=""
 | 
|---|
 | 112 |  S P(2)=$E(X,+Z,$S($P(Z,U,2):$P(Z,U,2),1:+Z))
 | 
|---|
 | 113 |  F Q="TID","UPIN","INST_ID","PROF_ID","CRED","CU","LIC" D
 | 
|---|
 | 114 |  . S Z=$G(IBPOS(Q)),P(Q)=""
 | 
|---|
 | 115 |  . Q:'Z
 | 
|---|
 | 116 |  . S P(Q)=$$FLEN($E(X,+Z,$S($P(Z,U,2):$P(Z,U,2),1:+Z)))
 | 
|---|
 | 117 |  Q
 | 
|---|
 | 118 |  ;
 | 
|---|
 | 119 | FLEN(IBX) ; Strip out trailing spaces from field
 | 
|---|
 | 120 |  ; FUNCTION returns stripped data
 | 
|---|
 | 121 |  N Z,IB,IB1
 | 
|---|
 | 122 |  S IB1=IBX,IB=$TR(IB1," ")
 | 
|---|
 | 123 |  I IB'="" F Z=$L(IB1):-1:1 I $E(IB1,Z)'=" " S IB=$E(IB1,1,Z) Q
 | 
|---|
 | 124 |  Q IB
 | 
|---|
 | 125 |  ;
 | 
|---|
 | 126 | ADDID(IB200,IBINS,IBCU,IBFT,IBCT,IBPTYP,IBQUIT,IBQUIT1) ; Add ID record (file 355.9) if not already there
 | 
|---|
 | 127 |  N DIC,X,Y,DO,DD,DLAYGO,DIR
 | 
|---|
 | 128 |  S X=IB200_";VA(200,"
 | 
|---|
 | 129 |  S Y=+$O(^IBA(355.9,"AUNIQ",X,$S(IBINS:IBINS,1:"*ALL*"),$S($G(IBCU)'="":IBCU,1:"*N/A*"),IBFT,IBCT,IBPTYP,0))
 | 
|---|
 | 130 |  I 'Y D
 | 
|---|
 | 131 |  . S DIC(0)="L",DIC="^IBA(355.9,",DLAYGO=355.9,DIC("DR")=".02////"_IBINS_$S($G(IBCU)'="":";.03////"_IBCU,1:"")_";.04////"_IBFT_";.05////"_IBCT_";.06////"_IBPTYP
 | 
|---|
 | 132 |  . D FILE^DICN K DIC,DO,DD,DLAYGO
 | 
|---|
 | 133 |  I Y'>0 D  Q
 | 
|---|
 | 134 |  . S DIR(0)="AE",DIR("A",1)="A PROBLEM WAS ENCOUNTERED ADDING THIS PROVIDER ID RECORD - NO RECORD ADDED",DIR("A")="PRESS ENTER TO CONTINUE "
 | 
|---|
 | 135 |  . S Y=$$DIR^IBCEP9(.DIR,.IBQUIT,.IBQUIT1,,1,1)
 | 
|---|
 | 136 |  S IBN=Y
 | 
|---|
 | 137 |  Q $S(IBN>0:IBN,1:0)
 | 
|---|
 | 138 |  ;
 | 
|---|
 | 139 | PRTERR ; Prints error report
 | 
|---|
 | 140 |  N IBPAGE,Z,Z0,Z1,Z2,Z3,IBLCT,IBSTOP,IBHDT
 | 
|---|
 | 141 |  W:$E(IOST,1,2)["C-" @IOF
 | 
|---|
 | 142 |  I $D(^TMP("IBPID-ERR",$J)) D
 | 
|---|
 | 143 |  . S IBSTOP=0,IBLCT=$$HDR(.IBPAGE,.IBSTOP,.IBHDT)
 | 
|---|
 | 144 |  . S Z=0 F  S Z=$O(^TMP("IBPID-ERR",$J,Z)) Q:'Z  W !!,$P($T(ERR+Z^IBCEP9),";;",2)_":" D
 | 
|---|
 | 145 |  .. S Z0=""
 | 
|---|
 | 146 |  .. F  S Z0=$O(^TMP("IBPID-ERR",$J,Z,Z0)) Q:Z0=""  S IBLCT=IBLCT+1 S:(IBLCT+5)>IOSL IBLCT=$$HDR(.IBPAGE,.IBSTOP) Q:IBSTOP  D
 | 
|---|
 | 147 |  ... S Z1="" F  S Z1=$O(^TMP("IBPID-ERR",$J,Z,Z0,Z1)) Q:Z1=""  W !,$E(Z0_$J("",9),1,9) W:$P(Z1,U)'="" "  "_$E($P(Z1,U)_$J("",40),1,40) D
 | 
|---|
 | 148 |  .... S Z2="" F  S Z2=$O(^TMP("IBPID-ERR",$J,Z,Z0,Z1,Z2)) Q:Z2=""  S Z3=$G(^(Z2)) I Z3'="" D
 | 
|---|
 | 149 |  ..... W "  "_$S(Z2="CU":"CARE UNIT",Z2="CRED":"CREDENTIALS",Z2="TID":"TAX ID #",Z2="LIC_ST":"LICENSE STATE",Z2="LIC":"LICENSE",Z2="UPIN":"UPIN",1:Z2)_": "_Z3
 | 
|---|
 | 150 | FILED ; Prints all filed records
 | 
|---|
 | 151 |  I $D(^TMP("IBPID_IN",$J)) D
 | 
|---|
 | 152 |  . S IBSTOP=0,IBLCT=$$HDR(.IBPAGE,.IBSTOP,.IBHDT)
 | 
|---|
 | 153 |  . W !!," RECORDS SELECTED FOR FILING:"
 | 
|---|
 | 154 |  . S Z0=""
 | 
|---|
 | 155 |  . F  S Z0=$O(^TMP("IBPID_IN",$J,U,Z0)) Q:Z0=""  S IBLCT=IBLCT+1 S:(IBLCT+5)>IOSL IBLCT=$$HDR(.IBPAGE,.IBSTOP) Q:IBSTOP  D
 | 
|---|
 | 156 |  .. I $G(^TMP("IBPID_IN",$J,U,Z0,0))="NO PRINT" S:IBLCT>6 IBLCT=IBLCT-1 Q
 | 
|---|
 | 157 |  .. S Z=^TMP("IBPID_IN",$J,U,Z0)
 | 
|---|
 | 158 |  .. W !,$P(Z,U,1),?12,$P(Z,U,2),?52,$G(^TMP("IBPID_IN",$J,U,Z0,"INST_ID"))
 | 
|---|
 | 159 |  ;
 | 
|---|
 | 160 |  I $E(IOST,1,2)["C-",'IBSTOP K DIR S DIR(0)="E" D ^DIR K DIR
 | 
|---|
 | 161 |  W @IOF
 | 
|---|
 | 162 |  I $D(ZTQUEUED) S ZTREQ="@"
 | 
|---|
 | 163 |  I '$D(ZTQUEUED) W ! D ^%ZISC
 | 
|---|
 | 164 |  Q
 | 
|---|
 | 165 | HDR(PG,IBSTOP,IBHDT) ; Prints error report header, function returns # of lines used
 | 
|---|
 | 166 |  ; PG = the last page # printed
 | 
|---|
 | 167 |  ; IBHDT = the run date of the report
 | 
|---|
 | 168 |  N Z,IBLCT
 | 
|---|
 | 169 |  S IBLCT=0
 | 
|---|
 | 170 |  I '$G(PG) S IBHDT="RUN DATE: "_$$FMTE^XLFDT($$NOW^XLFDT(),2)_U_"RUN BY: "_$P($G(^VA(200,+$G(IBDUZ),0)),U)
 | 
|---|
 | 171 |  I $G(PG),$E(IOST,1,2)["C-" K DIR S DIR(0)="E" D ^DIR K DIR S IBSTOP=('Y) G:IBSTOP HDRQ  W @IOF
 | 
|---|
 | 172 |  S PG=$G(PG)+1
 | 
|---|
 | 173 |  W $J("",23)_"BATCH UPDATE OF PROVIDER ID REPORT"_$J("",13)_"PAGE: ",PG
 | 
|---|
 | 174 |  W !,$J("",(80-$L($P($G(IBHDT),U)))\2),$P($G(IBHDT),U)
 | 
|---|
 | 175 |  W !,$J("",(80-$L($P($G(IBHDT),U,2)))\2),$P($G(IBHDT),U,2)
 | 
|---|
 | 176 |  W !!,"    INSURANCE CO: "_$P($G(^DIC(36,+$G(IBINS),0)),U)
 | 
|---|
 | 177 |  W !,"PROVIDER ID TYPE: "_$P($G(^IBE(355.97,+$G(IBPTYP),0)),U)
 | 
|---|
 | 178 |  W !,"       FORM TYPE: "_$$EXPAND^IBTRE(355.91,.04,$G(IBFT))
 | 
|---|
 | 179 |  W !,"       CARE TYPE: "_$$EXPAND^IBTRE(355.91,.05,$G(IBCT))
 | 
|---|
 | 180 |  S IBLCT=7
 | 
|---|
 | 181 |  I $G(IBCU)'="" W !,$J("",7)_"CARE UNIT: "_IBCU S IBLCT=IBLCT+1
 | 
|---|
 | 182 |  S Z="",$P(Z,"=",81)="",IBLCT=IBLCT+1
 | 
|---|
 | 183 |  W !,Z
 | 
|---|
 | 184 | HDRQ Q $G(IBLCT)
 | 
|---|
 | 185 |  ;
 | 
|---|
 | 186 | LOCK(IBINS) ; Lock Parent and Children up
 | 
|---|
 | 187 |  N IBQUIT
 | 
|---|
 | 188 |  S IBQUIT=0
 | 
|---|
 | 189 |  I $P($G(^DIC(36,IBINS,3)),U,13)="P" D
 | 
|---|
 | 190 |  . L +^DIC(36,IBINS):5 E  S IBQUIT=1 Q
 | 
|---|
 | 191 |  . N CHILD
 | 
|---|
 | 192 |  . S CHILD="" F  S CHILD=$O(^DIC(36,"APC",IBINS,CHILD)) Q:'+CHILD  D  Q:IBQUIT
 | 
|---|
 | 193 |  .. L +^DIC(36,CHILD):5 E  S IBQUIT=1
 | 
|---|
 | 194 |  Q IBQUIT
 | 
|---|
 | 195 |  ;
 | 
|---|
 | 196 | UNLOCK(IBINS) ; Unlock the family
 | 
|---|
 | 197 |  I $P($G(^DIC(36,IBINS,3)),U,13)="P" D
 | 
|---|
 | 198 |  . L -^DIC(36,IBINS)
 | 
|---|
 | 199 |  . N CHILD
 | 
|---|
 | 200 |  . S CHILD="" F  S CHILD=$O(^DIC(36,"APC",IBINS,CHILD)) Q:'+CHILD  D
 | 
|---|
 | 201 |  .. L -^DIC(36,CHILD)
 | 
|---|
 | 202 |  Q
 | 
|---|
 | 203 |  ;
 | 
|---|