| 1 | IBCNEUT8 ;DAOU/AM - IIV MISC. UTILITIES ;12-JUN-2002 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**184**;21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ; This routine includes subroutines originally included in IBCNEUT3 | 
|---|
| 6 | ; and referenced by IBCNEUT3 and IBCNEUT4. | 
|---|
| 7 | ; | 
|---|
| 8 | ; INSIEN returns an array of matching insurance IENs based upon the | 
|---|
| 9 | ; provided Insurance Name. | 
|---|
| 10 | ; | 
|---|
| 11 | ; FINDPAY returns the National IDs for all provided active insurance | 
|---|
| 12 | ; companies. | 
|---|
| 13 | ; | 
|---|
| 14 | ; ERROR returns the IEN of the symbol mnemonice passed to it and updates | 
|---|
| 15 | ; an array of items to display, if passed. | 
|---|
| 16 | ; | 
|---|
| 17 | ; Can't be called from the top | 
|---|
| 18 | Q | 
|---|
| 19 | ; | 
|---|
| 20 | ; | 
|---|
| 21 | INSIEN(INSNAME,INSIEN) ; Subroutine to find all ins co IENs | 
|---|
| 22 | ; matching a given ins co name | 
|---|
| 23 | ; Input parameter: INSNAME - Ins co name to find IENs for | 
|---|
| 24 | ; Output parameter: INSIEN - array of ins co IENs that | 
|---|
| 25 | ;   match the passed ins co name, passed by reference | 
|---|
| 26 | ;   If the array is defined at the time this subroutine is called, | 
|---|
| 27 | ;   then it will add to the data that pre-exists in the array | 
|---|
| 28 | ; | 
|---|
| 29 | N NAME | 
|---|
| 30 | ; Loop through the ins co names starting with a space (" ") | 
|---|
| 31 | ; looking for matching names | 
|---|
| 32 | S NAME=" " F  S NAME=$O(^DIC(36,"B",NAME)) Q:$E(NAME,1)'=" "  D | 
|---|
| 33 | . ;I $$TRIM^XLFSTR(NAME)=INSNAME M INSIEN=^DIC(36,"B",NAME) | 
|---|
| 34 | . I $$TRIM^XLFSTR(NAME)=INSNAME D | 
|---|
| 35 | . . N %X,%Y | 
|---|
| 36 | . . S %X="^DIC(36,""B"",NAME," | 
|---|
| 37 | . . S %Y="INSIEN(" | 
|---|
| 38 | . . I $D(^DIC(36,"B",NAME))#10=1 S INSIEN=^DIC(36,"B",NAME) | 
|---|
| 39 | . . D %XY^%RCR K %X,%Y | 
|---|
| 40 | ; | 
|---|
| 41 | ; Retrieve the ins co names from the Ins Buffer | 
|---|
| 42 | ; starting with the entry prior to the ins co name in | 
|---|
| 43 | ; the Buffer and look for ins co name matches | 
|---|
| 44 | S NAME=$O(^DIC(36,"B",INSNAME),-1) | 
|---|
| 45 | F  S NAME=$O(^DIC(36,"B",NAME)) Q:$E(NAME,1,$L(INSNAME))'=INSNAME  D | 
|---|
| 46 | . ;I $$TRIM^XLFSTR(NAME)=INSNAME M INSIEN=^DIC(36,"B",NAME) | 
|---|
| 47 | . I $$TRIM^XLFSTR(NAME)=INSNAME D | 
|---|
| 48 | . . N %X,%Y | 
|---|
| 49 | . . S %X="^DIC(36,""B"",NAME," | 
|---|
| 50 | . . S %Y="INSIEN(" | 
|---|
| 51 | . . I $D(^DIC(36,"B",NAME))#10=1 S INSIEN=^DIC(36,"B",NAME) | 
|---|
| 52 | . . D %XY^%RCR K %X,%Y | 
|---|
| 53 | ; | 
|---|
| 54 | Q | 
|---|
| 55 | ; | 
|---|
| 56 | FINDPAY(INSIEN,PAYID) ; Find National IDs for an array of ins co IENs | 
|---|
| 57 | ; Input parameter: INSIEN - Array of ins co IENs | 
|---|
| 58 | ; Output parameter: PAYID - Array of National IDs | 
|---|
| 59 | N PAYIEN,IEN | 
|---|
| 60 | S IEN=0 F  S IEN=$O(INSIEN(IEN)) Q:'IEN  D | 
|---|
| 61 | . ; Discard INACTIVE ins companies from the array | 
|---|
| 62 | . I '$$ACTIVE^IBCNEUT4(IEN) K INSIEN(IEN) Q | 
|---|
| 63 | . ; Retrieve the Payer IEN for this ins co IEN | 
|---|
| 64 | . S PAYIEN=$P($G(^DIC(36,IEN,3)),U,10) | 
|---|
| 65 | . I 'PAYIEN Q | 
|---|
| 66 | . ; Retrieve the National ID for this ins co IEN | 
|---|
| 67 | . S PAYID=$P($G(^IBE(365.12,PAYIEN,0)),U,2) | 
|---|
| 68 | . I PAYID'="" S PAYID(PAYID)=IEN | 
|---|
| 69 | Q | 
|---|
| 70 | ; | 
|---|
| 71 | ERROR(ERRCODE,ERRTEXT,MULTI) ; Function to return the IEN of the Symbol | 
|---|
| 72 | ; file entry and error text - also adds error data to ARRAY | 
|---|
| 73 | ; Input parameters: ERRCODE - Symbol mnemonic ("B1", "B2", etc) | 
|---|
| 74 | ;                   ERRTEXT - Optional additional error text | 
|---|
| 75 | ;                   MULTI   - Optional array of items to display | 
|---|
| 76 | ; Output parameters: ARRAY - Updated by this function | 
|---|
| 77 | ;     Function value - Symbol IEN | 
|---|
| 78 | NEW %,DISYS,DIW,DIWI,DIWT,DIWTC,DIWX,DN,ERRARR,I,SYMIEN,Z | 
|---|
| 79 | ; If an optional array of items to display was passed in, add it | 
|---|
| 80 | I $G(ERRTEXT)'="",$D(MULTI) S ERRTEXT=$$MULTNAME^IBCNEUT4(ERRTEXT,.MULTI) | 
|---|
| 81 | S SYMIEN=$$FIND1^DIC(365.15,,"X",$G(ERRCODE)) | 
|---|
| 82 | ; call an IB utility to parse ERRTEXT into lines of acceptable length | 
|---|
| 83 | D FSTRNG^IBJU1($G(ERRTEXT),70,.ERRARR) | 
|---|
| 84 | ; Update the line counter in the error array | 
|---|
| 85 | S ARRAY=$G(ARRAY)+1 | 
|---|
| 86 | ; Merge the error text array returned by the IB utility in | 
|---|
| 87 | M ARRAY(ARRAY)=ERRARR | 
|---|
| 88 | ; Reset the error-specific node of the error array to follow the | 
|---|
| 89 | ; published input/output parameter format | 
|---|
| 90 | S ARRAY(ARRAY)=SYMIEN_U_ERRARR | 
|---|
| 91 | Q SYMIEN | 
|---|
| 92 | ; | 
|---|