SROUTL0 ;BIR/DLR,ADM - UTILITY ROUTINE ; [ 06/20/01 2:33 PM ]
;;3.0; Surgery ;**50,100**;24 Jun 93
;
; Reference to ^SC( supported by DBIA #964
;
NODATA() ;;utility to write no data
W !!
Q "No data for selected date range."
DIV(CASE) ;define the division of this case
; CASE - File 130 ien
; returns 0 - non-divisional match; 1 - divisonal match
N SRDIV,SROR I '$D(^SRF(CASE,0)) Q 0
I '$O(^SRO(133,1)) Q 1
I '$D(^SRF(CASE,"NON")) S SRDIV="",SROR=$P(^SRF(CASE,0),U,2) I SROR'="" S SROR=$P(^SRS(SROR,0),U) I SROR'="" S SRDIV=$P(^SC(SROR,0),U,4)
I $D(^SRF(CASE,"NON")) S SRDIV="",SROR=$P(^SRF(CASE,"NON"),U,2) I SROR'="" S SRDIV=$P(^SC(SROR,0),U,4)
I SRDIV="" S SRDIV=$P($G(^SRF(CASE,8)),U)
Q SRDIV=$G(SRSITE("DIV"))
ORDIV(OR,SRINST) ;define the division of this OR
; OR - .01 of Operating Room in file 131.7
; returns 0 - non-divisional match; 1 - divisonal match
N SRDIV
I '$O(^SRO(133,1)) Q 1
I SRINST="" Q 1
I SRINST["ALL" Q 1
I $G(OR)'="" S OR=$P(^SRS(OR,0),U),SRDIV=$P($G(^SC(OR,0)),U,4) I SRDIV'="" S SRDIV=$P(^(0),U,4)
Q SRDIV=SRINST
NONORDIV(CASE,NONOR) ;define nonor divisional locations (File #130,119 input transform)
; CASE - File 130 ien
; NONOR - File 44 ien
; returns 0 - non-divisional match; 1 - divisonal match
N CD,IORD,RORD,SRDIV
; CD - case date
; SRDIV - boolean (case division MATCH)
; IORD - Location file inactive date
; RORD - Location file inactive date
;
S SRDIV=1
I '$D(^SC(NONOR,0))!$G(NONOR)=""!$G(CASE)="" Q SRDIV
I '$D(^SRF(CASE,"NON")) Q 0
;if there is no institution set for this non-or location quit
I $P(^SC(NONOR,0),U,4)="" Q 0
I $D(SRSITE("DIV")) I $P(^SC(NONOR,0),U,4)'=$G(SRSITE("DIV")) Q 0
I $D(^SC(NONOR,"I")) S CD=$P(^SRF(CASE,"NON"),U,3),IORD=$P(^SC(NONOR,"I"),U),RORD=$P(^SC(NONOR,"I"),U,2) D:IORD'=""
.I CD'<IORD,((RORD="")!(CD<RORD)) S SRDIV=0 Q
Q SRDIV
MANDIV(SRINST,CASE) ;a boolean divisional call for managerial reports
I '$D(^SRF(CASE,0)) Q 0
I '$O(^SRO(133,1)) Q 1
I SRINST["ALL" Q 1
I +SRINST'>0 Q 0
N SRDIV,SROR
I '$D(^SRF(CASE,"NON")) S SRDIV="",SROR=$P(^SRF(CASE,0),U,2) I SROR'="" S SROR=$P(^SRS(SROR,0),U) I SROR'="" S SRDIV=$P(^SC(SROR,0),U,4)
I $D(^SRF(CASE,"NON")) S SRDIV="",SROR=$P(^SRF(CASE,"NON"),U,2) I SROR'="" S SRDIV=$P(^SC(SROR,0),U,4)
I SRDIV="" S SRDIV=$P($G(^SRF(CASE,8)),U)
Q SRDIV=SRINST
INST() ;extrinsic call used by the management reports to determine division
; Returns:
; inst#^inst name - for one division
; "ALL DIVISIONS" - all divisions
; "^" - no division
N SR,SRCNT,SRINST,X S (SRCNT,X)=0 F S X=$O(^SRO(133,X)) Q:'X I '$P($G(^SRO(133,X,0)),"^",21) S SRCNT=SRCNT+1
I SRCNT=1 S SRINST=$P($$SITE^SROVAR,"^",1,2) Q SRINST
W ! K DIR,Y S DIR(0)="YO",DIR("?")="Enter 'Yes' to include all divisions, or 'No' to pick one division",DIR("A")="Do you want to print all divisions",DIR("B")="YES" D ^DIR S SRINST=$S($G(Y(0))'="":Y(0),1:"^")
I SRINST="YES" S SRINST=$P($$SITE^SROVAR,U,2)_" - ALL DIVISIONS"
I SRINST="NO" D LIST^DIC(133,"",".01","B","*","","","","","","SR") W ! D
.S X=0 F S X=$O(SR("DILIST",1,X)) Q:'X W !,X,". ",SR("DILIST",1,X)
.K DIR W ! S DIR(0)="NO^1:"_$P(SR("DILIST",0),U),DIR("A")="Select Number" D ^DIR S:+Y<1 SRINST="^" S:+Y>0 SRINST=SR("DILIST",2,+Y),DIR("?")="Enter the corresponding number of the hospital for which you want the report to run"
Q $S(SRINST["ALL DIVISIONS":SRINST,SRINST=U:SRINST,1:$P(^SRO(133,SRINST,0),U)_U_SR("DILIST",1,+Y))
SITE(CASE) ; returns pointer to file 133 indicating where case was performed
; CASE - ien in File 130
N SRDIV,SROR S SRDIV="" I '$D(^SRF(CASE,"NON")) S SROR=$P($G(^SRF(CASE,0)),"^",2) I SROR'="" S SROR=$P(^SRS(SROR,0),"^") I SROR'="" S SRDIV=$P(^SC(SROR,0),"^",4)
I $P($G(^SRF(CASE,"NON")),"^")="Y" S SROR=$P(^SRF(CASE,"NON"),"^",2) I SROR'="" S SRDIV=$P(^SC(SROR,0),"^",4)
I SRDIV="" S SRDIV=$P($G(^SRF(CASE,8)),"^")
S:SRDIV'="" SRDIV=$O(^SRO(133,"B",SRDIV,0))
S:SRDIV="" SRDIV=$O(^SRO(133,0))
Q SRDIV
WARD(SRW,SRINST,DGPMOS) ;a boolean divisional call for active ward location
; SRW - IEN in File 42
; SRINST - user division
; DGPMOS - date to check for active ward
; returns 0 - non-divisional match; 1 - divisional match
N SRLOC,D0,X
S D0=SRW D WIN^DGPMDDCF I X=1 Q 0
I '$O(^SRO(133,1))!(SRINST="")!(SRINST["ALL") Q 1
S SRLOC=$P($G(^DIC(42,SRW,44)),"^") I SRLOC="" Q 1
S SRDIV=$P($G(^SC(SRLOC,0)),"^",4) I SRDIV="" Q 1
Q SRDIV=SRINST
HL(SRLOC,SRINST) ; define division of this hospital location
; SRLOC - File 44 IEN
; SRINST - user division
; returns 0 - non-divisional match; 1 - divisional match
N SRDIV I SRINST="" Q 1
S SRDIV=0
I $G(SRLOC)'="" S SRDIV=$P($G(^SC(SRLOC,0)),"^",4) I SRDIV="" Q 1
Q SRDIV=SRINST
SROUTL0 ;BIR/DLR,ADM - UTILITY ROUTINE ; [ 06/20/01 2:33 PM ]
+1 ;;3.0; Surgery ;**50,100**;24 Jun 93
+2 ;
+3 ; Reference to ^SC( supported by DBIA #964
+4 ;
NODATA() ;;utility to write no data
+1 WRITE !!
+2 QUIT "No data for selected date range."
DIV(CASE) ;define the division of this case
+1 ; CASE - File 130 ien
+2 ; returns 0 - non-divisional match; 1 - divisonal match
+3 NEW SRDIV,SROR
IF '$DATA(^SRF(CASE,0))
QUIT 0
+4 IF '$ORDER(^SRO(133,1))
QUIT 1
+5 IF '$DATA(^SRF(CASE,"NON"))
SET SRDIV=""
SET SROR=$PIECE(^SRF(CASE,0),U,2)
IF SROR'=""
SET SROR=$PIECE(^SRS(SROR,0),U)
IF SROR'=""
SET SRDIV=$PIECE(^SC(SROR,0),U,4)
+6 IF $DATA(^SRF(CASE,"NON"))
SET SRDIV=""
SET SROR=$PIECE(^SRF(CASE,"NON"),U,2)
IF SROR'=""
SET SRDIV=$PIECE(^SC(SROR,0),U,4)
+7 IF SRDIV=""
SET SRDIV=$PIECE($GET(^SRF(CASE,8)),U)
+8 QUIT SRDIV=$GET(SRSITE("DIV"))
ORDIV(OR,SRINST) ;define the division of this OR
+1 ; OR - .01 of Operating Room in file 131.7
+2 ; returns 0 - non-divisional match; 1 - divisonal match
+3 NEW SRDIV
+4 IF '$ORDER(^SRO(133,1))
QUIT 1
+5 IF SRINST=""
QUIT 1
+6 IF SRINST["ALL"
QUIT 1
+7 IF $GET(OR)'=""
SET OR=$PIECE(^SRS(OR,0),U)
SET SRDIV=$PIECE($GET(^SC(OR,0)),U,4)
IF SRDIV'=""
SET SRDIV=$PIECE(^(0),U,4)
+8 QUIT SRDIV=SRINST
NONORDIV(CASE,NONOR) ;define nonor divisional locations (File #130,119 input transform)
+1 ; CASE - File 130 ien
+2 ; NONOR - File 44 ien
+3 ; returns 0 - non-divisional match; 1 - divisonal match
+4 NEW CD,IORD,RORD,SRDIV
+5 ; CD - case date
+6 ; SRDIV - boolean (case division MATCH)
+7 ; IORD - Location file inactive date
+8 ; RORD - Location file inactive date
+9 ;
+10 SET SRDIV=1
+11 IF '$DATA(^SC(NONOR,0))!$GET(NONOR)=""!$GET(CASE)=""
QUIT SRDIV
+12 IF '$DATA(^SRF(CASE,"NON"))
QUIT 0
+13 ;if there is no institution set for this non-or location quit
+14 IF $PIECE(^SC(NONOR,0),U,4)=""
QUIT 0
+15 IF $DATA(SRSITE("DIV"))
IF $PIECE(^SC(NONOR,0),U,4)'=$GET(SRSITE("DIV"))
QUIT 0
+16 IF $DATA(^SC(NONOR,"I"))
SET CD=$PIECE(^SRF(CASE,"NON"),U,3)
SET IORD=$PIECE(^SC(NONOR,"I"),U)
SET RORD=$PIECE(^SC(NONOR,"I"),U,2)
IF IORD'=""
Begin DoDot:1
+17 IF CD'<IORD
IF ((RORD="")!(CD<RORD))
SET SRDIV=0
QUIT
End DoDot:1
+18 QUIT SRDIV
MANDIV(SRINST,CASE) ;a boolean divisional call for managerial reports
+1 IF '$DATA(^SRF(CASE,0))
QUIT 0
+2 IF '$ORDER(^SRO(133,1))
QUIT 1
+3 IF SRINST["ALL"
QUIT 1
+4 IF +SRINST'>0
QUIT 0
+5 NEW SRDIV,SROR
+6 IF '$DATA(^SRF(CASE,"NON"))
SET SRDIV=""
SET SROR=$PIECE(^SRF(CASE,0),U,2)
IF SROR'=""
SET SROR=$PIECE(^SRS(SROR,0),U)
IF SROR'=""
SET SRDIV=$PIECE(^SC(SROR,0),U,4)
+7 IF $DATA(^SRF(CASE,"NON"))
SET SRDIV=""
SET SROR=$PIECE(^SRF(CASE,"NON"),U,2)
IF SROR'=""
SET SRDIV=$PIECE(^SC(SROR,0),U,4)
+8 IF SRDIV=""
SET SRDIV=$PIECE($GET(^SRF(CASE,8)),U)
+9 QUIT SRDIV=SRINST
INST() ;extrinsic call used by the management reports to determine division
+1 ; Returns:
+2 ; inst#^inst name - for one division
+3 ; "ALL DIVISIONS" - all divisions
+4 ; "^" - no division
+5 NEW SR,SRCNT,SRINST,X
SET (SRCNT,X)=0
FOR
SET X=$ORDER(^SRO(133,X))
IF 'X
QUIT
IF '$PIECE($GET(^SRO(133,X,0)),"^",21)
SET SRCNT=SRCNT+1
+6 IF SRCNT=1
SET SRINST=$PIECE($$SITE^SROVAR,"^",1,2)
QUIT SRINST
+7 WRITE !
KILL DIR,Y
SET DIR(0)="YO"
SET DIR("?")="Enter 'Yes' to include all divisions, or 'No' to pick one division"
SET DIR("A")="Do you want to print all divisions"
SET DIR("B")="YES"
DO ^DIR
SET SRINST=$SELECT($GET(Y(0))'="":Y(0),1:"^")
+8 IF SRINST="YES"
SET SRINST=$PIECE($$SITE^SROVAR,U,2)_" - ALL DIVISIONS"
+9 IF SRINST="NO"
DO LIST^DIC(133,"",".01","B","*","","","","","","SR")
WRITE !
Begin DoDot:1
+10 SET X=0
FOR
SET X=$ORDER(SR("DILIST",1,X))
IF 'X
QUIT
WRITE !,X,". ",SR("DILIST",1,X)
+11 KILL DIR
WRITE !
SET DIR(0)="NO^1:"_$PIECE(SR("DILIST",0),U)
SET DIR("A")="Select Number"
DO ^DIR
IF +Y<1
SET SRINST="^"
IF +Y>0
SET SRINST=SR("DILIST",2,+Y)
SET DIR("?")="Enter the corresponding number of the hospital for which you want the report to run"
End DoDot:1
+12 QUIT $SELECT(SRINST["ALL DIVISIONS":SRINST,SRINST=U:SRINST,1:$PIECE(^SRO(133,SRINST,0),U)_U_SR("DILIST",1,+Y))
SITE(CASE) ; returns pointer to file 133 indicating where case was performed
+1 ; CASE - ien in File 130
+2 NEW SRDIV,SROR
SET SRDIV=""
IF '$DATA(^SRF(CASE,"NON"))
SET SROR=$PIECE($GET(^SRF(CASE,0)),"^",2)
IF SROR'=""
SET SROR=$PIECE(^SRS(SROR,0),"^")
IF SROR'=""
SET SRDIV=$PIECE(^SC(SROR,0),"^",4)
+3 IF $PIECE($GET(^SRF(CASE,"NON")),"^")="Y"
SET SROR=$PIECE(^SRF(CASE,"NON"),"^",2)
IF SROR'=""
SET SRDIV=$PIECE(^SC(SROR,0),"^",4)
+4 IF SRDIV=""
SET SRDIV=$PIECE($GET(^SRF(CASE,8)),"^")
+5 IF SRDIV'=""
SET SRDIV=$ORDER(^SRO(133,"B",SRDIV,0))
+6 IF SRDIV=""
SET SRDIV=$ORDER(^SRO(133,0))
+7 QUIT SRDIV
WARD(SRW,SRINST,DGPMOS) ;a boolean divisional call for active ward location
+1 ; SRW - IEN in File 42
+2 ; SRINST - user division
+3 ; DGPMOS - date to check for active ward
+4 ; returns 0 - non-divisional match; 1 - divisional match
+5 NEW SRLOC,D0,X
+6 SET D0=SRW
DO WIN^DGPMDDCF
IF X=1
QUIT 0
+7 IF '$ORDER(^SRO(133,1))!(SRINST="")!(SRINST["ALL")
QUIT 1
+8 SET SRLOC=$PIECE($GET(^DIC(42,SRW,44)),"^")
IF SRLOC=""
QUIT 1
+9 SET SRDIV=$PIECE($GET(^SC(SRLOC,0)),"^",4)
IF SRDIV=""
QUIT 1
+10 QUIT SRDIV=SRINST
HL(SRLOC,SRINST) ; define division of this hospital location
+1 ; SRLOC - File 44 IEN
+2 ; SRINST - user division
+3 ; returns 0 - non-divisional match; 1 - divisional match
+4 NEW SRDIV
IF SRINST=""
QUIT 1
+5 SET SRDIV=0
+6 IF $GET(SRLOC)'=""
SET SRDIV=$PIECE($GET(^SC(SRLOC,0)),"^",4)
IF SRDIV=""
QUIT 1
+7 QUIT SRDIV=SRINST