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

BTIULO13.m

Go to the documentation of this file.
  1. BTIULO13 ;IHS/MSC/MGH - IHS OBJECTS ADDED IN PATCHES ;23-May-2016 15:35;DU
  1. ;;1.0;TEXT INTEGRATION UTILITIES;**1006,1009,1010,1011,1012,1017**;NOV 04, 2004;Build 7
  1. TMORDER(DFN,TARGET) ;EP Med Orders for today
  1. NEW X,I,CNT,RESULT
  1. S CNT=0
  1. D GETORD(.RESULT,DFN)
  1. K @TARGET
  1. S I=0 F S I=$O(RESULT(I)) Q:'I D
  1. .I $G(RESULT(I))'="" D
  1. ..S CNT=CNT+1
  1. ..S @TARGET@(CNT,0)=RESULT(I)
  1. I 'CNT S @TARGET@(1,0)="No Orders."
  1. Q "~@"_$NA(@TARGET)
  1. GETORD(RETURN,DFN) ;Get list of orders
  1. K RETURN
  1. NEW VDT,END,ORLIST,NEWORD,ORD,HDR,HLF,LOC,X,Y,C,GROUP,GROUPIEN,ORDER,OLDOR
  1. S C=0,OLDOR=0
  1. K ^TMP("ORR",$J)
  1. ;Get all orders for today
  1. S VDT=DT,END=VDT_".2359"
  1. I '$L($T(EN^ORQ1)) Q
  1. S GROUP="OUTPATIENT MEDICATIONS",GROUPIEN=""
  1. S GROUPIEN=$O(^ORD(100.98,"B",GROUP,""))
  1. D EN^ORQ1(DFN_";DPT(",GROUPIEN,2,"",VDT,END,1)
  1. I '$D(ORLIST) S RETURN(1)="" Q
  1. F X=0:0 S X=$O(^TMP("ORR",$J,ORLIST,X)) Q:'X K ORD M ORD=^(X) D
  1. . S Y=$P($G(^OR(100,+ORD,0)),U,10)
  1. . I $P(ORD,U,7)="canc" Q
  1. . S ORDER=+ORD
  1. . Q:ORDER=OLDOR
  1. . S ORDER=OLDOR
  1. . S C=C+1
  1. . F Y=0:0 S Y=$O(ORD("TX",Y)) Q:'Y D
  1. .. I $E(ORD("TX",Y),1)="<" Q
  1. .. ;I $E(ORD("TX",Y),1,6)="Change" Q
  1. .. I $E(ORD("TX",Y),1,6)="Change" S ORD("TX",Y)=$E(ORD("TX",Y),8,999)
  1. .. ;I $E(ORD("TX",Y),1,3)="to " Q
  1. .. I $E(ORD("TX",Y),1,3)="to " D
  1. ... K RETURN(C)
  1. ... S NEWORD=$E(ORD("TX",Y),4,999)
  1. ... S RETURN(C)=" "_NEWORD
  1. .. E S RETURN(C)=$G(RETURN(C))_" "_$P(ORD("TX",Y)," Quantity:")
  1. I C=0 S RETURN(1)=""
  1. K ^TMP("ORR",$J)
  1. Q
  1. PAD(DATA,LENGTH) ; -- SUBRTN to pad length of data
  1. Q $E(DATA_$$REPEAT^XLFSTR(" ",LENGTH),1,LENGTH)
  1. ;
  1. SP(NUM) ; -- SUBRTN to pad spaces
  1. Q $$PAD(" ",NUM)
  1. TOBACCO(DFN,TARGET) ;EP for new tobacco object
  1. NEW CTGN,HF,HFDT,LIST,RESULT,X,BTIU,CNT,CTG,X1
  1. I '$G(DFN) Q ""
  1. S CNT=0
  1. F BTIU=1:1 D Q:CTG=""
  1. .S CTG=$P($T(TOBU+BTIU),";;",2)
  1. .Q:CTG=""
  1. .S CTGN=$O(^AUTTHF("B",CTG,0)) I 'CTGN Q ;ien of category passed
  1. .;
  1. .S HF=0
  1. .F S HF=$O(^AUTTHF("AC",CTGN,HF)) Q:'+HF D ;find health factors in category
  1. ..Q:'$D(^AUPNVHF("AA",DFN,HF)) ;quit if patient doesn't have health factor
  1. ..S HFDT=$O(^AUPNVHF("AA",DFN,HF,"")) Q:'HFDT ;get visit date for health factor
  1. ..S LIST(CTG,HFDT)=$O(^AUPNVHF("AA",DFN,HF,HFDT,"")) ;store iens by date
  1. ;
  1. S X1=0 F S X1=$O(LIST(X1)) Q:X1="" D
  1. .S HFDT=$O(LIST(X1,0))
  1. .Q:HFDT="" ;find latest date (inverse dates)
  1. .S RESULT=$S($G(CAP)=1:"Last "_CTG_" HF: ",1:"")
  1. .S RESULT=RESULT_$$GET1^DIQ(9000010.23,LIST(X1,HFDT),.01)
  1. .S X=$$GET1^DIQ(9000010.23,LIST(X1,HFDT),.04) ;severity level
  1. .S RESULT=RESULT_$S(X]"":" ( "_X_")",1:"")
  1. .S RESULT=RESULT_" - "_$$FMTE^XLFDT(9999999-HFDT)
  1. .S CNT=CNT+1 S @TARGET@(CNT,0)=RESULT
  1. I 'CNT S @TARGET@(1,0)="No Tobacco health factors."
  1. Q "~@"_$NA(@TARGET)
  1. TOBU ;;
  1. ;;TOBACCO (EXPOSURE)
  1. ;;TOBACCO (SMOKELESS - CHEWING/DIP)
  1. ;;TOBACCO (SMOKING)
  1. ;
  1. ACTIVITY(DFN,VISIT) ;EP; returns # of activity minutes for visit in V Activity file
  1. I '$G(VISIT) D I $G(VISIT)<1 Q "Invalid visit"
  1. . I $T(GETVAR^CIAVMEVT)="" Q
  1. . NEW VST
  1. . S VST=$$GETVAR^CIAVMEVT("ENCOUNTER.ID.ALTERNATEVISITID",,"CONTEXT.ENCOUNTER")
  1. . I VST="" Q
  1. . S X="BEHOENCX" X ^%ZOSF("TEST") I $T S VST=+$$VSTR2VIS^BEHOENCX(DFN,VST) I VST<1 Q
  1. . ;S X="CIAVCXEN" X ^%ZOSF("TEST") I $T S VST=+$$VSTR2VIS^CIAVCXEN(DFN,VST) I VST<1 Q
  1. . S VISIT=VST
  1. ;
  1. NEW IEN,X S IEN=$O(^AUPNVTM("AD",VISIT,0)) I 'IEN Q " "
  1. S X=$$GET1^DIQ(9000010.19,IEN,.01)
  1. Q $S(X]"":X_" minutes",1:"")
  1. ;
  1. TRAVEL(DFN,VISIT) ;EP; returns # of travel minutes for visit in V Activity file
  1. I '$G(VISIT) D I $G(VISIT)<1 Q "Invalid visit"
  1. . I $T(GETVAR^CIAVMEVT)="" Q
  1. . NEW VST
  1. . S VST=$$GETVAR^CIAVMEVT("ENCOUNTER.ID.ALTERNATEVISITID",,"CONTEXT.ENCOUNTER")
  1. . I VST="" Q
  1. . S X="BEHOENCX" X ^%ZOSF("TEST") I $T S VST=+$$VSTR2VIS^BEHOENCX(DFN,VST) I VST<1 Q
  1. . ;S X="CIAVCXEN" X ^%ZOSF("TEST") I $T S VST=+$$VSTR2VIS^CIAVCXEN(DFN,VST) I VST<1 Q
  1. . S VISIT=VST
  1. ;
  1. NEW IEN,X S IEN=$O(^AUPNVTM("AD",VISIT,0)) I 'IEN Q ""
  1. S X=$$GET1^DIQ(9000010.19,IEN,.04)
  1. Q $S(X]"":X_" minutes",1:"")
  1. ;
  1. TOTTIME(DFN,VISIT) ;EP; returns total # of minutes (activity & travel)
  1. NEW A,T
  1. I '$G(VISIT) D I $G(VISIT)<1 Q "Invalid visit"
  1. . I $T(GETVAR^CIAVMEVT)="" Q
  1. . NEW VST
  1. . S VST=$$GETVAR^CIAVMEVT("ENCOUNTER.ID.ALTERNATEVISITID",,"CONTEXT.ENCOUNTER")
  1. . I VST="" Q
  1. . S X="BEHOENCX" X ^%ZOSF("TEST") I $T S VST=+$$VSTR2VIS^BEHOENCX(DFN,VST) I VST<1 Q
  1. . S VISIT=VST
  1. ;
  1. S A=$$ACTIVITY($G(DFN),$G(VISIT)),T=$$TRAVEL($G(DFN),$G(VISIT))
  1. Q (A+T)_" minutes"
  1. ;
  1. ;IHS/MSC/MGH Added patch 1010
  1. EDD(DFN) ;EP returns EDD
  1. N REP,EDD,PREG
  1. S PREG=$P($G(^AUPNREP(DFN,11)),U,1)
  1. Q:PREG'="Y" "Patient is not currently pregnant"
  1. S REP=$G(^AUPNREP(DFN,13))
  1. S EDD=$P(REP,U,11)
  1. S EDD=$$FMTDATE^BGOUTL(EDD)
  1. Q "Estimated Due Date: "_EDD
  1. EDDALL(DFN,TARGET) ;Get pregnancy data
  1. N REP,LMP,LMPPR,LMPDT,ULTRA,ULTPR,ULTDT,CLIN,CLINPR,CLINDT,UN,UNPR,UNDT,EDD,EDDPR,EDDDT
  1. N PREG,PREGDT,PREGPR,LMPCO,ULTCO,DEFCO,UNCO,CLINCO,EDDCO
  1. S CNT=0
  1. S REP=$G(^AUPNREP(DFN,13))
  1. S PREG=$P($G(^AUPNREP(DFN,11)),U,1)
  1. ;EDD by LMP
  1. S LMP=$P(REP,U,2)
  1. I LMP'="" S LMP=$$FMTDATE^BGOUTL(LMP)
  1. ;EDD by ultrasound
  1. S ULTRA=$P(REP,U,5)
  1. I ULTRA'="" S ULTRA=$$FMTDATE^BGOUTL(ULTRA)
  1. ;EDD by clinical parameters
  1. S CLIN=$P(REP,U,8)
  1. I CLIN'="" S CLIN=$$FMTDATE^BGOUTL(CLIN)
  1. S EDD=$P(REP,U,11)
  1. I EDD'="" S EDD=$$FMTDATE^BGOUTL(EDD)
  1. ;EDD by unknown methods
  1. S UN=$P(REP,U,14)
  1. I UN'="" S UN=$$FMTDATE^BGOUTL(UN)
  1. I PREG="Y" D
  1. .I LMP'="" D
  1. ..S CNT=CNT+1
  1. ..S @TARGET@(CNT,0)="Due date by LMP: "_LMP
  1. .I ULTRA'="" D
  1. ..S CNT=CNT+1
  1. ..S @TARGET@(CNT,0)="Due date by Ultrasound: "_ULTRA
  1. .I CLIN'="" D
  1. ..S CNT=CNT+1
  1. ..S @TARGET@(CNT,0)="Due date by Clinical Measures: "_CLIN
  1. .I UN'="" D
  1. ..S CNT=CNT+1
  1. ..S @TARGET@(CNT,0)="Due date by Unknown Methods: "_UN
  1. .I EDD'="" D
  1. ..S CNT=CNT+1
  1. ..S @TARGET@(CNT,0)="Definitive EDD: "_EDD
  1. E S CNT=CNT+1 S @TARGET@(CNT,0)="Patient is not currently pregnant"
  1. Q "~@"_$NA(@TARGET)
  1. LACSTAT(DFN) ;Get lactation status
  1. N DATA,LAC,LAC1,LACDATE,TAGE
  1. I $P(^DPT(DFN,0),U,2)="M" S DATA="Patient is male" Q DATA
  1. S TAGE=$$GET1^DIQ(2,DFN,.033)
  1. I TAGE<10!(TAGE>55) S DATA="Patient is too young or old" Q DATA
  1. S LAC=$G(^AUPNREP(DFN,2))
  1. I LAC'="" D
  1. .S LAC1=$$GET1^DIQ(9000017,DFN,2.01)
  1. .I LAC1="" S LAC1="UNKNOWN"
  1. .S LACDATE=$$GET1^DIQ(9000017,DFN,2.02)
  1. .S DATA="Lactation Status: "_LAC1_" ("_LACDATE_")"
  1. E S DATA="No documented lactation status"
  1. Q DATA