Package: interage_python_sdk
Interage Python SDKSDK oficialmente mantido pelaIntMed Softwarepara auxiliar no desenvolvimento de aplicações em Python integradas ao serviço de interações medicamentosas do sistemaInterage. Desenvolvido para ser simples e idiomático para Python, o SDK comunica-se com uma API RESTful via protocolo HTTPS.InstalaçãoPIPSe você já tem oPythonem seu sistema, você pode instalar o Interage Python SDK simplesmente baixando a distribuição, descompactá-la e instalá-la da maneira usual:pip install interage_python_sdkDependênciasRequests- O Interage Python SDK necessita que o pacote esteja instaladoQuick StartPara começar, instale o Interage Python SDK, crie um objetoInterageAPIpassando o seu token para o argumentoauthe invoque seus métodos:frominterage.apiimportInterageAPIapi=InterageAPI(auth='your-api-token')medicamentos=api.medicamentos.filter(search='acido').objects()forminmedicamentos:print(m.nome)Você também pode criar um objetoInterageAPIpassando as suas credenciais (usernameepassword) da API na forma dedicionáriopara o argumentoauth:client=InterageAPI(auth={'username':'your-username','password':'your-password'})Qualquer credencial inválida passada no construtor deInterageAPIlançará uma exceção e o objeto não será criado.ManagersUm objetoInterageAPIcontém referências para três objetos do tipoAPIManager, que são basicamente gerenciadores de recursos mantidos pela API. São eles:medicamentos- Gerenciador dos recursos responsáveis pelos dados de medicamentos. Recurso/v1/medicamentos/principios_ativos- Gerenciador dos recursos responsáveis pelos dados de princípios ativos. Recurso/v1/principios-ativos/interacoes- Gerenciador dos recursos responsáveis pelos dados de interações medicamentosas entre princípios ativos. Recurso/v1/interacoes/Estes gerenciadores são capazes de recuperar, listar e filtrar dados específicos da API:api.medicamentos.get(145)# Retorna o medicamento com o identificador (id) 145api.principios_ativos.all()# Lista todos os princípios ativos do sistemaapi.interacoes.filter(principios_ativos=[17,443,648,1200],gravidade='grave')# Retorna todas as interações medicamentosas graves entre os principios ativos com os identificadores 17, 443, 648 e 1200Os managersprincipios_ativoseinteracoescontém comportamento extra. O managerprincipios_ativosé capaz de recuperar todas as interações medicamentosas que um princípio ativo específico possua:api.principios_ativos.interacoes(1)# Retorna todas as interações encontradas com o princípio ativo de identificador (id) igual a 1No managerinteracoesé possível verificar todos os metadados referentes a uma interação medicamentosa. O método retorna um objeto do tipoInteracaoMetadata', mas também pode retornar o resultado como JSON:metadata=api.interacoes.metadata()print(metadata.gravidades)# ['Nada esperado', 'Moderada', 'Leve', 'Grave', 'Gravidade desconhecida']print(metadata.evidencias)# ['Teórica', 'Extensa', 'Caso', 'Estudo']print(metadata.acoes)# ['Ajustar', 'Monitorar', 'Informar', 'Nenhuma', 'Evitar']Tipos de retorno e paginaçãoOs métodos dos managers que retornam mais de um resultado (all()efilter()) são encapsulados em um objeto do tipoAPIResult. Este objeto é capaz de retornar os resultados fornecidos pela API como JSON ou como lista de instâncias das classesPrincipioAtivo,MedicamentoouInteracaoatravés dos métodos, reespectivamente,json()eobjects():results=api.medicamentos.all()medicamentos=results.objects()# Lista de instâncias da classe Medicamentomedicamentos_json=results.json()# JSON com lista de medicamentosforminmedicamentos:print(m.nome)forminmedicamentos_json:print(m['nome'])Os métodos de managers que retornam resultado único retornam por default uma instância do modelo referente ao manager. Caso necessite que o objeto seja retornado como JSON, basta passar o valorTruepara o argumentoas_json:principio_ativo=api.principios_ativos.get(5)principio_ativo_json=api.principios_ativos.get(5,as_json=True)print(principio_ativo.nome)print(principio_ativo_json['nome'])Os resultados em umAPIResultsão paginados de acordo com os parâmetros passados aos métodos dos managers. Através dos métodosnext()eprevious()são retornados uma nova instância deAPIResultreferentes a página posterior e anterior do resultado corrente, reespectivamente. Os métodoshas_next()ehas_previous()podem ajudar a saber se as referências para estas páginas existem:result=api.principios_ativos.filter(search='ra',page_size=50)while(result.has_next()):objects=result.objects()foriinrange(len(objects)):print(objects[i].nome)result=result.next()ConfiguraçãoTalvez o seu projeto que utilize o Interage Python SDK tenha determinadas particularidades no uso da API do Interage, como uma distribuição própria. Neste caso, é possível configurar o comportamento do SDK através variáveis de ambiente. São elas:VariávelDescriçãoValor padrãoINTERAGE_API_URLURL de conexão onde se encontra uma distribuição da API do Interage que se deseja utilizarhttps://api.interage.intmed.com.brINTERAGE_API_VERSIONVersão da API do Interage que se esteja utilizando. Este valor é anexado a URL de conexão durante as requisições para a APIv1Reportando problemasSe você tem sugestões, bugs ou outros tipos de problemas com este SDK, esteja livre para reportaraqui. Ou simplesmente envie um pull request.APIPara mais dúvidas sobre os parâmetros, endpoints, criação de tokens e outras dúvidas sobre a API, consulte a documentação oficial da API do Interageaqui.Versão0.1.0 - 27/02/2017 - Primeira release0.1.1 - 27/02/2017 - Correção de erro crash do pacote utils e mudança de protocolo para HTTPS0.2.0 - 01/03/2017 - Suporte para paginação e adição do campoprincipios_ativos_anvisaem medicamentos0.2.1 - 02/03/2017 - Correção de instanciações de managers desnecessárias em um mesmo client0.2.2 - 04/03/2017 - Melhorias de código e mudança de responsabilidade dos managers paraInterageAPI0.2.3 - 09/03/2017 - Melhoria no tratamento de erros HTTP0.3.0 - 24/04/2017 - Melhoria substancial na conversão de JSON em objetos0.3.1 - 21/09/2017 - Adição das propriedadesnext_urleprevious_urlnos objetos do tipoAPIResult0.3.2 - 07/12/2017 - Disponibilização e correção de erros HTTP0.4.0 - 04/04/2018 - Permitindo configuração via variáveis de ambiente0.4.1 - 17/04/2018 - Corrigindo visualização da documentação da biblioteca