diff --git a/README.md b/README.md index 35d7bcc..9cd794b 100644 --- a/README.md +++ b/README.md @@ -303,9 +303,6 @@ python3 -c "import pandas, openpyxl, dotenv; print('OK', pandas.__version__, ope #### 7.7) OCR (PDF real + escaneado) con Tesseract (Alpine) Si necesitas leer PDFs escaneados para el autorrelleno, usa este flujo. ```bash -# Uso: -# sh -c '...este bloque...' archivo.pdf -# Si no pasas argumento, usa "archivo.pdf" # 1) Asegura repo community (donde esta ocrmypdf/tesseract-data) ALPINE_VER="$(cut -d. -f1,2 /etc/alpine-release)" @@ -341,36 +338,3 @@ else fi ``` -**Instalacion OCR en Alpine (para el autorrelleno en servidor)** -```bash -apk update -apk add --no-cache \ - tesseract-ocr \ - tesseract-ocr-data-spa \ - tesseract-ocr-data-eng \ - python3 py3-pip py3-virtualenv \ - build-base python3-dev musl-dev \ - libffi-dev openssl-dev zlib-dev \ - jpeg-dev tiff-dev freetype-dev lcms2-dev openjpeg-dev - -python3 -m venv /opt/saludut/venv -. /opt/saludut/venv/bin/activate - -pip install --upgrade pip -pip install pdfplumber pymupdf pytesseract pillow -``` - -En `backend/.env`: -``` -PYTHON_PATH=/opt/saludut/venv/bin/python -TESSERACT_PATH=/usr/bin/tesseract -TESSDATA_PREFIX=/usr/share/tessdata -``` - -Verificacion: -```bash -tesseract --list-langs | grep spa -/opt/saludut/venv/bin/python -c "import pytesseract; print(pytesseract.get_tesseract_version())" -``` - - diff --git a/backend.tar.gz b/backend.tar.gz index 9b1114d..bf5283b 100644 Binary files a/backend.tar.gz and b/backend.tar.gz differ diff --git a/backend/src/insert.sql b/backend/src/insert.sql index a116d21..37a8428 100644 --- a/backend/src/insert.sql +++ b/backend/src/insert.sql @@ -1,6 +1,6 @@ -\\set ON_ERROR_STOP on +\set ON_ERROR_STOP on -\\i schema.sql +\i schema.sql -- Roles base (minimo para funcionar) INSERT INTO rol (nombre_rol, descripcion) diff --git a/backend/src/schema.sql b/backend/src/schema.sql index cfb0fba..9bdfa6d 100644 --- a/backend/src/schema.sql +++ b/backend/src/schema.sql @@ -202,6 +202,65 @@ CREATE TABLE IF NOT EXISTS autorizacion ( correo_inpec_respuesta boolean NOT NULL DEFAULT false ); +-- ===== Migraciones autorizacion (si la tabla ya existía de antes) ===== +-- Nota: CREATE TABLE IF NOT EXISTS no agrega columnas nuevas si la tabla ya existe. +-- Estas ALTER aseguran que el schema quede actualizado sin borrar datos. + +ALTER TABLE autorizacion + ADD COLUMN IF NOT EXISTS id_usuario_solicitante integer REFERENCES usuario(id_usuario), + ADD COLUMN IF NOT EXISTS tipo_autorizacion varchar(50), + ADD COLUMN IF NOT EXISTS tipo_servicio varchar(50), + ADD COLUMN IF NOT EXISTS ambito_atencion varchar(20), + ADD COLUMN IF NOT EXISTS numero_orden varchar(50), + ADD COLUMN IF NOT EXISTS archivo_historial_clinico text, + ADD COLUMN IF NOT EXISTS archivo_historial_clinico_nombre text, + ADD COLUMN IF NOT EXISTS archivo_anexo text, + ADD COLUMN IF NOT EXISTS archivo_anexo_nombre text, + ADD COLUMN IF NOT EXISTS estado_entrega varchar(20), + ADD COLUMN IF NOT EXISTS estado_autorizacion varchar(20), + ADD COLUMN IF NOT EXISTS version integer, + ADD COLUMN IF NOT EXISTS correo_inpec_pendiente boolean, + ADD COLUMN IF NOT EXISTS correo_inpec_enviado boolean, + ADD COLUMN IF NOT EXISTS correo_inpec_respuesta boolean; + +-- Defaults / NOT NULL (primero relleno nulos para que no falle el ALTER) +UPDATE autorizacion +SET + tipo_autorizacion = COALESCE(tipo_autorizacion, 'consultas_externas'), + estado_entrega = COALESCE(estado_entrega, 'pendiente_entrega'), + estado_autorizacion = COALESCE(estado_autorizacion, 'pendiente'), + version = COALESCE(version, 1), + correo_inpec_pendiente = COALESCE(correo_inpec_pendiente, false), + correo_inpec_enviado = COALESCE(correo_inpec_enviado, false), + correo_inpec_respuesta = COALESCE(correo_inpec_respuesta, false) +WHERE + tipo_autorizacion IS NULL + OR estado_entrega IS NULL + OR estado_autorizacion IS NULL + OR version IS NULL + OR correo_inpec_pendiente IS NULL + OR correo_inpec_enviado IS NULL + OR correo_inpec_respuesta IS NULL; + +ALTER TABLE autorizacion + ALTER COLUMN numero_autorizacion SET DEFAULT next_numero_autorizacion(), + ALTER COLUMN tipo_autorizacion SET DEFAULT 'consultas_externas', + ALTER COLUMN estado_entrega SET DEFAULT 'pendiente_entrega', + ALTER COLUMN estado_autorizacion SET DEFAULT 'pendiente', + ALTER COLUMN version SET DEFAULT 1, + ALTER COLUMN correo_inpec_pendiente SET DEFAULT false, + ALTER COLUMN correo_inpec_enviado SET DEFAULT false, + ALTER COLUMN correo_inpec_respuesta SET DEFAULT false; + +ALTER TABLE autorizacion + ALTER COLUMN tipo_autorizacion SET NOT NULL, + ALTER COLUMN estado_entrega SET NOT NULL, + ALTER COLUMN estado_autorizacion SET NOT NULL, + ALTER COLUMN version SET NOT NULL, + ALTER COLUMN correo_inpec_pendiente SET NOT NULL, + ALTER COLUMN correo_inpec_enviado SET NOT NULL, + ALTER COLUMN correo_inpec_respuesta SET NOT NULL; + DO $$ BEGIN IF NOT EXISTS ( diff --git a/saludut-inpec/scripts/publish.sh b/saludut-inpec/scripts/publish.sh index b15a44f..2e804c2 100755 --- a/saludut-inpec/scripts/publish.sh +++ b/saludut-inpec/scripts/publish.sh @@ -45,7 +45,7 @@ echo "rsync -arvz -e \"ssh -p ${SSH_PORT}\" --progress --delete ${DIST_FOLDER}/ #echo "scp -r -P ${SSH_PORT} ${DIST_FOLDER}/* ${REMOTE_USER}@${SERVER_IP4}:${DEPLOYED_WEB_DATA_FOLDER}" #scp -r -P ${SSH_PORT} ${DIST_FOLDER}/* ${REMOTE_USER}@${SERVER_IP4}:${DEPLOYED_WEB_DATA_FOLDER} -#exit 0 #HABILITARLO CUANDO LA PAGINA YA ESTE ARRIBA +exit 0 #HABILITARLO CUANDO LA PAGINA YA ESTE ARRIBA #rsync -arvz ${DIST_FOLDER} -e \"ssh -p ${SSH_PORT}\" ${REMOTE_USER}@${SERVER_IP4}:${DEPLOYED_DATA_FOLDER} #scp -r -P ${SSH_PORT} ${DIST_FOLDER} ${REMOTE_USER}@${SERVER_IP4}:${DEPLOYED_DATA_FOLDER} @@ -70,7 +70,7 @@ echo "preparando directorio de logs" LOGS_FOLDER="/var/www/log/${SITE_NAME}" ssh -q -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p ${SSH_PORT} ${REMOTE_USER}@${SERVER_IP4} "echo ${REMOTE_PWD} | sudo -S -- sh -c 'mkdir -p ${LOGS_FOLDER};chown -R root:root ${LOGS_FOLDER};chmod -R 755 ${LOGS_FOLDER}'" #Fin de fase LOGS -exit 0 +#exit 0 # EL EXIT VA HASTA ACA LA PRIMERA VEZ QUE VAYA A SUBIR LA MAQUINA #Inicio de fase VHOST