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

BEHODC7.m

Go to the documentation of this file.
  1. BEHODC7 ;MSC/IND/MGH - TIU Dictation Support ;20-Mar-2007 13:48;DKM
  1. ;;1.1;BEH COMPONENTS;**001001**;Mar 20, 2007
  1. ;=================================================================
  1. ;This is the main processing routine of the message that was
  1. ;received through HL7 and is intended to be stored in TIU
  1. ;=================================================================
  1. PROCESS ;EP - Get message one line at a time
  1. N BEHDOC,BEHDOCID,BEHTEMP,ERRTX,BEHORIFN,X,J,DTO,DATE,Y,SEP,LINE
  1. N BEHEXAM,%,NEXT,SET,SUCCESS,HLMG,BEHTYPE,BEHSTAT,BEHID
  1. N BEHLOC,BEHDATE,BEHFILER,BEHPLACE,BEHREC,BEHI,BEHCASE,BEHSTORE
  1. N TIUPT,TIUDOC,TITLE,SEQ
  1. S ERRTX=""
  1. S X=$G(MSG(BEHNUM)) I $E(X,1,3)'="PID" S ERRTX="PID not second record." D BOTH^BEHODC8("",EVNDT,ERRTX) G KIL^BEHODC6
  1. ;Get patient IEN
  1. D PID^BEHODC6
  1. I DFN>0 D
  1. . S BEHNUM=BEHNUM+1
  1. .I $E(MSG(BEHNUM),1,3)="ORC" D
  1. ..D ORC
  1. Q
  1. ORC ; Check ORC
  1. ;==================================================================
  1. S X=$G(MSG(BEHNUM))
  1. I $E(X,1,3)'="ORC" S ERRTX="ORC not found when expected. Contact IRM or Proscribe" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S BEHID=$P(X,HLFS,3) ;This is the unique TIU IEN sent over
  1. S BEHNUM=BEHNUM+1
  1. OBR ; Check OBR
  1. ;====================================================================
  1. ;The items needed from the OBR are:
  1. ;1) The unique document ID
  1. ;2) The author and signer of the note
  1. ;3) The note title
  1. ;===================================================================
  1. N BEHNEW,BEHPLACE,BEHFILER,BEHSIGN,BEHSDOC,BEHUTHOR,BEHUTHID,BEHSTAT
  1. S BEHNEW=0
  1. S X=$G(MSG(BEHNUM))
  1. S SEG("OBR")=X
  1. I $E(X,1,3)'="OBR" S ERRTX="OBR not found when expected. Contact IRM or Proscribe" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S BEHSTAT=$P(X,HLFS,26)
  1. ;Only accept final versions
  1. I (BEHSTAT'="F")&(BEHSTAT'="C") S ERRTX="Report send was not a final version. Please resend" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S TIUDA=$P(X,HLFS,3) ; This is the TIU IEN send over
  1. I TIUDA="" S ERRTX="No unique note number was sent across. Resend message" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S BEHPLACE=$P(X,HLFS,3),BEHFILER=$P(X,HLFS,4)
  1. ;=================================================================
  1. ;Find the author and the signer of the note
  1. ;=================================================================
  1. S BEHSIGN=$P($G(X),HLFS,33) I BEHSIGN'="" S BEHDOCID=$P(BEHSIGN,HLSUB,1)
  1. I '$D(^VA(200,BEHDOCID,0)) S ERRTX="Signer ID "_BEHDOCID_" not valid in "_$$AGTEXT()_". Call IRM and check data." D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S BEHUTHOR=$P($G(X),HLFS,34) I BEHUTHOR'="" S BEHUTHID=$P(BEHUTHOR,HLSUB,1)
  1. I '$D(^VA(200,BEHUTHID,0)) S ERRTX="Author ID "_BEHUTHID_" not valid in "_$$AGTEXT()_". Call IRM and check data." D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S TIUX(1202)=BEHDOCID
  1. S TIUX(1204)=BEHUTHID
  1. ;====================================================================
  1. ;Get the title of the note
  1. ;===================================================================
  1. S (BEHEXAM,%)=$P(X,HLFS,5)
  1. I $P(BEHEXAM,HLCOMP,2)="TIU Note" S TIUEXAM="TIU Note"
  1. E D
  1. .I BEHEXAM'="" S TIUTITLE=$P(%,HLCOMP,2) I BEHEXAM="" S TIUTITLE=$P(%,HLCOMP,1)
  1. .I TIUTITLE'="" S TIUTITLE=$$UPPER^TIULS(TIUTITLE) S TIUEXAM=$O(^TIU(8925.1,"B",TIUTITLE,0))
  1. .I TIUTITLE="" S ERRTX="No title given to this exam. Please resend" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. ;Compare with the found results
  1. ;=======================================================================
  1. ;Check the data in the note IEN against the data in the message
  1. ;Make sure that the patient, author and title match
  1. ;=======================================================================
  1. S TIUX(.03)=$P($G(^TIU(8925,TIUDA,0)),U,3)
  1. S TIUPT=$P($G(^TIU(8925,TIUDA,0)),U,2)
  1. ;Title from TIU document
  1. S TIUDOC=$P($G(^TIU(8925,TIUDA,0)),U,1)
  1. I TIUEXAM'="TIU Note" D
  1. .I TIUDOC'=TIUEXAM S ERRTX="Document titles do not match" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S TIUAUTH=$P($G(^TIU(8925,TIUDA,12)),U,2)
  1. I TIUPT'=DFN S ERRTX="Patients do not match. resend document" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. I TIUAUTH'=BEHUTHID S ERRTX="The autors of the documents do not match" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S BEHNUM=BEHNUM+1
  1. I ERRTX'="" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) Q
  1. OBX ; Process OBX
  1. S BEHI=0
  1. S X=$G(MSG(BEHNUM))
  1. S SEG("OBX")=X
  1. I $E(X,1,3)'="OBX" S ERRTX="OBX not found when expected. Contact IRM" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. S BEHI=1
  1. D GETOBX
  1. Q
  1. NEXT S BEHNUM=BEHNUM+1
  1. I '$D(MSG(BEHNUM)) G UPDATE
  1. I $E(MSG(BEHNUM),1,3)="OBX" G GETOBX^BEHODC7
  1. E S ERRTX="UNKNOWN MESSAGE SEGMENT" D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. Q
  1. GETOBX ;EP - Get the OBX data to store
  1. S SEQ=$P(MSG(BEHNUM),HLFS,2)
  1. S LINE=$P(MSG(BEHNUM),HLFS,6)
  1. I BEHI=SEQ D
  1. .I LINE="" S LINE=" "
  1. .S TIUX("TEXT",BEHI,0)=LINE
  1. .S BEHI=BEHI+1
  1. G NEXT
  1. Q
  1. UPDATE ;End of text; call routine to file data
  1. ;Since the stub of the note was already created in the EHR
  1. ;this is only an update. The text of the note will be replaced
  1. ;if the note is unsigned. If the note was signed, the text will become an addendum
  1. ;======================================================================
  1. D UPDATE^TIUSRVP(.SUCCESS,TIUDA,.TIUX,"")
  1. I $P(SUCCESS,"^",1)>0 D
  1. .S HLMG=SUCCESS
  1. .S TIUD0=$G(^TIU(8925,SUCCESS,0))
  1. .I +$P(TIUD0,U,5)<5 D UPDSTAT^TIUSRVP(SUCCESS,+$G(TIUD0))
  1. .D SEND^TIUALRT(SUCCESS)
  1. E S ERRTX=$P(SUCCESS,"^",2) D BOTH^BEHODC8(DFN,EVNDT,ERRTX) G KIL^BEHODC6
  1. D GENACK^BEHODC8
  1. D KIL
  1. Q
  1. KIL ; Kill Variables
  1. G KIL^BEHODC6
  1. ; Return Agency specific text
  1. AGTEXT() ; EP
  1. Q $S($P($G(^XTV(8989.3,1,0)),U,8)="I":"RPMS",1:"VISTA")