1 | SROANEST ;BIR/TJH - ANESTHESIA ENTRY ;01 Jun 2003
|
---|
2 | ;;3.0;Surgery;**119,150,152**;24 Jun 93
|
---|
3 | SINPUT ;
|
---|
4 | N SRSTART
|
---|
5 | S Z=$E($P(^SRF($S($D(SRTN):SRTN,1:DA(1)),0),"^",9),1,7),X=$S(X?1.4N.A!(X?1.2N1":"2N.A):Z_"@"_X,1:X) K %DT,Z S %DT="RTX" D ^%DT S X=Y K:Y<1 X
|
---|
6 | I '$D(X),$G(SRFLAG)=1 D K SRFLAG Q
|
---|
7 | .W !!,"Check date format.",!," Examples of Valid Dates:",!," JAN 20 1957 or 20 JAN 57 or 1/20/57 or 012057",!," T (for TODAY), T+1 (for TOMORROW), T+2, T+7, etc."
|
---|
8 | .W !," T-1 (for YESTERDAY), T-3W (for 3 WEEKS AGO), etc.",!," If the year is omitted, the computer uses CURRENT YEAR. Two digit year"
|
---|
9 | .W !," assumes no more than 20 years in the future, or 80 years in the past.",!," If only the time is entered, the current date is assumed."
|
---|
10 | .W !," Follow the date with a time, such as JAN 20@10, T@10AM, 10:30, etc.",!," You may enter a time, such as NOON, MIDNIGHT or NOW."
|
---|
11 | .W !," You may enter NOW+3' (for current date and time Plus 3 minutes",!," *Note--the Apostrophe following the number of minutes)"
|
---|
12 | .W !," Time is REQUIRED in this response.",!," Enter the time a member of the Anesthesia staff begins preparing the",!," patient for surgery in the O.R. suite or if the care is interrupted, the"
|
---|
13 | .W !," time the care resumes."
|
---|
14 | Q:'$D(X)
|
---|
15 | S SRSTART=$P($G(^SRF($S($D(SRTN):SRTN,1:DA(1)),.2)),"^",15)
|
---|
16 | I SRSTART="" K SRFLAG Q
|
---|
17 | I X<SRSTART W !!,"The time entered is before the 'TIME PAT IN HOLD AREA'. Please check the",!,"DATE/TIME entered for this field." H 2
|
---|
18 | K SRFLAG
|
---|
19 | Q
|
---|
20 | STIME ;
|
---|
21 | I '$D(X) Q
|
---|
22 | N SRSPREC,SRPET,SRTIME,SRCRET
|
---|
23 | S SRCRET=$$GET1^DIQ(130.213,DA(2)_","_DA(1)_",",1,"I")
|
---|
24 | I SRCRET,(X>SRCRET) W !!,"Start time is after current end time. Please correct." K X Q
|
---|
25 | S SRSPREC=$O(^SRF(DA(1),50,DA(2)),-1)
|
---|
26 | I SRSPREC'=0 D
|
---|
27 | .S SRPET=$$GET1^DIQ(130.213,SRSPREC_","_DA(1)_",",1,"I")
|
---|
28 | .I SRPET="" W !!,"New start time entry not permitted until previous end time is entered." K X Q
|
---|
29 | .I SRPET>X W !!,"Start time is prior to previous end time. Please correct." K X
|
---|
30 | I $D(X),(DA(2)=1) S SRTIME(130,DA(1)_",",.21)=X D FILE^DIE("","SRTIME","^TMP(""SR"",$J)")
|
---|
31 | Q
|
---|
32 | FINALT ;
|
---|
33 | N SRCST,SRLET,SRYN,SRSNREC,SRFDA,SRTIME,SRLREC,SRCON
|
---|
34 | I $D(^SRF(DA(1),"CON")),$P(^("CON"),"^") S SRCON=$P(^SRF(DA(1),"CON"),"^")
|
---|
35 | S SRCST=$$GET1^DIQ(130.213,DA(2)_","_DA(1)_",",.01,"I")
|
---|
36 | I X<SRCST W !!,"End time prior to start time. Please correct." K X Q
|
---|
37 | S SRSNREC=$O(^SRF(DA(1),50,DA(2)))
|
---|
38 | I SRSNREC'="B" Q
|
---|
39 | ASK W !!,"Does this entry complete all start and end times for this case? (Y/N)// " R SRYN:DTIME I '$T!(SRYN["^") S SRYN="N" Q
|
---|
40 | S SRYN=$E(SRYN) I "YyNn?"'[SRYN W !,"Invalid response, please enter Yes or No. Use ? for help." G ASK
|
---|
41 | I "?"[SRYN D HELP G ASK
|
---|
42 | I ("Nn"[SRYN) S SRFDA(130,DA(1)_",",.214)="@" D FILE^DIE("","SRFDA","^TMP(""SR"",$J)") K SRFDA Q
|
---|
43 | D CHKTIME
|
---|
44 | I SRAFLAG=1 K SRAFLAG Q
|
---|
45 | S SRLREC=$O(^SRF(DA(1),50,"B"),-1)
|
---|
46 | I SRLREC'=DA(2) S SRLET=$$GET1^DIQ(130.213,SRLREC_","_DA(1)_",",1,"I")
|
---|
47 | I SRLREC=DA(2) S SRLET=X
|
---|
48 | S SRTIME(130,DA(1)_",",.24)=SRLET,SRTIME(130,DA(1)_",",.214)="1" D FILE^DIE("","SRTIME","^TMP(""SR"",$J)")
|
---|
49 | K SRAFLAG
|
---|
50 | Q:'$D(SRCON)
|
---|
51 | ASK2 ;
|
---|
52 | W !,"Does this entry complete all start and end times for the concurrent",!,"case? (Y/N)// " R SRYN:DTIME I '$T!(SRYN["^") S SRYN="N" Q
|
---|
53 | I "?"[SRYN D HELP^SROCON D HELP G ASK2
|
---|
54 | S SRYN=$E(SRYN) I "YyNn"'[SRYN W !,"Invalid response, please enter Yes or No. Use ? for help." G ASK2
|
---|
55 | I ("Nn"[SRYN),(($P(^SRF(SRCON,.2),"^",17)=1)) S SRFDA(130,SRCON_",",.214)="@" D FILE^DIE("","SRFDA","^TMP(""SR"",$J)") K SRFDA Q
|
---|
56 | S SRTIME(130,SRCON_",",.214)="1" D FILE^DIE("","SRTIME","^TMP(""SR"",$J)")
|
---|
57 | Q
|
---|
58 | CHKTIME ; verify blocks of time are valid
|
---|
59 | N SRSREC,SRCST,SRCET,SRAFLAG1,SRSNREC,SRNST,SRLREC
|
---|
60 | S SRAFLAG=0,SRSREC=0,SRAFLAG1=0
|
---|
61 | F S SRSREC=$O(^SRF(DA(1),50,SRSREC)) Q:'SRSREC!(SRAFLAG1=1) D
|
---|
62 | .S SRCST=$$GET1^DIQ(130.213,SRSREC_","_DA(1)_",",.01,"I"),SRCET=$$GET1^DIQ(130.213,SRSREC_","_DA(1)_",",1,"I")
|
---|
63 | .S SRLREC=$O(^SRF(DA(1),50,"B"),-1)
|
---|
64 | .I (SRCET=""),(SRSREC'=SRLREC) W !!,"One or more time entries missing end time. Please correct." S SRAFLAG=1,SRAFLAG1=1 Q
|
---|
65 | .S SRSNREC=$O(^SRF(DA(1),50,SRSREC))
|
---|
66 | .I SRSNREC="B" S SRAFLAG1=1 Q
|
---|
67 | .S SRNST=$$GET1^DIQ(130.213,SRSNREC_","_DA(1)_",",.01,"I")
|
---|
68 | .I SRNST<SRCET W !!,"Some time entries overlap. Please correct." S SRAFLAG=1,SRAFLAG1=1 Q
|
---|
69 | Q
|
---|
70 | CSET ; caled by set xref of mult anes start and end times used for concurrent case anes field stuffing
|
---|
71 | N SRSREC,SRCST,SRCET,SRTIME
|
---|
72 | I $$GET1^DIQ(130,DA(1),.214,"I")'=1 Q
|
---|
73 | S SRSREC=0
|
---|
74 | F S SRSREC=$O(^SRF(DA(1),50,SRSREC)) Q:'SRSREC D
|
---|
75 | .S:'$D(SRCST) SRCST=$$GET1^DIQ(130.213,SRSREC_","_DA(1)_",",.01,"I")
|
---|
76 | .S SRCET=$$GET1^DIQ(130.213,SRSREC_","_DA(1)_",",1,"I")
|
---|
77 | S SRTIME(130,DA(1)_",",.24)=SRCET,SRTIME(130,DA(1)_",",.21)=SRCST D FILE^DIE("","SRTIME","^TMP(""SR"",$J)")
|
---|
78 | Q
|
---|
79 | DEL ; called by kill xref of mult anes start and end times
|
---|
80 | I '$D(DA(2)) Q
|
---|
81 | I (DA(2)=1),(D=.01) S SRFDA(130,DA(1)_",",.21)="@" D FILE^DIE("","SRFDA","^TMP(""SR"",$J)") K SRFDA
|
---|
82 | I ($O(^SRF(DA(1),50,DA(2)))="B"),(D=1) S SRFDA(130,DA(1)_",",.24)="@",SRFDA(130,DA(1)_",",.214)="@" D FILE^DIE("","SRFDA","^TMP(""SR"",$J)") K SRFDA
|
---|
83 | Q
|
---|
84 | HELP ;
|
---|
85 | W !,"Enter ""Y"" only if the block of time entered is the final block of time for"
|
---|
86 | W !,"this case. If the block of time is not the final block, enter ""N""."
|
---|
87 | Q
|
---|
88 | BILLTIME() ; calculate total minutes for mult anes start and end times
|
---|
89 | N SRSREC,SRCST,SRCET,SRTTIME
|
---|
90 | S SRSREC=0,SRTTIME=0
|
---|
91 | I $$GET1^DIQ(130,D0,.214,"I")'=1 Q SRTTIME
|
---|
92 | I '$D(^SRF(D0,50)) Q SRTTIME
|
---|
93 | F S SRSREC=$O(^SRF(D0,50,SRSREC)) Q:'SRSREC D
|
---|
94 | .S SRCST=$$GET1^DIQ(130.213,SRSREC_","_D0_",",.01,"I"),SRCET=$$GET1^DIQ(130.213,SRSREC_","_D0_",",1,"I")
|
---|
95 | .D CALC
|
---|
96 | Q SRTTIME
|
---|
97 | CALC ; calculate minutes between start and end times
|
---|
98 | N SRETH,SRDHRS,SRSHR,SREHR,SRSMN,SREMN,SRSTH,X1,X2,Y,%H
|
---|
99 | S X1=SRCST,X2=0 D C^%DTC S SRSTH=%H
|
---|
100 | S X1=SRCET,X2=0 D C^%DTC S SRETH=%H
|
---|
101 | S SRDHRS=(SRETH-SRSTH)*24
|
---|
102 | S SRSHR=$E(($P(SRCST_"0",".",2)),1,2)
|
---|
103 | S SREHR=$E(($P(SRCET_"0",".",2)),1,2)
|
---|
104 | I SREHR<SRSHR S SREHR=SREHR+24,SRDHRS=SRDHRS-24
|
---|
105 | S SRSMN=$E(($P(SRCST_"00",".",2)),3,4)
|
---|
106 | S SREMN=$E(($P(SRCET_"00",".",2)),3,4)
|
---|
107 | I SREMN<SRSMN S SREMN=SREMN+60,SREHR=SREHR-1
|
---|
108 | S Y=(SRDHRS*60)+((SREHR-SRSHR)*60)+(SREMN-SRSMN)
|
---|
109 | S SRTTIME=SRTTIME+Y
|
---|
110 | Q
|
---|
111 | ANESTIME(SRDFN,SRFDATE,SRTDATE) ; API to return multiple anesthesia records and times
|
---|
112 | N SRCASE,SRREC,SRCNT,SRNON,SRX,SRDATE,SRRES,SRSC,SRCV,SRQO,SRIR,SREC,SRMST,SRHNC,SRAO,SRSREC,SRCST,SRCET,SRTTIME,SR,SRDIAG,SRSHAD
|
---|
113 | S (SRREC,SRCNT,SRRES)=0
|
---|
114 | I '$D(SRDFN)!'$D(SRFDATE) Q -1
|
---|
115 | I '$D(SRTDATE) S SRTDATE=SRFDATE
|
---|
116 | I '$D(^SRF("B",SRDFN)) Q 0
|
---|
117 | S SRFDATE=$P(SRFDATE,"."),SRTDATE=$P(SRTDATE,".")
|
---|
118 | F S SRREC=$O(^SRF("B",SRDFN,SRREC)) Q:'SRREC S SRCNT=SRCNT+1,SRCASE(SRCNT)=SRREC
|
---|
119 | S SRREC=0
|
---|
120 | F S SRREC=$O(SRCASE(SRREC)) Q:'SRREC D
|
---|
121 | .S SRCASE=SRCASE(SRREC)
|
---|
122 | .S SRNON=$S($P($G(^SRF(SRCASE,"NON")),"^")="Y":1,1:0)
|
---|
123 | .I 'SRNON S SRX=$G(^SRF(SRCASE,.2)),SRDATE=$P(SRX,"^",10)
|
---|
124 | .I SRNON S SRX=$G(^SRF(SRCASE,"NON")),SRDATE=$P(SRX,"^",4)
|
---|
125 | .S SRDATE=$P(SRDATE,".")
|
---|
126 | .I (SRDATE<SRFDATE)!(SRDATE>SRTDATE) K SRCASE(SRREC) Q
|
---|
127 | S SRREC=0
|
---|
128 | F S SRREC=$O(SRCASE(SRREC)) Q:'SRREC D
|
---|
129 | .S SRCASE=SRCASE(SRREC)
|
---|
130 | .I $$GET1^DIQ(130,SRCASE,.214,"I")'=1 S SRRES=-2 Q
|
---|
131 | .S SRDIAG=$P($G(^SRO(136,SRCASE,0)),"^",3)
|
---|
132 | .I 'SRDIAG S SRDIAG=$P($G(^SRF(SRCASE,34)),"^",2)
|
---|
133 | .S (SRAO,SREC,SRHNC,SRIR,SRMST,SRSHAD)=0
|
---|
134 | .S SR(0)=$G(^SRF(SRCASE,0))
|
---|
135 | .S SRSC=$P(SR(0),"^",16),SRAO=$P(SR(0),"^",17),SRIR=$P(SR(0),"^",18),SREC=$P(SR(0),"^",19),SRMST=$P(SR(0),"^",22),SRHNC=$P(SR(0),"^",23),SRCV=$P(SR(0),"^",24),SRSHAD=$P(SR(0),"^",25)
|
---|
136 | .I '$D(^SRF(SRCASE,50)) S:SRRES'=1 SRRES=-2 Q
|
---|
137 | .S SRRES=1,SRREC=0
|
---|
138 | .F S SRREC=$O(^SRF(SRCASE,50,SRREC)) Q:(SRREC="B")!(SRREC="") D
|
---|
139 | ..S SRCST=$$GET1^DIQ(130.213,SRREC_","_SRCASE_",",.01,"I"),SRCET=$$GET1^DIQ(130.213,SRREC_","_SRCASE_",",1,"I")
|
---|
140 | ..I 'SRCET K ^TMP("SRANES",$J,SRCASE) S SRRES=-2,SRREC="" Q
|
---|
141 | ..S SRTTIME=0 D CALC
|
---|
142 | ..S ^TMP("SRANES",$J,SRCASE,SRCST,SRCET)=SRDFN_"^"_SRTTIME_"^"_SRDIAG_"^"_SRSC_"^"_SRCV_"^"_SRAO_"^"_SRIR_"^"_SREC_"^"_SRMST_"^"_SRHNC_"^"_SRSHAD
|
---|
143 | Q SRRES
|
---|