IBCEF78 ;ALB/WCJ - Provider ID functions ;13 May 2007 ;;2.0;INTEGRATED BILLING;**371**;21-MAR-94;Build 57 ;;Per VHA Directive 2004-038, this routine should not be modified. ;; G AWAY AWAY Q ; PAYERIDS(IBXIEN,IBRET) ; This function returns all the PAYER IDS for the current and other insurance(s) ; D PRIPAYID(IBXIEN,.IBRET) D SECPAYID(IBXIEN,.IBRET) Q ; PRIPAYID(IBXIEN,IBXRET) ; Primary Payer IDs ; Incoming: ; IBXIEN = IEN for File # 399 ; IBXRET = Return Array for Qualifiers and IDs ; ; Outgoing ; IBXRET("CI_PID",1)=QUAL^ID ; IBXRET("OI_PID",#)=QUAL^ID ; N RET,I S RET=$$PAYERID^IBCEF2(IBXIEN) I RET]"" S IBXRET("CI_PID",1)="PI"_U_RET ; D OTHINSID^IBCEF72(IBXIEN,.RET) F I=1,2 I $G(RET(I))]"" S IBXRET("OI_PID",I)="PI"_U_RET(I) Q ; ; SECPAYID(IBXIEN,IBXRET) ; This returns all of the secondary payer IDs from file #36 ; for the insurance companies on a given claim ; ; Incoming: ; IBXIEN = IEN for File # 399 ; IBXRET = Return Array for Qualifiers and IDs ; ; Outgoing ; IBXRET("CI_PSIDS",1)=QUAL^ID^QUAL^ID ; IBXRET("OI_PSIDS",#)=QUAL^ID^QUAL^ID ; N Z,C,IBZ,Z0,FT F Z=1:1:3 S IBZ(Z)=$$POLICY^IBCEF(IBXIEN,1,Z) S Z0=0,C=$$COBN^IBCEF(IBXIEN),FT=$$FT^IBCEF(IBXIEN) F Z=1:1:3 S:C'=Z Z0=Z0+1 S IBXRET($S(C=Z:"CI_PSIDS",1:"OI_PSIDS"),$S(C=Z:1,1:Z0))=$$SPIDS(+IBZ(Z),FT) Q ; SPIDS(INS,FT) ; ; FT = FORM TYPE (2 PROFESSIONAL 3 INSTITUTIONAL) ; INS = INSURANCE COMPANY (FILE #36) IEN ; Returns String (^ delimited) ; [1] = QUAL 1 ; [2] = PAYER ID 1 ; [3] = QUAL 2 ; [4] = PAYER ID 2 Q:'+INS "" ; N DATA,PCE S DATA=$S(FT=3:$P($G(^DIC(36,+INS,6)),U,1,4),FT=2:$P($G(^DIC(36,+INS,6)),U,5,8),1:"") ; ; Check for dangling IDs/Qualifiers F PCE=1,3 D . I $P(DATA,U,PCE)'="",$P(DATA,U,PCE+1)'="" Q . S ($P(DATA,U,PCE),$P(DATA,U,PCE+1))="" ; ; fill in the gap if there is one I $P(DATA,U,1)="",$P(DATA,U,3)'="" D . S $P(DATA,U,1)=$P(DATA,U,3) . S $P(DATA,U,2)=$P(DATA,U,4) . S ($P(DATA,U,3),$P(DATA,U,4))="" ; Q DATA ; CLEANUP(IBRET) ; K IBRET("CI_PID"),IBRET("OI_PID"),IBRET("CI_PSIDS"),IBRET("OI_PSIDS") Q ;