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

BDMLET.m

Go to the documentation of this file.
  1. BDMLET ; IHS/CMI/LAB - VIEW PT RECORD LT ; 05 Dec 2016 2:14 PM
  1. ;;2.0;DIABETES MANAGEMENT SYSTEM;**1,3,4,5,10**;JUN 14, 2007;Build 12
  1. ;Education Text Inserts to the Letter
  1. ;Education Followup Text Insert
  1. ;
  1. ;
  1. ;cmi/maw 7/31/2007 PATCH 1 added item 25 and code CENTER to allow centering of text
  1. ;
  1. ;
  1. EN S BDMVALM="BDM LETTER"
  1. D VALM^BDMVRL(BDMVALM)
  1. Q
  1. EXIT K BDMQUIT,BDMOUT,BDMLDA
  1. K ^TMP("BDMVR",$J)
  1. Q
  1. ADD ;EP;TO ADD DMS LETTERS
  1. D EXIT
  1. D A1
  1. D E11:$G(BDMLDA)
  1. Q
  1. A1 D CLEAR^VALM1
  1. K BDMLDA
  1. S:$G(DIC(0))="" DIC(0)="AELMQZ"
  1. S DIC="^BDMLET("
  1. S DIC("A")="NAME OF LETTER: "
  1. S:DIC(0)["L" DIC("DR")=".02////"_DUZ_";.03////"_DT,DLAYGO=9003201
  1. W !?16,"------------------------------"
  1. D DIC^BDMFDIC
  1. S:+Y>0 BDMLDA=+Y
  1. BACK S VALMBCK="R"
  1. Q
  1. WHICH ;EP;TO IDENTIFY WHICH LETTER TO USE
  1. S DIC(0)="AEMQZ"
  1. D A1
  1. Q
  1. SELECT ;EP;TO SELECT DMS LETTER
  1. K BDMQUIT,BDMOUT
  1. D LIST
  1. S1 S DIR(0)="NO^1:"_BDMJ
  1. S DIR("A")="Select LETTER NO."
  1. W !
  1. D DIR^BDMFDIC
  1. I +Y<1!'$G(BDMTMP(+Y)) S BDMQUIT="" Q
  1. S BDMLDA=+BDMTMP(+Y)
  1. Q
  1. EDIT ;EP;TO EDIT DMS LETTER
  1. D EXIT
  1. D S1
  1. I $D(BDMQUIT) K BDMQUIT D BACK Q
  1. E11 D CLEAR^VALM1
  1. S DA=BDMLDA
  1. S DIE="^BDMLET("
  1. S DR=1
  1. D DIE^BDMFDIC
  1. D PARSE
  1. D BACK
  1. Q
  1. EPPRINT ;EP;TO PRINT LETTER FROM XBNEW CALL
  1. S BDM("STATUS")=BDMLSTAT
  1. D PRINT
  1. Q
  1. PRINT ;EP;TO PRINT DMS LETTER
  1. Q:'$G(BDMLDA)!'$G(DFN)
  1. D CLEAR^VALM1:IO=IO(0)&(IOST["C-")
  1. W @IOF
  1. N A,B,C,D,X,Y,Z
  1. S X=0
  1. F S X=$O(^BDMLET(BDMLDA,1,X)) Q:'X D
  1. .S Y=$G(^BDMLET(BDMLDA,1,X,0))
  1. .I Y["|" D INTP
  1. .W !,Y
  1. D PAUSE^BDMFMENU
  1. Q
  1. INTP ;INTERPRET VARIABLES
  1. N ZZ,ZZZ,X,K,E,M
  1. S X=Y
  1. X ^%ZOSF("UPPERCASE")
  1. S ZZ=Y
  1. S ZZZ=$P(Y,"|")
  1. F I=2:2 S J=$P(Y,"|",I) Q:J="" D
  1. .S E=$O(^BDMLETI("B",J,0))
  1. .I 'E S E=$O(^BDMLETI("B",$E(J,1,8),0))
  1. .I 'E Q
  1. .S M=$G(^BDMLETI(E,1))
  1. .I M="" Q
  1. .X M ;THE mumps code must set Z equal to the value
  1. .;K is the mumps code to execute
  1. .;S K=$E($P(J," "),1,8)
  1. .;I $T(@K)="" S ZZ="" Q
  1. .;D @K
  1. .S ZZ=$P(ZZ,("|"_J_"|"))_Z_$P(ZZ,("|"_J_"|"),2)
  1. S Y=ZZ
  1. Q
  1. INTPF ;EP;TO ENTER EDUCATION TEXT WITH FOLLOWUP ITEM
  1. N ZZ,ZZZ,X,K
  1. Q:BDMZ=""
  1. Q:BDMZ["OTHER"
  1. Q:BDMZ["LDL"
  1. Q:BDMZ["HDL"
  1. Q:BDMZ["CHOL"
  1. Q:BDMZ["DEPR"
  1. Q:BDMZ["EKG"
  1. Q:BDMZ["GFR"
  1. W !
  1. I BDMZ["FOOT" S X="FOOT EXAM EDUCATION"
  1. I BDMZ["DENTAL" S X="DENTAL EXAM EDUCATION"
  1. I BDMZ["EYE" S X="EYE EXAM EDUCATION"
  1. I BDMZ["FLU" S X="FLU SHOT EDUCATION"
  1. I BDMZ["PNEUMO" S X="PNEUMO EDUCATION"
  1. I BDMZ["HEP" S X="HEP B EDUCATION"
  1. I BDMZ["TD" S X="TETANUS EDUCATION"
  1. I BDMZ["PPD" S X="TB TEST EDUCATION"
  1. I BDMZ["A1C" S X="A1C HEMOGLOBIN EDUCATION"
  1. I BDMZ["CREATIN" S X="CREATININE EDUCATION"
  1. I BDMZ["URINE" S X="URINE PROTEIN TEST EDUCATION"
  1. I BDMZ["LIPID" S X="LIPID PANEL EDUCATION"
  1. I BDMZ["TRIG" S X="LIPID PANEL EDUCATION"
  1. I BDMZ["NUTRI" S X="NUTRITION EDUCATION"
  1. I BDMZ["PHYSCIAL" S X="PHYSICAL ACTIVITY EDUCATION"
  1. I BDMZ["A/C" S X="A/C RATIO EDUCATION"
  1. S Y=$O(^BDMLETI("B",X,0))
  1. D EDUCP
  1. Q
  1. ;
  1. ZIS ;EP;TO SELECT DEVICE ON WHICH TO PRINT DMS LETTER
  1. S (ZTRTN,BDMRTN)="PRINT^BDMLET"
  1. S ZTDESC="PRINT DMS PATIENT LETTER"
  1. S ZTSAVE("BDM*")=""
  1. S ZTSAVE("DFN")=""
  1. D ^BDMFZIS
  1. Q
  1. MULTIPLE ;EP;UTILTIY TO SELECT MULTIPLE PATIENTS FOR WHICH TO PRINT DMS LETTER
  1. Q
  1. LINIT ;EP;TO CREATE ARRAY OF NAMES OF EXISTING LETTERS
  1. N X
  1. K ^TMP("BDMVR",$J),BDMJ
  1. S VALMCNT=0
  1. K X
  1. ;S $E(X,5)="NO. LETTER"
  1. ;D Z(X)
  1. ;K X
  1. ;S $E(X,5)="--- ------------------------------"
  1. ;D Z(X)
  1. S BDMJ=0
  1. S Y=""
  1. F S Y=$O(^BDMLET("B",Y)) Q:Y="" D
  1. .S Z=0
  1. .F S Z=$O(^BDMLET("B",Y,Z)) Q:'Z D
  1. ..S BDMJ=BDMJ+1
  1. ..K X
  1. ..S $E(X,5)=BDMJ
  1. ..S $E(X,10)=Y
  1. ..D Z(X)
  1. ..S BDMTMP(BDMJ)=Z
  1. Q
  1. INSERT ;EP;TO LIST INSERT ITEMS
  1. S BDMVALM="BDM LETTER ITEMS"
  1. D TERM^VALM0
  1. D CLEAR^VALM1
  1. D EN^VALM(BDMVALM)
  1. D CLEAR^VALM1
  1. D BACK
  1. Q
  1. IHDR ;
  1. S VALMHDR(1)="NO. INSERT"
  1. ;S $E(VALMHDR(2),"-",78)=""
  1. Q
  1. ILIST ;LIST ITEM TEXT
  1. K BDMLETI
  1. N X,C,Y
  1. S (X,C)=0
  1. F S X=$O(^BDMLETI("C",X)) Q:X'=+X D
  1. .S Y=0 F S Y=$O(^BDMLETI("C",X,Y)) Q:Y'=+Y D
  1. ..S C=C+1
  1. ..S BDMLETI(C,0)=C,$E(BDMLETI(C,0),10)=$P(^BDMLETI(Y,0),U,1)
  1. ..S BDMLETI("IDX",C,C)=Y
  1. S (VALMCNT,BDMLETIC)=C
  1. Q
  1. PARSE ;DIVIDE UP THE LETTER CONTENT
  1. N I,J,K,X,Y,Z,ZZ,BDMTMP
  1. S (Z,ZZ)=""
  1. S (J,X)=0
  1. F S X=$O(^BDMLET(BDMLDA,1,X)) Q:'X D
  1. .S Y=$G(^BDMLET(BDMLDA,1,X,0))
  1. .Q:Y=""
  1. .I Y["|" D VARS
  1. .D LINE
  1. Q:'$D(BDMTMP)
  1. S %X="BDMTMP("
  1. S %Y="^BDMLET("_BDMLDA_",1,"
  1. D %XY^%RCR
  1. Q
  1. VARS ;CONVERT VARIABLES
  1. N I,J,K,X,Z,E
  1. ;S ZZ="ZL BDMLET S X=""I""_J,X=$T(@X)"
  1. F I=2:2 S J=$P(Y,"|",I) Q:J="" D:J
  1. .;X ZZ
  1. .S E=$O(^BDMLETI("C",J,0))
  1. .;S Z=$P(X,";;",3)
  1. .S X=$P(^BDMLETI(E,0),U,1)
  1. .S Y=$P(Y,("|"_J_"|"))_"|"_X_"|"_$P(Y,("|"_J_"|"),2)
  1. Q
  1. LINE ;
  1. I $L(Y)<81 D Q
  1. .S J=J+1
  1. .S BDMTMP(J,0)=Y
  1. F I=1:1 S K=$P(Y," ",I) Q:$P(Y," ",I,99)="" D
  1. .I $L(Z_" "_K)>80 D Q
  1. ..S J=J+1
  1. ..S BDMTMP(J,0)=Z
  1. ..S Z=""
  1. .I Z="" S Z=K
  1. .E S Z=Z_" "_K
  1. I $L(Z) S J=J+1,BDMTMP(J,0)=Z
  1. Q
  1. PATLET ;EP;TO SELECT AND PROCESS PATIENT LETTER
  1. D SELECT
  1. Q:'$G(BDMLDA)
  1. D ZIS
  1. Q
  1. LIST ;LIST LETTERS
  1. K BDMTMP
  1. N BDM,BDMX,BDMY,BDMZ
  1. W @IOF
  1. W !!?5,"DMS letters currently on file:"
  1. W !!,"NO. LETTER"
  1. W ?27,"NO. LETTER"
  1. W ?54,"NO. LETTER"
  1. W !,"--- --------------------"
  1. W ?27,"--- --------------------"
  1. W ?54,"--- --------------------"
  1. S BDMJ=0
  1. S BDM=""
  1. F S BDM=$O(^BDMLET("B",BDM)) Q:BDM="" D
  1. .S BDMX=0
  1. .F S BDMX=$O(^BDMLET("B",BDM,BDMX)) Q:'BDMX D
  1. ..S BDMY=$G(^BDMLET(BDMX,0))
  1. ..Q:BDMY=""
  1. ..S BDMJ=BDMJ+1
  1. ..S BDMTMP(BDMJ)=BDMX_U_BDM
  1. ..W:BDMJ#3=1 !
  1. ..W:BDMJ#3=2 ?27
  1. ..W:BDMJ#3=0 ?53
  1. ..W $J(BDMJ,2)," "
  1. ..W $E(BDM,1,20)
  1. Q
  1. CHART ;EP;TO PRINT PATIENT CHART NUMBER
  1. S Z="CHART NO.: "_$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)
  1. Q
  1. EDUCATE ;EP - to print all education
  1. S Z=""
  1. NEW Y,X,E
  1. S E=0 F S E=$O(^BDMLETI("C",E)) Q:E'=+E D
  1. .S Y=0 F S Y=$O(^BDMLETI("C",E,Y)) Q:Y'=+Y D
  1. ..Q:'$P(^BDMLETI(Y,0),U,3)
  1. ..D EDUCP
  1. ..Q
  1. .Q
  1. Q
  1. EDUCP ;EP - print education text
  1. S Z=""
  1. Q:'Y
  1. NEW X
  1. S X=0 F S X=$O(^BDMLETI(Y,2,X)) Q:X'=+X W !,^BDMLETI(Y,2,X,0)
  1. W !
  1. Q
  1. ADDRESS ;EP;TO PRINT PATIENT'S ADDRESS IN A LETTER
  1. S Z=$G(^DPT(DFN,.11))
  1. W !
  1. W:$G(ZZZ)]"" ?$L(ZZZ)
  1. W $P(Z,U)
  1. I $P(Z,U,2) D
  1. .W !
  1. .W:$G(ZZZ)]"" ?$L(ZZZ)
  1. .W $P(Z,U,2)
  1. I $P(Z,U,3) D
  1. .W !
  1. .W:$G(ZZZ)]"" ?$L(ZZZ)
  1. .W $P(Z,U,3)
  1. W !
  1. W:$G(ZZZ)]"" ?$L(ZZZ)
  1. W $P(Z,U,4),", ",$P($G(^DIC(5,+$P(Z,U,5),0)),U,2)," ",$P(Z,U,6)
  1. S (Z,ZZ)=""
  1. Q
  1. ;
  1. CENTER ;-- try and center the text here
  1. ;
  1. N T,L,N,I
  1. S Z=""
  1. S T=$P(X,"|",3)
  1. S L=$L(T)/2
  1. S N=(80/2)-L
  1. F I=1:1:N S Z=Z_" "
  1. Q
  1. ;
  1. FOLLOW ;EP;TO PRINT FOLLOW-UP MESSAGE
  1. S BDM("STATUS")=$E($G(BDM("STATUS")))
  1. S BDMPDA=DFN
  1. D SSET^BDMVRL42
  1. N BDMX
  1. S BDMX=0
  1. F S BDMX=$O(^TMP("BDMTMP",$J,"FUL",DFN,BDMX)) Q:'BDMX!$D(BDMQUIT) D
  1. .S BDMY=""
  1. .F S BDMY=$O(^TMP("BDMTMP",$J,"FUL",DFN,BDMX,BDMY)) Q:BDMY=""!$D(BDMQUIT) D
  1. ..S BDMZ=$G(^TMP("BDMTMP",$J,"FUL",DFN,BDMX,BDMY))
  1. ..W !?5,BDMY,?28,"----------",?40,$P(BDMZ,U)
  1. S (Z,ZZ)=""
  1. Q
  1. ;
  1. TEXT ;FOLLOWUP LETTER WITH EDUCATION INSERTS;
  1. S BDM("STATUS")=$E($G(BDM("STATUS")))
  1. S BDMPDA=DFN
  1. D SSET^BDMVRL42
  1. N BDMX
  1. S BDMX=0
  1. F S BDMX=$O(^TMP("BDMTMP",$J,"FUL",DFN,BDMX)) Q:'BDMX!$D(BDMQUIT) D
  1. .S BDMY=""
  1. .F S BDMY=$O(^TMP("BDMTMP",$J,"FUL",DFN,BDMX,BDMY)) Q:BDMY=""!$D(BDMQUIT) D
  1. ..S BDMZ=$G(^TMP("BDMTMP",$J,"FUL",DFN,BDMX,BDMY))
  1. ..W !?5,BDMY,?28,"----------",?40,$P(BDMZ,U)
  1. ..D INTPF
  1. S (Z,ZZ)=""
  1. Q
  1. ;
  1. REGISTER ;EP;TO PRINT PROVIDER NAME IN A LETTER
  1. S BDMRPDA=$G(^ACM(41,"AC",DFN,BDMRDA))
  1. I 'BDMRPDA S Z="" Q
  1. S Z=$P($G(^ACM(41,BDMRPDA,"DT")),U,15)
  1. I Z="" Q
  1. S Z=$P($G(^VA(200,Z,0)),U)
  1. S Z=$P($P(Z,",",2)," ")_" "_$P(Z,",")
  1. Q
  1. DELETE ;DELETE LETTER
  1. D S1
  1. I $D(BDMQUIT) K BDMQUIT D BACK Q
  1. S DA=BDMLDA
  1. S DIK="^BDMLET("
  1. D ^DIK
  1. D BACK
  1. Q
  1. Z(X) ;SET TMP NODE
  1. S VALMCNT=VALMCNT+1
  1. S ^TMP("BDMVR",$J,VALMCNT,0)=X
  1. Q
  1. PRIMARY ;EP;TO PRINT PCP PROVIDER NAME IN A LETTER
  1. K R
  1. D ALLDP^BDPAPI(DFN,"DESIGNATED PRIMARY PROVIDER",.R)
  1. S Z=$P($G(R("DESIGNATED PRIMARY PROVIDER")),U,1)
  1. I Z]"" S Z=$P($P(Z,",",2)," ")_" "_$P(Z,",")
  1. Q
  1. PHARTEXT ;FOLLOWUP LETTER WITH EDUCATION INSERTS; NOEL PHARES, NOT EDUCATION OR DEP SCR
  1. S BDM("STATUS")=$E($G(BDM("STATUS")))
  1. S BDMPDA=DFN
  1. D SSET^BDMVRL42
  1. N BDMX
  1. S BDMX=0
  1. F S BDMX=$O(^TMP("BDMTMP",$J,"FUL",DFN,BDMX)) Q:'BDMX!$D(BDMQUIT) D
  1. .S BDMY=""
  1. .F S BDMY=$O(^TMP("BDMTMP",$J,"FUL",DFN,BDMX,BDMY)) Q:BDMY=""!$D(BDMQUIT) D
  1. ..Q:BDMY="DEPRESSION SCR"
  1. ..Q:BDMY="NUTRITION ED"
  1. ..Q:BDMY="EXERCISE ED"
  1. ..Q:BDMY="OTHER ED"
  1. ..S BDMZ=$G(^TMP("BDMTMP",$J,"FUL",DFN,BDMX,BDMY))
  1. ..W !?5,BDMY,?28,"----------",?40,$P(BDMZ,U)
  1. ..D INTPFP
  1. S (Z,ZZ)=""
  1. Q
  1. ;
  1. INTPFP ;EP;TO ENTER EDUCATION TEXT WITH FOLLOWUP ITEM
  1. N ZZ,ZZZ,X,K
  1. Q:BDMZ=""
  1. Q:BDMZ["OTHER"
  1. Q:BDMZ["LDL"
  1. Q:BDMZ["HDL"
  1. Q:BDMZ["CHOL"
  1. Q:BDMZ["DEPR"
  1. ;Q:BDMZ["EKG"
  1. ;Q:BDMZ["GFR"
  1. W !
  1. I BDMZ["FOOT" S X="FOOT EXAM EDUCATION"
  1. I BDMZ["DENTAL" S X="DENTAL EXAM EDUCATION"
  1. I BDMZ["EYE" S X="EYE EXAM EDUCATION"
  1. I BDMZ["FLU" S X="FLU SHOT EDUCATION"
  1. I BDMZ["PNEUMO" S X="PNEUMO EDUCATION"
  1. I BDMZ["HEP" S X="HEP B EDUCATION"
  1. I BDMZ["TD" S X="TETANUS EDUCATION"
  1. I BDMZ["PPD" S X="TB TEST EDUCATION"
  1. I BDMZ["A1C" S X="A1C HEMOGLOBIN EDUCATION"
  1. I BDMZ["CREATIN" S X="CREATININE EDUCATION"
  1. I BDMZ["URINE" S X="URINE PROTEIN TEST EDUCATION"
  1. I BDMZ["LIPID" S X="LIPID PANEL EDUCATION"
  1. I BDMZ["TRIG" S X="LIPID PANEL EDUCATION"
  1. I BDMZ["NUTRI" S X="NUTRITION EDUCATION"
  1. I BDMZ["PHYSICAL" S X="PHYSICAL ACTIVITY EDUCATION"
  1. I BDMZ["A/C" S X="A/C RATIO EDUCATION"
  1. I BDMZ["EKG" S X="EKG"
  1. I BDMZ["GFR" S X="eGFR"
  1. S Y=$O(^BDMLETI("B",X,0))
  1. D EDUCP
  1. Q