| 1 | SROESPR ;BIR/ADM - SURGERY E-SIG UTILITY ;08/09/04 | 
|---|
| 2 | ;;3.0; Surgery ;**100,129,134**;24 Jun 93 | 
|---|
| 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 | ; Reference to $$PRNTGRP^TIULG supported by DBIA #3003 | 
|---|
| 8 | ; Reference to $$PRNTMTHD^TIULG supported by DBIA #3003 | 
|---|
| 9 | ; Reference to $$PRNTNBR^TIULG supported by DBIA #3003 | 
|---|
| 10 | ; Reference to EXTRACT^TIULQ supported by DBIA #2693 | 
|---|
| 11 | ; Reference to ^TMP("TIUPR",$J) supported by DBIA #4377 | 
|---|
| 12 | ; Reference to DOCPARM^TIUSRVP1 supported by DBIA #4331 | 
|---|
| 13 | ; Reference to $$ISA^USRLM supported by DBIA #2324 | 
|---|
| 14 | ; | 
|---|
| 15 | ENTRY ; Entry point to print reports | 
|---|
| 16 | N SRFLAG,SRI,SRJ,SRK,SRL,SRM,SRN,SRO,SRPGRP,SRPFHDR,SRSPG | 
|---|
| 17 | I $G(TIUFLAG) S SRFLAG=TIUFLAG | 
|---|
| 18 | I '$O(^TMP("SRPR",$J,0)) M ^TMP("SRPR",$J)=^TMP("TIUPR",$J) | 
|---|
| 19 | S SRI="" F  S SRI=$O(^TMP("SRPR",$J,SRI)) Q:SRI=""  S SRJ="" F  S SRJ=$O(^TMP("SRPR",$J,SRI,SRJ)) Q:SRJ=""  S SRK="" F  S SRK=$O(^TMP("SRPR",$J,SRI,SRJ,SRK)) Q:SRK=""  D | 
|---|
| 20 | .S SRPGRP=$P(SRI,"$"),SRL=$P(SRI,"$",2),SRM=$P(SRL,";"),SRN=$P(SRL,";",2) | 
|---|
| 21 | .S SRPFHDR=$$TITLE^SROESPR(SRK) | 
|---|
| 22 | .S SRO("SRPR",$J,SRPGRP_"$"_SRPFHDR_";"_SRN,SRJ,SRK)=^TMP("SRPR",$J,SRI,SRJ,SRK) | 
|---|
| 23 | .K ^TMP("SRPR",$J,SRI,SRJ,SRK) | 
|---|
| 24 | M ^TMP("SRPR",$J)=SRO("SRPR",$J) | 
|---|
| 25 | U IO | 
|---|
| 26 | ENTRY1 ; Entry point from above | 
|---|
| 27 | N SRERR,D0,DN,Y,DTOUT,DUOUT,DIRUT,DIROUT | 
|---|
| 28 | I $E(IOST,1,2)="C-" S (SRSPG,SRFLAG)=1 | 
|---|
| 29 | I '+$G(SRFLAG) S SRSPG=1 | 
|---|
| 30 | K ^TMP("SRLQ",$J) | 
|---|
| 31 | I $D(ZTQUEUED) S ZTREQ="@" ; Tell TaskMan to delete Task log entry | 
|---|
| 32 | D PRINT^SROESPR1($G(SRFLAG),$G(SRSPG)) | 
|---|
| 33 | EXIT K ^TMP("SRLQ",$J),^TMP("SRPR",$J) | 
|---|
| 34 | Q | 
|---|
| 35 | PRNT(SRTN,SRTIU,SRDTITL) ; print report from TIU | 
|---|
| 36 | N DFN,SRDARR,SRFLAG,SRPFHDR,SRPFNBR,SRPGRP,SRPMTHD,SRSPG,SRTYP | 
|---|
| 37 | K ^TMP("SRPR",$J) S SRFLAG=$$FLAG Q:SRFLAG=""  I $G(SRDTITL)="" S SRDTITL="Surgery Print TIU Document" | 
|---|
| 38 | S DFN=$P(^SRF(SRTN,0),"^"),SRTYP=$$TYPE(SRTIU) Q:'+SRTYP | 
|---|
| 39 | S SRPMTHD=$$PRNTMTHD^TIULG(+SRTYP) | 
|---|
| 40 | S SRPGRP=$$PRNTGRP^TIULG(+SRTYP) | 
|---|
| 41 | S SRPFHDR=$$TITLE(SRTIU) | 
|---|
| 42 | S SRPFNBR=$$PRNTNBR^TIULG(+SRTYP) | 
|---|
| 43 | I $G(SRPMTHD)]"",+$G(SRPGRP),($G(SRPFHDR)]""),($G(SRPFNBR)]"") S SRDARR(SRPMTHD,+$G(SRPGRP)_"$"_$G(SRPFHDR)_";"_DFN,1,SRTIU)=$G(SRPFNBR) | 
|---|
| 44 | E  S SRDARR(SRPMTHD,DFN,1,SRTIU)="" | 
|---|
| 45 | I $G(SRPMTHD)']"" W !,$C(7),"No Print Method Defined" H 2 Q | 
|---|
| 46 | M ^TMP("SRPR",$J)=SRDARR(SRPMTHD) | 
|---|
| 47 | DEVICE I IOST'["P-" W ! K IOP S %ZIS="Q" D ^%ZIS I POP K POP G EXIT | 
|---|
| 48 | S SRFLAG=+$G(SRFLAG),SRSPG=+$G(SRSPG) | 
|---|
| 49 | I $D(IO("Q")) K IO("Q") D  G EXIT | 
|---|
| 50 | .S ZTRTN="ENTRY1^SROESPR",ZTSAVE("^TMP(""SRPR"",$J,")="" | 
|---|
| 51 | .S ZTSAVE("SRFLAG")="",ZTSAVE("SRSPG")="",ZTDESC=SRDTITL | 
|---|
| 52 | .D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued!",1:"Request Canceled!") | 
|---|
| 53 | .K ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,SRFLAG,SRSPG | 
|---|
| 54 | .D HOME^%ZIS | 
|---|
| 55 | U IO D ENTRY1,^%ZISC | 
|---|
| 56 | Q | 
|---|
| 57 | TYPE(SRTIU) ; get document type | 
|---|
| 58 | N SRY,SRERR D EXTRACT^TIULQ(SRTIU,"SRY",.SRERR,".01") | 
|---|
| 59 | Q SRY(SRTIU,.01,"I") | 
|---|
| 60 | TITLE(SRTIU) ; get report title | 
|---|
| 61 | N SRY,SRERR D EXTRACT^TIULQ(SRTIU,"SRY",.SRERR,".01") | 
|---|
| 62 | Q SRY(SRTIU,.01,"E") | 
|---|
| 63 | FLAG() ; chart vs work copies | 
|---|
| 64 | ; returns SRFLAG=1 if chart copy, SRFLAG=0 if work copy, null if '^' | 
|---|
| 65 | D DOCPARM^TIUSRVP1(.SRPARM,SRTIU) I +$P($G(SRPARM(0)),"^",9)'>0,'(+$$ISA^USRLM(DUZ,"MEDICAL INFORMATION SECTION")) S SRFLAG=0 Q SRFLAG | 
|---|
| 66 | I IOST["P-" S SRFLAG=0 Q SRFLAG | 
|---|
| 67 | S SRFLAG="" W ! K DIR S DIR("A")="Do you want WORK copies or CHART copies? ",DIR("B")="WORK",DIR(0)="SA^C:CHART;W:WORK" | 
|---|
| 68 | S DIR("?",1)="     The FOOTERs of WORK/CHART copies vary significantly.  The WORK",DIR("?",2)="     FOOTER has the patient's phone number and is clearly marked:" | 
|---|
| 69 | S DIR("?",3)="     'NOT FOR MEDICAL RECORD'.  Unless you really intend to file the",DIR("?")="     note(s) in the chart- print a WORK copy." | 
|---|
| 70 | D ^DIR K DIR I $D(DTOUT)!$D(DUOUT) Q SRFLAG | 
|---|
| 71 | S SRFLAG=$S(Y="C":1,1:0) | 
|---|
| 72 | Q SRFLAG | 
|---|
| 73 | PAT(SRY,DFN) ; get minimum demographics for print | 
|---|
| 74 | N VADM,VAIP,VAIN,VAPA,VA D OERR^VADPT,ADD^VADPT | 
|---|
| 75 | S SRY("PNMP")=$E($G(VADM(1)),1,30),SRY("SSN")=$G(VA("PID")) | 
|---|
| 76 | S SRY("DOB")="DOB:"_$$DATE(+$G(VADM(3)),"MM/DD/CCYY") | 
|---|
| 77 | S SRY("PH#")="Ph:"_$S($G(VAPA(8))'="":VAPA(8),1:"**UNKNOWN**") | 
|---|
| 78 | S SRY("INTNM")=$$NAME^VASITE ;Integration Name | 
|---|
| 79 | S SRY("SITE")=$P($$SITE^VASITE,U,2) | 
|---|
| 80 | S SRY("LOCP")="Pt Loc: "_$S(VAIN(4)]"":$P(VAIN(4),U,2)_"  "_VAIN(5),1:"OUTPATIENT") | 
|---|
| 81 | Q | 
|---|
| 82 | TIME(X,FMT) ; receives X as 2910419.01 and FMT=Return Format of time (HH:MM:SS). | 
|---|
| 83 | N HR,MIN,SEC,SRI I $S('$D(FMT):1,'$L(FMT):1,1:0) S FMT="HR:MIN" | 
|---|
| 84 | S X=$P(X,".",2),HR=$E(X,1,2)_$E("00",0,2-$L($E(X,1,2))),MIN=$E(X,3,4)_$E("00",0,2-$L($E(X,3,4))),SEC=$E(X,5,6)_$E("00",0,2-$L($E(X,5,6))) | 
|---|
| 85 | F SRI="HR","MIN","SEC" S:FMT[SRI FMT=$P(FMT,SRI)_@SRI_$P(FMT,SRI,2) | 
|---|
| 86 | Q FMT | 
|---|
| 87 | DATE(X,FMT) ; call with X=2910419.01 and FMT=Return Format of date ("MM/DD") | 
|---|
| 88 | N AMTH,MM,CC,DD,YY,SRI,SRTMP | 
|---|
| 89 | I +X'>0 S $P(SRTMP," ",$L($G(FMT))+1)="",FMT=SRTMP G QDATE | 
|---|
| 90 | I $S('$D(FMT):1,'$L(FMT):1,1:0) S FMT="MM/DD/YY" | 
|---|
| 91 | S MM=$E(X,4,5),DD=$E(X,6,7),YY=$E(X,2,3),CC=17+$E(X) | 
|---|
| 92 | S:FMT["AMTH" AMTH=$P("JAN^FEB^MAR^APR^MAY^JUN^JUL^AUG^SEP^OCT^NOV^DEC","^",+MM) | 
|---|
| 93 | F SRI="AMTH","MM","DD","CC","YY" S:FMT[SRI FMT=$P(FMT,SRI)_@SRI_$P(FMT,SRI,2) | 
|---|
| 94 | I FMT["HR" S FMT=$$TIME(X,FMT) | 
|---|
| 95 | QDATE Q FMT | 
|---|
| 96 | BEEP(SRPER) ; get beeper #'s | 
|---|
| 97 | N SRDP,SRVP,SRY S (SRDP,SRVP)="" K DA,DIC,DR,DIQ | 
|---|
| 98 | S DIC=200,DA=+SRPER,DR=".137;.138",DIQ="SRY",DIQ(0)="I" D EN^DIQ1 K DA,DIC,DR,DIQ | 
|---|
| 99 | S SRVP=SRY(200,+SRPER,.137,"I"),SRDP=SRY(200,+SRPER,.138,"I") | 
|---|
| 100 | Q SRVP_"^"_SRDP | 
|---|
| 101 | SIGNAME(SRPER) ; get signature block printed name | 
|---|
| 102 | N SRY K DA,DIC,DR,DIQ | 
|---|
| 103 | S DIC=200,DA=+SRPER,DR="20.2",DIQ="SRY",DIQ(0)="I" D EN^DIQ1 K DA,DIC,DR,DIQ | 
|---|
| 104 | Q SRY(200,+SRPER,20.2,"I") | 
|---|
| 105 | SIGTITL(SRPER) ; get signature block title | 
|---|
| 106 | N SRY K DA,DIC,DR,DIQ | 
|---|
| 107 | S DIC=200,DA=+SRPER,DR="20.3",DIQ="SRY",DIQ(0)="I" D EN^DIQ1 K DA,DIC,DR,DIQ | 
|---|
| 108 | Q SRY(200,+SRPER,20.3,"I") | 
|---|