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

XUMFHPR.m

Go to the documentation of this file.
  1. XUMFHPR ;OIFO-OAK/RAM - Master File Parameters client Handler ;06/28/00
  1. ;;8.0;KERNEL;**299**;Jul 10, 1995
  1. ;
  1. ; This routine handles Master File Parameters file updates.
  1. ;
  1. MAIN ; -- entry point
  1. ;
  1. N ERR,HLFS,HLCS,ERROR,IEN,KEY,MID,REASON,VALUE
  1. ;
  1. D INIT,PROCESS,EXIT
  1. ;
  1. Q
  1. ;
  1. INIT ; -- initialize
  1. ;
  1. K ^TMP("DILIST",$J),^TMP("DIERR",$J)
  1. K ^TMP("HLS",$J),^TMP("HLA",$J)
  1. ;
  1. S ERROR=0,HLFS=HL("FS"),HLCS=$E(HL("ECH"))
  1. ;
  1. Q
  1. ;
  1. PROCESS ; -- pull message text
  1. ;
  1. F X HLNEXT Q:HLQUIT'>0 D
  1. .Q:$P(HLNODE,HLFS)=""
  1. .D @($P(HLNODE,HLFS))
  1. ;
  1. Q
  1. ;
  1. MSH ; -- MSH segment
  1. ;
  1. Q
  1. ;
  1. MSA ; -- MSA segment
  1. ;
  1. N CODE
  1. ;
  1. S CODE=$P(HLNODE,HLFS,2)
  1. ;
  1. I CODE="AE"!(CODE="AR") D
  1. .S ERROR=ERROR_U_$P(HLNODE,HLFS,4)_U_$G(ERR)
  1. .D EM(ERROR,.ERR)
  1. ;
  1. Q
  1. ;
  1. QRD ; -- QRD segment
  1. ;
  1. Q
  1. ;
  1. MFI ; -- MFI segment
  1. ;
  1. Q
  1. ;
  1. MFE ; -- MFE segment
  1. ;
  1. Q:ERROR
  1. ;
  1. S KEY=$P($P(HLNODE,HLFS,5),HLCS)
  1. ;
  1. S IEN=$$FIND1^DIC(1,,"X",KEY,"B")
  1. ;
  1. I 'IEN D Q
  1. .D EM("Error - no IEN in MFE XUMFH",.ERR)
  1. .K ERR
  1. ;
  1. Q
  1. ;
  1. ZMF ; -- ZMF segment
  1. ;
  1. Q:ERROR
  1. ;
  1. N FDA,IENS,FIELD,ERR,XUMF,SEQ,X
  1. ;
  1. S XUMF=1
  1. ;
  1. K FDA
  1. S IENS=IEN_","
  1. ;
  1. ;zero node
  1. F SEQ=2:1:6 D
  1. .S FIELD=".0"_SEQ
  1. .S VALUE=$P(HLNODE,HLFS,SEQ+1)
  1. .S VALUE=$$DTYP^XUMFP(VALUE,"ST",HLCS,0)
  1. .S FDA(4.001,IENS,FIELD)=VALUE
  1. ;
  1. ;mfe node
  1. F SEQ=1:1:9 D
  1. .S FIELD="4."_SEQ
  1. .S VALUE=$P(HLNODE,HLFS,SEQ+7)
  1. .S VALUE=$$DTYP^XUMFP(VALUE,"ST",HLCS,0)
  1. .S FDA(4.001,IENS,FIELD)=VALUE
  1. F SEQ=1,2,4:1:7 D
  1. .S FIELD="4.1"_SEQ
  1. .S VALUE=$P(HLNODE,HLFS,SEQ+16)
  1. .S VALUE=$$DTYP^XUMFP(VALUE,"ST",HLCS,0)
  1. .S FDA(4.001,IENS,FIELD)=VALUE
  1. ;
  1. D FILE^DIE("E","FDA","ERR")
  1. I $D(ERR) D
  1. .D EM("FILE DIE call error message in ZZZ XUMFHPR",.ERR)
  1. .K ERR
  1. ;
  1. K FDA
  1. S SEQ=0
  1. F S SEQ=$O(^DIC(4.001,IEN,1,SEQ)) Q:'SEQ D
  1. .S IENS=SEQ_","_IEN_","
  1. .S FDA(4.011,IENS,.01)="@"
  1. ;
  1. D FILE^DIE("E","FDA")
  1. ;
  1. Q
  1. ;
  1. ZZS ; -- SEQUENCE segments
  1. ;
  1. Q:ERROR
  1. ;
  1. N FDA,IENS,FIELD,ERR,XUMF,SEQ
  1. ;
  1. S XUMF=1
  1. ;
  1. S IENS="?+"_+$P(HLNODE,HLFS,2)_","_IEN_","
  1. ;
  1. F I=1:1:9 D
  1. .S FIELD=".0"_I
  1. .S VALUE=$P(HLNODE,HLFS,I+1)
  1. .S VALUE=$$DTYP^XUMFP(VALUE,"ST",HLCS,0)
  1. .S FDA(4.011,IENS,FIELD)=VALUE
  1. ;
  1. D UPDATE^DIE("E","FDA",,"ERR")
  1. I $D(ERR) D
  1. .D EM("UPDATE DIE call error message in ZZS XUMFHPR",.ERR)
  1. .K ERR
  1. ;
  1. Q
  1. ;
  1. EXIT ; -- cleanup, and quit
  1. ;
  1. K ^TMP("DILIST",$J),^TMP("DIERR",$J),^TMP("HLS",$J),^TMP("HLA",$J)
  1. K ^TMP("XUMF MFS",$J)
  1. ;
  1. Q
  1. ;
  1. EM(ERROR,ERR,XMSUB,XMY) ; -- error message
  1. ;
  1. N X,XMTEXT
  1. ;
  1. D MSG^DIALOG("AM",.X,80,,"ERR")
  1. ;
  1. S X(.1)="HL7 message ID: "_$G(HL("MID"))
  1. S X(.2)="",X(.3)=$G(ERROR),X(.4)=""
  1. S:$G(XMSUB)="" XMSUB="MFS ERROR"
  1. S XMY("G.XUMF ERROR")="",XMDUZ=.5
  1. S XMTEXT="X("
  1. ;
  1. D ^XMD
  1. ;
  1. Q
  1. ;