1 | PXRMETCO ; SLC/PJH - QUERI Extract Compliance Report ;01/19/2005
|
---|
2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
|
---|
3 | ;
|
---|
4 | ;
|
---|
5 | ADHOC(IEN,PXRMSTRT,PXRMSTOP) ;Ad Hoc Conformance Report
|
---|
6 | D DUMMY1^PXRMRUTL
|
---|
7 | Q
|
---|
8 | ;
|
---|
9 | D JOB
|
---|
10 | Q
|
---|
11 | ;
|
---|
12 | ;BOOKMARK - cloned from PXRMETX, needs modifying to avoid patient list
|
---|
13 | ;update. Build ^TMP("PXRMETX",$J) for report
|
---|
14 | ;
|
---|
15 | REPORT ;Initialise
|
---|
16 | K ^TMP("PXRMETX",$J)
|
---|
17 | ;Workfile node for ^TMP
|
---|
18 | S PXRMNODE="PXRMRULE"
|
---|
19 | ;Get details from parameter file
|
---|
20 | N DATA,DATES,LIST,NAME,PARTYPE,TEXT
|
---|
21 | ;N PERIOD,TEXT,YEAR
|
---|
22 | S DATA=$G(^PXRM(810.2,IEN,0))
|
---|
23 | ;
|
---|
24 | ;Determine Extract Name and period
|
---|
25 | S NAME=$P(DATA,U),PARTYPE=$P(DATA,U,2)
|
---|
26 | ;S YEAR=$P(NEXT,"/",2),PERIOD=$P(NEXT,"/")
|
---|
27 | ;Calculate report period start and end dates
|
---|
28 | ;D CALC^PXRMEUT(NEXT,.PXRMSTRT,.PXRMSTOP)
|
---|
29 | ;Determine output name for patient list and extract summary
|
---|
30 | S DATES=$$FMTE^XLFDT(PXRMSTRT)_" - "_$$FMTE^XLFDT(PXRMSTOP)
|
---|
31 | ;
|
---|
32 | ;Bookmark - Needs inventive patient list names
|
---|
33 | S LIST=NAME_" REPORT "_DATES
|
---|
34 | ;Process (single) Denominator rule into patient list
|
---|
35 | N SEQ,SUB,SUFFIX
|
---|
36 | S SEQ=""
|
---|
37 | F S SEQ=$O(^PXRM(810.2,IEN,10,"B",SEQ)) Q:'SEQ D
|
---|
38 | .S SUB=$O(^PXRM(810.2,IEN,10,"B",SEQ,"")) Q:'SUB
|
---|
39 | .S DATA=$G(^PXRM(810.2,IEN,10,SUB,0)) Q:DATA=""
|
---|
40 | .S PXRMRULE=$P(DATA,U,2) Q:'PXRMRULE
|
---|
41 | .S SUFFIX=$P(DATA,U,3)
|
---|
42 | .I SUFFIX="" S SUFFIX="DENOMINATOR "_SEQ
|
---|
43 | .;Create new patient list
|
---|
44 | .S PXRMLIST=$$CRLST^PXRMRULE(LIST_" "_SUFFIX) Q:'PXRMLIST
|
---|
45 | .D START^PXRMRULE(PXRMRULE,PXRMLIST,PXRMNODE,PXRMSTRT,PXRMSTOP,IEN,"","")
|
---|
46 | .;Clear ^TMP lists created for rule
|
---|
47 | .D CLEAR^PXRMRULE(PXRMRULE,PXRMNODE)
|
---|
48 | .;Process reminders
|
---|
49 | .D REM^PXRMETXR(SUB,PXRMLIST)
|
---|
50 | ;
|
---|
51 | ;Bookmark - Report stuff goes here
|
---|
52 | ;Update totals section
|
---|
53 | N APPL,DUE,DATA,ETYP,EVAL
|
---|
54 | N FAPPL,FCNT,FDATA,FDUE,FEVAL,FGNAM,FIND,FNAPPL,FNDUE,FSEQ
|
---|
55 | N NAPPL,NDUE,PXRMLIST,RCNT,RIEN,RSEQ,SEQ
|
---|
56 | S SEQ=0,CNT=1
|
---|
57 | F S SEQ=$O(^TMP("PXRMETX",$J,SEQ)) Q:'SEQ D
|
---|
58 | .S RCNT=0,RSEQ=0
|
---|
59 | .F S RCNT=$O(^TMP("PXRMETX",$J,SEQ,RCNT)) Q:'RCNT D
|
---|
60 | ..S DATA=$G(^TMP("PXRMETX",$J,SEQ,RCNT)) Q:'DATA
|
---|
61 | ..S RIEN=$P(DATA,U),PXRMLIST=$P(DATA,U,5)
|
---|
62 | ..S EVAL=$P(DATA,U,2),APPL=$P(DATA,U,3),DUE=$P(DATA,U,4)
|
---|
63 | ..S NAPPL=EVAL-APPL,NDUE=APPL-DUE
|
---|
64 | ..S CNT=CNT+1,RSEQ=RSEQ+1
|
---|
65 | ..;bookmark - write patient line
|
---|
66 | ..;For each count type
|
---|
67 | ..S ETYP="",FCNT=CNT
|
---|
68 | ..F S ETYP=$O(^TMP("PXRMETX",$J,SEQ,RCNT,ETYP)) Q:ETYP="" D
|
---|
69 | ...;For each term
|
---|
70 | ...S FIND=0,FSEQ=0
|
---|
71 | ...F S FIND=$O(^TMP("PXRMETX",$J,SEQ,RCNT,ETYP,FIND)) Q:FIND="" D
|
---|
72 | ....;Update finding totals
|
---|
73 | ....S FDATA=$G(^TMP("PXRMETX",$J,SEQ,RCNT,ETYP,FIND)),FCNT=FCNT+1
|
---|
74 | ....S FEVAL=$P(FDATA,U,2),FAPPL=$P(FDATA,U,3),FDUE=$P(FDATA,U,4)
|
---|
75 | ....S FNAPPL=FEVAL-FAPPL,FNDUE=FAPPL-FDUE
|
---|
76 | ....S FSEQ=FSEQ+1,FGNAM=$P(DATA,U,9)
|
---|
77 | ....;Bookmark - write finding line
|
---|
78 | ..;Update CNT
|
---|
79 | ..S CNT=FCNT
|
---|
80 | Q
|
---|
81 | ;
|
---|
82 | ;Determine whether the report should be queued.
|
---|
83 | JOB ;
|
---|
84 | N %ZIS,ZTDESC,ZTSAVE,ZTRTN,ZTSK
|
---|
85 | S DBDUZ=DUZ
|
---|
86 | D SAVE^PXRMXQUE
|
---|
87 | S %ZIS="Q"
|
---|
88 | S ZTDESC="QUERI Compliance Report - print"
|
---|
89 | S ZTRTN="REPORT^PXRMETCO"
|
---|
90 | S ZTSK=1
|
---|
91 | S PXRMQUE=0
|
---|
92 | S PXRMQUE=$$DEVICE^PXRMXQUE(ZTRTN,ZTDESC,.ZTSAVE,.%ZIS,.ZTSK)
|
---|
93 | I PXRMQUE=1 G EXIT
|
---|
94 | I PXRMQUE>0 S ^XTMP(PXRMXTMP,"PRZTSK")=PXRMQUE
|
---|
95 | Q
|
---|
96 | ;
|
---|
97 | EXIT ;Clean things up.
|
---|
98 | D ^%ZISC
|
---|
99 | D HOME^%ZIS
|
---|
100 | K IO("Q")
|
---|
101 | K DIRUT,DTOUT,DUOUT,POP,ZTREQ
|
---|
102 | I $D(ZTSK) D KILL^%ZTLOAD
|
---|
103 | K ZTSK,ZTQUEUED
|
---|
104 | K ^TMP("PXRMXTR",$J)
|
---|
105 | Q
|
---|
106 | ;
|
---|
107 | SAVE ;Save the variables for queing.
|
---|
108 | S ZTSAVE("IEN")=""
|
---|
109 | S ZTSAVE("PXRMSTRT")=""
|
---|
110 | S ZTSAVE("PXRMSTOP")=""
|
---|
111 | Q
|
---|
112 | ;
|
---|
113 | ;
|
---|
114 | QUE ;BOOKMARK - NOT USED
|
---|
115 | ;Queue the MST synchronization job.
|
---|
116 | N DIR,DTOUT,DUOUT,MINDT,SDTIME,STIME,X,Y
|
---|
117 | S MINDT=$$NOW^XLFDT
|
---|
118 | W !,"Queue the Clinical Reminders MST synchronization."
|
---|
119 | S DIR("A",1)="Enter the date and time you want the job to start."
|
---|
120 | S DIR("A")="It must be after "_$$FMTE^XLFDT(MINDT,"5Z")_" "
|
---|
121 | S DIR(0)="DAU"_U_MINDT_"::RSX"
|
---|
122 | D ^DIR
|
---|
123 | I $D(DTOUT)!$D(DUOUT) Q
|
---|
124 | S SDTIME=Y
|
---|
125 | K DIR
|
---|
126 | S DIR(0)="YA"
|
---|
127 | S DIR("A")="Do you want to run the MST synchronization at the same time every day? "
|
---|
128 | S DIR("B")="Y"
|
---|
129 | D ^DIR
|
---|
130 | I $D(DTOUT)!$D(DUOUT) Q
|
---|
131 | I Y S STIME="1."_$P(SDTIME,".",2)
|
---|
132 | E S STIME=-1
|
---|
133 | ;
|
---|
134 | ;Put the task into the queue.
|
---|
135 | K ZTSAVE
|
---|
136 | ;S ZTSAVE("START")=SDTIME
|
---|
137 | S ZTSAVE("STIME")=STIME
|
---|
138 | S ZTRTN="SYNCH^PXRMMST"
|
---|
139 | S ZTDESC="Clinical Reminders MST synchronization job"
|
---|
140 | S ZTDTH=SDTIME
|
---|
141 | S ZTIO=""
|
---|
142 | D ^%ZTLOAD
|
---|
143 | W !,"Task number ",ZTSK," queued."
|
---|
144 | Q
|
---|