XUMFXR ;ISS/RAM - MFS param pre/post update;04/15/02
 ;;8.0;KERNEL;**299**;Jul 10, 1995
 ;
 Q
 ;
NULL ; -- do nothing
 ;
 Q
 ;
PRE ; -- pre update
 ;
 N ARRAY
 ;
 K ^TMP("XUMF PRE",$J)
 ;
 D DATA(.ARRAY)
 ;
 M ^TMP("XUMF PRE",$J)=ARRAY
 ;
 Q
 ;
POST ; -- post update
 ;
 N ARRAY,I,X,FLAG
 ;
 D DATA(.ARRAY)
 ;
 S (FLAG,I)=0
 F  S I=$O(ARRAY(I)) Q:'I  D  Q:FLAG
 .I ARRAY(I)'=^TMP("XUMF PRE",$J,I) S FLAG=1 Q
 ;
 I FLAG D
 .S I=0
 .F  S I=$O(ARRAY(I)) Q:'I  D
 ..S X(I+100)=ARRAY(I) K ARRAY(I)
 .M X=^TMP("XUMF PRE",$J)
 .D XM(.X,$G(KEY))
 ;
 K ^TMP("XUMF PRE",$J)
 ;
 Q
 ;
DATA(ARRAY) ; -- array(sequence)=fieldLabel_": "_value
 ;
 N SEG,SEQ,FLD,FILE,IENS,FIELD,VALUE,LKUP,IDX
 ;
 S SEG="",SEQ=0
 F  S SEQ=$O(^TMP("XUMF MFS",$J,"PARAM","SEQ",SEQ)) Q:'SEQ  D
 .;
 .S FLD=$O(^TMP("XUMF MFS",$J,"PARAM","SEQ",SEQ,0))
 .;
 .I 'FLD D
 ..S FILE=^TMP("XUMF MFS",$J,"PARAM","SEQ",SEQ,"FILE")
 ..S IENS=$G(^TMP("XUMF MFS",$J,"PARAM","IENS",SEQ))
 ..S FIELD=^TMP("XUMF MFS",$J,"PARAM","SEQ",SEQ,"FIELD")
 ..S LKUP=$G(^TMP("XUMF MFS",$J,"PARAM","SEQ",SEQ,"LKUP"))
 ..I LKUP S FIELD=FIELD_":"_LKUP
 ..S VALUE=$$GET1^DIQ(FILE,IENS,FIELD)
 ..S ARRAY(SEQ)=$$FIELD^XUMF(FILE,$P(FIELD,":"),"LABEL")_": "_VALUE
 .I FLD D
 ..S ZDTYP=$G(^TMP("XUMF MFS",$J,"PARAM","SEQ",SEQ,FLD))
 ..S LKUP=$P(ZDTYP,U,2)
 ..I LKUP S FLD=FLD_":"_LKUP
 ..S VALUE=$$GET1^DIQ(IFN,IEN_",",FLD)
 ..S ARRAY(SEQ)=$$FIELD^XUMF(IFN,$P(FLD,":"),"LABEL")_": "_VALUE
 ;
 Q
 ;
MFP ; -- get Master File Parameters from server
 ;
 N X
 ;
 S EXIT=1
 S IEN=$$FIND1^DIC(1,,"BX",$P(KEY,HLCS))
 ;
 D MAIN^XUMF299
 ;
 S X(1)="Query sent to MFS to get "_$P(KEY,HLCS)_" parameters"
 D XM1(.X)
 ;
 Q
 ;
XM(X,XUMFKEY) ; -- MailMan notification
 ;
 N GROUP
 ;
 S HLCS=$G(HLCS) S:HLCS="" HLCS="~"
 S XUMFKEY=" "_$P($G(XUMFKEY),HLCS)
 ;
 S GROUP=$$GET1^DIQ(4.001,IEN_",",.06)
 S:GROUP'="" GROUP="G."_GROUP
 S X(.1)="HL7 message ID: "_$G(HL("MID")),X(.2)=""
 S X(.3)="PRE UPDATE VALUES:",X(.4)=""
 S X(99.1)="",X(99.2)="POST UPDATE VALUES:",X(99.3)=""
 S XMSUB="XUMF MFS UPDATE - "_$$FILE^XUMF(IFN,"NAME")_XUMFKEY
 S XMY("G.XUMF SERVER")="",XMDUZ=.5
 S:GROUP'="" XMY(GROUP)=""
 S XMTEXT="X("
 ;
 D ^XMD
 ;
XM1(X) ; -- MailMan notification
 ;
 N GROUP
 ;
 S GROUP=$$GET1^DIQ(4.001,IEN_",",.06)
 S:GROUP'="" GROUP="G."_GROUP
 S X(.1)="HL7 message ID: "_$G(HL("MID")),X(.2)=""
 S XMSUB="XUMF MFE - "_$$FILE^XUMF(IFN,"NAME")
 S XMY("G.XUMF SERVER")="",XMDUZ=.5
 S:GROUP'="" XMY(GROUP)=""
 S XMTEXT="X("
 ;
 D ^XMD
 ;
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXUMFXR   2569     printed  Sep 23, 2025@19:47:27                                                                                                                                                                                                      Page 2
XUMFXR    ;ISS/RAM - MFS param pre/post update;04/15/02
 +1       ;;8.0;KERNEL;**299**;Jul 10, 1995
 +2       ;
 +3        QUIT 
 +4       ;
NULL      ; -- do nothing
 +1       ;
 +2        QUIT 
 +3       ;
PRE       ; -- pre update
 +1       ;
 +2        NEW ARRAY
 +3       ;
 +4        KILL ^TMP("XUMF PRE",$JOB)
 +5       ;
 +6        DO DATA(.ARRAY)
 +7       ;
 +8        MERGE ^TMP("XUMF PRE",$JOB)=ARRAY
 +9       ;
 +10       QUIT 
 +11      ;
POST      ; -- post update
 +1       ;
 +2        NEW ARRAY,I,X,FLAG
 +3       ;
 +4        DO DATA(.ARRAY)
 +5       ;
 +6        SET (FLAG,I)=0
 +7        FOR 
               SET I=$ORDER(ARRAY(I))
               if 'I
                   QUIT 
               Begin DoDot:1
 +8                IF ARRAY(I)'=^TMP("XUMF PRE",$JOB,I)
                       SET FLAG=1
                       QUIT 
               End DoDot:1
               if FLAG
                   QUIT 
 +9       ;
 +10       IF FLAG
               Begin DoDot:1
 +11               SET I=0
 +12               FOR 
                       SET I=$ORDER(ARRAY(I))
                       if 'I
                           QUIT 
                       Begin DoDot:2
 +13                       SET X(I+100)=ARRAY(I)
                           KILL ARRAY(I)
                       End DoDot:2
 +14               MERGE X=^TMP("XUMF PRE",$JOB)
 +15               DO XM(.X,$GET(KEY))
               End DoDot:1
 +16      ;
 +17       KILL ^TMP("XUMF PRE",$JOB)
 +18      ;
 +19       QUIT 
 +20      ;
DATA(ARRAY) ; -- array(sequence)=fieldLabel_": "_value
 +1       ;
 +2        NEW SEG,SEQ,FLD,FILE,IENS,FIELD,VALUE,LKUP,IDX
 +3       ;
 +4        SET SEG=""
           SET SEQ=0
 +5        FOR 
               SET SEQ=$ORDER(^TMP("XUMF MFS",$JOB,"PARAM","SEQ",SEQ))
               if 'SEQ
                   QUIT 
               Begin DoDot:1
 +6       ;
 +7                SET FLD=$ORDER(^TMP("XUMF MFS",$JOB,"PARAM","SEQ",SEQ,0))
 +8       ;
 +9                IF 'FLD
                       Begin DoDot:2
 +10                       SET FILE=^TMP("XUMF MFS",$JOB,"PARAM","SEQ",SEQ,"FILE")
 +11                       SET IENS=$GET(^TMP("XUMF MFS",$JOB,"PARAM","IENS",SEQ))
 +12                       SET FIELD=^TMP("XUMF MFS",$JOB,"PARAM","SEQ",SEQ,"FIELD")
 +13                       SET LKUP=$GET(^TMP("XUMF MFS",$JOB,"PARAM","SEQ",SEQ,"LKUP"))
 +14                       IF LKUP
                               SET FIELD=FIELD_":"_LKUP
 +15                       SET VALUE=$$GET1^DIQ(FILE,IENS,FIELD)
 +16                       SET ARRAY(SEQ)=$$FIELD^XUMF(FILE,$PIECE(FIELD,":"),"LABEL")_": "_VALUE
                       End DoDot:2
 +17               IF FLD
                       Begin DoDot:2
 +18                       SET ZDTYP=$GET(^TMP("XUMF MFS",$JOB,"PARAM","SEQ",SEQ,FLD))
 +19                       SET LKUP=$PIECE(ZDTYP,U,2)
 +20                       IF LKUP
                               SET FLD=FLD_":"_LKUP
 +21                       SET VALUE=$$GET1^DIQ(IFN,IEN_",",FLD)
 +22                       SET ARRAY(SEQ)=$$FIELD^XUMF(IFN,$PIECE(FLD,":"),"LABEL")_": "_VALUE
                       End DoDot:2
               End DoDot:1
 +23      ;
 +24       QUIT 
 +25      ;
MFP       ; -- get Master File Parameters from server
 +1       ;
 +2        NEW X
 +3       ;
 +4        SET EXIT=1
 +5        SET IEN=$$FIND1^DIC(1,,"BX",$PIECE(KEY,HLCS))
 +6       ;
 +7        DO MAIN^XUMF299
 +8       ;
 +9        SET X(1)="Query sent to MFS to get "_$PIECE(KEY,HLCS)_" parameters"
 +10       DO XM1(.X)
 +11      ;
 +12       QUIT 
 +13      ;
XM(X,XUMFKEY) ; -- MailMan notification
 +1       ;
 +2        NEW GROUP
 +3       ;
 +4        SET HLCS=$GET(HLCS)
           if HLCS=""
               SET HLCS="~"
 +5        SET XUMFKEY=" "_$PIECE($GET(XUMFKEY),HLCS)
 +6       ;
 +7        SET GROUP=$$GET1^DIQ(4.001,IEN_",",.06)
 +8        if GROUP'=""
               SET GROUP="G."_GROUP
 +9        SET X(.1)="HL7 message ID: "_$GET(HL("MID"))
           SET X(.2)=""
 +10       SET X(.3)="PRE UPDATE VALUES:"
           SET X(.4)=""
 +11       SET X(99.1)=""
           SET X(99.2)="POST UPDATE VALUES:"
           SET X(99.3)=""
 +12       SET XMSUB="XUMF MFS UPDATE - "_$$FILE^XUMF(IFN,"NAME")_XUMFKEY
 +13       SET XMY("G.XUMF SERVER")=""
           SET XMDUZ=.5
 +14       if GROUP'=""
               SET XMY(GROUP)=""
 +15       SET XMTEXT="X("
 +16      ;
 +17       DO ^XMD
 +18      ;
XM1(X)    ; -- MailMan notification
 +1       ;
 +2        NEW GROUP
 +3       ;
 +4        SET GROUP=$$GET1^DIQ(4.001,IEN_",",.06)
 +5        if GROUP'=""
               SET GROUP="G."_GROUP
 +6        SET X(.1)="HL7 message ID: "_$GET(HL("MID"))
           SET X(.2)=""
 +7        SET XMSUB="XUMF MFE - "_$$FILE^XUMF(IFN,"NAME")
 +8        SET XMY("G.XUMF SERVER")=""
           SET XMDUZ=.5
 +9        if GROUP'=""
               SET XMY(GROUP)=""
 +10       SET XMTEXT="X("
 +11      ;
 +12       DO ^XMD
 +13      ;
 +14       QUIT 
 +15      ;