| 1 | DVBCUTL4 ;ALB-ISC/JLU/GTS-A utility routine ;2/22/93
 | 
|---|
| 2 |  ;;2.7;AMIE;**57**;Apr 10, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | SITE() ;returns the site's name from the amie parameter file (396.1)
 | 
|---|
| 5 |  N DVBCX
 | 
|---|
| 6 |  S DVBCX=$O(^DVB(396.1,0))
 | 
|---|
| 7 |  I 'DVBCX Q "UNKNOWN"
 | 
|---|
| 8 |  Q $P(^(DVBCX,0),U,1) ;nake on SITE+2
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | EXAM() ;returns the next exam .01 number in the 396.4 Exam file
 | 
|---|
| 11 |  N DVBA,DVBA1
 | 
|---|
| 12 |  L +^DVB(396.1,1,5):3
 | 
|---|
| 13 |  I '$T Q 0 ;unable to lock parameter file node
 | 
|---|
| 14 |  S DVBA=$P(^DVB(396.1,1,5),U,1)
 | 
|---|
| 15 |  F DVBA1=0:0 S DVBA=DVBA+1 I '$D(^DVB(396.4,"B",DVBA)) Q
 | 
|---|
| 16 |  S $P(^DVB(396.1,1,5),U,1)=DVBA
 | 
|---|
| 17 |  L -^DVB(396.1,1,5)
 | 
|---|
| 18 |  Q DVBA ;contains new .01 value
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | EXSRH(A,B,C) ;searches for the exam for a specific request.
 | 
|---|
| 21 |  ;A ==> The DIC("A") prompt for 396.6
 | 
|---|
| 22 |  ;B ==> An optional screen on 396.6
 | 
|---|
| 23 |  ;C ==> An optional screen on 396.4
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  N ERR
 | 
|---|
| 26 |  DO
 | 
|---|
| 27 |  .I $D(A),A]"" S DIC("A")=A
 | 
|---|
| 28 |  .I $D(B),B]"" S DIC("S")=B
 | 
|---|
| 29 |  .S DIC="^DVB(396.6,",DIC(0)="AEQM"
 | 
|---|
| 30 |  .D ^DIC K DIC
 | 
|---|
| 31 |  .I +Y<0!($D(DTOUT))!(X="")!(X=U) S ERR=-1 Q
 | 
|---|
| 32 |  .I $D(C),C]"" S DIC("S")=C
 | 
|---|
| 33 |  .S X=+Y,DIC="^DVB(396.4,",DIC(0)="EQ"
 | 
|---|
| 34 |  .S D="ARQ"_REQDA
 | 
|---|
| 35 |  .D IX^DIC K DIC,D
 | 
|---|
| 36 |  I $D(ERR),ERR<0 S Y=-1
 | 
|---|
| 37 |  Q Y
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | ROLLBCK ;  ** Sort the ^TMP global to find added exams **
 | 
|---|
| 40 |  S DIK="^DVB(396.4,"
 | 
|---|
| 41 |  N DVBADA,DVBAEXNM,DVBARQDT
 | 
|---|
| 42 |  S (DVBADA,DVBAEXNM,DVBARQDT)=""
 | 
|---|
| 43 |  S DVBARQDT=$P(^DVB(396.3,REQDA,0),U,2)
 | 
|---|
| 44 |  F DVBACNT=0:0 S DVBAEXNM=$O(^TMP($J,"NEW",DVBAEXNM)) Q:DVBAEXNM=""  D LOOP2
 | 
|---|
| 45 |  K DVBACNT,DVBADA,DVBAEXNM,DVBARQDT,DIK,DA
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | LOOP2 ;  ** Loop through 'PE' X-Ref:delete exams just added **
 | 
|---|
| 49 |  F DVBADA=0:0 S DVBADA=$O(^DVB(396.4,"APE",DFN,DVBAEXNM,DVBARQDT,DVBADA)) Q:DVBADA=""  S DA=DVBADA D ^DIK
 | 
|---|
| 50 |  Q
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 | CONTMES ;  ** Continue Message to replace HANG statements **
 | 
|---|
| 53 |  W !!,"   Press RETURN to continue..." R DVBCCONT:DTIME K DVBCCONT
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 | EXMLOG1 ; ** Add exam (Called from DVBCADE2) **
 | 
|---|
| 57 |  S (DIC,DIE)="^DVB(396.4,",DIC(0)=""
 | 
|---|
| 58 |  K DD,DO
 | 
|---|
| 59 |  S DIC("DR")=".02////^S X=REQDA;.03////^S X=$P(^TMP($J,""NEW"",EXMNM),U,1);.04////O"
 | 
|---|
| 60 |  D FILE^DICN I $D(Y),(+Y>0) W:$X>40&($L(EXMNM)>30) !
 | 
|---|
| 61 |  W EXMNM_" -added, " W:$X>50 !
 | 
|---|
| 62 |  I $D(Y),+Y<0 W *7,"Exam addition error ! " S OUT=1 H 3 Q
 | 
|---|
| 63 |  S $P(^TMP($J,"NEW",EXMNM),U,3)=+Y
 | 
|---|
| 64 |  I $P(^DVB(396.3,REQDA,0),U,10)="E" DO
 | 
|---|
| 65 |  .I $D(^DVB(396.3,REQDA,5)) DO  ;**Insuf 2507 entered after 2.7
 | 
|---|
| 66 |  ..K DTOUT
 | 
|---|
| 67 |  ..S DVBAINDA=+$P(^DVB(396.3,REQDA,5),U,1),DVBCADEX=""
 | 
|---|
| 68 |  ..D INSXM^DVBCUTA1 K DVBCADEX
 | 
|---|
| 69 |  .I '$D(^DVB(396.3,REQDA,5)) DO  ;**Insuf 2507 entered prior to 2.7
 | 
|---|
| 70 |  ..N REASON
 | 
|---|
| 71 |  ..S REASON=+$$INRSLK^DVBCUTA3
 | 
|---|
| 72 |  ..I +REASON>0 DO
 | 
|---|
| 73 |  ...K DIE,Y,DA,DR
 | 
|---|
| 74 |  ...S DIE="^DVB(396.4,",DR=".11////^S X=REASON;80;.12"
 | 
|---|
| 75 |  ...S DA=+$P(^TMP($J,"NEW",EXMNM),U,3)
 | 
|---|
| 76 |  ...S DIE("NO^")="" D ^DIE K DIE,DA,DR,Y W !!
 | 
|---|
| 77 |  Q  ;Quit to EXMLOG^DVBCADE2
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | STATCHK ; ** Check Statuses (Called from ^DVBCEDIT) **
 | 
|---|
| 80 |  Q:STAT="O"  I STAT="RX" W *7,!!,"This exam has been cancelled by the RO.",!! H 2 S NCN=1 Q
 | 
|---|
| 81 |  I STAT="CT" W *7,!!,"This request has been completed and transferred out.",!! H 2 S NCN=1 Q
 | 
|---|
| 82 |  I STAT="C" W *7,!!,"This exam has been completed.",! S NCN=1 Q
 | 
|---|
| 83 |  I STAT="X" W *7,!!,"This exam has been cancelled by MAS.",!! H 2 S NCN=1 Q
 | 
|---|
| 84 |  I STAT="R" W *7,!!,"This exam has been released to the RO.",!! H 2 S NCN=1 Q
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | COMP ; ** Check to see if transcription completed (Called from ^DVBCEDIT) **
 | 
|---|
| 88 |  K OUT Q:$P(^DVB(396.4,EXMDA,0),U,4)="C"  W !!,"Is transcription completed for this exam" S %=2 D YN^DICN I $D(DTOUT) S OUT=1 Q
 | 
|---|
| 89 |  I $D(%Y),(%Y["?") W !!,"Enter Y if all information has been entered and transcription is finished",!,"or N if more information will be entered later",!! G COMP
 | 
|---|
| 90 |  Q:%'=1
 | 
|---|
| 91 |  K DIE,DA,DR
 | 
|---|
| 92 |  S DIE="^DVB(396.4,",DA=EXMDA,DR=".04///C;90///NOW"
 | 
|---|
| 93 |  D ^DIE
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 | PAUSE ;this is a pause, only looking for a return or up arrow
 | 
|---|
| 97 |  S DIR(0)="E"
 | 
|---|
| 98 |  D ^DIR
 | 
|---|
| 99 |  K DIR
 | 
|---|
| 100 |  Q
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 | STM ;start response clock
 | 
|---|
| 103 |  I $D(XRTL) D T0^%ZOSV
 | 
|---|
| 104 |  Q
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 | SPM ;stop monitor clock
 | 
|---|
| 107 |  I $D(XRT0) D T1^%ZOSV
 | 
|---|
| 108 |  K XRTN
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | DELSER ;this subroutine will delete the server message
 | 
|---|
| 112 |  S XMZ=XQMSG
 | 
|---|
| 113 |  S XMSER="S."_XQSOP
 | 
|---|
| 114 |  D REMSBMSG^XMA1C
 | 
|---|
| 115 |  Q
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 | PHYS(A) ; ** Question user for access to Physicians Guide **
 | 
|---|
| 118 |  S DIC(0)="AEMQ^^"
 | 
|---|
| 119 |  S DIC("A")="Select exam: "
 | 
|---|
| 120 |  ;S DIR("?")="Enter Yes to access the Physician's Guide using Text Retreival."
 | 
|---|
| 121 |  D ^DIC
 | 
|---|
| 122 |  ;I +Y=1 D PHYS^A1BBTR ;Access Physician's Guide
 | 
|---|
| 123 |  ;I +Y=1 D PHYS^DRSTR ;** Access Physician's Guide
 | 
|---|
| 124 |  S:'$D(Y) Y=""
 | 
|---|
| 125 |  K DIR,X,Y(0)
 | 
|---|
| 126 |  Q Y
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 | DATE(PAR1,PAR2) ;gets the beginning and ending dates from the users
 | 
|---|
| 129 |  ;PAR1 is the beginning date
 | 
|---|
| 130 |  ;PAR2 is the ending date
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 | DATE1 S %DT("A")="Enter the beginning date: "
 | 
|---|
| 133 |  S %DT="AET"
 | 
|---|
| 134 |  D ^%DT
 | 
|---|
| 135 |  I X="^"!($D(DTOUT)) S (PAR1,PAR2)=0 Q
 | 
|---|
| 136 |  I X="" S (PAR1,PAR2)=-1 Q
 | 
|---|
| 137 |  S PAR1=Y
 | 
|---|
| 138 |  K %DT,Y,X,DTOUT
 | 
|---|
| 139 |  S %DT("A")="Enter the ending date: "
 | 
|---|
| 140 |  S %DT="AET"
 | 
|---|
| 141 |  D ^%DT
 | 
|---|
| 142 |  I X="^"!($D(DTOUT)) S (PAR1,PAR2)=0 Q
 | 
|---|
| 143 |  I X="" S (PAR1,PAR2)=-1 Q
 | 
|---|
| 144 |  S PAR2=Y
 | 
|---|
| 145 |  K %DT,X,Y,DTOUT
 | 
|---|
| 146 |  I PAR2<PAR1 DO  G DATE1
 | 
|---|
| 147 |  .S VAR(1,0)="1,0,0,2:2,0^Beginning date must be before ending date!"
 | 
|---|
| 148 |  .D WR^DVBAUTL4("VAR")
 | 
|---|
| 149 |  .K VAR,PAR1,PAR2
 | 
|---|
| 150 |  .Q
 | 
|---|
| 151 |  Q
 | 
|---|