1 | RGEX01 ;BAY/ALS-LIST MANAGER FOR MPI/PD EXCEPTIONS ;10/07/99
|
---|
2 | ;;1.0;CLINICAL INFO RESOURCE NETWORK;**3,12,19,23,43,45,47,48**;30 Apr 99;Build 3
|
---|
3 | ;
|
---|
4 | ;Reference to MAIN^VAFCPDAT supported by IA #3299
|
---|
5 | EN ; -- main entry point for RG EXCPT SUMMARY
|
---|
6 | N STDT,ENDDT,PRGSTAT,XFLAG,NOW,%,X,%H,%I,INDT,RUN,INDTT
|
---|
7 | S XFLAG=0 D NOW^%DTC S NOW=%
|
---|
8 | S STDT=$P($G(^RGSITE(991.8,1,"EXCPRG")),"^",1),INDT=STDT
|
---|
9 | I $D(STDT) S STDT=$$FMTE^XLFDT(STDT,1)
|
---|
10 | S PRGSTAT=$P($G(^RGSITE(991.8,1,"EXCPRG")),"^",3)
|
---|
11 | ;status shows 'running' but lock shows 'not running';**47
|
---|
12 | I PRGSTAT="R" D
|
---|
13 | .L +^RGHL7(991.1,"RG PURGE EXCEPTION"):0 I $T D ;can get lock
|
---|
14 | ..L +^RGSITE(991.8):10
|
---|
15 | ..S DIE="^RGSITE(991.8,",DA=1,DR="42///@"
|
---|
16 | ..D ^DIE K DA,DIE,DR ;delete old status
|
---|
17 | ..L -^RGSITE(991.8)
|
---|
18 | ..S PRGSTAT=""
|
---|
19 | .L -^RGHL7(991.1,"RG PURGE EXCEPTION")
|
---|
20 | I PRGSTAT="" D
|
---|
21 | . W $C(7)
|
---|
22 | . W !!,"The MPI/PD Exception Purge process has not been run."
|
---|
23 | . ;**48 NO LONGER A CHOICE
|
---|
24 | . W !!,"The MPI/PD Exception Purge process will now run."
|
---|
25 | . W !,"Please come back to this option in five minutes."
|
---|
26 | . W !!,"Please contact IRM to schedule the MPI/PD EXCEPTION PURGE"
|
---|
27 | . W !,"[RG EXCEPTION PURGE] option via TaskMan with a frequency of once an hour."
|
---|
28 | . S XFLAG=1 D QUEPRG
|
---|
29 | L +^RGHL7(991.1,"RG PURGE EXCEPTION"):0 I '$T W $C(7),!!,"The MPI/PD Exception Purge process is currently running.",!,"Please try this option again in five minutes." S XFLAG=1 G EXIT
|
---|
30 | L -^RGHL7(991.1,"RG PURGE EXCEPTION")
|
---|
31 | S RUN=0
|
---|
32 | I $G(PRGSTAT)="C" D
|
---|
33 | . I $P(INDT,".")<$P(NOW,".") S RUN=1 ;RAN A PREVIOUS DAY
|
---|
34 | . I $P(INDT,".")=$P(NOW,".") D
|
---|
35 | .. S INDTT=$E($P(INDT,".",2),1,4),INDTT=INDTT+101
|
---|
36 | .. I INDTT<$E($P(NOW,".",2),1,4) S RUN=1
|
---|
37 | . Q:RUN=0
|
---|
38 | . ;** if job ran more than 1 hour ago, run it now.
|
---|
39 | . W !!,"The MPI/PD Exception Purge process last ran "_STDT_"."
|
---|
40 | . W !!,"The MPI/PD Exception Purge process will now run."
|
---|
41 | . W !,"Please come back to this option in five minutes."
|
---|
42 | . W !!,"Please contact IRM to verify that the MPI/PD EXCEPTION PURGE "
|
---|
43 | . W !,"[RG EXCEPTION PURGE] option is scheduled to run via TaskMan"
|
---|
44 | . W !,"with a frequency of once an hour."
|
---|
45 | . S XFLAG=1 D QUEPRG
|
---|
46 | I XFLAG=1 G EXIT
|
---|
47 | K RGANS
|
---|
48 | D WAIT^DICD
|
---|
49 | D EN^VALM("RG EXCPT SUMMARY")
|
---|
50 | Q
|
---|
51 | ;
|
---|
52 | HDR ; -- header code
|
---|
53 | S VALMHDR(1)="MPI/PD Exception Handling"
|
---|
54 | S VALMHDR(2)=""
|
---|
55 | Q
|
---|
56 | ;
|
---|
57 | INIT ; -- init variables and list array
|
---|
58 | I '$D(RGSORT) S RGSORT="SD"
|
---|
59 | K @VALMAR
|
---|
60 | I RGSORT="SD" D DTLIST^RGEXHND1
|
---|
61 | E I RGSORT="ST" D EXCLST^RGEXHND1
|
---|
62 | E I RGSORT="SN" D PATLST^RGEXHND1
|
---|
63 | E I RGSORT="VT" D SELTYP^RGEXHND1
|
---|
64 | Q
|
---|
65 | ;
|
---|
66 | SORT ;
|
---|
67 | D INIT
|
---|
68 | S VALMBCK="R"
|
---|
69 | Q
|
---|
70 | HELP ; -- help code
|
---|
71 | S X="?" D DISP^XQORM1 W !!
|
---|
72 | Q
|
---|
73 | HLPPRG ;
|
---|
74 | W !,"Enter Y(YES) to run the MPI/PD Exception Purge process now."
|
---|
75 | W !!,"Enter N(NO) to go directly into the MPI/PD Exception Handling option."
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | EXIT ; -- exit code
|
---|
79 | K VADM,RGDFN,RGNM,RGSORT,RGSSN,STAT,STRING,NDX,NM,IEN,IEN2,X,DATA,CNT,EXCTYPE,ETYPE,^TMP("RGEXC",$J),^TMP("RGEX01",$J)
|
---|
80 | Q
|
---|
81 | QUEPRG S ZTRTN="MAIN^RGEVPRG",ZTDESC="PURGE ZZ*, OVER 30 DAY AND DUPLICATE RECORDS FROM THE CIRN HL7 EXCEPTION LOG FILE"
|
---|
82 | D NOW^%DTC
|
---|
83 | S ZTIO="",ZTDTH=%
|
---|
84 | I $D(DUZ) S ZTSAVE("DUZ")=DUZ
|
---|
85 | D ^%ZTLOAD
|
---|
86 | D HOME^%ZIS K IO("Q")
|
---|
87 | K ZTDESC,ZTDTH,ZTIO,ZTQUEUED,ZTREQ,ZTRTN,ZTSAVE,ZTSK,%
|
---|
88 | Q
|
---|
89 | ;
|
---|
90 | EXPND ; -- expand code
|
---|
91 | Q
|
---|
92 | ;
|
---|
93 | CUREX() ;Are there any patients in the CIRN HL7 EXCEPTION LOG file (#991.1)
|
---|
94 | ;that are NOT PROCESSED for specific exception types?
|
---|
95 | ; Return RGEX:
|
---|
96 | ;If RGEX=3 both unprocessed and Primary View Reject exceptions exist
|
---|
97 | ;If RGEX=2 only Primary View Reject exceptions exist
|
---|
98 | ;If RGEX=1 only unprocessed exceptions exist
|
---|
99 | ;If RGEX=0 no unprocessed exceptions exist
|
---|
100 | ;
|
---|
101 | N EXCTYP,RG1,RG2,RGEX
|
---|
102 | S EXCTYP="",(RG1,RG2,RGEX)=0
|
---|
103 | F S EXCTYP=$O(^RGHL7(991.1,"ASTAT","0",EXCTYP)) Q:'EXCTYP D
|
---|
104 | .I ((EXCTYP=234)!((EXCTYP>214)&(EXCTYP<219))) S RG1=1
|
---|
105 | .I (EXCTYP=234) S RG2=1 ;Primary View Reject
|
---|
106 | I (RG1=1),(RG2=1) S RGEX=3 ;Send both messages
|
---|
107 | I (RG1=1),(RG2=0) S RGEX=1 ;Only unresolved exceptions exist
|
---|
108 | I (RG1=0),(RG2=1) S RGEX=2 ;Only Primary View Reject exceptions exist
|
---|
109 | Q RGEX
|
---|
110 | ;
|
---|
111 | PROC ; For a given patient, set exceptions STATUS to PROCESSED.
|
---|
112 | ; DFN must be defined
|
---|
113 | Q:'$D(DFN)
|
---|
114 | S EXCTYP=""
|
---|
115 | S HOME=$$SITE^VASITE()
|
---|
116 | F S EXCTYP=$O(^RGHL7(991.1,"ADFN",EXCTYP)) Q:'EXCTYP D
|
---|
117 | . S RGDFN="",ICN=""
|
---|
118 | . F S RGDFN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN)) Q:'RGDFN D
|
---|
119 | .. I DFN=RGDFN D
|
---|
120 | ... S ICN=+$$GETICN^MPIF001(DFN)
|
---|
121 | ... ;Only set to PROCESSED if patient has national ICN.
|
---|
122 | ... I $E(ICN,1,3)'=$E($P(HOME,"^",3),1,3)&(ICN>0) D
|
---|
123 | .... ;Exclude Death exceptions (215-217); they must be processed manually.
|
---|
124 | .... ;Exclude 218 Potential Matches Returned exception **43
|
---|
125 | .... I (EXCTYP>218)!(EXCTYP<215) D
|
---|
126 | ..... S IEN=0
|
---|
127 | ..... F S IEN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN)) Q:'IEN D
|
---|
128 | ...... S IEN2=0
|
---|
129 | ...... F S IEN2=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN,IEN2)) Q:'IEN2 D
|
---|
130 | ....... L +^RGHL7(991.1,IEN):10
|
---|
131 | ....... S DA(1)=IEN,DA=IEN2,DR="6///"_1,DIE="^RGHL7(991.1,"_DA(1)_",1,"
|
---|
132 | ....... D ^DIE K DIE,DA,DR
|
---|
133 | ....... L -^RGHL7(991.1,IEN)
|
---|
134 | K IEN,IEN2,RGDFN,EXCTYP,ICN
|
---|
135 | Q
|
---|
136 | PDAT ;
|
---|
137 | K DIRUT
|
---|
138 | W !,"This report prints MPI/PD Data for a selected patient. The"
|
---|
139 | W !,"information displayed includes the Integration Control Number"
|
---|
140 | W !,"(ICN), patient identity information, and Treating Facility list."
|
---|
141 | W !!,"The information is pulled from the Patient (#2) file and the"
|
---|
142 | W !,"Treating Facility List (#391.91) file."
|
---|
143 | ;
|
---|
144 | ASK ;Ask for PATIENT
|
---|
145 | I $D(DIRUT) G QUIT
|
---|
146 | W !!,"Patient lookup can be done by Patient Name/SSN or by ICN.",!
|
---|
147 | N DFN,ICN
|
---|
148 | S DIC="^DPT(",DIC(0)="QEAM",DIC("A")="Select PATIENT: ",D="SSN^AICN^B^BS^BS5"
|
---|
149 | D MIX^DIC1 K DIC
|
---|
150 | G:Y<0 QUIT
|
---|
151 | S DFN=+Y
|
---|
152 | D MAIN^VAFCPDAT
|
---|
153 | G ASK
|
---|
154 | Q
|
---|
155 | QUIT ;
|
---|
156 | K DFN,ICN,D,Y,HOME
|
---|