| 1 | ORDV04 ; SLC/DAN - OE/RR ;7/21/04  15:32 | 
|---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**109,148,160,208,195,241,215,274,256**;Dec 17,1997;Build 5 | 
|---|
| 3 | ;OE/RR COMPONENT | 
|---|
| 4 | ; | 
|---|
| 5 | ; ^TMP("GMPLHS",$J) used per DBIA 1183 | 
|---|
| 6 | ; ^UTILITY and ^TMP("GMRVD") used per DBIA 10061 | 
|---|
| 7 | ; | 
|---|
| 8 | ORC(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ; Current Orders | 
|---|
| 9 | ;External calls to EN^ORQ1, ^OR(100 | 
|---|
| 10 | N ORCNT,ORJ,ORSITE,SITE,ORX0,ORLIST,GO | 
|---|
| 11 | Q:'$L(OREXT) | 
|---|
| 12 | S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2) | 
|---|
| 13 | Q:'$L($T(@GO)) | 
|---|
| 14 | S ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3) | 
|---|
| 15 | K ^TMP("ORR",$J),^TMP("ORDATA",$J) | 
|---|
| 16 | D @GO | 
|---|
| 17 | I '$D(^TMP("ORR",$J)) Q | 
|---|
| 18 | S ORCNT=0,ORJ=0 | 
|---|
| 19 | F  S ORJ=$O(^TMP("ORR",$J,ORLIST,ORJ)) Q:'+ORJ!(ORCNT'<ORMAX)  S ORX0=^(ORJ) D | 
|---|
| 20 | . S ORCNT=ORCNT+1,SITE=$S($L($G(^TMP("ORR",$J,ORLIST,ORJ,"facility"))):^("facility"),1:ORSITE) | 
|---|
| 21 | . S ^TMP("ORDATA",$J,ORLIST,ORJ,"WP",1)="1^"_SITE ;Station ID | 
|---|
| 22 | . D SPMRG^ORDVU("^TMP(""ORR"","_$J_","""_ORLIST_""","_ORJ_",""TX"")","^TMP(""ORDATA"","_$J_","""_ORLIST_""","_ORJ_",""WP"",2)",2) ;order text | 
|---|
| 23 | . S ^TMP("ORDATA",$J,ORLIST,ORJ,"WP",3)="3^"_$P(ORX0,"^",6) ; status | 
|---|
| 24 | . S ^TMP("ORDATA",$J,ORLIST,ORJ,"WP",4)="4^"_$$DATE^ORDVU($P(ORX0,"^",4)) ;start date | 
|---|
| 25 | . S ^TMP("ORDATA",$J,ORLIST,ORJ,"WP",5)="5^"_$$DATE^ORDVU($P(ORX0,"^",5)) ;stop date | 
|---|
| 26 | . S ^TMP("ORDATA",$J,ORLIST,ORJ,"WP",7)="7^"_$P(^TMP("ORR",$J,ORLIST,ORJ),U) ;Order Number | 
|---|
| 27 | . I $O(^TMP("ORR",$J,ORLIST,ORJ,"TX",1)) S ^TMP("ORDATA",$J,ORLIST,ORJ,"WP",6)="6^[+]" ;flag for details | 
|---|
| 28 | K ^TMP("ORR",$J) | 
|---|
| 29 | S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 30 | Q | 
|---|
| 31 | ORCVA ;VA call to get Current Orders | 
|---|
| 32 | N ORVP | 
|---|
| 33 | S ORVP=DFN_";DPT(" | 
|---|
| 34 | I '$D(^OR(100,"AC",ORVP)) Q | 
|---|
| 35 | D EN^ORQ1(ORVP,,2,,ORDBEG,ORDEND,1) ;get current orders. ORLIST is set in ORQ1 | 
|---|
| 36 | Q | 
|---|
| 37 | PLAILALL(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ;Problem list API returns ALL problems | 
|---|
| 38 | N GO | 
|---|
| 39 | Q:'$L(OREXT) | 
|---|
| 40 | S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2) | 
|---|
| 41 | Q:'$L($T(@GO)) | 
|---|
| 42 | D PLAIL | 
|---|
| 43 | Q | 
|---|
| 44 | PLALL ;Jump here for All Problems | 
|---|
| 45 | D GETLIST^GMPLHS(DFN,"ALL") | 
|---|
| 46 | Q | 
|---|
| 47 | PLAILI(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ;Problem list API returns INACTIVE problems | 
|---|
| 48 | N GO | 
|---|
| 49 | Q:'$L(OREXT) | 
|---|
| 50 | S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2) | 
|---|
| 51 | Q:'$L($T(@GO)) | 
|---|
| 52 | D PLAIL | 
|---|
| 53 | Q | 
|---|
| 54 | PLI ;Jump here for Inactive Problems | 
|---|
| 55 | D GETLIST^GMPLHS(DFN,"I") | 
|---|
| 56 | Q | 
|---|
| 57 | PLAILA(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ;Problem list API returns ACTIVE problems | 
|---|
| 58 | N GO | 
|---|
| 59 | Q:'$L(OREXT) | 
|---|
| 60 | S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2) | 
|---|
| 61 | Q:'$L($T(@GO)) | 
|---|
| 62 | D PLAIL | 
|---|
| 63 | Q | 
|---|
| 64 | PLA ;Jump here for Active Problems | 
|---|
| 65 | D GETLIST^GMPLHS(DFN,"A") | 
|---|
| 66 | Q | 
|---|
| 67 | PLAIL ;problems(active, inactive or all) | 
|---|
| 68 | ;External calls to ^GMPLHS | 
|---|
| 69 | ; input: | 
|---|
| 70 | ;   STATUS = "A"   to produce active problems | 
|---|
| 71 | ;   STATUS = "I"   to produce inactive problems | 
|---|
| 72 | ;   STATUS = "ALL" to produce all problems | 
|---|
| 73 | ; | 
|---|
| 74 | I $L($T(GCPR^OMGCOAS1)) D  Q  ; Call if FHIE station 200 | 
|---|
| 75 | . D GCPR^OMGCOAS1(DFN,"PLL",ORDBEG,ORDEND,ORMAX) | 
|---|
| 76 | . S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 77 | N ORPROBNO,ORXREC0,ORLOC,I,K,X,ORSITE,SITE,ORMORE | 
|---|
| 78 | S ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3) | 
|---|
| 79 | K ^TMP("ORDATA",$J),^TMP("GMPLHS",$J)  ;DBIA #1183 | 
|---|
| 80 | D @GO | 
|---|
| 81 | I '$D(^TMP("GMPLHS",$J)) Q | 
|---|
| 82 | S ORPROBNO=0 | 
|---|
| 83 | F I=1:1:ORMAX S ORPROBNO=$O(^TMP("GMPLHS",$J,ORPROBNO)) Q:'ORPROBNO  D | 
|---|
| 84 | . S ORXREC0=$G(^TMP("GMPLHS",$J,ORPROBNO,0)),ORMORE=0 | 
|---|
| 85 | . S SITE=$S($L($G(^TMP("GMPLHS",$J,ORPROBNO,"facility"))):^("facility"),1:ORSITE) | 
|---|
| 86 | . S ^TMP("ORDATA",$J,ORPROBNO,"WP",1)="1^"_SITE ;Station ID | 
|---|
| 87 | . S ^TMP("ORDATA",$J,ORPROBNO,"WP",2)="2^"_$P(ORXREC0,U,5) ;status | 
|---|
| 88 | . S ^TMP("ORDATA",$J,ORPROBNO,"WP",3)="3^"_$G(^TMP("GMPLHS",$J,ORPROBNO,"N")) ;provider narrative | 
|---|
| 89 | . S ^TMP("ORDATA",$J,ORPROBNO,"WP",4)="4^"_$$DATE^ORDVU($P(ORXREC0,U,6)) ;onset date | 
|---|
| 90 | . S ^TMP("ORDATA",$J,ORPROBNO,"WP",5)="5^"_$$DATE^ORDVU($P(ORXREC0,U,2)) ;last modified date | 
|---|
| 91 | . S ^TMP("ORDATA",$J,ORPROBNO,"WP",6)="6^"_$P(ORXREC0,U,7) ;provider | 
|---|
| 92 | . S ORLOC=0,K=0 | 
|---|
| 93 | . F  S ORLOC=$O(^TMP("GMPLHS",$J,ORPROBNO,"C",ORLOC)) Q:'ORLOC  D | 
|---|
| 94 | .. S X=0 | 
|---|
| 95 | .. F  S X=$O(^TMP("GMPLHS",$J,ORPROBNO,"C",ORLOC,X)) Q:'X  D | 
|---|
| 96 | ... S K=K+1,ORMORE=1 | 
|---|
| 97 | ... S ^TMP("ORDATA",$J,ORPROBNO,"WP",7,K)="7^"_$P($G(^TMP("GMPLHS",$J,ORPROBNO,"C",ORLOC,X,0)),U) ;note narrative | 
|---|
| 98 | . S ^TMP("ORDATA",$J,ORPROBNO,"WP",8)="8^"_$P(ORXREC0,U,14) ;exposures | 
|---|
| 99 | . I ORMORE S ^TMP("ORDATA",$J,ORPROBNO,"WP",9)="9^[+]" ;flag for details | 
|---|
| 100 | K ^TMP("GMPLHS",$J) | 
|---|
| 101 | S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 102 | Q | 
|---|
| 103 | SR(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ;Surgery Report | 
|---|
| 104 | ;External call to ^ORDV04A (external calls are noted in that routine) | 
|---|
| 105 | N ORCNT | 
|---|
| 106 | S ORCNT=0 | 
|---|
| 107 | K ^TMP("ORDATA",$J) | 
|---|
| 108 | D ENSR^ORDV04A | 
|---|
| 109 | S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 110 | Q | 
|---|
| 111 | VS(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ; get vital Signs | 
|---|
| 112 | ;External calls to GMRVUT0 | 
|---|
| 113 | I $L($T(GCPR^OMGCOAS1)) D  Q  ; OMGCOAS1 routine only on Station 200 | 
|---|
| 114 | . D GCPR^OMGCOAS1(DFN,"VIT",ORDBEG,ORDEND,ORMAX) | 
|---|
| 115 | . S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 116 | N ORDT,I,TYPE,IEN,GMRVSTR,ORSITE,SITE,PLACE,GO | 
|---|
| 117 | Q:'$L(OREXT) | 
|---|
| 118 | S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2) | 
|---|
| 119 | Q:'$L($T(@GO)) | 
|---|
| 120 | K ^UTILITY($J,"GMRVD"),^TMP("ORDATA",$J) | 
|---|
| 121 | S GMRVSTR="T;P;R;BP;HT;WT;PN;PO2;CVP;CG",GMRVSTR(0)=ORDBEG_"^"_ORDEND_"^"_ORMAX_"^"_1 | 
|---|
| 122 | S ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3) | 
|---|
| 123 | D @GO | 
|---|
| 124 | S ORDT=0 | 
|---|
| 125 | F I=1:1 S ORDT=$O(^UTILITY($J,"GMRVD",ORDT)) Q:'+ORDT!(I>ORMAX)  D  ;DBIA 10061 | 
|---|
| 126 | . S SITE=$S($L($G(^TMP("GMRVD",$J,ORDT,"facility"))):^("facility"),1:ORSITE)  ;DBIA 10061 | 
|---|
| 127 | . S ^TMP("ORDATA",$J,"WP",ORDT,1)="1^"_SITE | 
|---|
| 128 | . S ^TMP("ORDATA",$J,"WP",ORDT,2)="2^"_$$DATE^ORDVU(9999999-ORDT) ;date vitals taken | 
|---|
| 129 | . S TYPE="" | 
|---|
| 130 | . F  S TYPE=$O(^UTILITY($J,"GMRVD",ORDT,TYPE)) Q:TYPE=""  D | 
|---|
| 131 | .. S IEN=$O(^UTILITY($J,"GMRVD",ORDT,TYPE,0)) Q:'IEN | 
|---|
| 132 | .. S PLACE=$S(TYPE="T":3,TYPE="P":4,TYPE="R":5,TYPE="BP":6,TYPE="HT":7,TYPE="WT":8,TYPE="PN":9,TYPE="PO2":10,TYPE="CVP":11,TYPE="CG":12,1:13) | 
|---|
| 133 | .. S ^TMP("ORDATA",$J,"WP",ORDT,PLACE)=PLACE_"^"_$P($G(^UTILITY($J,"GMRVD",ORDT,TYPE,IEN)),"^",8) ;Get value of vitals from global | 
|---|
| 134 | K ^UTILITY($J,"GMRVD") | 
|---|
| 135 | S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 136 | Q | 
|---|
| 137 | TIUPRG(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ;  TIU version of progress reports | 
|---|
| 138 | ;External calls to TIUSRVLO,TIUSRVR1,VASITE | 
|---|
| 139 | I $L($T(GCPR^OMGCOAS1)) D  Q  ; Call if FHIE station 200 | 
|---|
| 140 | . D GCPR^OMGCOAS1(DFN,"PN",ORDBEG,ORDEND,ORMAX) | 
|---|
| 141 | . S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 142 | N ORDT,DATE,ORCI,ORGLOB,ORGLOBA,ORTEMP,ORSITE,SITE,I,ORNODE,GO,ORIMAG | 
|---|
| 143 | Q:'$L(OREXT) | 
|---|
| 144 | S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2) | 
|---|
| 145 | Q:'$L($T(@GO)) | 
|---|
| 146 | S ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3) | 
|---|
| 147 | D @GO | 
|---|
| 148 | I '$D(@ORGLOB) Q | 
|---|
| 149 | S ORNODE=0,ORCI=0 | 
|---|
| 150 | K ^TMP("ORDATA",$J) | 
|---|
| 151 | F  S ORNODE=$O(@ORGLOB@(ORNODE)) Q:'ORNODE!(ORCI'<ORMAX)  D | 
|---|
| 152 | . S ORTEMP=@ORGLOB@(ORNODE) | 
|---|
| 153 | . S ORIMAG=$P($$RESOLVE^TIUSRVLO($P(ORTEMP,U)),U,10) | 
|---|
| 154 | . S DATE=$P(ORTEMP,U,3)       ;date | 
|---|
| 155 | . S SITE=$S($L($G(@ORGLOB@(ORNODE,"facility"))):^("facility"),1:ORSITE) | 
|---|
| 156 | . S ^TMP("ORDATA",$J,ORNODE,"WP",1)="1^"_SITE ;Station ID | 
|---|
| 157 | . S ^TMP("ORDATA",$J,ORNODE,"WP",2)="2^"_$P(ORTEMP,U) ;TIU ien | 
|---|
| 158 | . S ^TMP("ORDATA",$J,ORNODE,"WP",3)="3^"_$$DATE^ORDVU(DATE) ;date | 
|---|
| 159 | . S ^TMP("ORDATA",$J,ORNODE,"WP",4)="4^"_$P(ORTEMP,U,2) ;type | 
|---|
| 160 | . S ^TMP("ORDATA",$J,ORNODE,"WP",5)="5^"_$P($P(ORTEMP,U,5),";",2) ;author | 
|---|
| 161 | . S ORCI=ORCI+1 | 
|---|
| 162 | . D TGET^TIUSRVR1(.ORGLOBA,$P(ORTEMP,U)) ;Call back to get note text | 
|---|
| 163 | . D SPMRG^ORDVU($NA(@ORGLOBA),$NA(^TMP("ORDATA",$J,ORNODE,"WP",6)),6) ;Notes Text | 
|---|
| 164 | . I $O(@ORGLOBA@(0)) S ^TMP("ORDATA",$J,ORNODE,"WP",7)="7^[+]" | 
|---|
| 165 | . S ^TMP("ORDATA",$J,ORNODE,"WP",8)="8^"_ORIMAG | 
|---|
| 166 | . K @ORGLOBA | 
|---|
| 167 | K @ORGLOB | 
|---|
| 168 | S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 169 | Q | 
|---|
| 170 | TPRG ;Jump here for Tiu Progress Notes | 
|---|
| 171 | D CONTEXT^TIUSRVLO(.ORGLOB,3,5,DFN,ORDBEG,ORDEND,,ORMAX) | 
|---|
| 172 | Q | 
|---|
| 173 | TIUDCS(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ;  Discharge Summaries | 
|---|
| 174 | ;External calls to VASITE, DIQ1, TIUSRVLO | 
|---|
| 175 | I $L($T(GCPR^OMGCOAS1)) D  Q  ; Call if FHIE station 200 | 
|---|
| 176 | . D GCPR^OMGCOAS1(DFN,"DS",ORDBEG,ORDEND,ORMAX) | 
|---|
| 177 | . S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 178 | N ORGLOB,ORGLOBA,ORI,ORNODE,ORICDIEN,ORARRAY,ORTEMP,ORSITE,SITE,DIC,DR,DIQ,DA,GO | 
|---|
| 179 | Q:'$L(OREXT) | 
|---|
| 180 | S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2) | 
|---|
| 181 | Q:'$L($T(@GO)) | 
|---|
| 182 | S ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3) | 
|---|
| 183 | D @GO | 
|---|
| 184 | I '$D(@ORGLOB) Q | 
|---|
| 185 | K ^TMP("ORDATA",$J) | 
|---|
| 186 | S ORNODE=0,ORI=0 | 
|---|
| 187 | F  S ORNODE=$O(@ORGLOB@(ORNODE)) Q:'ORNODE!(ORI'<ORMAX)  D | 
|---|
| 188 | . S ORTEMP=@ORGLOB@(ORNODE) | 
|---|
| 189 | . S SITE=$S($L($G(@ORGLOB@(ORNODE,"facility"))):^("facility"),1:ORSITE) | 
|---|
| 190 | . S ^TMP("ORDATA",$J,ORNODE,"WP",1)="1^"_SITE ;Station ID | 
|---|
| 191 | . K ORARRAY S DIC=8925,DA=$P(ORTEMP,U),DR=".05;.07;.08;1202;1502",DIQ="ORARRAY" | 
|---|
| 192 | . D EN^DIQ1 | 
|---|
| 193 | . S DIQ="ORARRAY(8925,"_DA_")" | 
|---|
| 194 | . S ^TMP("ORDATA",$J,ORNODE,"WP",2)="2^"_$$DATEMMM^ORDVU($G(@DIQ@(.07))) ;episode begin date/time | 
|---|
| 195 | . S ^TMP("ORDATA",$J,ORNODE,"WP",3)="3^"_$$DATEMMM^ORDVU($G(@DIQ@(.08))) ;episode end date/time | 
|---|
| 196 | . S ^TMP("ORDATA",$J,ORNODE,"WP",4)="4^"_$G(@DIQ@(1202)) ;author/dicator | 
|---|
| 197 | . S ^TMP("ORDATA",$J,ORNODE,"WP",5)="5^"_$G(@DIQ@(1502)) ;signed by | 
|---|
| 198 | . S ^TMP("ORDATA",$J,ORNODE,"WP",6)="6^"_$G(@DIQ@(.05)) ;status | 
|---|
| 199 | . S ORI=ORI+1 | 
|---|
| 200 | . D TGET^TIUSRVR1(.ORGLOBA,$P(ORTEMP,U)) ;Call back to get summary text | 
|---|
| 201 | . D SPMRG^ORDVU($NA(@ORGLOBA),$NA(^TMP("ORDATA",$J,ORNODE,"WP",7)),7) ;summary Text | 
|---|
| 202 | . I $O(@ORGLOBA@(0)) S ^TMP("ORDATA",$J,ORNODE,"WP",8)="8^[+]" ;detail flag | 
|---|
| 203 | . K @ORGLOBA | 
|---|
| 204 | K @ORGLOB | 
|---|
| 205 | S ROOT=$NA(^TMP("ORDATA",$J)) | 
|---|
| 206 | Q | 
|---|
| 207 | TDCS ;Jump here for TIU Discharge Summary | 
|---|
| 208 | D CONTEXT^TIUSRVLO(.ORGLOB,244,5,DFN,ORDBEG,ORDEND,,ORMAX) | 
|---|
| 209 | Q | 
|---|