| 1 | TIUVSIT ; SLC/JER - Interactive Visit look-up; 28-OCT-2003 [1/27/05 12:35pm]
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;**39,91,107,117,179,190**;Jun 20, 1997;Build 1
 | 
|---|
| 3 | ENPN(TIUY,DFN,ALLOWNEW) ; Entry point for Progress Notes
 | 
|---|
| 4 |  N DIRUT,DUOUT,DTOUT,TIULOC,TIUINOUT
 | 
|---|
| 5 |  I +$G(DFN)'>0 Q
 | 
|---|
| 6 |  I +$D(^DPT(DFN,.1)) D MAIN^TIUMOVE(.TIUY,DFN,"","","","1","CURRENT",0) Q
 | 
|---|
| 7 |  S TIUINOUT=$$INOUT
 | 
|---|
| 8 |  I $D(DIRUT) Q
 | 
|---|
| 9 |  I $P(TIUINOUT,U)="o" D MAIN(.TIUY,DFN,"","","","",1,"","",$G(ALLOWNEW)) Q
 | 
|---|
| 10 |  D MAIN^TIUMOVE(.TIUY,DFN,"","","",1,"LAST",1)
 | 
|---|
| 11 |  Q
 | 
|---|
| 12 | MAIN(TIUY,DFN,TIUSSN,TIUVDT,TIULDT,TIUDFLT,TIUMODE,TIULOC,TIUOCC,LETNEW) ;Control
 | 
|---|
| 13 |  N TIUFUTUR
 | 
|---|
| 14 | AGN K ^TMP("TIUVN",$J),^TMP("TIUVDT",$J),^TMP("TIUVNI",$J),^TMP("TIUNOT",$J),^TMP($J,"SDAMA301")
 | 
|---|
| 15 |  N C,I,N,TIUI,TIUII,TIUDA,TIUER,TIUOK,TIUX,TIUOUT,X,TIUNVIS,VASD,VAERR
 | 
|---|
| 16 |  N TIUPICK,TIULAST,TIUSDC,TIUVTRY,TIUAPPTS,TIUARR
 | 
|---|
| 17 |  S TIUMODE=$G(TIUMODE,1),LETNEW=$G(LETNEW,1)
 | 
|---|
| 18 |  S:+$G(DFN)'>0 DFN=+$$PATIENT^TIULA($G(TIUSSN)) I +DFN'>0 S TIUOUT=1 Q
 | 
|---|
| 19 |  S TIUOCC=$G(TIUOCC,20)
 | 
|---|
| 20 |  S TIUARR("FLDS")="1;2"
 | 
|---|
| 21 |  S TIUARR(1)=2000000,TIUARR(4)=DFN,TIUARR("MAX")=1
 | 
|---|
| 22 |  S TIUAPPTS=$$SDAPI^SDAMA301(.TIUARR)
 | 
|---|
| 23 |  K ^TMP($J,"SDAMA301")
 | 
|---|
| 24 |  I TIUAPPTS=-1 D  Q
 | 
|---|
| 25 |  . W !!,"Could not retrieve patient information due to a problem with the database.",!,"Please contact IRM"
 | 
|---|
| 26 |  I '$G(TIUAPPTS),(+TIUMODE'>0) Q
 | 
|---|
| 27 |  ; No appointments
 | 
|---|
| 28 |  I '$G(TIUAPPTS),(+TIUMODE>0) D  I +$G(TIUX)'>0 Q
 | 
|---|
| 29 |  . W !!,"No SCHEDULED APPOINTMENTS on file"
 | 
|---|
| 30 |  . D MAIN^TIUVISIT(.TIUY,DFN,$G(TIUSSN),$G(TIUVDT),$G(TIULDT),$G(TIUDFLT),$G(TIUMODE),$G(TIULOC),$G(TIUOCC),$G(LETNEW),"H",1,.TIUFUTUR)
 | 
|---|
| 31 |  . I +$G(TIUOUT) Q
 | 
|---|
| 32 |  . I '$D(TIUY),+LETNEW,'+$G(TIUVTRY) D ADD(DFN,.TIUX,1,.TIUSDC)
 | 
|---|
| 33 |  I '$G(TIUAPPTS),(+TIUX>0) G VADPT
 | 
|---|
| 34 |  I '$D(^TMP("TIUVN",$J)) D GETAPPT^TIUVSIT1(DFN,$G(TIULOC),$G(TIUOCC),$G(TIULDT),"",.TIULAST,$G(TIUVDT),+$G(TIUFUTUR)) S TIUFUTUR=0
 | 
|---|
| 35 |  ; error in visit lookup
 | 
|---|
| 36 |  I +TIUMODE,$D(^TMP("TIUVERR",$J)) D  Q
 | 
|---|
| 37 |  . W !!,$G(^TMP("TIUVERR",$J)),!
 | 
|---|
| 38 |  . I $D(^TMP("TIUVERR",$J,115)) W ^TMP("TIUVERR",$J,115),!
 | 
|---|
| 39 |  . K ^TMP("TIUVERR",$J)
 | 
|---|
| 40 |  ; no appointments scheduled w/in selection range
 | 
|---|
| 41 |  I +TIUMODE,'$D(^TMP("TIUVN",$J)),+LETNEW D  G:+$G(TIUFUTUR) AGN Q:+$G(TIUX)'>0  G VADPT
 | 
|---|
| 42 |  . N WHATNOW
 | 
|---|
| 43 |  . W !!,"No SCHEDULED APPOINTMENTS found through "
 | 
|---|
| 44 |  . W $$DATE^TIULS($$FMADD^XLFDT(DT,1),"AMTH DD, CCYY"),"...",!
 | 
|---|
| 45 |  . S WHATNOW=$$UP^XLFSTR($E($$NOTFOUND^TIUVSIT1))
 | 
|---|
| 46 |  . Q:$S(+$G(DUOUT):1,+$G(DTOUT):1,+$G(DIROUT):1,1:0)
 | 
|---|
| 47 |  . I $E(WHATNOW)="U" D  Q
 | 
|---|
| 48 |  . . D MAIN^TIUVISIT(.TIUY,DFN,$G(TIUSSN),$G(TIUVDT),$G(TIULDT),$G(TIUDFLT),$G(TIUMODE),$G(TIULOC),$G(TIUOCC),$G(LETNEW),"H",1,.TIUFUTUR) Q:+$G(TIUFUTUR)
 | 
|---|
| 49 |  . . I '$D(TIUY),+LETNEW,'+$G(TIUVTRY) D ADD(DFN,.TIUX,1,.TIUSDC)
 | 
|---|
| 50 |  . I $E(WHATNOW)="F" S TIUFUTUR=1 Q  ; FUTURE
 | 
|---|
| 51 |  . D ADD(DFN,.TIUX,$S($E(WHATNOW)="N":"",1:1),.TIUSDC)
 | 
|---|
| 52 |  I '+TIUMODE,'$D(^TMP("TIUVNI",$J)) Q
 | 
|---|
| 53 |  I '+TIUMODE,$G(TIUDFLT)="LAST" D  Q:+$G(TIUX)'>0  G VADPT
 | 
|---|
| 54 |  . N TIUI S TIUI=+$O(^TMP("TIUVNI",$J,0))
 | 
|---|
| 55 |  . S TIUX=$$GETVSIT(TIUI)
 | 
|---|
| 56 |  I +TIUMODE,($G(TIUDFLT)="LAST"),(+$O(^TMP("TIUVNI",$J,0))>0) S TIUPICK=+$O(^TMP("TIUVNI",$J,0))
 | 
|---|
| 57 |  S (TIUER,TIUOK,TIUI)=0
 | 
|---|
| 58 |  W !!,"The following SCHEDULED VISITS are available:",!
 | 
|---|
| 59 |  F  S TIUI=$O(^TMP("TIUVN",$J,TIUI)) Q:+TIUI'>0  D  Q:+TIUER!+TIUOK!+$G(TIUX)!+$G(TIUOUT)
 | 
|---|
| 60 |  . S TIUII=TIUI D WRITE
 | 
|---|
| 61 |  . I '(TIUI#5) D BREAK I $S($G(X)="U":1,$G(X)["UNS":1,1:0) D  Q
 | 
|---|
| 62 |  . . D MAIN^TIUVISIT(.TIUY,DFN,$G(TIUSSN),$G(TIUVDT),$G(TIULDT),$G(TIUDFLT),$G(TIUMODE),$G(TIULOC),$G(TIUOCC),$G(LETNEW),"H",1,.TIUFUTUR)
 | 
|---|
| 63 |  . . S TIUOUT=1
 | 
|---|
| 64 |  . I $G(X)["?" S X="",TIUI=TIUI-5
 | 
|---|
| 65 |  . I $G(X)["F" S X=""
 | 
|---|
| 66 |  I +$G(TIUFUTUR),$S(+TIUOK:1,+TIUER:1,$D(TIUY)>9:1,+$G(TIUX):1,1:0) S TIUFUTUR=0
 | 
|---|
| 67 |  I +$G(TIUFUTUR) S TIUOUT=0 G AGN
 | 
|---|
| 68 |  G:$D(TIUOUT) CLEAN
 | 
|---|
| 69 |  G AGN:+TIUER
 | 
|---|
| 70 |  I +$G(TIUII)#5,+TIUMODE D BREAK I $S($G(X)="U":1,$G(X)["UNS":1,1:0) D  G:+$G(TIUFUTUR) AGN Q
 | 
|---|
| 71 |  . D MAIN^TIUVISIT(.TIUY,DFN,$G(TIUSSN),$G(TIUVDT),$G(TIULDT),$G(TIUDFLT),$G(TIUMODE),$G(TIULOC),$G(TIUOCC),$G(LETNEW),"H",1,.TIUFUTUR)
 | 
|---|
| 72 |  G:$D(TIUOUT) CLEAN
 | 
|---|
| 73 |  I $S(+TIUER:1,$G(X)["?":1,$G(X)["F":1,1:0) G AGN
 | 
|---|
| 74 |  I +TIUOK,'+$G(TIUNVIS) D
 | 
|---|
| 75 |  . S TIUX=$$GETVSIT(+TIUOK)
 | 
|---|
| 76 |  . W "  ",$$DATE^TIULS(+$P(TIUX,";",2),"AMTH DD CCYY@HR:MIN")
 | 
|---|
| 77 | VADPT D PATVADPT^TIULV(.TIUY,DFN,"",$G(TIUX),$G(TIUSDC))
 | 
|---|
| 78 | CLEAN K ^TMP("TIUVN",$J),^TMP("TIUVDT",$J),^TMP("TIUVNI",$J),^TMP("TIUNOT",$J)
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 | BREAK ; Handle prompting
 | 
|---|
| 81 |  I TIUII=1 S (TIUOK,X)=1
 | 
|---|
| 82 |  W !,"CHOOSE 1-",TIUII,", or",!
 | 
|---|
| 83 |  W:'(TIUII#20) "<M>ORE VISITS, " W "<U>NSCHEDULED VISITS, "
 | 
|---|
| 84 |  I +$P(TIUPRM0,U,14) W:'+LETNEW " or " W "<F>UTURE VISITS, "
 | 
|---|
| 85 |  W:+LETNEW "or <N>EW VISIT"
 | 
|---|
| 86 |  W:$D(^TMP("TIUVN",$J,TIUII+1)) !,"<RETURN> TO CONTINUE",!,"OR '^' TO QUIT"
 | 
|---|
| 87 |  W ": " W:$D(TIUPICK) $P(^TMP("TIUVN",$J,TIUPICK),U),"// " R X:DTIME
 | 
|---|
| 88 |  S X=$$UP^XLFSTR(X)
 | 
|---|
| 89 |  I $S('$T:1,X["^":1,1:0) S (TIUER,TIUOUT)=1 Q
 | 
|---|
| 90 |  S:X=""&$D(TIUPICK) X=TIUPICK
 | 
|---|
| 91 |  I X["?" D HELP^TIUVSITH(X) Q
 | 
|---|
| 92 |  I $S(X="M":1,X="MORE":1,1:0) D MORE Q
 | 
|---|
| 93 |  I $S(X="F":1,X["FUT":1,1:0) D FUTURE Q
 | 
|---|
| 94 |  I $S(X="U":1,X["UNS":1,1:0) Q
 | 
|---|
| 95 |  I +LETNEW'>0,(X=""),'$D(^TMP("TIUVN",$J,TIUII+1)) S (TIUER,TIUOUT)=1 Q
 | 
|---|
| 96 |  I +LETNEW,$S(X="N":1,X="NEW":1,X=""&'$D(^TMP("TIUVN",$J,TIUII+1)):1,1:0) D ADD(DFN,.TIUX,$S(X="N":0,X="NEW":0,1:1),.TIUSDC) I +$G(TIUX)'>0 S (TIUER,TIUOUT)=1 Q
 | 
|---|
| 97 |  I $S(X="":1,X="N":1,X="NEW":1,1:0) Q
 | 
|---|
| 98 |  I X'=+X!'$D(^TMP("TIUVN",$J,+X)) W !!,$C(7),"INVALID RESPONSE",! G BREAK
 | 
|---|
| 99 |  S TIUOK=X
 | 
|---|
| 100 |  Q
 | 
|---|
| 101 | INOUT() ; Ask INPATIENT/OUTPATIENT
 | 
|---|
| 102 |  N TIUPRMT S TIUPRMT="Is this note for INPATIENT or OUTPATIENT care? "
 | 
|---|
| 103 |  W:'$D(^DPT(DFN,.1)) !!,"This patient is not currently admitted to the facility...",!
 | 
|---|
| 104 |  Q $$READ^TIUU("SA^i:INPATIENT;o:OUTPATIENT",TIUPRMT,"OUTPATIENT")
 | 
|---|
| 105 | MORE ; Modify date range, list more visits
 | 
|---|
| 106 |  N TIUI,TIUCNT
 | 
|---|
| 107 |  S TIUI=+$O(^TMP("TIUVDT",$J,0)),TIUCNT=+$G(^TMP("TIUVDT",$J,+TIUI))
 | 
|---|
| 108 |  D GETAPPT^TIUVSIT1(DFN,$G(TIULOC),$G(TIUOCC),TIUI,TIUCNT,.TIULAST)
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 | FUTURE ; Get future appointments
 | 
|---|
| 111 |  D GETAPPT^TIUVSIT1(DFN,$G(TIULOC),$G(TIUOCC),$G(TIULDT),"",.TIULAST,$G(TIUVDT),1)
 | 
|---|
| 112 |  I $D(^TMP("TIUVERR",$J)) D
 | 
|---|
| 113 |  . W !!,$G(^TMP("TIUVERR",$J)),!
 | 
|---|
| 114 |  . I $D(^TMP("TIUVERR",$J,115)) W ^TMP("TIUVERR",$J,115),!
 | 
|---|
| 115 |  I $P(+$G(^TMP("TIUVNI",$J,1)),".")'>+$$NOW^XLFDT D
 | 
|---|
| 116 |  . W !!,"No Future Appointments found...",!
 | 
|---|
| 117 |  E  I $P(+$G(^TMP("TIUVNI",$J,1)),".")'>$$FMADD^XLFDT(DT,1) D
 | 
|---|
| 118 |  . W !!,"No Appointments found more than one day in future..."
 | 
|---|
| 119 |  S TIUI=0,TIUFUTUR=1
 | 
|---|
| 120 |  Q
 | 
|---|
| 121 | GETVSIT(TIUOK) ; Get associated visit
 | 
|---|
| 122 |  N APPT,TIUVSIT,VLOC,VSTOP,VDT,VTYPE
 | 
|---|
| 123 |  S APPT=$G(^TMP("TIUVNI",$J,+TIUOK))
 | 
|---|
| 124 |  S VDT=+APPT,VLOC=$P(APPT,U,2)
 | 
|---|
| 125 |  S VSTOP=$P($G(^SC(+VLOC,0)),U,7)
 | 
|---|
| 126 |  S VTYPE=$S($P(APPT,U,3)="I":"I",1:"A")
 | 
|---|
| 127 |  S TIUVSIT=VLOC_";"_VDT_";"_VTYPE
 | 
|---|
| 128 |  Q TIUVSIT
 | 
|---|
| 129 | ADD(DFN,VSTR,ASK,VSTOP) ; Add a visit for patient
 | 
|---|
| 130 |  N VTYPE,VDT,VLOC,TIUY,DA,DIE,DR,TIUAPDT,X,Y W !
 | 
|---|
| 131 |  S ASK=$G(ASK,1)
 | 
|---|
| 132 |  I +ASK D
 | 
|---|
| 133 |  . W !,$C(7),$C(7),"Patient & Visit are Required...",!
 | 
|---|
| 134 |  . S TIUY=$$READ^TIUU("YAO","Do you wish to add a NEW Visit? ","NO")
 | 
|---|
| 135 |  I +ASK,(+TIUY'>0) S TIUX=0,TIUER=1 Q
 | 
|---|
| 136 |  I $G(VLOC)']"" S VLOC=$$SELLOC
 | 
|---|
| 137 |  I +VLOC'>0 S TIUER=1 Q
 | 
|---|
| 138 |  S VSTOP=+$P(^SC(+VLOC,0),U,7)
 | 
|---|
| 139 |  S VDT=+$$READ^TIUU("D^:NOW:ERSX","Enter Visit Date/Time","NOW","Precise Date & Time are Required")
 | 
|---|
| 140 |  I +VDT'>0 S TIUER=1 Q
 | 
|---|
| 141 |  S TIUAPDT=+$O(^TMP("TIUNOT",$J,+VLOC,+$P(VDT,".")))
 | 
|---|
| 142 |  I +TIUAPDT>0,(+$P(TIUAPDT,".")=+$P(VDT,".")) D  Q
 | 
|---|
| 143 |  . W !!,$C(7),"  Item #",+$G(^TMP("TIUNOT",$J,+VLOC,+TIUAPDT))
 | 
|---|
| 144 |  . W " is scheduled for ",$$DATE^TIULS(TIUAPDT,"MM/DD/YY HR:MIN")
 | 
|---|
| 145 |  . W " at this location..."
 | 
|---|
| 146 |  . W !!,"Please select the existing appointment, rather than creating a "
 | 
|---|
| 147 |  . W "redundant one.",!
 | 
|---|
| 148 |  . S TIUER=1
 | 
|---|
| 149 |  S VTYPE=$$VSITYPE(VSTOP)
 | 
|---|
| 150 |  S VSTR=+VLOC_";"_+VDT_";"_VTYPE
 | 
|---|
| 151 |  I +VSTR'>0 S TIUER=1 Q
 | 
|---|
| 152 |  S TIUNVIS=+VDT,TIUER=0
 | 
|---|
| 153 |  Q
 | 
|---|
| 154 | WRITE ; Writes each list element
 | 
|---|
| 155 |  N TIUX S TIUX=^TMP("TIUVN",$J,TIUI)
 | 
|---|
| 156 |  W !,$J(TIUII,4),">  ",$P(TIUX,U),?27,$E($P(TIUX,U,3),1,21),?50,$P(TIUX,U,2)
 | 
|---|
| 157 |  Q
 | 
|---|
| 158 | SELLOC() ; Select Hospital Location
 | 
|---|
| 159 |  N DIC,X,Y,TIUAPDT S DIC=44,DIC(0)="AEMQ"
 | 
|---|
| 160 |  S DIC("A")="PATIENT LOCATION: "
 | 
|---|
| 161 |  S DIC("B")=$P($$PERSLOC^TIULE(DUZ),U,2)
 | 
|---|
| 162 |  S:DIC("B")']"" DIC("B")=$P($G(^SC(+$G(^DISV(DUZ,"^SC(")),0)),U)
 | 
|---|
| 163 |  S DIC("S")="I $$GOODLOC^TIUPREF(Y)"
 | 
|---|
| 164 |  D ^DIC K DIC("S")
 | 
|---|
| 165 |  Q Y
 | 
|---|
| 166 | DEFER(DA,TIUSDC) ; Mark record for deferred crediting of stop code
 | 
|---|
| 167 |  N DIE,DR,X,Y,TIUVSIT
 | 
|---|
| 168 |  I +$G(TIUSDC)'>0 Q
 | 
|---|
| 169 |  S DIE=8925
 | 
|---|
| 170 |  S:$$WORKOK^TIUPXAP1(+DA) DR=".11////1;"
 | 
|---|
| 171 |  S DR=$G(DR)_"1206////^S X="_+TIUSDC
 | 
|---|
| 172 |  D ^DIE
 | 
|---|
| 173 |  ;If not called via the broker try to link document to an existing visit
 | 
|---|
| 174 |  I '$$BROKER^XWBLIB,$$LNKVST^TIUPXAP3(+DA,.TIUVSIT)
 | 
|---|
| 175 |  Q
 | 
|---|
| 176 | CREDIT(TIUDA) ; Call EN3^SDACS to Credit Stop Code
 | 
|---|
| 177 |  N DA,DFN,VSIT,TIU,TIUD0,TIUDPRM
 | 
|---|
| 178 |  S TIUD0=$G(^TIU(8925,+TIUDA,0))
 | 
|---|
| 179 |  I TIUD0']"" Q
 | 
|---|
| 180 |  D DOCPRM^TIULC1(+TIUD0,.TIUDPRM)
 | 
|---|
| 181 |  ; If SUPPRESS DX/CPT ON NEW VISIT is set to YES, then Quit
 | 
|---|
| 182 |  I +$P($G(TIUDPRM(0)),U,14)>0 Q
 | 
|---|
| 183 |  S DFN=+$P(TIUD0,U,2),VSIT=$P(TIUD0,U,3)
 | 
|---|
| 184 |  D GETTIU^TIULD(.TIU,TIUDA)
 | 
|---|
| 185 |  D CREDIT^TIUPXAPI(DFN,.TIU,VSIT)
 | 
|---|
| 186 |  Q
 | 
|---|
| 187 | REMFLAG(DA) ; Remove credit flag from TIU Document Record
 | 
|---|
| 188 |  N DIE,DR,X,Y
 | 
|---|
| 189 |  S DIE=8925,DR=".11///@" D ^DIE
 | 
|---|
| 190 |  Q
 | 
|---|
| 191 | VSITYPE(VSTOP) ; Call reader to get VISIT TYPE
 | 
|---|
| 192 |  N DFLT,PROMPT,X,Y S VSTOP=$P($G(^DIC(40.7,+$G(VSTOP),0)),U)
 | 
|---|
| 193 |  S DFLT=$S(VSTOP["TELE":"TELEPHONE",1:"AMBULATORY")
 | 
|---|
| 194 |  S PROMPT="TYPE OF VISIT: "
 | 
|---|
| 195 |  S X="SMA^a:AMBULATORY (WALK-IN);t:TELEPHONE;i:IN HOSPITAL;e:EVENT (HISTORICAL)"
 | 
|---|
| 196 |  S Y=$$READ^TIUU(X,PROMPT,DFLT) W "   ",$P(Y,U,2),!
 | 
|---|
| 197 |  S Y=$$UP^XLFSTR($P(Y,U))
 | 
|---|
| 198 |  Q Y
 | 
|---|
| 199 | GETAPPT(DFN,CLINIC,OCCLIM,INDEX,COUNT,LAST,EARLY,FUTURE) ; Get list
 | 
|---|
| 200 |  D GETAPPT^TIUVSIT1($G(DFN),$G(CLINIC),$G(OCCLIM),$G(INDEX),$G(COUNT),$G(LAST),$G(EARLY),$G(FUTURE))
 | 
|---|
| 201 |  Q
 | 
|---|