| 1 | SPNSERV ;SAN/WDE-Master server rtn for the spn* data;5/28/98 | 
|---|
| 2 | ;;2.0;Spinal Cord Dysfunction;**6,8**;01/02/97 | 
|---|
| 3 | ; | 
|---|
| 4 | ; | 
|---|
| 5 | ;    This rtn is called from the option file. | 
|---|
| 6 | ;    The option is SPNSERVER it's type is a server. | 
|---|
| 7 | ;    Lines in the message with text | 
|---|
| 8 | ;    PERFORM TAG^ROUTINE will be save for processing. | 
|---|
| 9 | ;    needed variables can be included on the line. | 
|---|
| 10 | UNPK ; | 
|---|
| 11 | ;From the server sftw | 
|---|
| 12 | ;      XMER=0 for a good read | 
|---|
| 13 | ;          -1 end of message | 
|---|
| 14 | ;      XMREC is an executed var that reads the message | 
|---|
| 15 | ;      XMGR is the line of text that is being readd | 
|---|
| 16 | ;Built here | 
|---|
| 17 | ;      SPNDATA(ARRAY will contain the programs to run | 
|---|
| 18 | ;      The text in the message MUST contain | 
|---|
| 19 | ;      PERFORM TAG^ROUTINE;DESCRIPTION;TIME TO RUN; | 
|---|
| 20 | ;      the 4rd piece if present it will be SPNSDATE ie 2980101.001 | 
|---|
| 21 | ;      the 5th piece if present it will be the SPNEDATE ie 2980101.2359 | 
|---|
| 22 | ;        piece 6-10 will be parms spnparm(5...10) for open use | 
|---|
| 23 | ; | 
|---|
| 24 | ;hold xmz in spnxmz so we can delete it when all done with the message | 
|---|
| 25 | S SPNXMZ=XMZ | 
|---|
| 26 | ;  read the message and test for programs save em if there | 
|---|
| 27 | ; | 
|---|
| 28 | F SPN=1:1 X XMREC Q:(XMER=-1)  D | 
|---|
| 29 | .I $P(XMRG,";",1)["^" I $P(XMRG,";",1)["PERFORM " I $P(XMRG,";",1)["^" S SPNDATA(SPN)=XMRG | 
|---|
| 30 | ; | 
|---|
| 31 | ; | 
|---|
| 32 | ;    read the spn array and task off the routines and send notices | 
|---|
| 33 | ; | 
|---|
| 34 | I $D(SPNDATA) S SPN=0 F A=1:1 S SPN=$O(SPNDATA(SPN)) Q:SPN=""  S XMRG=$G(SPNDATA(SPN)) I $L(XMRG) D TASK | 
|---|
| 35 | EXIT ; | 
|---|
| 36 | I $G(SPNXMZ) S XMZ=SPNXMZ S XMSER="SPNSERVER" D REMSBMSG^XMA1C | 
|---|
| 37 | K SPNXMZ,XMSER,SPNPARM,SPNERR,X,A,SPNCNT,SPNDATA,SPNTXT,SPNDESC,SPNGRP | 
|---|
| 38 | K SPNSUB,ZTSAVE,ZTSK,ZTDESC,ZTIO,XMY | 
|---|
| 39 | Q | 
|---|
| 40 | ;--------------------------------------------------------------------- | 
|---|
| 41 | TASK ; | 
|---|
| 42 | ;      spnerr 0 is good 1 is an error | 
|---|
| 43 | ;      spnparm is an array that contains the data for the | 
|---|
| 44 | ;              program that is going to be ran. | 
|---|
| 45 | ;      spnparm(DESCRIPTION) is the task description and message title | 
|---|
| 46 | ;      spnparm(ENDATE) is a place holder for report end date | 
|---|
| 47 | ;      spnparm(REQUEST STRING) = the xmrg value from the server sftw | 
|---|
| 48 | ;      spnparm(RUN ROUTINE) = the routine to run | 
|---|
| 49 | ;      spnparm(SITE) = the host site | 
|---|
| 50 | ;      spnparm(STARTDATE) = is a place holder for report start dates | 
|---|
| 51 | ;      spnparm(TASKTIME) = time that the job will be ran | 
|---|
| 52 | ;      spnparm(SPNPAR /6-10/) can be used to pass other varibles needed | 
|---|
| 53 | ;      spntxt is the message required in ^spnmail | 
|---|
| 54 | ; | 
|---|
| 55 | ; | 
|---|
| 56 | ;    Loop through the XMRG variable and set up the spnparm array | 
|---|
| 57 | ; | 
|---|
| 58 | S SPNCNT=1 F X="RUN ROUTINE","DESCRIPTION","TASKTIME","STARTDATE","ENDATE","SPNPAR6","SPNPAR7","SPNPAR8","SPNPAR9","SPNPAR10" S SPNPARM(X)=$P(XMRG,";",SPNCNT) S SPNCNT=SPNCNT+1 | 
|---|
| 59 | S SPNPARM("SITE")=$G(^DD("SITE"))_"("_$G(^DD("SITE",1))_")" | 
|---|
| 60 | S SPNPARM("REQUEST STRING")=$G(XMRG) | 
|---|
| 61 | S SPNPARM("RUN ROUTINE")=$P(SPNPARM("RUN ROUTINE"),"PERFORM ",2) | 
|---|
| 62 | ; | 
|---|
| 63 | ;    Test the parms and if error send message and clean up and quit | 
|---|
| 64 | ; | 
|---|
| 65 | D TEST I SPNERR=1 D CLEAN Q | 
|---|
| 66 | ; | 
|---|
| 67 | ; | 
|---|
| 68 | ;    The data ran through the screen without error & will be tasked off. | 
|---|
| 69 | ; | 
|---|
| 70 | S ZTDTH=$G(SPNPARM("TASKTIME")) S Y=ZTDTH X ^DD("DD") S $P(SPNPARM("TASKTIME"),U,2)=Y K Y | 
|---|
| 71 | S SPNERR=0 | 
|---|
| 72 | S ZTRTN=$G(SPNPARM("RUN ROUTINE")) | 
|---|
| 73 | S ZTDESC=$G(SPNPARM("DESCRIPTION")) | 
|---|
| 74 | S ZTDTH=$P(SPNPARM("TASKTIME"),U,1) | 
|---|
| 75 | S ZTSAVE("SPNPARM(")="" | 
|---|
| 76 | S ZTIO="" | 
|---|
| 77 | D ^%ZTLOAD | 
|---|
| 78 | ; | 
|---|
| 79 | ;   test for task number if zip, send error message to group and quit | 
|---|
| 80 | ; | 
|---|
| 81 | I $D(ZTSK)=0 S ZTSK="No task number." D SENDERR D CLEAN Q | 
|---|
| 82 | ; | 
|---|
| 83 | ;;   at this point the task was set and we want to know it | 
|---|
| 84 | ; | 
|---|
| 85 | S SPNTXT(1)=$G(SPNPARM("DESCRIPTION")) | 
|---|
| 86 | S SPNTXT(2)="Has been task to run at "_^DD("SITE")_"." | 
|---|
| 87 | S SPNTXT(3)="Routine : "_$G(SPNPARM("RUN ROUTINE")) | 
|---|
| 88 | S SPNTXT(4)="Time set to run: "_$P(SPNPARM("TASKTIME"),U,2) | 
|---|
| 89 | S SPNTXT(5)="If you are not happy with the run time you" | 
|---|
| 90 | S SPNTXT(6)="can reschedule it for another time." | 
|---|
| 91 | S SPNTXT(7)="The task number is "_ZTSK | 
|---|
| 92 | S XMY("G.SPNL SCD REGISTRY@SAN-DIEGO.VA.GOV")="" | 
|---|
| 93 | S XMY("G.SPNL SCD COORDINATOR")="" | 
|---|
| 94 | S SPNDESC=$G(SPNPARM("DESCRIPTION")) | 
|---|
| 95 | D ^SPNMAIL | 
|---|
| 96 | CLEAN ; | 
|---|
| 97 | K SPNERR,SPNSUB,SPNDESC,SPNTXT,SPNPARM,SPNRTN,SPNTXT,SPNGRP | 
|---|
| 98 | Q | 
|---|
| 99 | TEST ;-------------------------------------------------------------------- | 
|---|
| 100 | ;   test the spnparm array for any missing elements | 
|---|
| 101 | ;   if ztrtn,ztdesc,tasktime are missing send us a | 
|---|
| 102 | ;   notice and go to next request. | 
|---|
| 103 | ;   If the routine is not on the disk send error message. | 
|---|
| 104 | S SPNERR=0 | 
|---|
| 105 | I $G(SPNPARM("RUN ROUTINE"))="" S SPNERR=1 | 
|---|
| 106 | S X=$G(SPNPARM("RUN ROUTINE")) S X=$P(X,"^",2) X ^%ZOSF("TEST") I $T=0 S SPNERR=1 S SPNTXT(5)="Routine not found on disk.." | 
|---|
| 107 | I $G(SPNPARM("DESCRIPTION"))="" S SPNERR=1 | 
|---|
| 108 | I $G(SPNPARM("TASKTIME"))="" S SPNERR=1 S SPNTXT(5)="No task time" | 
|---|
| 109 | I SPNERR=0 Q | 
|---|
| 110 | ; | 
|---|
| 111 | SENDERR ; this tag is called if the requested didn't get task. | 
|---|
| 112 | ; | 
|---|
| 113 | S SPNTXT(1)="The data extract at "_^DD("SITE")_" didn't arrive correct." | 
|---|
| 114 | S SPNTXT(2)="Resubmit it with the correct sting." | 
|---|
| 115 | S SPNTXT(3)="XMRG value was" | 
|---|
| 116 | S SPNTXT(4)=$G(SPNPARM("REQUEST STRING")) | 
|---|
| 117 | S SPNGRP="G.SPNL SCD REGISTRY@SAN-DIEGO.VA.GOV" | 
|---|
| 118 | S SPNDESC=$G(SPNPARM("DESCRIPTION")) | 
|---|
| 119 | D ^SPNMAIL | 
|---|
| 120 | Q | 
|---|