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

SDECXML3.m

Go to the documentation of this file.
  1. SDECXML3 ;ALB/JCH - SCHEDULING ENHANCEMENTS 3 (cont) ;11/03/14 10:59am
  1. ;;5.3;Scheduling;**628**;Aug 13, 1993;Build 371
  1. ;
  1. DIVALL(SDLCNT,SDRPTYP,SDAT,SDFAC,SDIV,DTINC,SDEBUG,SDGALL,SDCALL,SDNODE,CLNTAG,GRPFLG,DIVTAG,XMLNODE) ; All divisions - when there are > 1 divisions?
  1. N SDFILT,SDMEAS,DTNAM,SDFILT,APPTOT,SDVGRCL,SDDIVALL,DTNAM
  1. D DTNAM^SDECXUTL(DTINC,.DTNAM)
  1. S $P(SDVGRCL,"^")=1,SDDIVALL=1
  1. S SDIV="ALL"
  1. S SDFILT=$$DIV^SDECXML("All") D SETTMPF^SDECXML(.SDLCNT,SDFILT,12)
  1. ;
  1. N MULTGRP,TMPGRP,TMPGRPA,TMPDIV S MULTGRP="",TMPGRP="",TMPGRPA=""
  1. D GRPALLF^SDECXML1(SDRPTYP,SDAT,SDFAC,"All",,.CLNTAG,DTINC,DTNAM,.GRPFLG,.SDLCNT,SDEBUG,SDGALL,SDCALL,SDNODE,XMLNODE) ; If multiple groups, do "All" groups
  1. ;
  1. I $G(DIVTAG) D OUTPUT^SDECXUTL("</Division>",10,.SDLCNT,SDEBUG,.CLNTAG,.GRPFLG,.DIVTAG,XMLNODE)
  1. Q
  1. ;
  1. GRPALL(SDRPTYP,SDAT,SDFAC,SDIV,SDGRP,SDEBUG,SDGALL,SDCALL,SDNODE,CLNTAG,GRPFLG,DIVTAG,XMLNODE) ; all groups
  1. ; If ResourceGroup=All, get all clins and provs in all groups
  1. ;
  1. N TMPGRP,SDGRPALL,SDGRCL
  1. N SDGRP,SDCLN,SDGRPAR,SDDVTAG,TOT,TOTA,TOTS,SDPRV,IP,ADJDIFF,ADJDEM,APPDEM
  1. S (TMPGRP,SDGRP)="All"
  1. ;
  1. ;; Do All Groups
  1. I $G(GRPFLG) D OUTPUT^SDECXUTL("</Rg>",12,.SDLCNT,SDEBUG,.CLNTAG,.GRPFLG,.DIVTAG,XMLNODE)
  1. S SDFILT=$$GRP^SDECXML("All") D SETTMPF^SDECXML(.SDLCNT,SDFILT,13)
  1. S (TOT,TOTA,TOTS)=""
  1. S TOT=$G(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV))
  1. S TOTA=$O(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",""))
  1. S TOTS=$G(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","SUP"))
  1. ;I (TOT'="")!(TOTA)!(TOTS'="") D
  1. I $G(CLNTAG) D OUTPUT^SDECXUTL("</Rs>",15,.SDLCNT,SDEBUG,.CLNTAG,.GRPFLG,.DIVTAG,XMLNODE)
  1. S SDFILT=$$CLIN^SDECXML("All",1) D SETTMPF^SDECXML(.SDLCNT,SDFILT,15)
  1. ;
  1. ; Appointments - Supply
  1. S APPTOT=TOTS
  1. D PARSE^SDECXML2(APPTOT,"All","All","SUP")
  1. ;
  1. ; Appointments - Single Division Demand, Lengths
  1. I $G(SDIV) D
  1. .N APPLEN,SDLG2,APPDEM,APPNEW,APPEST,APPOVR,ACTOT,ADJDEM,ADJDIFF
  1. .S APPTOT="",SDLG2="",APPDEM="",APPNEW="",APPEST="",APPOVR="",ACTOT="",ADJDEM="",ADJDIFF=""
  1. .S APPLEN=0 F S APPLEN=$O(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN)) Q:'APPLEN D
  1. ..S SDLG2="" F S SDLG2=$O(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN,SDLG2)) Q:SDLG2=""!(SDLG2="STAT") D
  1. ...Q:SDLG2="STAT"
  1. ...Q:$G(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN,SDLG2))="" S ACTOT=""
  1. ...S APPTOT=$G(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN,SDLG2))
  1. ...S APPDEM=APPDEM+$P(APPTOT,"^")
  1. ..S SDRESCH="" F S SDRESCH=$O(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN,"STAT",SDRESCH)) Q:SDRESCH="" D
  1. ...Q:'($P(SDRESCH,";")="NSR"!($P(SDRESCH,";")="CPR")!($P(SDRESCH,";")="CCR"))
  1. ...S ADJDIFF=ADJDIFF+(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN,"STAT",SDRESCH)*APPLEN)
  1. .I ADJDIFF&APPDEM S ADJDEM=APPDEM-ADJDIFF
  1. .S ADJDEM=$S($G(ADJDEM):ADJDEM,1:APPDEM)
  1. .I '(APPDEM="") D PARSE^SDECXML2(APPDEM,"All","All","DEM",APPLEN,SDLG2,ADJDEM)
  1. .N APPLEN,SDLG2,APPDEM,APPNEW,APPEST,APPOVR,ACTOT
  1. .S APPTOT="",SDLG2="",APPDEM="",APPNEW="",APPEST="",APPOVR="",ACTOT=""
  1. .S APPLEN=0 F S APPLEN=$O(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN)) Q:'APPLEN D
  1. ..S SDLG2="" F S SDLG2=$O(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN,SDLG2)) Q:SDLG2="" D
  1. ...Q:SDLG2="STAT" S ACTOT=""
  1. ...S APPTOT=$G(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV,"APP","LEN",APPLEN,SDLG2))
  1. ...S APPOVR=$P(APPTOT,"^",2),APPNEW=$P(APPTOT,"^",3),APPEST=$P(APPTOT,"^",4),ACTOT=APPNEW+APPEST
  1. ...I ACTOT D PARSE^SDECXML2(ACTOT,"All","All","APPACT",APPLEN,SDLG2)
  1. ...I '(APPOVR="") D PARSE^SDECXML2(APPOVR,"All","All","APPOVR",APPLEN,SDLG2)
  1. ...I '(APPNEW="") D PARSE^SDECXML2(APPNEW,"All","All","APPNEW",APPLEN,SDLG2)
  1. ...I '(APPEST="") D PARSE^SDECXML2(APPEST,"All","All","APPEST",APPLEN,SDLG2)
  1. ;
  1. ; Encounters
  1. I $G(SDIV) D
  1. .S TOT=$G(^XTMP(SDNODE,DTNAM,SDRPTYP,SDAT,SDFAC,SDIV))
  1. I TOT'="" D PARSE^SDECXML2(TOT,"All","All")
  1. ;
  1. ; Appointments - Provider specific
  1. S SDPRV="" F IP=0:1 S SDPRV=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV)) Q:SDPRV="" D
  1. .Q:'(SDPRV["^")
  1. .D GPALCONT
  1. ;
  1. ; Do all clinics in all groups
  1. D ALLCLGRP(SDNODE,DTNAM,SDAT,SDIV)
  1. ;
  1. I $G(CLNTAG) D OUTPUT^SDECXUTL("</Rs>",15,.SDLCNT,SDEBUG,.CLNTAG,.GRPFLG,.DIVTAG,XMLNODE)
  1. I ($G(SDGRP)'=0) I $G(GRPFLG) D OUTPUT^SDECXUTL("</Rg>",13,.SDLCNT,SDEBUG,.CLNTAG,.GRPFLG,.DIVTAG,XMLNODE)
  1. ;
  1. Q
  1. ;
  1. GPALCONT ; Continue GRPALL
  1. N APPLEN,SDLG,SDLG2,APPDEM,APPTOT,SDLG2,ACTOT,ADJDEM,ADJDIFF,SDRESCH,APPDEM,DIVTOT
  1. ;
  1. ; Appointments - Single division Demand, Lengths
  1. S APPLEN="",APPDEM="",APPTOT="",SDLG2="",ACTOT="",ADJDEM="",ADJDIFF="",SDRESCH=""
  1. I $G(SDIV) D
  1. .S APPLEN=0 F S APPLEN=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV,"APP","LEN",APPLEN)) Q:'APPLEN D
  1. ..S SDLG2="" F S SDLG2=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV,"APP","LEN",APPLEN,SDLG2)) Q:SDLG2="" D
  1. ...Q:SDLG2="STAT" S ACTOT=""
  1. ...S APPTOT=$G(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV,"APP","LEN",APPLEN,SDLG2))
  1. ...Q:APPTOT="" S ACTOT=""
  1. ...S APPDEM=APPDEM+$P(APPTOT,"^")
  1. ..S SDRESCH="" F S SDRESCH=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV,"APP","LEN",APPLEN,"STAT",SDRESCH)) Q:SDRESCH="" D
  1. ...Q:'($P(SDRESCH,";")="NSR"!($P(SDRESCH,";")="CPR")!($P(SDRESCH,";")="CCR"))
  1. ...S ADJDIFF=ADJDIFF+(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV,"APP","LEN",APPLEN,"STAT",SDRESCH)*APPLEN)
  1. .I ADJDIFF&APPDEM S ADJDEM=APPDEM-ADJDIFF
  1. .S ADJDEM=$S($G(ADJDEM):ADJDEM,1:APPDEM)
  1. .D PARSE^SDECXML2(APPDEM,"All",SDPRV,"DEM",APPLEN,SDLG2,ADJDEM)
  1. .S APPLEN=0 F S APPLEN=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV,"APP","LEN",APPLEN)) Q:'APPLEN D
  1. ..S SDLG2="" F S SDLG2=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV,"APP","LEN",APPLEN,SDLG2)) Q:SDLG2="" D
  1. ...Q:SDLG2="STAT"
  1. ...S APPTOT=$G(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV,"APP","LEN",APPLEN,SDLG2))
  1. ...Q:APPTOT="" S ACTOT=""
  1. ...S APPOVR=$P(APPTOT,"^",2),APPNEW=$P(APPTOT,"^",3),APPEST=$P(APPTOT,"^",4),ACTOT=APPNEW+APPEST
  1. ...D PARSE^SDECXML2(ACTOT,"All",SDPRV,"APPACT",APPLEN,SDLG2)
  1. ...I '(APPOVR="") D PARSE^SDECXML2(APPOVR,"All",SDPRV,"APPOVR",APPLEN,SDLG2)
  1. ...I '(APPNEW="") D PARSE^SDECXML2(APPNEW,"All",SDPRV,"APPNEW",APPLEN,SDLG2)
  1. ...I '(APPEST="") D PARSE^SDECXML2(APPEST,"All",SDPRV,"APPEST",APPLEN,SDLG2)
  1. ;
  1. ; Appointments - All divisions Demand, Lengths
  1. S APPLEN="",APPDEM="",APPTOT="",SDLG2="",ACTOT="",ADJDEM="",ADJDIFF=""
  1. I '$G(SDIV) D
  1. .S APPLEN=0 F S APPLEN=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"FAC",SDFAC,SDPRV,"APP","LEN",APPLEN)) Q:'APPLEN D
  1. ..S SDLG2="" F S SDLG2=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"FAC",SDFAC,SDPRV,"APP","LEN",APPLEN,SDLG2)) Q:SDLG2="" D
  1. ...Q:SDLG2="STAT" S ACTOT=""
  1. ...S APPTOT=$G(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"FAC",SDFAC,SDPRV,"APP","LEN",APPLEN,SDLG2))
  1. ...Q:APPTOT=""
  1. ...S APPDEM=APPDEM+$P(APPTOT,"^")
  1. ..S SDRESCH="" F S SDRESCH=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"FAC",SDFAC,SDPRV,"APP","LEN",APPLEN,"STAT",SDRESCH)) Q:SDRESCH="" D
  1. ...Q:'($P(SDRESCH,";")="NSR"!($P(SDRESCH,";")="CPR")!($P(SDRESCH,";")="CCR"))
  1. ...S ADJDIFF=ADJDIFF+(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"FAC",SDFAC,SDPRV,"APP","LEN",APPLEN,"STAT",SDRESCH)*APPLEN)
  1. .I ADJDIFF&APPDEM S ADJDEM=APPDEM-ADJDIFF
  1. .S ADJDEM=$S($G(ADJDEM):ADJDEM,1:APPDEM)
  1. .D PARSE^SDECXML2(APPDEM,"All",SDPRV,"DEM",APPLEN,SDLG2,ADJDEM)
  1. .S APPLEN=0 F S APPLEN=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"FAC",SDFAC,SDPRV,"APP","LEN",APPLEN)) Q:'APPLEN D
  1. ..S SDLG2="" F S SDLG2=$O(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"FAC",SDFAC,SDPRV,"APP","LEN",APPLEN,SDLG2)) Q:SDLG2="" D
  1. ...S SDLG2="" S ACTOT=""
  1. ...S APPTOT=$G(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"FAC",SDFAC,SDPRV,"APP","LEN",APPLEN,SDLG2))
  1. ...Q:APPTOT=""
  1. ...S APPOVR=$P(APPTOT,"^",2),APPNEW=$P(APPTOT,"^",3),APPEST=$P(APPTOT,"^",4),ACTOT=APPNEW+APPEST
  1. ...D PARSE^SDECXML2(ACTOT,"All",SDPRV,"APPACT",APPLEN,SDLG2)
  1. ...I '(APPOVR="") D PARSE^SDECXML2(APPOVR,"All",SDPRV,"APPOVR",APPLEN,SDLG2)
  1. ...I '(APPNEW="") D PARSE^SDECXML2(APPNEW,"All",SDPRV,"APPNEW",APPLEN,SDLG2)
  1. ...I '(APPEST="") D PARSE^SDECXML2(APPEST,"All",SDPRV,"APPEST",APPLEN,SDLG2)
  1. ;
  1. S DIVTOT=""
  1. I $G(SDIV) S DIVTOT=$G(^XTMP(SDNODE,"PROVIDER",DTNAM,SDRPTYP,SDAT,"DIV",SDIV,SDPRV))
  1. I '(DIVTOT="") D PARSE^SDECXML2(DIVTOT,"All",SDPRV)
  1. Q
  1. ;
  1. ALLCLGRP(SDNODE,DTNAM,SDAT,SDIV) ; All clinics in this group
  1. ; Get all clinic totals for specific group, for ONE division
  1. N DIVCLNAR,SDAGTYP,CLN,IC,PRV,DIV,GRP,CLGRPCNT S IC=0,DIV="",CLGRPCNT=0
  1. K DIVCLNAR
  1. D GETDIVCL(SDNODE,DATINC,SDRPTYP,SDAT,SDFAC,SDIV,.DIVCLNAR)
  1. S CLN="" F S CLN=$O(DIVCLNAR(SDIV,CLN)) Q:CLN="" D
  1. .Q:CLN="APP"
  1. .D ONECLIN^SDECXML4(.SDLCNT,SDRPTYP,SDAT,SDFAC,SDIV,SDGRP,CLN,DTINC,"",SDEBUG,.CLNTAG,.GRPFLG,SDNODE,XMLNODE) ; Single Clinic
  1. .S PRV="" F S PRV=$O(^XTMP(SDNODE,"PROVIDER",DATINC,SDRPTYP,SDAT,"DIV",SDIV,"CLIN",CLN,PRV)) Q:PRV="" D
  1. ..Q:'(PRV["^")
  1. ..D PROVIDER^SDECXML2(.SDLCNT,SDRPTYP,SDAT,SDFAC,SDIV,"All",CLN,PRV,$E(DATINC),.CLNTAG,.GRPFLG,SDCALL,$G(DTNAM),SDGALL,SDNODE)
  1. Q
  1. ;
  1. GETDIVCL(SDNODE,DATINC,SDRPTYP,SDAT,SDFAC,DIV,DIVCLNAR) ; Get clinics in one division
  1. N TMPGRP,TMPCLN
  1. S TMPGRP=0 F S TMPGRP=$O(^XTMP(SDNODE,DATINC,SDRPTYP,SDAT,SDFAC,DIV,TMPGRP)) Q:TMPGRP="" D
  1. .Q:TMPGRP="APP"
  1. .S TMPCLN="" F S TMPCLN=$O(^XTMP(SDNODE,DATINC,SDRPTYP,SDAT,SDFAC,DIV,TMPGRP,TMPCLN)) Q:TMPCLN="" D
  1. ..Q:TMPCLN="APP"
  1. ..S DIVCLNAR(DIV,TMPCLN)=""
  1. Q
  1. ;
  1. GETGRPCL(SDNODE,DATINC,SDRPTYP,SDAT,SDFAC,GRPCLNAR) ; Get clinics in each group
  1. N DIV,CLN
  1. S DIV="" F S DIV=$O(^XTMP(SDNODE,DATINC,SDRPTYP,SDAT,SDFAC,DIV)) Q:DIV="" D
  1. .Q:DIV="APP"!(DIV="FAC") S GRP="" F S GRP=$O(^XTMP(SDNODE,DATINC,SDRPTYP,SDAT,SDFAC,DIV,GRP)) Q:GRP="" D
  1. ..Q:GRP="APP"!(GRP=0) S CLN="" F S CLN=$O(^XTMP(SDNODE,DATINC,SDRPTYP,SDAT,SDFAC,DIV,GRP,CLN)) Q:CLN="" D
  1. ...Q:CLN="APP" S GRPCLNAR(GRP,CLN)=""
  1. Q