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

BEHOCIR.m

Go to the documentation of this file.
  1. BEHOCIR ;MSC/IND/MGH - CCD calls ;03-Dec-2013 13:37;du
  1. ;;1.1;BEH COMPONENTS;**066001**;March 12, 2008;Build 1
  1. ;=================================================================
  1. ;Set entry into the CCD
  1. ;The date/time and user will be associated with all the items in the list
  1. ;Input DATA=IEN of reconciliation entry [1]^ DFN [2] ^ BY [3] ^ IMAGE [4] ^ Source [5]^ Allergy date/time [6] ^ Problem dt/time [7] ^ Medication dt/time [8]
  1. ; List(n)=Type [1] ^ Item [2]
  1. SET(RET,DATA,LIST) ;EP
  1. N BY,NEW,IEN,IENS,FDA,FNUM,BY,SRC,AREC,PREC,MREC,CNT,WHEN
  1. S RET="",NEW=""
  1. S IEN=""
  1. D TOP(.RET,DATA)
  1. Q:+RET=-1
  1. S CNT="" F S CNT=$O(LIST(CNT)) Q:CNT="" D
  1. .D ITEM(IEN,BY)
  1. ;Update the dates of the pieces
  1. S FNUM=90461.63
  1. S IENS=IEN_","
  1. S FDA=$NA(FDA(FNUM,IENS))
  1. S @FDA@(.07)=AREC
  1. S @FDA@(.08)=PREC
  1. S @FDA@(.09)=MREC
  1. D FILE^DIE("E","FDA","ERR")
  1. I $D(ERR("DIERR")) S RET=ERR("DIERR")
  1. I (AREC'="")&(PREC'="")&(MREC'="") D FINISH(IEN)
  1. S RET=IEN
  1. Q
  1. TOP(RET,DATA) ;Get the top entry data and store it
  1. N FNUM,FDA,IENS,ERR,IEN2,DFN,IMG
  1. S IEN=$P(DATA,U,1)
  1. I IEN="" S NEW=1
  1. S DFN=$P(DATA,U,2)
  1. I DFN="" S RET="-1^No patient identified" Q
  1. S BY=$P(DATA,U,3)
  1. I BY="" S BY=$$GET1^DIQ(200,DUZ,.01)
  1. S IMG=$P(DATA,U,4)
  1. ;I IMG="" S RET="-1^No CCDA identified" Q
  1. S SRC=$P(DATA,U,5)
  1. S AREC=$P(DATA,U,6)
  1. S PREC=$P(DATA,U,7)
  1. S MREC=$P(DATA,U,8)
  1. S FNUM=90461.63
  1. S IENS=$S('NEW:IEN_",",1:"+1,")
  1. S FDA=$NA(FDA(FNUM,IENS))
  1. S:NEW @FDA@(.01)=$$NOW^XLFDT
  1. S:NEW @FDA@(.02)=DFN
  1. S @FDA@(.03)=SRC
  1. S @FDA@(.05)=BY
  1. S @FDA@(1.1)=IMG
  1. I NEW D
  1. .D UPDATE^DIE("","FDA","IEN2","ERR")
  1. .I $D(ERR) S RET="-1^Unable to add reconcillation data"
  1. .E S IEN=IEN2(1)
  1. E D
  1. .D FILE^DIE("E","FDA","ERR")
  1. .I $D(ERR("DIERR")) S RET=ERR("DIERR")
  1. Q
  1. ITEM(IEN,BY) ;Store each item
  1. N FDA,DIERR,TYPE,AIEN,IENS,ERR,TIEN
  1. Q:IEN=""
  1. S TYPE=$P(LIST(CNT),U,1)
  1. S TIEN=$P(LIST(CNT),U,2)
  1. S AIEN="+1,"_IEN_","
  1. S FDA=$NA(FDA(90461.632,AIEN))
  1. S @FDA@(.01)=$S(TYPE="A":AREC,TYPE="CA":AREC,TYPE="P":PREC,TYPE="CP":PREC,1:MREC)
  1. S @FDA@(.02)=DUZ
  1. S @FDA@(.03)=TYPE
  1. I TYPE["C" S @FDA@(.05)=TIEN
  1. E S @FDA@(.04)=+TIEN
  1. I AREC'="" S @FDA@(.07)=AREC
  1. I PREC'="" S @FDA@(.08)=PREC
  1. I MREC'="" S @FDA@(.09)=MREC
  1. D UPDATE^DIE("","FDA","IENS","ERR")
  1. S:$G(DIERR) RET=-ERR("DIERR",1)_U_ERR("DIERR",1,"TEXT",1)
  1. Q
  1. FINISH(IEN) ;Mark it reconciled
  1. N FDA,ERR
  1. S FDA=$NA(FDA(90461.63,IEN))
  1. S @FDA@(.04)=1
  1. D UPDATE^DIE("","FDA","","ERR")
  1. Q
  1. ;Get latest reconcilations for a CCDA
  1. ;Input=Image IEN
  1. ;Ouput=Alg date[1] ^ Prob date [2] ^ med date[3] ^ NEW ien [4]
  1. GETCIR(RET,IMAGE) ;Get the reconciliations for a CCDS
  1. N INVA,IEN,FIELD,IDATE,ADATE,PDATE,MDATE,NEW,I
  1. S (ADATE,PDATE,MDATE,NEW)=""
  1. S RET=""
  1. F I="AE","AF","AG" D
  1. .S INVA="" S INVA=$O(^BEHOCIR(I,IMAGE,INVA)) Q:INVA="" D
  1. ..S IEN="" S IEN=$O(^BEHOCIR(I,IMAGE,INVA,IEN)) Q:IEN="" D
  1. ...S FIELD=$S(I="AE":.07,I="AF":.08,I="AG":.09)
  1. ...S IDATE=$$GET1^DIQ(90461.63,IEN,FIELD)
  1. ...I I="AE" S ADATE=IDATE
  1. ...I I="AF" S PDATE=IDATE
  1. ...I I="AG" S MDATE=IDATE
  1. I ADATE=""&(PDATE="")&(MDATE="") D
  1. .S NEW="" S NEW=$O(^BEHOCIR("D",IMAGE,NEW))
  1. S RET=ADATE_U_PDATE_U_MDATE_U_NEW
  1. Q
  1. GETTXT(RET,SNOMED) ;Return text of SNOMED CT
  1. N IN,X,TXT,CODE,DESC
  1. S RET=""
  1. S IN=SNOMED_"^^^1"
  1. S X=$$CONC^BSTSAPI(IN)
  1. S TXT=$P(X,U,4)
  1. S DESC=$P(X,U,3)
  1. S RET=TXT_U_DESC
  1. Q
  1. GETNUM(RET,DFN) ;Return number of CCDAs for a pt
  1. N INVDT,IEN,IMAGE,AREC,PREC,MREC,DCNT,NCNT,ARRAY,DATA,ITYPE
  1. S DCNT=0,NCNT=0
  1. S INVDT=""
  1. F S INVDT=$O(^BEHOCIR("AA",DFN,INVDT)) Q:INVDT="" D
  1. .S IEN="" F S IEN=$O(^BEHOCIR("AA",DFN,INVDT,IEN)) Q:IEN="" D
  1. ..S IMAGE=$P($G(^BEHOCIR(IEN,1)),U,1)
  1. ..Q:IMAGE=""
  1. ..Q:$P($G(^MAG(2005,IMAGE,100)),U,5)'=""
  1. ..S ARRAY(IMAGE)=""
  1. S IMG="" F S IMG=$O(ARRAY(IMG)) Q:IMG="" D
  1. .S DATA=""
  1. .S DCNT=DCNT+1
  1. .D GETCIR(.DATA,IMG)
  1. .I $P(DATA,U,1)'=""&($P(DATA,U,2)'="")&($P(DATA,U,3)'="") S NCNT=NCNT+1
  1. S RET=DCNT_U_NCNT
  1. Q
  1. TMPGBL() ;EP
  1. K ^TMP("BEHCIR",$J) Q $NA(^($J))