Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: VENPCCMF

VENPCCMF.m

Go to the documentation of this file.
  1. VENPCCMF ; IHS/OIT/GIS - QUEUEING FILE VIEWER ;
  1. ;;2.6;PCC+;;NOV 12, 2007
  1. ;
  1. ;
  1. ;
  1. QUEUE W:$D(IOF) @IOF G RUN ; EP-STARTUP
  1. ;
  1. RANGE(LINE,END,MAX) ; EP-RETURN A RANGE OF LINES
  1. I LINE=1,END'>MAX Q 1_U_END
  1. I LINE=1 Q 1_U_MAX
  1. I END<(LINE+MAX) Q (END-MAX+1)_U_END
  1. Q (LINE+1)_U_(LINE+MAX)
  1. ;
  1. LIST(HR,CIEN) ; EP-GIVEN HRS & SUPERBILL DEPT IEN, RETURN IN ^TMP ARRAY ALL LINES
  1. I '$G(HR) Q ""
  1. I '$D(^VEN(7.95,CIEN,0)) Q ""
  1. N TMP,TOT,TIME,DFN,CLINIC,STATUS,QIEN,TTOT,%,%I,%H,X,PATIENT,ELAP
  1. S TMP="^TMP(""VEN LINES"",$J)" K @TMP
  1. S TIME=+$$AGO(HR)
  1. S (TOT,TTOT)=0
  1. ARR F S TIME=$O(^VEN(7.2,"B",TIME)) Q:'TIME S QIEN=0 F S QIEN=$O(^VEN(7.2,"B",TIME,QIEN)) Q:'QIEN D
  1. . S X=$G(^VEN(7.2,QIEN,0))
  1. . S STATUS=$P(X,U,5) I STATUS'=1 Q
  1. . S CLINIC=$P(X,U,4) I CLINIC'=CIEN Q
  1. . S DFN=+$G(^VEN(7.2,QIEN,1)) I '$D(^DPT(DFN,0)) Q
  1. . D NOW^%DTC
  1. . S %=$$TIME(TIME,%) S ELAP=$P(%,U),TTOT=TTOT+$P(%,U,2)
  1. . S PATIENT=$P($G(^DPT(+$G(DFN),0)),U)
  1. . S PATIENT=PATIENT_" ("_$$CHART^VENPCC1A(CIEN,DFN)_")"
  1. . S TOT=TOT+1
  1. . S @TMP@(TOT)=PATIENT_" "_ELAP_U_QIEN
  1. . Q
  1. S ATIME="0 min"
  1. I $G(TTOT),$G(TOT) S ATIME=(TTOT\TOT)_" min"
  1. Q
  1. ;
  1. RUN ;
  1. N TMP,DIC,CIEN,HR,CNT,CNAME,LINE,END,MAX,FIN,START,X,Y,%,CNT,ATIME,I,DIE,DA,DR,D,D0,DI,DQ
  1. S TMP="^TMP(""VEN LINES"",$J)" K @TMP
  1. S DIC("A")="Patient list: ",DIC(0)="AEQ",DIC="^VEN(7.95,"
  1. D ^DIC I Y=-1 Q
  1. S CIEN=+Y,HR=6,CNT=0,CNAME=$P(Y,U,2),ATIME=0
  1. START D LIST(HR,CIEN)
  1. S LINE=1,MAX=20
  1. LOOP S END=$O(@TMP@(99999),-1)
  1. S %=$$RANGE(LINE,END,MAX)
  1. S START=+%,FIN=$P(%,U,2)
  1. I 'FIN W !!,"There are currently no patients in the queue",!! Q
  1. I $D(IOF) W @IOF
  1. W !!,CNAME," patients. Average waiting time ",ATIME," =>",!
  1. F I=START:1:FIN W !,?3,I,")",?7,$P(@TMP@(I),U)
  1. W !!
  1. ASK W "Select a patient (",START,"-",FIN,") "
  1. I END>FIN W "or press <ENTER> to see more choices"
  1. W ": "
  1. R X:60
  1. E S CNT=CNT+1 G:CNT>60 HALT W:$D(IOF) @IOF G START ; REFRESH 60 TIMES THEN QUIT
  1. S CNT=0
  1. I X="",FIN<END S LINE=FIN G LOOP
  1. I X="" G START
  1. I X,X=X\1,X'<1,X'>FIN D STAT($P(@TMP@(X),U,2)) G START
  1. I X=U Q
  1. W " ??" G ASK
  1. ;
  1. STAT(DA) ;
  1. S DR=".05////0;.02////"_$$NOW^VENPCCU
  1. S DIE="^VEN(7.2,"
  1. L +^VEN(7.2,DA):0 I $T D ^DIE L -^VEN(7.2,DA)
  1. Q
  1. ;
  1. HALT ;
  1. I CNT>60 W !,"No activity in the past hour. Terminating session."
  1. Q
  1. ;
  1. TIME(T1,T2) ; TIME DIFF
  1. N X,Y,D,H,M,DUR
  1. S DUR=$$FMDIFF^XLFDT(T2,T1,2)\60
  1. S X=$$FMDIFF^XLFDT(T2,T1,3)
  1. S D=+X
  1. S Y=$P(X," ",2)
  1. S H=+Y
  1. S M=$P(Y,":",2)
  1. I DUR<60 Q DUR_"m"_U_DUR
  1. I 'D,H Q (H_"h "_M_"m"_U_DUR)
  1. Q D_"d "_H_"h "_M_"m"_U_DUR
  1. ;
  1. AGO(HRS) ;
  1. N X,Y,Z
  1. S X=$$HADD^XLFDT($H,0,-HRS,0,0)
  1. S Y=$$HTFM^XLFDT(X)
  1. S Z=$E($P(Y,".",2),1,4)
  1. Q Y\1_"."_Z
  1. ;
  1. RPT ; EP-PRINT A REPORT
  1. N DIC,X,Y,%,BY,FR,TO,DHD,L,IOP
  1. S %=$O(^VEN(7.95,"B","MEDICAL RECORDS","")) S DIS(0)="I $P($G(^VEN(7.2,D0,0)),U,4)'="_+%
  1. S DIC="^VEN(7.2,",L=0,BY="+QUEUE DESTINATION,TIME IN",FLDS="[VEN CHECKIN LIST 2.5]",DHD="PCC+ CHECKIN LIST"
  1. S (FR,TO)=",?"
  1. D EN1^DIP
  1. Q
  1. ;
  1. DATES(PATIENT) ; EP-GET DATES FOR LAST DEMOG UPDATE AND REVIEW
  1. N TXT,X,Y,%,STOP,SP,RDT,UDT,RD,UD
  1. S (TXT,SP)=" ",(RDT,UDT)="NONE",(RD,UD)=""
  1. S %=99999999999
  1. F S %=$O(^VEN(7.2,"AP",PATIENT,%),-1) Q:'% S (Y,RD)=$P($G(^VEN(7.2,%,1)),U,4) I Y X ^DD("DD") I $L(Y) S RDT=Y Q
  1. S (Y,UD)=$P($G(^AUPNPAT(PATIENT,0)),U,3) I Y X ^DD("DD") I $L(Y) S UDT=Y
  1. I UD>RD S RDT=UDT
  1. S TXT=TXT_"Last demographics review: "_RDT_SP
  1. S TXT=TXT_"Last demographics update: "_UDT
  1. Q TXT
  1. ;
  1. SPEC ; EP-SPECIAL LIST
  1. N DIC,X,Y,%,BY,FR,TO,DHD,L,IOP
  1. S %=$O(^VEN(7.95,"B","MEDICAL RECORDS","")) S DIS(0)="I $P($G(^VEN(7.2,D0,0)),U,4)'="_+%
  1. S DIC="^VEN(7.2,",L=0,BY="[TEST CLINIC GRP],+QUEUE DESTINATION,TIME IN",FLDS="[VEN CHECKIN LIST]",DHD="PCC+ CHECKIN LIST"
  1. S (FR,TO)=",,?"
  1. D EN1^DIP
  1. Q
  1. ;