| 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
|
---|