FBUTL135 ;DSS/LJF - FEE BASIS UTILITY FOR UNIQUE CLAIM ID - FEE5010 ;3/23/2012
;;3.5;FEE BASIS;**135,166**;JAN 30, 1995;Build 7
;;Per VA Directive 6402, this routine should not be modified.
;
Q
UCLAIMNO(FBSTA,FBSRC,FBINT,FBCLT,FBCLAIMS) ; Unique Claim Identifier for patch 135
N FBFDA,FBHELD,FBYEAR,FBINTDF,FBCLTDF,FBSRCDF,FBSTADF
; Input: FBSTA = Station
; FBSRC = Source
; FBINT = Initiation Type
; FBCLT = Claim Type
; FBCLAIMS = FPPS CLAIM ID - replaces sequence number
; Output: 21 character string composed of the following characters:
; 1-5 5 Character Station ID - left justified with trailing Zero's
; 6 1 Character Source - 1=Fee, 2=FBCS, 3=VAPM, 4-9 - Future Use, default is 1
; 7 1 character Initiation Type - (S)canned, (E)DI, (M)anual ; default is M
; 8 1 Character Claim Type - (I)nstitutional, (P)rofessional, (D)ental, (N)on-Standard ; default is N
; 9-12 4 digit year
; 13 1 character "-"
; 14-28 15 character SEQUENCE NUMBER unique to the year - reinitialized when year changes
; or: the number supplied in FBCLAIMS - NOTE: this value will be limited to 15 digits
; UCID example without FBCLAIMS supplied : 500001MN2012-291
;
S FBSRCDF="1",FBINTDF="M",FBCLTDF="N",FBCLAIMS=$G(FBCLAIMS) ; Defaults
S FBSTA=$E($S($G(FBSTA)]"":FBSTA,1:$$STATION)_"00000",1,5) ; Station
; Get first non space character for each input string;
S FBSRC=$E($S(+$G(FBSRC):+FBSRC,1:FBSRCDF),1) ; Source
S FBINT=$E($TR($G(FBINT,FBINTDF)," ")),FBINT=$S(FBINT="":FBINTDF,"SEM"[FBINT:FBINT,1:FBINTDF) ; Initiation Type
S FBCLT=$E($TR($G(FBCLT,FBCLTDF)," ")),FBCLT=$S(FBCLT="":FBCLTDF,"IPDN"[FBCLT:FBCLT,1:FBCLTDF) ; Claim Type
I FBCLAIMS="" S FBCLAIMS=$$CLAIMNO ; Generate Claim number if needed
Q (FBSTA_FBSRC_FBINT_FBCLT_$E(FBCLAIMS,1,20))
;
CLAIMNO() ; Return the value of field 39: UNIQUE CLAIM IDENTIFIER SEQ from file 161.4: FEE BASIS SITE PARAMETERS - incremented by one
N FBCLAIMS,FBYEAR
S FBCLAIMS=$E($TR($$NOW^XLFDT,".")_"000000000",1,15) ;default if can't lock global
; Lock the global node and set sequence number
F FBHELD=1:1:10 L +^FBAA(161.4,1,2):$G(DILOCTM,3) I D L -^FBAA(161.4,1,2) Q
. S FBCLAIMS=$$GET1^DIQ(161.4,1,39,"I"),FBYEAR=+$P($$HTE^XLFDT($H)," ",3)
. I FBYEAR'=$P(FBCLAIMS,"-") S FBCLAIMS="-0" ;reinit sequence when year changes
. S FBCLAIMS=FBYEAR_"-"_(1+$P(FBCLAIMS,"-",2))
. S FBFDA(161.4,"1,",39)=FBCLAIMS D FILE^DIE(,"FBFDA") ; increment and file
Q FBCLAIMS
;
VALIDATE(TYPE,UCID) ;
N VALID,FBSTA,FBSRC,FBINT,FBCLMT
S VALID=0
I TYPE="I" D Q VALID
. I $L(UCID)<14 Q ; needs to be at least 14 characters long
. S FBSTA=$E(UCID,1,5)
. S FBSRC=$E(UCID,6)
. S FBINT=$E(UCID,7)
. S FBCLMT=$E(UCID,8)
. S $E(UCID,1,8)=""
. I FBSRC,"SEM"[FBINT,FBCLMT="I",UCID?4N1"-"1.15N S VALID=1
I TYPE="O" D Q VALID
. I $L(UCID)<14 Q ; needs to be at least 14 characters long
. S FBSTA=$E(UCID,1,5)
. S FBSRC=$E(UCID,6)
. S FBINT=$E(UCID,7)
. S FBCLMT=$E(UCID,8)
. S $E(UCID,1,8)=""
. I FBSRC,"SEM"[FBINT,"PDN"[FBCLMT,UCID?4N1"-"1.15N S VALID=1
Q VALID
;
STATION() ; Set station
N FBAASN,FBPOP,FBSITE,FBSN,FB
D STATION^FBAAUTL S FBSN=$E(FBSN_"00000",1,5)
Q FBSN
;
INVUCID(FBAAIN,FBSTA,FBSRC,FBINTYP,FBCLAIMS) ; populates file 162.5 field UCID and returns UCID
N UCID,FBDAT,FBMSG,FBCLTYP
;FBAAIN = IEN of entry in file 162.5
;FBSTA = Station ID
;FBSRC = Source - 1=Fee, 2=FBCS, 3=VAPM, 4-9 - Future Use
;FBINTYP = Initiation Type - (S)canned, (E)DI, (M)anual
;FBCLAIMS = Claim Number in format YYYY-nnnn format
;
S UCID="-1",FBCLTYP="I" ;- Claim Type is always - 'I'nstitution - for this API
I $G(FBAAIN),$G(FBSTA)]"",$G(FBSRC)]"",$G(FBINTYP)]"",$G(FBCLAIMS)]"" ; Validate all input parameters populated
E D Q UCID
. S:'$G(FBAAIN) UCID=UCID_U_"UNDEFINED INVOICE IEN" S:$G(FBSTA)="" UCID=UCID_U_"UNDEFINED STATION"
. S:$G(FBSRC)="" UCID=UCID_U_"UNDEFINED SOURCE" S:$G(FBINTYP)="" UCID=UCID_U_"UNDEFINED INITIATION TYPE"
. S:$G(FBCLAIMS)="" UCID=UCID_U_"UNDEFINED CLAIM NUMBER"
; Validate paramaters contain acceptable values
I $L(FBSTA)<3 S UCID=UCID_U_"INVALID STATION PARAMETER"
I FBSRC,FBSRC?1N
E S UCID=UCID_U_"INVALID SOURCE PARAMETER"
I "SEM"[FBINTYP,$L(FBINTYP)=1
E S UCID=UCID_U_"INVALID INITIATION TYPE PARAMETER"
I FBCLAIMS'?4N1"-"1.15N S UCID=UCID_U_"INVALID CLAIM NUMBER PARAMETER"
I '$D(^FBAAI(FBAAIN)) S UCID=UCID_U_"INVALID ENTRY IN FILE 162.5: "_$NA(^FBAAI(FBAAIN))
I $L(UCID)>2 Q UCID
; parameters passed muster
S UCID=$$UCLAIMNO(FBSTA,FBSRC,FBINTYP,FBCLTYP,FBCLAIMS)
S FBDAT(162.5,FBAAIN_",",85)=UCID
D FILE^DIE(,"FBDAT","FBMSG")
I $D(FBMSG("DIERR")) S UCID="-1^"_"DIERR TEXT: "_$G(FBMSG("DIERR","1","TEXT",1))_$NA(^FBAAI(FBAAIN))_"^UCID: "_UCID
Q UCID
;
PAYUCID(DFN,FBV,FBSDI,FBAACPI,FBSTA,FBSRC,FBINTYP,FBCLTYP,FBCLAIMS) ;populates file 162 field UCID and returns UCID - Outpatient
N C,UCID,FBDAT,FBMSG
;DFN = IEN of PATIENT in 162
;FBV = IEN of VENDOR in 162
;FBSDI = IEN of INITIAL TREATMENT DATE multiple in 162
;FBAACPI = IEN of SERVICE PROVIDED multiple in 162
;FBSTA = Station ID
;FBSRC = Source - 1=Fee, 2=FBCS, 3=VAPM, 4-9 - Future Use
;FBINTYP = Initiation Type - (S)canned, (E)DI, (M)anual
;FBCLTYP = Claim Type - (I)nstitutional, (P)rofessional, (D)ental, (N)on-Standard
;FBCLAIMS = Claim Number in format YYYY-nnnn format
;
S C=",",UCID="-1"
I $G(DFN),$G(FBV),$G(FBSDI),$G(FBAACPI),$G(FBSTA)]"",$G(FBSRC),$G(FBINTYP)]"",$G(FBCLTYP)]"",$G(FBCLAIMS)]"" ; Validate all input parameters populated
E D Q UCID
. S:'$G(DFN) UCID=UCID_U_"UNDEFINED IEN of PATIENT" S:'$G(FBV) UCID=UCID_U_"UNDEFINED IEN of VENDOR"
. S:'$G(FBSDI) UCID=UCID_U_"UNDEFINED IEN of INITIAL TREATMENT DATE" S:'$G(FBAACPI) UCID=UCID_U_"UNDEFINED IEN of SERVICE PROVIDED"
. S:$G(FBSTA)="" UCID=UCID_U_"UNDEFINED STATION" S:'$G(FBSRC) UCID=UCID_U_"UNDEFINED SOURCE VALUE"
. S:$G(FBINTYP)="" UCID=UCID_U_"UNDEFINED INITIATION TYPE" S:$G(FBCLTYP)="" UCID=UCID_U_"UNDEFINED CLAIM TYPE"
. S:$G(FBCLAIMS)="" UCID=UCID_U_"UNDEFINED CLAIM NUMBER"
; Validate paramaters contain acceptable values
I $L(FBSTA)<3 S UCID=UCID_U_"INVALID STATION PARAMETER"
I FBSRC,FBSRC?1N
E S UCID=UCID_U_"INVALID SOURCE PARAMETER"
I "SEM"[FBINTYP,$L(FBINTYP)=1
E S UCID=UCID_U_"INVALID INITIATION TYPE PARAMETER"
I "PDN"[FBCLTYP,$L(FBCLTYP)=1
E S UCID=UCID_U_"INVALID CLAIM TYPE PARAMETER"
I FBCLAIMS'?4N1"-"1.15NUL S UCID=UCID_U_"INVALID CLAIM NUMBER PARAMETER"
I '$D(^FBAAC(DFN,1,FBV,1,FBSDI,1,FBAACPI)) S UCID=UCID_U_"INVALID ENTRY IN FILE 162: "_$NA(^FBAAC(DFN,1,FBV,1,FBSDI,1,FBAACPI))
I $L(UCID)>2 Q UCID
; parameters passed muster
S UCID=$$UCLAIMNO(FBSTA,FBSRC,FBINTYP,FBCLTYP,FBCLAIMS)
S FBDAT(162.03,FBAACPI_C_FBSDI_C_FBV_C_DFN_C,81)=UCID
D FILE^DIE(,"FBDAT","FBMSG")
I $D(FBMSG("DIERR")) S UCID="-1^"_"DIERR TEXT: "_$G(FBMSG("DIERR","1","TEXT",1))_$NA(^FBAAC(DFN,1,FBV,1,FBSDI,1,FBAACPI))_"^UCID: "_UCID
Q UCID
;
OCLMTYP(FBCURVAL) ; Get Outpatient Claim Type from the user
N DIR,X,Y,DTOUT,DUOUT,DIRUT,DTOCNT
S FBCURVAL=$G(FBCURVAL) I $G(FBCURVAL)]"","PDN"[FBCURVAL S DIR("B")=FBCURVAL
S DIR(0)="SO^P:P;D:D;N:N"
S DIR("L",1)="Select the Claim Type:"
S DIR("L",2)=""
S DIR("L")=" P - Professional, D - Dental, N - Non-Standard"
S DTOCNT=0
F D ^DIR D Q:Y]""
. I $G(DTOUT) S Y=$S(FBCURVAL]"":FBCURVAL,1:"N") Q ; time out - set to "N"on-standard if no current value exists
. I Y="" W !!,"This is a required response." Q
. I Y="^" S Y="" W !!,"This is a required response. '^' is not allowed." K DUOUT Q
. I Y="^^" S Y="" W !!,"This is a required response. '^' is not allowed." K DUOUT Q
. I Y]"","PDN"[Y Q
. S Y="" W !,"Enter a code from the list."
Q Y
;
UCIDUTL() ;EP for TEST report to validate UCID information for FB PATCH 135
;
N DIR,FBQUIT,Y,FBSTG1,FBSRVC,FBPROG,FBID,DA,DUOUT,DIRUT,DTOUT,FBDONE
;
S FBQUIT=0
S FBDONE=0
;
I $G(DUZ(2))="" D
.W !,"DUZ NOT IDENTIFIED - PLEASE LOG IN BEFORE USING FB 135 TESTING UTILTIES"
.S FBDONE=1
;
D CLEAR()
W !,?5,"FEE BASIS PATCH 135 UNIQUE CLAIM IDENTIFIER DISPLAY"
F Q:FBDONE D
.S DIR("A",1)="Select the UCID REPORT or the PROGRAM you are testing"
.S DIR("A",2)="ENTER '^' or leave blank to EXIT"
.S DIR("A")="SELECT"
.S DIR(0)="SO^1:Outpatient and Inpatient UCID Display by Date Range Report"
.S DIR(0)=DIR(0)_";3:Outpatient UCID Screen Display"
.S DIR(0)=DIR(0)_";9:Inpatient UCID Screen Display"
.S DIR("B")=""
.D ^DIR
.K DIR("A")
.I $D(DUOUT) S FBDONE=1 ;DEFINED IF USER ENTERS ONE UP ARROW
.I $D(DIRUT) S FBDONE=1 ;DEFINED IF USER ENTERS TWO UP ARROWS
.I $D(DTOUT) S FBDONE=1 ;DEFINED IF USER TIMES OUT
.I '+Y S FBDONE=1
.Q:FBDONE
.S FBPROG=+Y
.I FBPROG=1 D UCIDRPT()
.I FBPROG=9 D ;INPATIENT
..S FBQUIT=0
..F Q:FBQUIT D
...S DIC=162.5 ;162.5 -- FEE BASIS INVOICE FILE
...S DIC(0)="AE"
...;S DIC("S")="I $P(^(0),U,9)="""""
...D ^DIC
...I $D(DUOUT) S FBQUIT=1
...I $D(DIRUT) S FBQUIT=1
...I $D(DTOUT) S FBQUIT=1
...I Y<0 S FBQUIT=1
...Q:FBQUIT
...I (Y>0) D
....;W !,"UCID: "_$P($G(^FBAAI(+Y,5)),U,5)
....S FBIEN=$P(Y,U,2)
....S FBNODE=^FBAAI(FBIEN,0)
....S FBDATE=$P(FBNODE,U,2)
....S FBVET=$P(FBNODE,U,4) ;POINTER TO 161 - FEE BASIS PATIENT
....S FBPAT=$P(^FBAAA(FBVET,0),U,1) ;POINTER TO FILE 2 - PATIENT
....S FBVNDR=$P(FBNODE,U,3) ;POINTER TO FB VENDOR FILE
....S Y=FBDATE
....D DD^%DT
....W !,$P(^DPT(FBPAT,0),U,1)_" "_$P(^FBAAV(FBVNDR,0),U,1)_" "_Y
....W !?10,"UCID: "_$P($G(^FBAAI(FBIEN,5)),U,5)
....H:('FBDONE)&('FBQUIT) 3
...W !!
.I FBPROG=3 D ;OUTPATIENT
..S FBQUIT=0
..F Q:FBQUIT D
...S DIC="^FBAAC(" ; 162 -- FEE BASIS PAYMENT FILE
...S DIC(0)="AE" ;
...D ^DIC ;PATIENT SELECTION
...I $D(DUOUT) S FBQUIT=1
...I $D(DIRUT) S FBQUIT=1
...I $D(DTOUT) S FBQUIT=1
...Q:FBQUIT
...S DA(1)=+Y
...Q:'+$O(^FBAAC(DA(1),1,0))
...S DIC="^FBAAC("_DA(1)_",1,"
...D ^DIC
...I $D(DUOUT) S FBQUIT=1
...I $D(DIRUT) S FBQUIT=1
...I $D(DTOUT) S FBQUIT=1
...Q:FBQUIT
...I +Y<0 W !,"No Fee Basis Invoice Vendors found for this patient!" Q
...S DA(2)=DA(1)
...S DA(1)=+Y
...Q:'+$O(^FBAAC(DA(2),1,DA(1),1,0))
...S DIC="^FBAAC("_DA(2)_",1,"_DA(1)_",1," ;INITIAL TREATMENT DATE SELECTION
...D ^DIC
...I $D(DUOUT) S FBQUIT=1
...I $D(DIRUT) S FBQUIT=1
...I $D(DTOUT) S FBQUIT=1
...Q:FBQUIT
...I +Y<0 W !,"No Fee Basis Invoice DATE OF SERVICE found for this Vendor!" Q
...S DA(3)=DA(2)
...S DA(2)=DA(1)
...S DA(1)=+Y
...Q:'+$O(^FBAAC(DA(3),1,DA(2),1,DA(1),1,0))
...S FBSRVC=0
...F S FBSRVC=$O(^FBAAC(DA(3),1,DA(2),1,DA(1),1,FBSRVC)) Q:'+FBSRVC D
....S FBPNTR=$P($G(^FBAAC(DA(3),1,DA(2),1,DA(1),1,FBSRVC,0)),U,1) ;POINTER TO 81 - CPT FILE
....W !,"SERVICE: ",$P($$CPT^ICPTCOD(FBPNTR),U,2)," ",$P($$CPT^ICPTCOD(FBPNTR),U,3),?50,"UCID: "_$P($G(^FBAAC(DA(3),1,DA(2),1,DA(1),1,FBSRVC,5)),U,5) ;FB*3.5*166 - Update direct global reads of 81 file to API
...H:('FBDONE)&('FBQUIT) 3
...W !!
.D CLEAR()
Q
CLEAR() ;CLEAR SCREEN
N FBLINE
F FBLINE=1:1:10 W !
Q
UCIDRPT() ;PROVIDES A REPORT OF ALL UCIDS IN THE SYSTEM FOR A DATE RANGE
;
N DIR,FBQUIT,FBSTRT,FBEND,Y,FBSDATE,FBEDATE,FBDATE,FBINTLDT,FBPAT
S FBQUIT=0
S Y=DT
D DD^%DT
S FBTODAY=Y
S DIR("A")="Enter the START DATE for UCID report"
S DIR(0)="D"
S DIR("B")=FBTODAY
D ^DIR
I $D(DUOUT) S FBQUIT=1
I $D(DIRUT) S FBQUIT=1
I $D(DTOUT) S FBQUIT=1
S FBSTRT=Y
I 'FBQUIT D
.S DIR("A")="Enter the END DATE for UCID report"
.S DIR(0)="D"
.S DIR("B")=FBTODAY
.D ^DIR
.I $D(DUOUT) S FBQUIT=1
.I $D(DIRUT) S FBQUIT=1
.I $D(DTOUT) S FBQUIT=1
.S FBEND=Y
I 'FBQUIT D
.D ^%ZIS
.I 'POP D
..U IO
..S Y=FBSTRT
..D DD^%DT
..S FBSDATE=Y
..S Y=FBEND
..D DD^%DT
..S FBEDATE=Y
..W !,"OUTPATIENT INVOICES INITIAL SERVICES FROM: ",FBSDATE," TO: "_FBEDATE
..D OUTDSPLY(FBSTRT,FBEND)
..W !!,"CIVIL HOSPITAL INVOICES DATE RECEIVED FROM: ",FBSDATE," TO: "_FBEDATE
..D INDSPLY(FBSTRT,FBEND)
.D ^%ZISC
Q
OUTDSPLY(FBSTRT,FBEND) ;DISPLAY OUTPATIENT UCID INFORMATION FOR A DATE RANGE
; INPUT : FBSTRT : A FM DATE REPRESENTING THE STARTING DATE FOR REPORT
; FBEND : A FM DATE REPRESENTING THE ENDING DATE FOR REPORT
;
N FBIEN,FBVNDR,FBINTLDT,FBSRVC,FBSNUM
S FBIEN=0
F S FBIEN=$O(^FBAAC(FBIEN)) Q:'+FBIEN D
.S FBVNDR=0
.F S FBVNDR=$O(^FBAAC(FBIEN,1,FBVNDR)) Q:'+FBVNDR D
..S FBINTLDT=0
..F S FBINTLDT=$O(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT)) Q:'+FBINTLDT D
...S FBDATE=$P(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT,0),U,1)
...I (FBSTRT<=FBDATE)&(FBDATE<=FBEND) D
....W !
....;NOW PRINT OUT PATIENT NAME, VENDOR NAME, TREATMENT DATE, AND EACH SERVICE AND UCID
....S Y=FBDATE
....D DD^%DT
....W !,$P(^DPT(FBIEN,0),U,1)_" "_$P(^FBAAV(FBVNDR,0),U,1)_" "_Y
....S FBSNUM=0
....F S FBSNUM=$O(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT,1,FBSNUM)) Q:'+FBSNUM D
.....S FBSRVC=$P(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT,1,FBSNUM,0),U,1)
.....W !,"SERVICE: ",$P($$CPT^ICPTCOD(FBSRVC),U,2)," ",$P($$CPT^ICPTCOD(FBSRVC),U,3),?50,"UCID: "_$P($G(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT,1,FBSNUM,5)),U,5) ;FB*3.5*166 - Update direct global reads of 81 file to API
Q
;
INDSPLY(FBSTRT,FBEND) ;DISPLAY CIVIL HOSPITAL UCID INFORMATION FOR A DATE RANGE
; INPUT : FBSTRT : A FM DATE REPRESENTING THE STARTING DATE FOR REPORT
; FBEND : A FM DATE REPRESENTING THE ENDING DATE FOR REPORT
N FBIEN,DBDATE,FBVET,FBPAT,FBVNDR
S FBIEN=0
F S FBIEN=$O(^FBAAI(FBIEN)) Q:'+FBIEN D
.S FBNODE=^FBAAI(FBIEN,0)
.S FBDATE=$P(FBNODE,U,2)
.I (FBSTRT<=FBDATE)&(FBDATE<=FBEND) D
..W !
..S FBVET=$P(FBNODE,U,4) ;POINTER TO 161
..S FBPAT=$P(^FBAAA(FBVET,0),U,1) ;POINTER TO FILE 2
..S FBVNDR=$P(FBNODE,U,3)
..S Y=FBDATE
..D DD^%DT
..W !,$P(FBNODE,U,1)_" "_$P(^DPT(FBPAT,0),U,1)_" "_$P(^FBAAV(FBVNDR,0),U,1)_" "_Y
..W !?10,"UCID: "_$P($G(^FBAAI(FBIEN,5)),U,5)
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFBUTL135 14176 printed Oct 16, 2024@18:01:31 Page 2
FBUTL135 ;DSS/LJF - FEE BASIS UTILITY FOR UNIQUE CLAIM ID - FEE5010 ;3/23/2012
+1 ;;3.5;FEE BASIS;**135,166**;JAN 30, 1995;Build 7
+2 ;;Per VA Directive 6402, this routine should not be modified.
+3 ;
+4 QUIT
UCLAIMNO(FBSTA,FBSRC,FBINT,FBCLT,FBCLAIMS) ; Unique Claim Identifier for patch 135
+1 NEW FBFDA,FBHELD,FBYEAR,FBINTDF,FBCLTDF,FBSRCDF,FBSTADF
+2 ; Input: FBSTA = Station
+3 ; FBSRC = Source
+4 ; FBINT = Initiation Type
+5 ; FBCLT = Claim Type
+6 ; FBCLAIMS = FPPS CLAIM ID - replaces sequence number
+7 ; Output: 21 character string composed of the following characters:
+8 ; 1-5 5 Character Station ID - left justified with trailing Zero's
+9 ; 6 1 Character Source - 1=Fee, 2=FBCS, 3=VAPM, 4-9 - Future Use, default is 1
+10 ; 7 1 character Initiation Type - (S)canned, (E)DI, (M)anual ; default is M
+11 ; 8 1 Character Claim Type - (I)nstitutional, (P)rofessional, (D)ental, (N)on-Standard ; default is N
+12 ; 9-12 4 digit year
+13 ; 13 1 character "-"
+14 ; 14-28 15 character SEQUENCE NUMBER unique to the year - reinitialized when year changes
+15 ; or: the number supplied in FBCLAIMS - NOTE: this value will be limited to 15 digits
+16 ; UCID example without FBCLAIMS supplied : 500001MN2012-291
+17 ;
+18 ; Defaults
SET FBSRCDF="1"
SET FBINTDF="M"
SET FBCLTDF="N"
SET FBCLAIMS=$GET(FBCLAIMS)
+19 ; Station
SET FBSTA=$EXTRACT($SELECT($GET(FBSTA)]"":FBSTA,1:$$STATION)_"00000",1,5)
+20 ; Get first non space character for each input string;
+21 ; Source
SET FBSRC=$EXTRACT($SELECT(+$GET(FBSRC):+FBSRC,1:FBSRCDF),1)
+22 ; Initiation Type
SET FBINT=$EXTRACT($TRANSLATE($GET(FBINT,FBINTDF)," "))
SET FBINT=$SELECT(FBINT="":FBINTDF,"SEM"[FBINT:FBINT,1:FBINTDF)
+23 ; Claim Type
SET FBCLT=$EXTRACT($TRANSLATE($GET(FBCLT,FBCLTDF)," "))
SET FBCLT=$SELECT(FBCLT="":FBCLTDF,"IPDN"[FBCLT:FBCLT,1:FBCLTDF)
+24 ; Generate Claim number if needed
IF FBCLAIMS=""
SET FBCLAIMS=$$CLAIMNO
+25 QUIT (FBSTA_FBSRC_FBINT_FBCLT_$EXTRACT(FBCLAIMS,1,20))
+26 ;
CLAIMNO() ; Return the value of field 39: UNIQUE CLAIM IDENTIFIER SEQ from file 161.4: FEE BASIS SITE PARAMETERS - incremented by one
+1 NEW FBCLAIMS,FBYEAR
+2 ;default if can't lock global
SET FBCLAIMS=$EXTRACT($TRANSLATE($$NOW^XLFDT,".")_"000000000",1,15)
+3 ; Lock the global node and set sequence number
+4 FOR FBHELD=1:1:10
LOCK +^FBAA(161.4,1,2):$GET(DILOCTM,3)
IF $TEST
Begin DoDot:1
+5 SET FBCLAIMS=$$GET1^DIQ(161.4,1,39,"I")
SET FBYEAR=+$PIECE($$HTE^XLFDT($HOROLOG)," ",3)
+6 ;reinit sequence when year changes
IF FBYEAR'=$PIECE(FBCLAIMS,"-")
SET FBCLAIMS="-0"
+7 SET FBCLAIMS=FBYEAR_"-"_(1+$PIECE(FBCLAIMS,"-",2))
+8 ; increment and file
SET FBFDA(161.4,"1,",39)=FBCLAIMS
DO FILE^DIE(,"FBFDA")
End DoDot:1
LOCK -^FBAA(161.4,1,2)
QUIT
+9 QUIT FBCLAIMS
+10 ;
VALIDATE(TYPE,UCID) ;
+1 NEW VALID,FBSTA,FBSRC,FBINT,FBCLMT
+2 SET VALID=0
+3 IF TYPE="I"
Begin DoDot:1
+4 ; needs to be at least 14 characters long
IF $LENGTH(UCID)<14
QUIT
+5 SET FBSTA=$EXTRACT(UCID,1,5)
+6 SET FBSRC=$EXTRACT(UCID,6)
+7 SET FBINT=$EXTRACT(UCID,7)
+8 SET FBCLMT=$EXTRACT(UCID,8)
+9 SET $EXTRACT(UCID,1,8)=""
+10 IF FBSRC
IF "SEM"[FBINT
IF FBCLMT="I"
IF UCID?4N1"-"1.15N
SET VALID=1
End DoDot:1
QUIT VALID
+11 IF TYPE="O"
Begin DoDot:1
+12 ; needs to be at least 14 characters long
IF $LENGTH(UCID)<14
QUIT
+13 SET FBSTA=$EXTRACT(UCID,1,5)
+14 SET FBSRC=$EXTRACT(UCID,6)
+15 SET FBINT=$EXTRACT(UCID,7)
+16 SET FBCLMT=$EXTRACT(UCID,8)
+17 SET $EXTRACT(UCID,1,8)=""
+18 IF FBSRC
IF "SEM"[FBINT
IF "PDN"[FBCLMT
IF UCID?4N1"-"1.15N
SET VALID=1
End DoDot:1
QUIT VALID
+19 QUIT VALID
+20 ;
STATION() ; Set station
+1 NEW FBAASN,FBPOP,FBSITE,FBSN,FB
+2 DO STATION^FBAAUTL
SET FBSN=$EXTRACT(FBSN_"00000",1,5)
+3 QUIT FBSN
+4 ;
INVUCID(FBAAIN,FBSTA,FBSRC,FBINTYP,FBCLAIMS) ; populates file 162.5 field UCID and returns UCID
+1 NEW UCID,FBDAT,FBMSG,FBCLTYP
+2 ;FBAAIN = IEN of entry in file 162.5
+3 ;FBSTA = Station ID
+4 ;FBSRC = Source - 1=Fee, 2=FBCS, 3=VAPM, 4-9 - Future Use
+5 ;FBINTYP = Initiation Type - (S)canned, (E)DI, (M)anual
+6 ;FBCLAIMS = Claim Number in format YYYY-nnnn format
+7 ;
+8 ;- Claim Type is always - 'I'nstitution - for this API
SET UCID="-1"
SET FBCLTYP="I"
+9 ; Validate all input parameters populated
IF $GET(FBAAIN)
IF $GET(FBSTA)]""
IF $GET(FBSRC)]""
IF $GET(FBINTYP)]""
IF $GET(FBCLAIMS)]""
+10 IF '$TEST
Begin DoDot:1
+11 if '$GET(FBAAIN)
SET UCID=UCID_U_"UNDEFINED INVOICE IEN"
if $GET(FBSTA)=""
SET UCID=UCID_U_"UNDEFINED STATION"
+12 if $GET(FBSRC)=""
SET UCID=UCID_U_"UNDEFINED SOURCE"
if $GET(FBINTYP)=""
SET UCID=UCID_U_"UNDEFINED INITIATION TYPE"
+13 if $GET(FBCLAIMS)=""
SET UCID=UCID_U_"UNDEFINED CLAIM NUMBER"
End DoDot:1
QUIT UCID
+14 ; Validate paramaters contain acceptable values
+15 IF $LENGTH(FBSTA)<3
SET UCID=UCID_U_"INVALID STATION PARAMETER"
+16 IF FBSRC
IF FBSRC?1N
+17 IF '$TEST
SET UCID=UCID_U_"INVALID SOURCE PARAMETER"
+18 IF "SEM"[FBINTYP
IF $LENGTH(FBINTYP)=1
+19 IF '$TEST
SET UCID=UCID_U_"INVALID INITIATION TYPE PARAMETER"
+20 IF FBCLAIMS'?4N1"-"1.15N
SET UCID=UCID_U_"INVALID CLAIM NUMBER PARAMETER"
+21 IF '$DATA(^FBAAI(FBAAIN))
SET UCID=UCID_U_"INVALID ENTRY IN FILE 162.5: "_$NAME(^FBAAI(FBAAIN))
+22 IF $LENGTH(UCID)>2
QUIT UCID
+23 ; parameters passed muster
+24 SET UCID=$$UCLAIMNO(FBSTA,FBSRC,FBINTYP,FBCLTYP,FBCLAIMS)
+25 SET FBDAT(162.5,FBAAIN_",",85)=UCID
+26 DO FILE^DIE(,"FBDAT","FBMSG")
+27 IF $DATA(FBMSG("DIERR"))
SET UCID="-1^"_"DIERR TEXT: "_$GET(FBMSG("DIERR","1","TEXT",1))_$NAME(^FBAAI(FBAAIN))_"^UCID: "_UCID
+28 QUIT UCID
+29 ;
PAYUCID(DFN,FBV,FBSDI,FBAACPI,FBSTA,FBSRC,FBINTYP,FBCLTYP,FBCLAIMS) ;populates file 162 field UCID and returns UCID - Outpatient
+1 NEW C,UCID,FBDAT,FBMSG
+2 ;DFN = IEN of PATIENT in 162
+3 ;FBV = IEN of VENDOR in 162
+4 ;FBSDI = IEN of INITIAL TREATMENT DATE multiple in 162
+5 ;FBAACPI = IEN of SERVICE PROVIDED multiple in 162
+6 ;FBSTA = Station ID
+7 ;FBSRC = Source - 1=Fee, 2=FBCS, 3=VAPM, 4-9 - Future Use
+8 ;FBINTYP = Initiation Type - (S)canned, (E)DI, (M)anual
+9 ;FBCLTYP = Claim Type - (I)nstitutional, (P)rofessional, (D)ental, (N)on-Standard
+10 ;FBCLAIMS = Claim Number in format YYYY-nnnn format
+11 ;
+12 SET C=","
SET UCID="-1"
+13 ; Validate all input parameters populated
IF $GET(DFN)
IF $GET(FBV)
IF $GET(FBSDI)
IF $GET(FBAACPI)
IF $GET(FBSTA)]""
IF $GET(FBSRC)
IF $GET(FBINTYP)]""
IF $GET(FBCLTYP)]""
IF $GET(FBCLAIMS)]""
+14 IF '$TEST
Begin DoDot:1
+15 if '$GET(DFN)
SET UCID=UCID_U_"UNDEFINED IEN of PATIENT"
if '$GET(FBV)
SET UCID=UCID_U_"UNDEFINED IEN of VENDOR"
+16 if '$GET(FBSDI)
SET UCID=UCID_U_"UNDEFINED IEN of INITIAL TREATMENT DATE"
if '$GET(FBAACPI)
SET UCID=UCID_U_"UNDEFINED IEN of SERVICE PROVIDED"
+17 if $GET(FBSTA)=""
SET UCID=UCID_U_"UNDEFINED STATION"
if '$GET(FBSRC)
SET UCID=UCID_U_"UNDEFINED SOURCE VALUE"
+18 if $GET(FBINTYP)=""
SET UCID=UCID_U_"UNDEFINED INITIATION TYPE"
if $GET(FBCLTYP)=""
SET UCID=UCID_U_"UNDEFINED CLAIM TYPE"
+19 if $GET(FBCLAIMS)=""
SET UCID=UCID_U_"UNDEFINED CLAIM NUMBER"
End DoDot:1
QUIT UCID
+20 ; Validate paramaters contain acceptable values
+21 IF $LENGTH(FBSTA)<3
SET UCID=UCID_U_"INVALID STATION PARAMETER"
+22 IF FBSRC
IF FBSRC?1N
+23 IF '$TEST
SET UCID=UCID_U_"INVALID SOURCE PARAMETER"
+24 IF "SEM"[FBINTYP
IF $LENGTH(FBINTYP)=1
+25 IF '$TEST
SET UCID=UCID_U_"INVALID INITIATION TYPE PARAMETER"
+26 IF "PDN"[FBCLTYP
IF $LENGTH(FBCLTYP)=1
+27 IF '$TEST
SET UCID=UCID_U_"INVALID CLAIM TYPE PARAMETER"
+28 IF FBCLAIMS'?4N1"-"1.15NUL
SET UCID=UCID_U_"INVALID CLAIM NUMBER PARAMETER"
+29 IF '$DATA(^FBAAC(DFN,1,FBV,1,FBSDI,1,FBAACPI))
SET UCID=UCID_U_"INVALID ENTRY IN FILE 162: "_$NAME(^FBAAC(DFN,1,FBV,1,FBSDI,1,FBAACPI))
+30 IF $LENGTH(UCID)>2
QUIT UCID
+31 ; parameters passed muster
+32 SET UCID=$$UCLAIMNO(FBSTA,FBSRC,FBINTYP,FBCLTYP,FBCLAIMS)
+33 SET FBDAT(162.03,FBAACPI_C_FBSDI_C_FBV_C_DFN_C,81)=UCID
+34 DO FILE^DIE(,"FBDAT","FBMSG")
+35 IF $DATA(FBMSG("DIERR"))
SET UCID="-1^"_"DIERR TEXT: "_$GET(FBMSG("DIERR","1","TEXT",1))_$NAME(^FBAAC(DFN,1,FBV,1,FBSDI,1,FBAACPI))_"^UCID: "_UCID
+36 QUIT UCID
+37 ;
OCLMTYP(FBCURVAL) ; Get Outpatient Claim Type from the user
+1 NEW DIR,X,Y,DTOUT,DUOUT,DIRUT,DTOCNT
+2 SET FBCURVAL=$GET(FBCURVAL)
IF $GET(FBCURVAL)]""
IF "PDN"[FBCURVAL
SET DIR("B")=FBCURVAL
+3 SET DIR(0)="SO^P:P;D:D;N:N"
+4 SET DIR("L",1)="Select the Claim Type:"
+5 SET DIR("L",2)=""
+6 SET DIR("L")=" P - Professional, D - Dental, N - Non-Standard"
+7 SET DTOCNT=0
+8 FOR
DO ^DIR
Begin DoDot:1
+9 ; time out - set to "N"on-standard if no current value exists
IF $GET(DTOUT)
SET Y=$SELECT(FBCURVAL]"":FBCURVAL,1:"N")
QUIT
+10 IF Y=""
WRITE !!,"This is a required response."
QUIT
+11 IF Y="^"
SET Y=""
WRITE !!,"This is a required response. '^' is not allowed."
KILL DUOUT
QUIT
+12 IF Y="^^"
SET Y=""
WRITE !!,"This is a required response. '^' is not allowed."
KILL DUOUT
QUIT
+13 IF Y]""
IF "PDN"[Y
QUIT
+14 SET Y=""
WRITE !,"Enter a code from the list."
End DoDot:1
if Y]""
QUIT
+15 QUIT Y
+16 ;
UCIDUTL() ;EP for TEST report to validate UCID information for FB PATCH 135
+1 ;
+2 NEW DIR,FBQUIT,Y,FBSTG1,FBSRVC,FBPROG,FBID,DA,DUOUT,DIRUT,DTOUT,FBDONE
+3 ;
+4 SET FBQUIT=0
+5 SET FBDONE=0
+6 ;
+7 IF $GET(DUZ(2))=""
Begin DoDot:1
+8 WRITE !,"DUZ NOT IDENTIFIED - PLEASE LOG IN BEFORE USING FB 135 TESTING UTILTIES"
+9 SET FBDONE=1
End DoDot:1
+10 ;
+11 DO CLEAR()
+12 WRITE !,?5,"FEE BASIS PATCH 135 UNIQUE CLAIM IDENTIFIER DISPLAY"
+13 FOR
if FBDONE
QUIT
Begin DoDot:1
+14 SET DIR("A",1)="Select the UCID REPORT or the PROGRAM you are testing"
+15 SET DIR("A",2)="ENTER '^' or leave blank to EXIT"
+16 SET DIR("A")="SELECT"
+17 SET DIR(0)="SO^1:Outpatient and Inpatient UCID Display by Date Range Report"
+18 SET DIR(0)=DIR(0)_";3:Outpatient UCID Screen Display"
+19 SET DIR(0)=DIR(0)_";9:Inpatient UCID Screen Display"
+20 SET DIR("B")=""
+21 DO ^DIR
+22 KILL DIR("A")
+23 ;DEFINED IF USER ENTERS ONE UP ARROW
IF $DATA(DUOUT)
SET FBDONE=1
+24 ;DEFINED IF USER ENTERS TWO UP ARROWS
IF $DATA(DIRUT)
SET FBDONE=1
+25 ;DEFINED IF USER TIMES OUT
IF $DATA(DTOUT)
SET FBDONE=1
+26 IF '+Y
SET FBDONE=1
+27 if FBDONE
QUIT
+28 SET FBPROG=+Y
+29 IF FBPROG=1
DO UCIDRPT()
+30 ;INPATIENT
IF FBPROG=9
Begin DoDot:2
+31 SET FBQUIT=0
+32 FOR
if FBQUIT
QUIT
Begin DoDot:3
+33 ;162.5 -- FEE BASIS INVOICE FILE
SET DIC=162.5
+34 SET DIC(0)="AE"
+35 ;S DIC("S")="I $P(^(0),U,9)="""""
+36 DO ^DIC
+37 IF $DATA(DUOUT)
SET FBQUIT=1
+38 IF $DATA(DIRUT)
SET FBQUIT=1
+39 IF $DATA(DTOUT)
SET FBQUIT=1
+40 IF Y<0
SET FBQUIT=1
+41 if FBQUIT
QUIT
+42 IF (Y>0)
Begin DoDot:4
+43 ;W !,"UCID: "_$P($G(^FBAAI(+Y,5)),U,5)
+44 SET FBIEN=$PIECE(Y,U,2)
+45 SET FBNODE=^FBAAI(FBIEN,0)
+46 SET FBDATE=$PIECE(FBNODE,U,2)
+47 ;POINTER TO 161 - FEE BASIS PATIENT
SET FBVET=$PIECE(FBNODE,U,4)
+48 ;POINTER TO FILE 2 - PATIENT
SET FBPAT=$PIECE(^FBAAA(FBVET,0),U,1)
+49 ;POINTER TO FB VENDOR FILE
SET FBVNDR=$PIECE(FBNODE,U,3)
+50 SET Y=FBDATE
+51 DO DD^%DT
+52 WRITE !,$PIECE(^DPT(FBPAT,0),U,1)_" "_$PIECE(^FBAAV(FBVNDR,0),U,1)_" "_Y
+53 WRITE !?10,"UCID: "_$PIECE($GET(^FBAAI(FBIEN,5)),U,5)
+54 if ('FBDONE)&('FBQUIT)
HANG 3
End DoDot:4
+55 WRITE !!
End DoDot:3
End DoDot:2
+56 ;OUTPATIENT
IF FBPROG=3
Begin DoDot:2
+57 SET FBQUIT=0
+58 FOR
if FBQUIT
QUIT
Begin DoDot:3
+59 ; 162 -- FEE BASIS PAYMENT FILE
SET DIC="^FBAAC("
+60 ;
SET DIC(0)="AE"
+61 ;PATIENT SELECTION
DO ^DIC
+62 IF $DATA(DUOUT)
SET FBQUIT=1
+63 IF $DATA(DIRUT)
SET FBQUIT=1
+64 IF $DATA(DTOUT)
SET FBQUIT=1
+65 if FBQUIT
QUIT
+66 SET DA(1)=+Y
+67 if '+$ORDER(^FBAAC(DA(1),1,0))
QUIT
+68 SET DIC="^FBAAC("_DA(1)_",1,"
+69 DO ^DIC
+70 IF $DATA(DUOUT)
SET FBQUIT=1
+71 IF $DATA(DIRUT)
SET FBQUIT=1
+72 IF $DATA(DTOUT)
SET FBQUIT=1
+73 if FBQUIT
QUIT
+74 IF +Y<0
WRITE !,"No Fee Basis Invoice Vendors found for this patient!"
QUIT
+75 SET DA(2)=DA(1)
+76 SET DA(1)=+Y
+77 if '+$ORDER(^FBAAC(DA(2),1,DA(1),1,0))
QUIT
+78 ;INITIAL TREATMENT DATE SELECTION
SET DIC="^FBAAC("_DA(2)_",1,"_DA(1)_",1,"
+79 DO ^DIC
+80 IF $DATA(DUOUT)
SET FBQUIT=1
+81 IF $DATA(DIRUT)
SET FBQUIT=1
+82 IF $DATA(DTOUT)
SET FBQUIT=1
+83 if FBQUIT
QUIT
+84 IF +Y<0
WRITE !,"No Fee Basis Invoice DATE OF SERVICE found for this Vendor!"
QUIT
+85 SET DA(3)=DA(2)
+86 SET DA(2)=DA(1)
+87 SET DA(1)=+Y
+88 if '+$ORDER(^FBAAC(DA(3),1,DA(2),1,DA(1),1,0))
QUIT
+89 SET FBSRVC=0
+90 FOR
SET FBSRVC=$ORDER(^FBAAC(DA(3),1,DA(2),1,DA(1),1,FBSRVC))
if '+FBSRVC
QUIT
Begin DoDot:4
+91 ;POINTER TO 81 - CPT FILE
SET FBPNTR=$PIECE($GET(^FBAAC(DA(3),1,DA(2),1,DA(1),1,FBSRVC,0)),U,1)
+92 ;FB*3.5*166 - Update direct global reads of 81 file to API
WRITE !,"SERVICE: ",$PIECE($$CPT^ICPTCOD(FBPNTR),U,2)," ",$PIECE($$CPT^ICPTCOD(FBPNTR),U,3),?50,"UCID: "_$PIECE($GET(^FBAAC(DA(3),1,DA(2),1,DA(1),1,FBSRVC,5)),U,5)
End DoDot:4
+93 if ('FBDONE)&('FBQUIT)
HANG 3
+94 WRITE !!
End DoDot:3
End DoDot:2
+95 DO CLEAR()
End DoDot:1
+96 QUIT
CLEAR() ;CLEAR SCREEN
+1 NEW FBLINE
+2 FOR FBLINE=1:1:10
WRITE !
+3 QUIT
UCIDRPT() ;PROVIDES A REPORT OF ALL UCIDS IN THE SYSTEM FOR A DATE RANGE
+1 ;
+2 NEW DIR,FBQUIT,FBSTRT,FBEND,Y,FBSDATE,FBEDATE,FBDATE,FBINTLDT,FBPAT
+3 SET FBQUIT=0
+4 SET Y=DT
+5 DO DD^%DT
+6 SET FBTODAY=Y
+7 SET DIR("A")="Enter the START DATE for UCID report"
+8 SET DIR(0)="D"
+9 SET DIR("B")=FBTODAY
+10 DO ^DIR
+11 IF $DATA(DUOUT)
SET FBQUIT=1
+12 IF $DATA(DIRUT)
SET FBQUIT=1
+13 IF $DATA(DTOUT)
SET FBQUIT=1
+14 SET FBSTRT=Y
+15 IF 'FBQUIT
Begin DoDot:1
+16 SET DIR("A")="Enter the END DATE for UCID report"
+17 SET DIR(0)="D"
+18 SET DIR("B")=FBTODAY
+19 DO ^DIR
+20 IF $DATA(DUOUT)
SET FBQUIT=1
+21 IF $DATA(DIRUT)
SET FBQUIT=1
+22 IF $DATA(DTOUT)
SET FBQUIT=1
+23 SET FBEND=Y
End DoDot:1
+24 IF 'FBQUIT
Begin DoDot:1
+25 DO ^%ZIS
+26 IF 'POP
Begin DoDot:2
+27 USE IO
+28 SET Y=FBSTRT
+29 DO DD^%DT
+30 SET FBSDATE=Y
+31 SET Y=FBEND
+32 DO DD^%DT
+33 SET FBEDATE=Y
+34 WRITE !,"OUTPATIENT INVOICES INITIAL SERVICES FROM: ",FBSDATE," TO: "_FBEDATE
+35 DO OUTDSPLY(FBSTRT,FBEND)
+36 WRITE !!,"CIVIL HOSPITAL INVOICES DATE RECEIVED FROM: ",FBSDATE," TO: "_FBEDATE
+37 DO INDSPLY(FBSTRT,FBEND)
End DoDot:2
+38 DO ^%ZISC
End DoDot:1
+39 QUIT
OUTDSPLY(FBSTRT,FBEND) ;DISPLAY OUTPATIENT UCID INFORMATION FOR A DATE RANGE
+1 ; INPUT : FBSTRT : A FM DATE REPRESENTING THE STARTING DATE FOR REPORT
+2 ; FBEND : A FM DATE REPRESENTING THE ENDING DATE FOR REPORT
+3 ;
+4 NEW FBIEN,FBVNDR,FBINTLDT,FBSRVC,FBSNUM
+5 SET FBIEN=0
+6 FOR
SET FBIEN=$ORDER(^FBAAC(FBIEN))
if '+FBIEN
QUIT
Begin DoDot:1
+7 SET FBVNDR=0
+8 FOR
SET FBVNDR=$ORDER(^FBAAC(FBIEN,1,FBVNDR))
if '+FBVNDR
QUIT
Begin DoDot:2
+9 SET FBINTLDT=0
+10 FOR
SET FBINTLDT=$ORDER(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT))
if '+FBINTLDT
QUIT
Begin DoDot:3
+11 SET FBDATE=$PIECE(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT,0),U,1)
+12 IF (FBSTRT<=FBDATE)&(FBDATE<=FBEND)
Begin DoDot:4
+13 WRITE !
+14 ;NOW PRINT OUT PATIENT NAME, VENDOR NAME, TREATMENT DATE, AND EACH SERVICE AND UCID
+15 SET Y=FBDATE
+16 DO DD^%DT
+17 WRITE !,$PIECE(^DPT(FBIEN,0),U,1)_" "_$PIECE(^FBAAV(FBVNDR,0),U,1)_" "_Y
+18 SET FBSNUM=0
+19 FOR
SET FBSNUM=$ORDER(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT,1,FBSNUM))
if '+FBSNUM
QUIT
Begin DoDot:5
+20 SET FBSRVC=$PIECE(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT,1,FBSNUM,0),U,1)
+21 ;FB*3.5*166 - Update direct global reads of 81 file to API
WRITE !,"SERVICE: ",$PIECE($$CPT^ICPTCOD(FBSRVC),U,2)," ",$PIECE($$CPT^ICPTCOD(FBSRVC),U,3),?50,"UCID: "_$PIECE($GET(^FBAAC(FBIEN,1,FBVNDR,1,FBINTLDT,1,FBSNUM,5)),U,5)
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+22 QUIT
+23 ;
INDSPLY(FBSTRT,FBEND) ;DISPLAY CIVIL HOSPITAL UCID INFORMATION FOR A DATE RANGE
+1 ; INPUT : FBSTRT : A FM DATE REPRESENTING THE STARTING DATE FOR REPORT
+2 ; FBEND : A FM DATE REPRESENTING THE ENDING DATE FOR REPORT
+3 NEW FBIEN,DBDATE,FBVET,FBPAT,FBVNDR
+4 SET FBIEN=0
+5 FOR
SET FBIEN=$ORDER(^FBAAI(FBIEN))
if '+FBIEN
QUIT
Begin DoDot:1
+6 SET FBNODE=^FBAAI(FBIEN,0)
+7 SET FBDATE=$PIECE(FBNODE,U,2)
+8 IF (FBSTRT<=FBDATE)&(FBDATE<=FBEND)
Begin DoDot:2
+9 WRITE !
+10 ;POINTER TO 161
SET FBVET=$PIECE(FBNODE,U,4)
+11 ;POINTER TO FILE 2
SET FBPAT=$PIECE(^FBAAA(FBVET,0),U,1)
+12 SET FBVNDR=$PIECE(FBNODE,U,3)
+13 SET Y=FBDATE
+14 DO DD^%DT
+15 WRITE !,$PIECE(FBNODE,U,1)_" "_$PIECE(^DPT(FBPAT,0),U,1)_" "_$PIECE(^FBAAV(FBVNDR,0),U,1)_" "_Y
+16 WRITE !?10,"UCID: "_$PIECE($GET(^FBAAI(FBIEN,5)),U,5)
End DoDot:2
End DoDot:1
+17 QUIT