VAQCON95 ;ALB/JRP - MESSAGE CONSTRUCTION;20-APR-93
;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
PHA10 ;BUILD PHARMACY DATA BLOCK FOR 1.0 MESSAGE
; DECLARATIONS DONE IN $$DATA10^VAQCON97
S SEGABB="PDX*MPL"
;LONG FORMAT NOT PRESENT - SWITCH TO SHORT FORMAT (SAME INFO)
S:('$D(@ROOT@(SEGABB))) SEGABB="PDX*MPS"
;PHARMACY DATA NOT PRESENT - PLACE NULLS INTO MESSAGE
I ('$D(@ROOT@(SEGABB))) D NULLS Q
;PLACE NARRATIVE INTO MESSAGE
S FILE=55
S FIELD=1
S VALUE=$G(@ROOT@(SEGABB,"VALUE",FILE,FIELD,0))
S INFO="PHA"_"^"_FILE_"^"_FIELD_"^"_VALUE
S:('MESSNUM) @ARRAY@(LINE)=INFO
S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
S LINE=LINE+1
;PLACE ALERGIES & REACTIONS INTO MESSAGE (STORE IN 2.55;.01)
S FILE=120.8
S FIELD=.02
S INFO="PHA"_"^"_(2.55)_"^"_(.01)
S SEQ=""
F S SEQ=$O(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ)) Q:(SEQ="") D
.S VALUE=$G(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
.I (($L(INFO)+$L(VALUE)+$L(FIELD)+1)>239) D
..S:('MESSNUM) @ARRAY@(LINE)=INFO
..S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
..S LINE=LINE+1
..S INFO="PHA"_"^"_(2.55)_"^"_(.01)
.S INFO=INFO_"^"_VALUE
S:('MESSNUM) @ARRAY@(LINE)=INFO
S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
S LINE=LINE+1
;STORE NULL VALUES FOR 2.57;.01
S INFO="PHA"_"^"_(2.57)_"^"_(.01)
S:('MESSNUM) @ARRAY@(LINE)=INFO
S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
S LINE=LINE+1
;PLACE DISABILITIES INTO MESSAGE
;ASSUMES THAT ALL SEQUENCES IN THE SUBFILE ARE THE SAME
S FILE=2.04
S SEQFIELD=.01
S SEQ=""
S INFO="PHA"_"^"_FILE_"^"_".01;2;3"
F S SEQ=$O(@ROOT@(SEGABB,"VALUE",FILE,SEQFIELD,SEQ)) Q:(SEQ="") D
.S INFO="PHA"_"^"_FILE_"^"_".01;2;3"
.F FIELD=.01,2,3 D
..S VALUE=$G(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
..S INFO=INFO_"^"_VALUE
.S:('MESSNUM) @ARRAY@(LINE)=INFO
.S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
.S LINE=LINE+1
;STORE NULL DISABILITIES (IF NEEDED)
I ($L(INFO,"^")<4) D
.S:('MESSNUM) @ARRAY@(LINE)=INFO
.S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
.S LINE=LINE+1
;NO PRESCRIPTION INFORMATION - STORE NULLS
I ('$D(@ROOT@(SEGABB,"VALUE",52,.01))) D NULLRX Q
;STORE PRESCRIPTION INFORMATION
;ASSUMES ALL PRESCRIPTION INFO HAVE SAME SEQUENCE
S FILE=52
S SEQFIELD=.01
S SEQ=""
F S SEQ=$O(@ROOT@(SEGABB,"VALUE",FILE,SEQFIELD,SEQ)) Q:(SEQ="") D
.;GET RX#
.S FIELD=.01
.S VALUE=$G(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
.Q:(VALUE="")
.S INFO="PHA"_"^"_FILE_"^"_FIELD_"^"_VALUE
.;GET REST OF PRESCRIPTION INFO
.F S FIELD=$O(@ROOT@(SEGABB,"VALUE",FILE,FIELD)) Q:(FIELD="") D
..S VALUE=$G(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
..;CONVERT DATES TO FILEMAN FORMAT
..I (VALUE'="") S:($P($G(^DD(FILE,FIELD,0)),"^",2)["D") VALUE=$$DATE^VAQUTL99(VALUE)
..I (($L(INFO)+$L(VALUE)+$L(FIELD)+2)>239) D
...S:('MESSNUM) @ARRAY@(LINE)=INFO
...S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
...S LINE=LINE+1
...S X=INFO
...S INFO="PHA"_"^"_(52)_"^"_(.01)_"^"_($P(X,"^",4))
..S X=$P(INFO,"^",3)
..S $P(INFO,"^",3)=$S((X=""):FIELD,1:(X_";"_FIELD))
..S INFO=INFO_"^"_VALUE
.I ($P(INFO,"^",3)[";") D
..S:('MESSNUM) @ARRAY@(LINE)=INFO
..S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
..S LINE=LINE+1
;STORE REFILL INFORMATION
S FILE=52.1
S FIELD=.01
S SEQ=""
F S SEQ=$O(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ)) Q:(SEQ="") D
.;GET RX
.S TMP=$G(@ROOT@(SEGABB,"ID",FILE,FIELD,SEQ))
.Q:(TMP="")
.;SPECIAL CASE DATA LINE
.S INFO="PHA"_"^"_FILE_"^"_FIELD_"~"_TMP
.S VALUE=$G(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
.;CONVERT DATE TO FILEMAN FORMAT
.S:(VALUE'="") VALUE=$$DATE^VAQUTL99(VALUE)
.S INFO=INFO_"^"_VALUE
.S:('MESSNUM) @ARRAY@(LINE)=INFO
.S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
.S LINE=LINE+1
Q
NULLS ;NO PRESCRIPTION INFO (STORE NULLS)
;PATIENT INFO
F SEQ=1:1 D Q:('SEQ)
.S TMP=$P($T(RXPAT+SEQ^VAQDBII1),";;",2)
.I (TMP="") S SEQ=0 Q
.S TMP=$TR(TMP,";","^")
.S TMP=$TR(TMP,",",";")
.S INFO="PHA"_"^"_TMP
.S:('MESSNUM) @ARRAY@(LINE)=INFO
.S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
.S LINE=LINE+1
NULLRX ;PRESCRIPTION INFO
F SEQ=1:1 D Q:('SEQ)
.S TMP=$P($T(PROFILE+SEQ^VAQDBII1),";;",2)
.I (TMP="") S SEQ=0 Q
.S TMP=$TR(TMP,";","^")
.S TMP=$TR(TMP,",",";")
.;.01 MUST BE FIRST FIELD FOR FILE 52
.I ($P(TMP,"^",1)=52) D
..S X=$P(TMP,"^",2)
..S:($P(X,";",1)'=".01") X=".01;"_X
..S $P(TMP,"^",2)=X
.S INFO="PHA"_"^"_TMP
.S:('MESSNUM) @ARRAY@(LINE)=INFO
.S:(MESSNUM) X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
.S LINE=LINE+1
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HVAQCON95 4587 printed Dec 13, 2024@02:24:53 Page 2
VAQCON95 ;ALB/JRP - MESSAGE CONSTRUCTION;20-APR-93
+1 ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
PHA10 ;BUILD PHARMACY DATA BLOCK FOR 1.0 MESSAGE
+1 ; DECLARATIONS DONE IN $$DATA10^VAQCON97
+2 SET SEGABB="PDX*MPL"
+3 ;LONG FORMAT NOT PRESENT - SWITCH TO SHORT FORMAT (SAME INFO)
+4 if ('$DATA(@ROOT@(SEGABB)))
SET SEGABB="PDX*MPS"
+5 ;PHARMACY DATA NOT PRESENT - PLACE NULLS INTO MESSAGE
+6 IF ('$DATA(@ROOT@(SEGABB)))
DO NULLS
QUIT
+7 ;PLACE NARRATIVE INTO MESSAGE
+8 SET FILE=55
+9 SET FIELD=1
+10 SET VALUE=$GET(@ROOT@(SEGABB,"VALUE",FILE,FIELD,0))
+11 SET INFO="PHA"_"^"_FILE_"^"_FIELD_"^"_VALUE
+12 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+13 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+14 SET LINE=LINE+1
+15 ;PLACE ALERGIES & REACTIONS INTO MESSAGE (STORE IN 2.55;.01)
+16 SET FILE=120.8
+17 SET FIELD=.02
+18 SET INFO="PHA"_"^"_(2.55)_"^"_(.01)
+19 SET SEQ=""
+20 FOR
SET SEQ=$ORDER(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
if (SEQ="")
QUIT
Begin DoDot:1
+21 SET VALUE=$GET(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
+22 IF (($LENGTH(INFO)+$LENGTH(VALUE)+$LENGTH(FIELD)+1)>239)
Begin DoDot:2
+23 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+24 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+25 SET LINE=LINE+1
+26 SET INFO="PHA"_"^"_(2.55)_"^"_(.01)
End DoDot:2
+27 SET INFO=INFO_"^"_VALUE
End DoDot:1
+28 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+29 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+30 SET LINE=LINE+1
+31 ;STORE NULL VALUES FOR 2.57;.01
+32 SET INFO="PHA"_"^"_(2.57)_"^"_(.01)
+33 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+34 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+35 SET LINE=LINE+1
+36 ;PLACE DISABILITIES INTO MESSAGE
+37 ;ASSUMES THAT ALL SEQUENCES IN THE SUBFILE ARE THE SAME
+38 SET FILE=2.04
+39 SET SEQFIELD=.01
+40 SET SEQ=""
+41 SET INFO="PHA"_"^"_FILE_"^"_".01;2;3"
+42 FOR
SET SEQ=$ORDER(@ROOT@(SEGABB,"VALUE",FILE,SEQFIELD,SEQ))
if (SEQ="")
QUIT
Begin DoDot:1
+43 SET INFO="PHA"_"^"_FILE_"^"_".01;2;3"
+44 FOR FIELD=.01,2,3
Begin DoDot:2
+45 SET VALUE=$GET(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
+46 SET INFO=INFO_"^"_VALUE
End DoDot:2
+47 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+48 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+49 SET LINE=LINE+1
End DoDot:1
+50 ;STORE NULL DISABILITIES (IF NEEDED)
+51 IF ($LENGTH(INFO,"^")<4)
Begin DoDot:1
+52 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+53 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+54 SET LINE=LINE+1
End DoDot:1
+55 ;NO PRESCRIPTION INFORMATION - STORE NULLS
+56 IF ('$DATA(@ROOT@(SEGABB,"VALUE",52,.01)))
DO NULLRX
QUIT
+57 ;STORE PRESCRIPTION INFORMATION
+58 ;ASSUMES ALL PRESCRIPTION INFO HAVE SAME SEQUENCE
+59 SET FILE=52
+60 SET SEQFIELD=.01
+61 SET SEQ=""
+62 FOR
SET SEQ=$ORDER(@ROOT@(SEGABB,"VALUE",FILE,SEQFIELD,SEQ))
if (SEQ="")
QUIT
Begin DoDot:1
+63 ;GET RX#
+64 SET FIELD=.01
+65 SET VALUE=$GET(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
+66 if (VALUE="")
QUIT
+67 SET INFO="PHA"_"^"_FILE_"^"_FIELD_"^"_VALUE
+68 ;GET REST OF PRESCRIPTION INFO
+69 FOR
SET FIELD=$ORDER(@ROOT@(SEGABB,"VALUE",FILE,FIELD))
if (FIELD="")
QUIT
Begin DoDot:2
+70 SET VALUE=$GET(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
+71 ;CONVERT DATES TO FILEMAN FORMAT
+72 IF (VALUE'="")
if ($PIECE($GET(^DD(FILE,FIELD,0)),"^",2)["D")
SET VALUE=$$DATE^VAQUTL99(VALUE)
+73 IF (($LENGTH(INFO)+$LENGTH(VALUE)+$LENGTH(FIELD)+2)>239)
Begin DoDot:3
+74 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+75 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+76 SET LINE=LINE+1
+77 SET X=INFO
+78 SET INFO="PHA"_"^"_(52)_"^"_(.01)_"^"_($PIECE(X,"^",4))
End DoDot:3
+79 SET X=$PIECE(INFO,"^",3)
+80 SET $PIECE(INFO,"^",3)=$SELECT((X=""):FIELD,1:(X_";"_FIELD))
+81 SET INFO=INFO_"^"_VALUE
End DoDot:2
+82 IF ($PIECE(INFO,"^",3)[";")
Begin DoDot:2
+83 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+84 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+85 SET LINE=LINE+1
End DoDot:2
End DoDot:1
+86 ;STORE REFILL INFORMATION
+87 SET FILE=52.1
+88 SET FIELD=.01
+89 SET SEQ=""
+90 FOR
SET SEQ=$ORDER(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
if (SEQ="")
QUIT
Begin DoDot:1
+91 ;GET RX
+92 SET TMP=$GET(@ROOT@(SEGABB,"ID",FILE,FIELD,SEQ))
+93 if (TMP="")
QUIT
+94 ;SPECIAL CASE DATA LINE
+95 SET INFO="PHA"_"^"_FILE_"^"_FIELD_"~"_TMP
+96 SET VALUE=$GET(@ROOT@(SEGABB,"VALUE",FILE,FIELD,SEQ))
+97 ;CONVERT DATE TO FILEMAN FORMAT
+98 if (VALUE'="")
SET VALUE=$$DATE^VAQUTL99(VALUE)
+99 SET INFO=INFO_"^"_VALUE
+100 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+101 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+102 SET LINE=LINE+1
End DoDot:1
+103 QUIT
NULLS ;NO PRESCRIPTION INFO (STORE NULLS)
+1 ;PATIENT INFO
+2 FOR SEQ=1:1
Begin DoDot:1
+3 SET TMP=$PIECE($TEXT(RXPAT+SEQ^VAQDBII1),";;",2)
+4 IF (TMP="")
SET SEQ=0
QUIT
+5 SET TMP=$TRANSLATE(TMP,";","^")
+6 SET TMP=$TRANSLATE(TMP,",",";")
+7 SET INFO="PHA"_"^"_TMP
+8 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+9 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+10 SET LINE=LINE+1
End DoDot:1
if ('SEQ)
QUIT
NULLRX ;PRESCRIPTION INFO
+1 FOR SEQ=1:1
Begin DoDot:1
+2 SET TMP=$PIECE($TEXT(PROFILE+SEQ^VAQDBII1),";;",2)
+3 IF (TMP="")
SET SEQ=0
QUIT
+4 SET TMP=$TRANSLATE(TMP,";","^")
+5 SET TMP=$TRANSLATE(TMP,",",";")
+6 ;.01 MUST BE FIRST FIELD FOR FILE 52
+7 IF ($PIECE(TMP,"^",1)=52)
Begin DoDot:2
+8 SET X=$PIECE(TMP,"^",2)
+9 if ($PIECE(X,";",1)'=".01")
SET X=".01;"_X
+10 SET $PIECE(TMP,"^",2)=X
End DoDot:2
+11 SET INFO="PHA"_"^"_TMP
+12 if ('MESSNUM)
SET @ARRAY@(LINE)=INFO
+13 if (MESSNUM)
SET X=$$ADDLINE^VAQCON1(INFO,MESSNUM,LINE)
+14 SET LINE=LINE+1
End DoDot:1
if ('SEQ)
QUIT
+15 QUIT