Giter Club home page Giter Club logo

sdcurve's Introduction

sdcurve

Microserviço de curvas de crescimento baseados na Altura, Peso, IMC e Perímetro Cefálico de crianças com Síndrome de Down do sexo masculino ou feminino de 0 a 36 meses e de 3 a 18 anos.

Build Status Codacy Badge Codacy Badge

Instalação

Pega o repositório do github: git clone https://github.com/VictorArnaud/sdcurve.git

Instalar dependencias para rodar o python3 e pip3

sudo apt-get update

sudo apt-get install -y python3-dev sqlite python3-pip libpq-dev
sudo apt-get install -y gettext

Criar o ambiente virtual de desenvolvimento (virtualenvwrapper)

sudo pip3 install --upgrade pip
sudo pip3 install virtualenvwrapper

No arquivo .bashrc do link insira:

WORKON_HOME=~/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
  • Para criar um ambiente virtual: mkvirtualenv <venv_name>

  • Para entrar no ambiente virtual: workon <venv_name>

  • Para sair do ambiente virtual: deactivate

  • Para remover o ambiente virtual: rmvirtualenv <venv_name>

Instalar dependencias do projeto dentro do ambiente virtual

pip install -r requeriments.txt

Rodar comandos para popular o banco de dados

python3 manage.py migrations
python3 manage.py migrate

Rode o servidor

python3 manage.py runserver 0.0.0.0:8000

Como usar

Esse microserviço disponibiliza de todas as curvas de crescimento necessárias para que o médico possa acompanhar melhor seus pacientes com síndrome de down.

Todos os endpoints disponibilizam:

  • Título da curva (title)

  • Eixo X da curva, ou seja, as idades (ages)

  • Os percentis gerados para peso, estatura e perímetro cefálico (percentis_3, percentis_10, percentis_25, percentis_50, percentis_75, percentis_90 e percentis_97)

  • Os percentis gerados para IMC (percentis_5, percentis_10, percentis_25, percentis_50, percentis_75, percentis_85, percentis_90 e percentis_95)

  • Um atributo chamado "graphic" tendo uma reorganização dos dados acima para plotagem em APIS de gráficos como Google Charts

  • Resultado de um consulta aos gráficos, por exemplo, ao inserir o peso, idade, sexo e intervalo de idade (0 a 36 meses ou 3 a 18 anos) da criança o resultado será se a criança está no peso médio (0), acima do peso médio (1) ou abaixo do peso médio (-1) estipulado pelos valores dentro dos percentis, ou seja, entre os percentis_3 e percentis_97 a crianças está com o peso na medida normal, abaixo do percentis_3 está com o peso abaixo da média e acima do percentis_97 está com o peso acima da média normal.

OBS: Em estatística descritiva, os percentis são medidas que dividem a amostra ordenada (por ordem crescente dos dados) em 100 partes, cada uma com uma percentagem de dados aproximadamente igual.

Endpoints para curva de crescimento (Altura)

  • /api/growth-curve/height/male-years/

    cim3-20

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/height/male-months/

    cim0-36

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
    
  • /api/growth-curve/height/female-years/

    cif3-20

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/height/female-months/

    cif0-36

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/height/result/

    Entradas:
      - height (cm): Altura da criança
      - age: Idade da criança.
      - gender: 'M' (Masculino) ou 'F' (Feminino).
      - interval: 'months' (0 a 36 meses) ou 'years' (3 a 18 anos).
    
    Saídas (result):
      -  0: Se a criança está na altura média.
      -  1: Se a criança está acima da altura média.
      - -1: Se a criança está abaixo da altura média.
    

Endpoints para curva de crescimento (Peso)

  • /api/growth-curve/weight/male-years/

    pim3-20

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/weight/male-months/

    pim0-36

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/weight/female-years/

    pif3-20

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/weight/female-months/

    pif0-36

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/weight/result/

    Entradas:
      - weight (kg): Peso da criança
      - age: Idade da criança.
      - gender: 'M' (Masculino) ou 'F' (Feminino).
      - interval: 'months' (0 a 36 meses) ou 'years' (3 a 18 anos).
    
    Saídas (result):
      -  0: Se a criança está no peso médio.
      -  1: Se a criança está acima do peso médio.
      - -1: Se a criança está abaixo do peso médio.
    

Endpoints para curva de crescimento (IMC)

  • /api/growth-curve/imc/male/

    imcm2-18

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 5%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_85: Curva de 85%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 95%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/imc/female/

    imcf2-18

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 5%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_85: Curva de 85%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 95%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/imc/result/

    Entradas:
      - height (m): Altura da criança
      - weight (kg): Peso da criança
      - age: Idade da criança.
      - gender: 'M' (Masculino) ou 'F' (Feminino).
    
    Saídas (result):
      -  0: Se a criança está no IMC médio.
      -  1: Se a criança está acima do IMC médio.
      - -1: Se a criança está abaixo do IMC médio.
    

Endpoints para curva de crescimento (perímetro cefálico)

  • /api/growth-curve/perimeter/male/

    pcim0-24

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/perimeter/female/

    pcif0-24

    Fonte: (BERTAPELLI FABIO. 2016)

    Entradas: N/A
    
    Saídas:
      - title: Título da curva.
      - ages: Idades do eixo X da curva
      - percentis_3: Curva de 3%
      - percentis_10: Curva de 10%
      - percentis_25: Curva de 25%
      - percentis_50: Curva de 50%
      - percentis_75: Curva de 75%
      - percentis_90: Curva de 90%
      - percentis_97: Curva de 97%
      - graphic: Reordenação dos dados para plotagem.
    
  • /api/growth-curve/perimeter/result/

    Entradas:
      - perimeter (cm): Perímetro cefálico da criança
      - age: Idade da criança.
      - gender: 'M' (Masculino) ou 'F' (Feminino).
    
    Saídas (result):
      -  0: Se a criança está no perímetro cefálico médio.
      -  1: Se a criança está acima do perímetro cefálico médio.
      - -1: Se a criança está abaixo do perímetro cefálico médio.
    

Refêrencia

BERTAPELLI FABIO. Curvas de referência de crescimento para crianças e adolescentes com síndrome de down com idade entre 0 e 20 anos. Tese de doutorado na Universidade de Campinas, Faculdade de Ciências Médicas. Campinha, SP. 2016

sdcurve's People

Contributors

sconetto avatar victordeon avatar

Watchers

 avatar  avatar  avatar

sdcurve's Issues

Testes do microserviço

Motivação

Eu como usuário, gostaria de utilizar o microserviço totalmente testado.

Critérios de aceitação

  • Teste para curva de crescimento (altura)
  • Teste para curva de crescimento (peso)
  • Teste para curva de crescimento (perímetro cefálico)
  • Teste para curva de crescimento (IMC)

Curva de crescimento (Altura)

Motivação

Eu como usuário, gostaria de ter a curva de crescimento para estatura de crianças com Sindrome de Down entre 0 a 36 meses e 3 a 18 anos do sexo Masculino e Feminino.

Critérios de aceitação

  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de estatúra masculina de 0 a 36 meses.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de estatúra feminina de 0 a 36 meses.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de estatúra masculina de 3 a 18 anos.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de estatúra feminina de 3 a 18 anos.
  • Um endpoint para que o usuário insira a altura (CM), idade, sexo e o intervalo de idade (3 a 18 anos ou 0 a 36 meses) e retorna um valor inteiro na qual 0 equivale que a altura da criança tá na média, 1 (positivo) ta acima da média e -1 (negativo) abaixo da média

Curva de crescimento (IMC)

Motivação

Eu como usuário, gostaria de ter a curva de crescimento para IMC de crianças com Sindrome de Down entre 0 a 36 meses e 3 a 18 anos do sexo Masculino e Feminino.

Critérios de aceitação

  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de IMC masculina de 0 a 36 meses.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de IMC feminina de 0 a 36 meses.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de IMC masculina de 3 a 18 anos.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de IMC feminina de 3 a 18 anos.
  • Um endpoint para que o usuário insira o peso, altura, idade, sexo e o intervalo de idade (3 a 18 anos ou 0 a 36 meses) e retorna um valor inteiro na qual 0 equivale que o IMC da criança tá na média, 1 (positivo) ta acima da média e -1 (negativo) abaixo da média.

IMC = Peso em quilogramas dividido pela estatura em metros ao quadrado (Kg/m2).
Formula do IMC: Peso/Altura^2

Deploy contínuo

Motivação

Eu como desenvolvedor, gostaria de colocar o ambiente de produção no ar de forma automatizada.

Critérios de aceitação

  • Ao mandarem PRs para a master o ambiente de produção deve ser atualizado com as novas modificações
  • A integração contínua deve ser realizada antes do deploy
  • O ambiente de produção deve ser o Heroku ou o Digital Ocean

Microserviço para dr. down

Motivação

Eu como usuário (equipe de saúde) gostaria de ter as curvas de evolução e crescimento do meu paciente para ajudar no diagnóstico e demais tarefas envolvidas a fim de melhorar a percepção do paciente e meu atendimento.

Critérios de aceitação

Critérios de aceitação:

  • A lógica deve ser construído como microserviço
  • O microserviço tem que ter endpoints para a lógica de verificação se o paciente está acima ou abaixo do ideal de acordo com os gráficos disponibizados na tese de doutorado sobre curvas de crescimento para SD.
  • O microserviço deve disponibilizar de um vetor de pontos para plotar o gráfico, esse vetor deve ser das partes inferiores e superiores do gráfico que diz respeito a área ideal que o paciente deve se encontrar.
  • Deve ser testado

Curva de crescimento (Perímetro Cefálico)

Motivação

Eu como usuário, gostaria de ter a curva de crescimento para perímetro cefálico de crianças com Sindrome de Down entre 0 a 36 meses e 3 a 18 anos do sexo Masculino e Feminino.

Critérios de aceitação

  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de perímetro cefálico masculina de 0 a 36 meses.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de perímetro cefálico feminina de 0 a 36 meses.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de perímetro cefálico masculina de 3 a 18 anos.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de perímetro cefálico feminina de 3 a 18 anos.
  • Um endpoint para que o usuário insira o perímetro cefálico (CM), idade, sexo e o intervalo de idade (3 a 18 anos ou 0 a 36 meses) e retorna um valor inteiro na qual 0 equivale que o perímetro cefálico da criança tá na média, 1 (positivo) ta acima da média e -1 (negativo) abaixo da média.

Integração contínua

Motivação

Eu como desenvolvedor, gostaria de o microserviço tenha integração continua .

Critérios de aceitação

  • Rodar testes na integração continua
  • Fazer o deploy das imagens na integração contínua para o docker hub
  • Rodar a integração contínua no Travis CI utilizando docker.
  • Configurar para sempre rodar ao mandarem PRs para a master/develop e bloquear o PR se não for aceito.
  • Rodar e configurar a folha de estilo do projeto

Novos pontos para as curvas

Motivação

Inserir novos pontos dentro da curva para acompanhar o crescimentos da criança.

Critérios de aceitação

  • Novos pontos para curva (altura)
  • Novos pontos para curva (peso)
  • Novos pontos para curva (IMC)
  • Novos pontos para curva (perímetro cefálico)
  • O usuário irá inserir os dados de acordo com a curva, o microserviço irá pegar os dados e retornar o vetor 'graphic' com a lista de novos pontos junto com os antigos.
  • Testar funcionalidade

Curva de crescimento (Peso)

Motivação

Eu como usuário, gostaria de ter a curva de crescimento para peso de crianças com Sindrome de Down entre 0 a 36 meses e 3 a 18 anos do sexo Masculino e Feminino.

Critérios de aceitação

  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de peso masculina de 0 a 36 meses.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de peso feminina de 0 a 36 meses.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de peso masculina de 3 a 18 anos.
  • Um endpoint dos pontos do gráfico (idade, 3%, 10%, 25%, 50%, 75%, 90% e 97%) para a curva de crescimento de peso feminina de 3 a 18 anos.
  • Um endpoint para que o usuário insira o peso (KG), idade, sexo e o intervalo de idade (3 a 18 anos ou 0 a 36 meses) e retorna um valor inteiro na qual 0 equivale que o peso da criança tá na média, 1 (positivo) ta acima da média e -1 (negativo) abaixo da média

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.