1 | C0QIMMUN ;Prep Immunization Order data for HL7 Message creation ; 5/23/12 5:40pm
|
---|
2 | ;;1.0;C0Q;;May 21, 2012;Build 43
|
---|
3 | ; ^XTMP("C0QIMMUN",0)=purge date^create date
|
---|
4 | ; ^XTMP("C0QIMMUN",order_date,order#,item_name)=item_value
|
---|
5 | ; ^XTMP("C0QIMMUN","LASTORDR")=last order processed
|
---|
6 | ; Changed by VEN/SMH to add timeout to the locks on May 23 2012
|
---|
7 | FIND ; Find the next set of immunization orders
|
---|
8 | N X1,X2,X,%,%DT,%H,%T,NOW,ORDER,LASTORDR,SUBSC,DIR
|
---|
9 | S LASTORDR=+$G(^XTMP("C0QIMMUN","LASTORDR"))
|
---|
10 | N C0QFAIL S C0QFAIL=0 ; Lock fail flag
|
---|
11 | W !,"The ""Last Order"" from which to begin checking for Immunization orders is: ",LASTORDR
|
---|
12 | S DIR("A")="Do you want to reset that value"
|
---|
13 | S DIR(0)="Y",DIR("B")="NO" D ^DIR D:Y=1
|
---|
14 | . S DIR("A")="What value shall be used?"
|
---|
15 | . S DIR(0)="NO",DIR("B")=LASTORDR D ^DIR
|
---|
16 | . W:Y'>0 !,"We'll skip reseting it then."
|
---|
17 | . D:Y>0
|
---|
18 | . . S LASTORDR=+Y
|
---|
19 | . . L +^XTMP("C0QIMMUN"):0
|
---|
20 | . . E S C0QFAIL=1 QUIT
|
---|
21 | . . S X1=DT,X2=365 D C^%DTC
|
---|
22 | . . S ^XTMP("C0QIMMUN",0)=X_U_DT
|
---|
23 | . . S ^XTMP("C0QIMMUN","LASTORDR")=LASTORDR
|
---|
24 | . . L -^XTMP("C0QIMMUN")
|
---|
25 | . . Q
|
---|
26 | . Q
|
---|
27 | I C0QFAIL W !,"Failed to acquire lock, exiting..." QUIT
|
---|
28 | S DIR("A")="Ready to prep more immunization orders for HL7 messages"
|
---|
29 | S DIR(0)="Y",DIR("B")="YES" D ^DIR Q:Y'=1
|
---|
30 | L +^XTMP("C0QIMMUN"):0
|
---|
31 | E W !,"Failed to acquire lock; exiting..." QUIT
|
---|
32 | I '$D(^XTMP("C0QIMMUN",0)) D
|
---|
33 | . S X1=DT,X2=365 D C^%DTC
|
---|
34 | . S ^XTMP("C0QIMMUN",0)=X_U_DT
|
---|
35 | . S ^XTMP("C0QIMMUN","LASTORDR")=0
|
---|
36 | S ORDER=^XTMP("C0QIMMUN","LASTORDR")
|
---|
37 | F S ORDER=$O(^OR(100,ORDER)) Q:ORDER'>0 D
|
---|
38 | . S LASTORDR=ORDER
|
---|
39 | . D:$D(^OR(100,ORDER,4.5,"ID","ORZ HL7")) GOTONE
|
---|
40 | . Q
|
---|
41 | S ^XTMP("C0QIMMUN","LASTORDR")=LASTORDR
|
---|
42 | W !,"Done",!,"Last Order processed: ",LASTORDR,!
|
---|
43 | L -^XTMP("C0QIMMUN")
|
---|
44 | Q
|
---|
45 | GOTONE ; Take the order number and move the relevant HL7 information into ^XTMP
|
---|
46 | S NOW=$P(^OR(100,ORDER,0),U,7)
|
---|
47 | S ^XTMP("C0QIMMUN",NOW,ORDER,"PATIENT")=$P(^OR(100,ORDER,0),U,2)
|
---|
48 | S ^XTMP("C0QIMMUN",NOW,ORDER,"LOCATION")=$P(^OR(100,ORDER,0),U,10)
|
---|
49 | S ^XTMP("C0QIMMUN",NOW,ORDER,"ORDEREDBY")=$P(^OR(100,ORDER,0),U,6)
|
---|
50 | S ENTRY=0 F S ENTRY=$O(^OR(100,ORDER,4.5,ENTRY)) Q:ENTRY'>0 D
|
---|
51 | . S SUBSC=$P($G(^OR(100,ORDER,4.5,ENTRY,0)),U,4)
|
---|
52 | . Q:'$L(SUBSC)
|
---|
53 | . I SUBSC'="TIME" S ^XTMP("C0QIMMUN",NOW,ORDER,SUBSC)=^OR(100,ORDER,4.5,ENTRY,1)
|
---|
54 | . E S X=^OR(100,ORDER,4.5,ENTRY,1),%DT="TS" D ^%DT S ^XTMP("C0QIMMUN",NOW,ORDER,SUBSC)=Y
|
---|
55 | . Q
|
---|
56 | S ^XTMP("C0QIMMUN",NOW,ORDER,"ORDERTEXT")=$G(^OR(100,ORDER,8,1,.1,1,0))
|
---|
57 | Q
|
---|