| 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
 | 
|---|