Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SDCED2

SDCED2.m

Go to the documentation of this file.
  1. SDCED2 ;ALB/JCH - VSE ENCOUNTER XREF ; 19 Oct 14 04:11PM
  1. ;;5.3;Scheduling;**628**;Aug 13, 1993;Build 371
  1. ;;
  1. Q
  1. ;
  1. APPT(SDNODE,SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,DTRANGE,TMPMON,TMPQRT,TMPYR,SDWEEKS) ; Aggregate Appointment information by Year/Quarter/Month/Week/Date
  1. N SDAPPND,SDLEN,SDTOT,TMPND,DTNAM,SDGLR,SDGLF,SDTOT,SDLEN,SDSTAT,SDSTATOT,SUFFIX
  1. N APPLEN,DIC,DR
  1. S SDAPPND=$G(^XTMP(SDNODE,"Date",SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,"APP"))
  1. ;
  1. S TMPDT=SDDT
  1. Q:'$G(SDGRP)
  1. ;
  1. ; Appointment Lengths and Statuses - Get smallest (Date) increment at full (unique) path, add to all increments and subtotals (Group/Provider totals)
  1. N SDLG,SDLG2
  1. D SDGRP^SDECXUTL(+SDCL,.SDLG)
  1. S SDLEN="" F S SDLEN=$O(^XTMP(SDNODE,"Date",SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,"APP","LEN",SDLEN)) Q:'SDLEN D
  1. .S SDLG2="" F S SDLG2=$O(^XTMP(SDNODE,"Date",SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,"APP","LEN",SDLEN,SDLG2)) Q:SDLG2="" D
  1. ..S SDTOT=$G(^XTMP(SDNODE,"Date",SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,"APP","LEN",SDLEN,SDLG2))
  1. ..Q:SDTOT=""
  1. ..;
  1. ..; New Overbook^New^Estab
  1. ..; --------------------------------------------------------------------------------------------------
  1. ..; 1. Aggregate appointments' overbooks, new, and established values
  1. ..S SDAPPND=$G(^XTMP(SDNODE,"Date",SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,"APP","LEN",SDLEN,SDLG2))
  1. ..S SDGLR="^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC"
  1. ..; Aggregate Annual, Quarterly, Monthly, Weekly Group, Division, Clinic, Provider
  1. ..F DTNAM="Year","Month","Week","Quarter","Date" D
  1. ...D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,""APP"",""DEM"")",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,SDGRP,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,SDGRP,SDCL,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,""FAC"",SDGRP,SDCL,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...I DTNAM'="Date" D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ..;
  1. ..; Don't add each group to facility and division totals - already done with group 0 (all)
  1. ..;
  1. ..; Provider Specific - Aggregate overbooks, new, and established for Provider Specific Annual, Quarterly, Monthly, Weekly, Daily totals
  1. ..S SDGLR="^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT"
  1. ..F DTNAM="Year","Quarter","Month","Week","Date" D
  1. ...D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""FAC"",SDFAC,SDPRV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""FAC"",SDFAC,""CLIN"",SDCL,""PROV"",SDPRV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""DIV"",SDIV,SDPRV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""DIV"",SDIV,""CLIN"",SDCL,SDPRV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""GRP"",SDGRP,""PROV"",SDPRV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""GRP"",SDGRP,""CLIN"",SDCL,SDPRV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ...D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,SDIV,""GRP"",SDGRP,SDPRV,""APP"",""LEN"",SDLEN,SDLG2)",DTNAM,SDAPPND)
  1. ..;
  1. ..; Group Specific by Facility - Appointment Lengths - Aggregate Resource Group Specific, Facility totals Annually, Quarterly, Monthly, Weekly, Daily
  1. ..S SDGLR="^XTMP(SDNODE,""GROUP"",DTNAM,SDRPTYP,TMPDT,SDFAC" D
  1. ...F DTNAM="Year","Quarter","Month","Week","Date" D
  1. ....S SDGLF=SDGLR_",SDGRP,""APP"",""LEN"",SDLEN,SDLG2)" D AGGSET(SDGLF,DTNAM,SDTOT)
  1. ..;
  1. ..; Appointment Statuses, by appt length
  1. ..S SDSTAT="" F S SDSTAT=$O(^XTMP(SDNODE,"Date",SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,"APP","LEN",SDLEN,"STAT",SDSTAT)) Q:SDSTAT="" D
  1. ...S SDSTATOT=$P($G(^XTMP(SDNODE,"Date",SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,"APP","LEN",SDLEN,"STAT",SDSTAT)),"^")
  1. ...;
  1. ...; 1. Full Path - Appointment Statuses by Appt Length- Aggregate Annual, Quarterly, Monthly, Weekly by Group, Division, Clinic, Provider
  1. ...S SDGLR="^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC"
  1. ...F DTNAM="Year","Month","Week","Quarter","Date" D
  1. ....I $G(DTRANGE) Q:'(DTNAM="Date")
  1. ....N SUFFIX S SUFFIX=",""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)"
  1. ....D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,SDGRP,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,SDGRP,SDCL,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,""FAC"",SDGRP,SDCL,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....I DTNAM'="Date" D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,SDGRP,SDCL,SDPRV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ...;
  1. ...; 2. Group Specific by Facility - Appointment Statuses - Aggregate Resource Group Specific, Facility totals Annually, Quarterly, Monthly, Weekly, Daily
  1. ...S SDGLR="^XTMP(SDNODE,""GROUP"",DTNAM,SDRPTYP,TMPDT,SDFAC" D
  1. ....F DTNAM="Year","Quarter","Month","Week","Date" D
  1. .....S SDGLF="^XTMP(SDNODE,""GROUP"",DTNAM,SDRPTYP,TMPDT,SDFAC,SDGRP,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)" D AGGSET(SDGLF,DTNAM,SDSTATOT)
  1. ...;
  1. ...; 3. Provider Specific - Appointment Statuses - Provider Specific Annual, Quarterly, Monthly, Weekly, Daily totals
  1. ...F DTNAM="Year","Quarter","Month","Week","Date" D
  1. ....I $G(DTRANGE) Q:DTNAM'="Date"
  1. ....D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""FAC"",SDFAC,SDPRV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""FAC"",SDFAC,""CLIN"",SDCL,""PROV"",SDPRV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""DIV"",SDIV,SDPRV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""DIV"",SDIV,""CLIN"",SDCL,SDPRV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""GRP"",SDGRP,""PROV"",SDPRV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,""GRP"",SDGRP,""CLIN"",SDCL,SDPRV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. ....D AGGSET("^XTMP(SDNODE,""PROVIDER"",DTNAM,SDRPTYP,TMPDT,SDIV,""GRP"",SDGRP,SDPRV,""APP"",""LEN"",SDLEN,""STAT"",SDSTAT)",DTNAM,SDSTATOT)
  1. Q
  1. ;
  1. SUP ; Appointment supply
  1. N SDSUP,CLNAM,SDAPPND,TMPDT,DTNAM
  1. ;
  1. Q:$P($G(SDPRV),"^",2) ; Providers do not have supply/slots, only clinics
  1. N CLNAM S CLNAM=$S($G(SDCL):$P($G(^SC(+SDCL,0)),"^"),1:$P(SDCL,"^"))
  1. S SDAPPND=$G(^XTMP(SDNODE,"Date",SDRPTYP,SDDT,SDFAC,SDIV,SDGRP,SDCL,"APP","SUP"))
  1. Q:SDAPPND=""
  1. Q:'$G(SDGRP)
  1. S TMPDT=SDDT
  1. ;
  1. ; 1. Full Path - Aggregate supply
  1. F DTNAM="Year","Month","Week","Quarter","Date" D
  1. .I $G(DTRANGE) Q:DTNAM'="Date"
  1. .; Don't add each group to facility and division totals - already done with group 0 (all)
  1. .D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,""APP"",""SUP"")",DTNAM,SDAPPND)
  1. .D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,""APP"",""SUP"")",DTNAM,SDAPPND)
  1. .D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,SDGRP,""APP"",""SUP"")",DTNAM,SDAPPND)
  1. .D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,""GRP"",SDGRP,""APP"",""SUP"")",DTNAM,SDAPPND)
  1. .D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,""CLIN"",SDGRP,SDCL,""APP"",""SUP"")",DTNAM,SDAPPND)
  1. .I DTNAM'="Date" D AGGSET("^XTMP(SDNODE,DTNAM,SDRPTYP,TMPDT,SDFAC,SDIV,SDGRP,SDCL,""APP"",""SUP"")",DTNAM,SDAPPND)
  1. .;I SDRPTYP="M" W !,"SDGRP:",SDGRP,!?5,"-SDIV:",SDIV,!?5,"-SDCL:",SDCL,!?5,"-SDAPPND:",SDAPPND
  1. ;
  1. ; Supply
  1. F DTNAM="Year","Quarter","Month","Week","Date" D
  1. .S SDGLF="^XTMP(SDNODE,""GROUP"",DTNAM,SDRPTYP,TMPDT,SDFAC,SDGRP,""APP"",""SUP"")" D AGGSET(SDGLF,DTNAM,SDAPPND)
  1. ;
  1. Q
  1. ;
  1. AGGLEN(SDGLOB,DTNAM,PRVND) ; Perform generic aggregation of Pn values into SDGLOB
  1. N I,TMPDT,TOT,AGGDATA
  1. S TMPDT=$S(DTNAM="Year":TMPYR,DTNAM="Quarter":TMPQRT,DTNAM="Month":TMPMON,DTNAM="Week":TMPWK,1:SDDT)
  1. S TOT=$P($G(@(SDGLOB)),"^")
  1. S AGGDATA=TOT+PRVND
  1. S $P(@(SDGLOB),"^")=AGGDATA
  1. Q
  1. ;
  1. AGGSET(SDGLOB,DTNAM,PRVND) ; Perform generic aggregation of Pn values into SDGLOB
  1. N I,TMPDT,TOT,AGGDATA,TMPWK
  1. S TMPWK=$$GETWEEK^SDCED1(SDDT,.SDWEEKS)
  1. S TMPDT=$S(DTNAM="Year":TMPYR,DTNAM="Quarter":TMPQRT,DTNAM="Month":TMPMON,DTNAM="Week":TMPWK,1:SDDT)
  1. S TOT=$G(@(SDGLOB))
  1. F I=1:1:$L(PRVND,"^") S $P(AGGDATA,"^",I)=($P(TOT,"^",I)+$P(PRVND,"^",I))
  1. S @(SDGLOB)=AGGDATA
  1. Q
  1. ;
  1. GETSUP2(CLIN,SUPDT) ; Get supply for date SUPDT
  1. N SLOTS,LEN,SDSUP,MAX
  1. S SDSUP=""
  1. K ^TMP("SD",$J),^TMP("SDS",$J),^TMP("SDTMP",$J),^TMP("SDTOT",$J)
  1. Q:'CLIN SDSUP
  1. ;S X1=SUPDT,X2=SUPDT D ^%DTC S MAX=X+1
  1. D INIT^SCRPW71 S SLOTS=+$$CLINIC^SCRPW71(CLIN,"S",SUPDT,SUPDT,1,1)
  1. Q:'SLOTS SDSUP
  1. S LEN=+$P($G(^SC(CLIN,"SL")),U)
  1. I LEN S SDSUP=(LEN*SLOTS)/60
  1. Q SDSUP
  1. ;
  1. APPLEN(CLIN) ; Get appt length
  1. N DIE,DIQ,DIR,DA,X,Y
  1. S DIQ(0)="I",DIC=44,DA=+$G(CLIN),DR="1912"
  1. D GETS^DIQ(DIC,DA,DR,"I","APPLEN")
  1. S APPLEN=$G(APPLEN(DIC,DA_",",1912,"I"))
  1. Q APPLEN
  1. ;