| 1 | SDOQMP ;ALB/SCK - Appointment Monitoring / Performance Measure report ; [07/17/96] | 
|---|
| 2 | ;;5.3;SCHEDULING;**47**;AUG 13,1993 | 
|---|
| 3 | Q | 
|---|
| 4 | ; | 
|---|
| 5 | EN ;  Entry point for Access PM extract to be sent to data collection server | 
|---|
| 6 | ; | 
|---|
| 7 | Q:$$CHKTASK^SDOQMP0 | 
|---|
| 8 | D INIT,LOOP,START^SDOQMP2,BLDPME | 
|---|
| 9 | D END^SDOQMP1 | 
|---|
| 10 | Q | 
|---|
| 11 | ; | 
|---|
| 12 | EN1 ;  Entry point for interactive appointment monitoring report | 
|---|
| 13 | ; | 
|---|
| 14 | N XT,XT1,CONT,PMSEL | 
|---|
| 15 | ; | 
|---|
| 16 | S PMSEL=$$SELECT^SDOQMP0 | 
|---|
| 17 | Q:PMSEL']"" | 
|---|
| 18 | ; | 
|---|
| 19 | I PMSEL="C" G EN1Q:'$$CLINIC^SDOQMP0 | 
|---|
| 20 | I PMSEL="S" G EN1Q:'$$STOP^SDOQMP0 | 
|---|
| 21 | I PMSEL="D" G EN1Q:'$$DIV^SDOQMP0 | 
|---|
| 22 | ; | 
|---|
| 23 | F XT=1:1 S XT1=$P($T(MSG+XT),";;",2) Q:XT1="$$END"  W !,XT1 | 
|---|
| 24 | AGN S CONT=0 | 
|---|
| 25 | S %ZIS="Q" D ^%ZIS  G:POP EN1Q | 
|---|
| 26 | ; | 
|---|
| 27 | I IOM'=132 D  G:'CONT AGN | 
|---|
| 28 | . S:$E(IOST,1,2)="C-" DIR("A",1)="It's not recommended to print this report to screen." | 
|---|
| 29 | . S DIR(0)="Y^A",DIR("A")="Do you want to select another device?",DIR("B")="YES" | 
|---|
| 30 | . S DIR("A",2)="The selected device does not have 132 columns." | 
|---|
| 31 | . D ^DIR K DIR | 
|---|
| 32 | . S:$D(DIRUT)!(Y=0) CONT=1 | 
|---|
| 33 | ; | 
|---|
| 34 | QUE I $D(IO("Q")) D  G EN1Q | 
|---|
| 35 | . S ZTRTN="START^SDOQMP",ZTDESC="Appointment Monitoring Report" | 
|---|
| 36 | . S:PMSEL="C" ZTSAVE("CLINIC(")="",ZTSAVE("CLINIC")="" | 
|---|
| 37 | . S:PMSEL="S" ZTSAVE("VAUTC(")="",ZTSAVE("VAUTC")="" | 
|---|
| 38 | . S:PMSEL="D" ZTSAVE("VAUTD(")="",ZTSAVE("VAUTD")="" | 
|---|
| 39 | . D ^%ZTLOAD W:$D(ZTSK) !,"TASK #: ",ZTSK | 
|---|
| 40 | . D HOME^%ZIS K IO("Q") | 
|---|
| 41 | ; | 
|---|
| 42 | D WAIT^DICD | 
|---|
| 43 | START D INIT,LOOPS^SDOQMP0,START^SDOQMP2,BLDRPT | 
|---|
| 44 | ; | 
|---|
| 45 | EN1Q D:'$D(ZTQUEUED) ^%ZISC | 
|---|
| 46 | D END^SDOQMP1 | 
|---|
| 47 | K CLINIC,^TMP("SDAMMS"),^TMP("SDPM"),VAUTD,VAUTC,^TMP("SDMSG") | 
|---|
| 48 | Q | 
|---|
| 49 | ; | 
|---|
| 50 | INIT ;   Initialize date arrays for calculating next available appointments | 
|---|
| 51 | ; | 
|---|
| 52 | S:'$D(U) U="^" | 
|---|
| 53 | K ^TMP("SDAMMS"),^TMP("SDPM"),^TMP("APPT") | 
|---|
| 54 | S ^TMP("SDAMMS",$J,"MGN")=80,(CNT,CNT1,CNT2,CNT3,CNT4)=0,IOM=80 | 
|---|
| 55 | S ^TMP("SDAMMS",$J,"PG")=0,$P(^TMP("SDAMMS",$J,"="),"=",IOM)="" | 
|---|
| 56 | S X="T" D ^%DT S DT=Y X ^DD("DD") S ^TMP("SDAMMS",$J,"DT")=Y | 
|---|
| 57 | S X="T" D ^%DT S AMMSRDT=Y | 
|---|
| 58 | S ^TMP("SDPM",$J,0)=DT | 
|---|
| 59 | S AMMSCNT="",AMMSLAST=0,AMMSZDT=DT,AMMSFDT=20,AMMSFSL=33 | 
|---|
| 60 | D DATES^SDOQMP1 | 
|---|
| 61 | Q | 
|---|
| 62 | ; | 
|---|
| 63 | LOOP ;   Loop through the clinics in the Hospital location file.  Use only those clinics with | 
|---|
| 64 | ;   an associated stop code on the required list for the access performance measure | 
|---|
| 65 | ; | 
|---|
| 66 | ;   Variables | 
|---|
| 67 | ;      AMMSD0 - Clinic IEN | 
|---|
| 68 | ; | 
|---|
| 69 | S AMMSD0=0 | 
|---|
| 70 | F  S AMMSD0=$O(^SC("AC","C",AMMSD0)) Q:'AMMSD0  D | 
|---|
| 71 | . Q:'$P($G(^SC(AMMSD0,0)),"^",7) | 
|---|
| 72 | . Q:'$$CLNOK^SDOQMP0($P($G(^SC(AMMSD0,0)),"^",7)) | 
|---|
| 73 | . Q:$G(^TMP("SDAMMS",$J,"Q"))=1 | 
|---|
| 74 | . F X1=1:1:3 D AMMSCNT^SDOQMP1 Q:AMMSLAST=0 | 
|---|
| 75 | Q | 
|---|
| 76 | ; | 
|---|
| 77 | LOOPC ;  Loop through the clinics in the hospital location file.  User can select | 
|---|
| 78 | ;  one-many-all clinics through this entry point. | 
|---|
| 79 | ; | 
|---|
| 80 | ;  Variables | 
|---|
| 81 | ;    AMMSD0 -  Clinic IEN | 
|---|
| 82 | ;    CLINIC -  Clinic array returned from VAUTOMA | 
|---|
| 83 | ; | 
|---|
| 84 | S AMMSD0=0 | 
|---|
| 85 | ;   Select all | 
|---|
| 86 | I CLINIC=1 D | 
|---|
| 87 | . F  S AMMSD0=$O(^SC("AC","C",AMMSD0)) Q:'AMMSD0  D | 
|---|
| 88 | .. Q:'$P($G(^SC(AMMSD0,0)),"^",7) | 
|---|
| 89 | .. Q:$G(^TMP("SDAMMS",$J,"Q"))=1 | 
|---|
| 90 | .. F X1=1:1:3 D AMMSCNT^SDOQMP1 Q:AMMSLAST=0 | 
|---|
| 91 | ; | 
|---|
| 92 | ;   Select One-Many | 
|---|
| 93 | I CLINIC=0&($D(CLINIC)) D | 
|---|
| 94 | . F  S AMMSD0=$O(CLINIC(AMMSD0)) Q:'AMMSD0  D | 
|---|
| 95 | .. Q:'$P($G(^SC(AMMSD0,0)),"^",7) | 
|---|
| 96 | .. Q:$G(^TMP("SDAMMS",$J,"Q"))=1 | 
|---|
| 97 | .. F X1=1:1:3 D AMMSCNT^SDOQMP1 Q:AMMSLAST=0 | 
|---|
| 98 | Q | 
|---|
| 99 | ; | 
|---|
| 100 | BLDPME ;   Build the data array to be included in the mail message. | 
|---|
| 101 | ;   If the number of data lines in the current array goes over 100, | 
|---|
| 102 | ;   Send the array and begin building a new one. | 
|---|
| 103 | ; | 
|---|
| 104 | ;   Data String format: | 
|---|
| 105 | ;       Clinic Name^Date Run^Date of Next Appt.^# of Days^Stop code^Division | 
|---|
| 106 | ; | 
|---|
| 107 | N X,LC,PMNODE,PMDT,PMMSG,PMCLNI,PMCLNE,PMAPT | 
|---|
| 108 | ; | 
|---|
| 109 | K ^TMP("SDMSG") | 
|---|
| 110 | S X=$G(^TMP("SDPM",$J,0)),PMDT=$P(X,U) | 
|---|
| 111 | S LC=1,PMCLNI=0 | 
|---|
| 112 | ; | 
|---|
| 113 | F  S PMCLNI=$O(^TMP("SDPM",$J,PMCLNI)) Q:'PMCLNI  D | 
|---|
| 114 | . S PMNODE=$G(^TMP("SDPM",$J,PMCLNI,PMDT)) | 
|---|
| 115 | . S PMCLNE=$P($G(^SC(PMCLNI,0)),U) | 
|---|
| 116 | . S PMAPT=$P(PMNODE,U) | 
|---|
| 117 | . S X2=PMDT,X1=PMAPT D ^%DTC | 
|---|
| 118 | . S ^TMP("SDMSG",$J,LC)=PMCLNE_U_PMDT_U_PMAPT_U_$S(X']"":-1,1:X)_U_$$STOPCDE^SDOQMP0(PMCLNI)_U_$$DIVISION^SDOQMP0(PMCLNI) | 
|---|
| 119 | . S LC=LC+1 | 
|---|
| 120 | ; | 
|---|
| 121 | D:LC>350 PRCLRG | 
|---|
| 122 | I LC'>350 D PRCSML | 
|---|
| 123 | DMQ Q | 
|---|
| 124 | ; | 
|---|
| 125 | PRCSML ;  Process clinic lists smaller than 500 entries | 
|---|
| 126 | N PMMSG,LC | 
|---|
| 127 | S (X,LC)=0 | 
|---|
| 128 | F  S X=$O(^TMP("SDMSG",$J,X)) Q:'X  D | 
|---|
| 129 | . S LC=LC+1 | 
|---|
| 130 | . S PMMSG(LC)=^TMP("SDMSG",$J,X) | 
|---|
| 131 | D MAIL(.PMMSG,LC) | 
|---|
| 132 | Q | 
|---|
| 133 | ; | 
|---|
| 134 | PRCLRG ;  Process clinic lists greater than 500 entries | 
|---|
| 135 | N SDTMP,XF,XL,XC | 
|---|
| 136 | S XF=1,XL=350 | 
|---|
| 137 | ; | 
|---|
| 138 | LP1 F XC=XF:1:XL Q:XC'<LC  D | 
|---|
| 139 | . S SDTMP(XC)=^TMP("SDMSG",$J,XC) | 
|---|
| 140 | ; | 
|---|
| 141 | D MAIL(.SDTMP,LC,XC) | 
|---|
| 142 | ; | 
|---|
| 143 | S XF=XL+1,XL=XL+350 | 
|---|
| 144 | K SDTMP | 
|---|
| 145 | G:XC<LC LP1 | 
|---|
| 146 | Q | 
|---|
| 147 | ; | 
|---|
| 148 | MAIL(PMDATA,LINCNT,CNT) ;  Send data message to server. | 
|---|
| 149 | ;   The data message is sent to the local notification mail group, | 
|---|
| 150 | ;   the notification mail group at the server domain, and the | 
|---|
| 151 | ;   server at the data collection server domain | 
|---|
| 152 | ; | 
|---|
| 153 | ;   Server | 
|---|
| 154 | ;      A1BO PM NEXT APPT EXTRACT at Albany ISC | 
|---|
| 155 | ; | 
|---|
| 156 | ;   Variables | 
|---|
| 157 | ;     MSG    - Data array to be sent | 
|---|
| 158 | ;     LINCNT - Number of lines in the data array | 
|---|
| 159 | ; | 
|---|
| 160 | ;   Message Format | 
|---|
| 161 | ;     Header - $START^Site Name^Facility Number^Date.Time run^Domain Name^Total lines^Last line sent | 
|---|
| 162 | ;     Body   - data array (see BLDPME) | 
|---|
| 163 | ;     Tail   - $END | 
|---|
| 164 | ; | 
|---|
| 165 | N XC,X1,%DT,XMB,PMFAC,XMLOC | 
|---|
| 166 | ; | 
|---|
| 167 | S XMLOC=0 | 
|---|
| 168 | S XMDUZ=.5 | 
|---|
| 169 | S XMY(".5")="" | 
|---|
| 170 | S XMY("S.A1BO PM NEXT APPT EXTRACT@DEVFEX.ISC-ALBANY.VA.GOV")="" | 
|---|
| 171 | S XMY("G.SD PM NOTIFICATION")="" | 
|---|
| 172 | S XMY("G.SD PM EXTRACT@ISC-ALBANY.VA.GOV")="" | 
|---|
| 173 | ; | 
|---|
| 174 | S PMFAC=$$SITE^VASITE | 
|---|
| 175 | D NOW^%DTC | 
|---|
| 176 | ; | 
|---|
| 177 | S PMDATA(.01)="$START^"_$P($G(PMFAC),"^",2,3)_"^"_%_"^"_$G(^XMB("NETNAME"))_"^"_LINCNT_"^"_$G(CNT) | 
|---|
| 178 | S PMDATA(LINCNT+1)="$END" | 
|---|
| 179 | ; | 
|---|
| 180 | S XMTEXT="PMDATA(" | 
|---|
| 181 | S XMSUB="Access PM Extract from "_$P($G(PMFAC),U,2),XMN=0 | 
|---|
| 182 | D ^XMD | 
|---|
| 183 | K XMDUZ,XMN,XMSUB,XMTEXT,XMY | 
|---|
| 184 | SMQ Q | 
|---|
| 185 | ; | 
|---|
| 186 | BLDRPT ;  Call the entry point to print the Appointment Monitoring report | 
|---|
| 187 | D START^SDOQMPR | 
|---|
| 188 | Q | 
|---|
| 189 | ; | 
|---|
| 190 | MSG ;   Message displayed to user when the EN1 entry point is used. | 
|---|
| 191 | ;; | 
|---|
| 192 | ;;This report requires 132 columns and could take a long time | 
|---|
| 193 | ;;to print depending on the number of clinics selected. | 
|---|
| 194 | ;;Please remember to QUEUE it. | 
|---|
| 195 | ;;$$END | 
|---|