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

VAQCON0.m

Go to the documentation of this file.
  1. VAQCON0 ;ALB/JRP - MESSAGE CONSTRUCTION;14-APR-93
  1. ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
  1. MESSAGE(TRANPTR,ROOT,MESSNUM,ARRAY,OFFSET) ;BUILD MESSAGE FOR TRANSACTION
  1. ;INPUT : TRANPTR - Pointer to VAQ - TRANSACTION file
  1. ; ROOT - Location of Extraction Arrays (full global reference)
  1. ; MESSNUM - Message number to place message into
  1. ; (if 0, message will be placed in ARRAY)
  1. ; ARRAY - Array to store message in (full global reference)
  1. ; OFFSET - Where to begin placing information (defaults to 0)
  1. ;OUTPUT : N - Number of lines in message
  1. ; -1^Error_Text - Error
  1. ;NOTES : If MESSNUM=0, then the message will be placed into
  1. ; ARRAY(LineNumber)=Line_of_info
  1. ; If MESSNUM>0 then the message will be placed into
  1. ; ^XMB(3.9,MESSNUM,2,LineNumber,0)=Line_of_info
  1. ; : The first subscript in ROOT must be the segment abbreviation
  1. ; (i.e. ROOT(SegmentAbbreviation)). This is required to
  1. ; identify the segment contained in a DATA or DISPLAY block.
  1. ;
  1. ;CHECK INPUT
  1. S TRANPTR=+$G(TRANPTR)
  1. Q:(('TRANPTR)!('$D(^VAT(394.61,TRANPTR)))) "-1^Did not pass a valid pointer to VAQ - TRANSACTION file"
  1. S ROOT=$G(ROOT)
  1. S MESSNUM=+$G(MESSNUM)
  1. I (('MESSNUM)&($G(ARRAY)="")) Q "-1^Did not pass message number or reference to array"
  1. I (MESSNUM) Q:('$D(^XMB(3.9,MESSNUM))) "-1^Valid message number not passed"
  1. S OFFSET=+$G(OFFSET)
  1. ;DECLARE VARIABLES
  1. N TMP,X,Y,TMPROOT,LINE,TYPE,SEG,STATUS
  1. S LINE=OFFSET
  1. ;GET MESSAGE STATUS & TYPE
  1. S TMP=$$STATYPE^VAQCON1(TRANPTR)
  1. Q:($P(TMP,"^",1)="-1") TMP
  1. S STATUS=$P(TMP,"^",1)
  1. S TYPE=$P(TMP,"^",2)
  1. Q:(TYPE="REC") "-1^Transaction is being received, not transmitted"
  1. ;START PDX MESSAGE
  1. S TMP="$MESSAGE"
  1. S:('MESSNUM) @ARRAY@(LINE)=TMP
  1. S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
  1. S LINE=LINE+1
  1. ;HEADER BLOCK
  1. S TMP=$$HEADER^VAQCON2(TRANPTR,MESSNUM,ARRAY,LINE)
  1. Q:(+TMP=-1) TMP
  1. S LINE=LINE+TMP
  1. ;DOMAIN BLOCK
  1. S TMP=$$DOMAIN^VAQCON4(TRANPTR,MESSNUM,ARRAY,LINE)
  1. Q:(+TMP=-1) TMP
  1. S LINE=LINE+TMP
  1. ;ACK & RE-TRANSMIT COMPLETED
  1. G:((TYPE="ACK")!(TYPE="RET")) MESSDONE
  1. ;USER BLOCK
  1. S TMP=$$USER^VAQCON3(TRANPTR,MESSNUM,ARRAY,LINE)
  1. Q:(+TMP=-1) TMP
  1. S LINE=LINE+TMP
  1. ;PATIENT BLOCK
  1. S TMP=$$PATIENT^VAQCON6(TRANPTR,MESSNUM,ARRAY,LINE)
  1. Q:(+TMP=-1) TMP
  1. S LINE=LINE+TMP
  1. ;SEGMENT BLOCK
  1. S TMP=$$SEGMENT^VAQCON5(TRANPTR,MESSNUM,ARRAY,LINE)
  1. Q:(+TMP=-1) TMP
  1. S LINE=LINE+TMP
  1. ;REQUEST COMPLETED
  1. G:(TYPE="REQ") MESSDONE
  1. ;COMMENT BLOCK
  1. S TMP=$$COMMENT^VAQCON4(TRANPTR,MESSNUM,ARRAY,LINE)
  1. Q:(+TMP=-1) TMP
  1. S LINE=LINE+TMP
  1. ;PROCESSED REQUEST WITH NO DATA COMPLETED
  1. I (TYPE="RES") G:((STATUS="VAQ-AMBIG")!(STATUS="VAQ-NTFND")!(STATUS="VAQ-REJ")) MESSDONE
  1. ;DATA BLOCKS
  1. S SEG=""
  1. I (ROOT'="") F S SEG=$O(@ROOT@(SEG)) Q:(SEG="") I $D(@ROOT@(SEG,"VALUE")) D Q:(+TMP=-1)
  1. .;PLACE SEGMENT ABBREVIATION INTO ROOT
  1. .S TMP=$P(ROOT,"(",1)
  1. .S X=$P(ROOT,"(",2)
  1. .S Y=$P(X,")",1)
  1. .S:(Y="") TMPROOT=TMP_"("_$C(34)_SEG_$C(34)_")"
  1. .S:(Y'="") TMPROOT=TMP_"("_Y_","_$C(34)_SEG_$C(34)_")"
  1. .S:(ROOT="") TMPROOT=""
  1. .S TMP=$$DATA^VAQCON7(TRANPTR,SEG,TMPROOT,MESSNUM,ARRAY,LINE)
  1. .Q:(+TMP=-1)
  1. .S LINE=LINE+TMP
  1. Q:(+TMP=-1) TMP
  1. ;DISPLAY BLOCKS
  1. S SEG=""
  1. I (ROOT'="") F S SEG=$O(@ROOT@(SEG)) Q:(SEG="") I $D(@ROOT@(SEG,"DISPLAY")) D Q:(+TMP=-1)
  1. .;PLACE SEGMENT ABBREVIATION INTO ROOT
  1. .S TMP=$P(ROOT,"(",1)
  1. .S X=$P(ROOT,"(",2)
  1. .S Y=$P(X,")",1)
  1. .S:(Y="") TMPROOT=TMP_"("_$C(34)_SEG_$C(34)_")"
  1. .S:(Y'="") TMPROOT=TMP_"("_Y_","_$C(34)_SEG_$C(34)_")"
  1. .S:(ROOT="") TMPROOT=""
  1. .S TMP=$$DISPLAY^VAQCON8(TRANPTR,SEG,TMPROOT,0,"",MESSNUM,ARRAY,LINE)
  1. .Q:(+TMP=-1)
  1. .S LINE=LINE+TMP
  1. Q:(+TMP=-1) TMP
  1. MESSDONE ;END PDX MESSAGE
  1. S TMP="$$MESSAGE"
  1. S:('MESSNUM) @ARRAY@(LINE)=TMP
  1. S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
  1. S LINE=LINE+1
  1. Q (LINE-OFFSET)