[613] | 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
|
---|