import requests import tabula import re import streamlit as st def get_substance(x): 'Returns the substance of the drug.' l = x.split('\r') s = re.search(r'\w+', l[-1]).group() return s.lower() # Title and explainer. st.title('Medicinkollen đŸ•”ïž') st.markdown(''' đŸ§‘â€âš•ïž *LĂ€kare ska ha koll pĂ„ dina recept sĂ„ att inga mediciner "krockar" men ibland finns inte den tiden i sjukvĂ„rden.* 💊 *Det finns rapporter om att exempelvis Ă€ldre mĂ€nniskor ibland har en lĂ„ng lista med lĂ€kemedel dĂ€r inte alla kombinationer Ă€r bra.* đŸ§‘â€đŸ’» *Genom att logga in pĂ„ [1177.se](https://1177.se) och gĂ„ till lĂ€kemedelstjĂ€nster kan du ladda hem en PDF dĂ€r det syns vilka lĂ€kemedel du har.* 🔎 *Den PDF\:en kan du sedan ladda upp hĂ€r för att fĂ„ information frĂ„n [Janusmed](https://janusmed.se) - som drivs av bl.a. Region Stockholm – med eventuella varningar.* 😌 *Ingen information sparas i den hĂ€r tjĂ€nsten.* ''') show_example = st.button('Visa exempel pĂ„ hur PDF:en ska se ut') if show_example: st.image('example_list.jpg', 'Exempel pĂ„ lĂ€kemedelslista.') # Get the pdf with prescriptions from the user. pdf = st.file_uploader(label='Ladda upp din lĂ€kemedelslista', type='pdf') if pdf: substances = [] drugs = [] # Extract table from prescription pdf. area = [111, 20, 528, 822] # Coordinates for the corners (up, left, down, right). df_list = tabula.read_pdf(pdf, pages='all', area=area, lattice=True) for df in df_list: if len(df.columns) != 6: continue df.columns = ['UthĂ€mtat datum', 'UthĂ€mtat lĂ€kemedel', 'AnvĂ€ndning', 'Förskrivet av', 'UthĂ€mtad mĂ€ngd', 'LĂ€kemedelsgrupp'] df.dropna(axis=0, inplace=True) df['substance'] = df['UthĂ€mtat lĂ€kemedel'].apply(lambda x: get_substance(x)) df['UthĂ€mtat lĂ€kemedel'] = df['UthĂ€mtat lĂ€kemedel'].apply(lambda x: x.split('\r')[0]) # Create list of precripted substances. substances += df.substance.tolist() drugs += df['UthĂ€mtat lĂ€kemedel'].tolist() # Show the list of drugs. text_drugs = ''' *De hĂ€r lĂ€kemedlen hittar vi i din PDF. Om du saknar nĂ„got kan du lĂ€gga till det genom att följa lĂ€nken till Janusmed nedan eller direkt i förhandsvisningen.*\n ''' for i in drugs: text_drugs += f'+ **{i}**\n ' st.markdown(text_drugs) # Create list of substance ids. substances_id_list = [] for substance in substances: # Get data for the substance. data = requests.get(f'https://janusmed.se/api/search/input/{substance}').json() data = data[0] # Only first is interesting(?) when searching on substances. # Add the substance ID to the list of substances. substance_id = data['nslId'] #TODO Kan finnas flera!? substances_id_list.append(substance_id) # Create URL for janusmed.se substances_id_url_list = '&nslIds='.join(substances_id_list) url = 'https://janusmed.se/interaktioner?nslIds=' + substances_id_url_list # Show text with URL to janusmed.se. st.markdown(f''' Följ [den hĂ€r lĂ€nken]({url}) för att se om dina lĂ€kemedel gĂ„r bra ihop eller om det kan finnas nĂ„got du skulle kunna prata med din lĂ€kare om. Nedan kan du se en förhandsvisning. *Observera att sökningen Ă€r gjord pĂ„ de aktiva substanserna i dina lĂ€kemedel sĂ„ namnen stĂ€mmer kanske inte överens med lĂ€kemedelsnamnen i listan ovan.* ''') # Preview janusmed.se in an iframe. st.components.v1.iframe(url, height=600, scrolling=True)