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

AMHLEA.m

Go to the documentation of this file.
  1. AMHLEA ; IHS/CMI/LAB - ADD NEW CHR ACTIVITY RECORDS ;
  1. ;;4.0;IHS BEHAVIORAL HEALTH;**1,2,8**;JUN 02, 2010;Build 7
  1. ;
  1. ;add new records
  1. ;get all items for a record, check record, file record
  1. ;if not complete record, issue warning and delete record
  1. ADDR ;EP
  1. D FULL^VALM1
  1. I '$D(AMHDATE) W !!,"Date not entered." H 5 Q
  1. S AMHQUIT=0,AMHACTN=1
  1. I '$G(AMHADPTV) K AMHPAT
  1. I AMHDET="S" D ADDSCR Q
  1. ;I $G(AMHADPTV) D GETVTYP
  1. ;I '$G(AMHADPTV) S AMHVTYPE="R"
  1. S AMHVTYPE="R"
  1. ;I AMHVTYPE="B" S AMHVTYPE="R"
  1. ;I AMHVTYPE="" K AMHVTYPE W !,"Visit type is required!" G EXIT
  1. ;I AMHVTYPE="C" D IC^AMHLEIC D EXIT Q
  1. ;I AMHVTYPE="N" D NS^AMHLENS1 D EXIT Q
  1. D HEADER
  1. S APCDOVRR=""
  1. I '$D(AMHPATCE) K AMHPAT
  1. W !,"Creating new record..." K DD,D0,DO,DINUM,DIC,DA,DR S DIC(0)="EL",DIC="^AMHREC(",DLAYGO=9002011,DIADD=1,X=AMHDATE,DIC("DR")="1111////1" D FILE^DICN K DIC,DR,DIE,DIADD,DLAYGO,X,D0
  1. I Y=-1 W !!,$C(7),$C(7),"Behavioral Health Record is NOT complete!! Deleting Record.",! D PAUSE Q
  1. S AMHR=+Y,DIE="^AMHREC(",DA=AMHR,DR="5100///NOW",DR(2,9002011.5101)=".02////^S X=DUZ" D ^DIE K DIE,DA,DR
  1. S DA=AMHR,DIE="^AMHREC(",DR=$S(AMHVTYPE="A":"[AMHASA ADD RECORD]",$G(AMHADPTV):"[AMH ADD RECORD]",1:"[AMH ADD NON-PATIENT RECORD]") D CALLDIE^AMHLEIN
  1. I $D(Y)!('$D(^AMHRPROV("AD",AMHR))) W !!,"Incomplete record!! Deleting record!!" D DEL G EXIT
  1. D ^AMHLEPOV
  1. I '$D(^AMHRPRO("AD",AMHR))!('$D(^AMHRPROV("AD",AMHR))) W !!,"Incomplete record!! Deleting record!!" D DEL G EXIT
  1. S DA=AMHR,DIE="^AMHREC(",DR=$S(AMHVTYPE="A":"[AMH ADD RECORD 2 ASA]",1:"[AMH ADD RECORD 2]") D CALLDIE^AMHLEIN
  1. I $D(Y) W !!,"Incomplete record!! Deleting record!!" D DEL G EXIT
  1. S AMHOKAY=0 D RECCHECK^AMHLE2 I AMHOKAY W !,"Incomplete record!! Deleting record!!" D DEL G EXIT
  1. W ! S DIE="^AMHREC(",DR="8101",DA=AMHR D CALLDIE^AMHLEIN
  1. I $G(AMHADPTV),AMHVTYPE="R" D REGULAR^AMHLEP2
  1. ;I $P(^AMHREC(AMHR,0),U,2)="C"!($P($G(^AMHREC(AMHR,91)),U)="Y") D CDST
  1. I $P(^AMHREC(AMHR,0),U,8)]"" D SUIC,OTHER
  1. I $P(^AMHREC(AMHR,0),U,8) D ESIG^AMHESIG(AMHR)
  1. D PCCLINK
  1. D EXIT
  1. Q
  1. ADDNS ;EP
  1. D FULL^VALM1
  1. I '$D(AMHDATE) W !!,"Date not entered." H 5 Q
  1. S AMHQUIT=0,AMHACTN=1
  1. S APCDOVRR=1
  1. D ADDR^AMHLENS
  1. D EXIT
  1. Q
  1. ADDSCR ;screenman mode
  1. S APCDOVRR=""
  1. I '$D(AMHPATCE) K AMHPAT
  1. D FULL^VALM1
  1. I '$D(AMHDATE) W !!,"Date not entered." H 5 Q
  1. S AMHQUIT=0,AMHACTN=1
  1. ;I $G(AMHADPTV) D GETVTYP
  1. ;I '$G(AMHADPTV) S AMHVTYPE="R"
  1. ;I AMHVTYPE="" K AMHVTYPE W !,"Visit type is required!" G EXIT
  1. ;I AMHVTYPE="N" D ADDR^AMHLENS D EXIT Q
  1. S AMHVTYPE="R"
  1. K DIC S DIC(0)="EL",DIC="^AMHREC(",DLAYGO=9002011,DIADD=1,X=AMHDATE,DIC("DR")=".02///"_AMHPTYPE_";.03///^S X=DT;.19////"_DUZ_";.33////"_AMHVTYPE_";.28////"_DUZ_";.22///A;.21///^S X=DT"_";1111////1"
  1. K DD,DO,D0 D FILE^DICN K DIC,DR,DIE,DIADD,DLAYGO,X,D0
  1. I Y=-1 W !!,$C(7),$C(7),"Behavioral Health Record is NOT complete!! Deleting Record.",! D PAUSE Q
  1. ;update multiple of user last update/date edited
  1. S AMHR=+Y
  1. S DIE="^AMHREC(",DA=AMHR,DR="5100///NOW",DR(2,9002011.5101)=".02////^S X=DUZ" D ^DIE K DIE,DA,DR
  1. I $G(AMHADPTV)=1 D:'$D(AMHPATCE) GETPAT D:'$G(AMHPAT) DEL,EXIT Q:'$G(AMHPAT) S DA=AMHR,DR=".08////"_AMHPAT,DIE="^AMHREC(" D CALLDIE^AMHLEIN
  1. S DA=AMHR,DIE="^AMHREC("
  1. S DR=".02///"_AMHPTYPE_$S($$GETLOC^AMHLEIN(DUZ(2),AMHPTYPE):";.04///`"_$$GETLOC^AMHLEIN(DUZ(2),AMHPTYPE),1:"")_$S($$GETCOMM^AMHLEIN(DUZ(2),AMHPTYPE):";.05///`"_$$GETCOMM^AMHLEIN(DUZ(2),AMHPTYPE),1:"")_";1117////"_$$HL^AMHUTIL2(AMHPTYPE)
  1. S DR=DR_$S($$GETCLN^AMHLEIN(DUZ(2),AMHPTYPE):";.25///`"_$$GETCLN^AMHLEIN(DUZ(2),AMHPTYPE),1:"")
  1. S DR=DR_";.11///"_$$GETAWI^AMHLEIN(DUZ(2))_$S($$GETTOC^AMHLEIN(DUZ(2)):";.07///`"_$$GETTOC^AMHLEIN(DUZ(2)),1:"")
  1. D ^DIE I $D(Y) W !!,"Error updating record......" H 5
  1. K DR,DA,DIE
  1. D GETPROV I '$$PPINT^AMHUTIL(AMHR) W !,"No PRIMARY PROVIDER entered!! - Required element" D DEL,EXIT Q
  1. ;
  1. ADD1 ;
  1. I AMHVTYPE="R" S DA=AMHR,DDSFILE=9002011,DR=$S($G(AMHADPTV):"[AMH ADD RECORD]",1:"[AMH ADD NON-PAT RECORD]") D ^DDS
  1. ;I AMHVTYPE="A" S DA=AMHR,DDSFILE=9002011,DR="[AMHASA ADD RECORD]" D ^DDS
  1. ;I AMHVTYPE="B" S AMHVTYPE="R",DA=AMHR,DDSFILE=9002011,DR=$S($G(AMHADPTV):"[AMHB ADD RECORD]",1:"[AMH ADD NON-PAT RECORD]") D ^DDS
  1. ;I AMHVTYPE="I"!(AMHVTYPE="P") S DA=AMHR,DDSFILE=9002011,DR="[AMHVT ADD RECORD]" D ^DDS
  1. ;I AMHVTYPE="C" S DA=AMHR,DDSFILE=9002011,DR="[AMH ADD CASE TRACKING REC]" D ^DDS
  1. I $D(DIMSG) W !!,"ERROR IN SCREENMAN FORM!! ***NOTIFY PROGRAMMER***" S AMHQUIT=1 K DIMSG Q
  1. S DA=AMHR,DIE="^AMHREC(",DR="1117////"_$$HL^AMHUTIL2($$VALI^XBDIQ1(9002011,AMHR,.02)) D ^DIE K DA,DR,DIE ;IHS/CMI/LAB - PATCH 8 Hosp location
  1. ;CHECK RECORD
  1. D CHECK
  1. I AMHZDEL D EXIT Q
  1. I AMHZED G ADD1
  1. ;I $G(AMHADPTV),(AMHVTYPE="I"!(AMHVTYPE="P")) D INTAKE^AMHLEP4
  1. I $G(AMHADPTV),AMHVTYPE="R" D REGULAR^AMHLEP2
  1. ;I $G(AMHADPTV),AMHVTYPE="C" D REGULAR^AMHLEP2
  1. I $G(AMHERROR) W !!,$C(7),$C(7),"PLEASE EDIT THIS RECORD!!",!!
  1. ;I $P(^AMHREC(AMHR,0),U,2)="C"!($P($G(^AMHREC(AMHR,91)),U)="Y") D CDST
  1. I $G(AMHADPTV) D SUIC,OTHER
  1. I $G(AMHADPTV) D PCCLINK
  1. ;I '$G(AMHADPTV) D ESIG^AMHESIG(AMHR)
  1. D EXIT
  1. Q
  1. ;
  1. INDS(R) ;is this a initial or a discharge
  1. I '$G(R) Q 0
  1. I $P(^AMHREC(R,0),U,32)]"" Q 1
  1. Q 0
  1. PRIMPROB(R) ;EP
  1. I '$G(R) Q ""
  1. NEW X S X=$O(^AMHRPRO("AD",R,0))
  1. I 'X Q ""
  1. Q $P(^AMHRPRO(X,0),U)
  1. GETVTYP ;
  1. I AMHDET="S" S DIR(0)="S^R:Regular Visit;B:Abbreviated Version of Regular Visit;C:Info/Contact;N:No Show;A:A/SA Encounter"
  1. I AMHDET="R" S DIR(0)="S^R:Regular Visit;C:Info/Contact;N:No Show;A:A/SA Encounter"
  1. S DIR("A")="Enter Visit Type",DIR("B")="R" KILL DA
  1. D ^DIR KILL DIR
  1. I $D(DIRUT) S AMHVTYPE="" Q
  1. S AMHVTYPE=Y,AMHVT=Y(0)
  1. Q
  1. CDST ;EP
  1. ;create record in CDMIS Staging file
  1. ;I '$$INDS(AMHR),$D(^AMHRCDST("B",AMHR)) D CDSTDEL Q
  1. I $P($G(^AMHREC(AMHR,91)),U)'="Y" Q
  1. I $D(^AMHRCDST("B",AMHR)) W !!,"There is already a initial/discharge entry for this visit.",!,"Editing existing data...." H 2 S AMHCDR=$O(^AMHRCDST("B",AMHR,0)) G CDST1
  1. W !!,"Creating Initial Chemical Dependency data record..." H 1
  1. D ^XBFMK S DIC="^AMHRCDST(",DIC(0)="AEMQ",DIADD=1,DLAYGO=9002011.06,X=AMHR K DD,DO D FILE^DICN K DIADD,DLAYGO,DD,DO,D0,DIC
  1. I Y=-1 W !!,$C(7),$C(7),"Notify supervisor....error in creating Initial Staging record.." D PAUSE Q
  1. S AMHCDR=+Y
  1. CDST1 K DIADD,DLAYGO D ^XBFMK
  1. S DA=AMHCDR,DIE="^AMHRCDST(",DR=".02////"_AMHPAT_";.03////"_$$PRIMPROB(AMHR)_";.04////"_DT_";.05////"_DUZ_";.19////"_$P(^AMHREC(AMHR,0),U,32) D ^DIE
  1. I $D(Y) W !!,$C(7),$C(7),"Notify supervisor....error in creating Initial Staging record.." D PAUSE D ^XBFMK Q
  1. S DA=AMHCDR,DDSFILE=9002011.06,DR="[AMH ENTER/EDIT STAGING TOOL]" D ^DDS
  1. I $D(DIMSG) W !!,"ERROR IN SCREENMAN FORM!! ***NOTIFY PROGRAMMER***" S AMHQUIT=1 K DIMSG Q
  1. D ^XBFMK
  1. Q
  1. CDSTDEL ;
  1. W !!,"There is a staging tool entry for this visit and this visit",!,"is not an INITIAL, REOPEN, TRAN/DISC/CLOSE or FOLLOW UP.",!
  1. S DIR(0)="Y",DIR("A")="Do you want to delete this staging tool entry",DIR("B")="N" KILL DA D ^DIR KILL DIR
  1. Q:$D(DIRUT)
  1. Q:'Y
  1. S DA=$O(^AMHRCDST("B",AMHR,0)),DIK="^AMHRCDST(" D ^DIK
  1. Q
  1. SUIC ;EP - is this a suicide visit? IF so, pop into suicide form
  1. Q:'$G(AMHPAT)
  1. NEW X,G,Y S (X,Y,G)=0 F S X=$O(^AMHRPRO("AD",AMHR,X)) Q:X'=+X S Y=$P(^AMHRPRO(X,0),U),Y=$P(^AMHPROB(Y,0),U) I Y=39!(Y=40)!(Y=41)!(Y="V62.84") S G=1
  1. Q:'G
  1. W !!,"You have entered a diagnosis relating to Suicide. ",!
  1. W !,"IHS Suicide Forms should be filled out for all Suicide Ideations with Plan",!,"and Intent, for all Suicide Attempts and for all Completed Suicides.",!
  1. S DIR(0)="Y",DIR("A")="Would you like to add/review the IHS Suicide forms for this patient",DIR("B")="Y" KILL DA D ^DIR KILL DIR
  1. Q:$D(DIRUT)
  1. Q:'Y
  1. S (DFN,AMHLEAP)=AMHPAT
  1. ;D EN^XBNEW("EN^AMHLESF","DFN;AMHPAT")
  1. D EN^AMHLESF
  1. S AMHPAT=AMHLEAP
  1. S DFN=AMHLEAP
  1. Q
  1. OTHER ;EP - collect other data if patient related
  1. S AMHFIRST=0
  1. D FULL^VALM1
  1. OTHERN ;
  1. I AMHFIRST G OTHERO
  1. K AMHXX
  1. S AMHANS=""
  1. S AMHXX=$$ESIG^AMHESIG(AMHR)
  1. I '$G(AMHXX) D I $P(AMHXX,U,4),AMHANS G OTHER
  1. .W !!,$P(AMHXX,U,3),!
  1. .I '$P(AMHXX,U,4) D PAUSE Q
  1. .S DIR(0)="Y",DIR("A")="Do you wish to enter a SOAP/Progress Note",DIR("B")="Y" KILL DA D ^DIR KILL DIR
  1. .Q:$D(DIRUT)
  1. .S AMHANS=Y Q:'Y
  1. .S DIE="^AMHREC(",DR=3101,DA=AMHR D ^DIE K DA,DIE,DR
  1. I AMHXX D ESIGGFI^AMHESIG(AMHR)
  1. S AMHFIRST=AMHFIRST+1
  1. OTHERO ;
  1. W @IOF,!!!?20,"******* OTHER INFORMATION *******",!!
  1. D RMENU
  1. S DIR("B")=10,DIR(0)="NO^1:10",DIR("A")="Choose one of the above" D ^DIR K DIR ;S:$D(DUOUT) DIRUT=1
  1. Q:$D(DIRUT)
  1. Q:Y=10
  1. S AMHSELE=+Y D OTHER1
  1. G OTHERN
  1. OTHER1 ;
  1. I AMHSELE'=6,'$G(AMHPAT) W $C(7),"You MUST Identify the Patient first!!" S AMHPAT="" D GETPAT Q:'AMHPAT
  1. W !
  1. D @AMHSELE
  1. Q
  1. GETPROV ;get providers
  1. I '$G(AMHADPTV) W:$D(IOF) @IOF W !!!!!!!
  1. E W !!!
  1. K DIR,DIC,DA,DTOUT,DIRUT,DUOUT,DIC,X,Y S DIR("B")=$P(^VA(200,DUZ,0),U),DIR(0)="9002011.02,.01O",DIR("A")=" Enter PRIMARY PROVIDER" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. Q:$D(DIRUT)
  1. Q:Y=""
  1. S X=+Y,DIC("DR")=".02////"_$G(AMHPAT)_";.03////"_AMHR_";.04///PRIMARY",DIC="^AMHRPROV(",DIC(0)="MLQ",DIADD=1,DLAYGO=9002011.02 K DD,DO D FILE^DICN K DIC,DA,DO,DD,D0,DG,DH,DI,DIW,DIU,DIADD,DIE,DQ,DLAYGO
  1. I Y=-1 W !!,"Creating Primary Provider entry failed!!!",$C(7),$C(7) H 2
  1. Q
  1. GETPAT ;EP
  1. D ^XBFMK
  1. S AMHC=0
  1. GETPAT1 I $G(AMHDET)="S" W:$D(IOF)&(AMHC=0) @IOF W !!!!!!!!?20,"TYPE THE PATIENT'S HRN, NAME, SSN OR DOB" S DIC("A")=" Patient: "
  1. S AMHPAT=""
  1. S DIC="^AUPNPAT(",DIC(0)="AEMQ" D ^DIC K DIC,DA,DR,DLAYGO,DIADD
  1. I Y<0 K AMHC Q
  1. S AMHPAT=+Y
  1. S X=AMHPAT D ^AMHPEDIT I '$D(X) S AMHC=AMHC+1 G GETPAT1
  1. W !?25,"Ok" S %=1 D YN^DICN I %'=1 S AMHPAT="" K AMHC Q
  1. I AMHPAT,'$$ALLOWP^AMHUTIL(DUZ,AMHPAT) D NALLOWP^AMHUTIL D PAUSE G GETPAT
  1. K AMHC
  1. Q
  1. DEL ;EP
  1. I $$IINTAKE^AMHLEDEL(AMHR) W !!,"This visit has an Initial Intake with Updates, it can not be deleted",!,"until the update documents have been deleted." D PAUSE Q
  1. S AMHVDLT=$P(^AMHREC(AMHR,0),U,16)
  1. S AMHRDEL=AMHR
  1. D EN^AMHLEDEL
  1. W !,"Record deleted." D PAUSE
  1. Q
  1. PAUSE ;EP
  1. S DIR(0)="EO",DIR("A")="Press enter to continue...." D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. Q
  1. RMENU ;EP - called form AMHLEA
  1. W:AMHACTN'=1 !
  1. W !,"Update, add or append any of the following data"
  1. W !!,?5,"1). Update any of the following information:"
  1. W !,?10,"Designated Providers, Patient Flag"
  1. W !,?5,"2). Patient Case Open/Admit/Closed Data"
  1. W !,?5,"3). Personal History Information"
  1. W !?5,"4). Appointments (Scheduling System)"
  1. W !?5,"5). Treatment Plan Update"
  1. W !?5,"6). Print an Encounter Form"
  1. W !?5,"7). Add/Update/Print Intake Document"
  1. W !?5,"8). Add/Update Suicide Forms"
  1. W !,?5,"9). Problem List Update"
  1. W !?5,"10). None of the Above (Quit)"
  1. Q
  1. W:$D(IOF) @IOF
  1. W !,AMHDASH
  1. W !,"Date of Service: ",$$FTIME^VALM1(AMHDATE),!,AMHDASH
  1. Q
  1. D PCCLINK^AMHLE2
  1. Q
  1. ;
  1. EXIT ;CLEAN UP AND EXIT
  1. D TERM^VALM0
  1. S VALMBCK="R"
  1. D GATHER^AMHLEL
  1. S VALMCNT=AMHRCNT
  1. D HDR^AMHLE
  1. K AMHV,AMHF,AMHDR,AMHR,AMHQUIT,AMHRDEL,AMHV,AMHVDLT,AMHNAME,AMHPTSV,AMHX,AMHERROR,AMHR0,APCDPKG,APCDV,AMHNONE,AMHOKAY,AMHOTH,AMHSHIGH
  1. K X,Y,Z,I
  1. Q
  1. 1 ;EP
  1. D CLEAR^VALM1
  1. D FULL^VALM1
  1. I '$D(^AMHPATR(AMHPAT)) S DIC="^AMHPATR(",DIC(0)="L",DLAYGO=9002011.55,X="`"_AMHPAT D ^DIC I Y=-1 D ^XBFMK W !!,"FAILED TO ADD PATIENT TO BH PATIENT DATA FILE" Q
  1. S DA=AMHPAT,DDSFILE=9002011.55,DR="[AMH PATIENT RELATED DATA]" D ^DDS
  1. I $D(DIMSG) W !!,"ERROR IN SCREENMAN FORM!! ***NOTIFY PROGRAMMER***" S AMHQUIT=1 K DIMSG Q
  1. Q
  1. 2 ;
  1. D EP^AMHLCD
  1. D FULL^VALM1
  1. Q
  1. 3 ;
  1. D PHX^AMHLE3
  1. Q
  1. 6 ;print encounter form
  1. I $G(AMHR) S %=AMHR,%1=$G(AMHPAT) D EN^XBNEW("PEF^AMHLE3","%;%1") Q
  1. S AMHNOLOG=1
  1. D ^AMHLEFP
  1. K AMHNOLOG
  1. Q
  1. 4 ;scheduling system
  1. D APPT^AMHVRL2(AMHPAT)
  1. Q
  1. 5 ;treatment Plan
  1. D EP1^AMHLETP(AMHPAT)
  1. Q
  1. 7 ;intake
  1. I $G(AMHR),$P(^AMHREC(AMHR,0),U,8)="" W !!,"This is not a patient related encounter. Use ID to update an Intake document." D PAUSE^AMHLEA Q
  1. I $G(AMHR) D
  1. .I $P(^AMHREC(AMHR,0),U,34) W !!,"You cannot add/update an intake on a visit created in a group.",! D PAUSE^AMHLEA Q
  1. .D EP1^AMHLEIV(AMHR,AMHPAT)
  1. Q
  1. 8 ;suicide forms
  1. I $G(AMHR),$P(^AMHREC(AMHR,0),U,8)="" W !!,"This is not a patient related encounter. Use SFR to update suicide forms." D PAUSE^AMHLEA Q
  1. I $G(AMHR) D
  1. .I $P(^AMHREC(AMHR,0),U,34) W !!,"You cannot add/update a suicide form on a visit created in a group.",! D PAUSE^AMHLEA Q
  1. .S DFN=$P(^AMHREC(AMHR,0),U,8) D EN^AMHLESF
  1. .Q
  1. Q
  1. 9 ;problem list
  1. D START^AMHBPL(AMHR)
  1. Q
  1. CHECK ;EP
  1. S AMHZDEL=0,AMHZED=0
  1. S AMHOKAY=0 D RECCHECK^AMHLE2 Q:'AMHOKAY
  1. W !!,"Incomplete record!!"
  1. S DIR(0)="Y",DIR("A")="Do you wish to edit this record",DIR("B")="Y" KILL DA D ^DIR KILL DIR
  1. I Y S AMHZED=1 Q
  1. Q:$G(AMHACTN)'=1
  1. W !!,"Deleting record." D DEL
  1. S AMHZDEL=1
  1. Q