Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Odontograma en java

Hola, soy nueva en este foro, y tengo un problema que debo solucionar pronto, estoy haciendo un programa para una amiga que es odontologa y necesita gestionar sus pacientes, en donde una de las cosas que hace es llenar una ficha grafica con todos los tratamientos que debe realizar en cada uno de los dientes de dichos pacientes, esto es el odontograma. Es unico para cada paciente.
Como soy nueva en esto, pido ayuda para saber como podria codificarlo y que funcione
Pense hacerlo con imagenes, que extraeria de internet y luego editarlas, pero esto se dificulta al momento de que la doctora deba manejarlo.
Desde ya, muchas gracias.

abril 23, 2014 | Registered Commenterlatinjava

No entiendo si el problema lo tienes con el diseño gráfico, o con la implementación de las acciones de la ficha de tratamientos, a partir del odontograma.

abril 24, 2014 | Registered Commenterchoces

En realidad nose que herramienta deberia usar para poder hacer el odontograma.
Me recomendaron imagenes, pero se dificulta, ya que son varios los estados por los que pasa una pieza dental, y van dependiendo tambien de los tratamientos que el medico emplee.
Tambien me aconsejaron tablas, pero no soy muy habil con ese tema.
Quisiera saber como diseñarlo y como aplicar modificaciones, la implementacion.
Siempre he trabajado en java, pero con aplicaciones de ABM.
Gracias por tu interes.

abril 26, 2014 | Unregistered Commenterlatinjava

Supongo que el odontograma representa el conjunto de las piezas dentales, en varias "vistas", y que pulsando sobre una imagen concreta de una pieza, o vista, se muestran los tratamientos, y tal vez imágenes reales obtenidas por RayosX, por ejemplo.

Cada pieza, o vista, se puede representar gráficamente con un JButton. En el listener del JButton irá el código que carga y visualiza los tratamientos, y las imágenes reales, si las hay.

Es un problema de diseño visual. Si usas NetBeans, es relativamente fácil "dibujar" un odontograma, con su Editor Gráfico.

Sin más detalles no me es posible ayudarte mejor.

abril 26, 2014 | Registered Commenterchoces

Un test muy sencillo, creado con NetBeans 8.0, que muestra lo que comentaba antes.

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package odontograma;

import java.awt.event.ActionListener;
import javax.swing.JButton;

public class OdontogramaMain extends javax.swing.JFrame implements ActionListener {

/** Creates new form OdontogramaMain */
public OdontogramaMain() {
initComponents();
}

/** This method is called from within the constructor to
initialize the form.
WARNING: Do NOT modify this code. The content of this method is
always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jButton1.setText("M1");
jButton1.setName("M1"); // NOI18N
jButton1.addActionListener(this);

jButton2.setText("M2");
jButton2.setName("M2"); // NOI18N
jButton2.addActionListener(this);

jButton3.setText("D1");
jButton3.setName("D1"); // NOI18N
jButton3.addActionListener(this);

jButton4.setText("D2");
jButton4.setName("D2"); // NOI18N
jButton4.addActionListener(this);

jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jScrollPane1)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);

layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton1, jButton2, jButton3, jButton4});

layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton2)
.addComponent(jButton3)
.addComponent(jButton4))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButton1, jButton2, jButton3, jButton4});

pack();
}

// Code for dispatching events from components to event handlers.

public void actionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == jButton1) {
OdontogramaMain.this.PiezaListener(evt);
}
else if (evt.getSource() == jButton2) {
OdontogramaMain.this.PiezaListener(evt);
}
else if (evt.getSource() == jButton3) {
OdontogramaMain.this.PiezaListener(evt);
}
else if (evt.getSource() == jButton4) {
OdontogramaMain.this.PiezaListener(evt);
}
}// </editor-fold>

private void PiezaListener(java.awt.event.ActionEvent evt) {
jTextArea1.setText(null);
String pieza = ((JButton) evt.getSource()).getName();
switch (pieza) {
case "M1":
jTextArea1.setText("Se ha seleccionado la pieza dental M1");
break;
case "M2":
jTextArea1.setText("Se ha seleccionado la pieza dental M2");
break;
case "D1":
jTextArea1.setText("Se ha seleccionado la pieza dental D1");
break;
case "D2":
jTextArea1.setText("Se ha seleccionado la pieza dental D2");
break;

}
}

/**
@param args the command line arguments
*/
public static void main(String args[]) {

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new OdontogramaMain().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
}

abril 26, 2014 | Registered Commenterchoces

Si, en el odontog. se representa cada pieza dentaria. Cada pieza presenta 5 caras(es en lo que se divide al diente para registrar las acciones o tratamientos que se efectuaran en cada una o en su conjunto, es decir, a todo el diente). Este es un video que encontre en youtube que explica mas o menos como funcionaria el odontograma.(http://www.youtube.com/watch?v=YIfBTDbKFgA&hd=1)
Cada odontograma es unico para cada paciente. Y cada vez que el paciente concurra al consultorio, dicho odontograma debera modificarse, dependiendo de los tratamientos que se vayan haciendo.
En algunos casos, se tienen dos odontogramas del mismo paciente, es decir, el odontg inicial, de cuando llega al consultorio y el odontograma modificado, de cuando termina con el tratamiento. Yo me conformo con poder hacer aunque sea, solo uno y poder modificarlo.

Uso java netbeans 7.4, y me gustaria saber y aprender mas sobre el mismo para aprovecharlo al maximo, Es por eso que busco mucho por internet, pero son pocos los sitios en donde realmente te dan una mano y te ayudan.
Por eso, agradezco mucho tu atencion y aporte de sabiduria que me ofreces. Realmente muy agradecida, y voy a probar el codigo que mandaste.

Hice la base de datos en sql, en donde agrege una tabla llamada odontograma, para poder guardar los odontogramas creados. Con el codigo que me mandaste, no hace falta usar esta tabla? o sino, como hago para asignar el odontog creado o modificado a un paciente determinado?

Me gustaria saber como hago para poder usar el editor grafico que vos decis que tiene java?

Gracias.

abril 27, 2014 | Unregistered Commenterlatinjava

El ejemplo mío es una demostración muy simple de lo que se puede hacer.
Para imitar el odontograma de ese vídeo se necesita mucho más trabajo, porque cada pieza se representa mediante 5 regiones editables. Existen diversas maneras de hacerlo: usando JPanel para cada región, o dibujando rectángulos en un único JPanel, o usando 5 botones en un único JPanel.
Lo que se almacena en la base de datos no es el odontograma como dibujo, sino la información sobre la edición de esas regiones.

Sobre el Matisse de NetBeans:

https://netbeans.org/kb/docs/java/quickstart-gui.html

abril 27, 2014 | Registered Commenterchoces

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package dental;

/**
<p>
@author Carlos Hoces
*/
public class Odontograma extends javax.swing.JFrame {

/** Creates new form Odontograma */
public Odontograma() {
initComponents();
}

/** This method is called from within the constructor to
initialize the form.
WARNING: Do NOT modify this code. The content of this method is
always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new Pieza();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 190, Short.MAX_VALUE)
.addContainerGap(293, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
.addContainerGap(164, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

/**
@param args the command line arguments
*/
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Odontograma().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JPanel jPanel1;
// End of variables declaration
}

abril 27, 2014 | Registered Commenterchoces

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package dental;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
<p>
@author Carlos Hoces
*/
public class Pieza extends javax.swing.JPanel {

/** Creates new form Pieza */
public Pieza() {
initComponents();
jButtonCentro.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
jButtonCentro.setBackground(Color.red);
}
});
jButtonDerecha.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
jButtonDerecha.setBackground(Color.blue);
}
});
jButtonInferior.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
jButtonInferior.setBackground(Color.blue);
}
});
jButtonIzquierda.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
jButtonIzquierda.setBackground(Color.blue);
}
});
jButtonSuperior.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
jButtonSuperior.setBackground(Color.blue);
}
});
}

/** This method is called from within the constructor to
initialize the form.
WARNING: Do NOT modify this code. The content of this method is
always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;

jButtonSuperior = new javax.swing.JButton();
jButtonDerecha = new javax.swing.JButton();
jButtonInferior = new javax.swing.JButton();
jButtonIzquierda = new javax.swing.JButton();
jButtonCentro = new javax.swing.JButton();

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButtonSuperior, javax.swing.GroupLayout.PREFERRED_SIZE, 332, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonDerecha, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jButtonIzquierda, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButtonCentro, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jButtonInferior, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButtonSuperior)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButtonCentro, javax.swing.GroupLayout.PREFERRED_SIZE, 223, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButtonInferior, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jButtonIzquierda, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addComponent(jButtonDerecha, javax.swing.GroupLayout.PREFERRED_SIZE, 250, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);

layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonInferior, jButtonSuperior});

}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JButton jButtonCentro;
private javax.swing.JButton jButtonDerecha;
private javax.swing.JButton jButtonInferior;
private javax.swing.JButton jButtonIzquierda;
private javax.swing.JButton jButtonSuperior;
// End of variables declaration
}

abril 27, 2014 | Registered Commenterchoces

Los nuevos ejemplos anteriores imitan, a modo de prueba, un odontograma similar al de ese vídeo.
Por supuesto, es un test muy simple, sin decoraciones, imágenes incrustadas en los botones, etc. Pero te puede dar una idea de lo que se puede lograr.

abril 27, 2014 | Registered Commenterchoces

Muchas gracias por brindarme informacion, voy a probar lo que me mandaste y estoy viendo la info sobre interfaz grafica.
Cuando logre terminarlo, te lo mando.
Seguramente, te moleste con alguna consultita mas.
Gracias.

abril 28, 2014 | Unregistered Commenterlatinjava