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

AMEROUT.m

Go to the documentation of this file.
  1. AMEROUT ; IHS/ANMC/GIS - REPORT GENERATOR ;
  1. ;;3.0;ER VISIT SYSTEM;;FEB 23, 2009
  1. ;
  1. D HOME^%ZIS W @IOF
  1. K ^TMP("AMER",$J),AMERQUIT
  1. RUN D TEMP I $D(AMERQUIT) G EXIT
  1. D FIN I $D(AMERQUIT) G EXIT
  1. D TIME I $D(AMERQUIT) G EXIT
  1. ;IHS/OIT/SCR 12/29/08 - synch ERS data with PCC data for the time frame selected
  1. D SYNCHERS^AMERERS($P(AMERD1,".",1),$P(AMERD2,".",1))
  1. I $G(AMERRTYP)="H" D ^AMEROUT4 G EXIT
  1. D PSET,SORT,^AMEROUT1 I $D(AMERQUIT) G EXIT
  1. EXIT D EXIT^AMER
  1. K AMERQUIT,AMERRTYP,AMERD1,AMERD2,AMERDISP,AMERQUIT,X,Y,AMERBRK,AMERCON,AMERINC,AMERTOT,AMERSTRT,AMERX,AMERZ,%DT,%X,AMERSTAT,%Y
  1. K AMERVTOT,B,DIJ,DIRUT,DISYS,DP,DIC,DIE,P,AMERPTOT,AMERBY,AMERFR,AMERTO,AMERATNM,AMERSCR,AMERGBL,AMERCAT,FR,TO,BY,L,FLDS,AMERA1,AMERA2,AMERSFL
  1. Q
  1. ;
  1. OUT ;ENTRY POINT FROM AMERBSET
  1. ; QUIT
  1. I '$D(POP) S POP=0
  1. I ($D(DTOUT))!($D(DUOUT))!(POP)!($D(DIROUT)) K DIRUT,DTOUT,DUOUT,POP,DIROUT S AMERQUIT="" W !!,"Session terminated...." H 2 W @IOF
  1. Q
  1. ;
  1. TEMP ; SELECT TEMPLATE TYPE
  1. W !!,?20,"***** REPORT OPTIONS *****"
  1. S DIR(0)="SO^1:STANDARD ER LOG REPORT;2:BRIEF ER LOG REPORT;3:STATISTICAL REPORTS;4:HOURLY WORKLOAD REPORT",DIR("A")="Report type",DIR("?")="",DIR("B")=1 D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) Q
  1. S AMERRTYP=$S(Y<3:"V",Y=3:"S",Y=4:"H",1:"")
  1. I Y=1 S AMERHDR="STANDARD ER LOG REPORT"
  1. I Y=2 S AMERHDR="BRIEF ER LOG REPORT"
  1. I Y=3 S AMERHDR="ER STATISTICAL REPORT"
  1. S FLDS=$S(Y=1:"[AMER DETAIL",2:"[AMER BRIEF",3:"[AMER AGE ",4:".01",1:"")
  1. I FLDS="" S AMERQUIT="" Q
  1. Q
  1. ;
  1. FIN ; FINISHING TOUCHES
  1. I AMERRTYP="H" Q
  1. K AMERSTAT I AMERRTYP="S" S AMERSTAT="",AMERRTYP="V",AMERDISP=3 Q
  1. I AMERRTYP="A" D ^AMERBSET
  1. I AMERRTYP'="V" S AMERDISP=3 Q
  1. W !!!!,?20,"***** DISPLAY OPTIONS *****"
  1. S DIR(0)="SO^1:VISITS IN INVERSE ORDER OF DATES;2:PATIENTS IN ALPHABETICAL ORDER;3:VISITS IN CHRONOLOGICAL ORDER",DIR("A")="Your choice",DIR("B")="3",DIR("?")="" D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) Q
  1. S AMERDISP=Y
  1. Q
  1. ;
  1. TIME ; TIME FRAME
  1. W !!!!,?20,"***** TIME FRAME *****"
  1. T1 S DIR(0)="D"_$S(AMERRTYP="H":"",1:"O"),DIR("A")="Enter starting date",DIR("?")="" D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) Q
  1. I X="" W " (start at first ER visit)" S AMERD1=2950101.0001 G T2
  1. S AMERD1=Y X ^DD("DD") W " (",Y,")"
  1. T2 S DIR(0)="D"_$S(AMERRTYP="H":"",1:"O"),DIR("A")="Enter ending date",DIR("?")="" D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) Q
  1. I X="" W " (end at last ER visit)" S AMERD2=DT+.2359 Q
  1. I Y=Y\1 S Y=Y+.2359
  1. I Y<AMERD1 W " ??",*7," Ending date must follow starting date" G T2
  1. S AMERD2=Y X ^DD("DD") W " (",Y,")"
  1. I AMERRTYP="H" N X1,X2,X S X2=AMERD1,X1=AMERD2 D ^%DTC I X>30 W *7,!," The maximum time span for this report is 30 days. Try again...",! K AMERD1,AMERD2 G T1
  1. S:$G(AMERHDR)'="" AMERDHD=$$AMERDHD^AMERREPT(AMERHDR,AMERD1,AMERD2)
  1. Q
  1. ;
  1. SORT ; SORT OPTIONS
  1. K ^TMP("AMER",$J)
  1. W !!!!,?20,"***** SORT OPTIONS *****",!!
  1. S1 ; ENTRY POINT FROM AMEROUT1
  1. S X="",AMERVTOT=0,AMERPTOT=0
  1. F L=0:0 S X=$O(^AMER(2.2,"B",X)) Q:X="" F Y=0:0 S Y=$O(^AMER(2.2,"B",X,Y)) Q:'Y S Z=^AMER(2.2,Y,0) I $P(Z,U,2)=AMERRTYP S ^TMP("AMER",$J,5,$P(Z,U,5),X)=Y
  1. S I=0 F Z="P","V" S X="" F L=0:0 S X=$O(^TMP("AMER",$J,5,Z,X)) Q:X="" S Y=^(X),I=I+1,^TMP("AMER",$J,6,Z,I)=X,^TMP("AMER",$J,7,I)=Y S:Z="P" AMERPTOT=AMERPTOT+1 S:Z="V" AMERVTOT=AMERVTOT+1
  1. EN1 S AMERCON="P",AMERSTRT=0,(AMERBRK,AMERINC)=(+$G(AMERPTOT)+1)\2 W "Patient attributes =>" D OPT ; ENTRY POINT TO LIST SORT OPTIONS
  1. S AMERCON="V",AMERSTRT=AMERPTOT,AMERINC=((AMERVTOT+1)\2),AMERBRK=AMERINC+AMERPTOT W !!,"Visit attributes =>" D OPT
  1. Q
  1. ;
  1. OPT ; LIST SORT OPTIONS
  1. S I=AMERSTRT
  1. INCI S I=I+1 I I>AMERBRK Q
  1. W !?3,I,")",?8,^TMP("AMER",$J,6,AMERCON,I)
  1. I $D(^TMP("AMER",$J,6,AMERCON,I+AMERINC)) W ?43,(I+AMERINC),")",?48,^(I+AMERINC)
  1. G INCI
  1. ;
  1. EN2 ; RECENT ER VISITS
  1. W !! S DIR(0)="DO^::ET",DIR("A")="Starting date (time optional)" D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) K AMERQUIT Q
  1. I X="" S X=2000101 W " (Start with first visit)"
  1. S FR=Y
  1. S DIR(0)="DO^::ET",DIR("A")="Ending date (time optional)",DIR("B")="NOW" D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) K AMERQUIT Q
  1. S TO=Y
  1. I FR>TO W " ??",*7,!!! G EN2
  1. S DIR(0)="SO^B:BRIEF REPORT;S:STANDARD REPORT",DIR("A")="Report type",DIR("B")="BRIEF" D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) K AMERQUIT Q
  1. S FLDS=$S(Y="B":"[AMER BRIEF",1:"[AMER DETAIL")
  1. S DIC="^AMERVSIT(",BY="@.01"
  1. I $G(AMERHDR)'="" S DHD=AMERHDR
  1. E S DHD="ER VISIT REPORT"
  1. D EN1^DIP,EXIT1^AMER
  1. I $G(IOST)["C-" S DIR(0)="E" D ^DIR
  1. Q
  1. ;
  1. EN3 ; Recent ER Visits with Insurance Information for Business Office people
  1. W !! S DIR(0)="DO^::ET",DIR("A")="Starting date (time optional)" D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) K AMERQUIT Q
  1. I X="" S X=2000101 W " (Start with first visit)"
  1. S FR=Y
  1. S DIR(0)="DO^::ET",DIR("A")="Ending date (time optional)",DIR("B")="NOW" D ^DIR K DIR
  1. D OUT I $D(AMERQUIT) K AMERQUIT Q
  1. S TO=Y
  1. I FR>TO W " ??",*7,!!! G EN3
  1. D OUT I $D(AMERQUIT) K AMERQUIT Q
  1. S FLDS="[AMER WITH INSINFO"
  1. S DIC="^AMERVSIT(",BY="@.01",DHD="ER VISIT REPORT WITH INSURANCE INFORMATION"
  1. D EN1^DIP,EXIT1^AMER
  1. I $G(IOST)["C-" S DIR(0)="E" D ^DIR
  1. Q
  1. ;
  1. PSET ; PRLIMINARY SET
  1. I AMERRTYP="A" Q
  1. S (BY,FR,TO)=""
  1. Q
  1. ;
  1. I AMERDISP>1 S BY="@.01",FR=AMERD1,TO=AMERD2 S:$D(AMERSTAT) BY="'.01" Q
  1. S BY="@.16",FR=9999999.9999-AMERD2,TO=9999999.9999-AMERD1
  1. Q