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

BTIUPDD.m

Go to the documentation of this file.
  1. BTIUPDD ; IHS/MSC/MGH - Problem Objects ;12-Jul-2016 17:33;MGH
  1. ;;1.0;TEXT INTEGRATION UTILITIES;**1012,1013,1014,1016,1017**;MAR 20, 2013;Build 7
  1. ;4/13/13
  1. ;
  1. Q
  1. ;
  1. DETAIL(DFN,TARGET,TYPE,ACT,NUM) ; Get problem details
  1. N PROB,CNT,RET,PRIEN,I,STAT
  1. K @TARGET
  1. I $G(TYPE)="" S TYPE="ASEO"
  1. I $G(ACT)="" S ACT="L"
  1. ;For Visit instructions and treatments, the default is the latest visit
  1. I $G(NUM)="" S NUM=1
  1. S RET=""
  1. S (CNT,PRIEN)=0
  1. F S PRIEN=$O(^AUPNPROB("AC",DFN,PRIEN)) Q:'PRIEN D
  1. .;Check for which statuses to return
  1. .S STAT=$P($G(^AUPNPROB(PRIEN,0)),U,12)
  1. .Q:STAT="D"
  1. .Q:TYPE'[STAT
  1. .D DETAIL^BGOPRDD(.RET,PRIEN,DFN,"A",100,"") ;Get a detail report on one problem
  1. .S I=0 F S I=$O(@RET@(I)) Q:I="" D
  1. ..S CNT=CNT+1
  1. ..S @TARGET@(CNT,0)=@RET@(I)
  1. .K RET
  1. I CNT=0 S @TARGET@(1,0)="No active problems"
  1. Q "~@"_$NA(@TARGET)
  1. ;
  1. ;Get the problems associated with this visit and only the latest or items updated during this visit
  1. VST(DFN,TARGET,VIEN,CP) ;Problems updated this visit
  1. N PROB,CNT,RET,PRIEN,I,VST,ARRAY
  1. S CNT=0,CP=$G(CP),ARRAY=""
  1. K @TARGET
  1. S VIEN=$G(VIEN)
  1. I VIEN'="" G GETPRB
  1. S VST=$$GETVAR^CIAVMEVT("ENCOUNTER.ID.ALTERNATEVISITID",,"CONTEXT.ENCOUNTER")
  1. I VST="" S @TARGET@(1,0)="Invalid visit" Q "~@"_$NA(@TARGET)
  1. S VIEN=+$$VSTR2VIS^BEHOENCX(DFN,VST) I VST<1 S @TARGET@(1,0)="Invalid context variables" Q "~@"_$NA(@TARGET)
  1. D GETPRB
  1. I CNT=0 S @TARGET@(1,0)="No Problems used as POVs in this visit record"
  1. Q "~@"_$NA(@TARGET)
  1. ;
  1. GETPRB ;Get problems to update
  1. I $G(VIEN)="" S @TARGET@(1,0)="Invalid visit" Q "~@"_$NA(@TARGET)
  1. S PRIEN=0
  1. F S PRIEN=$O(^AUPNPROB("AC",DFN,PRIEN)) Q:'PRIEN D
  1. .;Check for which statuses to return
  1. .S STAT=$P($G(^AUPNPROB(PRIEN,0)),U,12)
  1. .Q:STAT="D"
  1. .I $D(^AUPNPROB(PRIEN,14,"B",VIEN)) D
  1. ..D GETDATA(.ARRAY,PRIEN,VIEN)
  1. ;IHS/MSC/MGH Patch 1014
  1. D ADDITEMS(.ARRAY)
  1. Q
  1. GETDATA(ARRAY,PRIEN,VIEN) ;Get data for a problem
  1. N NARR,STATUS,ICD,POVNAR
  1. S POVNAR=$$POV^BTIUPDD(VIEN,PRIEN)
  1. S NARR=$$GET1^DIQ(9000011,PRIEN,.05)
  1. S ARRAY($P(POVNAR,U,2),NARR,PRIEN)=$P(POVNAR,U,1)
  1. Q
  1. ADDITEMS(ARRAY) ;Add the other pieces to display
  1. N NARR,STATUS,ICD,POVNAR,STAT,PRIEN
  1. S STAT="" F S STAT=$O(ARRAY(STAT)) Q:STAT="" D
  1. .S NARR="" F S NARR=$O(ARRAY(STAT,NARR)) Q:NARR="" D
  1. ..S PRIEN="" F S PRIEN=$O(ARRAY(STAT,NARR,PRIEN)) Q:PRIEN="" D
  1. ...S POVNAR=$G(ARRAY(STAT,NARR,PRIEN))
  1. ...S STATUS=$$GET1^DIQ(9000011,PRIEN,.12)
  1. ...S ICD=$$GET1^DIQ(9000011,PRIEN,.01)
  1. ...D ADD("Problem: "_NARR)
  1. ...;Find changed narrative
  1. ...D ADD(" POV : "_POVNAR_"("_STAT_")")
  1. ...D ADD(" Status: "_STATUS)
  1. ...;D ADD(" Mapped ICD: "_ICD_" Status: "_STATUS)
  1. ...D QUAL^BTIUPV1(PRIEN,.CNT)
  1. ...I CP=1 D
  1. ....D FINDCP^BTIUPV1(PRIEN,"G",.CNT) ;Add goals
  1. ....D FINDCP^BTIUPV1(PRIEN,"P",.CNT) ;Add care plans
  1. ...D VIDT^BTIUPV1(PRIEN,VIEN,.CNT) ;Visit instruction
  1. ...D VTRDT^BTIUPV1(PRIEN,VIEN,.CNT) ;V treatment/regimens
  1. ...D REFDT^BTIUPV1(PRIEN,VIEN,.CNT) ;V REFERRALS
  1. ...D EDU^BTIUPV1(PRIEN,VIEN,.CNT) ;V education by date
  1. Q
  1. ADD(DATA) ;add to list
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)=DATA
  1. Q
  1. POV(VIEN,PRIEN) ;Check to see if POV narrative is different from problem narrative
  1. ;IHS/MSC/MGH added normal/abnormal qualifier
  1. N POV,POVIEN,MATCH,PRIM,NORM,STR,ENTRY
  1. S MATCH=0,POV=""
  1. S POVIEN="",STR=""
  1. F S POVIEN=$O(^AUPNVPOV("AD",VIEN,POVIEN)) Q:POVIEN=""!(MATCH=1) D
  1. .I $P($G(^AUPNVPOV(POVIEN,0)),U,16)=PRIEN S MATCH=1
  1. .S POV=$$GET1^DIQ(9000010.07,POVIEN,.04)
  1. .S PRIM=$$GET1^DIQ(9000010.07,POVIEN,.12,"I")
  1. .I PRIM="" S PRIM="S"
  1. .S NORM=$$GET1^DIQ(9000010.07,POVIEN,.29,"E")
  1. .S ENTRY=$$GET1^DIQ(9000010.07,POVIEN,1216,"I")
  1. .I NORM="" S STR=POV_U_PRIM_U_ENTRY
  1. .I NORM'="" S STR=POV_";"_NORM_U_PRIM_U_ENTRY
  1. Q STR
  1. TMPGBL(X) ;EP
  1. K ^TMP("BGOPRDD",$J) Q $NA(^($J))