コード例 #1
0
def crear_cursos(borrar=True):
    print("Creando cursos")

    if borrar:
        Curso.objects.all().delete()

    pr = Curso()
    pr.nombre = "Hospitalización 1"
    pr.nombre_interno = "Hospitalización 1 v202020"
    pr.codigo = "PEDI-5101"
    pr.semestre = "2020-20"
    pr.programa = Programa.buscar_por_codigo("PEDI")
    pr.descripcion = "Las rotaciones clínicas permiten que el residente tenga contacto y bajo supervisión atienda pacientes con las patologías frecuentes de un área o subespecialidad específica, aprenda a usar las pruebas, los procedimientos diagnósticos, el tratamiento integral de estas patologías o situaciones clínicas."
    pr.save()

    # Poniéndole APEs al curso
    pr.apes.add(APE.buscar_por_sigla("APE1"))
    pr.apes.add(APE.buscar_por_sigla("APE2"))
    pr.apes.add(APE.buscar_por_sigla("APE3"))
    pr.apes.add(APE.buscar_por_sigla("APE4"))
    pr.apes.add(APE.buscar_por_sigla("APE9"))
    pr.apes.add(APE.buscar_por_sigla("APE11"))
    pr.apes.add(APE.buscar_por_sigla("APE12"))
    pr.save()

    # Poniéndole Competencias al curso
    pr.competencias.add(Competencia.buscar_por_sigla("HC1"))
    pr.competencias.add(Competencia.buscar_por_sigla("HC3"))
    pr.save()
コード例 #2
0
def crear_programa(borrar=True):
    print("Creando programa")

    if borrar:
        Programa.objects.all().delete()

    pr = Programa()
    pr.nombre = "Pediatría"
    pr.codigo = "PEDI"
    pr.save()

    # Poniéndole APEs al programa
    pr.apes.add(APE.buscar_por_sigla("APE1"))
    pr.apes.add(APE.buscar_por_sigla("APE2"))
    pr.apes.add(APE.buscar_por_sigla("APE3"))
    pr.apes.add(APE.buscar_por_sigla("APE4"))
    pr.apes.add(APE.buscar_por_sigla("APE5"))
    pr.apes.add(APE.buscar_por_sigla("APE6"))
    pr.apes.add(APE.buscar_por_sigla("APE7"))
    pr.apes.add(APE.buscar_por_sigla("APE8"))
    pr.apes.add(APE.buscar_por_sigla("APE9"))
    pr.apes.add(APE.buscar_por_sigla("APE10"))
    pr.apes.add(APE.buscar_por_sigla("APE11"))
    pr.apes.add(APE.buscar_por_sigla("APE12"))

    pr.save()

    # Poniéndole Competencias al programa
    pr.competencias.add(Competencia.buscar_por_sigla("HC1"))
    pr.competencias.add(Competencia.buscar_por_sigla("HC2"))
    pr.competencias.add(Competencia.buscar_por_sigla("HC3"))
    pr.save()
コード例 #3
0
    def test_buscar_por_programa(self):
        """buscar_por_programa encuentra los grupos de competencias correctos"""
        grupo1 = GrupoCompetencia.objects.get(sigla="gc")
        cp1 = Competencia.objects.create(grupo=grupo1, nombre="n1", sigla="cp1", descripcion="d1")
        cp2 = Competencia.objects.create(grupo=grupo1, nombre="n2", sigla="cp2", descripcion="d2")
        cp3 = Competencia.objects.create(grupo=grupo1, nombre="n3", sigla="cp3", descripcion="d3")

        grupo2 = GrupoCompetencia.objects.get(sigla="gc")
        cp4 = Competencia.objects.create(grupo=grupo2, nombre="n4", sigla="cp4", descripcion="d4")

        pr1 = Programa.objects.create(nombre="Programa1", codigo="PRO1")
        pr1.agregar_competencia(cp1)
        pr1.agregar_competencia(cp2)

        grupos_1 = Competencia.buscar_por_programa(pr1)
        self.assertIsNotNone(grupos_1)
        self.assertIn(grupo1, grupos_1)
        self.assertNotIn(grupo2, grupos_1)

        pr2 = Programa.objects.create(nombre="Programa2", codigo="PRO2")
        pr2.agregar_competencia(cp4)

        grupos_2 = Competencia.buscar_por_programa(pr1)
        self.assertIsNotNone(grupos_2)
        self.assertNotIn(grupo1, grupos_2)
        self.assertIn(grupo2, grupos_2)

        pr3 = Programa.objects.create(nombre="Programa3", codigo="PRO3")
        pr3.agregar_competencia(cp1)
        pr3.agregar_competencia(cp4)

        grupos_3 = Competencia.buscar_por_programa(pr1)
        self.assertIsNotNone(grupos_3)
        self.assertIn(grupo1, grupos_3)
        self.assertIn(grupo2, grupos_3)
コード例 #4
0
def crear_competencia_detalles(sigla_grupo, sigla, descripcion):
    c1 = Competencia()
    c1.sigla = sigla
    c1.nombre = descripcion[:min(120, len(descripcion))]
    c1.descripcion = descripcion
    c1.grupo = GrupoCompetencia.buscar_por_sigla(sigla_grupo)
    c1.save()
コード例 #5
0
    def test_competencia_curso_detalle_correcto(self):
        """El llamado a competencia_curso muestra la información correcta de la competencia"""
        c = Client()
        response = self.do_login_profesor(c)

        comp = Competencia.buscar_por_sigla("HC1")
        id_comp = comp.id
        id_curso = Curso.buscar_por_codigo_semestre("PEDI-5101", "2020-20").id

        response = c.get(reverse("competencia_curso", args=[id_comp, id_curso]))
        self.assertResponseCode(response, 200, "competencia_curso")
        self.assertTemplateUsed(response, "rubricas/competencias/detalle_competencia.html")
        self.assertWellFormedHTML(response)

        # Revisar que aparezca la información de la competencia
        self.assertContains(response, comp.sigla)
        self.assertContains(response, comp.nombre)
        self.assertContains(response, comp.descripcion)

        # Revisar que aparezca la información del grupo al que peternece la competencia
        self.assertContains(response, comp.grupo.sigla)
        self.assertContains(response, comp.grupo.nombre_corto)

        # Revisar que aparezcan los nombres de las rúbricas de curso
        # relacionadas con esta competencia
        rubricas = comp.buscar_rubricas_competencia_curso(id_curso)
        for rub in rubricas:
            self.assertContains(response, rub.nombre)
コード例 #6
0
    def test_buscar_por_programa(self):
        """buscar_por_programa encuentra las competencias correctas"""
        gr = self.crearGrupoCompetencia("gg")
        cp1 = Competencia.objects.create(grupo=gr,
                                         nombre="n1",
                                         sigla="cp1",
                                         descripcion="d1")
        cp2 = Competencia.objects.create(grupo=gr,
                                         nombre="n2",
                                         sigla="cp2",
                                         descripcion="d2")
        cp3 = Competencia.objects.create(grupo=gr,
                                         nombre="n3",
                                         sigla="cp3",
                                         descripcion="d3")

        pr = Programa.objects.create(nombre="Pediatria", codigo="PEDI")
        pr.agregar_competencia(cp1)
        pr.agregar_competencia(cp2)

        competencias = Competencia.buscar_por_programa(pr)
        self.assertIsNotNone(competencias)
        self.assertIn(cp1, competencias)
        self.assertIn(cp2, competencias)
        self.assertNotIn(cp3, competencias)
コード例 #7
0
    def test_competencia_programa_con_programa_incorrecto(self):
        """El llamado a competencia_programa genera un error cuando el programa no existe"""
        c = Client()
        response = self.do_login_profesor(c)

        comp = Competencia.buscar_por_sigla("HC1")
        id_comp = comp.id
        id_programa = 9999

        response = c.get(reverse("competencia_programa", args=[id_comp, id_programa]))
        self.assertResponseCode(response, 404, "competencia_programa: programa inexistente")
コード例 #8
0
 def test_buscar_por_sigla(self):
     """Si se busca una competencia por sigla, se encuentra"""
     cp1 = Competencia.objects.get(sigla="cp")
     cp2 = Competencia.buscar_por_sigla("cp")
     self.assertIsNotNone(
         cp1, "La competencia encontrada con GET no debería ser None")
     self.assertIsNotNone(
         cp2,
         "La competencia encontrada con buscar_por_sigla no debería ser None"
     )
     self.assertEqual(cp1.sigla, cp1.sigla, "Las siglas no son las mismas")
     self.assertEqual(cp2.id, cp2.id,
                      "Los objetos no tienen los mismos ids")
コード例 #9
0
def crear_rubricas(borrar=True):
    print("Creando rúbricas")

    if borrar:
        RubricaSeccion.objects.all().delete()

    r = RubricaSeccion()
    r.nombre = "Rúbrica de Enfermería Piso"
    r.nombre_interno = r.nombre
    r.descripcion = "Desempeño del residente en rotación según el/la jefe de enfermería del piso"
    r.comentarios = "Rúbrica de prueba"
    r.debe_tener_procedimientos = True
    r.debe_tener_patologias = True
    r.save()

    r.programa = Programa.buscar_por_codigo("PEDI")
    curso = Curso.buscar_por_codigo_semestre("PEDI-5101", "2020-20")
    r.seccion = Seccion.buscar_por_numero(curso, "1")

    r.patologias.add(Patologia.buscar_por_codigo("A001"))
    r.patologias.add(Patologia.buscar_por_codigo("A009"))

    r.procedimientos.add(Procedimiento.buscar_por_codigo("01.0"))
    r.procedimientos.add(Procedimiento.buscar_por_codigo("01.0.9"))

    r.save()

    icc = ItemCalificacionCurso()
    icc.nombre = r.nombre + " - Semana 1"
    icc.peso = 10
    icc.rubrica = r
    icc.curso = curso
    icc.save()

    icc = ItemCalificacionCurso()
    icc.nombre = r.nombre + " - Semana 2"
    icc.peso = 10
    icc.rubrica = r
    icc.curso = curso
    icc.save()

    icc = ItemCalificacionCurso()
    icc.nombre = r.nombre + " - Semana 3"
    icc.peso = 10
    icc.rubrica = r
    icc.curso = curso
    icc.save()

    ics = ItemCalificacionSeccion()
    ics.nombre = r.nombre + " - Semana 1"
    ics.peso = 10
    ics.rubrica = r
    ics.seccion = Seccion.buscar_por_numero(curso, "1")
    ics.save()

    ics = ItemCalificacionSeccion()
    ics.nombre = r.nombre + " - Semana 2"
    ics.peso = 10
    ics.rubrica = r
    ics.seccion = Seccion.buscar_por_numero(curso, "1")
    ics.save()

    ics = ItemCalificacionSeccion()
    ics.nombre = r.nombre + " - Semana 3"
    ics.peso = 10
    ics.rubrica = r
    ics.seccion = Seccion.buscar_por_numero(curso, "1")
    ics.save()

    print("Creando criterios")
    Criterio.objects.all().delete()

    cr1 = Criterio()
    cr1.nombre_interno = "Historia clínica"
    cr1.descripcion = "Hace una historia clínica completa y detallada del paciente pediátrico. Identifica y prioriza los diagnósticos diferenciales, conoce y usa adecuadamente las pruebas diagnosticas indicadas."
    cr1.rubrica = r
    cr1.numero = 1
    cr1.save()

    cr1.apes.add(APE.buscar_por_sigla("APE1"))
    cr1.apes.add(APE.buscar_por_sigla("APE2"))
    cr1.apes.add(APE.buscar_por_sigla("APE3"))
    cr1.competencias.add(Competencia.buscar_por_sigla("HC1"))
    cr1.competencias.add(Competencia.buscar_por_sigla("HC3"))
    cr1.save()

    n1 = NivelCriterio()
    n1.nombre = "No está preparado"
    n1.descripcion = "Información es insuficiente o exhaustiva. A veces omite datos relevantes o se desvía del problema principal. El examen físico es incompleto u omite detalles relevantes para el problema principal. "
    n1.puntos = 0
    n1.numero = 1
    n1.criterio = cr1
    n1.save()

    n2 = NivelCriterio()
    n2.nombre = "Aceptable"
    n2.descripcion = "La información es completa, cronológica y estructurada, describe el estado del paciente y los hallazgos principales. Conoce e interpreta las pruebas diagnosticas esenciales. Tiene en cuenta riesgos, beneficios y las preferencias del paciente."
    n2.puntos = 0
    n2.numero = 2
    n2.criterio = cr1
    n2.save()

    n3 = NivelCriterio()
    n3.nombre = "Lo hace bien"
    n3.descripcion = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
    n3.puntos = 8
    n3.numero = 3
    n3.criterio = cr1
    n3.save()

    n4 = NivelCriterio()
    n4.nombre = "Ejemplar"
    n4.descripcion = "La información es completa, cronológica y estructurada, describe el estado del paciente y los hallazgos principales, hace un plan de estudio razonado, coherente. Conoce, prioriza e interpreta las pruebas diagnosticas, las usa para el diagnostico, gravedad y seguimiento. Tiene en cuenta riesgos, beneficios y las preferencias del paciente."
    n4.puntos = 10
    n4.numero = 4
    n4.criterio = cr1
    n4.save()

    cr2 = Criterio()
    cr2.nombre_interno = "Registro valores"
    cr2.descripcion = "Toma valores antropométricos, analiza percentil; valora el estado nutricional, la alimentación, salud bucal los hábitos y practica, hace evaluación ocular, auditiva, identificación sexual."
    cr2.rubrica = r
    cr2.numero = 2
    cr2.save()

    cr2.apes.add(APE.buscar_por_sigla("APE1"))
    cr2.apes.add(APE.buscar_por_sigla("APE2"))
    cr2.apes.add(APE.buscar_por_sigla("APE3"))
    cr2.apes.add(APE.buscar_por_sigla("APE4"))
    cr2.apes.add(APE.buscar_por_sigla("APE7"))
    cr2.competencias.add(Competencia.buscar_por_sigla("HC1"))
    cr2.competencias.add(Competencia.buscar_por_sigla("HC2"))
    cr2.save()

    n1 = NivelCriterio()
    n1.nombre = "No está preparado"
    n1.descripcion = "Falla en la evaluación de valores antropométricos y percentil. No tiene en cuenta o es incompleta la valoración del estado nutricional, la alimentación, salud bucal, ocular, auditiva, identificación sexual."
    n1.puntos = 0
    n1.numero = 1
    n1.criterio = cr2
    n1.save()

    n2 = NivelCriterio()
    n2.nombre = "Aceptable"
    n2.descripcion = "Tiene en cuenta valores antropométricos, analiza percentil; hace una valoración aceptable del estado nutricional, la alimentación, salud boca, ocular, auditiva, identificación sexual."
    n2.puntos = 0
    n2.numero = 2
    n2.criterio = cr2
    n2.save()

    n3 = NivelCriterio()
    n3.nombre = "Lo hace bien"
    n3.descripcion = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
    n3.puntos = 8
    n3.numero = 3
    n3.criterio = cr2
    n3.save()

    n4 = NivelCriterio()
    n4.nombre = "Ejemplar"
    n4.descripcion = "Toma valores antropométricos, analiza percentil; valora el estado de salud: nutricional, la alimentación, salud bucal los hábitos y practica, hace evaluación ocular (movimiento, fijación, etc.), auditiva, identificación sexual."
    n4.puntos = 10
    n4.numero = 4
    n4.criterio = cr2
    n4.save()
コード例 #10
0
 def test_buscar_por_programa_sin_competencias(self):
     """buscar_por_programa retorna una lista vacía si el programa no tiene competencias"""
     pr = Programa.objects.create(nombre="Pediatria", codigo="PEDI")
     competencias = Competencia.buscar_por_programa(pr)
     self.assertIsNotNone(competencias)
     self.assertEquals(0, len(competencias))
コード例 #11
0
 def test_buscar_por_sigla_inexistente(self):
     """Si se busca un APE usando una sigla que no existe, retorna None"""
     cc = Competencia.buscar_por_sigla("CC")
     self.assertIsNone(cc, "La competencia retornada debería ser None")
コード例 #12
0
def crear_estructura_muestra(borrar=True):
    print("Creando programa muestra (DEMO)")

    if borrar:
        viejo = Programa.buscar_por_codigo("DEMO")
        if viejo is not None:
            cursos = viejo.consultar_cursos_programa()
            for curso in cursos:
                curso.delete()
            viejo.delete()

    pr = Programa()
    pr.nombre = "Programa muestra"
    pr.codigo = "DEMO"
    pr.save()

    # Poniéndole APEs al programa
    pr.apes.add(APE.buscar_por_sigla("APE1"))
    pr.apes.add(APE.buscar_por_sigla("APE2"))
    pr.apes.add(APE.buscar_por_sigla("APE3"))
    pr.apes.add(APE.buscar_por_sigla("APE4"))
    pr.save()

    # Poniéndole Competencias al programa
    pr.competencias.add(Competencia.buscar_por_sigla("CPP1"))
    pr.competencias.add(Competencia.buscar_por_sigla("CPP1"))
    pr.competencias.add(Competencia.buscar_por_sigla("CPP4"))
    pr.competencias.add(Competencia.buscar_por_sigla("HC1"))
    pr.competencias.add(Competencia.buscar_por_sigla("HC2"))
    pr.competencias.add(Competencia.buscar_por_sigla("HC3"))
    pr.competencias.add(Competencia.buscar_por_sigla("ABP1"))
    pr.competencias.add(Competencia.buscar_por_sigla("ABP2"))
    pr.competencias.add(Competencia.buscar_por_sigla("ABP3"))
    pr.competencias.add(Competencia.buscar_por_sigla("ABP4"))
    pr.competencias.add(Competencia.buscar_por_sigla("ABP5"))
    pr.competencias.add(Competencia.buscar_por_sigla("ABP6"))
    pr.competencias.add(Competencia.buscar_por_sigla("C1"))
    pr.competencias.add(Competencia.buscar_por_sigla("C2"))
    pr.competencias.add(Competencia.buscar_por_sigla("C4"))
    pr.competencias.add(Competencia.buscar_por_sigla("C6"))
    pr.competencias.add(Competencia.buscar_por_sigla("C7"))

    pr.save()

    print("Creando cursos para DEMO")

    c1 = crear_curso_programa("DEMO-0001", "Curso Muestra I", "2020-20",
                              "DEMO", pr.consultar_apes(),
                              pr.consultar_competencias())
    c2 = crear_curso_programa("DEMO-0002", "Curso Muestra II", "2020-20",
                              "DEMO", pr.consultar_apes(),
                              pr.consultar_competencias())
    c3 = crear_curso_programa("DEMO-0003", "Curso Muestra III", "2020-20",
                              "DEMO", pr.consultar_apes(),
                              pr.consultar_competencias())
    c4 = crear_curso_programa("DEMO-0004", "Curso Muestra IV", "2020-20",
                              "DEMO", pr.consultar_apes(),
                              pr.consultar_competencias())