Base de datos
Cassandra es una base de datos NoSQL, porque si queremos desarrollar un producto de alto desempeño debemos tener una bases de datos que no sea centralizada sino que sea distribuida ya que a la hora que falle un nodo nosotros podamos seguir consumiendo datos ya que es paradigma de las base de datos distribuidas.Una vez instalado cassandra abrimos nuestro Cassandra CQL Shell.
CREATE KEYSPACE ecemexicodb
WITH replication = {'class':'SimpleStrategy','replication_factor':3};
USE "ecemexicodb";
CREATE TABLE "paciente" (
id_paciente timeuuid,
curp text,
nombre text,
apellido_paterno text,
apellido_materno text,
nivel_socioeconomico text,
vivienda text,
tipo_sangre int,
discapacidad text,
grupo_etnico text,
religion text,
sexo text,
edad int,
calle text,
numero_exterior text,
numero_interior text,
estado text,
municipio text,
localidad text,
colonia text,
codigo_postal int,
telefono_fijo text,
telefono_movil text,
PRIMARY KEY("id_paciente")
);
CREATE TABLE "cat_tipo_sangre" (
"id_tipo_sangre" int PRIMARY KEY,
"tipo_sangre" text );
INSERT INTO cat_tipo_sangre(id_tipo_sangre,tipo_sangre)
VALUES(1,'O negativo');
INSERT INTO cat_tipo_sangre(id_tipo_sangre,tipo_sangre)
VALUES(2,'O positivo');
INSERT INTO cat_tipo_sangre(id_tipo_sangre,tipo_sangre)
VALUES(3,'A negativo');
INSERT INTO cat_tipo_sangre(id_tipo_sangre,tipo_sangre)
VALUES(4,'A positivo');
INSERT INTO cat_tipo_sangre(id_tipo_sangre,tipo_sangre)
VALUES(5,'B negativo');
INSERT INTO cat_tipo_sangre(id_tipo_sangre,tipo_sangre)
VALUES(6,'B positivo');
INSERT INTO cat_tipo_sangre(id_tipo_sangre,tipo_sangre)
VALUES(7,'AB negativo');
INSERT INTO cat_tipo_sangre(id_tipo_sangre,tipo_sangre)
VALUES(8,'AB positivo');
CREATE TABLE "usuario" (
cedula text,
curp text,
nombre text,
apellido_paterno text,
apellido_materno text,
especialidad text,
sub_especialidad text,
clues text,
email text,
password text,
rol text,
PRIMARY KEY(email)
);
CREATE TABLE "alergia" (
id_paciente text,
nombres set<text>,
PRIMARY KEY("id_paciente")
);
CREATE TABLE "historiaclinica" (
id_paciente text,
fecha timestamp,
unidad_medica text,
fecha_nacimiento text,
interrogatorio text,
ocupacion text,
tutor text,
parentesco text,
enfermedades_hereditarias text,
antecedentes_personales_no_patologicos text,
antecedentes_personales_patologicos text,
antecedentes_gineco_obstetricos text,
padecimiento_actual text,
sintomas_cardiovasculares text,
sintomas_respiratorios text,
sintomas_gastrointestinal text,
sintomas_genitourinarios text,
sintomas_hematico_linfatico text,
sintomas_endocrinos text,
sintomas_sistema_nervioso text,
sintomas_musculo_esqueleticos text,
sintomas_piel_mucosas_anexos text,
tension_arterial text,
temperatura text,
frecuencia_cardiaca text,
frecuencia_respiratoria text,
peso text,
talla text,
glucosa text,
exploracion_fisica text,
resultados_ant_act_laboratorio text,
diagnostico text,
farmacologico text,
pronostico text,
nombre_medico text,
cargo text,
PRIMARY KEY(id_paciente,fecha)
);
CREATE TABLE "notasevolucion" (
id_paciente text,
fecha timestamp,
unidad_medica text,
edad text,
notas_evolucion text,
PRIMARY KEY(id_paciente,fecha)
);
create table "receta"(
id_paciente text,
numero_receta text,
nombre_doctor text,
fecha timestamp,
medicamento set<text>,
dosis set<text>,
duracion set<text>,
notas set<text>,
PRIMARY KEY("id_paciente","numero_receta")
);
Realizamos el siguente insert.Nota: El modelo de datos estará en cambios continuos hasta que tengamos el primer prototipo: por lo pronto si realizaste la versión anterior de la tabla usuario hubo un cambio ya a la hora de loguearnos con Spring Security nos marcaba error ya fue resuelto poniendo como llave primaria el email.El pasword como se ve esta encriptado ya que la version 5 de Spring Security nos pide que este enciptada la contraseña además lleva roles.Cuando estemos realizando el código se explicara brevemente.
insert into usuario (cedula,curp,nombre,apellido_paterno,apellido_materno,especialidad,
sub_especialidad,clues,email,password,rol)values('111111','123567890R','Jose Martin','Lara','Lopez',
'cirujano','general','123456987','kapo1978@hotmail.com',
'$2a$10$iEKeGqfNJ0wRzH2JqAfFn.I5jnMTRRAt5Ee8JHHSPvYJJGmdwudCW','USER');
/*la contraseña seria adminmexico*/
insert into usuario (cedula,curp,nombre,apellido_paterno,apellido_materno,especialidad,
sub_especialidad,clues,email,password,rol)values('023xxx','222222222R','Jose Martin','Lara','Lopez',
'cirujano','cardiologo','123456987','laralopezjosemartin@hotmail.com',
'$2a$10$ln4Gtbv4QzAtFZcqtfPQIO44PI4hr6utgRfrJaLt.cLj40UG1S05y','ADMIN');