IMRXOR ;ISC-SF/JLI,HCIOFO/FT-XOR ENCRYPTION FOR IMR POINTERS ;5/22/95 12:12 ;;2.1;IMMUNOLOGY CASE REGISTRY;;Feb 09, 1998 I '$D(^XUSEC("IMRA",DUZ)) S IMRLOC="IMRXOR" D ACESSERR^IMRERR,H^XUS EN1 ; entry point from post-init I '$D(IMRSTN) D IMROPN Q:'$D(IMRSTN) XOR S IMRXORZ="" I X'?1N.N S IMRXORZ=X,X="" F IMRXORY=0:0 S IMRXORX2=$E(IMRXORZ) Q:IMRXORX2'?1N S X=X_IMRXORX2,IMRXORZ=$E(IMRXORZ,2,99) S (IMRXORX2,IMRXORX4)=+X,(IMRXORA,IMRXORB)=0,IMRXORN=7 B17 S IMRXORM="0000^0001^0010^0011^0100^0101^0110^0111^1000^1001^1010^1011^1100^1101^1110^1111^" S X=0 F IMRXORI=0:1 S IMRXOR2=IMRXORX2#16,IMRXORX2=IMRXORX2\16 D XOR1 S IMRXORB=IMRXORB+IMRXOR2 I (IMRXORB=IMRXORX4)&(IMRXORI>IMRXORN) Q S X=X_IMRXORZ K IMRXOR2,IMRXOR3,IMRXOR4,IMRXORM,IMRXORI,IMRXORA,IMRXORB,IMRXORJ,IMRXORX,IMRXORX2,IMRXORX4,IMRXORZ,IMRLOC,IMRXORN,IMRXORY Q XOR1 ; S IMRXOR3="1101",IMRXOR4=$P(IMRXORM,"^",IMRXOR2+1),IMRXORX="" F IMRXORJ=1:1:4 S IMRXORX=IMRXORX_($E(IMRXOR3,IMRXORJ)'=$E(IMRXOR4,IMRXORJ)) S IMRXORX=$F(IMRXORM,IMRXORX),IMRXORX=IMRXORX/5-1 I IMRXORI>0 F IMRXORJ=1:1:IMRXORI S IMRXORX=IMRXORX*16,IMRXOR2=IMRXOR2*16 S X=X+IMRXORX Q IMROPN ; I $D(^IMR(158.9,1,0)) S IMRSTN=$P(^(0),U),IMRSTN=$P(^DIC(4,+IMRSTN,99),U) Q Q SPTNAME ; set logic for Activate 'Name' Pointer field ; called from ^DD(158.9,.07,1,1,1) Q:+$P($G(^IMR(158.9,D0,0)),U,7)=0 F IMRI=0:0 S IMRI=$O(^IMR(158,IMRI)) Q:IMRI'>0 S X=+^(IMRI,0) D IMRXOR I $D(^DPT(X,0)) S ^IMR(158,IMRI,103)=X,^IMR(158,"BP",X,IMRI)="" K IMRI Q KPTNAME ; kill logic for Activate 'Name' Pointer field ; called from ^DD(158.9,.07,1,1,2) F IMRI=0:0 S IMRI=$O(^IMR(158,IMRI)) Q:IMRI'>0 K ^(IMRI,103) K ^IMR(158,"BP"),IMRI Q A17 ; S IMRXORZ="" I X'?1N.N S IMRXORZ=X,X="" F IMRXORY=0:0 S IMRXORX2=$E(IMRXORZ) Q:IMRXORX2'?1N S X=X_IMRXORX2,IMRXORZ=$E(IMRXORZ,2,99) S (IMRXORX2,IMRXORX4)=+X,(IMRXORA,IMRXORB)=0,IMRXORN=4 G B17