BMXRPC1 ; IHS/OIT/HMW - UTIL: REMOTE PROCEDURE CALLS ;
;;4.0;BMX;;JUN 28, 2010
;;* MICHAEL REMILLARD, DDS * ALASKA NATIVE MEDICAL CENTER *
;; UTILITY: CODE FOR REMOTE PROCEDURE CALLS.
;; RETURNS PATIENT DATA, HEALTH SUMMARY, FACE SHEET.
;
;
;----------
PDATA(BMXDATA,BMXDFN) ;EP
;---> Return Patient Data in 5 ^-delimited pieces:
;---> 1 - DOB in format: OCT 01,1994.
;---> 2 - Age in format: 35 Months.
;---> 3 - Text of Patient's sex.
;---> 4 - HRCN in the format XX-XX-XX.
;---> 5 - Text of ACTIVE/INACTIVE Status.
;---> Parameters:
; 1 - BMXDATA (ret) String of patient data||error.
; 2 - BMXDFN (req) DFN of patient.
;
;---> Delimiter to pass error with result to GUI.
N BMX31,BMXERR S BMX31=$C(31)_$C(31)
S BMXDATA="",BMXERR=""
;
;---> If DFN not supplied, set Error Code and quit.
I '$G(BMXDFN) D Q
.;D ERRCD^BMXUTL2(201,.BMXERR) S BMXDATA=BMX31_BMXERR
;
;---> DOB.
S BMXDATA=$$TXDT1^BMXUTL5($$DOB^BMXUTL1(BMXDFN))
;
;---> Age.
S BMXDATA=BMXDATA_U_$$AGEF^BMXUTL1(BMXDFN)
;
;---> Text of sex.
S BMXDATA=BMXDATA_U_$$SEXW^BMXUTL1(BMXDFN)
;
;---> HRCN, format XX-XX-XX.
S BMXDATA=BMXDATA_U_$$HRCN^BMXUTL1(BMXDFN)
;
;---> Active/Inactive Status.
;S BMXDATA=BMXDATA_U_$$ACTIVE^BMXUTL1(BMXDFN)
;
S BMXDATA=BMXDATA_BMX31
;
Q
;
;
;----------
HS(BMXGBL,BMXDFN) ;EP
;---> Return patient's Health Summary in global array, ^BMXTEMP($J,"HS".
;---> Lines delimited by "^".
;---> Called by RPC: BMX IMMSERVE PT PROFILE
;---> Parameters:
; 1 - BMXGBL (ret) Name of result global containing patient's
; Health Summary, passed to Broker.
; 2 - BMXDFN (req) DFN of patient.
;
;---> Delimiter to pass error with result to GUI.
N BMX30,BMX31,BMXERR,X
S BMX30=$C(30),BMX31=$C(31)_$C(31)
S BMXGBL="^BMXTEMP("_$J_",""HS"")",BMXERR=""
K ^BMXTEMP($J,"HS")
;
;---> If DFN not supplied, set Error Code and quit.
I '$G(BMXDFN) D Q
.;D ERRCD^BMXUTL2(201,.BMXERR) S ^BMXTEMP($J,"HS",I)=BMX31_BMXERR
;
;---> If patient does not exist, set Error Code and quit.
I '$D(^AUPNPAT(BMXDFN,0)) D Q
.;D ERRCD^BMXUTL2(203,.BMXERR) S ^BMXTEMP($J,"HS",I)=BMX31_BMXERR
;
N APCHSPAT,APCHSTYP
S APCHSPAT=BMXDFN,APCHSTYP=7
;---> Doesn't work from Device 56.
;D GUIR^XBLM("EN^APCHS","^TMP(""BMXHS"",$J,")
;
;---> Generate a host file name.
N BMXFN S BMXFN="XB"_$J
;
D
.;---> Important to preserve IO variables for when $I returns to 56.
.N IO,IOBS,IOF,IOHG,IOM,ION,IOPAR,IOS,IOSL,IOST,IOT,IOUPAR,IOXY
.;
.;---> Open host file to receive legacy code display.
.;S Y=$$OPEN^%ZISH($$HFSPATH^BMXUTL1,BMXFN,"W")
.;
.;---> Call to legacy code for Health Summary display.
.D EN^APCHS
.;---> Write End of File (EOF) marker.
.W $C(9)
.;
.;---> %ZISC doesn't close Device 51 when called from TCPIP socket?
.;D ^%ZISC
.;---> Buffer won't write out to file until the device is closed
.;---> or the buffer is flushed by some other command.
.;---> At this point, host file exists but has 0 bytes.
.;C 51
.;---> Now host file contains legacy code display data.
.;
.;---> For some reason %ZISH cannot open the host file a second time.
.;S Y=$$OPEN^%ZISH($$HFSPATH^BMXUTL1,BMXFN,"R")
.;O 51:($$HFSPATH^BMXUTL1_BMXFN:"R")
.;U 51
.;
.;---> Read in the host file.
.D
..;---> Stop reading Host File if line contains EOF $C(9).
..;N I,Y F I=1:1 R Y Q:Y[$C(9) S ^TMP("BMXHS",$J,I)=Y
.;
.;---> %ZISC doesn't close Device 51 when called from TCPIP socket?
.;D ^%ZISC
.;C 51
;
;---> At this point $I=1. The job has "forgotten" its $I, even
;---> though %SS shows 56 as the current device. $I=1 causes a
;---> <NOPEN> at CAPI+10^XWBBRK2. A simple USE 56 command
;---> appears to "remind" the job its $I is 56, and it works.
;---> Possibly this is something %ZISC ordinarily does.
;U 56
;
;---> Copy Health Summary to global array for passing back to GUI.
N I,N,U,X S U="^"
S N=0
F I=1:1 S N=$O(^TMP("BMXHS",$J,N)) Q:'N D
.;---> Set null lines (line breaks) equal to one space, so that
.;---> Windows reader will quit only at the final "null" line.
.S X=^TMP("BMXHS",$J,N) S:X="" X=" "
.S ^BMXTEMP($J,"HS",I)=X_BMX30
;
;---> If no Health Summary produced, report it as an error.
D:'$O(^BMXTEMP($J,"HS",0))
.;D ERRCD^BMXUTL2(407,.BMXERR) S ^BMXTEMP($J,"HS",I)=BMX31_BMXERR
;
;---> Tack on Error Delimiter and any error.
S ^BMXTEMP($J,"HS",I)=BMX31_BMXERR
;
;---> This works; host file gets deleted.
;S Y=$$DEL^%ZISH($$HFSPATH^BMXUTL1,BMXFN)
K ^TMP("BMXHS",$J)
Q
;
;
;----------
FACE(BMXGBL,BMXDFN) ;EP
;---> Return patient's Face Sheet in global array, ^BMXTEMP($J,"FACE".
;---> Lines delimited by "^".
;---> Called by RPC: BMX IMMSERVE PT PROFILE
;---> Parameters:
; 1 - BMXGBL (ret) Name of result global containing patient's
; Face Sheet, passed to Broker.
; 2 - BMXDFN (req) DFN of patient.
;
;---> Delimiter to pass error with result to GUI.
N BMX30,BMX31,BMXERR,X
S BMX30=$C(30),BMX31=$C(31)_$C(31)
S BMXGBL="^BMXTEMP("_$J_",""FACE"")",BMXERR=""
K ^BMXTEMP($J,"FACE")
;
;---> If DFN not supplied, set Error Code and quit.
I '$G(BMXDFN) D Q
.;D ERRCD^BMXUTL2(201,.BMXERR) S ^BMXTEMP($J,"FACE",I)=BMX31_BMXERR
;
;---> If patient does not exist, set Error Code and quit.
I '$D(^AUPNPAT(BMXDFN,0)) D Q
.;D ERRCD^BMXUTL2(203,.BMXERR) S ^BMXTEMP($J,"FACE",I)=BMX31_BMXERR
;
N DFN S DFN=BMXDFN
;---> Doesn't work from Device 56.
;---> Generate a host file name.
N BMXFN S BMXFN="XB"_$J
;
D
.;---> Important to preserve IO variables for when $I returns to 56.
.N IO,IOBS,IOF,IOHG,IOM,ION,IOPAR,IOS,IOSL,IOST,IOT,IOUPAR,IOXY
.;
.;---> Open host file to receive legacy code display.
.;S Y=$$OPEN^%ZISH($$HFSPATH^BMXUTL1,BMXFN,"W")
.;
.;---> Call to legacy code for Face Sheet display.
.U 51
.;D ^BMXFACE
.;---> Write End of File (EOF) marker.
.W $C(9)
.;
.;---> %ZISC doesn't close Device 51 when called from TCPIP socket?
.;D ^%ZISC
.;---> Buffer won't write out to file until the device is closed
.;---> or the buffer is flushed by some other command.
.;---> At this point, host file exists but has 0 bytes.
.;C 51
.;---> Now host file contains legacy code display data.
.;
.;---> For some reason %ZISH cannot open the host file a second time.
.;S Y=$$OPEN^%ZISH($$HFSPATH^BMXUTL1,BMXFN,"R")
.;O 51:($$HFSPATH^BMXUTL1_BMXFN:"R")
.U 51
.;
.;---> Read in the host file.
.D
..;---> Need some way to mark the end of legacy code output.
..;---> Stop reading Host File if line contains EOF $C(9).
..;---> (I added $C(9) above, after ^BMXFACE completed.)
..;N I,Y F I=1:1 R Y Q:Y[$C(9) S ^TMP("BMXFACE",$J,I)=Y
.;
.;---> %ZISC doesn't close Device 51 when called from TCPIP socket?
.;D ^%ZISC
.;C 51
;
;---> At this point $I=1. The job has "forgotten" its $I, even
;---> though %SS shows 56 as the current device. $I=1 causes a
;---> <NOPEN> at CAPI+10^XWBBRK2. A simple USE 56 command
;---> appears to "remind" the job its $I is 56, and it works.
;---> Possibly this is something %ZISC ordinarily does.
U 56
;
;---> Copy Face Sheet to global array for passing back to GUI.
N I,N,U,X S U="^"
S N=0
F I=1:1 S N=$O(^TMP("BMXFACE",$J,N)) Q:'N D
.;---> Set null lines (line breaks) equal to one space, so that
.;---> Windows reader will quit only at the final "null" line.
.S X=^TMP("BMXFACE",$J,N) S:X="" X=" "
.;---> Remove Carriage Return (13)_Formfeed (12) characters.
.I X[$C(13)_$C(12) S X=$P(X,$C(13)_$C(12),2)
.;
.S ^BMXTEMP($J,"FACE",I)=X_BMX30
;
;---> If no Health Summary produced, report it as an error.
D:'$O(^BMXTEMP($J,"FACE",0))
.;D ERRCD^BMXUTL2(408,.BMXERR) S ^BMXTEMP($J,"FACE",I)=BMX31_BMXERR
;
;---> Tack on Error Delimiter and any error.
S ^BMXTEMP($J,"FACE",I)=BMX31_BMXERR
;
;---> This works; host file gets deleted.
;S Y=$$DEL^%ZISH($$HFSPATH^BMXUTL1,BMXFN)
K ^TMP("BMXFACE",$J)
Q
BMXRPC1 ; IHS/OIT/HMW - UTIL: REMOTE PROCEDURE CALLS ;
+1 ;;4.0;BMX;;JUN 28, 2010
+2 ;;* MICHAEL REMILLARD, DDS * ALASKA NATIVE MEDICAL CENTER *
+3 ;; UTILITY: CODE FOR REMOTE PROCEDURE CALLS.
+4 ;; RETURNS PATIENT DATA, HEALTH SUMMARY, FACE SHEET.
+5 ;
+6 ;
+7 ;----------
PDATA(BMXDATA,BMXDFN) ;EP
+1 ;---> Return Patient Data in 5 ^-delimited pieces:
+2 ;---> 1 - DOB in format: OCT 01,1994.
+3 ;---> 2 - Age in format: 35 Months.
+4 ;---> 3 - Text of Patient's sex.
+5 ;---> 4 - HRCN in the format XX-XX-XX.
+6 ;---> 5 - Text of ACTIVE/INACTIVE Status.
+7 ;---> Parameters:
+8 ; 1 - BMXDATA (ret) String of patient data||error.
+9 ; 2 - BMXDFN (req) DFN of patient.
+10 ;
+11 ;---> Delimiter to pass error with result to GUI.
+12 NEW BMX31,BMXERR
SET BMX31=$CHAR(31)_$CHAR(31)
+13 SET BMXDATA=""
SET BMXERR=""
+14 ;
+15 ;---> If DFN not supplied, set Error Code and quit.
+16 IF '$GET(BMXDFN)
Begin DoDot:1
+17 ;D ERRCD^BMXUTL2(201,.BMXERR) S BMXDATA=BMX31_BMXERR
End DoDot:1
QUIT
+18 ;
+19 ;---> DOB.
+20 SET BMXDATA=$$TXDT1^BMXUTL5($$DOB^BMXUTL1(BMXDFN))
+21 ;
+22 ;---> Age.
+23 SET BMXDATA=BMXDATA_U_$$AGEF^BMXUTL1(BMXDFN)
+24 ;
+25 ;---> Text of sex.
+26 SET BMXDATA=BMXDATA_U_$$SEXW^BMXUTL1(BMXDFN)
+27 ;
+28 ;---> HRCN, format XX-XX-XX.
+29 SET BMXDATA=BMXDATA_U_$$HRCN^BMXUTL1(BMXDFN)
+30 ;
+31 ;---> Active/Inactive Status.
+32 ;S BMXDATA=BMXDATA_U_$$ACTIVE^BMXUTL1(BMXDFN)
+33 ;
+34 SET BMXDATA=BMXDATA_BMX31
+35 ;
+36 QUIT
+37 ;
+38 ;
+39 ;----------
HS(BMXGBL,BMXDFN) ;EP
+1 ;---> Return patient's Health Summary in global array, ^BMXTEMP($J,"HS".
+2 ;---> Lines delimited by "^".
+3 ;---> Called by RPC: BMX IMMSERVE PT PROFILE
+4 ;---> Parameters:
+5 ; 1 - BMXGBL (ret) Name of result global containing patient's
+6 ; Health Summary, passed to Broker.
+7 ; 2 - BMXDFN (req) DFN of patient.
+8 ;
+9 ;---> Delimiter to pass error with result to GUI.
+10 NEW BMX30,BMX31,BMXERR,X
+11 SET BMX30=$CHAR(30)
SET BMX31=$CHAR(31)_$CHAR(31)
+12 SET BMXGBL="^BMXTEMP("_$JOB_",""HS"")"
SET BMXERR=""
+13 KILL ^BMXTEMP($JOB,"HS")
+14 ;
+15 ;---> If DFN not supplied, set Error Code and quit.
+16 IF '$GET(BMXDFN)
Begin DoDot:1
+17 ;D ERRCD^BMXUTL2(201,.BMXERR) S ^BMXTEMP($J,"HS",I)=BMX31_BMXERR
End DoDot:1
QUIT
+18 ;
+19 ;---> If patient does not exist, set Error Code and quit.
+20 IF '$DATA(^AUPNPAT(BMXDFN,0))
Begin DoDot:1
+21 ;D ERRCD^BMXUTL2(203,.BMXERR) S ^BMXTEMP($J,"HS",I)=BMX31_BMXERR
End DoDot:1
QUIT
+22 ;
+23 NEW APCHSPAT,APCHSTYP
+24 SET APCHSPAT=BMXDFN
SET APCHSTYP=7
+25 ;---> Doesn't work from Device 56.
+26 ;D GUIR^XBLM("EN^APCHS","^TMP(""BMXHS"",$J,")
+27 ;
+28 ;---> Generate a host file name.
+29 NEW BMXFN
SET BMXFN="XB"_$JOB
+30 ;
+31 Begin DoDot:1
+32 ;---> Important to preserve IO variables for when $I returns to 56.
+33 NEW IO,IOBS,IOF,IOHG,IOM,ION,IOPAR,IOS,IOSL,IOST,IOT,IOUPAR,IOXY
+34 ;
+35 ;---> Open host file to receive legacy code display.
+36 ;S Y=$$OPEN^%ZISH($$HFSPATH^BMXUTL1,BMXFN,"W")
+37 ;
+38 ;---> Call to legacy code for Health Summary display.
+39 DO EN^APCHS
+40 ;---> Write End of File (EOF) marker.
+41 WRITE $CHAR(9)
+42 ;
+43 ;---> %ZISC doesn't close Device 51 when called from TCPIP socket?
+44 ;D ^%ZISC
+45 ;---> Buffer won't write out to file until the device is closed
+46 ;---> or the buffer is flushed by some other command.
+47 ;---> At this point, host file exists but has 0 bytes.
+48 ;C 51
+49 ;---> Now host file contains legacy code display data.
+50 ;
+51 ;---> For some reason %ZISH cannot open the host file a second time.
+52 ;S Y=$$OPEN^%ZISH($$HFSPATH^BMXUTL1,BMXFN,"R")
+53 ;O 51:($$HFSPATH^BMXUTL1_BMXFN:"R")
+54 ;U 51
+55 ;
+56 ;---> Read in the host file.
+57 Begin DoDot:2
+58 ;---> Stop reading Host File if line contains EOF $C(9).
+59 ;N I,Y F I=1:1 R Y Q:Y[$C(9) S ^TMP("BMXHS",$J,I)=Y
End DoDot:2
+60 ;
+61 ;---> %ZISC doesn't close Device 51 when called from TCPIP socket?
+62 ;D ^%ZISC
+63 ;C 51
End DoDot:1
+64 ;
+65 ;---> At this point $I=1. The job has "forgotten" its $I, even
+66 ;---> though %SS shows 56 as the current device. $I=1 causes a
+67 ;---> <NOPEN> at CAPI+10^XWBBRK2. A simple USE 56 command
+68 ;---> appears to "remind" the job its $I is 56, and it works.
+69 ;---> Possibly this is something %ZISC ordinarily does.
+70 ;U 56
+71 ;
+72 ;---> Copy Health Summary to global array for passing back to GUI.
+73 NEW I,N,U,X
SET U="^"
+74 SET N=0
+75 FOR I=1:1
SET N=$ORDER(^TMP("BMXHS",$JOB,N))
IF 'N
QUIT
Begin DoDot:1
+76 ;---> Set null lines (line breaks) equal to one space, so that
+77 ;---> Windows reader will quit only at the final "null" line.
+78 SET X=^TMP("BMXHS",$JOB,N)
IF X=""
SET X=" "
+79 SET ^BMXTEMP($JOB,"HS",I)=X_BMX30
End DoDot:1
+80 ;
+81 ;---> If no Health Summary produced, report it as an error.
+82 IF '$ORDER(^BMXTEMP($JOB,"HS",0))
Begin DoDot:1
+83 ;D ERRCD^BMXUTL2(407,.BMXERR) S ^BMXTEMP($J,"HS",I)=BMX31_BMXERR
End DoDot:1
+84 ;
+85 ;---> Tack on Error Delimiter and any error.
+86 SET ^BMXTEMP($JOB,"HS",I)=BMX31_BMXERR
+87 ;
+88 ;---> This works; host file gets deleted.
+89 ;S Y=$$DEL^%ZISH($$HFSPATH^BMXUTL1,BMXFN)
+90 KILL ^TMP("BMXHS",$JOB)
+91 QUIT
+92 ;
+93 ;
+94 ;----------
FACE(BMXGBL,BMXDFN) ;EP
+1 ;---> Return patient's Face Sheet in global array, ^BMXTEMP($J,"FACE".
+2 ;---> Lines delimited by "^".
+3 ;---> Called by RPC: BMX IMMSERVE PT PROFILE
+4 ;---> Parameters:
+5 ; 1 - BMXGBL (ret) Name of result global containing patient's
+6 ; Face Sheet, passed to Broker.
+7 ; 2 - BMXDFN (req) DFN of patient.
+8 ;
+9 ;---> Delimiter to pass error with result to GUI.
+10 NEW BMX30,BMX31,BMXERR,X
+11 SET BMX30=$CHAR(30)
SET BMX31=$CHAR(31)_$CHAR(31)
+12 SET BMXGBL="^BMXTEMP("_$JOB_",""FACE"")"
SET BMXERR=""
+13 KILL ^BMXTEMP($JOB,"FACE")
+14 ;
+15 ;---> If DFN not supplied, set Error Code and quit.
+16 IF '$GET(BMXDFN)
Begin DoDot:1
+17 ;D ERRCD^BMXUTL2(201,.BMXERR) S ^BMXTEMP($J,"FACE",I)=BMX31_BMXERR
End DoDot:1
QUIT
+18 ;
+19 ;---> If patient does not exist, set Error Code and quit.
+20 IF '$DATA(^AUPNPAT(BMXDFN,0))
Begin DoDot:1
+21 ;D ERRCD^BMXUTL2(203,.BMXERR) S ^BMXTEMP($J,"FACE",I)=BMX31_BMXERR
End DoDot:1
QUIT
+22 ;
+23 NEW DFN
SET DFN=BMXDFN
+24 ;---> Doesn't work from Device 56.
+25 ;---> Generate a host file name.
+26 NEW BMXFN
SET BMXFN="XB"_$JOB
+27 ;
+28 Begin DoDot:1
+29 ;---> Important to preserve IO variables for when $I returns to 56.
+30 NEW IO,IOBS,IOF,IOHG,IOM,ION,IOPAR,IOS,IOSL,IOST,IOT,IOUPAR,IOXY
+31 ;
+32 ;---> Open host file to receive legacy code display.
+33 ;S Y=$$OPEN^%ZISH($$HFSPATH^BMXUTL1,BMXFN,"W")
+34 ;
+35 ;---> Call to legacy code for Face Sheet display.
+36 USE 51
+37 ;D ^BMXFACE
+38 ;---> Write End of File (EOF) marker.
+39 WRITE $CHAR(9)
+40 ;
+41 ;---> %ZISC doesn't close Device 51 when called from TCPIP socket?
+42 ;D ^%ZISC
+43 ;---> Buffer won't write out to file until the device is closed
+44 ;---> or the buffer is flushed by some other command.
+45 ;---> At this point, host file exists but has 0 bytes.
+46 ;C 51
+47 ;---> Now host file contains legacy code display data.
+48 ;
+49 ;---> For some reason %ZISH cannot open the host file a second time.
+50 ;S Y=$$OPEN^%ZISH($$HFSPATH^BMXUTL1,BMXFN,"R")
+51 ;O 51:($$HFSPATH^BMXUTL1_BMXFN:"R")
+52 USE 51
+53 ;
+54 ;---> Read in the host file.
+55 Begin DoDot:2
+56 ;---> Need some way to mark the end of legacy code output.
+57 ;---> Stop reading Host File if line contains EOF $C(9).
+58 ;---> (I added $C(9) above, after ^BMXFACE completed.)
+59 ;N I,Y F I=1:1 R Y Q:Y[$C(9) S ^TMP("BMXFACE",$J,I)=Y
End DoDot:2
+60 ;
+61 ;---> %ZISC doesn't close Device 51 when called from TCPIP socket?
+62 ;D ^%ZISC
+63 ;C 51
End DoDot:1
+64 ;
+65 ;---> At this point $I=1. The job has "forgotten" its $I, even
+66 ;---> though %SS shows 56 as the current device. $I=1 causes a
+67 ;---> <NOPEN> at CAPI+10^XWBBRK2. A simple USE 56 command
+68 ;---> appears to "remind" the job its $I is 56, and it works.
+69 ;---> Possibly this is something %ZISC ordinarily does.
+70 USE 56
+71 ;
+72 ;---> Copy Face Sheet to global array for passing back to GUI.
+73 NEW I,N,U,X
SET U="^"
+74 SET N=0
+75 FOR I=1:1
SET N=$ORDER(^TMP("BMXFACE",$JOB,N))
IF 'N
QUIT
Begin DoDot:1
+76 ;---> Set null lines (line breaks) equal to one space, so that
+77 ;---> Windows reader will quit only at the final "null" line.
+78 SET X=^TMP("BMXFACE",$JOB,N)
IF X=""
SET X=" "
+79 ;---> Remove Carriage Return (13)_Formfeed (12) characters.
+80 IF X[$CHAR(13)_$CHAR(12)
SET X=$PIECE(X,$CHAR(13)_$CHAR(12),2)
+81 ;
+82 SET ^BMXTEMP($JOB,"FACE",I)=X_BMX30
End DoDot:1
+83 ;
+84 ;---> If no Health Summary produced, report it as an error.
+85 IF '$ORDER(^BMXTEMP($JOB,"FACE",0))
Begin DoDot:1
+86 ;D ERRCD^BMXUTL2(408,.BMXERR) S ^BMXTEMP($J,"FACE",I)=BMX31_BMXERR
End DoDot:1
+87 ;
+88 ;---> Tack on Error Delimiter and any error.
+89 SET ^BMXTEMP($JOB,"FACE",I)=BMX31_BMXERR
+90 ;
+91 ;---> This works; host file gets deleted.
+92 ;S Y=$$DEL^%ZISH($$HFSPATH^BMXUTL1,BMXFN)
+93 KILL ^TMP("BMXFACE",$JOB)
+94 QUIT