DIARR6 ;SFISC/DCM-PROCESS ARCHIVED FILE WITH INDEX ;11/18/92 11:49 AM
;;22.2;VA FileMan;;Jan 05, 2016;Build 42
;;Per VA Directive 6402, this routine should not be modified.
;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
;;Licensed under the terms of the Apache License, Version 2.0.
;
S DIARFILE=$P(DIARL,U,3),DIARFN=+$P(DIARL,U,2)
S DIARREC=$P(DIARL,U,4,99)
F DIARXX=1:1 S DIARFLD=$P(DIARREC,U,DIARXX) Q:DIARFLD="" S DIARFNO=$P(DIARFLD,":"),DIARFNA=$P(DIARFLD,":",2) D
. I +DIARFNO=.01 S DIAR01=DIARFNA
. S DIARPC(DIARXX)=DIARFNO_U_DIARFNA
. S:+DIARFNO'=.01 DIARID(DIARFNO)=DIARFNA_U_DIARFNO
. S DIARCNT=DIARXX
. Q
S DIARCTR=0,DIARFLGT=0
F X DIARX Q:DIARL["$DAT" S DIARCTR=DIARCTR+1 F DIARXX=1:1:DIARCNT S DIARFLD=$P(DIARL,U,DIARXX) S DIARFNA=$P(DIARPC(DIARXX),U,2),DIARFNO=+DIARPC(DIARXX),^TMP("DIARHLP",$J,DIARCTR,DIARFNO)=DIARFNA_" = "_DIARFLD D FLGTH
Q
;
FLGTH S $P(DIARPC(DIARXX),U,3)=$S($L(DIARFLD)>+$P(DIARPC(DIARXX),U,3):$L(DIARFLD),1:+$P(DIARPC(DIARXX),U,3))
Q
;
PROC S DIARIXCT=0 K DIARRF
PROC1 F X DIARX Q:DIARL["$DAT" G PROC1:DIARL["$INDEX" D PROC2 D MATCH^DIARR2 K:'$G(DIARIXX(DIARIXCT)) DIARIXX(DIARIXCT) G PROC1
Q:'$D(DIARIXX)
S (DIARIXCT,DIARXX)=1 D:$G(DIARIXX(DIARIXCT)) FOUND
F S DIARXX=$O(DIARIXX(DIARXX)) Q:DIARXX'>0 D PROC1A
Q
;
PROC1A F X DIARX Q:DIARL["#$#" I DIARL["$DAT" S DIARIXCT=DIARIXCT+1 I DIARIXCT=DIARXX D FOUND Q
Q
;
PROC2 K DIARA S DIARIXCT=DIARIXCT+1,DIARIXX(DIARIXCT)=""
F DIARXX=1:1:DIARCNT S DIARVAL=$P(DIARL,U,DIARXX) D PROC2A
Q
;
PROC2A I +$P(DIARPC(DIARXX),U)=.01 S DIARA(.01)=DIARVAL Q
S DIARA("ID",+$P(DIARPC(DIARXX),U))=DIARVAL
Q
;
FOUND K ^TMP("DIARFG",$J) S DIARZ=1 D SET
F DIARZ=DIARZ+1:1 X DIARX D SET I DIARL["$END DAT" Q
F DIARZ=1:1 S DIARY=$P(DIARIXX(DIARIXCT),",",DIARZ) Q:DIARY="" S DIARRF(DIARY)=$S($D(DIARRF(DIARY)):DIARRF(DIARY)+1,1:0) D SETFG
Q
;
SET S ^TMP("DIARFG",$J,DIARZ)=DIARL
Q
;
SETFG S %X="^TMP(""DIARFG"",$J,",%Y="^TMP(""DIAR"",$J,DIARY,DIARRF(DIARY)," D %XY^%RCR
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDIARR6 2118 printed Oct 16, 2024@18:45:29 Page 2
DIARR6 ;SFISC/DCM-PROCESS ARCHIVED FILE WITH INDEX ;11/18/92 11:49 AM
+1 ;;22.2;VA FileMan;;Jan 05, 2016;Build 42
+2 ;;Per VA Directive 6402, this routine should not be modified.
+3 ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
+4 ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
+5 ;;Licensed under the terms of the Apache License, Version 2.0.
+6 ;
+7 SET DIARFILE=$PIECE(DIARL,U,3)
SET DIARFN=+$PIECE(DIARL,U,2)
+8 SET DIARREC=$PIECE(DIARL,U,4,99)
+9 FOR DIARXX=1:1
SET DIARFLD=$PIECE(DIARREC,U,DIARXX)
if DIARFLD=""
QUIT
SET DIARFNO=$PIECE(DIARFLD,":")
SET DIARFNA=$PIECE(DIARFLD,":",2)
Begin DoDot:1
+10 IF +DIARFNO=.01
SET DIAR01=DIARFNA
+11 SET DIARPC(DIARXX)=DIARFNO_U_DIARFNA
+12 if +DIARFNO'=.01
SET DIARID(DIARFNO)=DIARFNA_U_DIARFNO
+13 SET DIARCNT=DIARXX
+14 QUIT
End DoDot:1
+15 SET DIARCTR=0
SET DIARFLGT=0
+16 FOR
XECUTE DIARX
if DIARL["$DAT"
QUIT
SET DIARCTR=DIARCTR+1
FOR DIARXX=1:1:DIARCNT
SET DIARFLD=$PIECE(DIARL,U,DIARXX)
SET DIARFNA=$PIECE(DIARPC(DIARXX),U,2)
SET DIARFNO=+DIARPC(DIARXX)
SET ^TMP("DIARHLP",$JOB,DIARCTR,DIARFNO)=DIARFNA_" = "_DIARFLD
DO FLGTH
+17 QUIT
+18 ;
FLGTH SET $PIECE(DIARPC(DIARXX),U,3)=$SELECT($LENGTH(DIARFLD)>+$PIECE(DIARPC(DIARXX),U,3):$LENGTH(DIARFLD),1:+$PIECE(DIARPC(DIARXX),U,3))
+1 QUIT
+2 ;
PROC SET DIARIXCT=0
KILL DIARRF
PROC1 FOR
XECUTE DIARX
if DIARL["$DAT"
QUIT
if DIARL["$INDEX"
GOTO PROC1
DO PROC2
DO MATCH^DIARR2
if '$GET(DIARIXX(DIARIXCT))
KILL DIARIXX(DIARIXCT)
GOTO PROC1
+1 if '$DATA(DIARIXX)
QUIT
+2 SET (DIARIXCT,DIARXX)=1
if $GET(DIARIXX(DIARIXCT))
DO FOUND
+3 FOR
SET DIARXX=$ORDER(DIARIXX(DIARXX))
if DIARXX'>0
QUIT
DO PROC1A
+4 QUIT
+5 ;
PROC1A FOR
XECUTE DIARX
if DIARL["#$#"
QUIT
IF DIARL["$DAT"
SET DIARIXCT=DIARIXCT+1
IF DIARIXCT=DIARXX
DO FOUND
QUIT
+1 QUIT
+2 ;
PROC2 KILL DIARA
SET DIARIXCT=DIARIXCT+1
SET DIARIXX(DIARIXCT)=""
+1 FOR DIARXX=1:1:DIARCNT
SET DIARVAL=$PIECE(DIARL,U,DIARXX)
DO PROC2A
+2 QUIT
+3 ;
PROC2A IF +$PIECE(DIARPC(DIARXX),U)=.01
SET DIARA(.01)=DIARVAL
QUIT
+1 SET DIARA("ID",+$PIECE(DIARPC(DIARXX),U))=DIARVAL
+2 QUIT
+3 ;
FOUND KILL ^TMP("DIARFG",$JOB)
SET DIARZ=1
DO SET
+1 FOR DIARZ=DIARZ+1:1
XECUTE DIARX
DO SET
IF DIARL["$END DAT"
QUIT
+2 FOR DIARZ=1:1
SET DIARY=$PIECE(DIARIXX(DIARIXCT),",",DIARZ)
if DIARY=""
QUIT
SET DIARRF(DIARY)=$SELECT($DATA(DIARRF(DIARY)):DIARRF(DIARY)+1,1:0)
DO SETFG
+3 QUIT
+4 ;
SET SET ^TMP("DIARFG",$JOB,DIARZ)=DIARL
+1 QUIT
+2 ;
SETFG SET %X="^TMP(""DIARFG"",$J,"
SET %Y="^TMP(""DIAR"",$J,DIARY,DIARRF(DIARY),"
DO %XY^%RCR
+1 QUIT