| 1 | MPIFRPC3 ;DRI/BHM - MPIF RPC API'S ;11/2/05  16:42
 | 
|---|
| 2 |  ;;1.0; MASTER PATIENT INDEX VISTA ;**42**;30 Apr 99
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Integration Agreements Utilized:
 | 
|---|
| 5 |  ;  ^DPT( - #2070
 | 
|---|
| 6 |  ;  ^A7RCP( - #4830
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | PRIMARY(RETURN,SITE,DFN) ; rpc to return primary patient record ;**42
 | 
|---|
| 9 |  ; site - station number or legacy station number
 | 
|---|
| 10 |  ; dfn - patient dfn or dfn in legacy site
 | 
|---|
| 11 |  ; return = primary dfn^icn  icn (if available) can be local or national
 | 
|---|
| 12 |  ;     if a problem
 | 
|---|
| 13 |  ; return = -1^error type^error text
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  N ICN,NDFN,PDFN,SITEIEN K RETURN
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  I $G(SITE)="" S RETURN="-1^NULL STATION NUMBER^Null station number passed." Q
 | 
|---|
| 18 |  I $G(DFN)="" S RETURN="-1^NULL PATIENT NUMBER^Null patient DFN passed." Q
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  S PDFN=DFN ;assume primary dfn passed in
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  I +$$SITE^VASITE()'=SITE D  ;use ndbi data
 | 
|---|
| 23 |  . S SITEIEN=$O(^A7RCP("B",SITE,0)) ;check ndbi x-ref for site ien
 | 
|---|
| 24 |  . I SITEIEN="",$D(^A7RCP(SITE)) S SITEIEN=SITE ;some sites have site number as ien
 | 
|---|
| 25 |  . I SITEIEN="" S RETURN="-1^NO LEGACY DATA FOR SITE^Legacy site '"_SITE_"' data does not exist." Q
 | 
|---|
| 26 |  . S PDFN=$P($G(^A7RCP(SITEIEN,1,2,1,DFN,1)),"^",1) ;find primary dfn for patient file (#2) data
 | 
|---|
| 27 |  . I 'PDFN,$D(^A7RCP(SITEIEN,1,2,1,DFN,2)) S RETURN="-1^DUP MERGE AT LEGACY^"_$P($G(^(2)),"^",4)_"." Q
 | 
|---|
| 28 |  . I 'PDFN S RETURN="-1^NO LEGACY DATA FOR DFN^DFN '"_DFN_"' does not exist in legacy data" Q
 | 
|---|
| 29 |  I $G(RETURN) Q  ;invalid ndbi data
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  I $D(^DPT(PDFN,-9)) D  ;check merge records
 | 
|---|
| 32 |  . S NDFN=PDFN ;next dfn
 | 
|---|
| 33 |  . F  S NDFN=$P($G(^DPT(NDFN,-9)),"^") I $S('NDFN:1,'$D(^DPT(NDFN,-9)):1,1:0) Q  ;could be multiple merges
 | 
|---|
| 34 |  . S PDFN=NDFN ;last dfn is new primary dfn
 | 
|---|
| 35 |  . I 'PDFN S RETURN="-1^NO MERGE DATA FOR DFN^No DFN for merged DFN '"_DFN_"'." Q
 | 
|---|
| 36 |  . I '$D(^DPT(PDFN)) S RETURN="-1^DFN NOT IN DATABASE FOR MERGED DFN^DFN '"_PDFN_"' does not exist for merged DFN '"_DFN_"'." Q
 | 
|---|
| 37 |  I $G(RETURN) Q  ;invalid merge data
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  I '$D(^DPT(PDFN)) S RETURN="-1^PATIENT NOT IN DATABASE^DFN '"_PDFN_"' does not exist in database." Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  S ICN=$$GETICN^MPIF001(PDFN) ;get icn
 | 
|---|
| 42 |  I ICN<0 S RETURN=PDFN_"^"_$P(ICN,"^",2) Q  ;return primary dfn and icn error message
 | 
|---|
| 43 |  S RETURN=PDFN_"^"_ICN ; return primary dfn and icn
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 |  ;
 | 
|---|