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

BTIUPV2.m

Go to the documentation of this file.
  1. BTIUPV2 ; IHS/MSC/MGH - Problem Objects ;16-Aug-2016 12:00;DU
  1. ;;1.0;TEXT INTEGRATION UTILITIES;**1014,1016,1017**;MAR 20, 2013;Build 7
  1. ;4/13/13
  1. ;IHS/MSC/MGH Patch 1016 added normal/abnormal qualifier
  1. ;
  1. Q
  1. VPOV(TARGET) ; returns diagnoses for current vuecentric visit context
  1. ;I $T(GETVAR^CIAVMEVT)="" S @TARGET@(1,0)="Invalid context variables" Q "~@"_$NA(@TARGET)
  1. NEW VST,I,X,CNT,RESULT
  1. S VST=$$GETVAR^CIAVMEVT("ENCOUNTER.ID.ALTERNATEVISITID",,"CONTEXT.ENCOUNTER")
  1. I VST="" S @TARGET@(1,0)="Invalid visit" Q "~@"_$NA(@TARGET)
  1. S X="BEHOENCX" X ^%ZOSF("TEST") I $T S VST=+$$VSTR2VIS^BEHOENCX(DFN,VST) I VST<1 S @TARGET@(1,0)="Invalid visit" Q "~@"_$NA(@TARGET)
  1. D GETPOV(.RESULT,VST)
  1. ;
  1. K @TARGET S CNT=0
  1. S I=0 F S I=$O(RESULT(I)) Q:'I D
  1. .S CNT=CNT+1
  1. .S @TARGET@(CNT,0)=RESULT(I)
  1. I 'CNT S @TARGET@(1,0)="No Diagnoses Found"
  1. Q "~@"_$NA(@TARGET)
  1. ;
  1. GETPOV(RETURN,VIEN) ;return every diagnosis for current visit
  1. ; VISIT=Visit IEN
  1. ;
  1. NEW IEN,AIEN,FNUM,STAT,STRING,CNT,BTIU,LINE,ASTHMA,PCNT,CODE,PAT,CON,NARR,IEN2,Q,ARRAY,ENTER,SNO
  1. K RETURN
  1. ;
  1. S IEN=0 F S IEN=$O(^AUPNVPOV("AD",VIEN,IEN)) Q:'IEN D
  1. . S ASTHMA=0
  1. . S NARR=$$GET1^DIQ(9000010.07,IEN,.04)
  1. . I $P(NARR,"|",1)["*" S NARR=$P(NARR,"|",2)
  1. . I $P(NARR,"|",2)=" " S NARR=$P(NARR,"|",1)
  1. . S STAT=$$GET1^DIQ(9000010.07,IEN,.12,"I")
  1. . S ENTER=$$GET1^DIQ(9000010.07,IEN,1216,"I")
  1. . S ARRAY(STAT,ENTER,NARR,IEN)=""
  1. S STAT="",IEN=0
  1. F S STAT=$O(ARRAY(STAT)) Q:STAT="" D
  1. .S ENTER="" F S ENTER=$O(ARRAY(STAT,ENTER)) Q:ENTER="" D
  1. ..S NARR="" F S NARR=$O(ARRAY(STAT,ENTER,NARR)) Q:NARR="" D
  1. ...S IEN=0 S IEN=$O(ARRAY(STAT,ENTER,NARR,IEN)) Q:IEN="" D ;Only get the first one
  1. .... S CNT=$G(CNT)+1,PCNT=$G(PCNT)+1
  1. .... K BTIU D ENP^XBDIQ1(9000010.07,IEN,".01:.29;1102","BTIU(","IE")
  1. .... S LINE=""
  1. .... I (BTIU(.12)="PRIMARY") S LINE=" [P] " ;mark if primary dx
  1. .... S CODE=$G(BTIU(.01))
  1. .... S SNO=$G(BTIU(1102))
  1. .... S ASTHMA=$$CHECK^BGOASLK(CODE,SNO)
  1. .... I +ASTHMA D
  1. ..... S PAT=BTIU(.02,"I")
  1. ..... S CON=$$ACONTROL^BTIULO5(PAT)
  1. ..... I CON'="" S LINE=LINE_" Control: "_CON
  1. .... F I=.06,.05,.09,.13,.11,.29 D ;check for other fields
  1. ..... I (I=.09),BTIU(.09)]"" S LINE=LINE_"; "_$$ECODE^BTIULO5(IEN) Q
  1. ..... I BTIU(I)]"" S LINE=LINE_"; "_BTIU(I)
  1. .... S RETURN(CNT)=$J(PCNT,2)_") "_NARR_LINE
  1. .... ;Return qualifiers
  1. ....F X=13,17,18,14 D
  1. .....S STRING=""
  1. .....S IEN2=0 F S IEN2=$O(^AUPNVPOV(IEN,X,IEN2)) Q:'+IEN2 D
  1. ......S Q=""
  1. ......S FNUM=$S(X=13:9000010.0713,X=17:9000010.0717,X=18:9000010.0718,X=14:9000010.0714)
  1. ......S AIEN=IEN2_","_IEN_","
  1. ......S Q=$$GET1^DIQ(FNUM,AIEN,.01)
  1. ......S Q=$P($$CONC^BSTSAPI(Q_"^^^1"),U,4)
  1. ......S STRING=$S(STRING="":Q,1:STRING_" "_Q)
  1. .....I STRING'="" D
  1. ......S CNT=CNT+1
  1. ......S RETURN(CNT)=" "_STRING
  1. Q
  1. ;
  1. VOB(DFN,PRIEN,VIEN,CNT) ; V OB notes by date
  1. N INVDT,IEN,EDATE,SIGN,STAT,FOUND,SDATE,EIE,SIGNDT,VSCNT
  1. S FOUND=0,SDATE="",VSCNT=0
  1. S VIEN=$G(VIEN)
  1. S INVDT="" F S INVDT=$O(^AUPNVOB("AE",DFN,PRIEN,INVDT)) Q:INVDT=""!(FOUND=1) D
  1. .I +SDATE,SDATE'=$P(INVDT,".",1) S FOUND=1
  1. .S IEN="" F S IEN=$O(^AUPNVOB("AE",DFN,PRIEN,INVDT,IEN)) Q:IEN="" D
  1. ..S EIE=$$GET1^DIQ(9000010.43,IEN,.06,"I")
  1. ..Q:EIE=1
  1. ..S STAT=$P($G(^AUPNPROB(PRIEN,0)),U,12)
  1. ..Q:STAT="D"
  1. ..Q:+VIEN&(VIEN'=$P($G(^AUPNVOB(IEN,0)),U,3))
  1. ..I VSCNT=0 S VSCNT=VSCNT+1 D ADD(" -OB NOTE:")
  1. ..S EDATE=9999999-INVDT
  1. ..S EDATE=$$FMTE^XLFDT($P(EDATE,".",1),5)
  1. ..S SIGNDT=$$GET1^DIQ(9000010.43,IEN,.05,"I")
  1. ..S SIGNDT=$$FMTE^XLFDT($P(SIGNDT,".",1),5)
  1. ..S SIGN=$$GET1^DIQ(9000010.43,IEN,.04,"E")
  1. ..D TEXT2(IEN)
  1. Q
  1. ADD(DATA) ;add to list
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)=DATA
  1. Q
  1. TEXT2(IEN) ;do the text
  1. N TXTIEN,WRAP,TXT,PRNT2,PRNT
  1. S (PRNT,PRNT2,WRAP)=""
  1. S TXTIEN=0 F S TXTIEN=$O(^AUPNVOB(IEN,11,TXTIEN)) Q:'+TXTIEN D
  1. .S TXT=$G(^AUPNVOB(IEN,11,TXTIEN,0))
  1. .S PRNT=PRNT2_TXT S PRNT2=""
  1. .I $L(PRNT)>500 S PRNT2=$E(PRNT,501,$L(PRNT))
  1. .D WRAP^BTIUPV1(.WRAP,PRNT,70)
  1. ;Process each wrapped line
  1. I $D(WRAP)>1 D PROC(.WRAP)
  1. Q
  1. PROC(WRAP) ;Process the word wrap
  1. N I,LINE
  1. F I=1:1:WRAP D
  1. .I I=WRAP D
  1. ..I $L(WRAP(I))<45 D
  1. ...S LINE=" "_$G(WRAP(I))_" ("_SIGNDT_" by "_SIGN_")"
  1. ...D ADD(LINE)
  1. ..E D
  1. ...D ADD(" "_$G(WRAP(I)))
  1. ...D ADD(" ("_SIGNDT_" by "_SIGN_")")
  1. .E D ADD(" "_$G(WRAP(I)))
  1. Q