1 | VEPER7EX ;RSL/DAOU; HL7 EXTRACT FROM FILE; 05/20/2005 10:24 ; 8/23/05 11:29am
|
---|
2 | ;;1.0;VISTA EHR DOQ IT HL7 extraction using Clinical Reminders; 05/20/05 ;;Build 1
|
---|
3 | ;This is the beginning of the extraction from the extract file
|
---|
4 | ;
|
---|
5 | ;VARIABLE LIST
|
---|
6 | Q
|
---|
7 | EXTRACT(VBDT,VEDT,PXRMLIST) ;
|
---|
8 | N FHSC,BHSC,MSHC,RXAC,HL7DIR,HL7FN,DFN,NPID,PCID,PROD,SF,VID,BDT,EDT
|
---|
9 | N CONFIG,HL7DIR,HL7FN,TOPTYP,TOPIND,INST,FNMID,TTIEN,TODAY,DFNSQ
|
---|
10 | S (FHSC,BHSC,MSHC,RXAC,ORCC)=0 ;Initialize counts
|
---|
11 | ;
|
---|
12 | ;**** Switch from Test to Production ****
|
---|
13 | S PROD=0
|
---|
14 | ;******************************************
|
---|
15 | ;
|
---|
16 | S CFGIEN="1,"
|
---|
17 | K CONFIG D GETS^DIQ(19904.5,CFGIEN,"**","","CONFIG")
|
---|
18 | S INSTIEN=DUZ(2)_","
|
---|
19 | K INST D GETS^DIQ(4,INSTIEN,"**","","INST")
|
---|
20 | ; ---- ** Need to build and fetch area for Client Start date and end date
|
---|
21 | S CLSTDT=""
|
---|
22 | S CLENDDT=""
|
---|
23 | S %DT="T",X="N" D ^%DT S TODAY=$P(Y,".")
|
---|
24 | S BDT=$S(VBDT:VBDT,1:0),EDT=$S(VEDT:VEDT,1:TODAY)
|
---|
25 | S HL7DIR=CONFIG(19904.5,CFGIEN,1) ;Directory from Configuration where to place the HL7 files
|
---|
26 | S SF=INST(4,INSTIEN,.01) ;Sending Facility Name
|
---|
27 | S FNMID=INST(4,INSTIEN,52)
|
---|
28 | I HL7DIR="" D Q
|
---|
29 | . W "HL7 directory is not defined. Quiting.",!!
|
---|
30 | . W "Please enter HL7 send directory into configuration."
|
---|
31 | S %DT="T",X="N" D ^%DT
|
---|
32 | N DTZ S DTZ=$$FMTHL7^XLFDT(Y),DTZ=$P(DTZ,"-")
|
---|
33 | S HL7FN="DOQITHL7_"_DTZ_".DAT"
|
---|
34 | W !!,"HL7 DOQ IT file name for transmission will be:",!
|
---|
35 | W HL7DIR_HL7FN,!!
|
---|
36 | W "Status messages will be sent to Mail Group: ",CONFIG(19904.5,"1,",2),!!
|
---|
37 | S ZTER="OPENERR",POP=0
|
---|
38 | D OPEN^%ZISH("",HL7DIR,HL7FN,"W") Q:POP
|
---|
39 | U IO
|
---|
40 | ;-Verify Values
|
---|
41 | S TOPTYP=$S(ID[" CAD ":"CAD",ID[" HTN ":"HTN",ID[" DM ":"DM",ID[" HF ":"HF",1:"PC"),TTIEN=$O(^DOQIT(19904.6,"B",TOPTYP,""))_","
|
---|
42 | K TDATA D GETS^DIQ(19904.6,TTIEN,"**","","TDATA")
|
---|
43 | S DFNSQ=0 F S DFNSQ=$O(^PXRMXP(810.5,PXRMLIST,30,DFNSQ)) Q:DFNSQ=""!(DFNSQ'?.N) S DFN=$P(^(DFNSQ,0),"^"),X=$$PTPROCES(DFN) I X D
|
---|
44 | . I X=1 W !,"ERROR: Patient DFN # is not in file #2 for IEN #",IEN,"." Q
|
---|
45 | ;
|
---|
46 | I BHSC D BTS^VEPER7SG(MSHC)
|
---|
47 | I FHSC D FTS^VEPER7SG(BHSC)
|
---|
48 | ;End of EXTRACT *********
|
---|
49 | D CLOSE^%ZISH("")
|
---|
50 | K ^TMP("VEPER7EX",$J)
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | PTPROCES(DFN) ;Process Patient information out to DOQ IT HL7 file.
|
---|
54 | ;
|
---|
55 | ; DFN - Patient Identification Number for link to DPT file #2.
|
---|
56 | ;
|
---|
57 | N IDXSQ,VEPER7PT,TOPIND,TTP,ALERGY,ORC,ENEFFDT,ENCLSDT,DTTM
|
---|
58 | I '$D(^DPT(DFN)) Q 1 ;DFN is not on file in #2.
|
---|
59 | ;
|
---|
60 | ;
|
---|
61 | K VEPER7PT S DFN=DFN_"," D GETS^DIQ(2,DFN,"**","","VEPER7PT")
|
---|
62 | D GETS^DIQ(2,DFN,.03,"I","VEPER7PT")
|
---|
63 | K DOQREG D GETS^DIQ(19904.4,DFN,"**","","DOQREG")
|
---|
64 | S ALERGY=0
|
---|
65 | S ENEFFDT=$$DTCALC^VEPER7SG("","")
|
---|
66 | S ENCLSDT=""
|
---|
67 | ;
|
---|
68 | ;----- Follow links to fetch Institution Name & Info
|
---|
69 | ;
|
---|
70 | ;K MCDIVA,INSTLNK,INST
|
---|
71 | ;S X=$O(VEPER7PT(2.101,"")),X=X_","
|
---|
72 | ;K MCDIVA D GETS^DIQ(2.101,X,"3","I","MCDIVA")
|
---|
73 | ;S MCDIV=MCDIVA(2.101,X,3,"I")_","
|
---|
74 | ;K INSTLNK D GETS^DIQ(40.8,MCDIV,".07","I","INSTLNK")
|
---|
75 | ;S INSTNO=INSTLNK(40.8,MCDIV,.07,"I")
|
---|
76 | ;K INST D GETS^DIQ(4,INSTNO,"**","","INST")
|
---|
77 | ;
|
---|
78 | ;------ End of Institution links for data -------
|
---|
79 | ;
|
---|
80 | ;-------- Follow links for Primary Physician Info --------
|
---|
81 | ;
|
---|
82 | S X=$O(VEPER7EX(2.312,""))
|
---|
83 | K PPIEN I X'="" D
|
---|
84 | . D GETS^DIQ(2.312,X,"4.01","I","PPIEN")
|
---|
85 | . S PPIEN=$G(PPIEN(2.312,X,4.01,"I"))_","
|
---|
86 | . K PRIPHN D GETS^DIQ(200,PPIEN,53.2,"","PRIPHN")
|
---|
87 | I X="" S PPIEN=","
|
---|
88 | K PRIPHN S PRIPHN(200,PPIEN,53.2)="" I PPIEN'="," D GETS^DIQ(200,PPIEN,"**","","PRIPHN")
|
---|
89 | ;
|
---|
90 | ;--------- End of Primary Physician Info Link -------
|
---|
91 | ;
|
---|
92 | ;S TOPI=TTIEN F S TOPI=$O(TDATA(19904.62,TOPI)) Q:TOPI="" S TOPIND=$P(TOPI,",") D
|
---|
93 | S TOPI=1 F S TOPI=$O(TDATA(19904.62,TOPI)) Q:TOPI="" I $P(TOPI,",",2)=$P(TTIEN,",") D
|
---|
94 | .S TOPIND=$P(TOPI,",")
|
---|
95 | .S TTP=TOPIND-2*2+1
|
---|
96 | .I TTP>0 S FLD=$S(TOPTYP="CAD":.2,TOPTYP="DM":.3,TOPTYP="HTN":.4,TOPTYP="HF":.5,1:.6)_(TOPIND-1)
|
---|
97 | .I TTP<0 S FLD=$S(TOPTYP="CAD":.02,TOPTYP="DM":.03,TOPTYP="HTN":.04,TOPTYP="HF":.05,1:.06)
|
---|
98 | .I DOQREG(19904.4,DFN,FLD)?1"C".E,DOQREG(19904.4,DFN,FLD_1)="" D Q
|
---|
99 | ..D CANCEL^VEPER7SB
|
---|
100 | ..N UPDTREG,ERR
|
---|
101 | ..K UPDTREG S UPDTREG(19904.4,DFN,FLD_1)=TODAY
|
---|
102 | ..D FILE^DIE("","UPDTREG","ERR")
|
---|
103 | ..K UPDTREG,ERR
|
---|
104 | .I DOQREG(19904.4,DFN,FLD)'?1"R".E Q ;If patient not registered then stop processing
|
---|
105 | .I DOQREG(19904.4,DFN,FLD_1)="" D
|
---|
106 | ..D REGISTER^VEPER7SB
|
---|
107 | ..N UPDTREG,ERR
|
---|
108 | ..K UPDTREG S UPDTREG(19904.4,DFN,FLD_1)=TODAY
|
---|
109 | ..D FILE^DIE("","UPDTREG","ERR")
|
---|
110 | ..K UPDTREG,ERR
|
---|
111 | .;
|
---|
112 | .;--- Fetch visit records for patient to process ---
|
---|
113 | .;
|
---|
114 | .D VISIT^VEPEREX($E(DFN,1,$L(DFN)-1),20,BDT,EDT,.NFOUND,.TEST,.DATE,.DATA,.TEXT)
|
---|
115 | .S VSTNO="" F S VSTNO=$O(DATA(VSTNO)) Q:VSTNO="" S VSTIEN=DATA(VSTNO)_"," D
|
---|
116 | ..I $D(^TMP("VEPER7EX",$J,"V",DFN,VSTNO)) Q ;Don't process 2ce
|
---|
117 | ..K VISIT D GETS^DIQ(9000010,VSTIEN,.01,"I","VISIT")
|
---|
118 | ..D PTVISIT^VEPER7SB
|
---|
119 | ..S ^TMP("VEPER7EX",$J,"V",DFN,VSTNO)=""
|
---|
120 | .S BVDATE=9999998-EDT,EVDATE=9999999-BDT
|
---|
121 | .S VAX="" F S VAX=$O(^AUPNVIMM("AA",DFN,VAX)) Q:VAX="" D
|
---|
122 | ..S BVDATE=$O(^AUPNVIMM("AA",DFN,VAX,BVDATE)) Q:BVDATE=""!(BVDATE>EVDATE) D
|
---|
123 | ...S VIMMIEN="" F S VIMMEIN=$O(^AUPNVIMM("AA",DFN,VAX,BVDATE,VIMMIEN)) Q:VIMMEIN="" D
|
---|
124 | ....I $D(^TMP("VEPER7EX",$J,DFN,VAX,BVDATE,VIMMIEN)) Q ;Don't process a 2nd time
|
---|
125 | ....K VIMM D GETS^DIQ(9000010.11,VIMMIEN_",","**","","VIMM")
|
---|
126 | ....D GETS^DIQ(9000010.11,VIMMIEN_",",1201,"I","VIMM")
|
---|
127 | ....D VAXMSG^VEPER7SB
|
---|
128 | ....S ^TMP("VEPER7EX",$J,DFN,VAX,BVDATE,VIMMIEN)=""
|
---|
129 | ....K VIMM
|
---|
130 | .S BVDATE=9999998-EDT
|
---|
131 | .S MED="" F S MED=$O(^AUPNVMED("AA",DFN,MED)) Q:MED="" D
|
---|
132 | ..S BVDATE=$O(^AUPNVMED("AA",DFN,MED,BVDATE)) Q:BVDATE=""!(BVDATE>EVDATE) D
|
---|
133 | ...S VMEDIEN="" F S VMEDIEN=$O(^AUPNVMED("AA",DFN,MED,BVDATE,VMEDIEN)) Q:VMEDIEN="" D
|
---|
134 | ....I $D(^TMP("VEPER7EX",$J,DFN,MED,BVDATE,VMEDIEN)) Q ;Don't process a 2nd time
|
---|
135 | ....K VMED D GETS^DIQ(9000010.14,VMEDIEN_",","**","","VMED")
|
---|
136 | ....D PXTRTOM^VEPER7SB
|
---|
137 | ....S ^TMP("VEPER7EX",$J,DFN,MED,BVDATE,VMEDIEN)=""
|
---|
138 | ....K VMED
|
---|
139 | Q 0
|
---|
140 | ;
|
---|
141 | ;
|
---|