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

XUPCZRT.m

Go to the documentation of this file.
  1. XUPCZRT ;BPFO/PB - KERNEL - CALLABLE ENTRY POINTS FOR ZRT SEGMENT ; 15 FEBRUARY 2017 12:58 PM
  1. ;;8.0;KERNEL;**671**;Jul 10, 1995;Build 16
  1. ;
  1. ;
  1. Q
  1. ZRT ;Manipulate update of MFN ZRT segment for 8932.1 file
  1. I IEN,((NAME="Term")!(NAME="Status")) K XXIEN ;This is the indication that it's first update for any subfile
  1. ;S:$D(HLNODE(1)) HLNODE=HLNODE_HLNODE(1)
  1. G 89321:IFN=8932.1
  1. Q
  1. ;
  1. 89321 ;Manipulate update of MFN ZRT segment for 8932.1 File
  1. I NAME="Status" K XXIEN Q ;XXIEN01 is the .01 of record without IEN
  1. I NAME="VistA_Textual_Definition" D S OUT=1 Q
  1. .I $P(HLNODE,HLFS,3)="""""" D Q
  1. ..S $P(HLNODE,HLFS,3)=""
  1. ..;Q ;QUIT here means, we put extra NULL line if WP field deleted. its for VETS-Discovery Functionality testing.
  1. ..D WP^DIE(8932.1,IENS,11,"K","@","ERR")
  1. ..I $D(ERR) S ERROR="1^Error in delete file: 8932.1 of WP field 11, IENS="_IENS D EM^XUMF1H(ERROR,.ERR) K ERR
  1. ..Q
  1. .;WP ;codng from WP^XUMF1H we need to do so because coding there is: D SEGPRSE^XUMFXHL7("HLNODE","X",HLFS,60)
  1. .;
  1. .N X,Y,A,I,CNT,X1,X2,ESC
  1. .D SEGPRSE^XUMFXHL7("HLNODE","X",HLFS)
  1. .S CNT=1
  1. .S A(CNT)=X(2)
  1. .S I=0
  1. .F S I=$O(X(2,I)) Q:'I D
  1. ..S Y=X(2,I)
  1. ..I $E(Y,1)=" " D Q
  1. ...S A(CNT)=A(CNT)_" "
  1. ...Q:$P(Y," ",2)=""
  1. ...S CNT=CNT+1
  1. ...S A(CNT)=$P(Y," ",2,99)
  1. ..S X1=$P(Y," ",1)
  1. ..S X2=$P(Y," ",2,99)
  1. ..S A(CNT)=A(CNT)_X1_$S(X2="":"",1:" ")
  1. ..Q:X2=""
  1. ..S CNT=CNT+1
  1. ..S A(CNT)=X2
  1. .;
  1. .D UNESCWP^XUMF0(.A,.HL)
  1. .;
  1. .D WP^DIE(IFN,IENS,11,"K","A","ERR")
  1. .;
  1. .I $D(ERR) D
  1. ..S ERROR="1^wp field error"
  1. ..D EM^XUMF1H(ERROR,.ERR) K ERR
  1. .;
  1. .Q
  1. ;
  1. S:$D(HLNODE(1)) HLNODE=HLNODE_HLNODE(1)
  1. Q:IEN
  1. I NAME="Term" S XXIEN(.01)=$$UNESC^XUMF0($P(HLNODE,HLFS,3),.HL),OUT=1 Q
  1. I NAME="VistA_VA_Code" S XXIEN(5)=$P(HLNODE,HLFS,3),OUT=1 S:XXIEN(5)="""""" XXIEN(5)="" Q ;Field #5 "F" X-ref
  1. I NAME="VistA_ASC_X12_Code" S XXIEN(6)=$P(HLNODE,HLFS,3),OUT=1 S:XXIEN(6)="""""" XXIEN(6)="" Q ;Field #6 "G" X-REF
  1. D ;Check if all definition fields are included in ZRT segment
  1. .N ERMM
  1. .S:'$D(XXIEN(.01)) ERMM=ERMM_"Term,"
  1. .S:'$D(XXIEN(5)) ERMM=ERMM_",VistA_VA_Code,"
  1. .S:'$D(XXIEN(6)) ERMM=ERMM_",VistA_ASC_X12_Code"
  1. .I $D(ERMM) S ERROR="1^"_ERMM_"^Missing in ZRT Segment"
  1. N I,X5,X6,XX,NEWIEN
  1. S NEWIEN=0
  1. S X5=$S($L(XXIEN(5)):1,1:0) S:'X5 XXIEN(5)=" "
  1. S X6=$S($L(XXIEN(6)):1,1:0) S:'X6 XXIEN(6)=" "
  1. I X5 S I=0 F S I=$O(^USC(8932.1,"F",XXIEN(5),I)) Q:'I S XXIEN(5,I)=""
  1. I X6 S I=0 F S I=$O(^USC(8932.1,"G",XXIEN(6),I)) Q:'I S XXIEN(6,I)=""
  1. I 'X5!('X6) S I=0 F S I=$O(^USC(8932.1,I)) Q:'I S XX=^(I,0) S:'$L($P(XX,U,6))&'X5 XXIEN(5,I)="" S:'$L($P(XX,U,7))&'X6 XXIEN(6,I)=""
  1. S I=0 F S I=$O(XXIEN(5,I)) Q:'I K:'$D(XXIEN(6,I)) XXIEN(5,I)
  1. S I=0 F S I=$O(XXIEN(6,I)) Q:'I K:'$D(XXIEN(5,I)) XXIEN(6,I)
  1. ;New entry should be created.
  1. I '$O(XXIEN(5,0))!'$O(XXIEN(6,0)) D NEW,SM1(IEN,1,0) Q ;New entry
  1. ;
  1. ;So now we have one or multiple results
  1. K XX S I=0 F S I=$O(XXIEN(5,I)) Q:'I S XX(I)=""
  1. S I=0 F S I=$O(XXIEN(6,I)) Q:'I S XX(I)=""
  1. S I=$O(XX(0)) D SM1(I,1,0) K XX(I) ;First IEN Set master to 0 No status set
  1. S IEN=I,IENS=IEN_","
  1. S I=0 F S I=$O(XX(I)) Q:'I D SM1(I,0,1) ;Set master to 0 and status to 0 as well.
  1. ;I '$O(XXIEN(5,$O(XXIEN(5,0)))) ; Multiple entries in field 6
  1. ;I '$O(XXIEN(5,$O(XXIEN(6,0)))) ; Multiple entries in field 5
  1. Q
  1. NEW ;New entry
  1. N X,DIC,Y
  1. ;
  1. S XUMF=1
  1. D CHK^DIE(IFN,.01,,XXIEN(.01),.X,"ERR")
  1. I $D(ERR) S ERROR="1^Error - .01 is invalid"_" File #: "_IFN_" HLNODE="_HLNODE Q
  1. K DIC S DIC=IFN,DIC(0)="F" D FILE^DICN K DIC
  1. I Y="-1" S ERROR="1^Error - stub entry IFN: "_IFN_" failed HLNODE: "_HLNODE Q
  1. S IEN=+Y,RECORD("NEW")=1
  1. S IENS=IEN_","
  1. S NEWIEN=1
  1. Q
  1. SM1(IEN,XY,X0) ;Set master to one/zero and possibly status to 0
  1. ;XY=Master Yes/No
  1. ;If X0=1 Status set to 0?
  1. N ROOT,IENS,XUMF,X
  1. D CHK^DIE(IFN,.01,,XXIEN(.01),.X,"ERR")
  1. I $D(ERR) S ERROR="1^Error - .01 from VETS is invalid"_" File #: "_IFN_" HLNODE="_HLNODE Q
  1. S IENS=IEN_","
  1. S ROOT=$$ROOT^DILFD(IFN,,1)
  1. M RECORD("BEFORE")=@ROOT@(IEN)
  1. S RECORD("STATUS")=$$GETSTAT^XTID(IFN,,IEN_",")
  1. S FDA(IFN,IENS,.01)=XXIEN(.01) ;Validation??
  1. S FDA(IFN,IENS,5)=$S(XXIEN(5)=" ":"@",1:XXIEN(5))
  1. S FDA(IFN,IENS,6)=$S(XXIEN(6)=" ":"@",1:XXIEN(6))
  1. S FDA(IFN,IENS,99.99)=VUID
  1. S FDA(IFN,IENS,99.98)=XY
  1. N ERR
  1. S XUMF=1
  1. D FILE^DIE("E","FDA","ERR")
  1. I $D(ERR) D Q
  1. .S ERROR="1^VUID update error IFN: "_IFN_" IEN: "_IEN_" VUID: "_VUID_" HLNODE: "_HLNODE
  1. .D EM^XUMF1H(ERROR,.ERR) K ERR
  1. D:X0 ;SET STATUS TO 0
  1. .N FDA,SUBFILE
  1. .S SUBFILE=8932.199
  1. .;I VALUE=$P($$GETSTAT^XTID(IFN,,IEN_","),U) Q
  1. .S FDA(SUBFILE,"?+1,"_IENS,.01)=$$NOW^XLFDT
  1. .S FDA(SUBFILE,"?+1,"_IENS,.02)=0
  1. .D UPDATE^DIE(,"FDA",,"ERR")
  1. .I $D(ERR) D
  1. ..S ERROR="1^effective date and status error"
  1. ..D EM^XUMF1H(ERROR,.ERR) K ERR
  1. ;
  1. ;
  1. D ADD^XUMF1H
  1. ;
  1. ; clean multiple flag
  1. K:'$D(XIEN(IEN)) XIEN
  1. S XIEN(IEN)=$G(XIEN(IEN))+1
  1. ;
  1. Q
  1. ;
  1. P89321 ;Post processing logic. 4.001,2 POST-PROCESSING LOGIC 2;E1,245 MUMPS
  1. Q:$G(ERROR)
  1. N I,X0,X1,X2,C,XV
  1. S I=0,C=10 F S I=$O(^USC(8932.1,I)) Q:'I S XV=$G(^(I,"VUID"),"^"),XV=$P(XV,U) D:'$L(XV)
  1. .S X0=$G(^USC(8932.1,I,0))
  1. .S C=C+1,ERR("DIERR",1,"TEXT",C)="EIN="_I_" .01="_$P(X0,U)_" VA CODE="_$P(X0,U,6)_" X12 CODE="_$P(X0,U,7)
  1. D:$D(ERR)
  1. .S ERR("DIERR",1,"TEXT",10)="List of records not associated with VUID on site: "_$$SITE^VASITE()
  1. .S ERROR="1^Missing VUIDs in update of IFN: "_IFN_" Listing of records see in MFS ERROR/WARNING/INFO"
  1. .Q
  1. Q
  1. D89321 ; Discovery coding to get conversion to escape characters.. + set VistA_Individual_Flag to I/N
  1. N II,CNT,CNT1,VAL,VAL1
  1. S CNT=0,(VAL,VAL1)=""
  1. F S CNT=$O(^TMP("HLA",$J,CNT)) Q:'CNT S II=$G(^TMP("HLA",$J,CNT)) Q:'$L(II) Q:$G(ERROR) D:$P(II,HLFS)="ZRT"
  1. .S VAL=$P(II,HLFS,3)
  1. .Q:'$L(VAL)
  1. .S:$P(II,HLFS,2)="VistA_Individual_Flag" VAL=$E(VAL,1)
  1. .S VAL=$$ESC(VAL,.HL)
  1. .S $P(II,HLFS,3)=VAL
  1. .S ^TMP("HLA",$J,CNT)=II
  1. .D:$O(^TMP("HLA",$J,CNT,0))
  1. ..S CNT1=0 F S CNT1=$O(^TMP("HLA",$J,CNT,CNT1)) Q:'CNT1 D
  1. ...S VAL=$G(^TMP("HLA",$J,CNT,CNT1))
  1. ...S ^TMP("HLA",$J,CNT,CNT1)=$$ESC(VAL,.HL)
  1. Q
  1. ESC(VALUE,HL) ;Escape value
  1. N ESC,ESCFS,ESCCMP,ESCSUB,ESCREP,ESCESC,ESCSEQ,CVRT
  1. S ESC=$E(HL("ECH"),3)
  1. S ESCFS=ESC_"F"_ESC S CVRT("ESCFS")=HL("FS")
  1. S ESCCMP=ESC_"S"_ESC S CVRT("ESCCMP")=$E(HL("ECH"),1)
  1. S ESCREP=ESC_"R"_ESC S CVRT("ESCREP")=$E(HL("ECH"),2)
  1. S ESCESC=ESC_"E"_ESC S CVRT("ESCESC")=ESC
  1. S ESCSUB=ESC_"T"_ESC S CVRT("ESCSUB")=$E(HL("ECH"),4)
  1. ;F ESCSEQ="ESCFS","ESCCMP","ESCSUB","ESCREP","ESCESC" D
  1. F ESCSEQ="ESCFS","ESCCMP","ESCSUB","ESCREP" D
  1. .F Q:VALUE'[CVRT(ESCSEQ) D
  1. ..S VALUE=$P(VALUE,CVRT(ESCSEQ))_@ESCSEQ_$P(VALUE,CVRT(ESCSEQ),2,9999)
  1. Q VALUE