- SCRPO1 ;BP-CIOFO/KEITH - Historical Patient Position Assignment Listing ; 20 Aug 99 7:49 AM
- ;;5.3;Scheduling;**177**;AUG 13, 1993
- ;
- EN ;Queue report
- N LIST,SORT,SCSP,RTN,DESC
- S LIST="DIV,TEAM,POS,PCP,ASPR,CLINIC",SORT="DV,TM,TP,PR,EC,PA"
- S SCSP="PA",RTN="RUN^SCRPO1"
- S DESC="Historical Patient Position Assignment Listing"
- D PROMPT(LIST,SORT,SCSP,RTN,DESC) Q
- ;
- PROMPT(LIST,SORT,SCSP,SCRTN,SCDESC) ;Prompt for report parameters, queue report
- ;Input: LIST=comma delimited string of list subscripts to prompt for
- ;Input: SORT=comma delimited string of sort acronyms to prompt for
- ;Input: SCSP=acronym of last sort to add if not selected (optional)
- ;Input: SCRTN=report routine entry point
- ;Input: SCDESC=tasked job description
- ;
- N SCDIV,SCBDT,SCEDT,SC,SCI,SCX,SCOUT,SCT
- S SC="^TMP(""SC"",$J)" K @SC S SCOUT=0
- D TITL^SCRPW50(SCDESC)
- D SUBT^SCRPW50("**** Date Range Selection ****")
- S (SCBDT("B"),SCEDT("B"))="TODAY"
- G:'$$DTR^SCRPO(.SC,.SCBDT,.SCEDT) END
- D SUBT^SCRPW50("**** Report Parameter Selection ****")
- G:'$$ATYPE^SCRPO(.SC) END
- G:'$$DSUM^SCRPO(.SC) END
- F SCI=1:1:$L(LIST,",") S SCX=$P(LIST,",",SCI) D Q:SCOUT
- .S SCOUT='$$LIST^SCRPO(.SC,SCX,1)
- .Q
- G:SCOUT END
- D SUBT^SCRPW50("**** Output sort order (optional) ****")
- G:'$$SORT^SCRPO(.SC,SORT,SCSP) END
- S SCT(1)="**** Report Parameters Selected ****" D SUBT^SCRPW50(SCT(1))
- G:'$$PPAR^SCRPO(.SC,1,.SCT) END
- W !!,"This report requires 132 column output!"
- W ! N ZTSAVE S ZTSAVE("^TMP(""SC"",$J,")="",ZTSAVE("SC")=""
- D EN^XUTMDEVQ(SCRTN,SCDESC,.ZTSAVE)
- END K ^TMP("SC",$J) D DISP0^SCRPW23,END^SCRPW50 Q
- ;
- RUN ;Print report
- N SCFMT,SCTITL,SCTITL2,SCLINE,SCPAGE,SCOUT,SCFF,SCX,SCFF,SCLINE,SCPAGE
- N SC1,SC2,SC3,SC4,SC5,SC6,SC7,SCN,SCASP,SCUNP,SCI,SCPNOW
- S SCFMT=$E(^TMP("SC",$J,"FMT")),(SCFF,SCOUT,SCUNP)=0
- D BUILD(SCFMT) Q:SCOUT S SCI=0
- F S SCI=$O(^TMP("SCRPT",$J,0,"UNIQUES",SCI)) Q:'SCI S SCUNP=SCUNP+1
- D HINI D:$E(IOST)="C" DISP0^SCRPW23
- S SCTITL(2)=$$HDRX("P") D HDR^SCRPO(.SCTITL,132) Q:SCOUT S SCOUT=$$PPAR^SCRPO(.SC,,.SCTITL)=0
- Q:SCOUT
- I '$D(^TMP("SCRPT",$J,0)) D G EXIT
- .K SCTITL(2) D HDR^SCRPO(.SCTITL,132) Q:SCOUT
- .S SCX="No patient position assignments found within selected report parameters!"
- .W !!?(132-$L(SCX)\2),SCX
- .Q
- S SCPAGE=1
- I SCFMT="D" S SCTITL(2)=$$HDRX("D") D HDR^SCRPO(.SCTITL,132),SHDR("D") Q:SCOUT D
- .S SC1=""
- .F S SC1=$O(^TMP("SCRPT",$J,1,SC1)) Q:SC1=""!SCOUT D
- ..S SC2=""
- ..F S SC2=$O(^TMP("SCRPT",$J,1,SC1,SC2)) Q:SC2=""!SCOUT D
- ...S SC3=""
- ...F S SC3=$O(^TMP("SCRPT",$J,1,SC1,SC2,SC3)) Q:SC3=""!SCOUT D
- ....S SCN=^TMP("SCRPT",$J,1,SC1,SC2,SC3),SC4=""
- ....F S SC4=$O(^TMP("SCRPT",$J,2,SCN,SC4)) Q:SC4=""!SCOUT D
- .....S SC5=""
- .....F S SC5=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5)) Q:SC5=""!SCOUT D
- ......S SC6=""
- ......F S SC6=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6)) Q:SC6=""!SCOUT D
- .......S SC7=""
- .......F S SC7=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6,SC7)) Q:SC7=""!SCOUT D
- ........S SCX=^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6,SC7)
- ........I $Y>(IOSL-9) D FOOT1,HDR^SCRPO(.SCTITL,132),SHDR("D") Q:SCOUT
- ........S SCY="0^20^27^39^43^57^73^89^94^110^122" W !
- ........F SCI=1:1:11 W ?($P(SCY,U,SCI)),$P(SCX,U,SCI)
- .......Q
- ......Q
- .....Q
- ....Q
- ...Q
- ..Q
- .D:'SCOUT FOOT1
- .Q
- G:SCOUT EXIT
- S SCTITL(2)=$$HDRX("S") D HDR^SCRPO(.SCTITL,132),SHDR("S") G:SCOUT EXIT
- S SCASP=^TMP("SCRPT",$J,0,"ASSIGNMENTS")
- F SCI="PRIMARY ELIGIBILITY","MEANS TEST CATEGORY","GENDER","AGE GROUP","NATIONAL ENROLLMENT PRIORITY","TEAM","PRIMARY CARE","ASSIGNED PROVIDER","PRECEPTOR PROVIDER","DIVISION" D Q:SCOUT
- .Q:'$D(^TMP("SCRPT",$J,0,SCI))
- .D:$Y>(IOSL-9) FOOT2,HDR^SCRPO(.SCTITL,132),SHDR("S") Q:SCOUT
- .W ! D SLINE("--"_SCI_"--") S SCX=""
- .F S SCX=$O(^TMP("SCRPT",$J,0,SCI,SCX)) Q:SCX=""!SCOUT D
- ..S SCY=^TMP("SCRPT",$J,0,SCI,SCX)
- ..S SCZ=SCY*100/SCASP
- ..D:$Y>(IOSL-5) HDR^SCRPO(.SCTITL,132),SHDR("S") Q:SCOUT
- ..D SLINE(SCX,SCY,SCZ)
- ..Q
- .Q
- G:SCOUT EXIT
- W ! D SLINE("Total assignments that meet the parameters of this report:",SCASP,100)
- D SLINE("Total unique patients that meet the parameters of this report:",SCUNP,100)
- D FOOT2
- ;
- EXIT I $E(IOST)="C",'$G(SCOUT) N DIR S DIR(0)="E" D ^DIR
- F SCI="SC","SCARR","SCRPT" K ^TMP(SCI,$J)
- K SC D END^SCRPW50 Q
- ;
- SLINE(SCX,SCY,SCZ) ;Print summary line
- ;Input: SCX=element
- ;Input: SCY=count
- ;Input: SCZ=percent
- ;
- W !,$J($P(SCX,U),70) I $L($G(SCY)) W ?71,$J(SCY,10),?81,$J(SCZ,10,2)
- Q
- ;
- SHDR(SCX) ;Print report subheader
- ;Input: SCX='D' for detail, 'S' for summary
- Q:SCOUT
- I SCX="S" D Q
- .W !!?62,"Category",?76,"Count",?84,"Percent"
- .W !?30,$E(SCLINE,1,40)," -------- --------"
- .Q
- W !?20,"Pat.",?27,"Primary",?38,"MT",?94,"Enrolled",!,"Patient Name"
- W ?20,"Id.",?27,"Elig.",?38,"Cat",?43,"Team",?57,"Provider"
- W ?73,"Team Position",?89,"PC?",?94,"Clinic",?110,"Act. Date"
- W ?122,"Inac. Date",!
- W "------------------ ----- --------- --- ------------ -------------- -------------- --- -------------- ---------- ----------"
- Q
- ;
- HDRX(SCX) ;extra header line
- ;Input: SCX='P' for parameters, 'D' for detail, 'S' for summary
- Q:SCX="P" "Selected Report Parameters"
- Q $S(SCX="D":"Detail",1:"Summary")_" for Patient Position Assignments Effective: "_^TMP("SC",$J,"DTR","PBDT")_" to "_^TMP("SC",$J,"DTR","PEDT")
- ;
- HINI ;Initialize header variables
- N Y
- S SCTITL(1)="<*> HISTORICAL PATIENT POSITION ASSIGNMENT LISTING <*>"
- S SCLINE="",$P(SCLINE,"-",133)="",SCPAGE=1
- S Y=$$NOW^XLFDT() X ^DD("DD") S SCPNOW=$P(Y,":",1,2)
- Q
- ;
- STOP ;Check for stop task request
- S:$D(ZTQUEUED) (SCOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0) Q
- ;
- BUILD(SCFMT) ;Build report data
- ;Input: SCFMT=report format (detail or summary)
- N SCTM,SCTP
- ;Build from position list
- I $O(^TMP("SC",$J,"POS",0)) S SCTP=0 D Q
- .F S SCTP=$O(^TMP("SC",$J,"POS",SCTP)) Q:'SCTP!SCOUT D
- ..D CKPOS(SCTP,SCFMT),STOP
- ..Q
- .Q
- ;Build from all positions
- S SCTP=0 F S SCTP=$O(^SCTM(404.57,SCTP)) Q:'SCTP!SCOUT D
- .D CKPOS(SCTP,SCFMT),STOP
- .Q
- Q
- ;
- CKPOS(SCTP,SCFMT) ;Check team position
- ;Input: SCTP=TEAM POSITION ifn
- ;Input: SCFMT=report format (detail or summary)
- ;
- N SCDIV,SCTEAM,SCPOS,SCLINIC,SCTP0,SCX
- S SCTP0=$G(^SCTM(404.57,+SCTP,0)) Q:'$L(SCTP0)
- S SCX=$P(SCTP0,U) Q:'$L(SCX)
- S SCPOS=SCX_U_SCTP
- S SCTEAM=$P(SCTP0,U,2) Q:'$$TMDV(.SCTEAM,.SCDIV)
- S SCLINIC=$P(SCTP0,U,9) Q:'$$TPCL(.SCLINIC)
- D BTPOS(SCTP,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT)
- Q
- ;
- TPCL(SCLINIC) ;Get team position associated clinic
- ;Input: SCLINIC=associated clinic pointer from team position
- ; (returned as name^ifn, if successful and one exists)
- ;Output: '1' if success, '0' otherwise
- ;
- I $O(^TMP("SC",$J,"CLINIC",0)),'$D(^TMP("SC",$J,"CLINIC",+SCLINIC)) Q 0
- Q:SCLINIC<1 1
- S SCLINIC=$P($G(^SC(SCLINIC,0)),U)_U_SCLINIC
- Q 1
- ;
- TMDV(SCTEAM,SCDIV) ;Get team and division
- ;Input: SCTEAM=team ifn (returned as name^ifn, if successful)
- ;Input: SCDIV=variable to return division as name^ifn
- ;Output: '1' if success, '0' otherwise
- N SCTM0,SCX
- Q:SCTEAM<1 0
- I $O(^TMP("SC",$J,"TEAM",0)),'$D(^TMP("SC",$J,"TEAM",SCTEAM)) Q 0
- S SCTM0=$G(^SCTM(404.51,SCTEAM,0)) Q:'$L(SCTM0) 0
- S SCX=$P(SCTM0,U) Q:'$L(SCX) 0
- S SCTEAM=SCX_U_SCTEAM
- S SCDIV=$P(SCTM0,U,7) Q:SCDIV<1 0
- I $O(^TMP("SC",$J,"DIV",0)),'$D(^TMP("SC",$J,"DIV",SCDIV)) Q 0
- S SCX=$P($G(^DIC(4,SCDIV,0)),U) Q:'$L(SCX) 0
- S SCDIV=SCX_U_SCDIV
- Q 1
- ;
- BTPOS(SCTP,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT) ;Build list of patients for a position
- ;Input: SCTP=team position ifn
- ;Input: SCDIV=division^ifn
- ;Input: SCTEAM=team^ifn
- ;Input: SCPOS=team position^ifn
- ;Input: SCLINIC=associated clinic^ifn (if one exists)
- ;Input: SCFMT=report format (detail or summary)
- ;
- N SCARR,SCDT,SCI,SCPASS
- S SCARR="^TMP(""SCARR"",$J,1)" K @SCARR
- M SCDT=^TMP("SC",$J,"DTR") S SCDT="SCDT"
- S SCI=$$PTTP^SCAPMC(SCTP,.SCDT,SCARR),SCI=0
- F S SCI=$O(^TMP("SCARR",$J,1,SCI)) Q:'SCI D
- .S SCPASS=^TMP("SCARR",$J,1,SCI)
- .D BPTPA^SCRPO2(SCPASS,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT)
- .Q
- Q
- ;
- N SCI
- F SCI=1:1:80 W ! Q:$Y>(IOSL-7)
- W !,SCLINE
- W !,"NOTE: More than one provider may be associated with a single patient position assignment. This output returns a separate output"
- W !?6,"line for each related provider during the date range selected."
- W !!?6,"'PC?' represents provider type: AP = Associate provider, PCP = Primary Care Provider, NPC = Non-Primary Care Provider."
- W !,SCLINE
- Q
- ;
- N SCI
- F SCI=1:1:80 W ! Q:$Y>(IOSL-7)
- W !,SCLINE
- W !,"NOTE: More than one provider may be associated with a single patient position assignment. The sum of assignments related to"
- W !?6,"providers detailed in this summary is likely to be greater than the actual number of patient position assignments"
- W !?6,"returned by this report."
- W !,SCLINE
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCRPO1 8940 printed Feb 19, 2025@00:09:07 Page 2
- SCRPO1 ;BP-CIOFO/KEITH - Historical Patient Position Assignment Listing ; 20 Aug 99 7:49 AM
- +1 ;;5.3;Scheduling;**177**;AUG 13, 1993
- +2 ;
- EN ;Queue report
- +1 NEW LIST,SORT,SCSP,RTN,DESC
- +2 SET LIST="DIV,TEAM,POS,PCP,ASPR,CLINIC"
- SET SORT="DV,TM,TP,PR,EC,PA"
- +3 SET SCSP="PA"
- SET RTN="RUN^SCRPO1"
- +4 SET DESC="Historical Patient Position Assignment Listing"
- +5 DO PROMPT(LIST,SORT,SCSP,RTN,DESC)
- QUIT
- +6 ;
- PROMPT(LIST,SORT,SCSP,SCRTN,SCDESC) ;Prompt for report parameters, queue report
- +1 ;Input: LIST=comma delimited string of list subscripts to prompt for
- +2 ;Input: SORT=comma delimited string of sort acronyms to prompt for
- +3 ;Input: SCSP=acronym of last sort to add if not selected (optional)
- +4 ;Input: SCRTN=report routine entry point
- +5 ;Input: SCDESC=tasked job description
- +6 ;
- +7 NEW SCDIV,SCBDT,SCEDT,SC,SCI,SCX,SCOUT,SCT
- +8 SET SC="^TMP(""SC"",$J)"
- KILL @SC
- SET SCOUT=0
- +9 DO TITL^SCRPW50(SCDESC)
- +10 DO SUBT^SCRPW50("**** Date Range Selection ****")
- +11 SET (SCBDT("B"),SCEDT("B"))="TODAY"
- +12 if '$$DTR^SCRPO(.SC,.SCBDT,.SCEDT)
- GOTO END
- +13 DO SUBT^SCRPW50("**** Report Parameter Selection ****")
- +14 if '$$ATYPE^SCRPO(.SC)
- GOTO END
- +15 if '$$DSUM^SCRPO(.SC)
- GOTO END
- +16 FOR SCI=1:1:$LENGTH(LIST,",")
- SET SCX=$PIECE(LIST,",",SCI)
- Begin DoDot:1
- +17 SET SCOUT='$$LIST^SCRPO(.SC,SCX,1)
- +18 QUIT
- End DoDot:1
- if SCOUT
- QUIT
- +19 if SCOUT
- GOTO END
- +20 DO SUBT^SCRPW50("**** Output sort order (optional) ****")
- +21 if '$$SORT^SCRPO(.SC,SORT,SCSP)
- GOTO END
- +22 SET SCT(1)="**** Report Parameters Selected ****"
- DO SUBT^SCRPW50(SCT(1))
- +23 if '$$PPAR^SCRPO(.SC,1,.SCT)
- GOTO END
- +24 WRITE !!,"This report requires 132 column output!"
- +25 WRITE !
- NEW ZTSAVE
- SET ZTSAVE("^TMP(""SC"",$J,")=""
- SET ZTSAVE("SC")=""
- +26 DO EN^XUTMDEVQ(SCRTN,SCDESC,.ZTSAVE)
- END KILL ^TMP("SC",$JOB)
- DO DISP0^SCRPW23
- DO END^SCRPW50
- QUIT
- +1 ;
- RUN ;Print report
- +1 NEW SCFMT,SCTITL,SCTITL2,SCLINE,SCPAGE,SCOUT,SCFF,SCX,SCFF,SCLINE,SCPAGE
- +2 NEW SC1,SC2,SC3,SC4,SC5,SC6,SC7,SCN,SCASP,SCUNP,SCI,SCPNOW
- +3 SET SCFMT=$EXTRACT(^TMP("SC",$JOB,"FMT"))
- SET (SCFF,SCOUT,SCUNP)=0
- +4 DO BUILD(SCFMT)
- if SCOUT
- QUIT
- SET SCI=0
- +5 FOR
- SET SCI=$ORDER(^TMP("SCRPT",$JOB,0,"UNIQUES",SCI))
- if 'SCI
- QUIT
- SET SCUNP=SCUNP+1
- +6 DO HINI
- if $EXTRACT(IOST)="C"
- DO DISP0^SCRPW23
- +7 SET SCTITL(2)=$$HDRX("P")
- DO HDR^SCRPO(.SCTITL,132)
- if SCOUT
- QUIT
- SET SCOUT=$$PPAR^SCRPO(.SC,,.SCTITL)=0
- +8 if SCOUT
- QUIT
- +9 IF '$DATA(^TMP("SCRPT",$JOB,0))
- Begin DoDot:1
- +10 KILL SCTITL(2)
- DO HDR^SCRPO(.SCTITL,132)
- if SCOUT
- QUIT
- +11 SET SCX="No patient position assignments found within selected report parameters!"
- +12 WRITE !!?(132-$LENGTH(SCX)\2),SCX
- +13 QUIT
- End DoDot:1
- GOTO EXIT
- +14 SET SCPAGE=1
- +15 IF SCFMT="D"
- SET SCTITL(2)=$$HDRX("D")
- DO HDR^SCRPO(.SCTITL,132)
- DO SHDR("D")
- if SCOUT
- QUIT
- Begin DoDot:1
- +16 SET SC1=""
- +17 FOR
- SET SC1=$ORDER(^TMP("SCRPT",$JOB,1,SC1))
- if SC1=""!SCOUT
- QUIT
- Begin DoDot:2
- +18 SET SC2=""
- +19 FOR
- SET SC2=$ORDER(^TMP("SCRPT",$JOB,1,SC1,SC2))
- if SC2=""!SCOUT
- QUIT
- Begin DoDot:3
- +20 SET SC3=""
- +21 FOR
- SET SC3=$ORDER(^TMP("SCRPT",$JOB,1,SC1,SC2,SC3))
- if SC3=""!SCOUT
- QUIT
- Begin DoDot:4
- +22 SET SCN=^TMP("SCRPT",$JOB,1,SC1,SC2,SC3)
- SET SC4=""
- +23 FOR
- SET SC4=$ORDER(^TMP("SCRPT",$JOB,2,SCN,SC4))
- if SC4=""!SCOUT
- QUIT
- Begin DoDot:5
- +24 SET SC5=""
- +25 FOR
- SET SC5=$ORDER(^TMP("SCRPT",$JOB,2,SCN,SC4,SC5))
- if SC5=""!SCOUT
- QUIT
- Begin DoDot:6
- +26 SET SC6=""
- +27 FOR
- SET SC6=$ORDER(^TMP("SCRPT",$JOB,2,SCN,SC4,SC5,SC6))
- if SC6=""!SCOUT
- QUIT
- Begin DoDot:7
- +28 SET SC7=""
- +29 FOR
- SET SC7=$ORDER(^TMP("SCRPT",$JOB,2,SCN,SC4,SC5,SC6,SC7))
- if SC7=""!SCOUT
- QUIT
- Begin DoDot:8
- +30 SET SCX=^TMP("SCRPT",$JOB,2,SCN,SC4,SC5,SC6,SC7)
- +31 IF $Y>(IOSL-9)
- DO FOOT1
- DO HDR^SCRPO(.SCTITL,132)
- DO SHDR("D")
- if SCOUT
- QUIT
- +32 SET SCY="0^20^27^39^43^57^73^89^94^110^122"
- WRITE !
- +33 FOR SCI=1:1:11
- WRITE ?($PIECE(SCY,U,SCI)),$PIECE(SCX,U,SCI)
- End DoDot:8
- +34 QUIT
- End DoDot:7
- +35 QUIT
- End DoDot:6
- +36 QUIT
- End DoDot:5
- +37 QUIT
- End DoDot:4
- +38 QUIT
- End DoDot:3
- +39 QUIT
- End DoDot:2
- +40 if 'SCOUT
- DO FOOT1
- +41 QUIT
- End DoDot:1
- +42 if SCOUT
- GOTO EXIT
- +43 SET SCTITL(2)=$$HDRX("S")
- DO HDR^SCRPO(.SCTITL,132)
- DO SHDR("S")
- if SCOUT
- GOTO EXIT
- +44 SET SCASP=^TMP("SCRPT",$JOB,0,"ASSIGNMENTS")
- +45 FOR SCI="PRIMARY ELIGIBILITY","MEANS TEST CATEGORY","GENDER","AGE GROUP","NATIONAL ENROLLMENT PRIORITY","TEAM","PRIMARY CARE","ASSIGNED PROVIDER","PRECEPTOR PROVIDER","DIVISION"
- Begin DoDot:1
- +46 if '$DATA(^TMP("SCRPT",$JOB,0,SCI))
- QUIT
- +47 if $Y>(IOSL-9)
- DO FOOT2
- DO HDR^SCRPO(.SCTITL,132)
- DO SHDR("S")
- if SCOUT
- QUIT
- +48 WRITE !
- DO SLINE("--"_SCI_"--")
- SET SCX=""
- +49 FOR
- SET SCX=$ORDER(^TMP("SCRPT",$JOB,0,SCI,SCX))
- if SCX=""!SCOUT
- QUIT
- Begin DoDot:2
- +50 SET SCY=^TMP("SCRPT",$JOB,0,SCI,SCX)
- +51 SET SCZ=SCY*100/SCASP
- +52 if $Y>(IOSL-5)
- DO HDR^SCRPO(.SCTITL,132)
- DO SHDR("S")
- if SCOUT
- QUIT
- +53 DO SLINE(SCX,SCY,SCZ)
- +54 QUIT
- End DoDot:2
- +55 QUIT
- End DoDot:1
- if SCOUT
- QUIT
- +56 if SCOUT
- GOTO EXIT
- +57 WRITE !
- DO SLINE("Total assignments that meet the parameters of this report:",SCASP,100)
- +58 DO SLINE("Total unique patients that meet the parameters of this report:",SCUNP,100)
- +59 DO FOOT2
- +60 ;
- EXIT IF $EXTRACT(IOST)="C"
- IF '$GET(SCOUT)
- NEW DIR
- SET DIR(0)="E"
- DO ^DIR
- +1 FOR SCI="SC","SCARR","SCRPT"
- KILL ^TMP(SCI,$JOB)
- +2 KILL SC
- DO END^SCRPW50
- QUIT
- +3 ;
- SLINE(SCX,SCY,SCZ) ;Print summary line
- +1 ;Input: SCX=element
- +2 ;Input: SCY=count
- +3 ;Input: SCZ=percent
- +4 ;
- +5 WRITE !,$JUSTIFY($PIECE(SCX,U),70)
- IF $LENGTH($GET(SCY))
- WRITE ?71,$JUSTIFY(SCY,10),?81,$JUSTIFY(SCZ,10,2)
- +6 QUIT
- +7 ;
- SHDR(SCX) ;Print report subheader
- +1 ;Input: SCX='D' for detail, 'S' for summary
- +2 if SCOUT
- QUIT
- +3 IF SCX="S"
- Begin DoDot:1
- +4 WRITE !!?62,"Category",?76,"Count",?84,"Percent"
- +5 WRITE !?30,$EXTRACT(SCLINE,1,40)," -------- --------"
- +6 QUIT
- End DoDot:1
- QUIT
- +7 WRITE !?20,"Pat.",?27,"Primary",?38,"MT",?94,"Enrolled",!,"Patient Name"
- +8 WRITE ?20,"Id.",?27,"Elig.",?38,"Cat",?43,"Team",?57,"Provider"
- +9 WRITE ?73,"Team Position",?89,"PC?",?94,"Clinic",?110,"Act. Date"
- +10 WRITE ?122,"Inac. Date",!
- +11 WRITE "------------------ ----- --------- --- ------------ -------------- -------------- --- -------------- ---------- ----------"
- +12 QUIT
- +13 ;
- HDRX(SCX) ;extra header line
- +1 ;Input: SCX='P' for parameters, 'D' for detail, 'S' for summary
- +2 if SCX="P"
- QUIT "Selected Report Parameters"
- +3 QUIT $SELECT(SCX="D":"Detail",1:"Summary")_" for Patient Position Assignments Effective: "_^TMP("SC",$JOB,"DTR","PBDT")_" to "_^TMP("SC",$JOB,"DTR","PEDT")
- +4 ;
- HINI ;Initialize header variables
- +1 NEW Y
- +2 SET SCTITL(1)="<*> HISTORICAL PATIENT POSITION ASSIGNMENT LISTING <*>"
- +3 SET SCLINE=""
- SET $PIECE(SCLINE,"-",133)=""
- SET SCPAGE=1
- +4 SET Y=$$NOW^XLFDT()
- XECUTE ^DD("DD")
- SET SCPNOW=$PIECE(Y,":",1,2)
- +5 QUIT
- +6 ;
- STOP ;Check for stop task request
- +1 if $DATA(ZTQUEUED)
- SET (SCOUT,ZTSTOP)=$SELECT($$S^%ZTLOAD:1,1:0)
- QUIT
- +2 ;
- BUILD(SCFMT) ;Build report data
- +1 ;Input: SCFMT=report format (detail or summary)
- +2 NEW SCTM,SCTP
- +3 ;Build from position list
- +4 IF $ORDER(^TMP("SC",$JOB,"POS",0))
- SET SCTP=0
- Begin DoDot:1
- +5 FOR
- SET SCTP=$ORDER(^TMP("SC",$JOB,"POS",SCTP))
- if 'SCTP!SCOUT
- QUIT
- Begin DoDot:2
- +6 DO CKPOS(SCTP,SCFMT)
- DO STOP
- +7 QUIT
- End DoDot:2
- +8 QUIT
- End DoDot:1
- QUIT
- +9 ;Build from all positions
- +10 SET SCTP=0
- FOR
- SET SCTP=$ORDER(^SCTM(404.57,SCTP))
- if 'SCTP!SCOUT
- QUIT
- Begin DoDot:1
- +11 DO CKPOS(SCTP,SCFMT)
- DO STOP
- +12 QUIT
- End DoDot:1
- +13 QUIT
- +14 ;
- CKPOS(SCTP,SCFMT) ;Check team position
- +1 ;Input: SCTP=TEAM POSITION ifn
- +2 ;Input: SCFMT=report format (detail or summary)
- +3 ;
- +4 NEW SCDIV,SCTEAM,SCPOS,SCLINIC,SCTP0,SCX
- +5 SET SCTP0=$GET(^SCTM(404.57,+SCTP,0))
- if '$LENGTH(SCTP0)
- QUIT
- +6 SET SCX=$PIECE(SCTP0,U)
- if '$LENGTH(SCX)
- QUIT
- +7 SET SCPOS=SCX_U_SCTP
- +8 SET SCTEAM=$PIECE(SCTP0,U,2)
- if '$$TMDV(.SCTEAM,.SCDIV)
- QUIT
- +9 SET SCLINIC=$PIECE(SCTP0,U,9)
- if '$$TPCL(.SCLINIC)
- QUIT
- +10 DO BTPOS(SCTP,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT)
- +11 QUIT
- +12 ;
- TPCL(SCLINIC) ;Get team position associated clinic
- +1 ;Input: SCLINIC=associated clinic pointer from team position
- +2 ; (returned as name^ifn, if successful and one exists)
- +3 ;Output: '1' if success, '0' otherwise
- +4 ;
- +5 IF $ORDER(^TMP("SC",$JOB,"CLINIC",0))
- IF '$DATA(^TMP("SC",$JOB,"CLINIC",+SCLINIC))
- QUIT 0
- +6 if SCLINIC<1
- QUIT 1
- +7 SET SCLINIC=$PIECE($GET(^SC(SCLINIC,0)),U)_U_SCLINIC
- +8 QUIT 1
- +9 ;
- TMDV(SCTEAM,SCDIV) ;Get team and division
- +1 ;Input: SCTEAM=team ifn (returned as name^ifn, if successful)
- +2 ;Input: SCDIV=variable to return division as name^ifn
- +3 ;Output: '1' if success, '0' otherwise
- +4 NEW SCTM0,SCX
- +5 if SCTEAM<1
- QUIT 0
- +6 IF $ORDER(^TMP("SC",$JOB,"TEAM",0))
- IF '$DATA(^TMP("SC",$JOB,"TEAM",SCTEAM))
- QUIT 0
- +7 SET SCTM0=$GET(^SCTM(404.51,SCTEAM,0))
- if '$LENGTH(SCTM0)
- QUIT 0
- +8 SET SCX=$PIECE(SCTM0,U)
- if '$LENGTH(SCX)
- QUIT 0
- +9 SET SCTEAM=SCX_U_SCTEAM
- +10 SET SCDIV=$PIECE(SCTM0,U,7)
- if SCDIV<1
- QUIT 0
- +11 IF $ORDER(^TMP("SC",$JOB,"DIV",0))
- IF '$DATA(^TMP("SC",$JOB,"DIV",SCDIV))
- QUIT 0
- +12 SET SCX=$PIECE($GET(^DIC(4,SCDIV,0)),U)
- if '$LENGTH(SCX)
- QUIT 0
- +13 SET SCDIV=SCX_U_SCDIV
- +14 QUIT 1
- +15 ;
- BTPOS(SCTP,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT) ;Build list of patients for a position
- +1 ;Input: SCTP=team position ifn
- +2 ;Input: SCDIV=division^ifn
- +3 ;Input: SCTEAM=team^ifn
- +4 ;Input: SCPOS=team position^ifn
- +5 ;Input: SCLINIC=associated clinic^ifn (if one exists)
- +6 ;Input: SCFMT=report format (detail or summary)
- +7 ;
- +8 NEW SCARR,SCDT,SCI,SCPASS
- +9 SET SCARR="^TMP(""SCARR"",$J,1)"
- KILL @SCARR
- +10 MERGE SCDT=^TMP("SC",$JOB,"DTR")
- SET SCDT="SCDT"
- +11 SET SCI=$$PTTP^SCAPMC(SCTP,.SCDT,SCARR)
- SET SCI=0
- +12 FOR
- SET SCI=$ORDER(^TMP("SCARR",$JOB,1,SCI))
- if 'SCI
- QUIT
- Begin DoDot:1
- +13 SET SCPASS=^TMP("SCARR",$JOB,1,SCI)
- +14 DO BPTPA^SCRPO2(SCPASS,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT)
- +15 QUIT
- End DoDot:1
- +16 QUIT
- +17 ;
- +1 NEW SCI
- +2 FOR SCI=1:1:80
- WRITE !
- if $Y>(IOSL-7)
- QUIT
- +3 WRITE !,SCLINE
- +4 WRITE !,"NOTE: More than one provider may be associated with a single patient position assignment. This output returns a separate output"
- +5 WRITE !?6,"line for each related provider during the date range selected."
- +6 WRITE !!?6,"'PC?' represents provider type: AP = Associate provider, PCP = Primary Care Provider, NPC = Non-Primary Care Provider."
- +7 WRITE !,SCLINE
- +8 QUIT
- +9 ;
- +1 NEW SCI
- +2 FOR SCI=1:1:80
- WRITE !
- if $Y>(IOSL-7)
- QUIT
- +3 WRITE !,SCLINE
- +4 WRITE !,"NOTE: More than one provider may be associated with a single patient position assignment. The sum of assignments related to"
- +5 WRITE !?6,"providers detailed in this summary is likely to be greater than the actual number of patient position assignments"
- +6 WRITE !?6,"returned by this report."
- +7 WRITE !,SCLINE
- +8 QUIT