1 | IBDF18C ;ALB/CJM/AAS - ENCOUNTER FORM - form ID utilities ;04-OCT-94
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**5,9**;APR 24, 1997
|
---|
3 | ;
|
---|
4 | FID(DFN,APPT,SOURCE,FORMTYPE,CLIN) ; -- Form ID Tracking
|
---|
5 | ; -- create record in the ENCOUNTER FORM TRACKING file
|
---|
6 | ; and returned a unique FORM ID
|
---|
7 | ; -- Input DFN = patient internal entry number
|
---|
8 | ; APPT = appointment date time (fm format)
|
---|
9 | ; SOURCE = the source of the form, ie
|
---|
10 | ; IB = 1
|
---|
11 | ; Pandas = 2
|
---|
12 | ; Telefr = 3
|
---|
13 | ; FORMTYPE = the package form definition ID - may have been exterally assigned
|
---|
14 | ; CLIN = pointer to 44 (optional)
|
---|
15 | ;
|
---|
16 | ; -- Output Returns = internal form id^external form id
|
---|
17 | ;
|
---|
18 | N I,J,X,Y,ID,EXID,CLN,INTERNAL,NODE,FORMID,DIC,DIE,DA,DR,DINUM,DLAYGO
|
---|
19 | S ID=-1,EXID=""
|
---|
20 | ;
|
---|
21 | I '$G(DFN)!('$G(APPT))!('$G(SOURCE)) G FIDQ
|
---|
22 | ;
|
---|
23 | ; -- FORMTYPE may="", but should always be >0 for scannable forms
|
---|
24 | S FORMTYPE=+$G(FORMTYPE)
|
---|
25 | S FORMID("APPT")=APPT,FORMID("SOURCE")=1
|
---|
26 | ;
|
---|
27 | ; -- determine if the FORMTYPE was exterally assigned
|
---|
28 | S INTERNAL=$D(^IBD(357.95,"C",SOURCE,FORMTYPE))
|
---|
29 | ;
|
---|
30 | ;
|
---|
31 | S ID=$$FINDID(DFN,APPT,FORMTYPE) I ID S EXID=ID_"^"_$P($G(^IBD(357.96,ID,0)),"^",9) G FIDQ
|
---|
32 | K DIC,DO,D0,DD,DA,DINUM
|
---|
33 | S DIC="^IBD(357.96,",X=ID,DIC(0)="L",DLAYGO=357.96,DINUM=ID
|
---|
34 | ;
|
---|
35 | L +^IBD(357.97,1,.02):3
|
---|
36 | S ID=+$P($G(^IBD(357.97,1,0)),"^",2)
|
---|
37 | F ID=ID+1:1 L:$D(^IBD(357.96,(ID-1))) -^IBD(357.96,(ID-1)) I ID>0,'$D(^IBD(357.96,ID)) L +^IBD(357.96,ID):1 I $T,'$D(^IBD(357.96,ID)) S (X,DINUM)=ID D FILE^DICN I +Y>0 L -^IBD(357.96,ID) Q
|
---|
38 | S $P(^IBD(357.97,1,0),"^",2)=ID
|
---|
39 | L -^IBD(357.97,1,.02)
|
---|
40 | ;
|
---|
41 | S ID=$S(+Y<1:"",1:+Y) I ID="" D LOGERR^IBDF18E2(3579600,.FORMID) G FIDQ
|
---|
42 | D:ID
|
---|
43 | .S EXID=$$EXID(ID)
|
---|
44 | .S DIE="^IBD(357.96,",DA=ID
|
---|
45 | .S DR="[IBD CREATE FORM TRACKING]"
|
---|
46 | .L +^IBD(357.96,ID):5 D ^DIE L -^IBD(357.96,ID)
|
---|
47 | .K DIC,DIE,DA,DR,DINUM,DLAYGO,%,%H,%I
|
---|
48 | .;
|
---|
49 | .;D NOW^%DTC N IBPRDT S IBPRDT=% ;Not needed with template, delete
|
---|
50 | .;S DR=".02////^S X=DFN;.03////^S X=APPT;.04////^S X=$S(INTERNAL:FORMTYPE,1:"""");.05////^S X=IBPRDT;.07////^S X=SOURCE;.08////^S X=$S('INTERNAL:FORMTYPE,1:"""");.09////^S X=EXID;.1////^S X=$G(CLIN);.11////1"
|
---|
51 | .;I $G(^DPT(DFN,"S",APPT,0))="" S DR=DR_";.14////1"
|
---|
52 | FIDQ Q ID_"^"_EXID
|
---|
53 | ;
|
---|
54 | EXID(ID) ; -- converts external id format to internal id format
|
---|
55 | ; -- we need to decide on external id format
|
---|
56 | Q $G(ID)
|
---|
57 | ;
|
---|
58 | INID(ID) ; -- find internal id number from external format
|
---|
59 | ; -- Input ID = form id in external format
|
---|
60 | ; Output = form id in internal format or NULL if nonexistant
|
---|
61 | ;
|
---|
62 | N EXID
|
---|
63 | S EXID=$O(^IBD(357.96,"AEXT",ID,0))
|
---|
64 | INIDQ Q $G(EXID)
|
---|
65 | ;
|
---|
66 | FSCND(ID,STAT,ERR) ; -- update form tracking file that
|
---|
67 | ; -- Input ID = entry to flag as scanned (internal format)
|
---|
68 | ; STAT = NEW status, 1=printed, 2=scanned,3=sent to pce okay,
|
---|
69 | ; 4=pce returned err
|
---|
70 | ; 11=pending pages, 12=input data error
|
---|
71 | ; ERR = pce error message (required only if stat=4)
|
---|
72 | ;
|
---|
73 | ; -- Output = 1 if successful, 0 if not
|
---|
74 | ;
|
---|
75 | N IBI,SUCCESS,I,J,X,Y,DA,DR,DIC,DIE
|
---|
76 | S SUCCESS=0
|
---|
77 | I '$G(ID) G FSCNDQ
|
---|
78 | I $G(STAT)=4,$G(ERR)="" G FSCNDQ
|
---|
79 | ;
|
---|
80 | ; -- three lines below use template, new for t6, uncommend and delete
|
---|
81 | ; remaining lines
|
---|
82 | S DIE="^IBD(357.96,",DA=ID,DR="[IBD EDIT FORM TRACKING STATUS]"
|
---|
83 | D ^DIE
|
---|
84 | S SUCCESS=1
|
---|
85 | ;
|
---|
86 | ;S IBI=$G(^IBD(357.96,+ID,0)) I IBI="" G FSCND
|
---|
87 | ;I $P(IBI,"^",6)="" S DIE="^IBD(357.96,",DA=ID,DR=".06///NOW;.11////^S X=$S($G(STAT):STAT,1:2);.12////^S X=$G(ERR)" D ^DIE S SUCCESS=1 G FSCNDQ
|
---|
88 | ;S DIE="^IBD(357.96,",DA=+ID,DR=".11////^S X=$G(STAT);.12////^S X=$G(ERR)" D ^DIE S SUCCESS=1
|
---|
89 | ;
|
---|
90 | FSCNDQ Q SUCCESS
|
---|
91 | ;
|
---|
92 | FIDST(ID) ; -- form id status
|
---|
93 | ; -- Input ID = form id (internal entry number)
|
---|
94 | ;
|
---|
95 | ; -- Output STATUS = -1 if id does not exist
|
---|
96 | ; = 1 if id exists but not scanned (printed)
|
---|
97 | ; = 2 if already scanned in
|
---|
98 | ; = 3 if sent to pce okay
|
---|
99 | ; = 4 if sent to pce with error....
|
---|
100 | ;
|
---|
101 | N STATUS,I,J,X,Y
|
---|
102 | S STATUS=-1
|
---|
103 | I '$G(ID) G FIDSTQ
|
---|
104 | S X=$G(^IBD(357.96,ID,0)) I X="" G FIDSTQ
|
---|
105 | S STATUS=$S($P(X,"^",6)="":1,1:2)
|
---|
106 | S:$P(X,"^",11)>2 STATUS=$P(X,"^",11)
|
---|
107 | FIDSTQ Q STATUS
|
---|
108 | ;
|
---|
109 | FINDID(DFN,APPT,FORM,DUP) ; -- Find a form id for a patient and appointment
|
---|
110 | ; -- input DFN = patient
|
---|
111 | ; APPT = appointment date time
|
---|
112 | ; FORM = (Optional) type of form, pointer to 357.95 or field 10
|
---|
113 | ; DUP = (Optional) if true, No duplicates of same form (357)
|
---|
114 | ; returns last printing of same form with different
|
---|
115 | ; form definitions, will also exclude nonscannable form
|
---|
116 | ;
|
---|
117 | ; -- output = form id1^form id2^form id3^form idn...
|
---|
118 | ; = where form ids are successive form ids (in internal
|
---|
119 | ; format) for same appointment
|
---|
120 | ;
|
---|
121 | N ID,I,J,X,ORIGIN,OLDDATE,NEWDATE
|
---|
122 | S ID=""
|
---|
123 | I '$G(DFN)!('$G(APPT)) G FINDIDQ
|
---|
124 | K ^TMP($J,"IBD-FINDID")
|
---|
125 | S CLN=+$G(^DPT(DFN,"S",APPT,0)) ;get clinic if appointment
|
---|
126 | ;
|
---|
127 | I '$G(DUP) S X=0 F S X=$O(^IBD(357.96,"APTAP",DFN,APPT,X)) Q:'X D
|
---|
128 | .I CLN,CLN'=$P($G(^IBD(357.96,X,0)),"^",10) Q ;form for canceled appt.
|
---|
129 | .I '$G(FORM) S ID=ID_X_"^" Q
|
---|
130 | .I $G(FORM) S I=$G(^IBD(357.96,X,0)) I $P(I,"^",4)=FORM!($P(I,"^",8)=FORM) S ID=X Q
|
---|
131 | ;
|
---|
132 | I $G(DUP) S X=0 F S X=$O(^IBD(357.96,"APTAP",DFN,APPT,X)) Q:'X D
|
---|
133 | .I +$P($G(^IBE(357,+$P($G(^IBD(357.95,+$P($G(^IBD(357.96,X,0)),"^",4),0)),"^",21),0)),"^",12)<1 Q
|
---|
134 | .I CLN,CLN'=$P($G(^IBD(357.96,X,0)),"^",10) Q ;form for canceled appt.
|
---|
135 | .S ORIGIN=$P($G(^IBD(357.95,+$P($G(^IBD(357.96,X,0)),"^",4),0)),"^",21) Q:'ORIGIN
|
---|
136 | .I '$G(FORM) D
|
---|
137 | ..I '$D(^TMP($J,"IBD-FINDID",ORIGIN)) S ^TMP($J,"IBD-FINDID",ORIGIN)=X Q
|
---|
138 | ..S OLDDATE=$P($G(^IBD(357.96,+$G(^TMP("IBD-FINDID",ORIGIN)),0)),"^",5)
|
---|
139 | ..S NEWDATE=$P($G(^IBD(357.96,X,0)),"^",5)
|
---|
140 | ..I NEWDATE'<OLDDATE S ^TMP($J,"IBD-FINDID",ORIGIN)=X
|
---|
141 | .I $G(FORM) S I=$G(^IBD(357.96,X,0)) I $P(I,"^",4)=FORM!($P(I,"^",8)=FORM) S ID=X Q
|
---|
142 | I $G(DUP),'$G(FORM) S ORIGIN=0 F S ORIGIN=$O(^TMP($J,"IBD-FINDID",ORIGIN)) Q:'ORIGIN S ID=ID_^TMP($J,"IBD-FINDID",ORIGIN)_"^"
|
---|
143 | ;
|
---|
144 | FINDIDQ K ^TMP($J,"IBD-FINDID")
|
---|
145 | Q ID
|
---|
146 | ;
|
---|
147 | FINDPT(FORMID) ;
|
---|
148 | ; -- find patient from form id
|
---|
149 | ; -- Output :Patient Name ^ PID ^ clinic Name ^ appt date/time (external)
|
---|
150 | ; ^form ID ^ form status ^ DFN ^ clinic ien ^ appt date/time (fm format)
|
---|
151 | ;
|
---|
152 | N I,J,X,Y,DFN,IBNODE,IBXX,VA,VADM,VAERR,STATNM,FORM,FORMNM
|
---|
153 | S IBXX="Unable to identify Form^^^"
|
---|
154 | I +$G(FORMID)<1 G FINDPTQ
|
---|
155 | S IBNODE=$G(^IBD(357.96,+FORMID,0))
|
---|
156 | I IBNODE="" G FINDPTQ
|
---|
157 | S DFN=+$P(IBNODE,"^",2)
|
---|
158 | D DEM^VADPT
|
---|
159 | S Y=$P(IBNODE,"^",11),C=$P(^DD(357.96,.11,0),"^",2) D Y^DIQ S STATNM=Y
|
---|
160 | S FORM=$P($G(^IBD(357.95,+$P(IBNODE,"^",4),0)),"^",21)
|
---|
161 | S FORMNM=$P($G(^IBE(357,+FORM,0)),"^")
|
---|
162 | ;
|
---|
163 | S IBXX=$G(VADM(1))_"^"_$G(VA("PID"))_"^"_$P($G(^SC(+$P(IBNODE,"^",10),0),"Clinic Not Specified"),"^")_"^"_$$FMTE^XLFDT($P(IBNODE,"^",3))_"^"_$P(IBNODE,"^",4)_"^"_$P(IBNODE,"^",11)_"^"_DFN
|
---|
164 | S IBXX=IBXX_"^"_$P(IBNODE,"^",10)_"^"_$P(IBNODE,"^",3)_"^"_STATNM_"^"_FORMNM_"^"_FORM
|
---|
165 | ;
|
---|
166 | I +$P(FORMID,"^",2)>0,$P(IBNODE,"^",4)'=+$P(FORMID,"^",2) S IBXX="Form Type and Form ID Don't match^^^"
|
---|
167 | ;
|
---|
168 | FINDPTQ Q IBXX
|
---|