IMRXDRPT ;SF-IRMFO.SEA/JLI,HCIOFO/DDA - ROUTINE TO MERGE ENTRIES IN ICR FILE FOR PATIENT MERGE ;5/19/98 08:55 ;;2.1;IMMUNOLOGY CASE REGISTRY;**2**;Feb 09,1998 EN(ARRAY) ; Entry point for merging. Array is the NAME of array in which from and to entries are indicated. ; N FROMX,TO,X,FROMXA,TOA,ARRAY1,FRX,TOX,FROM S ARRAY1=$NA(^TMP($J,"IMRMRG1")) K @ARRAY1 S FROM=ARRAY1 F FROMX=0:0 S FROMX=$O(@ARRAY@(FROMX)) Q:FROMX'>0 D . S TO=$O(@ARRAY@(FROMX,0)) . S FRX=$O(@ARRAY@(FROMX,TO,"")) . S TOX=$O(@ARRAY@(FROMX,TO,FRX,"")) . S X=FROMX D XOR^IMRXOR S FROMXA=+$O(^IMR(158,"B",X,"")) . S X=TO D XOR^IMRXOR S TOA=+$O(^IMR(158,"B",X,"")) . ; Quit if there are no equivalent IMR records. . Q:(FROMXA'>0)&(TOA'>0) . ; If there is only a 'to' IMR record, nil tracking dates and quit . I FROMXA'>0 D NIL(TOA) Q . ; If there is only a 'from' IMR record, create one to merge 'to' . I TOA'>0 D .. N IMRFDA,IMRIEN .. S X=TO D XOR^IMRXOR .. S IMRFDA(158,"+1,",.01)=X .. D UPDATE^DIE("","IMRFDA","IMRIEN","") .. S TOA=IMRIEN(1) .. Q . S @ARRAY1@(FROMXA,TOA,FRX,TOX)="" . Q D EN^XDRMERG(158,ARRAY1) I '$D(XDRERR) D . S FR158IEN=0 . F S FR158IEN=$O(@ARRAY1@(FR158IEN)) Q:FR158IEN'>0 D ..;Reset merged-to entry tracking dates to nil, insuring accurate ..; roll-up of data to the national data set. .. S TO158IEN=$O(@ARRAY1@(FR158IEN,0)) .. D NIL(TO158IEN) ..;Call logic to safely DELETE Immunology record. This also sends a ..; delete request to the national data set. .. S FROMDFN=+$O(@ARRAY1@(FR158IEN,TO158IEN,"")) .. D EN^IMRDEL(FR158IEN,FROMDFN) .. Q . K FR158IEN,FROMDFN,TO158IEN . Q K @ARRAY1 Q NIL(DA) S DIE="^IMR(158," S DR="101.01///@;101.02///@;101.03///@;101.04///@;101.05///@;101.06///@;101.07///@;101.08///@;101.09///@;101.1///@;101.11///@;101.12///@;101.13///@;101.14///@;101.15///@;101.16///@;101.17///@" L +^IMR(158,DA) D ^DIE L -^IMR(158,DA) K DA,DIE,DR,DTOUT