| 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
 | 
|---|