| 1 | ORQQVS ; slc/CLA,STAFF - Functions which return patient visits ;3/16/05  10:27
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,195,215,271**;Dec 17, 1997;Build 2
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; DBIA 2812   NOTES^TIUSRVLV   ^TMP("TIULIST",$J)
 | 
|---|
| 5 |  ; DBIA 2944   TGET^TIUSRVR1    ^TMP("TIUVIEW",$J)
 | 
|---|
| 6 |  ; DBIA 1905   SELECTED^VSIT    ^TMP("VSIT",$J)
 | 
|---|
| 7 |  ; 
 | 
|---|
| 8 | LIST(ORY,PT,ORSDT,OREDT,LOC) ; return visits for a patient between start & end dates for a location, if no location return all visits
 | 
|---|
| 9 |  N VIEN,NUM,CNT,INVDT,ORSRV,CNTLIMIT,ORX
 | 
|---|
| 10 |  S CNTLIMIT=100  ;limit visits to 100 most recent Visit entries
 | 
|---|
| 11 |  S VIEN="A",NUM=0,CNT=1
 | 
|---|
| 12 |  S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
 | 
|---|
| 13 |  I ORSDT="" D
 | 
|---|
| 14 |  .I '$L(LOC) S ORSDT=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORQQEAPT ENC APPT START",1,"E"))
 | 
|---|
| 15 |  .I ORSDT="" S ORSDT="T-730" ;default start date is two years ago
 | 
|---|
| 16 |  I OREDT="" D
 | 
|---|
| 17 |  .I '$L(LOC) S OREDT=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORQQEAPT ENC APPT STOP",1,"E"))
 | 
|---|
| 18 |  .I OREDT="" S OREDT="T" ;default end date is today
 | 
|---|
| 19 |  ;CONVERT ORSDT AND OREDT INTO FILEMAN DATE/TIME
 | 
|---|
| 20 |  D DT^DILF("T",ORSDT,.ORSDT,"","")
 | 
|---|
| 21 |  D DT^DILF("T",OREDT,.OREDT,"","")
 | 
|---|
| 22 |  I (ORSDT=-1)!(OREDT=-1) S ORY(1)="^Error in date range." Q 
 | 
|---|
| 23 |  K ^TMP("VSIT",$J)  ;DBIA 1905
 | 
|---|
| 24 |  D SELECTED^VSIT(PT,ORSDT,OREDT,LOC,"")  ;DBIA 1905
 | 
|---|
| 25 |  F  S VIEN=$O(^TMP("VSIT",$J,VIEN),-1) Q:VIEN=""!(CNT>CNTLIMIT)  D
 | 
|---|
| 26 |  .F  S NUM=$O(^TMP("VSIT",$J,VIEN,NUM)) Q:NUM=""  D
 | 
|---|
| 27 |  ..S ORX=^TMP("VSIT",$J,VIEN,NUM),INVDT=9999999-$P(ORX,U)
 | 
|---|
| 28 |  ..I $$ACTLOC^ORWU(+$P(ORX,U,2))=1 D
 | 
|---|
| 29 |  ...S ORY(CNT)=VIEN_U_ORX_U_INVDT,CNT=CNT+1
 | 
|---|
| 30 |  K ^TMP("VSIT",$J)
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 | VSITAPPT(ORVY,PT,SDT,EDT,DUMMY) ; return past visits and future appointments for a patient between start and end dates
 | 
|---|
| 33 |  N NDT,CNT,I,TS,ORVSITY K ORVY D NOW^%DTC S NDT=+%,CNT=1 K %
 | 
|---|
| 34 |  D PTAPPTS^ORQPTQ2(.ORYA,PT,NDT,EDT,"") ;get future appointments
 | 
|---|
| 35 |  S I=0 F  S I=$O(ORYA(I)) Q:I<1  I ORYA(I)'["No appts",+ORYA(I) D
 | 
|---|
| 36 |  .S ORVY(CNT)=$P(ORYA(I),U)_";s"_U_$P(ORYA(I),U,2)_U_"sched:"_U_$P(ORYA(I),U)
 | 
|---|
| 37 |  .S ORVY(CNT)=ORVY(CNT)_U_$P(ORYA(I),U,5),CNT=CNT+1
 | 
|---|
| 38 |  D LIST(.YV,PT,SDT,NDT,"") ;get past visits
 | 
|---|
| 39 |  S I=0 F  S I=$O(YV(I)) Q:I<1  D
 | 
|---|
| 40 |  .S ORVY(CNT)=$P(YV(I),U)_";v"_U_$P($P(YV(I),U,3),";",2)
 | 
|---|
| 41 |  .I $P(YV(I),U,4)="H" D
 | 
|---|
| 42 |  ..S ORVY(CNT)=$P(YV(I),U)_";a"_U_"Inpatient Stay"_U_"admitted:"
 | 
|---|
| 43 |  .I $P(YV(I),U,4)'="H" S ORVY(CNT)=ORVY(CNT)_U_"visited:"
 | 
|---|
| 44 |  .S ORVY(CNT)=ORVY(CNT)_U_$P(YV(I),U,2)_U_$P(YV(I),U,8),CNT=CNT+1
 | 
|---|
| 45 |  S:+$G(ORVY(1))<1 ORVY(1)="^No appts or visits found."
 | 
|---|
| 46 |  S TSTDT=DT_".2359"
 | 
|---|
| 47 |  D DT^DILF("T",EDT,.EDT,"","")
 | 
|---|
| 48 |  I (EDT>TSTDT) D
 | 
|---|
| 49 |  . I '$L($P($G(ORYA(1)),U)),$L($P($G(ORYA(1)),U,2)),'$L($O(ORYA(1))) D
 | 
|---|
| 50 |  . . K ORVY S ORVY(1)=ORYA(1)
 | 
|---|
| 51 |  K ORYA,YV
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | DETNOTE(ORVY,ORPT,ORVIEN) ;return progress notes for a patient's visit
 | 
|---|
| 54 |  N ORTY,ORY,TDT,ORVI
 | 
|---|
| 55 |  S TDT=0
 | 
|---|
| 56 |  K ^TMP("TIULIST",$J)  ;DBIA 2812
 | 
|---|
| 57 |  D NOTES^TIUSRVLV(.ORY,ORVIEN)  ;DBIA 2812
 | 
|---|
| 58 |  I '+$O(^TMP("TIULIST",$J,0)) D  Q
 | 
|---|
| 59 |  . S ORVY(1)="No Progress Notes for this visit."
 | 
|---|
| 60 |  S ORVI=1
 | 
|---|
| 61 |  F  S TDT=$O(^TMP("TIULIST",$J,TDT)) Q:+TDT'>0  D
 | 
|---|
| 62 |  . N SEQ,TIEN S SEQ=0
 | 
|---|
| 63 |  . F  S SEQ=$O(^TMP("TIULIST",$J,TDT,SEQ)) Q:+SEQ'>0  D
 | 
|---|
| 64 |  . . N TSEQ K ^TMP("TIUVIEW",$J)  ;DBIA 2944
 | 
|---|
| 65 |  . . S TIEN=$P(^TMP("TIULIST",$J,TDT,SEQ),U)
 | 
|---|
| 66 |  . . D TGET^TIUSRVR1(.ORTY,TIEN)  ;DBIA 2944
 | 
|---|
| 67 |  . . S TSEQ=0
 | 
|---|
| 68 |  . . F  S TSEQ=$O(@ORTY@(TSEQ)) Q:TSEQ=""  D
 | 
|---|
| 69 |  . . . S ORVY(ORVI)=@ORTY@(TSEQ),ORVI=ORVI+1
 | 
|---|
| 70 |  . . S ORVY(ORVI)=" ",ORVI=ORVI+1
 | 
|---|
| 71 |  . . S ORVY(ORVI)=" ",ORVI=ORVI+1
 | 
|---|
| 72 |  K ^TMP("TIULIST",$J)
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 | DETSUM(ORVY,ORPT,ORVIEN) ;return discharge summary for a patient's visit
 | 
|---|
| 75 |  N CR,ORTY,ORY,TDT
 | 
|---|
| 76 |  S TDT=0
 | 
|---|
| 77 |  K ^TMP("TIULIST",$J)
 | 
|---|
| 78 |  D SUMMARY^TIUSRVLV(.ORY,ORVIEN)
 | 
|---|
| 79 |  I '+$O(^TMP("TIULIST",$J,0)) D  Q
 | 
|---|
| 80 |  . S ORVY(1)="No Discharge Summary found for this stay."
 | 
|---|
| 81 |  F  S TDT=$O(^TMP("TIULIST",$J,TDT)) Q:+TDT'>0  D
 | 
|---|
| 82 |  . N SEQ,TIEN S SEQ=0
 | 
|---|
| 83 |  . F  S SEQ=$O(^TMP("TIULIST",$J,TDT,SEQ)) Q:+SEQ'>0  D
 | 
|---|
| 84 |  . . N TSEQ,ORVI K ^TMP("TIUVIEW",$J)
 | 
|---|
| 85 |  . . S TIEN=$P(^TMP("TIULIST",$J,TDT,SEQ),U)
 | 
|---|
| 86 |  . . D TGET^TIUSRVR1(.ORTY,TIEN)
 | 
|---|
| 87 |  . . S TSEQ=0,ORVI=1
 | 
|---|
| 88 |  . . F  S TSEQ=$O(@ORTY@(TSEQ)) Q:TSEQ=""  D
 | 
|---|
| 89 |  . . . S ORVY(ORVI)=@ORTY@(TSEQ),ORVI=ORVI+1
 | 
|---|
| 90 |  . . S ORVY(ORVI)=" ",ORVI=ORVI+1
 | 
|---|
| 91 |  . . S ORVY(ORVI)=" ",ORVI=ORVI+1
 | 
|---|
| 92 |  K ^TMP("TIULIST",$J)
 | 
|---|
| 93 |  Q
 | 
|---|