1 | TIUMAP ; ISL/JER - TIU/VHA Enterprise Document Type Ontology Mapper ; 04/18/07
|
---|
2 | ;;1.0;TEXT INTEGRATION UTILITIES;**211,225**;Jun 20, 1997;Build 13
|
---|
3 | MAIN ; Main subroutine
|
---|
4 | N TIUOK,TIUMODE,TIULUSE,TIUHOUR,TIUNOW,TIUZR,TIUTOD,TIUBACK,TIUACT,TIUMAPT
|
---|
5 | N SALUT,GREET,PROGRESS,DIRUT,DUOUT,DTOUT,TIUOUT S TIUOUT=0
|
---|
6 | S ^XTMP("TIUMAP",0)=$$FMADD^XLFDT(DT,730)_U_DT,TIUNOW=$$NOW^XLFDT
|
---|
7 | S TIUHOUR=$E($P(TIUNOW,".",2),1,2)
|
---|
8 | S TIUTOD=$S(TIUHOUR'<17:"EVENING",TIUHOUR'<12:"AFTERNOON",1:"MORNING")
|
---|
9 | S TIUZR=$$NAME^TIULS($$PERSNAME^TIULC1(DUZ),"FIRST")
|
---|
10 | S TIULUSE=+$G(^XTMP("TIUMAP","USER",DUZ))
|
---|
11 | S TIUMAPT=+$$MAPTCNT,TIUACT=+$$ACTCNT
|
---|
12 | S PROGRESS(0)="So far, "_TIUMAPT_" of "_TIUACT_" Active Titles have been mapped!"
|
---|
13 | S PROGRESS(1)=$$PROGRESS(TIUMAPT,TIUACT)
|
---|
14 | S SALUT="Good "_TIUTOD_" "_TIUZR_"!"
|
---|
15 | S GREET=$S(+TIULUSE:"And WELCOME BACK for ANOTHER ride on the MTA!!!",1:"And WELCOME to your FIRST RIDE on the MTA!!!")
|
---|
16 | W @IOF,!!?9,"****************************************************************"
|
---|
17 | W !?9,"*",$$PAD(SALUT,"L"),SALUT,$$PAD(SALUT,"R"),"*"
|
---|
18 | W !?9,"*",$$PAD(GREET,"L"),GREET,$$PAD(GREET,"R"),"*"
|
---|
19 | I '+TIULUSE D
|
---|
20 | . W !?9,"* *"
|
---|
21 | . W !?9,"* This option will help you map your LOCAL TIU Titles to the *"
|
---|
22 | . W !?9,"* VHA Enterprise Document Type Ontology which VA is helping to *"
|
---|
23 | . W !?9,"* Develop as an International Normative Standard supporting *"
|
---|
24 | . W !?9,"* interchange of Clinical Documents. *"
|
---|
25 | I +TIUMAPT>0 D
|
---|
26 | . W !?9,"* *"
|
---|
27 | . W !?9,"*",$$PAD(PROGRESS(0),"L"),PROGRESS(0),$$PAD(PROGRESS(0),"R"),"*"
|
---|
28 | . W !?9,"*",$$PAD(PROGRESS(1),"L"),PROGRESS(1),$$PAD(PROGRESS(1),"R"),"*"
|
---|
29 | W !?9,"* *"
|
---|
30 | W !?9,"* In preparation for migration to the HDR, ALL LOCAL titles *"
|
---|
31 | W !?9,"* MUST be mapped to Standard Titles BEFORE transmittal of TIU *"
|
---|
32 | W !?9,"* Documents to the HDR can begin. *"
|
---|
33 | W !?9,"* *"
|
---|
34 | W !?9,"* You may quit mapping titles at any time, and continue your *"
|
---|
35 | W !?9,"* work from the last successfully mapped title. The only *"
|
---|
36 | W !?9,"* catch is that any ACTIVE LOCAL Titles that are not mapped *"
|
---|
37 | W !?9,"* when transmission to the HDR is initiated will be *"
|
---|
38 | W !?9,"* INACTIVATED, so please finish this process expeditiously... *"
|
---|
39 | W !?9,"****************************************************************",!
|
---|
40 | S TIUOK=$$READ^TIUU("Y"," ... Are you READY to map","NO") Q:$D(DIRUT)
|
---|
41 | I +TIUOK'>0 W !!?9,$C(7),"... Very well, no damage done!" Q
|
---|
42 | S ^XTMP("TIUMAP","USER",DUZ)=TIUNOW
|
---|
43 | D LOOP
|
---|
44 | Q
|
---|
45 | PROGRESS(MAPPED,ACTIVE) ; Figure out progress
|
---|
46 | N TIUI,TIUY,BR,BRSIZE S TIUY="You're at Kendall Square Station..."
|
---|
47 | S BRSIZE=ACTIVE/17,BR=MAPPED\BRSIZE+1
|
---|
48 | S TIUY=$P($T(STOPS+BR),";",3)
|
---|
49 | Q TIUY
|
---|
50 | STOPS ; Get the stops
|
---|
51 | ;;You're at Kendall Square Station...Hand in your dime!
|
---|
52 | ;;You're at Charles Circle/MGH...
|
---|
53 | ;;You're at Park Street Station, changing for Jamaica Plain...
|
---|
54 | ;;You're at Boyleston Street Station...
|
---|
55 | ;;You're at Arlington Station...
|
---|
56 | ;;You're at Copley Station...
|
---|
57 | ;;You're at Prudential Station...
|
---|
58 | ;;You're at Symphony Station...
|
---|
59 | ;;You're at Northeastern University Station...
|
---|
60 | ;;You're at Museum of Fine Arts Station...
|
---|
61 | ;;You're at Longwood Medical Area Station...
|
---|
62 | ;;You're at Brigham Circle Station...
|
---|
63 | ;;You're at Fenwood Street Station...
|
---|
64 | ;;You're at Mission Park Station...
|
---|
65 | ;;You're at Riverway Station...
|
---|
66 | ;;You're at Back of the Hill Station...
|
---|
67 | ;;You're at Heath Street Station..."One more nickel."
|
---|
68 | ;;Wuzzat? NO NICKEL?! Then you'll NEVER return! Ah-HA-Ha-ha!!!
|
---|
69 | Q
|
---|
70 | PAD(MESSAGE,SIDE) ; Compute pad for message
|
---|
71 | N LEN,PAD
|
---|
72 | S LEN=(64-$L(MESSAGE))\2
|
---|
73 | I $L(MESSAGE)#2,SIDE="R" S LEN=LEN+1
|
---|
74 | S $P(PAD," ",LEN)=""
|
---|
75 | Q PAD
|
---|
76 | LOOP ; Loop sequentially through titles
|
---|
77 | N TIUDA,TIUOUT W @IOF
|
---|
78 | S TIUDA=+$G(^XTMP("TIUMAP","CHKPNT"))
|
---|
79 | F S TIUDA=$O(^TIU(8925.1,"AT","DOC",TIUDA)) Q:TIUDA'>0 D Q:+$G(DIROUT)!+$G(TIUOUT)
|
---|
80 | . N TIUD0,TIUNM,TIUTYP,DIRUT
|
---|
81 | . Q:+$G(^TIU(8925.1,TIUDA,15)) ; If already mapped, continue to next
|
---|
82 | . S TIUD0=$G(^TIU(8925.1,TIUDA,0)),TIUTYP=$P(TIUD0,U,4)
|
---|
83 | . ; Don't process non-title type document definitions
|
---|
84 | . Q:TIUTYP'="DOC"
|
---|
85 | . Q:+$P(TIUD0,U,7)'=11 ; Only require mapping of ACTIVE local titles
|
---|
86 | . S TIUNM=$$STRIP^TIUMAP2($P(TIUD0,U))
|
---|
87 | . L +^TIU(8925.1,TIUDA,15):1
|
---|
88 | . E Q ; If lock request fails, continue to next title
|
---|
89 | . W !,"For the LOCAL Title: ",TIUNM,!
|
---|
90 | . D MAP(TIUDA,TIUNM)
|
---|
91 | . L -^TIU(8925.1,TIUDA,15):1 ; Decrement lock
|
---|
92 | . Q:+$G(TIUOUT)
|
---|
93 | . I +$G(DIRUT) D Q
|
---|
94 | . . N DIRUT
|
---|
95 | . . W:$$READ^TIUU("E") "" S:+$G(DIRUT) TIUOUT=1
|
---|
96 | . S ^XTMP("TIUMAP","CHKPNT")=TIUDA
|
---|
97 | . S ^XTMP("TIUMAP","MAPCNT")=+$G(^XTMP("TIUMAP","MAPCNT"))+1
|
---|
98 | Q
|
---|
99 | SINGLES ; Map specific INDIVIDUAL titles
|
---|
100 | N TIUDA,TIUOUT W @IOF
|
---|
101 | F S TIUDA=+$$LTTL D Q:TIUDA'>0!+$G(DIROUT)!+$G(TIUOUT)
|
---|
102 | . N TIUD0,TIUNM,TIUTYP,DIRUT
|
---|
103 | . S TIUD0=$G(^TIU(8925.1,TIUDA,0)),TIUTYP=$P(TIUD0,U,4)
|
---|
104 | . ; Don't process non-title type document definitions
|
---|
105 | . Q:TIUTYP'="DOC"
|
---|
106 | . S TIUNM=$$STRIP^TIUMAP2($P(TIUD0,U))
|
---|
107 | . Q:'$$PAGE^TIUMAP2(TIUNM) W !!,"For the LOCAL Title: ",TIUNM,!
|
---|
108 | . D MAP(TIUDA,TIUNM) Q:+$G(DIRUT)
|
---|
109 | Q
|
---|
110 | LTTL() ; Call DIC to look-up title
|
---|
111 | N TIUDA,TIUNM,DIC,X,Y,DTOUT,DUOUT
|
---|
112 | S DIC=8925.1,DIC(0)="AEMQ",DIC("A")="Select TITLE: "
|
---|
113 | S DIC("S")="I $P(^(0),U,4)=""DOC"",($P(^(0),U,7)=11)"
|
---|
114 | D ^DIC K DIC("S") I $D(DTOUT)!$D(DUOUT) S DIRUT=1 S:X="^^" DIROUT=1
|
---|
115 | Q Y
|
---|
116 | ACTCNT() ; Get count of active titles
|
---|
117 | N TIUI,TIUY,TIUT S (TIUI,TIUT,TIUY)=0
|
---|
118 | F S TIUI=$O(^TIU(8925.1,"AT","DOC",TIUI)) Q:+TIUI'>0 S TIUT=TIUT+1 I $$ACTIVE(TIUI) S TIUY=TIUY+1
|
---|
119 | Q TIUY_U_TIUT
|
---|
120 | MAPTCNT() ; Get count of mapped titles
|
---|
121 | N TIUI,TIUY S (TIUI,TIUY)=0
|
---|
122 | F S TIUI=$O(^TIU(8925.1,"ALOINC",TIUI)) Q:+TIUI'>0 D
|
---|
123 | . N TIUJ S TIUJ=0
|
---|
124 | . F S TIUJ=$O(^TIU(8925.1,"ALOINC",TIUI,TIUJ)) Q:+TIUJ'>0 I $$ACTIVE(TIUJ) S TIUY=TIUY+1
|
---|
125 | I (+$G(^XTMP("TIUMAP","MAPCNT"))>0),(^("MAPCNT")'=TIUY) S ^("MAPCNT")=TIUY
|
---|
126 | Q TIUY
|
---|
127 | ACTIVE(TIUDA) ; Is a given title active?
|
---|
128 | Q $P($G(^TIU(8925.1,TIUDA,0)),U,7)=11
|
---|
129 | MAP(TIUDA,TIUNM) ; Map each LOCAL Title
|
---|
130 | N RESULT S RESULT=0
|
---|
131 | Q:'$$PAGE^TIUMAP2(TIUNM) W !,"Attempting to map ",TIUNM,!?2,"to a VHA Enterprise Standard Title...",!
|
---|
132 | ; Bid for LOCK
|
---|
133 | L +^TIU(8925.1,TIUDA,15):1
|
---|
134 | E D Q
|
---|
135 | . W !,$C(7),"Another user is mapping this title...",!
|
---|
136 | . W:$$READ^TIUU("E") "" S:+$G(DIRUT) TIUOUT=1
|
---|
137 | ; First, check whether the LOCAL Title is already mapped
|
---|
138 | I +$G(^TIU(8925.1,+TIUDA,15)) D Q:RESULT<0!+$G(DIRUT)
|
---|
139 | . N TIUY S TIUY=0
|
---|
140 | . W !?5,"The LOCAL Title: ",TIUNM,!?7,"is already mapped to",!,"VHA Enterprise Title: ",$$LOINCNM(+$G(^TIU(8925.1,+TIUDA,15))),!
|
---|
141 | . S TIUY=$$READ^TIUU("YA","Do you want to RE-MAP it? ","NO")
|
---|
142 | . I +TIUY'>0 W $C(7),!,"... OK, No Harm Done!",! S RESULT=-1
|
---|
143 | . E W !
|
---|
144 | ; Next, check for an exact match
|
---|
145 | S RESULT=+$O(^TIU(8926.1,"B",TIUNM,RESULT))
|
---|
146 | I RESULT D Q:+RESULT'>0!+$G(DIRUT) I 1
|
---|
147 | . Q:'$$PAGE^TIUMAP2(TIUNM) W !,"Found Exact Match with VHA Enterprise Standard Title: ",TIUNM,"."
|
---|
148 | . I $$SCREEN^XTID(8926.1,"",+RESULT_",") D Q:'+RESULT
|
---|
149 | . . N TIUACT
|
---|
150 | . . W !,"The corresponding VHA Enterprise Standard Title is INACTIVE."
|
---|
151 | . . W !,"You'll need to map ",TIUNM," manually to a different title,",!," or inactivate the local title.",!
|
---|
152 | . . S RESULT=0
|
---|
153 | . . S TIUACT=$$READ^TIUU("SA^M:map;I:inactivate","Select action: ","map") I +$G(DIRUT) S TIUOUT=1 Q
|
---|
154 | . . I $P(TIUACT,U)="I" D INACT^TIUMAP2(TIUDA) Q
|
---|
155 | . . I $P(TIUACT,U)="M" W !!,"Attempting to map ",TIUNM," to a different title...",! D PARSE^TIUMAP1(.RESULT,TIUNM)
|
---|
156 | . S RESULT(1)=RESULT_U_$P($G(^TIU(8926.1,+RESULT,0)),U)_U_TIUNM
|
---|
157 | . D CONFIRM^TIUMAP1(.RESULT,"Yes")
|
---|
158 | . I +RESULT'>0!+$G(DIRUT) D LOG^TIUMAP1(TIUNM,TIUDA)
|
---|
159 | ; Otherwise, parse the title, attempting to map each word
|
---|
160 | E D Q:+RESULT'>0!+$G(DIRUT)!+$G(TIUOUT)
|
---|
161 | . D PARSE^TIUMAP1(.RESULT,TIUNM)
|
---|
162 | . I RESULT>0,'+$G(DIRUT) D CONFIRM^TIUMAP1(.RESULT,"Yes")
|
---|
163 | . I +RESULT'>0!+$G(DIRUT) D LOG^TIUMAP1(TIUNM,TIUDA)
|
---|
164 | D POINT(TIUDA,.RESULT)
|
---|
165 | Q
|
---|
166 | LOINCNM(TIULDA) ; Resolve name of VHA Enterprise Title
|
---|
167 | Q $P($G(^TIU(8926.1,+TIULDA,0)),U)
|
---|
168 | POINT(DA,RESULT) ; Point the LOCAL Title entry in file #8925.1 at the VHA Enterprise Title
|
---|
169 | N DIE,DR S DIE="^TIU(8925.1,",DR="1501////^S X="_+RESULT_";1502////^S X="_$$NOW^XLFDT_";1503////^S X="_DUZ
|
---|
170 | D ^DIE W !?13,"Done.",!
|
---|
171 | ; Drop LOCK
|
---|
172 | L -^TIU(8925.1,DA,15):1
|
---|
173 | I $P($G(RESULT(1)),U,3)]"" K ^XTMP("TIUMAP","FAIL",$P($G(RESULT(1)),U,3),DA)
|
---|
174 | Q
|
---|