- IBCNILK ;ALB/FA - Insurance Company Selection ; 02-OCT-2015
- ;;2.0;INTEGRATED BILLING;**549,713,737,763**;21-MAR-94;Build 29
- ;;Per VA Directive 6402, this routine should not be modified.
- ;;
- ;
- EN(WHICH,PIEN,FILTER) ;EP
- ; Main entry point for the Insurance Company Selection template
- ; Input: WHICH - 1 - Only Show Active Insurance Companies
- ; 0 - Only Show Inactive Insurance Companies
- ; 2 - Show Both Active and Inactive Insurance Companies
- ; PIEN - IEN of the Payer to use to filter Insurance Company
- ; lookups. Optional, defaults to "".
- ; FILTER - A^B^C Where:
- ; A - 1 - Search for Insurance Companies that begin with
- ; the specified text (case insensitive)
- ; 2 - Search for Insurance Companies that contain
- ; the specified text (case insensitive)
- ; 3 - Search for Insurance Companies in a specified
- ; range (inclusive, case insensitive)
- ; 4 - Search for Name(s) that are blank (null)
- ; 5 - Filter by Selected Payer only
- ;IB*737/CKB - changed what was Filter '4' to '5' and updated '4'. When the Coverage Limitations Report was added,
- ; it uses '4' to 'search for Name(s) that are blank (null)' when calling $$FILTER^IBCNINSU.
- ;
- ; B - Begin with text if A=1, Contains Text if A=2 or
- ; the range start if A=3
- ; C - Range End text (only present when A=3)
- ; Optional, if not passed, user is prompted for filter
- ; selection
- ; Output: ^TMP("IBCNILKA,$J,IIEN) - Array of selected insurance companies
- N NUMSEL
- S:'$D(PIEN) PIEN=""
- S:'$D(FILTER) FILTER=$$GETFILT()
- ;IB*713/CKB - allow user to exit
- I $G(FILTER)="^" Q
- Q:FILTER=""
- S NUMSEL=0
- K ^TMP("IBCNILKA",$J)
- D EN^VALM("IBCN INS CO SELECTOR")
- Q
- ;
- NEWSRCH() ; EP
- ; Protocol action to get new filter criteria and redisplay the listman
- ; template body and header
- ; Input: FILTER - Current Insurance Company Filter (See EN for details)
- ; Output: FILTER - Update Insurance Company Filter (See EN for details)
- N XX
- S VALMBCK="R"
- ;IB*713/CKB - reset VALMBG so the New Search (Insurance Company Lookup) will start on Page 1
- S VALMBG=1
- D FULL^VALM1
- ;IB*713/CKB&TAZ - added clean up of TMP, removed it from below
- K ^TMP("IBCNILK",$J),^TMP("IBCNILKIX",$J)
- W !!
- S XX=$$GETFILT()
- ;IB*713/CKB - allow user to exit, preventing 'jumping'
- I XX="^" D PAUSE^VALM1 Q
- I XX=-1 D Q
- . W *7,"Invalid Filter - nothing done"
- . D PAUSE^VALM1
- S FILTER=XX
- ;K ^TMP("IBCNILK",$J),^TMP("IBCNILKIX",$J)
- D BLD,HDR
- Q
- ;
- GETFILT() ; Gets the Insurance company filter
- ; Input: None
- ; Returns: A^B^C Where:
- ; A - 1 - Search for Insurance Companies that begin with
- ; the specified text (case insensitive)
- ; 2 - Search for Insurance Companies that contain
- ; the specified text (case insensitive)
- ; 3 - Search for Insurance Companies in a specified
- ; range (inclusive, case insensitive)
- ; B - Begin with text if A=1, Contains Text if A=2 or
- ; the range start if A=3
- ; C - Range End text (only present when A=3)
- ; -1 if a valid filter was not selected
- ; ^ if user wants to exit
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,FILTER,X,XX,Y
- ;
- ; First ask what kind of filter to use
- ;IB*763/CKB - 'Select' was modified to 'SELECT' in several places below
- ;
- W !
- S DIR(0)="SA^1:Begins with;2:Contains;3:Range"
- S DIR("A")=" SELECT 1, 2 or 3: " ;IB*763/CKB
- S DIR("A",1)=" 1 - Select Insurance Companies that Begin with: XXX"
- S DIR("A",2)=" 2 - Select Insurance Companies that Contain: XXX"
- S DIR("A",3)=" 3 - Select Insurance Companies in Range: XXX - YYY"
- S DIR("B")=1
- S DIR("?",1)="Select the type of filter to determine what Insurance Companies"
- S DIR("?",2)="will be displayed as follows:"
- S DIR("?",3)=" Begins with - Displays all insurance companies that begin with"
- S DIR("?",4)=" the specified text (inclusive, case insensitive)"
- S DIR("?",5)=" Contains - Displays all insurance companies that contain"
- S DIR("?",6)=" the specified text (inclusive, case insensitive)"
- S DIR("?",7)=" Range - Displays all insurance companies within the "
- S DIR("?")=" the specified range (inclusive, case insensitive)"
- S XX="1:Begins with;2:Contains;3:Range"
- D ^DIR
- I Y="^" Q Y ;IB*713/CKB - allow user to exit
- I $D(DTOUT)!$D(DUOUT) Q -1 ; No valid search selected
- S FILTER=Y
- ;
- ; Next ask for 'Begin with', 'Contains' or 'Range Start' text
- W !
- K DIR
- S DIR(0)="F^1;30"
- S XX=$S(FILTER=1:"that begin with",FILTER=2:"that contain",1:"Start of Range")
- S DIR("A")=" SELECT Insurance Companies "_XX ;IB*763/CKB
- I FILTER=1 D
- . S DIR("?")="Enter the text the each Insurance Company will begin with"
- I FILTER=2 D
- . S DIR("?")="Enter the text the each Insurance Company will contains"
- I FILTER=3 D
- . S DIR("?")="Enter the starting range text"
- D ^DIR K DIR
- I Y="^" Q Y ;IB*713/CKB - allow user to exit
- I $D(DTOUT)!$D(DUOUT) Q -1 ; No valid search selected
- S $P(FILTER,"^",2)=Y
- Q:$P(FILTER,"^",1)'=3 FILTER
- ;
- ; Finally, ask for 'Range End' text if using a range filter
- W !
- K DIR
- S DIR(0)="F^1;30"
- S DIR("A")=" SELECT Insurance Companies End of Range" ;IB*763/CKB
- S DIR("B")=$P(FILTER,"^",2)
- S DIR("?")="Enter the ending Range text"
- D ^DIR
- I Y="^" Q Y ;IB*713/CKB - allow user to exit
- I $D(DTOUT)!$D(DUOUT) Q -1 ; No valid search selected
- S $P(FILTER,"^",3)=Y
- Q FILTER
- ;
- HDR(SELECTED) ;EP
- ; Header code for the Insurance Company Selection template
- ; Input: SELECTED - 1 - Showing header for selected listman
- ; Optional, defaults to 0
- ; NUMSEL - Current # of Insurance Companies Selected
- ; FILTER - Current Insurance Company Filter (See EN for details)
- ; WHICH - Active/Inactive/Both filter option
- ; Output: VALMHDR - Header information to display
- N PNM,XX
- S:'$D(SELECTED) SELECTED=0
- I 'SELECTED D
- . I $P(FILTER,"^",1)=4 S VALMHDR(1)="" Q
- . I $P(FILTER,"^",1)=1 D Q
- . . S VALMHDR(1)="Insurance Companies that begin with: "_$P(FILTER,"^",2)
- . I $P(FILTER,"^",1)=2 D Q
- . . S VALMHDR(1)="Insurance Companies that contain: "_$P(FILTER,"^",2)
- . S XX=$P(FILTER,"^",2)_" - "_$P(FILTER,"^",3)
- . S VALMHDR(1)="Insurance Companies in range: "_XX
- S XX=$S(WHICH=1:"Active ",WHICH=0:"Inactive ",1:"All ")
- S XX="Showing "_XX_"Insurance Companies"
- ;
- ; Add Payer filter, if present
- I PIEN'="" D
- . S PNM=$E($$GET1^DIQ(365.12,PIEN_",",.01),1,30)
- . S PNM="Payer: "_PNM
- . S XX=$$SETSTR^VALM1(PNM,XX,40,40) ; Payer Name
- S VALMHDR(2)=XX
- S VALMHDR(3)=NUMSEL_" Insurance Companies selected"
- Q
- ;
- INIT ;EP
- ; Initialize variables and list array
- ; Input: None
- ; Output: ^TMP("IBCNILK",$J) - Body lines to display
- K ^TMP("IBCNILK",$J),^TMP("IBCNILKIX",$J),^TMP("IBCNILKA",$J)
- D BLD
- Q
- ;
- BLD ; Build listman body
- ; Input: FILTER - Current Insurance Company Filter (See EN for details)
- ; WHICH - 1 - Only Show Active Insurance Companies
- ; 0 - Only Show Inactive Insurance Companies
- ; 2 - Show Both Active and Inactive Insurance Companies
- ; Output: VALMCNT - Total number of lines displayed in the body
- ; ^TMP("IBCNILK",$J) - Body lines to display
- ; ^TMP("IBCNILKIX",$J) - Index of Entry IENs by display line
- N FTEXT1,FTEXT2,FTYPE,ICTR,IIEN,INACT,INM,INMU,LINE,PLEN,SKIP,START,STOP,XX
- N PLA ; IB*713/DTG
- S FTYPE=$P(FILTER,"^",1)
- S FTEXT1=$P(FILTER,"^",2),FTEXT1=$$UP^XLFSTR(FTEXT1)
- S FTEXT2=$P(FILTER,"^",3),FTEXT2=$$UP^XLFSTR(FTEXT2)
- ;IB*737/CKB - changed FTYPE from '4' to '5'. FTYPE=5 is only used by GETCOMPS^IBCNERPF.
- S:FTYPE=5 FTEXT1="A"
- S:FTYPE=1 PLEN=$L(FTEXT1)
- S:FTYPE=3 PLEN=$L(FTEXT2)
- S (ICTR,STOP,VALMCNT)=0,INM=""
- ;IB*713/DTG start allow all searches to use full index
- ;S:FTYPE'=2 INM=$O(^DIC(36,"B",FTEXT1),-1)
- F D Q:(INM="")!STOP
- . S INM=$O(^DIC(36,"B",INM))
- . Q:INM=""
- . S INMU=$$UP^XLFSTR(INM)
- . ;IB*713/TAZ&CKB - use utility to check Begins, Contains, and Range
- . I '$$FILTER^IBCNINSU(INM,FILTER) Q
- . ;IB*713/DTG start allow search to cycle through lower case and upper case insurance company names
- . S IIEN=""
- . F D Q:IIEN=""
- . . S IIEN=$O(^DIC(36,"B",INM,IIEN))
- . . Q:IIEN=""
- . . Q:'$D(^DIC(36,IIEN)) ; Corrupt data index, skip
- . . S SKIP=0
- . . I PIEN'="" D Q:SKIP ; Wrong payer
- . . . S XX=$$GET1^DIQ(36,IIEN_",",3.1,"I")
- . . . S:XX'=PIEN SKIP=1
- . . S INACT=+$$GET1^DIQ(36,IIEN_",",.05,"I")
- . . I WHICH=1,INACT=1 Q ; Not Active
- . . I WHICH=0,INACT=0 Q ; Not Inactive
- . . S ICTR=ICTR+1
- . . S LINE=$$BLDLN(ICTR,IIEN)
- . . S VALMCNT=VALMCNT+1
- . . D SET^VALM10(VALMCNT,LINE,LINE)
- . . S ^TMP("IBCNILKIX",$J,ICTR)=IIEN
- ;
- I VALMCNT=0 D
- . S ^TMP("IBCNILK",$J,1,0)="No Insurance Companies matching filter criteria were found."
- Q
- ;
- BLDLN(ICTR,IIEN) ;EP
- ; Builds a line to display one insurance company
- ; Input: ICTR - Selection Number
- ; IIEN - IEN of the insurance company to be
- ; displayed
- ; ^TMP("IBCNILKA",$J,IIEN) - Array of currently selected
- ; Insurance Companies
- ; Output: LINE - Formatted for setting into the list display
- N LINE,LINEI,XX
- S:$D(^TMP("IBCNILKA",$J,IIEN)) ICTR=ICTR_">" ; Mark as selected
- S LINE=$$SETSTR^VALM1(ICTR,"",1,4) ; Selection #
- S XX=$$GET1^DIQ(36,IIEN_",",.01)
- S LINE=$$SETSTR^VALM1(XX,LINE,7,30) ; Ins Co Name
- S XX=+$$GET1^DIQ(36,IIEN_",",.05,"I")
- S XX=$S(XX:"I",1:"A")
- S LINE=$$SETSTR^VALM1(XX,LINE,41,1) ; Active/Inactive
- S XX=$$GET1^DIQ(36,IIEN_",",.111)
- S LINE=$$SETSTR^VALM1(XX,LINE,46,35) ; Street Address
- S XX=$$GET1^DIQ(36,IIEN_",",.114)
- S LINE=$$SETSTR^VALM1(XX,LINE,84,25) ; City
- S XX=$$GET1^DIQ(36,IIEN_",",.115,"I")
- S XX=$$GET1^DIQ(5,XX_",",1)
- S LINE=$$SETSTR^VALM1(XX,LINE,111,2) ; State
- S XX=$$GET1^DIQ(36,IIEN_",",.116)
- S LINE=$$SETSTR^VALM1(XX,LINE,116,20) ; Zip Code
- Q LINE
- ;
- HELP ;EP
- ; Help code
- ; Input: None
- D FULL^VALM1
- S VALMBCK="R"
- W @IOF,"A '>' after the Insurance Company Selection number indicates that this Insurance"
- W !,"Company has already been selected."
- Q
- ;
- EXIT ;EP
- ; Exit code
- ; Input: None
- K ^TMP("IBCNILK",$J),^TMP("IBCNILKIX",$J)
- D CLEAR^VALM1
- Q
- ;
- SEL ;EP
- ; Protocol Action to de-select an already selected insurance company
- ; Input: NUMSEL - Current number of selected insurance
- ; companies
- ; ^TMP("IBCNILK",$J) - Current Array of displayed Ins Cos
- ; ^TMP("IBCNILKIX",$J) - Current Index of displayed Ins Cos
- ; ^TMP("IBCNILKA,$J,IIEN)- Current Array of selected Ins Cos
- ; Output: NUMSEL - Updated number of selected insurance
- ; companies
- ; ^TMP("IBCNILKA,$J,IIEN)- Updated Array of selected Ins Cos
- ; Selected Insurance Company is removed from the worklist
- ; Error message displayed (potentially)
- N DIR,DIROUT,DIRUT,DLINE,DTOUT,DUOUT,ERROR,IEN,IIENS,IX,LINE,PROMPT
- S VALMBCK="R",ERROR=0
- ;
- ; First select the Insurance Company(s) to be selected
- S PROMPT="SELECT Insurance Company(s)" ;IB*763/CKB
- S IIENS=$$SELINS(1,PROMPT,.DLINE,1,"IBCNILKIX")
- I IIENS="" S VALMBCK="R" Q ; None Selected
- F IX=1:1:$L(IIENS,",") D
- . S IIEN=$P(IIENS,",",IX)
- . S LINE=$P(DLINE,",",IX)
- . ;
- . ; If currently selected, display an error message
- . I $D(^TMP("IBCNILKA",$J,IIEN)) D Q
- . . W !,*7,">>>> # ",LINE," is currently selected."
- . . S ERROR=1
- . D MARK(1,IIEN,LINE,.NUMSEL) ; Show the selection mark
- D HDR ; Update the header
- D:ERROR PAUSE^VALM1
- Q
- ;
- UNSEL(SELECTED) ;EP
- ; Protocol Action to deselect an already selected insurance company
- ; Input: SELECTED - 1 - Called from IBCN INS CO ACTIVE UNSELECT
- ; 0 - Called from IBCN INS CO UNSELECT
- ; Optional, defaults to 0
- ; NUMSEL - Current number of selected insurance
- ; companies
- ; ^TMP("IBCNILK",$J) - Current Array of displayed Ins Cos
- ; ^TMP("IBCNILKS",$J) - Current Array of selecte Ins Cos
- ; ^TMP("IBCNILKIX",$J) - Current Index of displayed Ins Cos
- ; ^TMP("IBCNILKA,$J,IIEN)- Current Array of selected Ins Cos
- ; Output: NUMSEL - Current number of selected insurance
- ; companies
- ; ^TMP("IBCNILKA,$J,IIEN)- Updated Array of selected Ins Cos
- ; Selected Insurance Company is removed from the worklist
- ; Error message displayed (potentially)
- N DIR,DIROUT,DIRUT,DLINE,DTOUT,DUOUT,ERROR,IEN,IIENS,IX,LINE,PROMPT,WARRAY
- I '$D(SELECTED) D
- . S SELECTED=0,WARRAY="IBCNILKIX"
- E S WARRAY="IBCNILKSIX"
- S VALMBCK="R",ERROR=0
- ;
- ; First select the Insurance Company(s) to be deselected
- S PROMPT="DESELECT Insurance Company(s)" ;IB*763/CKB
- S IIENS=$$SELINS(1,PROMPT,.DLINE,1,WARRAY)
- I IIENS="" S VALMBCK="R" Q ; None Selected
- F IX=1:1:$L(IIENS,",") D
- . S IIEN=$P(IIENS,",",IX)
- . S LINE=$P(DLINE,",",IX)
- . ;
- . ; If not currently selected, display an error message
- . I '$D(^TMP("IBCNILKA",$J,IIEN)) D Q
- . . W !,*7,">>>> # ",LINE," is not currently selected. It cannot be deselected."
- . . S ERROR=1
- . D MARK(0,IIEN,LINE,.NUMSEL) ; Deselect the entry
- D HDR(SELECTED) ; Update the header
- D:ERROR PAUSE^VALM1
- Q
- ;
- MARK(WHICH,IIEN,LINE,NUMSEL) ;EP
- ; Mark/Remove 'Selection' from a selected
- ; Insurance Company line
- ; Input: WHICH - 0 - Remove 'Selection' mark
- ; 1 - Set 'Selection' mark
- ; IENIN - IEN of the entry to Mark/Remove 'In-Progress'
- ; LINE - Line number being marked/unmarked
- ; WLIST - Worklist, the user is selecting from.
- ; NUMSEL - Current # of selected Insurance Companies
- ; ^TMP("IBCNILKA",$J)- Current array of selected Insurance Companies
- ; Output: Insurance Company is marked or unmarked as selected
- ; NUMSEL - Current # of selected Insurance Companies
- ; ^TMP("IBCNILKA",$J)- Updated array of selected Insurance Companies
- ;
- N TEXT
- I WHICH D ; Mark as selected
- . S ^TMP("IBCNILKA",$J,IIEN)=""
- . S TEXT=LINE_">",NUMSEL=NUMSEL+1
- E D ; Mark as selected
- . K ^TMP("IBCNILKA",$J,IIEN)
- . S TEXT=LINE,NUMSEL=NUMSEL-1
- D FLDTEXT^VALM10(LINE,"CTR",TEXT) ; Update display
- D WRITE^VALM10(LINE) ; Redisplay line
- Q
- ;
- SHOWSEL ;EP
- ; Protocol action used to display a listman template of the currently
- ; selected Insurance companies
- ; Input: NUMSEL - Current number of selected insurance
- ; companies
- ; ^TMP("IBCNILKA",$J,IEN) - Current Array of selected insurance
- ; companies
- ; Output: NUMSEL - Updated number of selected insurance companies
- ; ^TMP("IBCNILKA",$J,IEN) - Updated Array of selected insurance
- ; companies
- S VALMBCK="R"
- D EN^VALM("IBCN INS CO SELECTED")
- D HDR,BLD
- Q
- ;
- SELINS(FULL,PROMPT,DLINE,MULT,WLIST) ;EP
- ; Select Insurance Company(s) to perform an action upon
- ; Also called from IBCNILK@UNSEL
- ; Input: FULL - 1 - full screen mode, 0 otherwise
- ; PROMPT - Prompt to be displayed to the user
- ; MULT - 1 to allow multiple entry selection
- ; 0 to only allow single entry selection
- ; Optional, defaults to 0
- ; WLIST - Worklist, the user is selecting from
- ; ^TMP("IBCNILKIX",$J) - Index of displayed lines of the Ins Co
- ; Selector Template.
- ; Only used when WLIST="IBCNILKIX"
- ; ^TMP("IBCNILKSIX",$J) - Index of displayed lines of the Ins Cos
- ; Selected Template
- ; Only used if WLIST is "IBCNILKSIX"
- ; Output: DLINE - Comma delimited list of Line #(s) of the
- ; selected Ins Cos
- ; Returns: IIEN(s) - Comma delimited string or IENS for the selected Ins Co(s)
- ; Error message and "" IENS if multi-selection and not allowed
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,IIEN,IIENS,IX,VALMY,X,Y
- S:'$D(MULT) MULT=0
- S:'$D(WLIST) WLIST="IBCNILK"
- D:FULL FULL^VALM1
- S DLINE=$P($P($G(XQORNOD(0)),"^",4),"=",2) ; User selection with action
- S DLINE=$TR(DLINE,"/\; .",",,,,,") ; Check for multi-selection
- S IIENS=""
- I 'MULT,DLINE["," D Q "" ; Invalid multi-selection
- . W !,*7,">>>> Only single entry selection is allowed"
- . S DLINE=""
- . K DIR
- . D PAUSE^VALM1
- ;
- ; Let the user enter their selection(s)
- D EN^VALM2($G(XQORNOD(0)),"O") ; ListMan generic selector
- I '$D(VALMY) Q ""
- S IX="",DLINE=""
- F D Q:IX=""
- . S IX=$O(VALMY(IX))
- . Q:IX=""
- . S DLINE=$S(DLINE="":IX,1:DLINE_","_IX)
- . S IIEN=$G(^TMP(WLIST,$J,IX))
- . S IIENS=$S(IIENS="":IIEN,1:IIENS_","_IIEN)
- Q IIENS
- ;
- INIT2 ;EP for Show Selections
- ; Initialize variables and list array
- ; Input: None
- ; Output: ^TMP("IBCNILK",$J) - Body lines to display
- K ^TMP("IBCNILKS",$J),^TMP("IBCNILKSIX",$J)
- D BLD2
- Q
- ;
- BLD2 ; Build listman body for Show Selections
- ; Input: None
- ; Output: VALMCNT - Total number of lines displayed in the body
- ; ^TMP("IBCNILKS",$J) - Body lines to display
- ; ^TMP("IBCNILKSIX",$J) - Index of Entry IENs by display line
- N IIEN,LINE,NM,SORTED
- ;
- ; First sort the currently selected insurance companies into name order
- S IIEN=""
- F D Q:IIEN=""
- . S IIEN=$O(^TMP("IBCNILKA",$J,IIEN))
- . Q:IIEN=""
- . S NM=$$GET1^DIQ(36,IIEN_",",.01)
- . S SORTED(NM,IIEN)=""
- ;
- ; Now build the lines to be displayed
- S (ICTR,VALMCNT)=0,NM=""
- F D Q:NM=""
- . S NM=$O(SORTED(NM))
- . Q:NM=""
- . S IIEN=""
- . F D Q:IIEN=""
- . . S IIEN=$O(SORTED(NM,IIEN))
- . . Q:IIEN=""
- . . S ICTR=ICTR+1
- . . S LINE=$$BLDLN(ICTR,IIEN)
- . . S VALMCNT=VALMCNT+1
- . . D SET^VALM10(VALMCNT,LINE,LINE)
- . . S ^TMP("IBCNILKSIX",$J,ICTR)=IIEN
- ;
- I VALMCNT=0 D
- . S ^TMP("IBCNILK",$J,1,0)="No Selected Insurance Companies were found."
- Q
- ;
- EXIT2 ;EP for Show Selections
- ; Exit code
- ; Input: None
- K ^TMP("IBCNILKS",$J),^TMP("IBCNILKSIX",$J)
- D CLEAR^VALM1
- Q
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCNILK 19866 printed Feb 18, 2025@23:42:17 Page 2
- IBCNILK ;ALB/FA - Insurance Company Selection ; 02-OCT-2015
- +1 ;;2.0;INTEGRATED BILLING;**549,713,737,763**;21-MAR-94;Build 29
- +2 ;;Per VA Directive 6402, this routine should not be modified.
- +3 ;;
- +4 ;
- EN(WHICH,PIEN,FILTER) ;EP
- +1 ; Main entry point for the Insurance Company Selection template
- +2 ; Input: WHICH - 1 - Only Show Active Insurance Companies
- +3 ; 0 - Only Show Inactive Insurance Companies
- +4 ; 2 - Show Both Active and Inactive Insurance Companies
- +5 ; PIEN - IEN of the Payer to use to filter Insurance Company
- +6 ; lookups. Optional, defaults to "".
- +7 ; FILTER - A^B^C Where:
- +8 ; A - 1 - Search for Insurance Companies that begin with
- +9 ; the specified text (case insensitive)
- +10 ; 2 - Search for Insurance Companies that contain
- +11 ; the specified text (case insensitive)
- +12 ; 3 - Search for Insurance Companies in a specified
- +13 ; range (inclusive, case insensitive)
- +14 ; 4 - Search for Name(s) that are blank (null)
- +15 ; 5 - Filter by Selected Payer only
- +16 ;IB*737/CKB - changed what was Filter '4' to '5' and updated '4'. When the Coverage Limitations Report was added,
- +17 ; it uses '4' to 'search for Name(s) that are blank (null)' when calling $$FILTER^IBCNINSU.
- +18 ;
- +19 ; B - Begin with text if A=1, Contains Text if A=2 or
- +20 ; the range start if A=3
- +21 ; C - Range End text (only present when A=3)
- +22 ; Optional, if not passed, user is prompted for filter
- +23 ; selection
- +24 ; Output: ^TMP("IBCNILKA,$J,IIEN) - Array of selected insurance companies
- +25 NEW NUMSEL
- +26 if '$DATA(PIEN)
- SET PIEN=""
- +27 if '$DATA(FILTER)
- SET FILTER=$$GETFILT()
- +28 ;IB*713/CKB - allow user to exit
- +29 IF $GET(FILTER)="^"
- QUIT
- +30 if FILTER=""
- QUIT
- +31 SET NUMSEL=0
- +32 KILL ^TMP("IBCNILKA",$JOB)
- +33 DO EN^VALM("IBCN INS CO SELECTOR")
- +34 QUIT
- +35 ;
- NEWSRCH() ; EP
- +1 ; Protocol action to get new filter criteria and redisplay the listman
- +2 ; template body and header
- +3 ; Input: FILTER - Current Insurance Company Filter (See EN for details)
- +4 ; Output: FILTER - Update Insurance Company Filter (See EN for details)
- +5 NEW XX
- +6 SET VALMBCK="R"
- +7 ;IB*713/CKB - reset VALMBG so the New Search (Insurance Company Lookup) will start on Page 1
- +8 SET VALMBG=1
- +9 DO FULL^VALM1
- +10 ;IB*713/CKB&TAZ - added clean up of TMP, removed it from below
- +11 KILL ^TMP("IBCNILK",$JOB),^TMP("IBCNILKIX",$JOB)
- +12 WRITE !!
- +13 SET XX=$$GETFILT()
- +14 ;IB*713/CKB - allow user to exit, preventing 'jumping'
- +15 IF XX="^"
- DO PAUSE^VALM1
- QUIT
- +16 IF XX=-1
- Begin DoDot:1
- +17 WRITE *7,"Invalid Filter - nothing done"
- +18 DO PAUSE^VALM1
- End DoDot:1
- QUIT
- +19 SET FILTER=XX
- +20 ;K ^TMP("IBCNILK",$J),^TMP("IBCNILKIX",$J)
- +21 DO BLD
- DO HDR
- +22 QUIT
- +23 ;
- GETFILT() ; Gets the Insurance company filter
- +1 ; Input: None
- +2 ; Returns: A^B^C Where:
- +3 ; A - 1 - Search for Insurance Companies that begin with
- +4 ; the specified text (case insensitive)
- +5 ; 2 - Search for Insurance Companies that contain
- +6 ; the specified text (case insensitive)
- +7 ; 3 - Search for Insurance Companies in a specified
- +8 ; range (inclusive, case insensitive)
- +9 ; B - Begin with text if A=1, Contains Text if A=2 or
- +10 ; the range start if A=3
- +11 ; C - Range End text (only present when A=3)
- +12 ; -1 if a valid filter was not selected
- +13 ; ^ if user wants to exit
- +14 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,FILTER,X,XX,Y
- +15 ;
- +16 ; First ask what kind of filter to use
- +17 ;IB*763/CKB - 'Select' was modified to 'SELECT' in several places below
- +18 ;
- +19 WRITE !
- +20 SET DIR(0)="SA^1:Begins with;2:Contains;3:Range"
- +21 ;IB*763/CKB
- SET DIR("A")=" SELECT 1, 2 or 3: "
- +22 SET DIR("A",1)=" 1 - Select Insurance Companies that Begin with: XXX"
- +23 SET DIR("A",2)=" 2 - Select Insurance Companies that Contain: XXX"
- +24 SET DIR("A",3)=" 3 - Select Insurance Companies in Range: XXX - YYY"
- +25 SET DIR("B")=1
- +26 SET DIR("?",1)="Select the type of filter to determine what Insurance Companies"
- +27 SET DIR("?",2)="will be displayed as follows:"
- +28 SET DIR("?",3)=" Begins with - Displays all insurance companies that begin with"
- +29 SET DIR("?",4)=" the specified text (inclusive, case insensitive)"
- +30 SET DIR("?",5)=" Contains - Displays all insurance companies that contain"
- +31 SET DIR("?",6)=" the specified text (inclusive, case insensitive)"
- +32 SET DIR("?",7)=" Range - Displays all insurance companies within the "
- +33 SET DIR("?")=" the specified range (inclusive, case insensitive)"
- +34 SET XX="1:Begins with;2:Contains;3:Range"
- +35 DO ^DIR
- +36 ;IB*713/CKB - allow user to exit
- IF Y="^"
- QUIT Y
- +37 ; No valid search selected
- IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT -1
- +38 SET FILTER=Y
- +39 ;
- +40 ; Next ask for 'Begin with', 'Contains' or 'Range Start' text
- +41 WRITE !
- +42 KILL DIR
- +43 SET DIR(0)="F^1;30"
- +44 SET XX=$SELECT(FILTER=1:"that begin with",FILTER=2:"that contain",1:"Start of Range")
- +45 ;IB*763/CKB
- SET DIR("A")=" SELECT Insurance Companies "_XX
- +46 IF FILTER=1
- Begin DoDot:1
- +47 SET DIR("?")="Enter the text the each Insurance Company will begin with"
- End DoDot:1
- +48 IF FILTER=2
- Begin DoDot:1
- +49 SET DIR("?")="Enter the text the each Insurance Company will contains"
- End DoDot:1
- +50 IF FILTER=3
- Begin DoDot:1
- +51 SET DIR("?")="Enter the starting range text"
- End DoDot:1
- +52 DO ^DIR
- KILL DIR
- +53 ;IB*713/CKB - allow user to exit
- IF Y="^"
- QUIT Y
- +54 ; No valid search selected
- IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT -1
- +55 SET $PIECE(FILTER,"^",2)=Y
- +56 if $PIECE(FILTER,"^",1)'=3
- QUIT FILTER
- +57 ;
- +58 ; Finally, ask for 'Range End' text if using a range filter
- +59 WRITE !
- +60 KILL DIR
- +61 SET DIR(0)="F^1;30"
- +62 ;IB*763/CKB
- SET DIR("A")=" SELECT Insurance Companies End of Range"
- +63 SET DIR("B")=$PIECE(FILTER,"^",2)
- +64 SET DIR("?")="Enter the ending Range text"
- +65 DO ^DIR
- +66 ;IB*713/CKB - allow user to exit
- IF Y="^"
- QUIT Y
- +67 ; No valid search selected
- IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT -1
- +68 SET $PIECE(FILTER,"^",3)=Y
- +69 QUIT FILTER
- +70 ;
- HDR(SELECTED) ;EP
- +1 ; Header code for the Insurance Company Selection template
- +2 ; Input: SELECTED - 1 - Showing header for selected listman
- +3 ; Optional, defaults to 0
- +4 ; NUMSEL - Current # of Insurance Companies Selected
- +5 ; FILTER - Current Insurance Company Filter (See EN for details)
- +6 ; WHICH - Active/Inactive/Both filter option
- +7 ; Output: VALMHDR - Header information to display
- +8 NEW PNM,XX
- +9 if '$DATA(SELECTED)
- SET SELECTED=0
- +10 IF 'SELECTED
- Begin DoDot:1
- +11 IF $PIECE(FILTER,"^",1)=4
- SET VALMHDR(1)=""
- QUIT
- +12 IF $PIECE(FILTER,"^",1)=1
- Begin DoDot:2
- +13 SET VALMHDR(1)="Insurance Companies that begin with: "_$PIECE(FILTER,"^",2)
- End DoDot:2
- QUIT
- +14 IF $PIECE(FILTER,"^",1)=2
- Begin DoDot:2
- +15 SET VALMHDR(1)="Insurance Companies that contain: "_$PIECE(FILTER,"^",2)
- End DoDot:2
- QUIT
- +16 SET XX=$PIECE(FILTER,"^",2)_" - "_$PIECE(FILTER,"^",3)
- +17 SET VALMHDR(1)="Insurance Companies in range: "_XX
- End DoDot:1
- +18 SET XX=$SELECT(WHICH=1:"Active ",WHICH=0:"Inactive ",1:"All ")
- +19 SET XX="Showing "_XX_"Insurance Companies"
- +20 ;
- +21 ; Add Payer filter, if present
- +22 IF PIEN'=""
- Begin DoDot:1
- +23 SET PNM=$EXTRACT($$GET1^DIQ(365.12,PIEN_",",.01),1,30)
- +24 SET PNM="Payer: "_PNM
- +25 ; Payer Name
- SET XX=$$SETSTR^VALM1(PNM,XX,40,40)
- End DoDot:1
- +26 SET VALMHDR(2)=XX
- +27 SET VALMHDR(3)=NUMSEL_" Insurance Companies selected"
- +28 QUIT
- +29 ;
- INIT ;EP
- +1 ; Initialize variables and list array
- +2 ; Input: None
- +3 ; Output: ^TMP("IBCNILK",$J) - Body lines to display
- +4 KILL ^TMP("IBCNILK",$JOB),^TMP("IBCNILKIX",$JOB),^TMP("IBCNILKA",$JOB)
- +5 DO BLD
- +6 QUIT
- +7 ;
- BLD ; Build listman body
- +1 ; Input: FILTER - Current Insurance Company Filter (See EN for details)
- +2 ; WHICH - 1 - Only Show Active Insurance Companies
- +3 ; 0 - Only Show Inactive Insurance Companies
- +4 ; 2 - Show Both Active and Inactive Insurance Companies
- +5 ; Output: VALMCNT - Total number of lines displayed in the body
- +6 ; ^TMP("IBCNILK",$J) - Body lines to display
- +7 ; ^TMP("IBCNILKIX",$J) - Index of Entry IENs by display line
- +8 NEW FTEXT1,FTEXT2,FTYPE,ICTR,IIEN,INACT,INM,INMU,LINE,PLEN,SKIP,START,STOP,XX
- +9 ; IB*713/DTG
- NEW PLA
- +10 SET FTYPE=$PIECE(FILTER,"^",1)
- +11 SET FTEXT1=$PIECE(FILTER,"^",2)
- SET FTEXT1=$$UP^XLFSTR(FTEXT1)
- +12 SET FTEXT2=$PIECE(FILTER,"^",3)
- SET FTEXT2=$$UP^XLFSTR(FTEXT2)
- +13 ;IB*737/CKB - changed FTYPE from '4' to '5'. FTYPE=5 is only used by GETCOMPS^IBCNERPF.
- +14 if FTYPE=5
- SET FTEXT1="A"
- +15 if FTYPE=1
- SET PLEN=$LENGTH(FTEXT1)
- +16 if FTYPE=3
- SET PLEN=$LENGTH(FTEXT2)
- +17 SET (ICTR,STOP,VALMCNT)=0
- SET INM=""
- +18 ;IB*713/DTG start allow all searches to use full index
- +19 ;S:FTYPE'=2 INM=$O(^DIC(36,"B",FTEXT1),-1)
- +20 FOR
- Begin DoDot:1
- +21 SET INM=$ORDER(^DIC(36,"B",INM))
- +22 if INM=""
- QUIT
- +23 SET INMU=$$UP^XLFSTR(INM)
- +24 ;IB*713/TAZ&CKB - use utility to check Begins, Contains, and Range
- +25 IF '$$FILTER^IBCNINSU(INM,FILTER)
- QUIT
- +26 ;IB*713/DTG start allow search to cycle through lower case and upper case insurance company names
- +27 SET IIEN=""
- +28 FOR
- Begin DoDot:2
- +29 SET IIEN=$ORDER(^DIC(36,"B",INM,IIEN))
- +30 if IIEN=""
- QUIT
- +31 ; Corrupt data index, skip
- if '$DATA(^DIC(36,IIEN))
- QUIT
- +32 SET SKIP=0
- +33 ; Wrong payer
- IF PIEN'=""
- Begin DoDot:3
- +34 SET XX=$$GET1^DIQ(36,IIEN_",",3.1,"I")
- +35 if XX'=PIEN
- SET SKIP=1
- End DoDot:3
- if SKIP
- QUIT
- +36 SET INACT=+$$GET1^DIQ(36,IIEN_",",.05,"I")
- +37 ; Not Active
- IF WHICH=1
- IF INACT=1
- QUIT
- +38 ; Not Inactive
- IF WHICH=0
- IF INACT=0
- QUIT
- +39 SET ICTR=ICTR+1
- +40 SET LINE=$$BLDLN(ICTR,IIEN)
- +41 SET VALMCNT=VALMCNT+1
- +42 DO SET^VALM10(VALMCNT,LINE,LINE)
- +43 SET ^TMP("IBCNILKIX",$JOB,ICTR)=IIEN
- End DoDot:2
- if IIEN=""
- QUIT
- End DoDot:1
- if (INM="")!STOP
- QUIT
- +44 ;
- +45 IF VALMCNT=0
- Begin DoDot:1
- +46 SET ^TMP("IBCNILK",$JOB,1,0)="No Insurance Companies matching filter criteria were found."
- End DoDot:1
- +47 QUIT
- +48 ;
- BLDLN(ICTR,IIEN) ;EP
- +1 ; Builds a line to display one insurance company
- +2 ; Input: ICTR - Selection Number
- +3 ; IIEN - IEN of the insurance company to be
- +4 ; displayed
- +5 ; ^TMP("IBCNILKA",$J,IIEN) - Array of currently selected
- +6 ; Insurance Companies
- +7 ; Output: LINE - Formatted for setting into the list display
- +8 NEW LINE,LINEI,XX
- +9 ; Mark as selected
- if $DATA(^TMP("IBCNILKA",$JOB,IIEN))
- SET ICTR=ICTR_">"
- +10 ; Selection #
- SET LINE=$$SETSTR^VALM1(ICTR,"",1,4)
- +11 SET XX=$$GET1^DIQ(36,IIEN_",",.01)
- +12 ; Ins Co Name
- SET LINE=$$SETSTR^VALM1(XX,LINE,7,30)
- +13 SET XX=+$$GET1^DIQ(36,IIEN_",",.05,"I")
- +14 SET XX=$SELECT(XX:"I",1:"A")
- +15 ; Active/Inactive
- SET LINE=$$SETSTR^VALM1(XX,LINE,41,1)
- +16 SET XX=$$GET1^DIQ(36,IIEN_",",.111)
- +17 ; Street Address
- SET LINE=$$SETSTR^VALM1(XX,LINE,46,35)
- +18 SET XX=$$GET1^DIQ(36,IIEN_",",.114)
- +19 ; City
- SET LINE=$$SETSTR^VALM1(XX,LINE,84,25)
- +20 SET XX=$$GET1^DIQ(36,IIEN_",",.115,"I")
- +21 SET XX=$$GET1^DIQ(5,XX_",",1)
- +22 ; State
- SET LINE=$$SETSTR^VALM1(XX,LINE,111,2)
- +23 SET XX=$$GET1^DIQ(36,IIEN_",",.116)
- +24 ; Zip Code
- SET LINE=$$SETSTR^VALM1(XX,LINE,116,20)
- +25 QUIT LINE
- +26 ;
- HELP ;EP
- +1 ; Help code
- +2 ; Input: None
- +3 DO FULL^VALM1
- +4 SET VALMBCK="R"
- +5 WRITE @IOF,"A '>' after the Insurance Company Selection number indicates that this Insurance"
- +6 WRITE !,"Company has already been selected."
- +7 QUIT
- +8 ;
- EXIT ;EP
- +1 ; Exit code
- +2 ; Input: None
- +3 KILL ^TMP("IBCNILK",$JOB),^TMP("IBCNILKIX",$JOB)
- +4 DO CLEAR^VALM1
- +5 QUIT
- +6 ;
- SEL ;EP
- +1 ; Protocol Action to de-select an already selected insurance company
- +2 ; Input: NUMSEL - Current number of selected insurance
- +3 ; companies
- +4 ; ^TMP("IBCNILK",$J) - Current Array of displayed Ins Cos
- +5 ; ^TMP("IBCNILKIX",$J) - Current Index of displayed Ins Cos
- +6 ; ^TMP("IBCNILKA,$J,IIEN)- Current Array of selected Ins Cos
- +7 ; Output: NUMSEL - Updated number of selected insurance
- +8 ; companies
- +9 ; ^TMP("IBCNILKA,$J,IIEN)- Updated Array of selected Ins Cos
- +10 ; Selected Insurance Company is removed from the worklist
- +11 ; Error message displayed (potentially)
- +12 NEW DIR,DIROUT,DIRUT,DLINE,DTOUT,DUOUT,ERROR,IEN,IIENS,IX,LINE,PROMPT
- +13 SET VALMBCK="R"
- SET ERROR=0
- +14 ;
- +15 ; First select the Insurance Company(s) to be selected
- +16 ;IB*763/CKB
- SET PROMPT="SELECT Insurance Company(s)"
- +17 SET IIENS=$$SELINS(1,PROMPT,.DLINE,1,"IBCNILKIX")
- +18 ; None Selected
- IF IIENS=""
- SET VALMBCK="R"
- QUIT
- +19 FOR IX=1:1:$LENGTH(IIENS,",")
- Begin DoDot:1
- +20 SET IIEN=$PIECE(IIENS,",",IX)
- +21 SET LINE=$PIECE(DLINE,",",IX)
- +22 ;
- +23 ; If currently selected, display an error message
- +24 IF $DATA(^TMP("IBCNILKA",$JOB,IIEN))
- Begin DoDot:2
- +25 WRITE !,*7,">>>> # ",LINE," is currently selected."
- +26 SET ERROR=1
- End DoDot:2
- QUIT
- +27 ; Show the selection mark
- DO MARK(1,IIEN,LINE,.NUMSEL)
- End DoDot:1
- +28 ; Update the header
- DO HDR
- +29 if ERROR
- DO PAUSE^VALM1
- +30 QUIT
- +31 ;
- UNSEL(SELECTED) ;EP
- +1 ; Protocol Action to deselect an already selected insurance company
- +2 ; Input: SELECTED - 1 - Called from IBCN INS CO ACTIVE UNSELECT
- +3 ; 0 - Called from IBCN INS CO UNSELECT
- +4 ; Optional, defaults to 0
- +5 ; NUMSEL - Current number of selected insurance
- +6 ; companies
- +7 ; ^TMP("IBCNILK",$J) - Current Array of displayed Ins Cos
- +8 ; ^TMP("IBCNILKS",$J) - Current Array of selecte Ins Cos
- +9 ; ^TMP("IBCNILKIX",$J) - Current Index of displayed Ins Cos
- +10 ; ^TMP("IBCNILKA,$J,IIEN)- Current Array of selected Ins Cos
- +11 ; Output: NUMSEL - Current number of selected insurance
- +12 ; companies
- +13 ; ^TMP("IBCNILKA,$J,IIEN)- Updated Array of selected Ins Cos
- +14 ; Selected Insurance Company is removed from the worklist
- +15 ; Error message displayed (potentially)
- +16 NEW DIR,DIROUT,DIRUT,DLINE,DTOUT,DUOUT,ERROR,IEN,IIENS,IX,LINE,PROMPT,WARRAY
- +17 IF '$DATA(SELECTED)
- Begin DoDot:1
- +18 SET SELECTED=0
- SET WARRAY="IBCNILKIX"
- End DoDot:1
- +19 IF '$TEST
- SET WARRAY="IBCNILKSIX"
- +20 SET VALMBCK="R"
- SET ERROR=0
- +21 ;
- +22 ; First select the Insurance Company(s) to be deselected
- +23 ;IB*763/CKB
- SET PROMPT="DESELECT Insurance Company(s)"
- +24 SET IIENS=$$SELINS(1,PROMPT,.DLINE,1,WARRAY)
- +25 ; None Selected
- IF IIENS=""
- SET VALMBCK="R"
- QUIT
- +26 FOR IX=1:1:$LENGTH(IIENS,",")
- Begin DoDot:1
- +27 SET IIEN=$PIECE(IIENS,",",IX)
- +28 SET LINE=$PIECE(DLINE,",",IX)
- +29 ;
- +30 ; If not currently selected, display an error message
- +31 IF '$DATA(^TMP("IBCNILKA",$JOB,IIEN))
- Begin DoDot:2
- +32 WRITE !,*7,">>>> # ",LINE," is not currently selected. It cannot be deselected."
- +33 SET ERROR=1
- End DoDot:2
- QUIT
- +34 ; Deselect the entry
- DO MARK(0,IIEN,LINE,.NUMSEL)
- End DoDot:1
- +35 ; Update the header
- DO HDR(SELECTED)
- +36 if ERROR
- DO PAUSE^VALM1
- +37 QUIT
- +38 ;
- MARK(WHICH,IIEN,LINE,NUMSEL) ;EP
- +1 ; Mark/Remove 'Selection' from a selected
- +2 ; Insurance Company line
- +3 ; Input: WHICH - 0 - Remove 'Selection' mark
- +4 ; 1 - Set 'Selection' mark
- +5 ; IENIN - IEN of the entry to Mark/Remove 'In-Progress'
- +6 ; LINE - Line number being marked/unmarked
- +7 ; WLIST - Worklist, the user is selecting from.
- +8 ; NUMSEL - Current # of selected Insurance Companies
- +9 ; ^TMP("IBCNILKA",$J)- Current array of selected Insurance Companies
- +10 ; Output: Insurance Company is marked or unmarked as selected
- +11 ; NUMSEL - Current # of selected Insurance Companies
- +12 ; ^TMP("IBCNILKA",$J)- Updated array of selected Insurance Companies
- +13 ;
- +14 NEW TEXT
- +15 ; Mark as selected
- IF WHICH
- Begin DoDot:1
- +16 SET ^TMP("IBCNILKA",$JOB,IIEN)=""
- +17 SET TEXT=LINE_">"
- SET NUMSEL=NUMSEL+1
- End DoDot:1
- +18 ; Mark as selected
- IF '$TEST
- Begin DoDot:1
- +19 KILL ^TMP("IBCNILKA",$JOB,IIEN)
- +20 SET TEXT=LINE
- SET NUMSEL=NUMSEL-1
- End DoDot:1
- +21 ; Update display
- DO FLDTEXT^VALM10(LINE,"CTR",TEXT)
- +22 ; Redisplay line
- DO WRITE^VALM10(LINE)
- +23 QUIT
- +24 ;
- SHOWSEL ;EP
- +1 ; Protocol action used to display a listman template of the currently
- +2 ; selected Insurance companies
- +3 ; Input: NUMSEL - Current number of selected insurance
- +4 ; companies
- +5 ; ^TMP("IBCNILKA",$J,IEN) - Current Array of selected insurance
- +6 ; companies
- +7 ; Output: NUMSEL - Updated number of selected insurance companies
- +8 ; ^TMP("IBCNILKA",$J,IEN) - Updated Array of selected insurance
- +9 ; companies
- +10 SET VALMBCK="R"
- +11 DO EN^VALM("IBCN INS CO SELECTED")
- +12 DO HDR
- DO BLD
- +13 QUIT
- +14 ;
- SELINS(FULL,PROMPT,DLINE,MULT,WLIST) ;EP
- +1 ; Select Insurance Company(s) to perform an action upon
- +2 ; Also called from IBCNILK@UNSEL
- +3 ; Input: FULL - 1 - full screen mode, 0 otherwise
- +4 ; PROMPT - Prompt to be displayed to the user
- +5 ; MULT - 1 to allow multiple entry selection
- +6 ; 0 to only allow single entry selection
- +7 ; Optional, defaults to 0
- +8 ; WLIST - Worklist, the user is selecting from
- +9 ; ^TMP("IBCNILKIX",$J) - Index of displayed lines of the Ins Co
- +10 ; Selector Template.
- +11 ; Only used when WLIST="IBCNILKIX"
- +12 ; ^TMP("IBCNILKSIX",$J) - Index of displayed lines of the Ins Cos
- +13 ; Selected Template
- +14 ; Only used if WLIST is "IBCNILKSIX"
- +15 ; Output: DLINE - Comma delimited list of Line #(s) of the
- +16 ; selected Ins Cos
- +17 ; Returns: IIEN(s) - Comma delimited string or IENS for the selected Ins Co(s)
- +18 ; Error message and "" IENS if multi-selection and not allowed
- +19 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,IIEN,IIENS,IX,VALMY,X,Y
- +20 if '$DATA(MULT)
- SET MULT=0
- +21 if '$DATA(WLIST)
- SET WLIST="IBCNILK"
- +22 if FULL
- DO FULL^VALM1
- +23 ; User selection with action
- SET DLINE=$PIECE($PIECE($GET(XQORNOD(0)),"^",4),"=",2)
- +24 ; Check for multi-selection
- SET DLINE=$TRANSLATE(DLINE,"/\; .",",,,,,")
- +25 SET IIENS=""
- +26 ; Invalid multi-selection
- IF 'MULT
- IF DLINE[","
- Begin DoDot:1
- +27 WRITE !,*7,">>>> Only single entry selection is allowed"
- +28 SET DLINE=""
- +29 KILL DIR
- +30 DO PAUSE^VALM1
- End DoDot:1
- QUIT ""
- +31 ;
- +32 ; Let the user enter their selection(s)
- +33 ; ListMan generic selector
- DO EN^VALM2($GET(XQORNOD(0)),"O")
- +34 IF '$DATA(VALMY)
- QUIT ""
- +35 SET IX=""
- SET DLINE=""
- +36 FOR
- Begin DoDot:1
- +37 SET IX=$ORDER(VALMY(IX))
- +38 if IX=""
- QUIT
- +39 SET DLINE=$SELECT(DLINE="":IX,1:DLINE_","_IX)
- +40 SET IIEN=$GET(^TMP(WLIST,$JOB,IX))
- +41 SET IIENS=$SELECT(IIENS="":IIEN,1:IIENS_","_IIEN)
- End DoDot:1
- if IX=""
- QUIT
- +42 QUIT IIENS
- +43 ;
- INIT2 ;EP for Show Selections
- +1 ; Initialize variables and list array
- +2 ; Input: None
- +3 ; Output: ^TMP("IBCNILK",$J) - Body lines to display
- +4 KILL ^TMP("IBCNILKS",$JOB),^TMP("IBCNILKSIX",$JOB)
- +5 DO BLD2
- +6 QUIT
- +7 ;
- BLD2 ; Build listman body for Show Selections
- +1 ; Input: None
- +2 ; Output: VALMCNT - Total number of lines displayed in the body
- +3 ; ^TMP("IBCNILKS",$J) - Body lines to display
- +4 ; ^TMP("IBCNILKSIX",$J) - Index of Entry IENs by display line
- +5 NEW IIEN,LINE,NM,SORTED
- +6 ;
- +7 ; First sort the currently selected insurance companies into name order
- +8 SET IIEN=""
- +9 FOR
- Begin DoDot:1
- +10 SET IIEN=$ORDER(^TMP("IBCNILKA",$JOB,IIEN))
- +11 if IIEN=""
- QUIT
- +12 SET NM=$$GET1^DIQ(36,IIEN_",",.01)
- +13 SET SORTED(NM,IIEN)=""
- End DoDot:1
- if IIEN=""
- QUIT
- +14 ;
- +15 ; Now build the lines to be displayed
- +16 SET (ICTR,VALMCNT)=0
- SET NM=""
- +17 FOR
- Begin DoDot:1
- +18 SET NM=$ORDER(SORTED(NM))
- +19 if NM=""
- QUIT
- +20 SET IIEN=""
- +21 FOR
- Begin DoDot:2
- +22 SET IIEN=$ORDER(SORTED(NM,IIEN))
- +23 if IIEN=""
- QUIT
- +24 SET ICTR=ICTR+1
- +25 SET LINE=$$BLDLN(ICTR,IIEN)
- +26 SET VALMCNT=VALMCNT+1
- +27 DO SET^VALM10(VALMCNT,LINE,LINE)
- +28 SET ^TMP("IBCNILKSIX",$JOB,ICTR)=IIEN
- End DoDot:2
- if IIEN=""
- QUIT
- End DoDot:1
- if NM=""
- QUIT
- +29 ;
- +30 IF VALMCNT=0
- Begin DoDot:1
- +31 SET ^TMP("IBCNILK",$JOB,1,0)="No Selected Insurance Companies were found."
- End DoDot:1
- +32 QUIT
- +33 ;
- EXIT2 ;EP for Show Selections
- +1 ; Exit code
- +2 ; Input: None
- +3 KILL ^TMP("IBCNILKS",$JOB),^TMP("IBCNILKSIX",$JOB)
- +4 DO CLEAR^VALM1
- +5 QUIT
- +6 ;