1 | RGVCCMR1 ;GAI/TMG-CMOR ACTIVITY SCORE GENERATOR (PART 1) ;01/15/98
|
---|
2 | ;;1.0;CLINICAL INFO RESOURCE NETWORK;**2,19**;30 Apr 99
|
---|
3 | ;Reference to ^DPT("ACMORS" and ^DPT(0 supported by IA #2070
|
---|
4 | ;
|
---|
5 | EN ; this routine contains entry points to start/restart the batch cmor
|
---|
6 | ; score initialization, flag a running
|
---|
7 | ; initialization to stop, calculate and file an activity score for an
|
---|
8 | ; individual patient, and display the status of the cmor initialization
|
---|
9 | START ; entry point to start or restart the cmor activity score initialization
|
---|
10 | N RGY
|
---|
11 | S U="^"
|
---|
12 | S NODE=$G(^RGSITE(991.8,1,"CMOR"))
|
---|
13 | I '(+$P(NODE,U)) D G QUIT
|
---|
14 | .W !!,"This is the initial run of the CMOR patient activity score generator."
|
---|
15 | .S RUNTYPE="I",RGDFN=0 D TASK
|
---|
16 | S STATUS=$P(NODE,U,7)
|
---|
17 | I STATUS="R" D I RUN G QUIT
|
---|
18 | .S RUN=0
|
---|
19 | .S ZTSK=+$P(NODE,U,9)
|
---|
20 | .I 'ZTSK D INT Q
|
---|
21 | .D STAT^%ZTLOAD
|
---|
22 | .I ZTSK(1)=0!(ZTSK(1)=3)!(ZTSK(1)=4) D INT Q
|
---|
23 | .I ZTSK(1)=1 W !!,"CMOR Patient Activity Score queued task #",ZTSK,!,"is waiting to run. Do not start another job at this time." S RUN=1 Q
|
---|
24 | .I ZTSK(1)=2 W !!,"CMOR Patient Activity Score queued task #",ZTSK,!,"is currently running. Do not start another job at this time." S RUN=1 Q
|
---|
25 | .I ZTSK(1)=5 W !!,"CMOR Patient Activity Score queued task #",ZTSK,!,"was interrupted abnormally, possibly from a system error." D INT
|
---|
26 | I STATUS="SN" D
|
---|
27 | .S STOPDT=$P(NODE,U,3) I +STOPDT D
|
---|
28 | ..S STOPDT=$$FMTE^XLFDT(STOPDT,"1P")
|
---|
29 | ..W !!,"The CMOR patient activity score generator",!,"completed successfully on ",STOPDT,"."
|
---|
30 | .W !
|
---|
31 | .S DIR(0)="Y",DIR("A")="Would you like to reset all patient activity scores",DIR("B")="N" D ^DIR S RGY=Y
|
---|
32 | .I RGY=1 S DIR(0)="Y",DIR("A")="This will take quite a while. Are you sure",DIR("B")="N" D ^DIR S RGY=Y
|
---|
33 | .I RGY=1 S RUNTYPE="R",RGDFN=0 D TASK
|
---|
34 | I STATUS="SM"!(STATUS="INT") D
|
---|
35 | .S STOPDT=$P(NODE,U,3) D
|
---|
36 | ..I +STOPDT S STOPDT=$$FMTE^XLFDT(STOPDT,"1P")
|
---|
37 | ..W !!,"The CMOR patient activity score generator was "
|
---|
38 | ..W:STATUS="SM" ! W $S(STATUS="SM":"STOPPED MANUALLY",1:"INTERRUPTED ABNORMALLY.") I STATUS="SM" W " on ",STOPDT,"."
|
---|
39 | .I +$P(NODE,U) D
|
---|
40 | ..S LASTDFN=$P(NODE,U),LASTPT=$P($G(^DPT(+LASTDFN,0)),U),LASTSSN=$P(^(0),U,9)
|
---|
41 | ..W !,"The last patient processed was ",LASTPT," SSN: ",LASTSSN,!?31,"[RECORD# ",LASTDFN,"]"
|
---|
42 | .W ! S DIR(0)="Y",DIR("A")="Would you like to start with this patient and continue",DIR("B")="N" D ^DIR S RGY=Y
|
---|
43 | .W ! I RGY=1 D
|
---|
44 | ..S DIR(0)="Y",DIR("A")="This will take quite a while. Are you sure"
|
---|
45 | ..S DIR("B")="N" D ^DIR I Y=1 S RUNTYPE="RS",RGDFN=LASTDFN D TASK
|
---|
46 | .W ! I RGY=0 D
|
---|
47 | ..S DIR(0)="Y",DIR("A")="Would you like to rerun the CMOR calculation for all patients"
|
---|
48 | ..S DIR("B")="N" D ^DIR I Y=1 D
|
---|
49 | ...W ! S DIR(0)="Y",DIR("A")="This will take quite a while. Are you sure",DIR("B")="N" D ^DIR I Y=1 S RUNTYPE="RS",RGDFN=0 D TASK
|
---|
50 | G QUIT
|
---|
51 | STOP ; entry point to flag a running cmor score initialization to stop
|
---|
52 | S U="^"
|
---|
53 | S NODE=$G(^RGSITE(991.8,1,"CMOR"))
|
---|
54 | I $P(NODE,U,7)'="R" W !,"The CMOR activity score generation is NOT running." G QUIT
|
---|
55 | W !,"This option will stop the CMOR patient activity score generation"
|
---|
56 | W !,"after it has completed calculating and filing the score for the current"
|
---|
57 | W !,"patient."
|
---|
58 | W ! S DIR("A")="Are you sure you want to do this",DIR("B")="N",DIR(0)="Y" D ^DIR K DIR S RGY=Y
|
---|
59 | W ! S DIR("A")="Stop patient activity score generation after the current patient",DIR("B")="N",DIR(0)="Y" D ^DIR S RGY=Y
|
---|
60 | ;I RGY=1 S DA=1,DIE="^RGSITE(991.8,",DR="21////Y;24////SM" D ^DIE
|
---|
61 | I RGY=1 D
|
---|
62 | .S $P(^RGSITE(991.8,1,"CMOR"),U,4)="Y"
|
---|
63 | .W !!,"CMOR patient activity generation is flagged to stop after"
|
---|
64 | .W !,"it has completed the current patient. This may take a short time."
|
---|
65 | .W !,"Please check the status later."
|
---|
66 | G QUIT
|
---|
67 | INDIV ; entry point to allow a cmor score for an individual patient to be
|
---|
68 | ; calculated and filed
|
---|
69 | N MNODE
|
---|
70 | S U="^"
|
---|
71 | S DIC="^DPT(",DIC(0)="AEQMNZ" D ^DIC K DIC Q:+Y<0 S RGDFN=+Y
|
---|
72 | S PTNAM=$P(Y(0),"^"),SSN=$P(Y(0),"^",9),FILE=1
|
---|
73 | S MNODE=$$MPINODE^MPIFAPI(RGDFN)
|
---|
74 | I $P($G(MNODE),U,7)'="" D
|
---|
75 | .S FILE=0
|
---|
76 | .S SCOREDT=$$FMTE^XLFDT($P(MNODE,U,7),"1P")
|
---|
77 | .S CURSCORE=$P(MNODE,U,6) W !!,"This patient has an existing CMOR score of ",+CURSCORE," calculated on ",SCOREDT,".",!
|
---|
78 | .S DIR(0)="Y",DIR("A")="Do you want to calculate and file a new score for this patient",DIR("B")="NO" D ^DIR I Y=1 S FILE=1
|
---|
79 | I FILE=1 D
|
---|
80 | .W !!,"Working. Please standby..." S FILEFLG=0 D CALCI^RGVCCMR2
|
---|
81 | .I 'FILEFLG W !!,"No Patient Activity in the Past Three Years - No Score Filed!" Q
|
---|
82 | .W !!,"CMOR Activity Score: ",SCORE," filed for ",PTNAM," SSN: ",SSN,"."
|
---|
83 | G QUIT
|
---|
84 | DISPLAY ; displays the status of the background cmor score initialization
|
---|
85 | W !,"The CMOR Activity Score Generator",!
|
---|
86 | ;count number of CMOR scores"
|
---|
87 | W !,"..one moment please...",!
|
---|
88 | S (SCORE,CNT)=0
|
---|
89 | F S SCORE=$O(^DPT("ACMORS",SCORE)) Q:'SCORE D
|
---|
90 | .S RGDFN=0 F S RGDFN=$O(^DPT("ACMORS",SCORE,RGDFN)) Q:'RGDFN D
|
---|
91 | ..S CNT=CNT+1
|
---|
92 | W !,"There are ",$P(^DPT(0),U,4)," records in your PATIENT file."
|
---|
93 | W !,"The last record number is ",$P(^DPT(0),U,3),"."
|
---|
94 | I $P($G(^RGSITE(991.8,1,"CMOR")),U)'="" D CHKSTAT
|
---|
95 | I $P($G(^RGSITE(991.8,1,"CMOR")),U)="" D
|
---|
96 | . W !,"The CMOR Calculation has NEVER been run on your system."
|
---|
97 | G QUIT
|
---|
98 | CHKSTAT S NODE=$G(^RGSITE(991.8,1,"CMOR"))
|
---|
99 | S PTNAM="-Unknown-",SSN="---"
|
---|
100 | S RGDFN=+NODE I RGDFN,$D(^DPT(RGDFN,0)) D
|
---|
101 | .S PTNAM=$P(^(0),U),SSN=$P(^(0),U,9)
|
---|
102 | S OSTARTED="UNSPECIFIED" I $P(NODE,U,2)'="" D
|
---|
103 | .S OSTARTED=$$FMTE^XLFDT($P(NODE,U,2),"1P")
|
---|
104 | S OSTOPPED="UNSPECIFIED" I $P(NODE,U,3)'="" D
|
---|
105 | .S OSTOPPED=$$FMTE^XLFDT($P(NODE,U,3),"1P")
|
---|
106 | S ORESTART=$G(^XTMP("RGVCCMR","@@@@","RESTARTED"))
|
---|
107 | I +ORESTART S ORESTART=$$FMTE^XLFDT(ORESTART,"1P")
|
---|
108 | S ODFNCT=""
|
---|
109 | I $D(^XTMP("RGVCCMR","@@@@","DFNCOUNT")) S ODFNCT=^XTMP("RGVCCMR","@@@@","DFNCOUNT")
|
---|
110 | STATUS S ST=$P(NODE,U,7)
|
---|
111 | ;if status is RUNNING, check to see if task errored out
|
---|
112 | I ST="R" D
|
---|
113 | .S ZTSK=$P(NODE,U,9) I $D(ZTSK) D
|
---|
114 | ..D STAT^%ZTLOAD
|
---|
115 | ..I ZTSK(1)=5 D INT S ST="INT"
|
---|
116 | S STATUS=$S(ST="R":"RUNNING.",ST="SM":"STOPPED MANUALLY",ST="SN":"SUCCESSFULLY COMPLETED",ST="INT":"INTERRUPTED ABNORMALLY.",1:"- NO STATUS LISTED -")
|
---|
117 | ;S PERCOMP=((ODFNCT/$P(^DPT(0),U,4))*100),PERCOMP=$P(PERCOMP,".")_"."_$E($P(PERCOMP,".",2),1,2)
|
---|
118 | W !,"Last Patient Processed: ",PTNAM," SSN: ",SSN," [RECORD# ",RGDFN,"]"
|
---|
119 | W !!,"The CMOR score initialization last started on ",OSTARTED,"."
|
---|
120 | I ORESTART]"" W !,"Job was restarted on ",ORESTART,"."
|
---|
121 | I +ODFNCT W !,ODFNCT," patient records have been processed."
|
---|
122 | W !,"Status: ",STATUS I ST'="R"&(ST'="INT") W " on ",OSTOPPED,"."
|
---|
123 | W !,"CMOR Score Count: ",CNT
|
---|
124 | ;
|
---|
125 | G QUIT
|
---|
126 | ;
|
---|
127 | INT ;Set status to INTERRUPTED for abnormally stopped jobs
|
---|
128 | S $P(^RGSITE(991.8,1,"CMOR"),"^",7)="INT"
|
---|
129 | S STATUS="INT"
|
---|
130 | Q
|
---|
131 | TASK S ZTIO="",ZTRTN="^RGVCCMR2",ZTDESC="BACKGROUND CMOR SCORE CALCULATOR"
|
---|
132 | S (ZTSAVE("RUNTYPE"),ZTSAVE("RGDFN"))=""
|
---|
133 | ; change ztsave("*")="" to specific variables when done
|
---|
134 | D ^%ZTLOAD
|
---|
135 | I $D(ZTSK) W " Task#, ",ZTSK," queued" S $P(^RGSITE(991.8,1,"CMOR"),U,9)=ZTSK
|
---|
136 | D ^%ZISC
|
---|
137 | Q
|
---|
138 | QUIT K RGDFN,DIC,DIR,FILE,LASTDFN,LASTPT,LASTSSN,ODFNCT,ORESTART,OSTARTED
|
---|
139 | K OSTOPPED,PTNAM,RUNTYPE,SCORE,SSN,ST,STATUS,X,Y,%DT,ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK
|
---|
140 | K CURSCORE,SCOREDT,NODE,STOPDT,FILEFLG,SCORE,CNT,RGDFN,RUN
|
---|
141 | ;kill variables leftover from the CALI^RGVCCMR2 entry point
|
---|
142 | K LRCODE,DA,DR,DIE,APSTDT,LRCODE,LRSCORE,NXPC,NXPTF,NXSCE,NXRX,NXXR,PCCODE,PSOVER,PTF0,RXDT,STDT,XRCODE,XRSTDT,YR
|
---|
143 | Q
|
---|