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

AMHBPL1.m

Go to the documentation of this file.
  1. AMHBPL1 ; IHS/CMI/LAB - problem list update from list manager ;
  1. ;;4.0;IHS BEHAVIORAL HEALTH;**2,4**;JUN 18, 2010;Build 28
  1. ;
  1. ;
  1. DIE ;
  1. S DIE("NO^")=1
  1. S DA=AMHPIEN,DIE="^AMHPPROB(",DR=AMHTEMP D ^DIE
  1. KDIE ;kill all vars used by DIE
  1. K DIE,DR,DA,DIU,DIV,DQ,D0,DO,DI,DIW,DIY,%,DQ,DLAYGO
  1. Q
  1. GETPROB ;EP - get record
  1. S AMHPIEN=0
  1. I 'AMHPRCNT W !!,"No problems to select" Q
  1. S DIR(0)="N^1:"_AMHPRCNT_":0",DIR("A")="Select Problem" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !!,"No Problem Selected" Q
  1. S AMHP=Y
  1. S (X,Y)=0 F S X=$O(AMHBHPL("IDX",X)) Q:X'=+X!(AMHPIEN) I $O(AMHBHPL("IDX",X,0))=AMHP S Y=$O(AMHBHPL("IDX",X,0)),AMHPIEN=AMHBHPL("IDX",X,Y)
  1. I '$D(^AMHPPROB(AMHPIEN,0)) W !,"Not a valid BEHAVIORAL HEALTH PROBLEM." K AMHP S AMHPIEN=0 Q
  1. D FULL^VALM1 ;give me full control of screen
  1. Q
  1. ADD ;EP - called from protocol to add a problem to problem list
  1. D FULL^VALM1 ; this gives me back all screen control
  1. W:$D(IOF) @IOF W !!!,"Adding a new BH Problem for ",$P(^DPT(AMHBPLPT,0),U),".",!!
  1. W "Purpose of Visit Diagnoses assigned to this patient in the past 90 days:",!
  1. NEW AMHPOVS,X,Y,N,AMHC,AMHOTH,D,P,AMHANS,AMHNUM,AMHTY,AMHNNUM,AMHNIEN,AMHCODE,AMHPOVS1,AMHANS,AMHOTH,AMHAPIEN,AMHNARR
  1. S AMHC=0
  1. S X=0 F S X=$O(^AMHRPRO("AC",AMHPAT,X)) Q:X'=+X D
  1. .Q:'$D(^AMHRPRO(X,0))
  1. .S D=$P(^AMHRPRO(X,0),U,3)
  1. .S D=$P($P($G(^AMHREC(D,0)),U,1),".")
  1. .Q:D<$$FMADD^XLFDT(DT,-91)
  1. .S Y=$$VAL^XBDIQ1(9002011.01,X,.01)
  1. .S I=$P(^AMHRPRO(X,0),U,1)
  1. .S N=$$VAL^XBDIQ1(9002012.2,$$VALI^XBDIQ1(9002011.01,X,.01),.02)
  1. .S P=$$VAL^XBDIQ1(9002011.01,X,.04)
  1. .S AMHPOVS(Y)=N_U_P_U_Y_U_I
  1. S Y="" F S Y=$O(AMHPOVS(Y)) Q:Y="" D
  1. .S AMHC=AMHC+1
  1. .W $$LBLK(AMHC,3),") ",Y,?15,$P(AMHPOVS(Y),U,1),!
  1. .S AMHPOVS1(AMHC)=AMHPOVS(Y)
  1. S AMHC=AMHC+1,AMHOTH=AMHC
  1. W $$LBLK(AMHC,3),") ","Any Other Diagnosis",!
  1. S DIR(0)="NO^1:"_AMHC_":0",DIR("A")="Choose a Diagnosis",DIR("B")=AMHC KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !!,"No diagnosis selected. " D PAUSE,EXIT Q
  1. S AMHANS=Y
  1. I AMHANS'=AMHOTH S AMHCODE=$P(AMHPOVS1(AMHANS),U,4) G ADD1
  1. S AMHCODE=""
  1. W !!
  1. S DIR(0)="9002011.01,.01",DIR("A")="Enter Diagnosis to Add to the Problem List" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !!,"No diagnosis selected. " D PAUSE,EXIT Q
  1. S AMHCODE=+Y
  1. ADD1 ;
  1. K DD,D0,DO,DINUM,DIC,DA,DR,DIADD
  1. S AMHNUM=0,AMHTY="" F S AMHTY=$O(^AMHPPROB("AA",AMHPAT,AMHTY)) Q:AMHTY="" D
  1. .S AMHNUM=$E(AMHTY,2,4) S AMHNUM=AMHNUM+1
  1. I AMHNUM=0 S AMHNUM=1
  1. S AMHNUM=+AMHNUM
  1. S DIC(0)="EL",DIC="^AMHPPROB(",DLAYGO=9002011.51,DIADD=1,X=AMHCODE
  1. S DIC("DR")=".02////"_AMHPAT_";.03////"_$$NOW^XLFDT_";.06////"_DUZ(2)_";.07////"_AMHNUM_";.08////"_$$NOW^XLFDT_";.15////"_DUZ
  1. D FILE^DICN K DIC,DR,DIE,DIADD,DLAYGO,X,D0
  1. I Y=-1 W !!,"error generating problem entry" D PAUSE,EXIT Q
  1. S AMHAPIEN=+Y
  1. S AMHNARR=$P(^AMHPROB(AMHCODE,0),U,2)
  1. S APCDOVRR=1,AMHOVRR=1
  1. S DIE("NO^")=1,DIE="^AMHPPROB(",DR=".05//"_AMHNARR,DA=AMHAPIEN D ^DIE D KDIE
  1. STAT ;get status value
  1. K DIR S DIR(0)="S^A:ACTIVE;I:INACTIVE",DIR("A")="STATUS",DIR("B")="ACTIVE" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !!,"This is a required response. " D DELADD G:'AMHDEL STAT S DA=AMHAPIEN,DIK="^AMHPPROB(" D ^DIK K DA,DIK D PAUSE,EXIT Q
  1. I Y'="I",Y'="A" W !!,"This is a required response, must be A or I, ""^"" to exit and delete the problem." G STAT
  1. S AMHANS=Y
  1. S DIE="^AMHPPROB(",DR=".12////"_AMHANS_";.13",DA=AMHAPIEN D ^DIE D KDIE
  1. NO ;
  1. W !!
  1. S DIR(0)="Y",DIR("A")="Add TREATMENT Note",DIR("B")="N" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) D PLUDE^AMHAPRB(AMHAPIEN,AMHPAT,AMHR,,$$PRIMPROV^AMHUTIL(AMHR,"I")),EXIT Q
  1. I 'Y D PLUDE^AMHAPRB(AMHAPIEN,AMHPAT,AMHR,,$$PRIMPROV^AMHUTIL(AMHR,"I")),EXIT Q
  1. S AMHNNUM=$$GETNUM^AMHLETN(AMHAPIEN)
  1. W !
  1. S DIC="^AMHPTP(",X=AMHNNUM,DIC("DR")=".02////"_AMHPAT_";.03////"_AMHAPIEN_";.05////"_DT,DIADD=1,DLAYGO=9002011.53,DIC(0)="EL"
  1. D FILE^DICN
  1. K DLAYGO,DIADD,DIC,DA
  1. I Y=-1 W !,"error creating note entry" D PAUSE,EXIT Q
  1. W !
  1. S AMHNIEN=+Y
  1. S DIE="^AMHPTP(",DA=AMHNIEN,DR=".04;.06//^S X=$P(^VA(200,DUZ,0),U);.07" D ^DIE K DIE,DR,DA
  1. G NO ; D EXIT
  1. Q
  1. DELADD ;
  1. S AMHDEL=0
  1. W !!,"Problem list entry is incomplete, it will be deleted."
  1. W ! S DIR(0)="Y",DIR("A")="Are you sure you want to delete this BH Problem",DIR("B")="N" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) Q
  1. I 'Y Q
  1. S AMHDEL=1
  1. Q
  1. EDIT ;EP - called from protocol to modify a problem on problem list
  1. NEW AMHPIEN,AMHTEMP,AMHOLDS,AMHOLDD,AMHNEWC
  1. D GETPROB
  1. I 'AMHPIEN D PAUSE,EXIT Q
  1. S AMHOLDS=$P(^AMHPPROB(AMHPIEN,0),U,12)
  1. S AMHOLDD=$P(^AMHPPROB(AMHPIEN,0),U,1)
  1. S AMHTEMP="[AMH MODIFY PROBLEM]"
  1. W:$D(IOF) @IOF W !,"Editing Problem ... ",!!
  1. ;CALL READER FOR .01 AND DO NOT ALLOW @
  1. S DIR(0)="9002011.51,.01",DIR("A")="Diagnosis",DIR("B")=$P(^AMHPROB(AMHOLDD,0),U,1) KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !!,"^ing out...no editing logged." D PAUSE,EXIT Q
  1. S AMHNEWC=+Y
  1. I 'AMHNEWC S AMHNEWC=$P(^AMHPPROB(AMHPIEN,0),U,1)
  1. S DA=AMHPIEN,DIE="^AMHPPROB(",DR=".01////"_AMHNEWC_";.03////"_$$NOW^XLFDT,DIE("NO^")=1 D ^DIE K DA,DIE,DR
  1. ;D DIE
  1. ;
  1. I $P(^AMHPPROB(AMHPIEN,0),U,1)'=AMHOLDD S DIE="^AMHPPROB(",DA=AMHPIEN,DR=".05///"_$P(^AMHPROB($P(^AMHPPROB(DA,0),U,1),0),U,2) D ^DIE K DA,DIE,DR
  1. D DIE
  1. I $P(^AMHPPROB(AMHPIEN,0),U,12)="D" D DELMOD
  1. S DA=AMHPIEN
  1. D PLUDE^AMHAPRB(AMHPIEN,AMHPAT,AMHR,,$$PRIMPROV^AMHUTIL(AMHR,"I"))
  1. D EXIT
  1. Q
  1. DELMOD ;
  1. ;
  1. W !!,"Please Note: You are NOT permitted to delete a BH Problem without",!,"entering a reason for the deletion."
  1. W ! S DIR(0)="Y",DIR("A")="Are you sure you want to delete this BH Problem",DIR("B")="N" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) K DIE,DR,DA S DIE="^AMHPPROB(",DR=".12///"_AMHOLDS,DA=AMHPIEN D ^DIE K DIE,DA,DR W !,"okay, not deleted. status changed back to "_$$VAL^XBDIQ1(9002011.51,AMHPIEN,.12) D PAUSE Q
  1. I 'Y K DIE,DR,DA S DIE="^AMHPPROB(",DR=".12///"_AMHOLDS,DA=AMHPIEN D ^DIE K DIE,DA,DR W !,"okay, not deleted. status changed back to "_$$VAL^XBDIQ1(9002011.51,AMHPIEN,.12) D PAUSE Q
  1. S DIR(0)="9002011.51,2.01",DIR("A")="Enter the Provider who deleted the Problem"
  1. S DIR("B")=$S($G(AMHR):$$PRIMPROV^AMHUTIL(AMHR,"N"),1:"") KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !!,"This is required." K DIE,DR,DA S DIE="^AMHPPROB(",DR=".12///"_AMHOLDS,DA=AMHPIEN D ^DIE K DIE,DA,DR W !," Problem not deleted. status changed back to "_$$VAL^XBDIQ1(9002011.51,AMHPIEN,.12) D PAUSE Q
  1. S AMHPRV=+Y
  1. S DA=AMHPIEN,DR="[AMH DELETE PROBLEM]",DIE="^AMHPPROB(" D ^DIE K DA,DIE,DR
  1. W !
  1. Q
  1. DEL ;EP - called from protocol to delete a problem on problem list
  1. NEW AMHPIEN,ANHPRV
  1. D GETPROB
  1. I 'AMHPIEN D PAUSE,EXIT Q
  1. W:$D(IOF) @IOF
  1. W !!,"Deleting the following BH Problem from ",$P($P(^DPT(AMHPAT,0),U),",",2)," ",$P($P(^(0),U),","),"'s BH Problem List.",!
  1. S DA=AMHPIEN,DIC="^AMHPPROB(" D EN^DIQ
  1. ;
  1. W !!,"Please Note: You are NOT permitted to delete a BH Problem without",!,"entering a reason for the deletion."
  1. W ! S DIR(0)="Y",DIR("A")="Are you sure you want to delete this BH Problem",DIR("B")="N" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) W !,"okay, not deleted." D PAUSE,EXIT Q
  1. I 'Y W !,"Okay, not deleted." D PAUSE,EXIT Q
  1. S DIR(0)="9002011.51,2.01",DIR("A")="Enter the Provider who deleted the Problem"
  1. S DIR("B")=$S($G(AMHR):$$PRIMPROV^AMHUTIL(AMHR,"N"),1:"") KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) W !!,"This is required." D PAUSE,EXIT Q
  1. S AMHPRV=+Y
  1. S DA=AMHPIEN,DR="[AMH DELETE PROBLEM]",DIE="^AMHPPROB(" D ^DIE K DA,DIE,DR
  1. W !
  1. S DA=AMHPIEN
  1. D PLUDE^AMHAPRB(AMHPIEN,AMHPAT,AMHR,,$$PRIMPROV^AMHUTIL(AMHR,"I"))
  1. D PAUSE,EXIT,^XBFMK
  1. Q
  1. AN ;EP - add a note, called from protocol
  1. NEW AMHPIEN
  1. D GETPROB
  1. I 'AMHPIEN D PAUSE,EXIT Q
  1. D NO1^AMHBPL2
  1. D EXIT,^XBFMK
  1. Q
  1. MN ;EP - called from protocol to modify a note
  1. NEW AMHPIEN
  1. D GETPROB
  1. I 'AMHPIEN D PAUSE,EXIT Q
  1. D MN1^AMHBPL2
  1. D PAUSE,EXIT,^XBFMK
  1. Q
  1. RNO ;EP - called from protocol to remove a note
  1. NEW AMHPIEN
  1. D GETPROB
  1. I 'AMHPIEN D PAUSE,EXIT Q
  1. D RNO1^AMHBPL2
  1. D PAUSE,EXIT
  1. Q
  1. ACT ;EP - called from protocol to activate an inactive problem
  1. NEW AMHPIEN,AMHNDT
  1. S AMHNDT=$P(AMHDATE,".")
  1. D GETPROB
  1. I 'AMHPIEN D PAUSE,EXIT Q
  1. I $P(^AMHPPROB(AMHPIEN,0),U,12)="A" W !!,"That problem is already ACTIVE!!" D PAUSE,EXIT Q
  1. S AMHTEMP=".12///A;.03////^S X=$$NOW^XLFDT;.15////^S X=DUZ"
  1. W:$D(IOF) @IOF W !,"Activating BH Problem ... "
  1. D DIE
  1. S DA=AMHPIEN
  1. D PLUDE^AMHAPRB(AMHPIEN,AMHPAT,AMHR,,$$PRIMPROV^AMHUTIL(AMHR,"I"))
  1. D EXIT
  1. Q
  1. INACT ;EP - called from protocol to inactivate an active problem
  1. NEW AMHPIEN,AMHNDT
  1. S AMHNDT=$P(AMHDATE,".")
  1. D GETPROB
  1. I 'AMHPIEN D PAUSE,EXIT Q
  1. I $P(^AMHPPROB(AMHPIEN,0),U,12)="I" W !!,"That BH Problem is already INACTIVE!!",! D PAUSE,EXIT Q
  1. S AMHTEMP=".12///I;.03////^S X=$$NOW^XLFDT;.15////^S X=DUZ"
  1. W:$D(IOF) @IOF W !,"Inactivating BH Problem ... "
  1. D DIE
  1. S DA=AMHPIEN
  1. D PLUDE^AMHAPRB(AMHPIEN,AMHPAT,AMHR,,$$PRIMPROV^AMHUTIL(AMHR,"I"))
  1. D EXIT
  1. Q
  1. HS ;EP - called from protocol to display health summary
  1. NEW AMHHDR
  1. D FULL^VALM1
  1. S X="" I DUZ(2),$D(^APCCCTRL(DUZ(2),0))#2 S X=$P(^(0),U,3) I X,$D(^APCHSCTL(X,0)) S X=$P(^APCHSCTL(X,0),U)
  1. I $D(^DISV(DUZ,"^APCHSCTL(")) S Y=^("^APCHSCTL(") I $D(^APCHSCTL(Y,0)) S X=$P(^(0),U,1)
  1. S:X="" X="ADULT REGULAR"
  1. K DIC,DR,DD S DIC("B")=X,DIC="^APCHSCTL(",DIC(0)="AEMQ" D ^DIC K DIC,DA,DD,D0,D1,DQ
  1. I Y=-1 D PAUSE,EXIT Q
  1. S APCHSTYP=+Y,APCHSPAT=AMHPAT
  1. S AMHHDR="PCC Health Summary for "_$P(^DPT(AMHBPLPT,0),U)
  1. D VIEWR^XBLM("EN^APCHS",AMHHDR)
  1. S (DFN,Y)=AMHPAT D ^AUPNPAT
  1. K APCHSPAT,APCHSTYP,APCHSTAT,APCHSMTY,AMCHDAYS,AMCHDOB,AMHHDR
  1. D EXIT
  1. Q
  1. DD ;EP - called from protocol to display (DIQ) a problem in detail
  1. NEW AMHPIEN,AMHTNDF,AMHTN,AMHTDOI,AMHTTPT,AMHTNRQ,AMHAUTH
  1. D GETPROB
  1. I 'AMHPIEN D PAUSE,EXIT Q
  1. D VIEWR^XBLM("DD1^AMHBPL1","Behavioral Health Problem Display")
  1. D EXIT
  1. Q
  1. DD1 ;
  1. ;S DA=AMHPIEN,DIC="^AMHPPROB(" D EN^DIQ
  1. NEW AMHAR,F,AMHH,AMHZ D ENP^XBDIQ1(9002011.51,AMHPIEN,".01:.13;.15:999999","AMHAR(","E")
  1. S F=0 F S F=$O(AMHAR(F)) Q:F'=+F I AMHAR(F)]"" D
  1. .S AMHH=$P(^DD(9002011.51,F,0),U)
  1. .S AMHZ=AMHAR(F)
  1. .W !,$E(AMHH,1,25),":",?30,AMHZ
  1. ;
  1. DDN ;EP
  1. K AMHNOTES
  1. S AMHC=0
  1. Q:'$D(^AMHPTP("AE",AMHPIEN))
  1. W !,"Notes: "
  1. S AMHTNDF=0 F AMHTQ=0:0 S AMHTNDF=$O(^AMHPTP("AE",AMHPIEN,AMHTNDF)) Q:'AMHTNDF D DSPN
  1. Q
  1. DSPN ; DISPLAY SINGLE NOTE
  1. S X=$O(^AMHPTP("AE",AMHPIEN,AMHTNDF,"")) Q:X=""
  1. S AMHC=AMHC+1
  1. S AMHTN=^AMHPTP(X,0)
  1. S AMHTDOI=$P(AMHTN,U,5) I AMHTDOI]"" S AMHTDOI=$$DATE^AMHVRL(AMHTDOI)
  1. S AMHTTPT=$$VAL^XBDIQ1(9002011.53,X,.07) ;$P(AMHTN,U,7) S AMHTTPT=$S(AMHTTPT=1:"STP",AMHTTPT=2:"LTP",1:" ")
  1. S AMHAUTH=$$VAL^XBDIQ1(9002011.53,X,.06)
  1. W !!?3,AMHC,")",?7,"Date Added: ",AMHTDOI,?30,"Author: "_AMHAUTH
  1. W !?3,"Note Narrative: "_$$VAL^XBDIQ1(9002011.53,X,.04)
  1. I AMHTTPT]"" W !?3,AMHTTPT_" TERM TREATMENT"
  1. S AMHNOTES(AMHC)=X
  1. Q
  1. FS ;EP -called from protcol to display face sheet
  1. D FULL^VALM1
  1. S AMHHDR="Demographic Face Sheet For "_$P(^DPT(AMHPAT,0),U)
  1. D VIEWR^XBLM("START^AGFACE",AMHHDR)
  1. K AGOPT,AGDENT,AGMVDF,AMHHDR
  1. D EXIT
  1. Q
  1. PAUSE ;EP
  1. S DIR(0)="EO",DIR("A")="Press return to continue...." D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. Q
  1. GETNUM(P) ;EP - get problem number given ien of problem entry
  1. NEW N,F
  1. S N=""
  1. I 'P Q N
  1. I '$D(^AMHPPROB(P,0)) Q N
  1. S F=$P(^AMHPPROB(P,0),U,6)
  1. S N=$S($P(^AUTTLOC(F,0),U,7)]"":$J($P(^(0),U,7),4),1:"??")_$P(^AMHPPROB(P,0),U,7)
  1. Q N
  1. EXIT ;EP
  1. D TERM^VALM0
  1. S VALMBCK="R"
  1. D GATHER^AMHBPL
  1. S VALMCNT=AMHLINE
  1. D HDR^AMHBPL
  1. K AMHTEMP,AMHPRMT,AMHP,AMHPIEN,AMHAF,AMHF,AMHP0,AMHPRB
  1. D KDIE
  1. Q
  1. LBLK(V,L) ;left blank fill
  1. NEW %,I
  1. S %=$L(V),Z=L-% F I=1:1:Z S V=" "_V
  1. Q V