- XUMFQR ;ISS/RAM - Master File Query Response ;06/28/00
- ;;8.0;KERNEL;**407,502**;Jul 10, 1995;Build 18
- ;
- Q
- ;
- MAIN ; -- main
- ;
- N FIELD1,IDX,IDX1,NAME1,SUBFILE1,DATA1,IEN1,TYP1,MKEY,MKEY1,TYP,VUID,VUID1
- N MFI,SEQ,NAME,QRD,SEQ,SUBFILE,IEN,CNT,DATA,ERROR,SORTBY,FILTERBY,FILTER,ERRCNT
- ;
- D INIT,PROCESS,MFR,SEND,EXIT
- ;
- Q
- ;
- INIT ; -- initialize
- ;
- K ^TMP("HLA",$J)
- ;
- S ERROR=0,CNT=1,ERRCNT=0
- ;
- S HLFS=HL("FS"),HLCS=$E(HL("ECH")),HLSCS=$E(HL("ECH"),4)
- ;
- Q
- ;
- PROCESS ; -- pull message text
- ;
- F X HLNEXT Q:HLQUIT'>0 D
- .Q:$P(HLNODE,HLFS)=""
- .Q:"^MSH^MSA^QRD^"'[(U_$P(HLNODE,HLFS)_U)
- .D @($P(HLNODE,HLFS))
- ;
- Q
- ;
- MSH ; -- MSH segment
- ;
- Q
- ;
- QRD ; -- QRD segment
- ;
- Q:ERROR
- ;
- S MFI=$P(HLNODE,HLFS,10),FILTER=$P(MFI,HLCS,2),MFI=$P(MFI,HLCS)
- I MFI="" S ERROR="1^MFI not resolved HLNODE: "_$TR(HLNODE,HLFS,"#") Q
- S IFN=$O(^DIC(4.001,"MFID",MFI,0))
- I 'IFN S ERROR="1^IFN not resolved HLNODE: "_$TR(HLNODE,HLFS,"#") Q
- I '$$VFILE^DILFD(IFN) S ERROR="1^invalid file number" Q
- S DATA=$G(^DIC(4.001,+IFN,0)),SORTBY=$P(DATA,U,8),FILTERBY=$P(DATA,U,9)
- ;
- ; -- get root of file
- S ROOT=$$ROOT^DILFD(IFN,,1)
- ;
- S QRD=HLNODE
- ;
- Q
- ;
- MFR ; -- response
- ;
- D MSA,QRD1,MFI,MFE
- ;
- Q
- ;
- MSA ; -- Acknowledgement
- ;
- N X
- S X="MSA"_HLFS_$S(ERROR:"AE",1:"AA")_HLFS_HL("MID")_HLFS_$P(ERROR,U,2)
- S ^TMP("HLA",$J,CNT)=X
- S CNT=CNT+1
- ;
- Q
- ;
- QRD1 ; -- query definition segment
- ;
- Q:ERROR
- ;
- S ^TMP("HLA",$J,CNT)=$G(QRD)
- S CNT=CNT+1
- ;
- Q
- ;
- MFI ; master file identifier segment
- ;
- Q:ERROR
- ;
- S ^TMP("HLA",$J,CNT)=$$MFI^XUMFMFI(MFI,"Standard Terminology","MUP",$$NOW^XLFDT,$$NOW^XLFDT,"NE")
- S CNT=CNT+1
- ;
- Q
- ;
- MFE ; master file entry segment
- ;
- Q:ERROR
- ;
- S VUID=0 F S VUID=$O(@ROOT@($S(SORTBY'="":SORTBY,1:"AMASTERVUID"),VUID)) Q:'VUID D Q:ERROR
- .I SORTBY="" S IEN=$O(@ROOT@("AMASTERVUID",VUID,1,0)) Q:'IEN
- .I SORTBY'="" S IEN=$O(@ROOT@(SORTBY,VUID,0)) Q:'IEN
- .;
- .I FILTER'="" D Q:VALUE'=FILTER
- ..S DATA=$G(^DIC(4.001,+IFN,0)),FILTERBY=$P(DATA,U,9)
- ..I FILTERBY="" S VALUE="ERROR" Q ;add error processing
- ..S IDX=$O(^DIC(4.001,+IFN,1,"B",FILTERBY,0))
- ..S DATA=$G(^DIC(4.001,+IFN,1,+IDX,0)),FIELD=$P(DATA,U,2)
- ..S TYP=$P(DATA,U,3),TYP=$$GET1^DIQ(771.4,(+TYP_","),.01)
- ..S VUID1=$P(DATA,U,13)
- ..S VALUE=$$VVAL(IFN,IEN_",",FIELD,$G(VUID1),TYP)
- .;
- .S ^TMP("HLA",$J,CNT)=$$MFE^XUMFMFE("MUP","",$$NOW^XLFDT,MFI_"@"_VUID)
- .S CNT=CNT+1
- .D ZRT
- ;
- Q
- ;
- ZRT ; data segments
- ;
- Q:ERROR
- ;
- S SEQ=0
- F S SEQ=$O(^DIC(4.001,IFN,1,"ASEQ",SEQ)) Q:'SEQ D
- .S IDX=$O(^DIC(4.001,IFN,1,"ASEQ",SEQ,0)) Q:'IDX
- .S DATA=$G(^DIC(4.001,+IFN,1,+IDX,0)),NAME=$P(DATA,U)
- .S TYP=$P(DATA,U,3),TYP=$$GET1^DIQ(771.4,(+TYP_","),.01)
- .S FIELD=$P(DATA,U,2),SUBFILE=$P(DATA,U,4),MKEY=$P(DATA,U,6)
- .S VUID1=$P(DATA,U,13),WP=$P(DATA,U,16)
- .;
- .I NAME="Status" D Q
- ..S:IFN'=757.33 ^TMP("HLA",$J,CNT)="ZRT"_HLFS_NAME_HLFS_(+$P($$GETSTAT^XTID(IFN,,IEN_","),U))
- ..S:IFN=757.33 ^TMP("HLA",$J,CNT)="ZRT"_HLFS_NAME_HLFS_$$STAT^XUMF502
- ..S CNT=CNT+1
- .;
- .I WP D WP Q
- .;
- .I SUBFILE D SUBFILE Q
- .;
- .S VALUE=$$VALUE(IFN,IEN_",",FIELD,VUID1,TYP) ;Q:VALUE=""
- .;
- .S ^TMP("HLA",$J,CNT)="ZRT"_HLFS_NAME_HLFS_VALUE
- .S CNT=CNT+1
- ;
- Q
- ;
- SUBFILE ;
- ;
- Q:ERROR
- ;
- I NAME="Status" D Q
- .S:IFN'=757.33 ^TMP("HLA",$J,CNT)="ZRT"_HLFS_NAME_HLFS_+$$GETSTAT^XTID(IFN,,IEN_",")
- .S:IFN=757.33 ^TMP("HLA",$J,CNT)="ZRT"_HLFS_NAME_HLFS_$$STAT^XUMF502
- .S CNT=CNT+1
- ;
- N ROOT
- ;
- S ROOT=$$ROOT^DILFD(SUBFILE,(","_IEN_","),1)
- ;
- I MKEY="" S ERROR="1^null lookup column parameter for subfile: "_SUBFILE Q
- ;
- S IEN1=0
- F S IEN1=$O(@ROOT@(IEN1)) Q:'IEN1 D Q:ERROR
- .;
- .I $D(^DIC(4.001,IFN,1,IDX,1,"ASEQ1")) D SUBREC Q
- .;
- .S VALUE=$$VALUE(SUBFILE,IEN1_","_IEN_",",FIELD,VUID1,TYP) ;Q:VALUE=""
- .;
- .S ^TMP("HLA",$J,CNT)="ZRT"_HLFS_NAME_HLFS_VALUE
- .S CNT=CNT+1
- ;
- Q
- ;
- SUBREC ; -- sub-records
- ;
- Q:ERROR
- ;
- N SEQ1,FIELD1,NAME1,VUID2,TYP2
- ;
- S SEQ1=0
- F S SEQ1=$O(^DIC(4.001,IFN,1,IDX,1,"ASEQ1",SEQ1)) Q:'SEQ1 D Q:ERROR
- .S IDX1=$O(^DIC(4.001,IFN,1,IDX,1,"ASEQ1",SEQ1,0))
- .;
- .S NAME1=$P(^DIC(4.001,IFN,1,IDX,1,IDX1,0),U,2)
- .I NAME1="" S ERROR="1^subrecord sequence name missing SUBFILE : "_SUBFILE Q
- .S FIELD1=$P(^DIC(4.001,IFN,1,IDX,1,IDX1,0),U,3)
- .I FIELD1="" S ERROR="1^subrecord sequence number missing SUBFILE : "_SUBFILE Q
- .S VUID2=$P(^DIC(4.001,IFN,1,IDX,1,IDX1,0),U,4)
- .S TYP2=$P(^DIC(4.001,IFN,1,IDX,1,IDX1,0),U,5)
- .;
- .S VALUE=$$VALUE(SUBFILE,IEN1_","_IEN_",",FIELD1,VUID2,TYP2) ;Q:VALUE=""
- .;
- .S ^TMP("HLA",$J,CNT)="ZRT"_HLFS_NAME1_HLFS_VALUE
- .S CNT=CNT+1
- ;
- Q
- ;
- SEND ; -- send HL7 message
- ;
- S HLP("PRIORITY")="I"
- D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"GM",1,.HLRESLT)
- ;
- ; check for error
- I ($P($G(HLRESLT),U,3)'="") D Q
- .S ERROR=1_U_$P(HLRESLT,HLFS,3)_U_$P(HLRESLT,HLFS,2)_U_$P(HLRESLT,U)
- ;
- ; successful call, message ID returned
- S ERROR="0^"_$P($G(HLRESLT),U,1)
- ;
- Q
- ;
- EXIT ; -- exit
- ;
- D CLEAN^DILF
- ;
- K ^TMP("HLA",$J)
- ;
- Q
- ;
- WP ;
- ;
- N WP,I,J
- ;
- S I=$$GET1^DIQ(IFN,IEN_",",FIELD,,"WP")
- ;
- Q:'$D(WP)
- ;
- S ^TMP("HLA",$J,CNT)="ZRT"_HLFS_NAME_HLFS_$G(WP(1))
- ;
- S I=1,J=1
- F S I=$O(WP(I)) Q:'I D
- .S ^TMP("HLA",$J,CNT,J)=WP(I)
- .S J=J+1
- ;
- S CNT=CNT+1
- ;
- Q
- ;
- ESC(VALUE) ;
- ;
- I VALUE["^" F Q:VALUE'["^" D
- .S VALUE=$P(VALUE,"^")_"\F\"_$P(VALUE,"^",2,9999)
- I VALUE["&" F Q:VALUE'["&" D
- .S VALUE=$P(VALUE,"&")_"\T\"_$P(VALUE,"&",2,9999)
- ;
- Q VALUE
- ;
- VVAL(IFN,IENS,FIELD,VUID,TYP) ;
- ;
- Q:IFN="" "" Q:FIELD="" "" Q:IENS="" ""
- ;
- S:$G(TYP)="" TYP="ST"
- S VUID=$S($G(VUID)'="":":99.99",1:"")
- I IFN=757.33,$G(VUID)'="" S VUID=":5"
- ;
- S VALUE=$$GET1^DIQ(IFN,IENS,FIELD_VUID) Q:VALUE="" ""
- ;S VALUE=$$GET1^DIQ(IFN,IENS,FIELD) Q:VALUE="" ""
- S VALUE=$$DTYP^XUMFP(VALUE,TYP,HLCS,1)
- S VALUE=$$ESC(VALUE)
- ;
- ;I IFN=757.32,FIELD=.02 Q $$MAPDEF
- ;
- ;Q $$VAL^XUMF0(IFN,FIELD,VUID,VALUE,IENS)
- ;
- Q VALUE
- ;
- VALUE(IFN,IENS,FIELD,VUID,TYP) ;
- ;
- Q:IFN="" "" Q:FIELD="" "" Q:IENS="" ""
- ;
- S:$G(TYP)="" TYP="ST"
- ;
- S VALUE=$$GET1^DIQ(IFN,IENS,FIELD) Q:VALUE="" ""
- S VALUE=$$DTYP^XUMFP(VALUE,TYP,HLCS,1)
- S VALUE=$$ESC(VALUE)
- ;
- I IFN=757.33,FIELD=.02 Q $$MAPDEF
- ;
- Q VALUE
- ;
- MAPDEF() ;
- ;
- N X,Y
- S X=$O(^LEX(757.32,"B",VALUE,0)) Q:'X 0
- S Y=$G(^LEX(757.32,X,2))
- Q $P(Y,U,3)
- ;
- XUMFQR ;ISS/RAM - Master File Query Response ;06/28/00
- +1 ;;8.0;KERNEL;**407,502**;Jul 10, 1995;Build 18
- +2 ;
- +3 QUIT
- +4 ;
- MAIN ; -- main
- +1 ;
- +2 NEW FIELD1,IDX,IDX1,NAME1,SUBFILE1,DATA1,IEN1,TYP1,MKEY,MKEY1,TYP,VUID,VUID1
- +3 NEW MFI,SEQ,NAME,QRD,SEQ,SUBFILE,IEN,CNT,DATA,ERROR,SORTBY,FILTERBY,FILTER,ERRCNT
- +4 ;
- +5 DO INIT
- DO PROCESS
- DO MFR
- DO SEND
- DO EXIT
- +6 ;
- +7 QUIT
- +8 ;
- INIT ; -- initialize
- +1 ;
- +2 KILL ^TMP("HLA",$JOB)
- +3 ;
- +4 SET ERROR=0
- SET CNT=1
- SET ERRCNT=0
- +5 ;
- +6 SET HLFS=HL("FS")
- SET HLCS=$EXTRACT(HL("ECH"))
- SET HLSCS=$EXTRACT(HL("ECH"),4)
- +7 ;
- +8 QUIT
- +9 ;
- PROCESS ; -- pull message text
- +1 ;
- +2 FOR
- XECUTE HLNEXT
- IF HLQUIT'>0
- QUIT
- Begin DoDot:1
- +3 IF $PIECE(HLNODE,HLFS)=""
- QUIT
- +4 IF "^MSH^MSA^QRD^"'[(U_$PIECE(HLNODE,HLFS)_U)
- QUIT
- +5 DO @($PIECE(HLNODE,HLFS))
- End DoDot:1
- +6 ;
- +7 QUIT
- +8 ;
- MSH ; -- MSH segment
- +1 ;
- +2 QUIT
- +3 ;
- QRD ; -- QRD segment
- +1 ;
- +2 IF ERROR
- QUIT
- +3 ;
- +4 SET MFI=$PIECE(HLNODE,HLFS,10)
- SET FILTER=$PIECE(MFI,HLCS,2)
- SET MFI=$PIECE(MFI,HLCS)
- +5 IF MFI=""
- SET ERROR="1^MFI not resolved HLNODE: "_$TRANSLATE(HLNODE,HLFS,"#")
- QUIT
- +6 SET IFN=$ORDER(^DIC(4.001,"MFID",MFI,0))
- +7 IF 'IFN
- SET ERROR="1^IFN not resolved HLNODE: "_$TRANSLATE(HLNODE,HLFS,"#")
- QUIT
- +8 IF '$$VFILE^DILFD(IFN)
- SET ERROR="1^invalid file number"
- QUIT
- +9 SET DATA=$GET(^DIC(4.001,+IFN,0))
- SET SORTBY=$PIECE(DATA,U,8)
- SET FILTERBY=$PIECE(DATA,U,9)
- +10 ;
- +11 ; -- get root of file
- +12 SET ROOT=$$ROOT^DILFD(IFN,,1)
- +13 ;
- +14 SET QRD=HLNODE
- +15 ;
- +16 QUIT
- +17 ;
- MFR ; -- response
- +1 ;
- +2 DO MSA
- DO QRD1
- DO MFI
- DO MFE
- +3 ;
- +4 QUIT
- +5 ;
- MSA ; -- Acknowledgement
- +1 ;
- +2 NEW X
- +3 SET X="MSA"_HLFS_$SELECT(ERROR:"AE",1:"AA")_HLFS_HL("MID")_HLFS_$PIECE(ERROR,U,2)
- +4 SET ^TMP("HLA",$JOB,CNT)=X
- +5 SET CNT=CNT+1
- +6 ;
- +7 QUIT
- +8 ;
- QRD1 ; -- query definition segment
- +1 ;
- +2 IF ERROR
- QUIT
- +3 ;
- +4 SET ^TMP("HLA",$JOB,CNT)=$GET(QRD)
- +5 SET CNT=CNT+1
- +6 ;
- +7 QUIT
- +8 ;
- MFI ; master file identifier segment
- +1 ;
- +2 IF ERROR
- QUIT
- +3 ;
- +4 SET ^TMP("HLA",$JOB,CNT)=$$MFI^XUMFMFI(MFI,"Standard Terminology","MUP",$$NOW^XLFDT,$$NOW^XLFDT,"NE")
- +5 SET CNT=CNT+1
- +6 ;
- +7 QUIT
- +8 ;
- MFE ; master file entry segment
- +1 ;
- +2 IF ERROR
- QUIT
- +3 ;
- +4 SET VUID=0
- FOR
- SET VUID=$ORDER(@ROOT@($SELECT(SORTBY'="":SORTBY,1:"AMASTERVUID"),VUID))
- IF 'VUID
- QUIT
- Begin DoDot:1
- +5 IF SORTBY=""
- SET IEN=$ORDER(@ROOT@("AMASTERVUID",VUID,1,0))
- IF 'IEN
- QUIT
- +6 IF SORTBY'=""
- SET IEN=$ORDER(@ROOT@(SORTBY,VUID,0))
- IF 'IEN
- QUIT
- +7 ;
- +8 IF FILTER'=""
- Begin DoDot:2
- +9 SET DATA=$GET(^DIC(4.001,+IFN,0))
- SET FILTERBY=$PIECE(DATA,U,9)
- +10 ;add error processing
- IF FILTERBY=""
- SET VALUE="ERROR"
- QUIT
- +11 SET IDX=$ORDER(^DIC(4.001,+IFN,1,"B",FILTERBY,0))
- +12 SET DATA=$GET(^DIC(4.001,+IFN,1,+IDX,0))
- SET FIELD=$PIECE(DATA,U,2)
- +13 SET TYP=$PIECE(DATA,U,3)
- SET TYP=$$GET1^DIQ(771.4,(+TYP_","),.01)
- +14 SET VUID1=$PIECE(DATA,U,13)
- +15 SET VALUE=$$VVAL(IFN,IEN_",",FIELD,$GET(VUID1),TYP)
- End DoDot:2
- IF VALUE'=FILTER
- QUIT
- +16 ;
- +17 SET ^TMP("HLA",$JOB,CNT)=$$MFE^XUMFMFE("MUP","",$$NOW^XLFDT,MFI_"@"_VUID)
- +18 SET CNT=CNT+1
- +19 DO ZRT
- End DoDot:1
- IF ERROR
- QUIT
- +20 ;
- +21 QUIT
- +22 ;
- ZRT ; data segments
- +1 ;
- +2 IF ERROR
- QUIT
- +3 ;
- +4 SET SEQ=0
- +5 FOR
- SET SEQ=$ORDER(^DIC(4.001,IFN,1,"ASEQ",SEQ))
- IF 'SEQ
- QUIT
- Begin DoDot:1
- +6 SET IDX=$ORDER(^DIC(4.001,IFN,1,"ASEQ",SEQ,0))
- IF 'IDX
- QUIT
- +7 SET DATA=$GET(^DIC(4.001,+IFN,1,+IDX,0))
- SET NAME=$PIECE(DATA,U)
- +8 SET TYP=$PIECE(DATA,U,3)
- SET TYP=$$GET1^DIQ(771.4,(+TYP_","),.01)
- +9 SET FIELD=$PIECE(DATA,U,2)
- SET SUBFILE=$PIECE(DATA,U,4)
- SET MKEY=$PIECE(DATA,U,6)
- +10 SET VUID1=$PIECE(DATA,U,13)
- SET WP=$PIECE(DATA,U,16)
- +11 ;
- +12 IF NAME="Status"
- Begin DoDot:2
- +13 IF IFN'=757.33
- SET ^TMP("HLA",$JOB,CNT)="ZRT"_HLFS_NAME_HLFS_(+$PIECE($$GETSTAT^XTID(IFN,,IEN_","),U))
- +14 IF IFN=757.33
- SET ^TMP("HLA",$JOB,CNT)="ZRT"_HLFS_NAME_HLFS_$$STAT^XUMF502
- +15 SET CNT=CNT+1
- End DoDot:2
- QUIT
- +16 ;
- +17 IF WP
- DO WP
- QUIT
- +18 ;
- +19 IF SUBFILE
- DO SUBFILE
- QUIT
- +20 ;
- +21 ;Q:VALUE=""
- SET VALUE=$$VALUE(IFN,IEN_",",FIELD,VUID1,TYP)
- +22 ;
- +23 SET ^TMP("HLA",$JOB,CNT)="ZRT"_HLFS_NAME_HLFS_VALUE
- +24 SET CNT=CNT+1
- End DoDot:1
- +25 ;
- +26 QUIT
- +27 ;
- SUBFILE ;
- +1 ;
- +2 IF ERROR
- QUIT
- +3 ;
- +4 IF NAME="Status"
- Begin DoDot:1
- +5 IF IFN'=757.33
- SET ^TMP("HLA",$JOB,CNT)="ZRT"_HLFS_NAME_HLFS_+$$GETSTAT^XTID(IFN,,IEN_",")
- +6 IF IFN=757.33
- SET ^TMP("HLA",$JOB,CNT)="ZRT"_HLFS_NAME_HLFS_$$STAT^XUMF502
- +7 SET CNT=CNT+1
- End DoDot:1
- QUIT
- +8 ;
- +9 NEW ROOT
- +10 ;
- +11 SET ROOT=$$ROOT^DILFD(SUBFILE,(","_IEN_","),1)
- +12 ;
- +13 IF MKEY=""
- SET ERROR="1^null lookup column parameter for subfile: "_SUBFILE
- QUIT
- +14 ;
- +15 SET IEN1=0
- +16 FOR
- SET IEN1=$ORDER(@ROOT@(IEN1))
- IF 'IEN1
- QUIT
- Begin DoDot:1
- +17 ;
- +18 IF $DATA(^DIC(4.001,IFN,1,IDX,1,"ASEQ1"))
- DO SUBREC
- QUIT
- +19 ;
- +20 ;Q:VALUE=""
- SET VALUE=$$VALUE(SUBFILE,IEN1_","_IEN_",",FIELD,VUID1,TYP)
- +21 ;
- +22 SET ^TMP("HLA",$JOB,CNT)="ZRT"_HLFS_NAME_HLFS_VALUE
- +23 SET CNT=CNT+1
- End DoDot:1
- IF ERROR
- QUIT
- +24 ;
- +25 QUIT
- +26 ;
- SUBREC ; -- sub-records
- +1 ;
- +2 IF ERROR
- QUIT
- +3 ;
- +4 NEW SEQ1,FIELD1,NAME1,VUID2,TYP2
- +5 ;
- +6 SET SEQ1=0
- +7 FOR
- SET SEQ1=$ORDER(^DIC(4.001,IFN,1,IDX,1,"ASEQ1",SEQ1))
- IF 'SEQ1
- QUIT
- Begin DoDot:1
- +8 SET IDX1=$ORDER(^DIC(4.001,IFN,1,IDX,1,"ASEQ1",SEQ1,0))
- +9 ;
- +10 SET NAME1=$PIECE(^DIC(4.001,IFN,1,IDX,1,IDX1,0),U,2)
- +11 IF NAME1=""
- SET ERROR="1^subrecord sequence name missing SUBFILE : "_SUBFILE
- QUIT
- +12 SET FIELD1=$PIECE(^DIC(4.001,IFN,1,IDX,1,IDX1,0),U,3)
- +13 IF FIELD1=""
- SET ERROR="1^subrecord sequence number missing SUBFILE : "_SUBFILE
- QUIT
- +14 SET VUID2=$PIECE(^DIC(4.001,IFN,1,IDX,1,IDX1,0),U,4)
- +15 SET TYP2=$PIECE(^DIC(4.001,IFN,1,IDX,1,IDX1,0),U,5)
- +16 ;
- +17 ;Q:VALUE=""
- SET VALUE=$$VALUE(SUBFILE,IEN1_","_IEN_",",FIELD1,VUID2,TYP2)
- +18 ;
- +19 SET ^TMP("HLA",$JOB,CNT)="ZRT"_HLFS_NAME1_HLFS_VALUE
- +20 SET CNT=CNT+1
- End DoDot:1
- IF ERROR
- QUIT
- +21 ;
- +22 QUIT
- +23 ;
- SEND ; -- send HL7 message
- +1 ;
- +2 SET HLP("PRIORITY")="I"
- +3 DO GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"GM",1,.HLRESLT)
- +4 ;
- +5 ; check for error
- +6 IF ($PIECE($GET(HLRESLT),U,3)'="")
- Begin DoDot:1
- +7 SET ERROR=1_U_$PIECE(HLRESLT,HLFS,3)_U_$PIECE(HLRESLT,HLFS,2)_U_$PIECE(HLRESLT,U)
- End DoDot:1
- QUIT
- +8 ;
- +9 ; successful call, message ID returned
- +10 SET ERROR="0^"_$PIECE($GET(HLRESLT),U,1)
- +11 ;
- +12 QUIT
- +13 ;
- EXIT ; -- exit
- +1 ;
- +2 DO CLEAN^DILF
- +3 ;
- +4 KILL ^TMP("HLA",$JOB)
- +5 ;
- +6 QUIT
- +7 ;
- WP ;
- +1 ;
- +2 NEW WP,I,J
- +3 ;
- +4 SET I=$$GET1^DIQ(IFN,IEN_",",FIELD,,"WP")
- +5 ;
- +6 IF '$DATA(WP)
- QUIT
- +7 ;
- +8 SET ^TMP("HLA",$JOB,CNT)="ZRT"_HLFS_NAME_HLFS_$GET(WP(1))
- +9 ;
- +10 SET I=1
- SET J=1
- +11 FOR
- SET I=$ORDER(WP(I))
- IF 'I
- QUIT
- Begin DoDot:1
- +12 SET ^TMP("HLA",$JOB,CNT,J)=WP(I)
- +13 SET J=J+1
- End DoDot:1
- +14 ;
- +15 SET CNT=CNT+1
- +16 ;
- +17 QUIT
- +18 ;
- ESC(VALUE) ;
- +1 ;
- +2 IF VALUE["^"
- FOR
- IF VALUE'["^"
- QUIT
- Begin DoDot:1
- +3 SET VALUE=$PIECE(VALUE,"^")_"\F\"_$PIECE(VALUE,"^",2,9999)
- End DoDot:1
- +4 IF VALUE["&"
- FOR
- IF VALUE'["&"
- QUIT
- Begin DoDot:1
- +5 SET VALUE=$PIECE(VALUE,"&")_"\T\"_$PIECE(VALUE,"&",2,9999)
- End DoDot:1
- +6 ;
- +7 QUIT VALUE
- +8 ;
- VVAL(IFN,IENS,FIELD,VUID,TYP) ;
- +1 ;
- +2 IF IFN=""
- QUIT ""
- IF FIELD=""
- QUIT ""
- IF IENS=""
- QUIT ""
- +3 ;
- +4 IF $GET(TYP)=""
- SET TYP="ST"
- +5 SET VUID=$SELECT($GET(VUID)'="":":99.99",1:"")
- +6 IF IFN=757.33
- IF $GET(VUID)'=""
- SET VUID=":5"
- +7 ;
- +8 SET VALUE=$$GET1^DIQ(IFN,IENS,FIELD_VUID)
- IF VALUE=""
- QUIT ""
- +9 ;S VALUE=$$GET1^DIQ(IFN,IENS,FIELD) Q:VALUE="" ""
- +10 SET VALUE=$$DTYP^XUMFP(VALUE,TYP,HLCS,1)
- +11 SET VALUE=$$ESC(VALUE)
- +12 ;
- +13 ;I IFN=757.32,FIELD=.02 Q $$MAPDEF
- +14 ;
- +15 ;Q $$VAL^XUMF0(IFN,FIELD,VUID,VALUE,IENS)
- +16 ;
- +17 QUIT VALUE
- +18 ;
- VALUE(IFN,IENS,FIELD,VUID,TYP) ;
- +1 ;
- +2 IF IFN=""
- QUIT ""
- IF FIELD=""
- QUIT ""
- IF IENS=""
- QUIT ""
- +3 ;
- +4 IF $GET(TYP)=""
- SET TYP="ST"
- +5 ;
- +6 SET VALUE=$$GET1^DIQ(IFN,IENS,FIELD)
- IF VALUE=""
- QUIT ""
- +7 SET VALUE=$$DTYP^XUMFP(VALUE,TYP,HLCS,1)
- +8 SET VALUE=$$ESC(VALUE)
- +9 ;
- +10 IF IFN=757.33
- IF FIELD=.02
- QUIT $$MAPDEF
- +11 ;
- +12 QUIT VALUE
- +13 ;
- MAPDEF() ;
- +1 ;
- +2 NEW X,Y
- +3 SET X=$ORDER(^LEX(757.32,"B",VALUE,0))
- IF 'X
- QUIT 0
- +4 SET Y=$GET(^LEX(757.32,X,2))
- +5 QUIT $PIECE(Y,U,3)
- +6 ;