| 1 | ORWSR ;SLC/REV-Surgery RPCs ;08/27/03 | 
|---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**109,116,132,148,160,190,274**;Dec 17, 1997;Build 20 | 
|---|
| 3 | ; | 
|---|
| 4 | SHOWSURG(ORY) ;is Surgery ES patch installed? | 
|---|
| 5 | S ORY=$$PATCH^XPDUTL("SR*3.0*100") | 
|---|
| 6 | Q:+ORY=0 | 
|---|
| 7 | S ORY=$$GET^XPAR("ALL","ORWOR SHOW SURGERY TAB",1) | 
|---|
| 8 | Q | 
|---|
| 9 | LIST(ORY,ORDFN,ORBDT,OREDT,ORCTXT,ORMAX,ORFHIE) ;RETURN LIST OF SURGERY CASES FOR A PATIENT | 
|---|
| 10 | Q:'$$PATCH^XPDUTL("SR*3.0*100") | 
|---|
| 11 | N I,J,X,SHOWADD,SHOWDOCS | 
|---|
| 12 | S ORY=$NA(^TMP("ORLIST",$J)) | 
|---|
| 13 | Q:'+ORDFN | 
|---|
| 14 | S:'$G(ORCTXT) ORCTXT=1 | 
|---|
| 15 | S:'$G(ORBDT) ORBDT="" | 
|---|
| 16 | S:'$G(OREDT) OREDT="" | 
|---|
| 17 | S:'$G(ORMAX) ORMAX="" | 
|---|
| 18 | S (SHOWDOCS,SHOWADD)=1 | 
|---|
| 19 | D LIST^SROESTV(.ORY,ORDFN,ORBDT,OREDT,ORMAX,SHOWDOCS) | 
|---|
| 20 | S I=0 | 
|---|
| 21 | F  S I=$O(@ORY@(I)) Q:+I=0  D | 
|---|
| 22 | . S X=@ORY@(I),J=0 | 
|---|
| 23 | . S $P(X,U,6)=$$NON^SROESTV(+X) | 
|---|
| 24 | . S $P(X,U,14)=ORCTXT | 
|---|
| 25 | . S $P(X,U,13)=$P(X,U,5),$P(X,U,5)="" | 
|---|
| 26 | . S @ORY@(I)=X | 
|---|
| 27 | . F  S J=$O(@ORY@(I,J)) Q:+J=0  D | 
|---|
| 28 | . . S X=@ORY@(I,J) | 
|---|
| 29 | . . S:(($P(X,U,14)=ORCTXT)!($P(X,U,14)="")) $P(X,U,14)=+$P(X,U,10) | 
|---|
| 30 | . . S @ORY@(I,J)=X | 
|---|
| 31 | Q | 
|---|
| 32 | CASELIST(ORY,ORDFN) ; retrieve list of cases, but no documents | 
|---|
| 33 | Q:'$$PATCH^XPDUTL("SR*3.0*100") | 
|---|
| 34 | Q:'+ORDFN | 
|---|
| 35 | N ORBDT,OREDT,ORMAX,I,SHOWDOCS S (ORBDT,OREDT,ORMAX)="",SHOWDOCS=0 | 
|---|
| 36 | S ORY=$NA(^TMP("ORLIST",$J)) | 
|---|
| 37 | D LIST^SROESTV(.ORY,ORDFN,ORBDT,OREDT,ORMAX,SHOWDOCS) | 
|---|
| 38 | S I=0 | 
|---|
| 39 | F  S I=$O(@ORY@(I)) Q:+I=0  D | 
|---|
| 40 | . S $P(@ORY@(I),U,4)=$P($P(@ORY@(I),U,4),";",2) | 
|---|
| 41 | Q | 
|---|
| 42 | GTSURCTX(Y,ORUSER) ; Returns current Notes view context for user | 
|---|
| 43 | N OCCLIM,SHOWSUB | 
|---|
| 44 | S Y=$$GET^XPAR("ALL","ORCH CONTEXT SURGERY",1) | 
|---|
| 45 | Q | 
|---|
| 46 | SVSURCTX(Y,ORCTXT) ; Save new Notes view preferences for user | 
|---|
| 47 | N TMP | 
|---|
| 48 | S TMP=$$GET^XPAR(DUZ_";VA(200,","ORCH CONTEXT SURGERY",1) | 
|---|
| 49 | I TMP'="" D  Q | 
|---|
| 50 | . D CHG^XPAR(DUZ_";VA(200,","ORCH CONTEXT SURGERY",1,ORCTXT) | 
|---|
| 51 | D ADD^XPAR(DUZ_";VA(200,","ORCH CONTEXT SURGERY",1,ORCTXT) | 
|---|
| 52 | Q | 
|---|
| 53 | ; | 
|---|
| 54 | ONECASE(ORY,ORTIUDA) ;Given a TIU document, return the case and related documents | 
|---|
| 55 | Q:'$$PATCH^XPDUTL("SR*3.0*100")!(+$G(ORTIUDA)=0) | 
|---|
| 56 | N ORCASE | 
|---|
| 57 | D GET1405^TIUSRVR(.ORCASE,ORTIUDA) | 
|---|
| 58 | I +ORCASE'>0 S ORY=ORCASE Q | 
|---|
| 59 | D GETONE(.ORY,+ORCASE) | 
|---|
| 60 | Q | 
|---|
| 61 | GETONE(ORY,ORCASE) ; called by ONECASE and RPTTEXT | 
|---|
| 62 | ;Q:'$$PATCH^XPDUTL("SR*3.0*100") | 
|---|
| 63 | N ORTMP,J,SHOWADD,ORCTXT | 
|---|
| 64 | S SHOWADD=1,ORCTXT=1 | 
|---|
| 65 | D ONE^SROESTV("ORY",+ORCASE) | 
|---|
| 66 | S X=ORY(+ORCASE),J=0 | 
|---|
| 67 | S $P(X,U,6)=$$NON^SROESTV(+X) | 
|---|
| 68 | S $P(X,U,14)=ORCTXT | 
|---|
| 69 | S $P(X,U,13)=$P(X,U,5),$P(X,U,5)="" | 
|---|
| 70 | S ORTMP(0)=X | 
|---|
| 71 | F  S J=$O(ORY(+ORCASE,J)) Q:+J=0  D | 
|---|
| 72 | . S X=ORY(+ORCASE,J) | 
|---|
| 73 | . S:(($P(X,U,14)=ORCTXT)!($P(X,U,14)="")) $P(X,U,14)=+$P(X,U,10) | 
|---|
| 74 | . S ORTMP(J)=X | 
|---|
| 75 | K ORY M ORY=ORTMP | 
|---|
| 76 | Q | 
|---|
| 77 | SHOWOPTP(ORY,ORCASE) ;Should OpTop be displayed on signature? | 
|---|
| 78 | I '$$PATCH^XPDUTL("SR*3.0*100") S ORY=0 Q | 
|---|
| 79 | S ORY=$$OPTOP^SROESTV(+ORCASE) | 
|---|
| 80 | Q | 
|---|
| 81 | ISNONOR(ORY,ORCASE) ;Is the procedure a non-OR procedure? | 
|---|
| 82 | I '$$PATCH^XPDUTL("SR*3.0*100") S ORY=0 Q | 
|---|
| 83 | S ORY=$$NON^SROESTV(+ORCASE) | 
|---|
| 84 | Q | 
|---|
| 85 | RPTLIST(ORY,ORDFN) ;Return list of surgery reports for reports tab | 
|---|
| 86 | ;I '$$PATCH^XPDUTL("SR*3.0*100") D NOTYET(.ORY)  Q | 
|---|
| 87 | Q:'$$PATCH^XPDUTL("SR*3.0*100") | 
|---|
| 88 | Q:'+ORDFN | 
|---|
| 89 | N ORBDT,OREDT,ORMAX,I,SHOWDOCS,X,SITE | 
|---|
| 90 | S (ORBDT,OREDT,ORMAX)="",SHOWDOCS=0 | 
|---|
| 91 | S ORY=$NA(^TMP("ORLIST",$J)) | 
|---|
| 92 | S SITE=$$SITE^VASITE,SITE=$P(SITE,"^",2)_";"_$P(SITE,"^",3) | 
|---|
| 93 | D LIST^SROESTV(.ORY,ORDFN,ORBDT,OREDT,ORMAX,SHOWDOCS) | 
|---|
| 94 | S I=0 | 
|---|
| 95 | F  S I=$O(@ORY@(I)) Q:+I=0  D | 
|---|
| 96 | . S X=$P(@ORY@(I),U,2),$P(@ORY@(I),U,2)=$P(@ORY@(I),U,3),$P(@ORY@(I),U,3)=X | 
|---|
| 97 | . S $P(@ORY@(I),U,4)=$P($P(@ORY@(I),U,4),";",2) | 
|---|
| 98 | . S GMN=$P(@ORY@(I),U) | 
|---|
| 99 | . S $P(@ORY@(I),U,6)="LAB WORK-"_$S($O(^SRF(GMN,9,0)):"Yes",1:"No") ; Lab work | 
|---|
| 100 | . D STATUS^GMTSROB S:'$D(STATUS) STATUS="UNKNOWN" | 
|---|
| 101 | . S $P(@ORY@(I),U,7)="STATUS-"_STATUS ; op status | 
|---|
| 102 | . S Z=$P(^SRF(GMN,0),U,4) I Z>0 S Y=Z,C=$P(^DD(130,.04,0),U,2) D Y^DIQ S SPEC=Y K Y | 
|---|
| 103 | . S $P(@ORY@(I),U,8)="SPEC-"_$G(SPEC) ; Surgical specialty | 
|---|
| 104 | . S Z=$P($G(^SRF(GMN,31)),U,6) S:Z>0 DCTDTM=$$DATE^ORDVU(Z) | 
|---|
| 105 | . S $P(@ORY@(I),U,9)="DICT-"_$G(DCTDTM) ; Dictation Time | 
|---|
| 106 | . S Z=$P($G(^SRF(GMN,31)),U,7) S:Z>0 TRSDTM=$$DATE^ORDVU(Z) | 
|---|
| 107 | . S $P(@ORY@(I),U,10)="TRANS-"_$G(TRSDTM) ; Transcription Time | 
|---|
| 108 | . S @ORY@(I)=SITE_U_@ORY@(I) | 
|---|
| 109 | Q | 
|---|
| 110 | RPTTEXT(ROOT,DFN,ORID,ALPHA,OMEGA,DTRANGE,REMOTE,ORMAX,ORFHIE) ; -- return surgery report | 
|---|
| 111 | ;I '$$PATCH^XPDUTL("SR*3.0*100") D NOTYET(.ROOT)  Q | 
|---|
| 112 | Q:'$$PATCH^XPDUTL("SR*3.0*100") | 
|---|
| 113 | Q:+ORID=0 | 
|---|
| 114 | N X,ORI,J,ORDOC,ORCASE,CNT,LINES,ORSEP,ORTMP | 
|---|
| 115 | S (X,ORI)="",$P(ORSEP,"=",74)="" | 
|---|
| 116 | S ROOT=$NA(^TMP("ORXPND",$J)) | 
|---|
| 117 | K @ROOT | 
|---|
| 118 | S CNT=0 | 
|---|
| 119 | D GETONE(.ORCASE,ORID) | 
|---|
| 120 | S (ORI,J)="" | 
|---|
| 121 | F  S ORI=$O(ORCASE(ORI)) Q:ORI=""  D | 
|---|
| 122 | . S ORTMP(ORID,ORI)=ORCASE(ORI) | 
|---|
| 123 | K ORCASE M ORCASE=ORTMP | 
|---|
| 124 | S ORI="" | 
|---|
| 125 | F  S ORI=$O(ORCASE(ORID,ORI)) Q:ORI=""  D | 
|---|
| 126 | . Q:'$L($P(ORCASE(ORID,ORI),U,10)) | 
|---|
| 127 | . Q:$E($P(ORCASE(ORID,ORI),U,2),1,8)="Addendum" | 
|---|
| 128 | . D TGET^TIUSRVR1(.ORDOC,+ORCASE(ORID,ORI),"VIEW") | 
|---|
| 129 | . S J="",LINES=0 | 
|---|
| 130 | . F  S J=$O(@ORDOC@(J)) Q:J=""  D | 
|---|
| 131 | . . I $D(@ORDOC@(J))=10 D | 
|---|
| 132 | . . . S @ROOT@(J+CNT,0)=@ORDOC@(J,0),LINES=LINES+1 | 
|---|
| 133 | . . E  S @ROOT@(J+CNT,0)=@ORDOC@(J),LINES=LINES+1 | 
|---|
| 134 | . K ORDOC,ORY(ORID) S CNT=CNT+LINES+1 | 
|---|
| 135 | . S @ROOT@(CNT,0)=ORSEP,CNT=CNT+1 | 
|---|
| 136 | I CNT=0 S @ROOT@(CNT,0)="No reports are available for this case." | 
|---|
| 137 | Q | 
|---|
| 138 | NOTYET(ROOT) ; -- standard not available display text | 
|---|
| 139 | D SETITEM(.ROOT,"Report not available at this time.") | 
|---|
| 140 | Q | 
|---|
| 141 | SETITEM(ROOT,X) ; -- set item in list | 
|---|
| 142 | S @ROOT@($O(@ROOT@(9999),-1)+1)=X | 
|---|
| 143 | Q | 
|---|