- SCRPBK3 ;MJK/ALB - RPC Broker Utilities ; 27 FEB 96
- ;;5.3;Scheduling;**41,1015**;AUG 13, 1993;Build 21
- ;
- PRINT(SCDATA,SCPTR,SCDATE,SCTIME,SCQDEF) ;
- ; -- print pcmm report
- ;
- ; input: SCPTR -> printer name
- ; SCDATE -> run date
- ; SCTIME -> run time
- ;
- ;output:
- ; SCDATA(0) -> TaskMan task number assicated with queued report
- ;
- ; --- OR if errors were found during validation ---
- ;
- ; SCDATA(0) -> 0 - meaning errors found ^ <number of errors>
- ; SCDATA(1...n) -> error text
- ;
- ; -- SEE BOTTOM OF SCRPBK FOR MORE VARIABLE DEFINITIONS
- ;
- ; Related RPC: SCRP REPORT PRINT
- ;
- N SCQREC,SCRUNDT,SCPNTR,SCLOG,DIERR
- ;
- ; -- build query record
- D PARSE^SCRPBK5(.SCQDEF,.SCQREC)
- ;
- ; -- do validation full check and report any errors
- S SCLOG="SCDATA"
- D VALCHK^SCRPBK4(SCLOG,.SCQREC,"FULL")
- IF $G(DIERR) D G PRINTQ
- . D HDREC^SCUTBK3(.SCDATA,DIERR,"Report Printing")
- ;
- ; -- process date/time and printer data and retuen in usable format
- D INIT(SCDATE,SCTIME,SCPTR,.SCRUNDT,.SCPNTR)
- IF SCQREC("REPORTID") D
- . ; -- call appropriate report
- . D @("RPT"_SCQREC("REPORTID")_"(.SCDATA,.SCQREC,.SCPNTR,.SCRUNDT)")
- ELSE D
- . S SCDATA(0)="0^NOT A VAILD REPORT REQUEST"
- PRINTQ Q
- ;
- RPT1(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- patient/team assignment
- N VAUTD,VAUTT,VAUTR,VAUTP
- D BUILD(.SCQREC,"DIVISION",.VAUTD)
- D BUILD(.SCQREC,"TEAM",.VAUTT)
- D BUILD(.SCQREC,"ROLE",.VAUTR)
- S VAUTP="" D BUILD(.SCQREC,"PRACTITIONER",.VAUTP)
- S SCDATA(0)=$$ENTRY2^SCRPTA(.VAUTD,.VAUTT,.VAUTR,.VAUTP,SCPNTR,SCRUNDT)
- Q
- ;
- RPT2(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- detailed patient enrollments
- N VAUTD,VAUTT,VAUTC,VAUTA
- D BUILD(.SCQREC,"DIVISION",.VAUTD)
- D BUILD(.SCQREC,"TEAM",.VAUTT)
- D BUILD(.SCQREC,"CLINIC",.VAUTC)
- S VAUTA=$$PASSIGN(.SCQREC,"radAssigned")
- S SCDATA(0)=$$ENTRY2^SCRPEC(.VAUTD,.VAUTT,.VAUTC,VAUTA,SCPNTR,SCRUNDT)
- Q
- ;
- RPT3(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- practitioner's demographics
- N VAUTP
- D BUILD(.SCQREC,"PRACTITIONER",.VAUTP)
- S SCDATA(0)=$$ENTRY2^SCRPRAC(.VAUTP,SCPNTR,SCRUNDT)
- Q
- ;
- RPT4(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- practitioner's pateints
- N VAUTD,VAUTT,VAUTC,VAUTR,VAUTP,VAUTS,SCSORT
- D BUILD(.SCQREC,"DIVISION",.VAUTD)
- D BUILD(.SCQREC,"TEAM",.VAUTT)
- D BUILD(.SCQREC,"ROLE",.VAUTR)
- D BUILD(.SCQREC,"PRACTITIONER",.VAUTP)
- S VAUTS=$$YESNO(.SCQREC,"chkSummary")
- S SCSORT=$$FINDSORT(.SCQREC)
- S SCDATA(0)=$$ENTRY2^SCRPPAT(.VAUTD,.VAUTT,.VAUTR,.VAUTP,VAUTS,SCSORT,SCPNTR,SCRUNDT)
- Q
- ;
- RPT5(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- team profile
- N VAUTD,VAUTT
- D BUILD(.SCQREC,"DIVISION",.VAUTD)
- D BUILD(.SCQREC,"TEAM",.VAUTT)
- S SCDATA(0)=$$ENTRY2^SCRPITP(.VAUTD,.VAUTT,SCPNTR,SCRUNDT)
- Q
- ;
- RPT6(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- summaru listing of Teams
- N VAUTD,VAUTT,VAUTR
- D BUILD(.SCQREC,"DIVISION",.VAUTD)
- D BUILD(.SCQREC,"TEAM",.VAUTT)
- D BUILD(.SCQREC,"ROLE",.VAUTR)
- S SCDATA(0)=$$ENTRY2^SCRPSLT(.VAUTD,.VAUTT,.VAUTR,SCPNTR,SCRUNDT)
- Q
- ;
- RPT7(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- team's patients
- N VAUTD,VAUTT,VAUTR,VAUTPS,SCSORT
- D BUILD(.SCQREC,"DIVISION",.VAUTD)
- D BUILD(.SCQREC,"TEAM",.VAUTT)
- D BUILD(.SCQREC,"ROLE",.VAUTR)
- S VAUTPS=$$PSTATUS(.SCQREC,"radPatStatus")
- S SCSORT=$$FINDSORT(.SCQREC)
- S SCDATA(0)=$$ENTRY2^SCRPTP(.VAUTD,.VAUTT,.VAUTR,.VAUTPS,SCSORT,SCPNTR,SCRUNDT)
- Q
- ;
- RPT8(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- team's members
- N VAUTD,VAUTT,VAUTUC,VAUTR,SCRANG
- D BUILD(.SCQREC,"DIVISION",.VAUTD)
- D BUILD(.SCQREC,"TEAM",.VAUTT)
- D BUILD(.SCQREC,"USERCLASS",.VAUTUC)
- D BUILD(.SCQREC,"ROLE",.VAUTR)
- S SCRANG=$$RANGE(.SCQREC)
- S SCDATA(0)=$$ENTRY2^SCRPTM(.VAUTD,.VAUTT,.VAUTUC,.VAUTR,SCRANG,SCPNTR,SCRUNDT)
- Q
- ;
- INIT(SCDATE,SCTIME,SCPTR,SCRUNDT,SCPNTR) ; -- setup of general vars
- N X
- S SCPNTR="Q;"_SCPTR
- S X=SCDATE_"."_$TR($TR(SCTIME,":")," ",0)
- S SCRUNDT=+X
- Q
- ;
- BUILD(SCQREC,SCTYPE,VAUT) ; -- build selection array
- ; is type active
- IF '$$CHKTYPE^SCRPBK2(SCTYPE) G BUILDQ
- N SCX
- S SCX="",SCRT=$$ROOT(SCTYPE)
- F S SCX=$O(SCQREC("SELECTIONS",SCTYPE,SCX)) Q:SCX="" D
- . IF $D(@SCRT@(+SCX,0)) S VAUT(+SCX)=$P(^(0),U)
- IF $O(VAUT(0)) S VAUT=0
- BUILDQ Q
- ;
- ROOT(SCTYPE) ; -- determine global root for file type
- N Y
- IF SCTYPE="DIVISION" S Y="^DIC(4)" G ROOTQ
- IF SCTYPE="TEAM" S Y="^SCTM(404.51)" G ROOTQ
- IF SCTYPE="PRACTITIONER" S Y="^VA(200)" G ROOTQ
- IF SCTYPE="ROLE" S Y="^SD(403.46)" G ROOTQ
- IF SCTYPE="CLINIC" S Y="^SC" G ROOTQ
- IF SCTYPE="USERCLASS" S Y="^USR(8930)" G ROOTQ
- ROOTQ Q Y
- ;
- ;
- FINDSORT(SCQREC) ; -- find sort selected in report definition
- N I,SCRPT,SCSORT,SCSORTID
- S SCSORTID=1
- S SCRPT=+$G(SCQREC("REPORTID"))
- S SCSORT=$G(SCQREC("FIELDS","cboSort"))
- S I=0
- F S I=$O(^SD(404.92,SCRPT,"SORTS",I)) Q:'I IF $D(^(I,0)),$P(^(0),U)=SCSORT S SCSORTID=I Q
- Q SCSORTID
- ;
- YESNO(SCQREC,SCFLD) ; -- determine yes/no field value
- Q ($G(SCQREC("FIELDS",SCFLD),"NO")="YES")
- ;
- PSTATUS(SCQREC,SCFLD) ; -- determine pat status to show
- N VALUE
- S VALUE=$G(SCQREC("FIELDS",SCFLD))
- S VALUE=$S(VALUE=""!(VALUE="ALL"):1,1:VALUE)
- Q VALUE
- ;
- PASSIGN(SCQREC,SCFLD) ; -- determine if assign patient's is requested
- Q ($G(SCQREC("FIELDS",SCFLD))="Primary Care")
- ;
- RANGE(SCQREC) ; -- deterime date range
- Q $G(SCQREC("FIELDS","txtBeginDate"),DT)_U_$G(SCQREC("FIELDS","txtEndDate"),DT)
- ;
- SCRPBK3 ;MJK/ALB - RPC Broker Utilities ; 27 FEB 96
- +1 ;;5.3;Scheduling;**41,1015**;AUG 13, 1993;Build 21
- +2 ;
- PRINT(SCDATA,SCPTR,SCDATE,SCTIME,SCQDEF) ;
- +1 ; -- print pcmm report
- +2 ;
- +3 ; input: SCPTR -> printer name
- +4 ; SCDATE -> run date
- +5 ; SCTIME -> run time
- +6 ;
- +7 ;output:
- +8 ; SCDATA(0) -> TaskMan task number assicated with queued report
- +9 ;
- +10 ; --- OR if errors were found during validation ---
- +11 ;
- +12 ; SCDATA(0) -> 0 - meaning errors found ^ <number of errors>
- +13 ; SCDATA(1...n) -> error text
- +14 ;
- +15 ; -- SEE BOTTOM OF SCRPBK FOR MORE VARIABLE DEFINITIONS
- +16 ;
- +17 ; Related RPC: SCRP REPORT PRINT
- +18 ;
- +19 NEW SCQREC,SCRUNDT,SCPNTR,SCLOG,DIERR
- +20 ;
- +21 ; -- build query record
- +22 DO PARSE^SCRPBK5(.SCQDEF,.SCQREC)
- +23 ;
- +24 ; -- do validation full check and report any errors
- +25 SET SCLOG="SCDATA"
- +26 DO VALCHK^SCRPBK4(SCLOG,.SCQREC,"FULL")
- +27 IF $GET(DIERR)
- Begin DoDot:1
- +28 DO HDREC^SCUTBK3(.SCDATA,DIERR,"Report Printing")
- End DoDot:1
- GOTO PRINTQ
- +29 ;
- +30 ; -- process date/time and printer data and retuen in usable format
- +31 DO INIT(SCDATE,SCTIME,SCPTR,.SCRUNDT,.SCPNTR)
- +32 IF SCQREC("REPORTID")
- Begin DoDot:1
- +33 ; -- call appropriate report
- +34 DO @("RPT"_SCQREC("REPORTID")_"(.SCDATA,.SCQREC,.SCPNTR,.SCRUNDT)")
- End DoDot:1
- +35 IF '$TEST
- Begin DoDot:1
- +36 SET SCDATA(0)="0^NOT A VAILD REPORT REQUEST"
- End DoDot:1
- PRINTQ QUIT
- +1 ;
- RPT1(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- patient/team assignment
- +1 NEW VAUTD,VAUTT,VAUTR,VAUTP
- +2 DO BUILD(.SCQREC,"DIVISION",.VAUTD)
- +3 DO BUILD(.SCQREC,"TEAM",.VAUTT)
- +4 DO BUILD(.SCQREC,"ROLE",.VAUTR)
- +5 SET VAUTP=""
- DO BUILD(.SCQREC,"PRACTITIONER",.VAUTP)
- +6 SET SCDATA(0)=$$ENTRY2^SCRPTA(.VAUTD,.VAUTT,.VAUTR,.VAUTP,SCPNTR,SCRUNDT)
- +7 QUIT
- +8 ;
- RPT2(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- detailed patient enrollments
- +1 NEW VAUTD,VAUTT,VAUTC,VAUTA
- +2 DO BUILD(.SCQREC,"DIVISION",.VAUTD)
- +3 DO BUILD(.SCQREC,"TEAM",.VAUTT)
- +4 DO BUILD(.SCQREC,"CLINIC",.VAUTC)
- +5 SET VAUTA=$$PASSIGN(.SCQREC,"radAssigned")
- +6 SET SCDATA(0)=$$ENTRY2^SCRPEC(.VAUTD,.VAUTT,.VAUTC,VAUTA,SCPNTR,SCRUNDT)
- +7 QUIT
- +8 ;
- RPT3(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- practitioner's demographics
- +1 NEW VAUTP
- +2 DO BUILD(.SCQREC,"PRACTITIONER",.VAUTP)
- +3 SET SCDATA(0)=$$ENTRY2^SCRPRAC(.VAUTP,SCPNTR,SCRUNDT)
- +4 QUIT
- +5 ;
- RPT4(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- practitioner's pateints
- +1 NEW VAUTD,VAUTT,VAUTC,VAUTR,VAUTP,VAUTS,SCSORT
- +2 DO BUILD(.SCQREC,"DIVISION",.VAUTD)
- +3 DO BUILD(.SCQREC,"TEAM",.VAUTT)
- +4 DO BUILD(.SCQREC,"ROLE",.VAUTR)
- +5 DO BUILD(.SCQREC,"PRACTITIONER",.VAUTP)
- +6 SET VAUTS=$$YESNO(.SCQREC,"chkSummary")
- +7 SET SCSORT=$$FINDSORT(.SCQREC)
- +8 SET SCDATA(0)=$$ENTRY2^SCRPPAT(.VAUTD,.VAUTT,.VAUTR,.VAUTP,VAUTS,SCSORT,SCPNTR,SCRUNDT)
- +9 QUIT
- +10 ;
- RPT5(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- team profile
- +1 NEW VAUTD,VAUTT
- +2 DO BUILD(.SCQREC,"DIVISION",.VAUTD)
- +3 DO BUILD(.SCQREC,"TEAM",.VAUTT)
- +4 SET SCDATA(0)=$$ENTRY2^SCRPITP(.VAUTD,.VAUTT,SCPNTR,SCRUNDT)
- +5 QUIT
- +6 ;
- RPT6(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- summaru listing of Teams
- +1 NEW VAUTD,VAUTT,VAUTR
- +2 DO BUILD(.SCQREC,"DIVISION",.VAUTD)
- +3 DO BUILD(.SCQREC,"TEAM",.VAUTT)
- +4 DO BUILD(.SCQREC,"ROLE",.VAUTR)
- +5 SET SCDATA(0)=$$ENTRY2^SCRPSLT(.VAUTD,.VAUTT,.VAUTR,SCPNTR,SCRUNDT)
- +6 QUIT
- +7 ;
- RPT7(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- team's patients
- +1 NEW VAUTD,VAUTT,VAUTR,VAUTPS,SCSORT
- +2 DO BUILD(.SCQREC,"DIVISION",.VAUTD)
- +3 DO BUILD(.SCQREC,"TEAM",.VAUTT)
- +4 DO BUILD(.SCQREC,"ROLE",.VAUTR)
- +5 SET VAUTPS=$$PSTATUS(.SCQREC,"radPatStatus")
- +6 SET SCSORT=$$FINDSORT(.SCQREC)
- +7 SET SCDATA(0)=$$ENTRY2^SCRPTP(.VAUTD,.VAUTT,.VAUTR,.VAUTPS,SCSORT,SCPNTR,SCRUNDT)
- +8 QUIT
- +9 ;
- RPT8(SCDATA,SCQREC,SCPNTR,SCRUNDT) ; -- team's members
- +1 NEW VAUTD,VAUTT,VAUTUC,VAUTR,SCRANG
- +2 DO BUILD(.SCQREC,"DIVISION",.VAUTD)
- +3 DO BUILD(.SCQREC,"TEAM",.VAUTT)
- +4 DO BUILD(.SCQREC,"USERCLASS",.VAUTUC)
- +5 DO BUILD(.SCQREC,"ROLE",.VAUTR)
- +6 SET SCRANG=$$RANGE(.SCQREC)
- +7 SET SCDATA(0)=$$ENTRY2^SCRPTM(.VAUTD,.VAUTT,.VAUTUC,.VAUTR,SCRANG,SCPNTR,SCRUNDT)
- +8 QUIT
- +9 ;
- INIT(SCDATE,SCTIME,SCPTR,SCRUNDT,SCPNTR) ; -- setup of general vars
- +1 NEW X
- +2 SET SCPNTR="Q;"_SCPTR
- +3 SET X=SCDATE_"."_$TRANSLATE($TRANSLATE(SCTIME,":")," ",0)
- +4 SET SCRUNDT=+X
- +5 QUIT
- +6 ;
- BUILD(SCQREC,SCTYPE,VAUT) ; -- build selection array
- +1 ; is type active
- +2 IF '$$CHKTYPE^SCRPBK2(SCTYPE)
- GOTO BUILDQ
- +3 NEW SCX
- +4 SET SCX=""
- SET SCRT=$$ROOT(SCTYPE)
- +5 FOR
- SET SCX=$ORDER(SCQREC("SELECTIONS",SCTYPE,SCX))
- IF SCX=""
- QUIT
- Begin DoDot:1
- +6 IF $DATA(@SCRT@(+SCX,0))
- SET VAUT(+SCX)=$PIECE(^(0),U)
- End DoDot:1
- +7 IF $ORDER(VAUT(0))
- SET VAUT=0
- BUILDQ QUIT
- +1 ;
- ROOT(SCTYPE) ; -- determine global root for file type
- +1 NEW Y
- +2 IF SCTYPE="DIVISION"
- SET Y="^DIC(4)"
- GOTO ROOTQ
- +3 IF SCTYPE="TEAM"
- SET Y="^SCTM(404.51)"
- GOTO ROOTQ
- +4 IF SCTYPE="PRACTITIONER"
- SET Y="^VA(200)"
- GOTO ROOTQ
- +5 IF SCTYPE="ROLE"
- SET Y="^SD(403.46)"
- GOTO ROOTQ
- +6 IF SCTYPE="CLINIC"
- SET Y="^SC"
- GOTO ROOTQ
- +7 IF SCTYPE="USERCLASS"
- SET Y="^USR(8930)"
- GOTO ROOTQ
- ROOTQ QUIT Y
- +1 ;
- +2 ;
- FINDSORT(SCQREC) ; -- find sort selected in report definition
- +1 NEW I,SCRPT,SCSORT,SCSORTID
- +2 SET SCSORTID=1
- +3 SET SCRPT=+$GET(SCQREC("REPORTID"))
- +4 SET SCSORT=$GET(SCQREC("FIELDS","cboSort"))
- +5 SET I=0
- +6 FOR
- SET I=$ORDER(^SD(404.92,SCRPT,"SORTS",I))
- IF 'I
- QUIT
- IF $DATA(^(I,0))
- IF $PIECE(^(0),U)=SCSORT
- SET SCSORTID=I
- QUIT
- +7 QUIT SCSORTID
- +8 ;
- YESNO(SCQREC,SCFLD) ; -- determine yes/no field value
- +1 QUIT ($GET(SCQREC("FIELDS",SCFLD),"NO")="YES")
- +2 ;
- PSTATUS(SCQREC,SCFLD) ; -- determine pat status to show
- +1 NEW VALUE
- +2 SET VALUE=$GET(SCQREC("FIELDS",SCFLD))
- +3 SET VALUE=$SELECT(VALUE=""!(VALUE="ALL"):1,1:VALUE)
- +4 QUIT VALUE
- +5 ;
- PASSIGN(SCQREC,SCFLD) ; -- determine if assign patient's is requested
- +1 QUIT ($GET(SCQREC("FIELDS",SCFLD))="Primary Care")
- +2 ;
- RANGE(SCQREC) ; -- deterime date range
- +1 QUIT $GET(SCQREC("FIELDS","txtBeginDate"),DT)_U_$GET(SCQREC("FIELDS","txtEndDate"),DT)
- +2 ;