1 | MPIFQ1 ;ALB/RJS-CIRN QUERY HANDLER ;JUN 30, 1997
|
---|
2 | ;;1.0; MASTER PATIENT INDEX VISTA ;**1,8,12,16,17,21,23,24,28,31,33,35**;30 Apr 99
|
---|
3 | ;
|
---|
4 | ; Integration Agreements Utilized:
|
---|
5 | ; EXC, START, STOP^RGHLLOG - #2796
|
---|
6 | ; FILE^VAFCTFU - #2988
|
---|
7 | ; ^DPT("AICN" - #2070
|
---|
8 | ; NAME^VAFCPID2 - #3492
|
---|
9 | ; EN1^XWB2HL7 - #3144
|
---|
10 | ; RTNDATA^XWBDRPC - #3149
|
---|
11 | ; VAFC REMOTE PDAT (RPC) - #3496
|
---|
12 | ;
|
---|
13 | INIT ;Entry point for List Manager Template - MPIF REAL-TIME QUERY
|
---|
14 | Q
|
---|
15 | HDR ;Header code for List Manager Template - MPIF REAL-TIME QUERY
|
---|
16 | N SSN,DOB,MPIFQ1,NAME1,SEX
|
---|
17 | D GETDATA^MPIFQ0("^DPT(",DFN,"MPIFQ1",".01;.03;.09;.02","EI")
|
---|
18 | S NAME1=$G(MPIFQ1(2,DFN,.01,"E")),SSN=$G(MPIFQ1(2,DFN,.09,"E"))
|
---|
19 | S DOB=$G(MPIFQ1(2,DFN,.03,"I")),SEX=$G(MPIFQ1(2,DFN,.02,"E"))
|
---|
20 | I DOB]"" S DOB=$TR($$FMTE^XLFDT(DOB,"5D"),"/","-")
|
---|
21 | S VALMHDR(1)=" Possible MPI Matches for Patient: "_IOINHI_NAME1_IOINORM
|
---|
22 | S VALMHDR(2)=" SSN: "_IOINHI_SSN_IOINORM
|
---|
23 | S VALMHDR(3)=" DOB: "_IOINHI_DOB_IOINORM
|
---|
24 | S VALMHDR(4)=" SEX: "_IOINHI_SEX_IOINORM,VALMHDR(5)=" "
|
---|
25 | Q
|
---|
26 | START(INDEX) ;Starting entry point for envoking the List Manager Template MPIF Real-time query
|
---|
27 | S VALMCNT=INDEX
|
---|
28 | D EN^VALM("MPIF REAL-TIME QUERY")
|
---|
29 | Q
|
---|
30 | SELECT N VALMY
|
---|
31 | D EN^VALM2(XQORNOD(0),"OS")
|
---|
32 | I '$D(VALMY) Q
|
---|
33 | N DATA,INDEX,ICN,CHKSUM,NODE2
|
---|
34 | S INDEX=$O(VALMY(0)),DATA=^TMP("MPIFVQQ",$J,INDEX,"DATA")
|
---|
35 | S NODE2=$G(^TMP("MPIFVQQ",$J,INDEX,"INDICATOR"))
|
---|
36 | S DATA(.01)=$P(DATA,"^",1) I $E(DATA(.01),$L(DATA(.01)))=" " S DATA(.01)=$E(DATA(.01),1,$L(DATA(.01))-1) ;NAME
|
---|
37 | S DATA(.03)=$P(DATA,"^",4),DATA(.09)=$P(DATA,"^",3),DATA(.02)=$P(DATA,"^",11) ;DOB, SSN, SEX
|
---|
38 | S ICN=$P(DATA,"^",6),CHKSUM=$P(ICN,"V",2),ICN=$P(ICN,"V",1),DATA(991.01)=ICN,DATA(991.02)=CHKSUM,DATA(991.03)=$$LKUP^XUAF4($P(DATA,"^",5))
|
---|
39 | ;If NODE2["*" we have a pt in our list whose ICN is already at this site
|
---|
40 | I NODE2["*",$O(^DPT("AICN",ICN,""))'=DFN D Q
|
---|
41 | .D CLEAR^VALM1,MSG1^MPIFQ3
|
---|
42 | .N DFN2 S DFN2=$O(^DPT("AICN",ICN,""))
|
---|
43 | .D TWODFNS^MPIF002(DFN2,DFN,ICN)
|
---|
44 | .W !!,"Assigning Local ICN" D LOCAL^MPIFQ3(DFN),PROMPT^MPIFQ3 S MPIFRTN="CONTINUE"
|
---|
45 | ;User selected from list, does SSN & Name match? no-ask if sure
|
---|
46 | N SSN,NAME,SEX
|
---|
47 | D GETDATA^MPIFQ0("^DPT(",DFN,"MPIFQ1",".01;.09;.02","EI")
|
---|
48 | S SSN=$G(MPIFQ1(2,DFN,.09,"E")),NAME=$G(MPIFQ1(2,DFN,.01,"E")),SEX=$G(MPIFQ1(2,DFN,.02,"I"))
|
---|
49 | ; if sex doesn't match -- not allowed to update ICN
|
---|
50 | I DATA(.02)'=SEX W !!,"Sex for these two patients doesn't match -- Can't select this patient until",!,"Sex matches between the MPI and your site. No action will be taken." D PROMPT^MPIFQ3 S VALMBCK="R" Q
|
---|
51 | I SSN["P" S SSN=""
|
---|
52 | I DATA(.09)'=SSN W !!,"SSN for these two patients doesn't match -- Can't select this patient until",!,"SSN matches between the MPI and your site. No action will be taken." D PROMPT^MPIFQ3 S VALMBCK="R" Q
|
---|
53 | D NAME^VAFCPID2(0,.NAME,0) ;reformat name into DG 149 format
|
---|
54 | N NAME3 S NAME3=DATA(.01) D NAME^VAFCPID2(0,.NAME3,0) S DATA(.01)=NAME3 ;reformat name into DG 149 format
|
---|
55 | N EXACT
|
---|
56 | ; check if Last, First MATCH if so is it a middle name vs middle initial
|
---|
57 | I $P(DATA(.01),",")=$P(NAME,",")&($P($P(NAME,",",2)," ")=$P($P(DATA(.01),",",2)," ")) D
|
---|
58 | .N MPIMID,NMMN S MPIMID=$P($P(DATA(.01),",",2)," ",2)
|
---|
59 | .S NMMN=$P($P(NAME,",",2)," ",2)
|
---|
60 | .I $L(NMMN)>1&($L(MPIMID)=1),($E(NMMN,1)=MPIMID) S EXACT=1
|
---|
61 | .I $L(MPIMID)>1&($L(NMMN)=1),($E(MPIMID,1)=NMMN) S EXACT=1
|
---|
62 | I DATA(.01)=NAME!($D(EXACT)) K DATA(.09),DATA(.01),DATA(.03) D EDIT^MPIFQED(DFN,"DATA") D MSG3^MPIFQ3,PROMPT^MPIFQ3,TF^MPIFQ3(DFN,.DATA) Q
|
---|
63 | ; \/ Name doesn't match exactly - ask if sure
|
---|
64 | D CLEAR^VALM1,MSG2^MPIFQ3,MSG^MPIFQ3(SSN,NAME,DATA(.09),DATA(.01))
|
---|
65 | N ANS S ANS=$$PROMPT1^MPIFQ3()
|
---|
66 | I ANS K DATA(.09),DATA(.01),DATA(.03) D EDIT^MPIFQED(DFN,"DATA") S MPIFRTN="CONTINUE" W !!,"ICN and CMOR Updated" D PROMPT^MPIFQ3,TF^MPIFQ3(DFN,.DATA) Q
|
---|
67 | D MSG5^MPIFQ3,PROMPT^MPIFQ3 S VALMBCK="R"
|
---|
68 | Q
|
---|
69 | ADD ;Add (MPIF REAL-TIME QUERY (ADD PATIENT)) add pt to MPI Austin.
|
---|
70 | D A28^MPIFQ3(DFN),PROMPT^MPIFQ3 S MPIFRTN="CONTINUE"
|
---|
71 | Q
|
---|
72 | MPIPD ; MPI PDAT CALL
|
---|
73 | N VALMY,CNT,Y
|
---|
74 | D EN^VALM2(XQORNOD(0),"OS")
|
---|
75 | I '$D(VALMY) Q
|
---|
76 | N DATA,INDEX,ICN,CHKSUM,CMOR,CASE,CMOR3,TTF,ALIAS,POW,TAL,TMP
|
---|
77 | S INDEX=$O(VALMY(0)),Y="" D CLEAR^VALM1
|
---|
78 | S DATA=^TMP("MPIFVQQ",$J,INDEX,"DATA")
|
---|
79 | S CMOR=$P(DATA,"^",5),CMOR3=CMOR,CMOR=$P($$NS^XUAF4($$LKUP^XUAF4(CMOR)),"^")
|
---|
80 | W !,"MPI Data:",!!!,?3,"ICN: ",+$P(DATA,"^",6),?30,"CMOR: ",CMOR," (",CMOR3,")"
|
---|
81 | W !,?2,"NAME: ",$P(DATA,"^")
|
---|
82 | W !,?3,"SSN: ",$P(DATA,"^",3),?30,"SEX: ",$P(DATA,"^",11)
|
---|
83 | W !,?3,"DOB: ",$P(DATA,"^",4)
|
---|
84 | W ?30,"DOD: ",$P(DATA,"^",9)
|
---|
85 | I $P(DATA,"^",20)="Y" W !?3,"Multiple Birth Indicator: Yes"
|
---|
86 | I ($P(DATA,"^",12)='"")&($P(DATA,"^",13)'="") W !,?2,"PLACE OF BIRTH: ",$P(DATA,"^",12),", ",$P(DATA,"^",13)
|
---|
87 | I $P(DATA,"^",12)=""!($P(DATA,"^",13)="") W !,?2,"PLACE OF BIRTH: ",$P(DATA,"^",12)," ",$P(DATA,"^",13)
|
---|
88 | W !,?2,"MOTHER'S MAIDEN NAME: ",$P(DATA,"^",16)
|
---|
89 | W !,?2,"CLAIM NUMBER: ",$P(DATA,"^",17)
|
---|
90 | S POW=$P(DATA,"^",19) I POW'="" W !,?2,"POW STATUS: ",POW
|
---|
91 | S CASE=$P(DATA,"^",18)
|
---|
92 | I CASE'="" W !,?2,"Open Data Management Case",!,?5,"CASE#: ",$P(CASE,"/")_" NOIS#: ",$P(CASE,"/",2),!,?5,"CASE WORKER: ",$P(CASE,"/",3)
|
---|
93 | I $D(^TMP("MPIFVQQ",$J,INDEX,"ALIAS")) W !,?2,"Alias(es): " D
|
---|
94 | .N XX S XX=0 F S XX=$O(^TMP("MPIFVQQ",$J,INDEX,"ALIAS",XX)) Q:'XX W !?10,^(XX)
|
---|
95 | I $D(^TMP("MPIFVQQ",$J,INDEX,"TF"))&($O(^TMP("MPIFVQQ",$J,INDEX,"TF",1))'="") D
|
---|
96 | .W !,?2,"TREATING FACILITY LIST:"
|
---|
97 | .N XX S XX=0 F S XX=$O(^TMP("MPIFVQQ",$J,INDEX,"TF",XX)) Q:'XX S TMP=$P($G(^(XX)),MPICOMP) I TMP'=CMOR3 W !?10,"Treating Facility: ",$P($$NS^XUAF4($$LKUP^XUAF4(TMP)),"^")," (",TMP,")"
|
---|
98 | D PROMPT^MPIFQ3
|
---|
99 | S VALMBCK="R"
|
---|
100 | Q
|
---|
101 | CMOR ; CMOR PDAT CALL
|
---|
102 | N VALMY,DATA,INDEX,ICN,CHKSUM,CMOR
|
---|
103 | D EN^VALM2(XQORNOD(0),"OS")
|
---|
104 | I '$D(VALMY) Q
|
---|
105 | S INDEX=$O(VALMY(0)),DATA=^TMP("MPIFVQQ",$J,INDEX,"DATA")
|
---|
106 | S ICN=$P(DATA,"^",6),CHKSUM=$P(ICN,"V",2),ICN=$P(ICN,"V",1),CMOR=$P(DATA,"^",5)
|
---|
107 | I CMOR=$P($$SITE^VASITE(),"^",3) W !!,"CMOR is your site" G END
|
---|
108 | W !,"Please be patient while the data is being retrieved from the CMOR."
|
---|
109 | D EN1^XWB2HL7(.RETURN,CMOR,"VAFC REMOTE PDAT",1,ICN,"") ; Request
|
---|
110 | S ^XTMP("MPIFPDAT"_ICN,0)=$$FMADD^XLFDT(DT,2)_"^"_DT_"^"_"REMOTE PDAT QUERY",^XTMP("MPIFPDAT"_ICN,1)=RETURN(0)_"^"_$$NOW^XLFDT
|
---|
111 | S CNT=0
|
---|
112 | AGAIN1 H 2 K RES1 D RTNDATA^XWBDRPC(.RES1,RETURN(0)) S CNT=CNT+1
|
---|
113 | I +RES1(0)=-1&(RES1(0)["Not DONE") I CNT<11 G AGAIN1
|
---|
114 | I +RES1(0)=-1&(RES1(0)["Not DONE") I CNT>10 W !,"Unable to get data" G END
|
---|
115 | I RES1(0)="0^New" I CNT<11 G AGAIN1
|
---|
116 | I RES1(0)="0^New" I CNT>10 W !,"Unable to get data" G END
|
---|
117 | I +RES1(0)=-1 W !!,$P(RES1(0),"^",2) G END
|
---|
118 | I RES1'="" I CNT<11 G AGAIN1
|
---|
119 | I RES1'="" I CNT>10 W !,"Unable to get data" Q
|
---|
120 | D CLEAR^VALM1
|
---|
121 | N NUM S NUM="",CNT=0
|
---|
122 | F S NUM=$O(RES1(NUM)) Q:NUM="" D
|
---|
123 | .I CNT>20 D PROMPT^MPIFQ3,CLEAR^VALM1 S CNT=0
|
---|
124 | .I RES1(NUM)["Additional" W !! S CNT=CNT+2
|
---|
125 | .I CNT<21 W !,RES1(NUM) S CNT=CNT+1
|
---|
126 | END D PROMPT^MPIFQ3 S VALMBCK="R" K CNT,RETURN,RES1
|
---|
127 | Q
|
---|
128 | HELP ; Help List Manager Action (MPIF REAL-TIME QUERY (HELP))
|
---|
129 | D CLEAR^VALM1,MSG4^MPIFQ3,PROMPT^MPIFQ3 S VALMBCK="R"
|
---|
130 | Q
|
---|
131 | EXIT ;Exit for List Manager Template MPIF REAL-TIME QUERY
|
---|
132 | K VALMBCK,VALMCNT,VALMHDR
|
---|
133 | Q
|
---|