| 1 | SROQT ;BIR/ADM - QTRLY RPT MESSAGE TO SERVER ;07/18/07
 | 
|---|
| 2 |  ;;3.0; Surgery ;**38,43,62,67,70,77,50,95,123,126,129,153,160,163**;24 Jun 93;Build 2
 | 
|---|
| 3 |  ;** NOTICE: This routine is part of an implementation of a nationally
 | 
|---|
| 4 |  ;**         controlled procedure. Local modifications to this routine
 | 
|---|
| 5 |  ;**         are prohibited.
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  S SRD=^XMB("NETNAME"),ISC=0 I $E(SRD,1,3)="FO-"!(SRD["ISC-")!(SRD["ISC.")!(SRD["FORUM")!(SRD["TST")!(SRD[".FO-") S ISC=1
 | 
|---|
| 8 |  K ^TMP("SRQTR",$J),^TMP("SRATT",$J) N SRDIV S SRDIV=$P($$SITE^SROVAR,"^",3)_$S(SRIEN:"-"_SRIEN,1:"")
 | 
|---|
| 9 |  S SRSMO=$E(SRSTART,4,5),SRQTR=$S(SRSMO=10:1,SRSMO="01":2,SRSMO="04":3,1:4),SRFYR=$S(SRQTR=1:$E(SRSTART,1,3)+1,1:$E(SRSTART,1,3))+1700,SRFQ=SRFYR_SRQTR
 | 
|---|
| 10 |  S SRNODE=SRDIV_"^1^"_SRFQ_"^"_DT_"^"_SRCASES_"^"_SRMAJOR_"^"_SRMORT_"^"_SRCOMP_"^"_SRINPAT_"^"_SREMERG_"^"_SR60 F I=1:1:7 S SRNODE=SRNODE_"^"_SRASA(I)
 | 
|---|
| 11 |  S SRNODE=SRNODE_"^"_SROPD_"^"_SRINV("O")_"^"_SRINV("I")_"^"_SRADMT
 | 
|---|
| 12 |  I SRIEN S SRNODE=SRNODE_"^"_SRINST_"^"_SRSTATN
 | 
|---|
| 13 |  S ^TMP("SRQTR",$J,1)=SRNODE
 | 
|---|
| 14 | SP S SRNODE=SRDIV_"^2" F SRSS=50:1:55 S SRNODE=SRNODE_"^"_^TMP("SRSS",$J,SRSS)
 | 
|---|
| 15 |  S ^TMP("SRQTR",$J,2)=SRNODE
 | 
|---|
| 16 |  S SRNODE=SRDIV_"^3" F SRSS=56:1:61 S SRNODE=SRNODE_"^"_^TMP("SRSS",$J,SRSS)
 | 
|---|
| 17 |  S ^TMP("SRQTR",$J,3)=SRNODE
 | 
|---|
| 18 |  S SRNODE=SRDIV_"^4" F SRSS=62,48,49,78,"ZZ" S SRNODE=SRNODE_"^"_^TMP("SRSS",$J,SRSS)
 | 
|---|
| 19 |  S ^TMP("SRQTR",$J,4)=SRNODE
 | 
|---|
| 20 | IX S SRNODE=SRDIV_"^5" F J=1:1:6 D PROC
 | 
|---|
| 21 |  S SRNODE=SRNODE_"^^^" F J=9:1:12 D PROC
 | 
|---|
| 22 |  S ^TMP("SRQTR",$J,5)=SRNODE
 | 
|---|
| 23 | COMP S SRNODE=SRDIV_"^6" F I=1:1:38 S SRNODE=SRNODE_"^"_SRC(I)
 | 
|---|
| 24 |  S ^TMP("SRQTR",$J,6)=SRNODE
 | 
|---|
| 25 | RES S X="" F I=1:1:14,99 S X=X_$G(SRATT(I))_"^"
 | 
|---|
| 26 |  S ^TMP("SRATT",$J,"TOTAL")=X
 | 
|---|
| 27 |  F K="J","N" S X="" D
 | 
|---|
| 28 |  .F I=1:1:14,99 S X=X_$G(SRATT(K,I))_"^"
 | 
|---|
| 29 |  .S ^TMP("SRATT",$J,K)=X
 | 
|---|
| 30 |  S SRNODE=SRDIV_"^7^"_SRWC_"^"_$P(^TMP("SRATT",$J,"TOTAL"),"^",1,4)_"^"_$P(^TMP("SRATT",$J,"TOTAL"),"^",15)
 | 
|---|
| 31 |  S SRNODE=SRNODE_"^"_SRIN_"^"_$P(^TMP("SRATT",$J,"J"),"^",1,4)_"^"_$P(^TMP("SRATT",$J,"J"),"^",15)_"^"_$P(^TMP("SRATT",$J,"N"),"^",1,4)_"^"_$P(^TMP("SRATT",$J,"N"),"^",15)
 | 
|---|
| 32 |  S SRNODE=SRNODE_"^"_$P(^TMP("SRATT",$J,"TOTAL"),"^",5,8)_"^"_$P(^TMP("SRATT",$J,"J"),"^",5,8)_"^"_$P(^TMP("SRATT",$J,"N"),"^",5,8)
 | 
|---|
| 33 |  S ^TMP("SRQTR",$J,7)=SRNODE
 | 
|---|
| 34 | HIP S SRNODE=SRDIV_"^8" F J=7,8 D PROC
 | 
|---|
| 35 |  S SRNODE=SRNODE_"^"_SRTOV_"^"_SRTONO_"^"_SRTONE_"^"_SRICY_"^"_SRICNO_"^"_SRICNR_"^"_SRICNE_"^"_SRSCY_"^"_SRSCNO_"^"_SRSCNR_"^"_SRSCNE
 | 
|---|
| 36 |  F I="C","D","N","P","S","U","O","ZZ" S SRNODE=SRNODE_"^"_SRHAIR(I)
 | 
|---|
| 37 |  S ^TMP("SRQTR",$J,8)=SRNODE
 | 
|---|
| 38 |  S SRNODE=SRDIV_"^9^"_$P(^TMP("SRATT",$J,"TOTAL"),"^",9,14)_"^"_$P(^TMP("SRATT",$J,"J"),"^",9,14)_"^"_$P(^TMP("SRATT",$J,"N"),"^",9,14)
 | 
|---|
| 39 |  S ^TMP("SRQTR",$J,9)=SRNODE
 | 
|---|
| 40 | MSG ; create mail message to server
 | 
|---|
| 41 |  S X=$$ACTIVE^XUSER(DUZ) I '+X S XMDUZ=.5
 | 
|---|
| 42 |  S XMSUB="QUARTERLY REPORT - SURGICAL SERVICE"
 | 
|---|
| 43 |  K XMY I 'ISC S (XMY("S.SRCOSERV@FO-HINES.MED.VA.GOV"),XMY("G.SRCOSERV@FO-HINES.MED.VA.GOV"))=""
 | 
|---|
| 44 |  I ISC S XMY("G.SR-QUARTERLY@"_SRD)=""
 | 
|---|
| 45 |  S XMTEXT="^TMP(""SRQTR"",$J," N I D ^XMD K ^TMP("SRQTR",$J),XMY,XMTEXT
 | 
|---|
| 46 |  Q:SRIEN
 | 
|---|
| 47 | MSG1 S XMY("G.SR-QUARTERLY@"_SRD)="",XMSUB="QUARTERLY REPORT TRANSMISSION"
 | 
|---|
| 48 |  S SRMSG(1)="The Quarterly Report for quarter #"_$E(SRFQ,5)_" of fiscal year "_$E(SRFQ,1,4)_" has been"
 | 
|---|
| 49 |  S SRMSG(2)="transmitted to the central database of Surgical Service, VHA Headquarters."
 | 
|---|
| 50 |  S XMTEXT="SRMSG(" N I D ^XMD K XMY,XMTEXT
 | 
|---|
| 51 |  D ^SROQM,SITE
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | PROC S X=^TMP("SRPROC",$J,J),SRNODE=SRNODE_"^"_$P(X,"^")_"^"_$P(X,"^",3)_"^"_$P(X,"^",2)
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 | QUE ; queue creation of report to central database
 | 
|---|
| 56 |  W ! K %DT S %DT("A")="Queue report to run at what date/time ? ",%DT(0)="NOW",%DT("B")="NOW",%DT="AEFXT" D ^%DT I Y=-1 S SRSOUT=1 G END^SROQ
 | 
|---|
| 57 |  D TSK G END^SROQ
 | 
|---|
| 58 | TSK S ZTDTH=Y,ZTIO="",ZTDESC="Surgery Quarterly Report",(ZTSAVE("SRSTART"),ZTSAVE("SREND"),ZTSAVE("SRFLG"),ZTSAVE("SRT"))="",ZTRTN="EN^SROQT" D ^%ZTLOAD
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 | EN ; entry point when queued to generate mail report only
 | 
|---|
| 61 |  K SRINSTP N SRDVSN,SRIEN,SRMULT S SRDVSN="",(SRCOUNT,SRIEN,SRMULT,X)=0 D
 | 
|---|
| 62 |  .F  S X=$O(^SRO(133,X)) Q:'X  I '$P($G(^SRO(133,X,0)),"^",21) S SRCOUNT=SRCOUNT+1,SRDVSN(X)=$P(^SRO(133,X,0),"^")
 | 
|---|
| 63 |  .I SRCOUNT>1 S SRMULT=1
 | 
|---|
| 64 |  D SET^SROQ2,SROQT I SRMULT D
 | 
|---|
| 65 |  .S SRIEN=0 F  S SRIEN=$O(SRDVSN(SRIEN)) Q:'SRIEN  D
 | 
|---|
| 66 |  ..S SRINSTP=SRDVSN(SRIEN),SRINST=$$GET1^DIQ(4,SRINSTP,.01),SRSTATN=$$GET1^DIQ(4,SRINSTP,99)
 | 
|---|
| 67 |  ..D SET^SROQ2,SROQT
 | 
|---|
| 68 |  F I="SRATT","SRDEATH","SRDPT","SRDREL","SRDTH","SREXP","SRINOUT","SRIOD","SRP","SRPROC","SRREL","SRSP","SRSS","SRTN" K ^TMP(I,$J)
 | 
|---|
| 69 |  S ZTREQ="@"
 | 
|---|
| 70 |  I SRQTR=2 D Q1 Q
 | 
|---|
| 71 |  I SRQTR=3 D Q2 Q
 | 
|---|
| 72 |  I SRQTR=4 D Q3
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 | SITE ; update site parameters file
 | 
|---|
| 75 |  S X=$E(SRSTART,4,7),Y=$S(X="1001":1,X="0101":2,X="0401":3,1:4),SRLATE=SRYR_Y
 | 
|---|
| 76 |  S SRE=0 F  S SRE=$O(^SRO(133,SRE)) Q:'SRE  I $P(^SRO(133,SRE,0),"^",18)<SRLATE S $P(^(0),"^",18)=SRLATE
 | 
|---|
| 77 | DALERT ; delete alert
 | 
|---|
| 78 |  S XQAID="SRQTR-"_SRLATE,XQAKILL=0 D DELETEA^XQALERT
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 | NIGHT ; determine if current quarterly report has been transmitted
 | 
|---|
| 81 |  D CURRENT S SRYR=SRYR+1700,SRFQ=SRYR_SRQTR,SRE=0 S SRE=$O(^SRO(133,SRE)) I $P(^SRO(133,SRE,0),"^",18)'<SRFQ Q
 | 
|---|
| 82 |  S SRALERT=0 I SRDAY>206&(SRDAY<214)!(SRDAY>507&(SRDAY<515))!(SRDAY>806&(SRDAY<814))!(SRDAY>1106&(SRDAY<1114)) S SRALERT=1
 | 
|---|
| 83 |  D:SRALERT ALERT^SROQ1A D:'SRALERT AUTO
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 | CURRENT ; get current reporting quarter
 | 
|---|
| 86 |  S SRYR=$E(DT,1,3),SRDAY=$E(DT,4,7),SRQTR=4 I SRDAY>206 S SRQTR=$S(SRDAY<508:1,SRDAY<807:2,SRDAY<1107:3,1:4)
 | 
|---|
| 87 |  I SRQTR=4,SRDAY<207 S SRYR=SRYR-1
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 | DATES ; get start and end dates
 | 
|---|
| 90 |  S SRSMO=$S(SRQTR=1:"1001",SRQTR=2:"0101",SRQTR=3:"0401",1:"0701"),SREMO=$S(SRQTR=1:"1231",SRQTR=2:"0331",SRQTR=3:"0630",1:"0930"),SRSTART=$S(SRQTR=1:SRYR-1,1:SRYR)_SRSMO,SREND=$S(SRQTR=1:SRYR-1,1:SRYR)_SREMO
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 | VAR ; set report variables for non-interactive calls     
 | 
|---|
| 93 |  D CURRENT,DATES S SRFLG=1
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | AUTO ; automatic transmission of report
 | 
|---|
| 96 |  D VAR S (SRT,SRSOUT)=1 D NOW^%DTC S Y=$E(%,1,12) D TSK
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 | Q1 ; transmit report for 1st quarter
 | 
|---|
| 99 |  S (SRFLG,SRT)=1 D NOW^%DTC S SRNOW=+$E(%,1,12)
 | 
|---|
| 100 |  S SRYR=$E(SRSTART,1,3),SRYR=SRYR-1,SRSTART=SRYR_"1001",SREND=SRYR_"1231" D TSK1
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 | Q2 ; transmit report for 2nd quarter
 | 
|---|
| 103 |  S (SRFLG,SRT)=1 D NOW^%DTC S SRNOW=+$E(%,1,12)
 | 
|---|
| 104 |  S SRYR=$E(SRSTART,1,3),SRSTART=SRYR_"0101",SREND=SRYR_"0331" D TSK1
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 | Q3 ; transmit report for 3rd quarter
 | 
|---|
| 107 |  S (SRFLG,SRT)=1 D NOW^%DTC S SRNOW=+$E(%,1,12)
 | 
|---|
| 108 |  S SRYR=$E(SRSTART,1,3),SRSTART=SRYR_"0401",SREND=SRYR_"0630" D TSK1
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 | TSK1 S ZTDTH=SRNOW,ZTIO="",ZTDESC="Surgery Quarterly Report",(ZTSAVE("SRSTART"),ZTSAVE("SREND"),ZTSAVE("SRFLG"),ZTSAVE("SRT"))="",ZTRTN="EN^SROQT" D ^%ZTLOAD
 | 
|---|
| 111 |  Q
 | 
|---|