IBDFUTL5 ;ALB/MKN/CFS - CONTINUED FROM IBDUTL4 ;12/30/2011
;;3.0;AUTOMATED INFO COLLECTION SYS;**63**;Dec 30, 2011;Build 80
;
;
CHECKCL(IBDCLIN,IBDTAINS,IBDSORT,ARY,IBDGPNA) ;Check by Clinic
; -- input IBDCLIN = IEN of Clinic file
; IBDTAINS = 9 or 10 or B or N or A
; -- output is an array in ARY as follows:
; @ARY(0) = Number of rows in @ARY
; @ARY(#) = P1 := Encounter Form name
; P2 := Contains ICD-9/ICD-10/BOTH
; P3 := Date Last Edited ICD-9
; P4 := Date Last Edited ICD-10
; P5 := ICD-10 Update Status
; P6 := Clinic Name
;
N IBDI9,IBDI10,IBDX,IBDI,IBDQUIT,IBDFORMS,IBDFORM,IBDBLK,IBDY9,IBDY10,IBDLIST,IBDRES,IBDADD,IBDCLNA,IBDDATA,IBDBLKX
N IBDFMNA,IBDFMX,IBDOK,IBDSUB,IBDDET,IBDSELX,IBDBLKNA,IBDLI,IBDSC
;
I $G(IBDCLIN)="" G CHECKCLQ
I $G(^SC(IBDCLIN,0))="" G CHECKCLQ
S IBDCLNA=$P(^SC(IBDCLIN,0),U,1) S:IBDCLNA="" IBDCLNA="Unknown"
S IBDFORMS=$G(^SD(409.95,+$O(^SD(409.95,"B",IBDCLIN,0)),0))
G:IBDFORMS="" CHECKCLQ
F IBDI=2,3,4,6,8,9 S IBDFORM=$P(IBDFORMS,U,IBDI) I IBDFORM?1.N D CHECKFRM
;
CHECKCLQ ;
Q
;
CHECKFM(IBDEFORM,IBDTAINS,IBDSORT,ARY,IBDGPNA) ;Check by Form
; -- input IBDEFORM = IEN of Encounter Form file
; IBDTAINS = 9 or 10 or B or N or A
; -- output is an array in ARY as follows:
; @ARY(0) = Number of rows in @ARY
; @ARY(#) = P1 := Encounter Form name
; P2 := Contains ICD-9/ICD-10/BOTH
; P3 := Date Last Edited ICD-9
; P4 := Date Last Edited ICD-10
; P5 := ICD-10 Update Status
; P6 := Clinic Name
;
N IBDI9,IBDI10,IBDX,IBDI,IBDQUIT,IBDFORMS,IBDFORM,IBDBLK,IBDY9,IBDY10,IBDLIST,IBDRES,IBDADD,IBDCLNA,IBDDATA,IBDBLKX
N IBDFMNA,IBDFMX,IBDFMSTA,IBDOK,IBDSUB,IBD9ED,IBD10ED,IBDLTSEL,IBDDET,IBDSELX,IBDBLKNA,IBDLI,IBDSC,IBDSYS,IBDCL,IBDYES
;
S IBDX=$G(^IBE(357,IBDEFORM,0)) I IBDX="" G CHECKFMQ
S IBDFMNA=$P(^IBE(357,IBDEFORM,0),U,1) G:IBDFMNA="" CHECKFMQ
I (+$P(IBDX,U,7))&(($P(IBDX,U)="TOOL KIT")!($P(IBDX,U)="WORKCOPY")) G CHECKFMQ ; Ignore TOOLKIT and WORCOPY forms per SMES 2/29/12
S IBDFORM=IBDEFORM,IBDCL=$O(^TMP("IBDFUTL4",$J,"X","FMARR",IBDFMNA,""))
I IBDCL="" S IBDCLNA="",IBDCLIN=""
I IBDCL?1.N S IBDX=$G(^SC(IBDCL,0)) G:IBDX="" CHECKFMQ S IBDCLNA=$P(IBDX,U,1)
D CHECKFRM
;
CHECKFMQ ;
Q
;
CHECKFRM ;Check this Form - go through each Block attached to Form, check ICD-9/ICD-10 relevance against user input selection\
;
N IBDBLHD,IBDPIEN,IBDX,IBDY,IBDADD,IBDWH,IBDQUIT,IBDRES,IBD9ED,IBD10ED,IBDFMSTA,IBD9HIS,IBD10HIS,IBDLTSEL,IBDSYS,IBDCODE
S (IBDY9,IBDY10,IBDBLK,IBDADD,IBDYES,IBDQUIT)=0,(IBD9HIS,IBD10HIS,IBD9ED,IBD10ED,IBDFMSTA)=""
S IBDX=$O(^IBE(357,IBDFORM,3,"B",1,"")) I IBDX?1.N S IBD9HIS=^IBE(357,IBDFORM,3,IBDX,0),IBDFMSTA=$P(IBD9HIS,U,2)
S IBDX=$O(^IBE(357,IBDFORM,3,"B",30,"")) I IBDX?1.N S IBD10HIS=^IBE(357,IBDFORM,3,IBDX,0),IBDFMSTA=$P(IBD10HIS,U,2)
I IBDINP("STATUS")'="A" D
. I IBDX="",IBDINP("STATUS")'="I" S IBDQUIT=1 Q
. I IBDX'="" D
. . I IBDINP("STATUS")="I",IBDFMSTA'="" S IBDQUIT=1 Q
. . I IBDINP("STATUS")="C",IBDFMSTA'="C" S IBDQUIT=1 Q
. . I IBDINP("STATUS")="R",IBDFMSTA'="R" S IBDQUIT=1 Q
Q:IBDQUIT
;
S IBD9ED=$P(IBD9HIS,U,3),IBD10ED=$P(IBD10HIS,U,3) ;Seed the Edit Dates for checking at Selection level below
;
K IBDDET ;This will contain Detail lines if Detail option selected
S IBDFMX=$G(^IBE(357,IBDFORM,0)),IBDFMNA=$P(IBDFMX,U,1) S:IBDFMNA="" IBDFMNA="Unknown"
I IBDINP("SORTBY")="SF" Q:'$D(IBDINP("FORM",IBDFMNA))
I IBDINP("SORTBY")="RF" Q:IBDINP("FORM","RF",1)]IBDFMNA!(IBDFMNA]IBDINP("FORM","RF",2))
;This loop goes through all blocks and lists and sets the flags where ICD-9 or ICD-10 are present
F S IBDBLK=$O(^IBE(357.1,"C",IBDFORM,IBDBLK)) Q:'IBDBLK S IBDLIST=0 D
. S IBDX=^IBE(357.1,IBDBLK,0),IBDBLKNA=$P(IBDX,U,1),IBDBLHD=""
. F S IBDLIST=$O(^IBE(357.2,"C",IBDBLK,IBDLIST)) Q:'IBDLIST D
. . S IBDX=^IBE(357.2,IBDLIST,0),IBDPIEN=$P(IBDX,U,11) ;Package Interface IEN
. . S IBDX=^IBE(357.6,IBDPIEN,0),IBDSYS=$P(IBDX,U,22) Q:IBDSYS'=1&(IBDSYS'=30) ;Coding System field
. . I IBDSYS?1.N S IBDX=$$SINFO^ICDEX(IBDSYS) S:$P(IBDX,U,2)="ICD-9-CM" IBDY9=1 S:$P(IBDX,U,2)="ICD-10-CM" IBDY10=1
. . ;Now compare with the user selection - ICD9/ICD10/Both/Neither
. . I IBDTAINS=9,IBDY9=0 Q
. . I IBDTAINS=10,IBDY10=0 Q
. . I IBDTAINS="B",IBDY9=0!(IBDY10=0) Q
. . I IBDTAINS="N",IBDY9=1!(IBDY10=1) Q
. . ;Now find ICD-9/10 Status and history dates at the Selection level and update Latest Edit date where required
. . K ^TMP("IBDFUTL4X",$J,"X","BLCODE")
. . S IBDLTSEL="" F S IBDLTSEL=$O(^IBE(357.3,"C",IBDLIST,IBDLTSEL)) Q:IBDLTSEL="" D
. . . S IBDX=$G(^IBE(357.3,IBDLTSEL,4))
. . . I $P(IBDX,U,1)>IBD9ED S IBD9ED=$P(IBDX,U,1)
. . . I $P(IBDX,U,2)>IBD10ED S IBD10ED=$P(IBDX,U,1)
. . . I IBDINP("SD")="D" D
. . . . S:IBDBLHD="" IBDX=$O(IBDDET(""),-1)+1,IBDDET(IBDX)="BL^"_IBDBLKNA,IBDBLHD=IBDBLKNA
. . . . S IBDX=^IBE(357.3,IBDLTSEL,0),IBDDATA=$$ICDDATA^ICDXCODE(IBDSYS,$P(IBDX,U,1)),IBDCODE=$P(IBDX,U,1)
. . . . I '$D(^TMP("IBDFUTL4X",$J,"X","BLCODE",IBDCODE)) S IBDSELX="LT^"_IBDLTSEL_U_IBDCODE_U_$P(IBDDATA,U,4),IBDX=$O(IBDDET(""),-1)+1,IBDDET(IBDX)=IBDSELX,^TMP("IBDFUTL4X",$J,"X","BLCODE",IBDCODE)=""
;We are now back at form level (357) and we know this form needs to be included in the list if user selection agrees
S IBDYES=1 D
.I IBDTAINS=9&((IBDY9=0)!(IBDY10=1)) S IBDYES=0 Q
.I IBDTAINS=10&((IBDY9=1)!(IBDY10=0)) S IBDYES=0 Q
.I IBDTAINS="B"&((IBDY9=0)!(IBDY10=0)) S IBDYES=0 Q
.I IBDTAINS="N"&((IBDY9=1)!(IBDY10=1)) S IBDYES=0 Q
Q:IBDYES=0
S IBDRES=""
I IBDY9=1 S IBDRES="ICD9"
I IBDY10=1 D
. I IBDY9=1 S IBDRES="BOTH"
. E S IBDRES="ICD10"
I $E(IBDSORT,2)="C" S IBDSUB=IBDCLNA D SET
I $E(IBDSORT,2)="F" S IBDSUB=IBDFMNA D SET
I $E(IBDSORT,2)="G" S IBDSUB=IBDGPNA D SET
Q
;
SET ;
N IBDY,IBD9DA,IBD10DA
S (IBD9DA,IBD10DA)=""
I IBD9ED>0 S IBD9DA=$E(IBD9ED,4,5)_"/"_$E(IBD9ED,6,7)_"/"_$E(IBD9ED,2,3)
I IBD10ED>0 S IBD10DA=$E(IBD10ED,4,5)_"/"_$E(IBD10ED,6,7)_"/"_$E(IBD10ED,2,3)
S IBDY=$S(IBDFMSTA="":"",IBDFMSTA="C":"COMP",IBDFMSTA="I":"",IBDFMSTA="R":"REV",1:"")
I $E(IBDSORT,2)'="G" D
. S @ARY@("S",IBDSUB,IBDFMNA)=IBDFMNA_U_IBDRES_U_IBD9DA_U_IBD10DA_U_IBDY_U_IBDCLNA_U_IBDCLIN_U_IBDFORM_U_$G(IBDGPNA)
. I IBDINP("SD")="D" M @ARY@("S",IBDSUB,IBDFMNA,"D")=IBDDET
I $E(IBDSORT,2)="G" D
. I IBDGPNA="" S IBDGPNA="Unknown"
. S @ARY@("S",IBDGPNA,IBDCLNA,IBDFMNA)=IBDFMNA_U_IBDRES_U_IBD9DA_U_IBD10DA_U_IBDY_U_IBDCLNA_U_IBDCLIN_U_IBDFORM_U_IBDGPNA
. I IBDINP("SD")="D" M @ARY@("S",IBDGPNA,IBDCLNA,IBDFMNA,"D")=IBDDET
Q
;
GRHEADNG(IBDGPNA,IBDCT) ;List each clinic under its grouped heading.
N IBDX
S IBDX="",IBDX=$$SETSTR^VALM1(" ",IBDX,1,3)
S ^TMP("IBDFUTL4",$J,IBDCT,0)=IBDX
S ^TMP("IBDFUTL4X",$J,"X","GPNA",IBDGPNA,IBDCT)=""
S IBDCT=IBDCT+1,VALMCNT=VALMCNT+1
S IBDVAL1=$L(IBDGPNA) S IBDVAL1=(80-IBDVAL1)/2 S IBDVAL1=IBDVAL1\1 S IBDX="",IBDX=$$SETSTR^VALM1(" ",IBDX,1,IBDVAL1)
S IBDX=$$SETSTR^VALM1(IBDGPNA,IBDX,IBDVAL1,25)
S ^TMP("IBDFUTL4",$J,IBDCT,0)=IBDX
S ^TMP("IBDFUTL4X",$J,"X","GPNA",IBDGPNA,IBDCT)=""
S IBDCT=IBDCT+1,VALMCNT=VALMCNT+1
D CNTRL^VALM10(VALMCNT,1,80,IOINHI,IOINORM,0)
S IBDX="",IBDX=$$SETSTR^VALM1(" ",IBDX,1,3)
S ^TMP("IBDFUTL4",$J,IBDCT,0)=IBDX
S ^TMP("IBDFUTL4X",$J,"X","GPNA",IBDGPNA,IBDCT)=""
S IBDCT=IBDCT+1,VALMCNT=VALMCNT+1
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBDFUTL5 7567 printed Dec 13, 2024@02:53:53 Page 2
IBDFUTL5 ;ALB/MKN/CFS - CONTINUED FROM IBDUTL4 ;12/30/2011
+1 ;;3.0;AUTOMATED INFO COLLECTION SYS;**63**;Dec 30, 2011;Build 80
+2 ;
+3 ;
CHECKCL(IBDCLIN,IBDTAINS,IBDSORT,ARY,IBDGPNA) ;Check by Clinic
+1 ; -- input IBDCLIN = IEN of Clinic file
+2 ; IBDTAINS = 9 or 10 or B or N or A
+3 ; -- output is an array in ARY as follows:
+4 ; @ARY(0) = Number of rows in @ARY
+5 ; @ARY(#) = P1 := Encounter Form name
+6 ; P2 := Contains ICD-9/ICD-10/BOTH
+7 ; P3 := Date Last Edited ICD-9
+8 ; P4 := Date Last Edited ICD-10
+9 ; P5 := ICD-10 Update Status
+10 ; P6 := Clinic Name
+11 ;
+12 NEW IBDI9,IBDI10,IBDX,IBDI,IBDQUIT,IBDFORMS,IBDFORM,IBDBLK,IBDY9,IBDY10,IBDLIST,IBDRES,IBDADD,IBDCLNA,IBDDATA,IBDBLKX
+13 NEW IBDFMNA,IBDFMX,IBDOK,IBDSUB,IBDDET,IBDSELX,IBDBLKNA,IBDLI,IBDSC
+14 ;
+15 IF $GET(IBDCLIN)=""
GOTO CHECKCLQ
+16 IF $GET(^SC(IBDCLIN,0))=""
GOTO CHECKCLQ
+17 SET IBDCLNA=$PIECE(^SC(IBDCLIN,0),U,1)
if IBDCLNA=""
SET IBDCLNA="Unknown"
+18 SET IBDFORMS=$GET(^SD(409.95,+$ORDER(^SD(409.95,"B",IBDCLIN,0)),0))
+19 if IBDFORMS=""
GOTO CHECKCLQ
+20 FOR IBDI=2,3,4,6,8,9
SET IBDFORM=$PIECE(IBDFORMS,U,IBDI)
IF IBDFORM?1.N
DO CHECKFRM
+21 ;
CHECKCLQ ;
+1 QUIT
+2 ;
CHECKFM(IBDEFORM,IBDTAINS,IBDSORT,ARY,IBDGPNA) ;Check by Form
+1 ; -- input IBDEFORM = IEN of Encounter Form file
+2 ; IBDTAINS = 9 or 10 or B or N or A
+3 ; -- output is an array in ARY as follows:
+4 ; @ARY(0) = Number of rows in @ARY
+5 ; @ARY(#) = P1 := Encounter Form name
+6 ; P2 := Contains ICD-9/ICD-10/BOTH
+7 ; P3 := Date Last Edited ICD-9
+8 ; P4 := Date Last Edited ICD-10
+9 ; P5 := ICD-10 Update Status
+10 ; P6 := Clinic Name
+11 ;
+12 NEW IBDI9,IBDI10,IBDX,IBDI,IBDQUIT,IBDFORMS,IBDFORM,IBDBLK,IBDY9,IBDY10,IBDLIST,IBDRES,IBDADD,IBDCLNA,IBDDATA,IBDBLKX
+13 NEW IBDFMNA,IBDFMX,IBDFMSTA,IBDOK,IBDSUB,IBD9ED,IBD10ED,IBDLTSEL,IBDDET,IBDSELX,IBDBLKNA,IBDLI,IBDSC,IBDSYS,IBDCL,IBDYES
+14 ;
+15 SET IBDX=$GET(^IBE(357,IBDEFORM,0))
IF IBDX=""
GOTO CHECKFMQ
+16 SET IBDFMNA=$PIECE(^IBE(357,IBDEFORM,0),U,1)
if IBDFMNA=""
GOTO CHECKFMQ
+17 ; Ignore TOOLKIT and WORCOPY forms per SMES 2/29/12
IF (+$PIECE(IBDX,U,7))&(($PIECE(IBDX,U)="TOOL KIT")!($PIECE(IBDX,U)="WORKCOPY"))
GOTO CHECKFMQ
+18 SET IBDFORM=IBDEFORM
SET IBDCL=$ORDER(^TMP("IBDFUTL4",$JOB,"X","FMARR",IBDFMNA,""))
+19 IF IBDCL=""
SET IBDCLNA=""
SET IBDCLIN=""
+20 IF IBDCL?1.N
SET IBDX=$GET(^SC(IBDCL,0))
if IBDX=""
GOTO CHECKFMQ
SET IBDCLNA=$PIECE(IBDX,U,1)
+21 DO CHECKFRM
+22 ;
CHECKFMQ ;
+1 QUIT
+2 ;
CHECKFRM ;Check this Form - go through each Block attached to Form, check ICD-9/ICD-10 relevance against user input selection\
+1 ;
+2 NEW IBDBLHD,IBDPIEN,IBDX,IBDY,IBDADD,IBDWH,IBDQUIT,IBDRES,IBD9ED,IBD10ED,IBDFMSTA,IBD9HIS,IBD10HIS,IBDLTSEL,IBDSYS,IBDCODE
+3 SET (IBDY9,IBDY10,IBDBLK,IBDADD,IBDYES,IBDQUIT)=0
SET (IBD9HIS,IBD10HIS,IBD9ED,IBD10ED,IBDFMSTA)=""
+4 SET IBDX=$ORDER(^IBE(357,IBDFORM,3,"B",1,""))
IF IBDX?1.N
SET IBD9HIS=^IBE(357,IBDFORM,3,IBDX,0)
SET IBDFMSTA=$PIECE(IBD9HIS,U,2)
+5 SET IBDX=$ORDER(^IBE(357,IBDFORM,3,"B",30,""))
IF IBDX?1.N
SET IBD10HIS=^IBE(357,IBDFORM,3,IBDX,0)
SET IBDFMSTA=$PIECE(IBD10HIS,U,2)
+6 IF IBDINP("STATUS")'="A"
Begin DoDot:1
+7 IF IBDX=""
IF IBDINP("STATUS")'="I"
SET IBDQUIT=1
QUIT
+8 IF IBDX'=""
Begin DoDot:2
+9 IF IBDINP("STATUS")="I"
IF IBDFMSTA'=""
SET IBDQUIT=1
QUIT
+10 IF IBDINP("STATUS")="C"
IF IBDFMSTA'="C"
SET IBDQUIT=1
QUIT
+11 IF IBDINP("STATUS")="R"
IF IBDFMSTA'="R"
SET IBDQUIT=1
QUIT
End DoDot:2
End DoDot:1
+12 if IBDQUIT
QUIT
+13 ;
+14 ;Seed the Edit Dates for checking at Selection level below
SET IBD9ED=$PIECE(IBD9HIS,U,3)
SET IBD10ED=$PIECE(IBD10HIS,U,3)
+15 ;
+16 ;This will contain Detail lines if Detail option selected
KILL IBDDET
+17 SET IBDFMX=$GET(^IBE(357,IBDFORM,0))
SET IBDFMNA=$PIECE(IBDFMX,U,1)
if IBDFMNA=""
SET IBDFMNA="Unknown"
+18 IF IBDINP("SORTBY")="SF"
if '$DATA(IBDINP("FORM",IBDFMNA))
QUIT
+19 IF IBDINP("SORTBY")="RF"
if IBDINP("FORM","RF",1)]IBDFMNA!(IBDFMNA]IBDINP("FORM","RF",2))
QUIT
+20 ;This loop goes through all blocks and lists and sets the flags where ICD-9 or ICD-10 are present
+21 FOR
SET IBDBLK=$ORDER(^IBE(357.1,"C",IBDFORM,IBDBLK))
if 'IBDBLK
QUIT
SET IBDLIST=0
Begin DoDot:1
+22 SET IBDX=^IBE(357.1,IBDBLK,0)
SET IBDBLKNA=$PIECE(IBDX,U,1)
SET IBDBLHD=""
+23 FOR
SET IBDLIST=$ORDER(^IBE(357.2,"C",IBDBLK,IBDLIST))
if 'IBDLIST
QUIT
Begin DoDot:2
+24 ;Package Interface IEN
SET IBDX=^IBE(357.2,IBDLIST,0)
SET IBDPIEN=$PIECE(IBDX,U,11)
+25 ;Coding System field
SET IBDX=^IBE(357.6,IBDPIEN,0)
SET IBDSYS=$PIECE(IBDX,U,22)
if IBDSYS'=1&(IBDSYS'=30)
QUIT
+26 IF IBDSYS?1.N
SET IBDX=$$SINFO^ICDEX(IBDSYS)
if $PIECE(IBDX,U,2)="ICD-9-CM"
SET IBDY9=1
if $PIECE(IBDX,U,2)="ICD-10-CM"
SET IBDY10=1
+27 ;Now compare with the user selection - ICD9/ICD10/Both/Neither
+28 IF IBDTAINS=9
IF IBDY9=0
QUIT
+29 IF IBDTAINS=10
IF IBDY10=0
QUIT
+30 IF IBDTAINS="B"
IF IBDY9=0!(IBDY10=0)
QUIT
+31 IF IBDTAINS="N"
IF IBDY9=1!(IBDY10=1)
QUIT
+32 ;Now find ICD-9/10 Status and history dates at the Selection level and update Latest Edit date where required
+33 KILL ^TMP("IBDFUTL4X",$JOB,"X","BLCODE")
+34 SET IBDLTSEL=""
FOR
SET IBDLTSEL=$ORDER(^IBE(357.3,"C",IBDLIST,IBDLTSEL))
if IBDLTSEL=""
QUIT
Begin DoDot:3
+35 SET IBDX=$GET(^IBE(357.3,IBDLTSEL,4))
+36 IF $PIECE(IBDX,U,1)>IBD9ED
SET IBD9ED=$PIECE(IBDX,U,1)
+37 IF $PIECE(IBDX,U,2)>IBD10ED
SET IBD10ED=$PIECE(IBDX,U,1)
+38 IF IBDINP("SD")="D"
Begin DoDot:4
+39 if IBDBLHD=""
SET IBDX=$ORDER(IBDDET(""),-1)+1
SET IBDDET(IBDX)="BL^"_IBDBLKNA
SET IBDBLHD=IBDBLKNA
+40 SET IBDX=^IBE(357.3,IBDLTSEL,0)
SET IBDDATA=$$ICDDATA^ICDXCODE(IBDSYS,$PIECE(IBDX,U,1))
SET IBDCODE=$PIECE(IBDX,U,1)
+41 IF '$DATA(^TMP("IBDFUTL4X",$JOB,"X","BLCODE",IBDCODE))
SET IBDSELX="LT^"_IBDLTSEL_U_IBDCODE_U_$PIECE(IBDDATA,U,4)
SET IBDX=$ORDER(IBDDET(""),-1)+1
SET IBDDET(IBDX)=IBDSELX
SET ^TMP("IBDFUTL4X",$JOB,"X","BLCODE",IBDCODE)=""
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+42 ;We are now back at form level (357) and we know this form needs to be included in the list if user selection agrees
+43 SET IBDYES=1
Begin DoDot:1
+44 IF IBDTAINS=9&((IBDY9=0)!(IBDY10=1))
SET IBDYES=0
QUIT
+45 IF IBDTAINS=10&((IBDY9=1)!(IBDY10=0))
SET IBDYES=0
QUIT
+46 IF IBDTAINS="B"&((IBDY9=0)!(IBDY10=0))
SET IBDYES=0
QUIT
+47 IF IBDTAINS="N"&((IBDY9=1)!(IBDY10=1))
SET IBDYES=0
QUIT
End DoDot:1
+48 if IBDYES=0
QUIT
+49 SET IBDRES=""
+50 IF IBDY9=1
SET IBDRES="ICD9"
+51 IF IBDY10=1
Begin DoDot:1
+52 IF IBDY9=1
SET IBDRES="BOTH"
+53 IF '$TEST
SET IBDRES="ICD10"
End DoDot:1
+54 IF $EXTRACT(IBDSORT,2)="C"
SET IBDSUB=IBDCLNA
DO SET
+55 IF $EXTRACT(IBDSORT,2)="F"
SET IBDSUB=IBDFMNA
DO SET
+56 IF $EXTRACT(IBDSORT,2)="G"
SET IBDSUB=IBDGPNA
DO SET
+57 QUIT
+58 ;
SET ;
+1 NEW IBDY,IBD9DA,IBD10DA
+2 SET (IBD9DA,IBD10DA)=""
+3 IF IBD9ED>0
SET IBD9DA=$EXTRACT(IBD9ED,4,5)_"/"_$EXTRACT(IBD9ED,6,7)_"/"_$EXTRACT(IBD9ED,2,3)
+4 IF IBD10ED>0
SET IBD10DA=$EXTRACT(IBD10ED,4,5)_"/"_$EXTRACT(IBD10ED,6,7)_"/"_$EXTRACT(IBD10ED,2,3)
+5 SET IBDY=$SELECT(IBDFMSTA="":"",IBDFMSTA="C":"COMP",IBDFMSTA="I":"",IBDFMSTA="R":"REV",1:"")
+6 IF $EXTRACT(IBDSORT,2)'="G"
Begin DoDot:1
+7 SET @ARY@("S",IBDSUB,IBDFMNA)=IBDFMNA_U_IBDRES_U_IBD9DA_U_IBD10DA_U_IBDY_U_IBDCLNA_U_IBDCLIN_U_IBDFORM_U_$GET(IBDGPNA)
+8 IF IBDINP("SD")="D"
MERGE @ARY@("S",IBDSUB,IBDFMNA,"D")=IBDDET
End DoDot:1
+9 IF $EXTRACT(IBDSORT,2)="G"
Begin DoDot:1
+10 IF IBDGPNA=""
SET IBDGPNA="Unknown"
+11 SET @ARY@("S",IBDGPNA,IBDCLNA,IBDFMNA)=IBDFMNA_U_IBDRES_U_IBD9DA_U_IBD10DA_U_IBDY_U_IBDCLNA_U_IBDCLIN_U_IBDFORM_U_IBDGPNA
+12 IF IBDINP("SD")="D"
MERGE @ARY@("S",IBDGPNA,IBDCLNA,IBDFMNA,"D")=IBDDET
End DoDot:1
+13 QUIT
+14 ;
GRHEADNG(IBDGPNA,IBDCT) ;List each clinic under its grouped heading.
+1 NEW IBDX
+2 SET IBDX=""
SET IBDX=$$SETSTR^VALM1(" ",IBDX,1,3)
+3 SET ^TMP("IBDFUTL4",$JOB,IBDCT,0)=IBDX
+4 SET ^TMP("IBDFUTL4X",$JOB,"X","GPNA",IBDGPNA,IBDCT)=""
+5 SET IBDCT=IBDCT+1
SET VALMCNT=VALMCNT+1
+6 SET IBDVAL1=$LENGTH(IBDGPNA)
SET IBDVAL1=(80-IBDVAL1)/2
SET IBDVAL1=IBDVAL1\1
SET IBDX=""
SET IBDX=$$SETSTR^VALM1(" ",IBDX,1,IBDVAL1)
+7 SET IBDX=$$SETSTR^VALM1(IBDGPNA,IBDX,IBDVAL1,25)
+8 SET ^TMP("IBDFUTL4",$JOB,IBDCT,0)=IBDX
+9 SET ^TMP("IBDFUTL4X",$JOB,"X","GPNA",IBDGPNA,IBDCT)=""
+10 SET IBDCT=IBDCT+1
SET VALMCNT=VALMCNT+1
+11 DO CNTRL^VALM10(VALMCNT,1,80,IOINHI,IOINORM,0)
+12 SET IBDX=""
SET IBDX=$$SETSTR^VALM1(" ",IBDX,1,3)
+13 SET ^TMP("IBDFUTL4",$JOB,IBDCT,0)=IBDX
+14 SET ^TMP("IBDFUTL4X",$JOB,"X","GPNA",IBDGPNA,IBDCT)=""
+15 SET IBDCT=IBDCT+1
SET VALMCNT=VALMCNT+1
+16 QUIT
+17 ;