| [613] | 1 | LRXDRPT ;SF-IRMFO.SEA/JLI/DALISC/FHS - HANDLE MERGE OF ENTRIES IN FILE 63 RELATED TO PATIENT MERGE ;10/30/97  11:50 | 
|---|
|  | 2 | ;;5.2;LAB SERVICE;**205**;Sep 27, 1994 | 
|---|
|  | 3 | ;; | 
|---|
|  | 4 | ;; | 
|---|
|  | 5 | EN(LRRAY) ; Entry point for merging.  Array is the NAME of array in which the FROM IEN and the TO IEN are indicated, as @LRRAY@(LRFROMX,LRTO). | 
|---|
|  | 6 | ;IEN are IENs from ^DPT( to be merged | 
|---|
|  | 7 | ;example LRX(IEN_FROM,IEN_TO,"IEN_FROM;DPT(",IEN_TO;DPT(")="" | 
|---|
|  | 8 | N LRFROMX,LRTO,LRRAY1,LRFROMXA,LRTOA,LRZZZ,LRFRX,LRTOX,FROM | 
|---|
|  | 9 | S LRRAY1=$NA(^TMP($J,"LRMERG1")) | 
|---|
|  | 10 | K @LRRAY1 | 
|---|
|  | 11 | S FROM=LRRAY1 | 
|---|
|  | 12 | F LRFROMX=0:0 S LRFROMX=$O(@LRRAY@(LRFROMX)) Q:LRFROMX'>0  D | 
|---|
|  | 13 | . S LRFROMXA=+$G(^DPT(LRFROMX,"LR")) | 
|---|
|  | 14 | . I LRFROMXA,$S($P($G(^LR(LRFROMXA,0)),U,2)'=2:1,$P($G(^(0)),U,3)'=LRFROMX:1,1:0) D  Q | 
|---|
|  | 15 | . . ;W !,"Pointer between ^LR("_LRFROMXA_") and ^DPT("_LRFROMX_",LR) don't match." | 
|---|
|  | 16 | . . ;W !!?10,"Laboratory Patient merge terminated",! | 
|---|
|  | 17 | . . K @LRRAY@(LRFROMX) | 
|---|
|  | 18 | . S LRTO=$O(@LRRAY@(LRFROMX,0)) | 
|---|
|  | 19 | . S LRTOA=+$G(^DPT(LRTO,"LR")) | 
|---|
|  | 20 | . I LRTOA,$S($P($G(^LR(LRTOA,0)),U,2)'=2:1,$P($G(^(0)),U,3)'=LRTO:1,1:0) D  Q | 
|---|
|  | 21 | . . ;W !,"Pointer between ^LR("_LRTOA_",0) and ^DPT("_LRTO_",""LR"") don't match" | 
|---|
|  | 22 | . . K @LRRAY@(LRFROMX,LRTO) | 
|---|
|  | 23 | . I LRFROMXA'="",LRFROMXA=LRTOA Q  ; ALREADY MERGED | 
|---|
|  | 24 | . S LRFROMXA=$S(LRFROMXA>0:LRFROMXA,1:0),LRTOA=$S(LRTOA>0:LRTOA,1:0) | 
|---|
|  | 25 | . S LRFRX=$O(@LRRAY@(LRFROMX,LRTO,"")),LRTOX=$O(@LRRAY@(LRFROMX,LRTO,LRFRX,"")) | 
|---|
|  | 26 | . S @LRRAY1@(LRFROMXA,LRTOA,LRFRX,LRTOX)=LRFROMX | 
|---|
|  | 27 | . I LRFROMXA=0 D  Q | 
|---|
|  | 28 | . . I LRTOA>0 D SAVEMERG^XDRMERGB(63,LRFROMXA,LRTOA) | 
|---|
|  | 29 | . . K @LRRAY1@(LRFROMXA,LRTOA) | 
|---|
|  | 30 | . I LRTOA=0 D  Q | 
|---|
|  | 31 | . . D SAVEMERG^XDRMERGB(63,LRFROMXA,LRTOA) | 
|---|
|  | 32 | . . K @LRRAY1@(LRFROMXA,LRTOA) | 
|---|
|  | 33 | . . S ^DPT(LRTO,"LR")=LRFROMXA | 
|---|
|  | 34 | . . S LRZZZ(63,LRFROMXA_",",.03)=LRTO | 
|---|
|  | 35 | . . D UPDATE^DIE("","LRZZZ") | 
|---|
|  | 36 | I $D(@LRRAY1) D | 
|---|
|  | 37 | . S LRFROMXA="" F  S LRFROMXA=$O(@LRRAY1@(LRFROMXA)) Q:LRFROMXA=""  I $D(^LR(LRFROMXA,"T")) D | 
|---|
|  | 38 | . . S LRTOA=$O(@LRRAY1@(LRFROMXA,"")) | 
|---|
|  | 39 | . . M ^LR(LRTOA,"T")=^LR(LRFROMXA,"T") | 
|---|
|  | 40 | . D EN^XDRMERG(63,LRRAY1) | 
|---|
|  | 41 | F LRFROMXA=0:0 S LRFROMXA=$O(@LRRAY1@(LRFROMXA)) Q:LRFROMXA'>0  D | 
|---|
|  | 42 | . S LRTOA=$O(@LRRAY1@(LRFROMXA,0)) | 
|---|
|  | 43 | . S LRFRX=$O(@LRRAY1@(LRFROMXA,LRTOA,"")) | 
|---|
|  | 44 | . S LRTOX=$O(@LRRAY1@(LRFROMXA,LRTOA,LRFRX,"")) | 
|---|
|  | 45 | . S LRFROMX=@LRRAY1@(LRFROMXA,LRTOA,LRFRX,LRTOX) | 
|---|
|  | 46 | . S ^DPT(LRFROMX,"LR")=LRTOA | 
|---|
|  | 47 | . K ^LR(LRFROMXA) | 
|---|
|  | 48 | K @LRRAY1 | 
|---|
|  | 49 | Q | 
|---|