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

VAQPAR11.m

Go to the documentation of this file.
  1. VAQPAR11 ;ALB/JRP - MESSAGE PARSING;10-MAY-93
  1. ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
  1. DATA10(ARRAY,BLOCK,BLOCKNUM) ;PARSE DATA BLOCKS FOR 1.0 MESSAGE
  1. ;INPUT : ARRAY - Array containing pre-parsed version 1.0 transmission
  1. ; (full global reference)
  1. ; BLOCK - Version 1.0 block name (MIN,MAS,PHA)
  1. ; BLOCKNUM - Block sequence number (defaults to 1)
  1. ; (As defined by MailMan)
  1. ; XMFROM, XMREC, XMZ
  1. ; (Declared in SERVER^VAQADM2)
  1. ; XMER, XMRG, XMPOS
  1. ;OUTPUT : XMER - Exit condition
  1. ; 0 = Success
  1. ; -1^Error_Text = Error
  1. ; Parsed array will be same as parsed array for version
  1. ; 1.5 message and have the format:
  1. ; ARRAY(2,"DATA",BLOCKNUM,Line)
  1. ;
  1. ;CHECK INPUT
  1. I ($G(ARRAY)="") S XMER="-1^Did not pass reference to parsing array" Q
  1. I ('$D(@ARRAY@(1))) S XMER="-1^Parsing array did not contain pre-parsed transmission" Q
  1. I ($G(BLOCK)="") S XMER="-1^Did not pass data block name" Q
  1. I ((BLOCK'="MIN")&(BLOCK'="MAS")&(BLOCK'="PHA")) S XMER="-1^Did not pass valid version 1.0 data block name" Q
  1. S:($G(BLOCKNUM)="") BLOCKNUM=1
  1. ;DECLARE VARIABLES
  1. N LINE,X,Y,TMP,OFFSET,FILE,FIELD,FIELDS,VALUES,SEQ,TMPARR
  1. N FLDCNT,VALCNT,LOOP1,LOOP2,REPCNT,ID,PATNAME,RXNUM,VALUE
  1. ;GET PATIENT'S NAME
  1. S PATNAME=$G(@ARRAY@(2,"PATIENT",1,3))
  1. I (PATNAME="") S XMER="-1^Patient's name was not contained in the transmission" Q
  1. ;SET UP TEMPORARY PARSING ARRAY
  1. S TMP=$P(ARRAY,"(",1)
  1. S X=$P(ARRAY,"(",2)
  1. S Y=$P(X,")",1)
  1. S:(Y="") TMPARR=TMP_"("_3_")"
  1. S:(Y'="") TMPARR=TMP_"("_Y_","_3_")"
  1. K @TMPARR
  1. S XMER=0
  1. ;LINE 1
  1. S @ARRAY@(2,"DATA",BLOCKNUM,1)="$DATA"
  1. S X="PDX*"_BLOCK
  1. S:(BLOCK="PHA") X="PDX*MPL"
  1. S @ARRAY@(2,"DATA",BLOCKNUM,2)=X
  1. ;PRE-PARSE DATA BLOCK
  1. S OFFSET=""
  1. F S OFFSET=$O(@ARRAY@(1,BLOCK,OFFSET)) Q:(OFFSET="") D
  1. .S TMP=$G(@ARRAY@(1,BLOCK,OFFSET))
  1. .Q:(TMP="")
  1. .S FILE=$P(TMP,"^",1)
  1. .S FIELDS=$P(TMP,"^",2)
  1. .S VALUES=$P(TMP,"^",3,($L(TMP,"^")))
  1. .S RXNUM=""
  1. .I (FILE=52.1) D
  1. ..S RXNUM=$P(FIELDS,"~",2)
  1. ..S FIELDS=$P(FIELDS,"~",1)
  1. .I ((FILE=52)&($P(FIELDS,";",1)=.01)) D
  1. ..S RXNUM=$P(VALUES,"^",1)
  1. .S FLDCNT=$L(FIELDS,";")
  1. .S VALCNT=$L(VALUES,"^")
  1. .S REPCNT=(VALCNT\FLDCNT)-1
  1. .S:(REPCNT<0) REPCNT=0
  1. .F LOOP1=0:1:REPCNT D
  1. ..F LOOP2=1:1:FLDCNT D
  1. ...S FIELD=$P(FIELDS,";",LOOP2)
  1. ...S VALUE=$P(VALUES,"^",((LOOP1*FLDCNT)+LOOP2))
  1. ...;CONVERT DATES
  1. ...S:($P($G(^DD(FILE,FIELD,0)),"^",2)["D") VALUE=$$DOBFMT^VAQUTL99(VALUE,1)
  1. ...;CONVERT STATES
  1. ...I ((+$P($P($G(^DD(FILE,FIELD,0)),"^",2),"P",2))=5) D
  1. ....Q:(VALUE="")
  1. ....S X=$O(^DIC(5,"C",VALUE,""))
  1. ....I (X="") S VALUE="" Q
  1. ....S VALUE=$P($G(^DIC(5,X,0)),"^",1)
  1. ...S SEQ=""
  1. ...F Q:($O(@TMPARR@("VALUE",FILE,FIELD,SEQ))="") S SEQ=$O(@TMPARR@("VALUE",FILE,FIELD,SEQ)) Q:((FILE=52)&(FIELD=.01)&($G(@TMPARR@("VALUE",FILE,FIELD,SEQ))=VALUE))
  1. ...S SEQ=$S((SEQ=""):0,((FILE=52)&(FIELD=.01)&($G(@TMPARR@("VALUE",FILE,FIELD,SEQ))=VALUE)):SEQ,1:SEQ+1)
  1. ...S @TMPARR@("VALUE",FILE,FIELD,SEQ)=VALUE
  1. ...I (BLOCK="MIN") S ID=PATNAME
  1. ...I (BLOCK="PHA") D
  1. ....I (FILE=52) S ID=$S((FIELD=.01):PATNAME,1:RXNUM) Q
  1. ....I (FILE=52.1) S ID=RXNUM Q
  1. ....I ((FILE=2)!(FILE=55)) S ID=PATNAME Q
  1. ....I (FIELD=.01) S ID=PATNAME Q
  1. ....S ID=$G(@TMPARR@("VALUE",FILE,.01,SEQ))
  1. ...I (BLOCK="MAS") D
  1. ....I (FILE=2) S ID=PATNAME Q
  1. ....I (FILE=2.98) S ID=$S((FIELD=.001):PATNAME,1:$G(@TMPARR@("VALUE",2.98,.001,SEQ))) Q
  1. ....I (FIELD=.01) S ID=PATNAME Q
  1. ....I (FILE=36) S ID=$G(@TMPARR@("VALUE",2.312,.01,SEQ)) Q
  1. ....S ID=$G(@TMPARR@("VALUE",FILE,.01,SEQ))
  1. ...S @TMPARR@("ID",FILE,FIELD,SEQ)=ID
  1. ;STORE INTO PARSE ARRAY
  1. S LINE=3
  1. S FILE=""
  1. F S FILE=$O(@TMPARR@("VALUE",FILE)) Q:(FILE="") D
  1. .S FIELD=""
  1. .F S FIELD=$O(@TMPARR@("VALUE",FILE,FIELD)) Q:(FIELD="") D
  1. ..S VALUES=0
  1. ..F Q:($O(@TMPARR@("VALUE",FILE,FIELD,VALUES))="") S VALUES=$O(@TMPARR@("VALUE",FILE,FIELD,VALUES))
  1. ..S VALUES=VALUES+1
  1. ..S @ARRAY@(2,"DATA",BLOCKNUM,LINE)=0_"^"_FILE_"^"_FIELD_"^"_VALUES
  1. ..S LINE=LINE+1
  1. ..S SEQ=""
  1. ..F S SEQ=$O(@TMPARR@("VALUE",FILE,FIELD,SEQ)) Q:(SEQ="") D
  1. ...S VALUE=$G(@TMPARR@("VALUE",FILE,FIELD,SEQ))
  1. ...S @ARRAY@(2,"DATA",BLOCKNUM,LINE)=VALUE
  1. ...S LINE=LINE+1
  1. ...S ID=$G(@TMPARR@("ID",FILE,FIELD,SEQ))
  1. ...S @ARRAY@(2,"DATA",BLOCKNUM,LINE)=ID
  1. ...S LINE=LINE+1
  1. ;DONE
  1. S @ARRAY@(2,"DATA",BLOCKNUM,LINE)="$$DATA"
  1. K @TMPARR
  1. Q