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

VAQFIL10.m

Go to the documentation of this file.
  1. VAQFIL10 ;ALB/JRP - MESSAGE FILING;12-MAY-93
  1. ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
  1. ;INPUT : MESSNUM - Message number in transmission (not XMZ)
  1. ; (defaults to 1)
  1. ; PARSARR - Parsing array (full global reference)
  1. ; (As defined by MailMan)
  1. ; XMFROM, XMREC,XMZ
  1. ;OUTPUT : N^New_Flag - Success
  1. ; N = Transaction the header was filed in
  1. ; New_Flag = 1 if a new transaction was created
  1. ; = 0 if an existing transaction was used
  1. ; -1^Error_Text - Error
  1. ;NOTES : If a new transaction is created and an error occurs, the
  1. ; new transaction will be deleted.
  1. ; : If an existing transaction is updated and an error occurs,
  1. ; it is the responsibility of the calling program to correct
  1. ; the transaction.
  1. ;
  1. ;CHECK INPUT
  1. S:($G(MESSNUM)="") MESSNUM=1
  1. Q:($G(PARSARR)="") "-1^Did not pass reference to parsing array"
  1. Q:('$D(@PARSARR@(MESSNUM))) "-1^Did not pass valid message number"
  1. Q:('$D(@PARSARR@(MESSNUM,"HEADER",1))) "-1^Message did not contain a header block"
  1. ;DECLARE VARIABLES
  1. N TMP,TYPE,STATUS,VERSION,DATETIME,MESSXMZ,TRANSNUM,ENCMTHD
  1. N TRANPTR,ERR,NEWTRAN
  1. S NEWTRAN=0
  1. ;MAKE SURE IT'S A HEADER BLOCK
  1. S TMP=$G(@PARSARR@(MESSNUM,"HEADER",1,1))
  1. S:(TMP=" ") TMP=""
  1. Q:((TMP="")!(TMP'="$HEADER")) "-1^Not a header block"
  1. S TMP=$G(@PARSARR@(MESSNUM,"HEADER",1,9))
  1. S:(TMP=" ") TMP=""
  1. Q:((TMP="")!(TMP'="$$HEADER")) "-1^Not a valid header block"
  1. ;GET MESSAGE TYPE
  1. S TYPE=$G(@PARSARR@(MESSNUM,"HEADER",1,2))
  1. S:(TYPE=" ") TYPE=""
  1. Q:(TYPE="") "-1^Header did not contain message type"
  1. S TMP="^REQ^RES^UNS^ACK^RET^"
  1. Q:(TMP'[("^"_TYPE_"^")) "-1^Header did not contain valid message type"
  1. ;GET STATUS
  1. S STATUS=$G(@PARSARR@(MESSNUM,"HEADER",1,3))
  1. S:(STATUS=" ") STATUS=""
  1. Q:(STATUS="") "-1^Header did not contain status"
  1. S TMP="^VAQ-AMBIG^VAQ-NTFND^VAQ-REJ^VAQ-RQACK^VAQ-RQST^VAQ-RSLT^VAQ-RTRNS^VAQ-UNACK^VAQ-UNSOL^"
  1. Q:(TMP'[("^"_STATUS_"^")) "-1^Header did not contain valid status"
  1. ;GET VERSION NUMBER (DEFAULTS TO 1.5)
  1. S VERSION=$G(@PARSARR@(MESSNUM,"HEADER",1,4))
  1. S:(VERSION=" ") VERSION=""
  1. S:(VERSION="") VERSION=1.5
  1. ;GET DATE/TIME OF TRANSMISSION (DEFAULT TO NOW)
  1. S DATETIME=$G(@PARSARR@(MESSNUM,"HEADER",1,5))
  1. S:(DATETIME=" ") DATETIME=""
  1. I (DATETIME="") S DATETIME=$$NOW^VAQUTL99() Q:($P(DATETIME,"^",1)="-1") "-1^Could not determine transmission time of message"
  1. ;CHECK DATE/TIME FOR CORRECTNESS
  1. S DATETIME=$$CHCKDT^VAQUTL95(DATETIME)
  1. Q:(DATETIME="-1") "-1^Could not determine transmission time of message"
  1. ;GET MESSXMZ OF MESSAGE (DEFAULTS TO XMZ)
  1. S MESSXMZ=$G(@PARSARR@(MESSNUM,"HEADER",1,6))
  1. S:(MESSXMZ=" ") MESSXMZ=""
  1. S:(MESSXMZ="") MESSXMZ=$G(XMZ)
  1. ;GET TRANSACTION NUMBER
  1. S TRANSNUM=$G(@PARSARR@(MESSNUM,"HEADER",1,7))
  1. S:(TRANSNUM=" ") TRANSNUM=""
  1. Q:((TRANSNUM="")&(VERSION'=1)) "-1^Transaction number not passed in header block"
  1. ;GET ENCRYPTION METHOD
  1. S ENCMTHD=$G(@PARSARR@(MESSNUM,"HEADER",1,8))
  1. S:(ENCMTHD=" ") ENCMTHD=""
  1. I (ENCMTHD'="") Q:('$D(^VAT(394.72,"B",ENCMTHD))) "-1^Encryption method used not supported at this facility"
  1. ;MAKE ENTRY IN TRANSACTION FILE
  1. I ((TYPE="REQ")!(TYPE="UNS")) D Q:((+TRANPTR)<0) "-1^Unable to create entry in transaction file"
  1. .S NEWTRAN=1
  1. .S TRANPTR=$$NEWTRAN^VAQFILE
  1. .Q:((+TRANPTR)<0)
  1. .S TRANPTR=+TRANPTR
  1. ;FIND ENTRY IN TRANSACTION FILE
  1. I ((TYPE="RES")!(TYPE="ACK")!(TYPE="RET")) D Q:('TRANPTR) "-1^Could not find entry in transaction file"
  1. .S TRANPTR=+$O(^VAT(394.61,"B",TRANSNUM,""))
  1. Q:('$G(TRANPTR)) "-1^Unable to create/find entry in transaction file"
  1. ;FILE INFORMATION
  1. S ERR=0
  1. D HEADER^VAQFIL11
  1. Q:(ERR) ERR
  1. Q TRANPTR_"^"_NEWTRAN