1 | WVEXPTRA ;HCIOFO/FT-EXPORT MAMS & ULTRASOUNDS TO WOMEN'S HEALTH ;2/18/00 13:49
|
---|
2 | ;;1.0;WOMEN'S HEALTH;**3,5,7,10**;Sep 30, 1998
|
---|
3 | ;; Original routine created by IHS/ANMC/MWR
|
---|
4 | ;;* MICHAEL REMILLARD, DDS * ALASKA NATIVE MEDICAL CENTER *
|
---|
5 | ;---> WVNEWP = TOTAL NEW WOMEN'S HEALTH PATIENTS ADDED.
|
---|
6 | ;---> WVMAM = TOTAL NEW MAMMOGRAMS PROCEDURES ADDED.
|
---|
7 | ;
|
---|
8 | EN1 ;
|
---|
9 | S WVPOP=0,WVEC=""
|
---|
10 | D CHECK I WVPOP D KILL Q ;check if site parameter entry exists
|
---|
11 | D DESC ;describe option
|
---|
12 | D DTRNG I WVPOP D KILL Q ;get date range
|
---|
13 | D STATUS I WVPOP D KILL Q ;select status of procedure
|
---|
14 | D EC^WVGETAL1 I WVPOP D KILL Q ;veterans/non-vets/eligibility code
|
---|
15 | D QUEUE ;queue a background job
|
---|
16 | D KILL
|
---|
17 | Q
|
---|
18 | EN2 ;
|
---|
19 | D CPTS ;get procedure pointers
|
---|
20 | D GET ;get RAD/NM data & store in WH
|
---|
21 | D MAIL ;send mail message to user
|
---|
22 | D KILL ;kill variables
|
---|
23 | Q
|
---|
24 | DESC ; Describe option
|
---|
25 | W @IOF
|
---|
26 | W !,"This option searches the Radiology/Nuclear Medicine database for"
|
---|
27 | W !,"all female patients who had a mammogram, breast ultrasound, pelvic"
|
---|
28 | W !,"ultrasound or vaginal ultrasound exam during the date range you select."
|
---|
29 | W !,"These procedures and patients will be added to the WH database if"
|
---|
30 | W !,"not already there.",!
|
---|
31 | W !,"This job will be queued as a background task so as to free up your"
|
---|
32 | W !,"terminal to do other work. You will receive a mail message when"
|
---|
33 | W !,"the job is done. The mail message will contain a count of the"
|
---|
34 | W !,"number of procedures and patients added.",!!
|
---|
35 | Q
|
---|
36 | CHECK ; Check if DUZ(2) exists for user, if entry exists in site parameter
|
---|
37 | ; file, if case manager, and if File 70 exists.
|
---|
38 | D CHECK^WVLOGO
|
---|
39 | I '$G(DUZ(2))!('$D(^WV(790.02,+DUZ(2),0))) S WVPOP=1
|
---|
40 | I '$P($G(^WV(790.02,+$G(DUZ(2)),0)),U,2) D
|
---|
41 | .D NODCM^WVUTL9
|
---|
42 | .S WVPOP=1
|
---|
43 | .Q
|
---|
44 | I '$D(^RADPT) W !,"There is no Radiology/Nuclear Medicine Patient file (#70)",! S WVPOP=1
|
---|
45 | Q
|
---|
46 | DTRNG ; prompt for date range, go back three years maximum
|
---|
47 | S WVSTDT=DT-30000,WVSTDT=$$DATECHK(WVSTDT)
|
---|
48 | K DIR S DIR(0)="DA^"_WVSTDT_":"_DT
|
---|
49 | S DIR("A")="Enter START DATE: "
|
---|
50 | S DIR("?")="Enter the earliest date of the mammograms/ultrasounds you wish to retrieve. You can begin your search at "_$$FMTE^XLFDT(WVSTDT,"D")_"."
|
---|
51 | D ^DIR K DIR
|
---|
52 | I $D(DIRUT) S WVPOP=1 Q
|
---|
53 | S WVSTDT=Y
|
---|
54 | S DIR(0)="DA^"_WVSTDT_":"_DT
|
---|
55 | S DIR("A")="Enter END DATE: ",DIR("B")=$$FMTE^XLFDT(DT,"D")
|
---|
56 | S DIR("?")="Enter the most recent date of the mammograms/ultrasounds you wish to retrieve."
|
---|
57 | D ^DIR K DIR
|
---|
58 | I $D(DIRUT) S WVPOP=1 Q
|
---|
59 | S WVENDT=Y
|
---|
60 | Q
|
---|
61 | DATECHK(WVDATE) ; Check if WVDATE is a valid date. Substract 1 day until a
|
---|
62 | ; valid date in WVDATE and return same.
|
---|
63 | N %DT,WVLOOP,X,Y
|
---|
64 | S Y=0
|
---|
65 | F WVLOOP=1:1 Q:Y>0 D
|
---|
66 | .S X=WVDATE,%DT=""
|
---|
67 | .D ^%DT
|
---|
68 | .Q:Y>0 ;valid date - stop checking
|
---|
69 | .S WVDATE=$$FMADD^XLFDT(WVDATE,-1)
|
---|
70 | .Q
|
---|
71 | Q WVDATE
|
---|
72 | ;
|
---|
73 | STATUS ; Select default status for procedures
|
---|
74 | K DIR
|
---|
75 | S DIR(0)="S^o:OPEN;c:CLOSED",DIR("A")="Select STATUS OF IMPORTED MAMMOGRAMS"
|
---|
76 | S DIR("?")="Enter 'O' to give a Status of OPEN to Mammograms imported from the Radiology Software into the Women's Health database. Enter 'C' to give a Status of CLOSED to imported Mammograms."
|
---|
77 | D ^DIR K DIR
|
---|
78 | I $D(DIRUT) S WVPOP=1
|
---|
79 | S WVSTATUS=Y
|
---|
80 | Q
|
---|
81 | QUEUE ; Task as background job
|
---|
82 | S ZTIO="",ZTDESC="WH GRAB RAD/NM DATA",ZTRTN="EN2^WVEXPTRA"
|
---|
83 | S ZTDTH=$H,WVPOP=1
|
---|
84 | S ZTSAVE("WVENDT")="",ZTSAVE("WVSTDT")="",ZTSAVE("WVSTATUS")=""
|
---|
85 | S ZTSAVE("WVEC(")=""
|
---|
86 | D ^%ZTLOAD
|
---|
87 | Q
|
---|
88 | CPTS ; Loop through File 71 to get procedure pointers for the CPTs we
|
---|
89 | ; are interested in.
|
---|
90 | N WVPROC S WVIEN=0 K WVARRAY
|
---|
91 | F S WVIEN=$O(^RAMIS(71,WVIEN)) Q:'WVIEN D
|
---|
92 | .S WVCPT=$$GET1^DIQ(71,WVIEN,9,"I") ;CPT code
|
---|
93 | .Q:WVCPT=""
|
---|
94 | .S WVPROC=0
|
---|
95 | .S WVPROC=$O(^WV(790.2,"AC",WVCPT,WVPROC))
|
---|
96 | .Q:'WVPROC
|
---|
97 | .Q:$P($G(^WV(790.2,+WVPROC,0)),U,5)'="R"
|
---|
98 | .S WVARRAY(WVIEN)=""
|
---|
99 | .Q
|
---|
100 | Q
|
---|
101 | GET ; get mammograms and ultrasounds from RAD/NM database
|
---|
102 | ;---> WVMCNT = total new procedures added.
|
---|
103 | ;---> WVNEWP = total new patients added.
|
---|
104 | S (WVMCNT,WVNEWP)=0
|
---|
105 | Q:'$D(WVARRAY) ;no mammogram or ultrasound procedures in File 71
|
---|
106 | S WVENDT=WVENDT\1,WVENDT=9999999-WVENDT ;inverse end date
|
---|
107 | S WVSTDT=WVSTDT\1,WVSTDT=9999999-WVSTDT ;inverse start date
|
---|
108 | S WVSTDT=WVSTDT_".9999"
|
---|
109 | S WVDFN=0 ;patient dfn
|
---|
110 | F S WVDFN=$O(^RADPT(WVDFN)) Q:'WVDFN D ;RAD/NM patient file
|
---|
111 | .Q:$P($G(^DPT(WVDFN,0)),U,2)'="F" ;not female
|
---|
112 | .Q:'$$VECCHK^WVGETAL1(WVDFN) ;failed vet/non-vet/eligibility code check
|
---|
113 | .S WVDTI=WVENDT ;Because the exam date is inverse the end date will
|
---|
114 | .; will be the lower value.
|
---|
115 | .F S WVDTI=$O(^RADPT(WVDFN,"DT",WVDTI)) Q:'WVDTI!(WVDTI>WVSTDT) D
|
---|
116 | ..S WVCNI=0 ;case number
|
---|
117 | ..F S WVCNI=$O(^RADPT(WVDFN,"DT",WVDTI,"P",WVCNI)) Q:'WVCNI D
|
---|
118 | ...S WVNODE=$G(^RADPT(WVDFN,"DT",WVDTI,"P",WVCNI,0))
|
---|
119 | ...Q:WVNODE=""
|
---|
120 | ...S WVPROC=$P(WVNODE,U,2) ;procedure pointer
|
---|
121 | ...Q:'WVPROC ;no pointer to File 71 (no procedure)
|
---|
122 | ...Q:'$D(WVARRAY(WVPROC)) ;not a WH-related procedure
|
---|
123 | ...S WVRPT=$P(WVNODE,U,17) ;report pointer
|
---|
124 | ...Q:'WVRPT ;no pointer to File 74 (no report)
|
---|
125 | ...Q:$$GET1^DIQ(74,WVRPT,5,"I")'="V" ;report status, must be VERIFIED
|
---|
126 | ...D CREATEH^WVRALINK(WVDFN,WVDTI,WVCNI,WVSTATUS)
|
---|
127 | ...Q
|
---|
128 | ..Q
|
---|
129 | .Q
|
---|
130 | Q
|
---|
131 | MAIL ; send mail message to user with counts of procedures & patients added
|
---|
132 | S XMDUZ=.5 ;message sender
|
---|
133 | S XMY(DUZ)="" ;person who ran option
|
---|
134 | S XMSUB="Export of RAD/NM procedures to WH is done"
|
---|
135 | S WVMSG(1)=" # of New patients added to Women's Health package: "_WVNEWP
|
---|
136 | S WVMSG(2)="# of New procedures added to Women's Health package: "_WVMCNT
|
---|
137 | I '$D(WVARRAY) D
|
---|
138 | .S WVMSG(3)=" "
|
---|
139 | .S WVMSG(4)="There are no mammogram or ultrasound procedures listed in your"
|
---|
140 | .S WVMSG(5)="Radiology/Nuclear Medicine package."
|
---|
141 | .Q
|
---|
142 | S XMTEXT="WVMSG("
|
---|
143 | D ^XMD
|
---|
144 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
145 | Q
|
---|
146 | KILL ;
|
---|
147 | K DIR,DIROUT,DIRUT,DTOUT,DUOUT
|
---|
148 | K WVARRAY,WVCNI,WVCPT,WVDFN,WVDTI,WVEC,WVENDT,WVIEN,WVMCNT,WVNEWP,WVNODE,WVPOP,WVPROC,WVRPT,WVSTATUS,WVSTDT
|
---|
149 | K X,Y,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
|
---|
150 | Q
|
---|
151 | ;
|
---|