2 Module : Gargantext.Core.Text.Corpus.API.Pubmed
3 Description : Pubmed API connection
4 Copyright : (c) CNRS, 2017
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
13 module Gargantext.Core.Text.Corpus.API.Pubmed
17 import Data.Text (Text)
18 import qualified Data.Text as Text
20 import Gargantext.Prelude
21 import Gargantext.Core (Lang(..))
22 import Gargantext.Database.Admin.Types.Hyperdata (HyperdataDocument(..))
24 import qualified PUBMED as PubMed
25 import qualified PUBMED.Parser as PubMedDoc
29 type Limit = PubMed.Limit
31 get :: Query -> Maybe Limit -> IO [HyperdataDocument]
32 get q l = either (\e -> panic $ "CRAWL: PubMed" <> e) (map (toDoc EN)) <$> PubMed.getMetadataWith q l
34 toDoc :: Lang -> PubMedDoc.PubMed -> HyperdataDocument
35 toDoc l (PubMedDoc.PubMed (PubMedDoc.PubMedArticle t j as aus)
36 (PubMedDoc.PubMedDate a y m d)
37 ) = HyperdataDocument (Just "PubMed")
48 (Just $ Text.pack $ show a)
49 (Just $ fromIntegral y)
55 (Just $ (Text.pack . show) l)
57 authors :: Maybe [PubMedDoc.Author] -> Maybe Text
58 authors aus' = case aus' of
60 Just au -> Just $ (Text.intercalate ", ") $ catMaybes $ map PubMedDoc.foreName au
62 abstract :: Maybe [Text] -> Maybe Text
63 abstract as' = fmap (Text.intercalate ", ") as'