[613] | 1 | GMRVFIX ;HIOFO/FT-CONVERT C TEMPERATURES TO F, THEN REPLACE ;3/12/04 09:50
|
---|
| 2 | ;;4.0;Vitals/Measurements;**16**;Apr 25, 1997
|
---|
| 3 | ;
|
---|
| 4 | ; This routine uses the following IAs:
|
---|
| 5 | ; #2320 - ^%ZISH calls (supported)
|
---|
| 6 | ; #10063 - ^%ZTLOAD calls (supported)
|
---|
| 7 | ; #10070 - ^XMD calls (supported)
|
---|
| 8 | ; #10103 - ^XLFDT calls (supported)
|
---|
| 9 | ; #10104 - ^XLFSTR calls (supported)
|
---|
| 10 | ;
|
---|
| 11 | EN ; Main entry point
|
---|
| 12 | D QUEUE
|
---|
| 13 | Q
|
---|
| 14 | QUEUE ; Queue the clean-up
|
---|
| 15 | N ZTDESC,ZTDTH,ZTRTN,ZTIO,ZTSAVE,ZTSK
|
---|
| 16 | S ZTRTN="START^GMRVFIX",ZTIO=""
|
---|
| 17 | S ZTDTH=$$NOW^XLFDT(),ZTDESC="GMRV*4*16 DATA REPAIR"
|
---|
| 18 | D ^%ZTLOAD
|
---|
| 19 | I ZTSK>0 D
|
---|
| 20 | .D EN^DDIOL("Task "_ZTSK_" has started. I'll send you a MailMan message when I finish.","","!?5")
|
---|
| 21 | .Q
|
---|
| 22 | I ZTSK'>0 D
|
---|
| 23 | .S GMRVMSG="I couldn't start the task to repair the data."
|
---|
| 24 | .D EN^DDIOL(GMRVMSG,"","!?5")
|
---|
| 25 | .D ERRMAIL(GMRVMSG)
|
---|
| 26 | .Q
|
---|
| 27 | Q
|
---|
| 28 | START ; Start looping through the database
|
---|
| 29 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
| 30 | N GMRVCNT,GMRVFILE,GMRVFIXD,GMRVIEN,GMRVLINE,GMRVLOOP,GMRVMSG,GMRVNEW,GMRVNODE,GMRVPATH,GMRVOLD,GMRVOUT,GMRVSTOP,GMRVTEMP,GMRVTMP,GMRVTOTL
|
---|
| 31 | N POP
|
---|
| 32 | ; get TEMPERATURE ien
|
---|
| 33 | S GMRVTEMP=$O(^GMRD(120.51,"C","T",0))
|
---|
| 34 | I GMRVTEMP'>0 D Q
|
---|
| 35 | .S GMRVMSG="Can't find TEMPERATURE in the VITAL types file (120.5). Please log a NOIS."
|
---|
| 36 | .D ERRMAIL(GMRVMSG)
|
---|
| 37 | .Q
|
---|
| 38 | ;
|
---|
| 39 | S GMRVTMP(1)="The following TEMPERATURE readings in the GMRV VITAL MEASUREMENT (#120.5)"
|
---|
| 40 | S GMRVTMP(2)="file were modified. The old value was a number less than 45. It was assumed"
|
---|
| 41 | S GMRVTMP(3)="that the reading was done in Celsius units but not converted to Fahrenheit"
|
---|
| 42 | S GMRVTMP(4)="before being stored in the database. These entries have now been converted"
|
---|
| 43 | S GMRVTMP(5)="to Fahrenheit and saved. IEN indicates the record number in FILE 120.5."
|
---|
| 44 | S GMRVTMP(6)="OLD indicates the previous value and NEW indicates the new value."
|
---|
| 45 | S GMRVTMP(7)=" "
|
---|
| 46 | ; set host file name and directory path
|
---|
| 47 | S GMRVFILE="GMRV_4_16.DAT"
|
---|
| 48 | S GMRVPATH=$$PWD^%ZISH ;current directory
|
---|
| 49 | ; Open up device to print to
|
---|
| 50 | D OPEN^%ZISH("VITAL",GMRVPATH,GMRVFILE,"A") ;'A' for append
|
---|
| 51 | I POP D Q ;send email if device cannot be opened
|
---|
| 52 | .S GMRVMSG="Could not open file "_GMRVFILE_" in path "_GMRVPATH_"."
|
---|
| 53 | .D ERRMAIL(GMRVMSG)
|
---|
| 54 | .Q
|
---|
| 55 | U IO
|
---|
| 56 | ; from this point on, the Write commands are writing to the host file.
|
---|
| 57 | F GMRVLOOP=1:1:7 W !,GMRVTMP(GMRVLOOP)
|
---|
| 58 | S (GMRVFIXD,GMRVIEN,GMRVOUT,GMRVSTOP,GMRVTOTL)=0,GMRVCNT=7
|
---|
| 59 | F S GMRVIEN=$O(^GMR(120.5,"T",GMRVTEMP,GMRVIEN)) Q:'GMRVIEN!(GMRVOUT=1) D
|
---|
| 60 | .S GMRVSTOP=GMRVSTOP+1,GMRVTOTL=GMRVTOTL+1
|
---|
| 61 | .I GMRVSTOP=1000 D Q:GMRVOUT=1 ;check if the user stopped the task
|
---|
| 62 | ..S GMRVSTOP=0
|
---|
| 63 | ..I $$S^%ZTLOAD D
|
---|
| 64 | ...S GMRVOUT=1
|
---|
| 65 | ...S GMRVMSG="Job stopped by user while checking entry # "_GMRVIEN
|
---|
| 66 | ...W !,GMRVMSG
|
---|
| 67 | ...D ERRMAIL(GMRVMSG)
|
---|
| 68 | ...Q
|
---|
| 69 | ..Q
|
---|
| 70 | .Q:$P($G(^GMR(120.5,GMRVIEN,2)),U,1)=1 ;entered-in-error
|
---|
| 71 | .S GMRVNODE=$G(^GMR(120.5,GMRVIEN,0))
|
---|
| 72 | .Q:GMRVNODE=""
|
---|
| 73 | .Q:$P(GMRVNODE,U,3)'=GMRVTEMP ;not a temperature
|
---|
| 74 | .Q:+$P(GMRVNODE,U,8)'>0 ;not a numeric reading
|
---|
| 75 | .I +$P(GMRVNODE,U,8)>45!(+$P(GMRVNODE,U,8)=45) Q ;not celsius value
|
---|
| 76 | .S GMRVOLD=$P(GMRVNODE,U,8)
|
---|
| 77 | .S GMRVNEW=(+$P(GMRVNODE,U,8)*1.8)+32
|
---|
| 78 | .S GMRVNEW=$$ROUND(GMRVNEW) ;round to 2 decimal places
|
---|
| 79 | .S $P(^GMR(120.5,GMRVIEN,0),U,8)=GMRVNEW
|
---|
| 80 | .S GMRVFIXD=GMRVFIXD+1
|
---|
| 81 | .S GMRVLINE="IEN="_GMRVIEN_" "_"OLD="_GMRVOLD_" / "_"NEW="_GMRVNEW
|
---|
| 82 | .W !,GMRVLINE
|
---|
| 83 | .Q
|
---|
| 84 | I GMRVFIXD'>0 D
|
---|
| 85 | .S GMRVCNT=GMRVCNT+1
|
---|
| 86 | .S GMRVTMP(GMRVCNT)="No entries needed to be changed."
|
---|
| 87 | .W !,GMRVTMP(GMRVCNT)
|
---|
| 88 | .Q
|
---|
| 89 | S GMRVCNT=GMRVCNT+1
|
---|
| 90 | S GMRVTMP(GMRVCNT)=" "
|
---|
| 91 | W !,GMRVTMP(GMRVCNT)
|
---|
| 92 | S GMRVCNT=GMRVCNT+1
|
---|
| 93 | S GMRVTMP(GMRVCNT)="Total number of entries checked: "_GMRVTOTL
|
---|
| 94 | W !,GMRVTMP(GMRVCNT)
|
---|
| 95 | S GMRVCNT=GMRVCNT+1
|
---|
| 96 | S GMRVTMP(GMRVCNT)="Number of entries fixed: "_GMRVFIXD
|
---|
| 97 | W !,GMRVTMP(GMRVCNT)
|
---|
| 98 | S GMRVCNT=GMRVCNT+1
|
---|
| 99 | S GMRVTMP(GMRVCNT)=GMRVFILE_" in path "_GMRVPATH_" contains a listing of entries changed."
|
---|
| 100 | W !,GMRVTMP(GMRVCNT)
|
---|
| 101 | D CLOSE^%ZISH("VITAL")
|
---|
| 102 | K GMRVTMP
|
---|
| 103 | S GMRVTMP(1)="The GMRV*4*16 data repair is finished."
|
---|
| 104 | S GMRVTMP(2)=" "
|
---|
| 105 | S GMRVTMP(3)="Total number of entries checked: "_GMRVTOTL
|
---|
| 106 | S GMRVTMP(4)=" Number of entries fixed: "_GMRVFIXD
|
---|
| 107 | S GMRVTMP(5)=" "
|
---|
| 108 | S GMRVTMP(6)="The "_GMRVFILE_" file in the "_GMRVPATH_" directory"
|
---|
| 109 | S GMRVTMP(7)="contains a listing of entries changed."
|
---|
| 110 | D EMAIL(.GMRVTMP)
|
---|
| 111 | K GMRVFILE,GMRVPATH
|
---|
| 112 | Q
|
---|
| 113 | EMAIL(GMRVTMP) ; send Mailman message when job is done
|
---|
| 114 | ; Input
|
---|
| 115 | ; GMRVTMP is message text
|
---|
| 116 | N DIFROM,XMDUZ,XMSUB,XMTEXT,XMY
|
---|
| 117 | S XMSUB="GMRV*4*16 DATA REPAIR"
|
---|
| 118 | S XMY(DUZ)="",XMDUZ=.5
|
---|
| 119 | S XMTEXT="GMRVTMP("
|
---|
| 120 | D ^XMD
|
---|
| 121 | Q
|
---|
| 122 | ERRMAIL(GMRVMSG) ; Send email with error message
|
---|
| 123 | ; Input
|
---|
| 124 | ; GMRVMSG is error message text
|
---|
| 125 | N DIFROM,GMRVTEXT,XMDUZ,XMSUB,XMTEXT,XMY
|
---|
| 126 | S XMSUB="Error with GMRV*4*16 Post-Installation"
|
---|
| 127 | S XMY(DUZ)="",XMDUZ=.5
|
---|
| 128 | S GMRVTEXT(1)="The following error occurred:"
|
---|
| 129 | S GMRVTEXT(2)=GMRVMSG
|
---|
| 130 | S GMRVTEXT(3)=" "
|
---|
| 131 | S GMRVTEXT(4)="When the error is fixed, please D EN^GMRVFIX to complete the"
|
---|
| 132 | S GMRVTEXT(5)="database repair."
|
---|
| 133 | S XMTEXT="GMRVTEXT("
|
---|
| 134 | D ^XMD
|
---|
| 135 | Q
|
---|
| 136 | ROUND(X) ; Round off a number
|
---|
| 137 | N Y
|
---|
| 138 | S X=+$G(X)
|
---|
| 139 | S Y=$J(X,6,2)
|
---|
| 140 | S Y=$$STRIP^XLFSTR(Y," ")
|
---|
| 141 | S Y=+Y
|
---|
| 142 | Q Y
|
---|
| 143 | ;
|
---|