OHDSI Home | Forums | Wiki | Github

How to run cpt4.jar on Athena download: using new UMLS login

Hi all - I’ve migrated my UMLS account to use an identity provider and am not sure how to run the jar file to update CPT descriptions. Is there a new procedure to follow?

After unpacking, simply open a command line in the directory you unpacked all the files into and run “java -Dumls-user=xxx -Dumls-password=xxx -jar cpt4.jar 5”. Please replace “xxx” with UMLS username and password.


Q: I usually sign in with a UTS username and password. What happened to that?
A: We are no longer supporting username/password to sign in. Instead, you will sign in with your email address using one of the identity providers above.


1 Like

Please find info here:

Thanks, @Konstantin_Yaroshove !
I’ll wait for the update to come out. I’m OK for now without the CPT descriptions.

Perhaps you can put a blurb on the Athena download page to let others know not to migrate on UMLS yet?


1 Like

Here will be update for CPT4 tool to support API keys

Has update been completed? Is there documentation on how to use API keys with CPT4 tool?

Yes, the tool was updated. You will get new version and documentation requesting new download in Athena.

Although the tool has been updated, it appears that the email we get when downloading a vocabulary contains a dead link.

Please replace “xxx” with UMLS API KEY.

The above link gives me a 404.

Hi @Aaron_Kawalsky, apparently we still have the original UMLS login page stored as a link. If you follow the suggestions on that 404 page you would be led to a logon page here.
In any case, you would have to retrieve your API Key after logging in and use it for the tool to work.
We will fix that outdated link in a future release.

Thanks @mik! Yep I was able to figure it out from there, just wanted to bring it up so its on the radar.


I am getting the following error where executing supplied cpt.bat file. I replaced xxx with the api_key executing it several ways. I included dashed and without. command by itself and in bat file. It is executing on window 7 professional and java 8.
java -Dumls-apikey=xxx -jar cpt4.jar 5

[ERROR] 2021-02-18 13:31:57.694 [main] Application - cannot request TGT
org.odhsi.utils.cpt.Cpt4Exception: cannot request TGT
at org.odhsi.utils.cpt.restclient.RestTicketClient.requestTGT(RestTicketClient.java:69) ~[cpt4.jar:?]
at org.odhsi.utils.cpt.restclient.RestTicketClient.build(RestTicketClient.java:55) ~[cpt4.jar:?]
at org.odhsi.utils.cpt.Application.main(Application.java:32) [cpt4.jar:?]
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.Handshaker.fatalSE(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.Handshaker.fatalSE(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.Handshaker.processLoop(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.Handshaker.process_record(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_161]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_161]
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:379) ~[cpt4.jar:?]
at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:337) ~[cpt4.jar:?]
at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:209) ~[cpt4.jar:?]
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226) ~[cpt4.jar:?]
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106) ~[cpt4.jar:?]
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74) ~[cpt4.jar:?]
at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255) ~[cpt4.jar:?]
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32) ~[cpt4.jar:?]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[cpt4.jar:?]
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95) ~[cpt4.jar:?]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[cpt4.jar:?]
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83) ~[cpt4.jar:?]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[cpt4.jar:?]
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76) ~[cpt4.jar:?]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[cpt4.jar:?]
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201) ~[cpt4.jar:?]
at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154) ~[cpt4.jar:?]
at org.odhsi.utils.cpt.restclient.RestTicketClient.requestTGT(RestTicketClient.java:63) ~[cpt4.jar:?]

Found the issue - it was an invalid certificate.

Hi @matthbr ,

I’m currently experiencing a similar issue. Do you happen to remember which certificate was invalid? Or do you have any additional information on how you identified it? Any tips would be appreciated!