1 | MPIFRPC2 ;SFCIO/CMC-MPIF RPC APIS ;24 OCT 01
|
---|
2 | ;;1.0; MASTER PATIENT INDEX VISTA ;**20,24,33,43**;30 Apr 99
|
---|
3 | ;
|
---|
4 | ;Integration Agreements Utilized:
|
---|
5 | ; ^DPT( - #2070
|
---|
6 | ; FILE^VAFCTFU - #2988
|
---|
7 | ; AVAFC^VAFCDD01 - #3493
|
---|
8 | ; START, STOP, EXC^RGHLLOG - #2070
|
---|
9 | ;
|
---|
10 | MULT(DFN,OLDFN) ; API to get "primary" dfn for a merged record
|
---|
11 | ;**43 api created
|
---|
12 | I $D(^DPT(DFN,-9)) S OLDFN=OLDFN_DFN_"^"
|
---|
13 | F S DFN=$P($G(^DPT(DFN,-9)),"^") Q:'DFN!'$D(^DPT(DFN,-9)) S OLDFN=OLDFN_DFN_"^"
|
---|
14 | Q
|
---|
15 | ;
|
---|
16 | SPI(RETURN,SSN,DFN1) ;
|
---|
17 | ;RPC to Single Patient Initialization on patient with SSN
|
---|
18 | ; RETURN - 1 for successful inactivation or -1^error msg
|
---|
19 | ; SSN = is the SSN for the patient that is to be SPI'd
|
---|
20 | ; DFN1 = is the IEN for the patient that is to be SPI'd
|
---|
21 | ;
|
---|
22 | N RES,XX,DFN,ICN,TICN,MPIFA,OLDC,DFNOLD
|
---|
23 | I SSN=""&($G(DFN1)="") S RETURN="-1^No SSN or DFN Passed" Q
|
---|
24 | I SSN'="",SSN'?9N S RETURN="-1^Invalid SSN" Q
|
---|
25 | I SSN'="",'$D(^DPT("SSN",SSN)) S RETURN="-1^No such SSN" Q
|
---|
26 | I SSN'="" D
|
---|
27 | .S RETURN(0)="SSN USED "_SSN
|
---|
28 | .S RES=$$GETDFNS^MPIF002(SSN)
|
---|
29 | I SSN="",DFN1'?1N.N S RETURN="-1^Invalid DFN" Q
|
---|
30 | I SSN="",'$D(^DPT(DFN1)) S RETURN="-1^No such DFN" Q
|
---|
31 | ;^ **43 Check only for DFN1 not DFN1,0 as not all merges have 0 nodes
|
---|
32 | I SSN="" D
|
---|
33 | .S RETURN(0)="DFN USED "_DFN1
|
---|
34 | .S RES=DFN1
|
---|
35 | I +RES=-1 S RETURN=RES Q
|
---|
36 | S DFNOLD=""
|
---|
37 | F XX=1:1 S DFN=$P(RES,"^",XX) Q:DFN="" D
|
---|
38 | .;**43 check to see if DFN is a FROM record in a duplicate record merge pair
|
---|
39 | .I $D(^DPT(DFN,-9)) S DFNOLD=DFNOLD_DFN_"^" S DFN=$P($G(^DPT(DFN,-9)),"^") D
|
---|
40 | ..I $D(^DPT(DFN,-9)) D MULT(.DFN,.DFNOLD)
|
---|
41 | ..S RETURN(0)="DFN-"_DFN_"-was used to SPI patient because the DFN passed was a merged DFN. The merged DFN(s) are: "_DFNOLD
|
---|
42 | .; a TO record of a merge can be the from record in another merge, need to find the final primary record
|
---|
43 | .; DFN is now the primary DFN
|
---|
44 | .; can be multiple entries with same SSN
|
---|
45 | .S TICN=$$GETICN^MPIF001(DFN)
|
---|
46 | .I +TICN'=-1&($P($$SITE^VASITE,"^",3)'=$E(TICN,1,3)) S RETURN(XX,0)="The DFN= "_DFN_" already has an ICN, ICN="_TICN Q
|
---|
47 | .S MPIFS=1,HLP("ACKTIME")=300,MPIFRES=1,MPIFRPC=1
|
---|
48 | .I '$D(^DPT(DFN)) S RETURN="-1^No such DFN" Q
|
---|
49 | .D GETS^DIQ(2,DFN_",",".01","IE","MPIFA")
|
---|
50 | .D CIRNEXC^MPIFQ0
|
---|
51 | .;**43 check to see if A28 message was requested to be sent to Add patient to MPI
|
---|
52 | .I MPIFRTN="DID A28" S RETURN(XX,0)="A28 Add Patient message has been triggered" K MPIFRTN,MPIFS,MPIFRES,MPIFRPC Q
|
---|
53 | .K MPIFRTN,MPIFS,MPIFRES,MPIFRPC
|
---|
54 | .S ICN=$$GETICN^MPIF001(DFN)
|
---|
55 | .I +ICN=-1 S RETURN(XX,0)="DFN "_DFN_" problem getting ICN assinged "_$P(ICN,"^",2),RETURN="-1^Unable to get ICN" Q
|
---|
56 | .K RET S RET=""
|
---|
57 | .;commented out in **43 as these exceptions shouldn't be happening any longer AND we want to SPI a local ICN
|
---|
58 | .;I $P($$SITE^VASITE,"^",3)=$E(+ICN,1,3) S RETURN="-1^Local ICN assigned" Q
|
---|
59 | .;D EXC^MPIFRPC(DFN,.RET,XX)
|
---|
60 | .;S RET(XX,"EXCEPTIONS")=$TR($G(RET(XX,"EXCEPTIONS")),"""","")
|
---|
61 | .;S RETURN(XX,0)="DFN "_DFN_" Local ICN assigned "_ICN_" EXCEPTIONS: "_$G(RET(XX,"EXCEPTIONS")),RETURN="-1^Local ICN assigned" Q
|
---|
62 | .S RETURN(XX)=ICN
|
---|
63 | Q
|
---|
64 | ;
|
---|
65 | UPDATE(RET,SSN,ICN,CHK,CMOR,A08) ;
|
---|
66 | ; update fields 991.01,991.02 and 991.03 remotely
|
---|
67 | I SSN=""!(ICN="")!(CHK="")!(CMOR="") S RET="-1^Missing required parameter" Q
|
---|
68 | I '$D(^DPT("SSN",SSN)) S RET="-1^No patient has that SSN at this site" Q
|
---|
69 | N DFN,MPIFA,TMP,RESLT
|
---|
70 | S DFN=$O(^DPT("SSN",SSN,""))
|
---|
71 | I $O(^DPT("SSN",SSN,DFN))'="" S RET="-1^More than one patient has that SSN at this site" Q
|
---|
72 | S TMP=$P($$MPINODE^MPIFAPI(DFN),"^")
|
---|
73 | I +TMP'=-1,$E(TMP,1,3)'=$P($$SITE^VASITE(),"^",3) S RET="-1^Patient has a national ICN, ICN="_TMP Q
|
---|
74 | S MPIFA(991.01)=ICN,MPIFA(991.02)=CHK,MPIFA(991.03)=$$LKUP^XUAF4(CMOR)
|
---|
75 | S RET=$$UPDATE^MPIFAPI(DFN,"MPIFA")
|
---|
76 | S RESLT=$$A24^MPIFA24B(DFN)
|
---|
77 | I +RESLT<0 D START^RGHLLOG(),EXC^RGHLLOG(208,"Problem building A24 (ADD TF) for DFN= "_DFN,DFN),STOP^RGHLLOG() S RET="-1^Problem building A24 (ADD TF) for Pt" Q
|
---|
78 | I A08=1 D AVAFC^VAFCDD01(DFN) ; trigger A08 msg
|
---|
79 | I A08=1 S RET=RET_"^and A08 triggered"
|
---|
80 | Q
|
---|