[613] | 1 | XUSNPIXU ;OAK_BP/DLS - NPI Extract Utilities ;
|
---|
| 2 | ;;8.0;KERNEL;**438,453**; Jul 10, 1995;Build 36
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | Q
|
---|
| 6 | ;
|
---|
| 7 | ; NPI Extract Functions and Utilities
|
---|
| 8 | ;
|
---|
| 9 | BCBSID ; This sub-routine is designed to create a string for each Blue Cross/Blue Shield Insurance Company,
|
---|
| 10 | ; including the Ins Co name and an array of BCBS ID's (the ID's separated by a semi-colon sub-delimiter).
|
---|
| 11 | ;
|
---|
| 12 | ; Input Parameter - N/A
|
---|
| 13 | ;
|
---|
| 14 | ; System Parameters
|
---|
| 15 | ; S ==> ";" (Semi-Colon Sub-Delimiter)
|
---|
| 16 | ; U ==> "^"
|
---|
| 17 | ;
|
---|
| 18 | ; Variables
|
---|
| 19 | ; INSCO - Insurance Company IEN
|
---|
| 20 | ; INSTYP - Insurance Company Type
|
---|
| 21 | ; INSNAM - Insurance Company Name
|
---|
| 22 | ; INSHPR - Hospital Provider Number
|
---|
| 23 | ; INSPPR - Professional Provider Number
|
---|
| 24 | ; IBILP - IB Insurance Co Level Billing Provider IEN
|
---|
| 25 | ; IBILF - IB Insurance Co Level Billing Facility IEN
|
---|
| 26 | ; IBDFPID - Default BCBS Provider #
|
---|
| 27 | ; IBILPID - IB Insurance Co Level Billing Provider ID
|
---|
| 28 | ; IBILFID - IB Insurance Co Level Billing Facility ID
|
---|
| 29 | ; IDSTR - Local BCBS ID String, placed into ^TMP when complete.
|
---|
| 30 | ;
|
---|
| 31 | K ^TMP("XUSNPIXU",$J)
|
---|
| 32 | N INSCO,INSTYP,INSNAM,INSHPR,INSPPR,IBILP,IBILF,IBILPID,IBILFID,IDSTR,P,S
|
---|
| 33 | ;
|
---|
| 34 | S S=";"
|
---|
| 35 | ;
|
---|
| 36 | ; Loop through the Insurance Co file.
|
---|
| 37 | S INSCO=0
|
---|
| 38 | F S INSCO=$O(^DIC(36,INSCO)) Q:'INSCO D
|
---|
| 39 | . S IDSTR=""
|
---|
| 40 | . S INSTYP=$$GET1^DIQ(36,INSCO_",",.13)
|
---|
| 41 | . ;
|
---|
| 42 | . ; If the Insurance Co type is not Blue Cross or Blue Shield, QUIT and move on to the next one.
|
---|
| 43 | . I '((INSTYP="BLUE CROSS")!(INSTYP="BLUE SHIELD")) Q
|
---|
| 44 | . ;
|
---|
| 45 | . ; Get Insurance Company Name.
|
---|
| 46 | . S INSNAM=$$GET1^DIQ(36,INSCO_",",.01)
|
---|
| 47 | . ;
|
---|
| 48 | . ; Get the IB Insurance Co Level Billing Prov ID's.
|
---|
| 49 | . S IBILP=0
|
---|
| 50 | . F S IBILP=$O(^IBA(355.92,"B",INSCO,IBILP)) Q:'IBILP D
|
---|
| 51 | . . S IBILPID=$$GET1^DIQ(355.92,IBILP_",",.07)
|
---|
| 52 | . . D ADDID(.IDSTR,IBILPID)
|
---|
| 53 | . ;
|
---|
| 54 | . ; Get the IB Insurance Co Level Billing Facility ID's.
|
---|
| 55 | . S IBILF=0
|
---|
| 56 | . F S IBILF=$O(^IBA(355.91,"B",INSCO,IBILF)) Q:'IBILF D
|
---|
| 57 | . . S IBILFID=$$GET1^DIQ(355.91,IBILF_",",.07)
|
---|
| 58 | . . D ADDID(.IDSTR,IBILFID)
|
---|
| 59 | . ;
|
---|
| 60 | . ; Remove trailing semi-colon and place local ID string into ^TMP.
|
---|
| 61 | . I $E(IDSTR,$L(IDSTR))=";" S IDSTR=$E(IDSTR,1,$L(IDSTR)-1)
|
---|
| 62 | . I IDSTR'="" S ^TMP("XUSNPIXU",$J,INSCO)=INSNAM_U_IDSTR
|
---|
| 63 | Q
|
---|
| 64 | ;
|
---|
| 65 | ;
|
---|
| 66 | ADDID(IDSTRING,ID) ; Append BCBS ID to local ID string, using ";" as the sub-delimiter. Called from BCBSID
|
---|
| 67 | ;
|
---|
| 68 | ; Input Parameters
|
---|
| 69 | ; IDSTRING - Local variable ID string, passed from BCBSID
|
---|
| 70 | ; ID - ID to be appended to IDSTRING, passed from BCBSID
|
---|
| 71 | ;
|
---|
| 72 | I '$D(ID)!('$D(IDSTRING)) Q
|
---|
| 73 | I ID'="",IDSTRING'[ID S IDSTRING=IDSTRING_ID_S
|
---|
| 74 | Q
|
---|
| 75 | ;
|
---|
| 76 | PRACID(NPIEN,INS) ; Get Practitioner IDs
|
---|
| 77 | ;
|
---|
| 78 | ; Output Parameter
|
---|
| 79 | ; INS - Array-Passed by Reference
|
---|
| 80 | N BIEN,PRAC,A
|
---|
| 81 | K INS
|
---|
| 82 | S BIEN=NPIEN_";VA(200,"
|
---|
| 83 | S PRAC=""
|
---|
| 84 | F S PRAC=$O(^IBA(355.9,"B",BIEN,PRAC)) Q:'PRAC D
|
---|
| 85 | . S A=$$BCBSTR(PRAC) I A'="" S INS(A)=""
|
---|
| 86 | Q
|
---|
| 87 | ;
|
---|
| 88 | NNVAID(NPIEN,INS) ; Get Non-VA Provider IDS
|
---|
| 89 | ;
|
---|
| 90 | ; Output Parameter
|
---|
| 91 | ; INS - Array-Passed by Reference
|
---|
| 92 | N BIEN,PRAC,A
|
---|
| 93 | K INS
|
---|
| 94 | S BIEN=NPIEN_";IBA(355.93,"
|
---|
| 95 | S PRAC=""
|
---|
| 96 | F S PRAC=$O(^IBA(355.9,"B",BIEN,PRAC)) Q:'PRAC D
|
---|
| 97 | . S A=$$BCBSTR(PRAC) I A'="" S INS(A)=""
|
---|
| 98 | Q
|
---|
| 99 | ;
|
---|
| 100 | INSTID(INSARRAY) ; Get Institution IDs
|
---|
| 101 | ;
|
---|
| 102 | ; Output Parameter
|
---|
| 103 | ; INSARRAY - Array-Passed by Reference
|
---|
| 104 | N INS,A
|
---|
| 105 | K INSARRAY
|
---|
| 106 | S INS=0
|
---|
| 107 | ; 12/13/2007 DLS - Change array structure from INSARRAY(A)="" to INSARRAY($P(A,U,1))=$P(A,U,2)
|
---|
| 108 | F S INS=$O(^TMP("XUSNPIXU",$J,INS)) Q:INS="" D
|
---|
| 109 | . S A=^TMP("XUSNPIXU",$J,INS)
|
---|
| 110 | . S INSARRAY($P(A,U,1))=$P(A,U,2)
|
---|
| 111 | Q
|
---|
| 112 | ;
|
---|
| 113 | ;
|
---|
| 114 | BCBSTR(PRACIEN) ; Receive an IB Billing Practitioner Provider IEN and return the string of ID's already created.
|
---|
| 115 | ;
|
---|
| 116 | ; Input Parameters
|
---|
| 117 | ; PRACIEN - Practitioner Ins. Co. file IEN - Linked to Provider and passed from NPI Extract.
|
---|
| 118 | ;
|
---|
| 119 | ; System Parameters
|
---|
| 120 | ; S ==> ";" (Semi-Colon Sub-Delimiter)
|
---|
| 121 | ; Variables
|
---|
| 122 | ; INSCO - Insurance Company IEN
|
---|
| 123 | ; PRVID - Provider ID for the specific Insurance Company. This is added on to the ID string stored in TMP.
|
---|
| 124 | ;
|
---|
| 125 | ; Get the Ins Co IEN
|
---|
| 126 | N INSCO,PRVID,P,S
|
---|
| 127 | S S=";"
|
---|
| 128 | S INSCO=$$GET1^DIQ(355.9,PRACIEN_",",.02,"I")
|
---|
| 129 | ;
|
---|
| 130 | ; Quit if this is NOT a Blue Cross/Blue Shield Insurance Company.
|
---|
| 131 | I $G(^TMP("XUSNPIXU",$J,+INSCO))="" Q ""
|
---|
| 132 | ;
|
---|
| 133 | ; Get the Practitioner ID for this specific Insurance Company. (commented out for now)
|
---|
| 134 | S PRVID=$$GET1^DIQ(355.9,PRACIEN_",",.07)
|
---|
| 135 | ;
|
---|
| 136 | ; If PRVID is NOT null AND the ID is NOT already in the string AND
|
---|
| 137 | ; (If the string DOES NOT end with a "^", return the ID string with the sub-delimiter and PRVID appended) OR
|
---|
| 138 | ; (If the string DOES end with a "^", return the ID string with only PRVID appended.)
|
---|
| 139 | I PRVID'="",((^TMP("XUSNPIXU",$J,INSCO)'["^PRVID;")!(^TMP("XUSNPIXU",$J,INSCO)'[";PRVID;")) D Q ^TMP("XUSNPIXU",$J,INSCO)_PRVID
|
---|
| 140 | . I $E($L(^TMP("XUSNPIXU",$J,INSCO)))'=U S PRVID=S_PRVID
|
---|
| 141 | . Q
|
---|
| 142 | ;
|
---|
| 143 | ; If nothing needs changing, return the string unchanged.
|
---|
| 144 | Q ^TMP("XUSNPIXU",$J,INSCO)
|
---|
| 145 | ;
|
---|
| 146 | INIT ;Initialize ^XTMP
|
---|
| 147 | K ^XTMP("XUSNPIX1")
|
---|
| 148 | K ^XTMP("XUSNPIX2")
|
---|
| 149 | K ^XTMP("XUSNPIX1NV")
|
---|
| 150 | K ^XTMP("XUSNPIX2NV")
|
---|
| 151 | K ^XTMP("XUSNPIXT")
|
---|
| 152 | ;
|
---|