1 | IBDFFRFT ;ALB/CMR - AICS Free Forms Tracking Entry ; 27-MAR-97
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**15,38**;APR 24, 1997
|
---|
3 | ;
|
---|
4 | ; -- modified 10/7/97 to allow background freeing via site parameter
|
---|
5 | ;
|
---|
6 | FREEFT ; -- called to pass data from FT to PCE regardless of whether all
|
---|
7 | ; pages have been received.
|
---|
8 | ;
|
---|
9 | N FORMTYPE,IBFID,IBD,IBNODE,DFN,CLINIC,APPT,Y,PXCA,AUPNDAYS,AUPNDOB,AUPNDOD,AUPNPAT,AUPNSEX,CNT,ORVP,PXCAVSIT,RESULT,SDFN
|
---|
10 | D EN^VALM2($G(XQORNOD(0)))
|
---|
11 | I $D(VALMY) D FULL^VALM1 S IBD=0 F S IBD=$O(VALMY(IBD)) Q:'IBD!$D(DIRUT) D
|
---|
12 | .S IBFID=$P($G(^TMP("FRMIDX",$J,+IBD)),"^",2)
|
---|
13 | .S IBNODE=$G(^IBD(357.96,+IBFID,0)) I IBNODE="" W !,"No Form Tracking record associated with entry #",IBD H 2 Q
|
---|
14 | .I '$D(^XUSEC("IBD MANAGER",DUZ)) W !,"You must hold the IBD MANAGER key to free Forms Tracking entries" H 2 Q
|
---|
15 | .I $P(IBNODE,"^",11)'=11 W !,"You may only pass data to PCE if the current status is PENDING PAGES" H 2 Q
|
---|
16 | .S DFN=$P(IBNODE,"^",2),APPT=$P(IBNODE,"^",3),CLINIC=$P(IBNODE,"^",10)
|
---|
17 | .;
|
---|
18 | .; -- display ft data
|
---|
19 | .W !!,"PATIENT: ",$P($G(^DPT(DFN,0)),"^")," APPT DATE/TIME: ",$$FMTE^XLFDT(APPT,2),!,"CLINIC: ",$P($G(^SC(CLINIC,0)),"^"),!
|
---|
20 | .;
|
---|
21 | .; -- display page data
|
---|
22 | .S I=0 F S I=$O(^IBD(357.96,IBFID,9,I)) Q:'I S IBNODE=$G(^IBD(357.96,IBFID,9,I,0)) W !?5,"Page ",$P(IBNODE,"^")," ",$S(+$P(IBNODE,"^",2):"Received",1:"Not Received")
|
---|
23 | .W ! S DIR(0)="Y",DIR("A")="Okay to continue",DIR("B")="Y" D ^DIR K DIR Q:'Y
|
---|
24 | .D SEND(IBFID)
|
---|
25 | ;
|
---|
26 | D EXIT1^IBDFFT,START^IBDFFT1
|
---|
27 | S VALMBCK="R"
|
---|
28 | Q
|
---|
29 | ;
|
---|
30 | SEND(IBFID,ERRCNT) ; -- send all page data in forms tracking
|
---|
31 | ;
|
---|
32 | ; -- gather data from previously stored pages
|
---|
33 | S I=0 F S I=$O(^IBD(357.96,IBFID,10,I)) Q:'I D ARYAD^IBDFBKR($G(^IBD(357.96,IBFID,10,I,0)))
|
---|
34 | ;
|
---|
35 | ; -- send data to pce
|
---|
36 | W:'$D(ZTQUEUED) !,"Sending Data to PCE..."
|
---|
37 | S RESULT=$$SEND^IBDF18E(IBFID,"","",.BUBBLES,.HANDPRNT,"",.PXCA,.DYNAMIC)
|
---|
38 | W:'$D(ZTQUEUED) $S(RESULT:"Successfull",1:"Unsuccessful")
|
---|
39 | ;
|
---|
40 | ; -- process any returned errors/warnings
|
---|
41 | I $D(PXCA("ERROR"))!($D(PXCA("WARNING"))) D
|
---|
42 | .N I,J,ERR,LCNT,DIR,DIRUT,DUOUT
|
---|
43 | .S LCNT=0,ERRCNT=$G(ERRCNT)+1
|
---|
44 | .D EW^IBDFBK2(.ERR,.PXCA,.LCNT)
|
---|
45 | .;
|
---|
46 | .W:'$D(ZTQUEUED) !!!,"The following Error(s) occurred while validating data in PCE for: ",$P($G(^DPT(DFN,0)),"^")
|
---|
47 | .Q:$D(ZTQUEUED)
|
---|
48 | .S I=0 F S I=$O(ERR(I)) Q:'I W !?4,$E(ERR(I),1,75) I $L(ERR(I))>75 W !?10,$E(ERR(I),76,140)
|
---|
49 | .W !!
|
---|
50 | Q
|
---|
51 | ;
|
---|
52 | BCKGRND ; -- entry point for back ground job to process pending pages
|
---|
53 | ;
|
---|
54 | N DAYS,START,END
|
---|
55 | S DAYS=+$P($G(^IBD(357.09,1,0)),"^",11)
|
---|
56 | ;
|
---|
57 | Q:'DAYS
|
---|
58 | S ERRCNT=0
|
---|
59 | S START=DAYS+7
|
---|
60 | S START=$$FMADD^XLFDT(DT,-START)
|
---|
61 | S END=$$FMADD^XLFDT(DT,-DAYS)+.24
|
---|
62 | ;
|
---|
63 | B1 N CNT,ERRCNT,IBFID,STATUS
|
---|
64 | F S START=$O(^IBD(357.96,"D",START)) Q:'START!(START>END) D
|
---|
65 | .S IBFID=0
|
---|
66 | .F S IBFID=$O(^IBD(357.96,"D",START,IBFID)) Q:'IBFID D
|
---|
67 | ..S STATUS=$P($G(^IBD(357.96,IBFID,0)),"^",11)
|
---|
68 | ..I STATUS=11 S CNT=$G(CNT)+1 D SEND(IBFID,.ERRCNT)
|
---|
69 | ;
|
---|
70 | D:$G(MANUAL) BULL
|
---|
71 | I $D(ZTQUEUED),$G(MANUAL) S ZTREQ="@"
|
---|
72 | Q
|
---|
73 | ;
|
---|
74 | BULL ; -- add bulletin or something to let people know what was done
|
---|
75 | ; but only if they ask for it during testing.
|
---|
76 | ;
|
---|
77 | S IBD(1)="The background job to release pending pages has completed"
|
---|
78 | S IBD(2)=""
|
---|
79 | S IBD(3)=" Number of Forms Tracking Entries: "_+$G(CNT)
|
---|
80 | S IBD(4)=" Number of Forms Generating Errors: "_+$G(ERRCNT)
|
---|
81 | S XMSUB="AICS RELEASE PENDING PAGES"
|
---|
82 | S XMDUZ="AICS PACKAGE",XMTEXT="IBD("
|
---|
83 | K XMY S XMN=0
|
---|
84 | S XMY(DUZ)=""
|
---|
85 | D ^XMD
|
---|
86 | K X,Y,IBD,XMDUZ,XMTEXT,XMY,XMSUB,XMN
|
---|
87 | Q
|
---|
88 | ;
|
---|
89 | MANUAL ; -- entry point for sending pending pages to PCE for a date range
|
---|
90 | ; get date range and do b1
|
---|
91 | ;
|
---|
92 | W !!,"Option to Manually send Encounter Forms in a Pending Pages Status in Forms"
|
---|
93 | W !,"Tracking to PCE by Encounter date range.",!!
|
---|
94 | ;
|
---|
95 | S MANUAL=1
|
---|
96 | S DAYS=+$P($G(^IBD(357.09,1,0)),"^",11)
|
---|
97 | S HELP="Enter a START date. This is an exact date and should be in the past."
|
---|
98 | S START=$$ASKDT("Start Date: ","T-"_(60+DAYS),"AEPQX","",DT,.HELP,"D SHELP^IBDFFRFT")
|
---|
99 | I START<1 G MQ
|
---|
100 | S HELP="Enter the END date. This must be after the start date an before today."
|
---|
101 | S END=$$ASKDT("End Date: ","T-"_$S(DAYS:DAYS,1:15),"AEQX",START,DT,.HELP,"D EHELP^IBDFFRFT")
|
---|
102 | I END<1!(END<START) G MQ
|
---|
103 | S ZTRTN="B1^IBDFFRFT",ZTSAVE("START")="",ZTSAVE("END")="",ZTSAVE("DAYS")="",ZTSAVE("MANUAL")=""
|
---|
104 | S ZTDESC="IBD-FREE FORMS TRACKING OF PENDING PAGES"
|
---|
105 | S ZTIO=""
|
---|
106 | W !!,"This option must be queued. No Device is Necessary."
|
---|
107 | W !,"A mail message will be sent when the process has completed.",!!
|
---|
108 | D ^%ZTLOAD
|
---|
109 | MQ K X,Y,IBD,DAYS,START,END,MANUAL,HELP,ZTSK,ZTRTN,ZTSAVE,ZTSAVE,ZTDESC,ZTIO
|
---|
110 | Q
|
---|
111 | ;
|
---|
112 | EHELP ; -- help for the end date prompt
|
---|
113 | W !,"Enter the END date. This is an Encounter Date."
|
---|
114 | W !,"This is the last date that forms that are in a Pending Pages Status in Forms"
|
---|
115 | W !,"Tracking will be automatically sent to PCE for processing."
|
---|
116 | Q
|
---|
117 | ;
|
---|
118 | SHELP ; -- help for start date prompt
|
---|
119 | W !,"Enter the START date. This is an Encounter Date."
|
---|
120 | W !,"This is the date that you want to start the process that sends forms that"
|
---|
121 | W !,"are in a Pending Pages Status in Forms Tracking entries to PCE to start on."
|
---|
122 | Q
|
---|
123 | ;
|
---|
124 | ASKDT(QUES,DEFLT,PARAM,EARLY,LATEST,HELP,EXHELP) ; -- ask date questions
|
---|
125 | N X,Y,DIR,DIRUT,DTOUT,DUOUT,IBQUIT
|
---|
126 | S DIR(0)="DOA^"_$E($G(EARLY),1,7)_":"_$G(LATEST)_":"_$S($G(PARAM)'="":PARAM,1:"AEQRX")
|
---|
127 | I $G(QUES)'="" S DIR("A")=QUES
|
---|
128 | I $G(DEFLT)'="" S DIR("B")=DEFLT
|
---|
129 | I $L($G(EXHELP)) S DIR("??")="^"_EXHELP
|
---|
130 | I $D(HELP) M DIR("?")=HELP
|
---|
131 | D ^DIR
|
---|
132 | I $D(DIRUT),Y'="" S Y=-1 ;i y="" user typed "@"
|
---|
133 | I $D(DTOUT)!($D(DUOUT)) S IBQUIT=1,Y=-1
|
---|
134 | Q Y
|
---|