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

AMHLEGP.m

Go to the documentation of this file.
  1. AMHLEGP ; IHS/CMI/LAB - BH GROUP FORM DATA ENTRY ;
  1. ;;4.0;IHS BEHAVIORAL HEALTH;;MAY 14, 2010
  1. ;
  1. D ^AMHLEIN
  1. D INFORM
  1. GETDATE ; GET DATE OF ENCOUNTER
  1. S AMHGROUP=1 ; so I know I am in group entry
  1. S AMHDATE="",DIR(0)="D^:"_DT_":EPT",DIR("A")="Enter ENCOUNTER DATE" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. G:$D(DIRUT) XIT
  1. S %DT="ET" D ^%DT G:Y<0 GETDATE
  1. I Y>DT W " <Future dates not allowed>",$C(7),$C(7) K X G GETDATE
  1. S AMHDATE=Y
  1. GETPROG ;
  1. S AMHPROG=""
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="SB^M:Mental Health;S:Social Services;C:Chemical Dependency;O:Other",DIR("A")="Enter PROGRAM" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. G:$D(DIRUT) GETDATE
  1. S AMHPROG=Y,AMHPROG(0)=Y(0),AMHPTYPE=Y
  1. GETCLN ;
  1. S AMHCLN="",DIC="^DIC(40.7,",DIC(0)="AEMQ",DIC("A")="Enter CLINIC: " D ^DIC K DIC
  1. I X="" W !!,"Clinic is required. Type '^' to exit or enter a clinic code." G GETCLN
  1. G:Y<0 GETPROG
  1. S AMHCLN=+Y
  1. GETTOD ;
  1. S AMHDATE=$P(AMHDATE,".")
  1. S AMHTOD="12:00"
  1. W !,"ARRIVAL Time: ",$S(AMHTOD]"":AMHTOD_"// ",1:"") R X:$S($D(DTIME):DTIME,1:300) S:'$T X="^" S:X="" X=AMHTOD
  1. I X="^" G GETCLN
  1. I X="" S AMHTOD="12:00" G EDTIME
  1. I X["?" W !,"Enter time of arrival, or 'D' for default." G GETTOD
  1. I X="D" S X="12:00" W " ",X
  1. S AMHTOD=X
  1. EDTIME S Y=AMHDATE D DD^%DT S X=Y_"@"_AMHTOD
  1. S %DT="ET" D ^%DT I Y<0 W !!,"Invalid time entry, enter time of visit or 1200 for the default." G GETTOD
  1. I X="-1" W ! G GETTOD
  1. S AMHDATE=Y
  1. GETLOC ;
  1. S AMHLOC="",DIC="^AUTTLOC(",DIC(0)="AEMQ",DIC("B")=$S($$GETLOC^AMHLEIN(DUZ(2),AMHPTYPE)]"":$P(^DIC(4,$$GETLOC^AMHLEIN(DUZ(2),AMHPTYPE),0),U),1:"") D ^DIC K DIC
  1. I Y=-1,X["^" G GETTOD
  1. I Y=-1,X="" W !!,$C(7),$C(7),"REQUIRED, enter a '^' to exit.",! G GETLOC
  1. ;CMI/TUCSON/LAB - moved the S AMHLOC=+Y line to here from GETPROV-2 10/06/97 - this caused an error in group entry
  1. S AMHLOC=+Y
  1. I $E($P(^AUTTLOC(+Y,0),U,10),5,6)>50 S AMHOL="",DIR(0)="9002011,.26",DIR("A")="Enter Outside Location (e.g. Central High School)" K DA D ^DIR K DIR G:$D(DUOUT) GETLOC S AMHOL=Y
  1. ;
  1. GETPROV ;get providers
  1. K AMHPROV S AMHC=0
  1. GETPROV1 ;
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="9002011.02,.01O",DIR("A")="Enter "_$S(AMHC=0:"PRIMARY",1:"SECONDARY")_" PROVIDER" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DUOUT) G GETLOC
  1. I $D(DIRUT),AMHC=0 G GETLOC
  1. I Y="",AMHC=0 G GETLOC
  1. I Y="",AMHC>0 G GETCOMM
  1. S AMHC=AMHC+1,AMHPROV(AMHC)=+Y,$P(AMHPROV(AMHC),U,2)=$S(AMHC=1:"P",1:"S")
  1. G GETPROV1
  1. GETCOMM ;
  1. S AMHCOMM="",DIC(0)="AEMQ",DIC("A")="Enter COMMUNITY: ",DIC="^AUTTCOM(",DIC("B")=$$GETCOMM^AMHLEIN(DUZ(2),"M") D ^DIC K DIC,DA
  1. I Y=-1 G GETPROV
  1. S AMHCOMM=+Y
  1. GETACT ;
  1. S AMHACT="",DIR(0)="9002011,.06",DIR("A")="Enter ACTIVITY CODE" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) G GETCOMM
  1. S AMHACT=Y
  1. GETCONT ;
  1. S AMHCONT="",DIR(0)="9002011,.07",DIR("A")="Enter TYPE OF CONTACT" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) G GETACT
  1. S AMHCONT=Y,AMHCONT(0)=Y(0)
  1. GETPOVS ;
  1. K AMHPOV S AMHC=0
  1. GETPOVS1 ;
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="9002011.01,.01O",DIR("A")=$S(AMHC=0:"Enter PROBLEM (POV)",1:"Enter another PROBLEM (POV) or press enter if none") D ^DIR K DIR
  1. K DIR
  1. I $D(DUOUT) G GETCONT
  1. I $D(DIRUT),AMHC=0 G GETCONT
  1. I Y="",AMHC=0 G GETCONT
  1. I Y="",AMHC>0 G GETCPTS
  1. I $D(DIRUT),AMHC>0 G GETCPTS
  1. S AMHPOVP=+Y
  1. GETNARR ;
  1. S AMHNARR=""
  1. S DIR(0)="FO^3:79",DIR("A")="Provider Narrative" K DA D ^DIR K DIR
  1. I $D(DUOUT) G GETCPTS
  1. S X=Y I Y="" S X=$P(^AMHPROB(AMHPOVP,0),U,2) W " ",X
  1. S DIC(0)="L",DLAYGO=9999999.27,APCDOVRR=1,DIC="^AUTNPOV(" D ^DIC K DIC,DLAYGO,DIADD,DD,DO I Y=-1 W !,$C(7),$C(7),"Invalid Narrative" G GETNARR
  1. S AMHNARR=+Y
  1. S AMHC=AMHC+1,AMHPOV(AMHC)=AMHPOVP_U_AMHNARR
  1. G GETPOVS1
  1. GETCPTS ;
  1. K AMHCPT S AMHC=0
  1. GETCPTS1 ;
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="9002011.04,.01O",DIR("A")="Enter CPT CODE (or enter if none)" D ^DIR K DIR
  1. K DIR
  1. I Y="" G GETEDUC
  1. I $D(DUOUT) G GETPOVS
  1. I $D(DIRUT),AMHC=0 G GETPOVS
  1. I Y="" G GETTIME
  1. I $D(DIRUT),AMHC>0 G GETEDUC
  1. S AMHCPTP=+Y
  1. S AMHC=AMHC+1,AMHCPT(AMHC)=AMHCPTP
  1. G GETCPTS1
  1. GETEDUC ;
  1. K AMHEDUC S AMHC=0
  1. GETEDUC1 ;
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="9002011.05,.01O",DIR("A")="Enter EDUCATION TOPIC (or enter if none)" D ^DIR K DIR
  1. K DIR
  1. I Y="" G GETTIME
  1. I $D(DIRUT),AMHC=0 G GETCPTS
  1. I Y="" G GETTIME
  1. I $D(DIRUT),AMHC>0 G GETTIME
  1. S AMHCPTP=+Y
  1. S AMHC=AMHC+1,AMHEDUC(AMHC)=AMHCPTP
  1. ;get provider
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="9002011.05,.04",DIR("A")=" Enter Education PROVIDER" D ^DIR K DIR
  1. I +Y S $P(AMHEDUC(AMHC),U,2)="`"_+Y
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="9002011.05,.06",DIR("A")=" Enter Length of Education (minutes)" D ^DIR K DIR
  1. I $D(DIRUT) S Y=""
  1. S $P(AMHEDUC(AMHC),U,3)=Y
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="9002011.05,.07",DIR("A")=" Enter CPT code for Education" D ^DIR K DIR
  1. I +Y S $P(AMHEDUC(AMHC),U,4)=Y
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="9002011.05,1101",DIR("A")=" Enter COMMENT about the education" D ^DIR K DIR
  1. I $D(DIRUT) S Y=""
  1. S $P(AMHEDUC(AMHC),U,5)=Y
  1. G GETEDUC1
  1. GETTIME ;
  1. S AMHTIME="",DIR(0)="9002011,.12",DIR("A")="Enter TOTAL ACTIVITY TIME" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) G GETPOVS
  1. S AMHTIME=Y
  1. GETNUM ;
  1. S AMHNUM="",DIR(0)="9002011,.09",DIR("A")="Enter TOTAL NUMBER OF PATIENTS ON FORM" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) G GETTIME
  1. S AMHNUM=Y
  1. DISP ;
  1. W !!,"I am going to ask you to enter ",AMHNUM," patient names. I will then create a",!,"record in the BH file for each patient. The record will contain the",!,"following information: ",!
  1. W !,"Date of Encounter: " S Y=AMHDATE D DD^%DT W Y W ?40,"Program: ",AMHPROG(0)
  1. W !,"Loc. of Enc.: ",$E($P(^DIC(4,AMHLOC,0),U),1,25),?40,"Community: ",$E($P(^AUTTCOM(AMHCOMM,0),U),1,25)
  1. W !,"Providers: " S X=0 F S X=$O(AMHPROV(X)) Q:X'=+X W:X>1 ! W ?12,$P(^VA(200,$P(AMHPROV(X),U),0),U)
  1. W !,"Activity: ",$E($P(^AMHTACT(+AMHACT,0),U,2),1,25),?40,"Type of Contact: ",$P(AMHCONT(0),U)
  1. W !,"PROBLEM (POV): " S X=0 F S X=$O(AMHPOV(X)) Q:X'=+X W:X>1 ! W ?12,$P(^AMHPROB($P(AMHPOV(X),U),0),U)," ",$E($P(^AUTNPOV($P(AMHPOV(X),U,2),0),U),1,50)
  1. W !,"# Patients: ",AMHNUM,?15,"Total Time: ",AMHTIME,!
  1. K DIR,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR(0)="Y",DIR("A")="Do you wish to continue",DIR("B")="Y" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. G:$D(DIRUT) XIT
  1. G:'Y XIT
  1. D ^AMHLEGP1
  1. ENDMSG ;
  1. ;print forms?
  1. I $O(AMHLEGP("RECS ADDED",0)) D PRINT
  1. D XIT
  1. Q
  1. PRINT ;
  1. W !! S DIR(0)="Y",DIR("A")="Do you wish to PRINT an encounter form for each patient's chart",DIR("B")="Y" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. Q:$D(DIRUT)
  1. Q:'Y
  1. NUM ;
  1. ;S DIR(0)="N^1:4:0",DIR("A")="How many copies of each form do you need",DIR("B")="1" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. ;Q:$D(DIRUT)
  1. ;S AMHNUM=Y
  1. K AMHEFT,AMHEFTH
  1. W !! S DIR(0)="S^F:Full Encounter Form;S:Suppressed Encounter Form;B:Both a Suppressed & Full;T:2 copies of the Suppressed;E:2 copies of the Full"
  1. S DIR("B")=$S($P(^AMHSITE(DUZ(2),0),U,23)]"":$P(^AMHSITE(DUZ(2),0),U,23),1:"B") K DA D ^DIR K DIR
  1. Q:$D(DIRUT)
  1. S (AMHEFT,AMHEFTH)=Y
  1. S XBRP="PRINT^AMHLEGPP",XBRC="COMP^AMHLEGPP",XBRX="XIT^AMHLEGPP",XBNS="AMH"
  1. D ^XBDBQUE
  1. ;loop through all patients, records and print forms
  1. Q
  1. INFORM ;
  1. D INFORM^AMHLEGP1
  1. Q
  1. XIT ;
  1. D XIT^AMHLEGP1
  1. Q