Desarrollo de la Gestión de la Salud SC7703

La compañía ha desarrollado recientemente un funciones de gestión de proyectos de salud. No podemos revelar demasiada información, por lo que sólo una parte de la interceptación de la interfaz de la interfaz de usuario. Para lograr esta función en 7703.

 

I. Visión general de la demanda

1, recordatorios de medicamentos:

    medicación Mode (Inyección oral), nombre del fármaco, el tiempo, la cantidad, repitiendo, tono de llamada

2, los datos de salud:

1) Los datos de la presión arterial: alta presión, baja presión, el ritmo cardiaco, tiempo de

2) los datos de glucosa en sangre: la concentración, condiciones (en ayunas antes del desayuno, antes del almuerzo ,,,), el tiempo.

3, de medición recuerdan

La medición de ajuste de tiempo

 

En segundo lugar, el análisis de las necesidades inicial:

1, la medicación recordatorio: un aviso temporizado, como reloj despertador, reloj despertador para que pueda inscribirse en un servicio al sistema.

2, los datos de salud: Debido a que los usuarios necesitan para CRUD datos de registro, por lo que los datos se almacenan en una lista enlazada, y luego escribe en un documento unificado. Así, después de ABM, siempre que el usuario actualizar el archivo de registro en él

3, Recordatorio de medición: el servicio También similar de atención, se registra en el sistema de un servicio de despertador

 

En tercer lugar, la realización función

    1) recordatorio de medicamento: Función: MMIALM_Init, MMIALMSVC_RegService servicio de alarma registrada

    Un total de cinco mencionar la hora de la alarma, la alarma del reloj para asignar el servicio de identificación correspondiente a través del índice de la lista, después de ModifyEvent edición directa, modificar el correspondiente servicio de despertador, tipo aquí me acaba de agregar de alarma SMART_EVENT_DRUG_REMINDER, prestar atención al aumento de este tipo en el código, o de lo contrario no lo hará inscribirse despertador. Exigir la edición de interfaz de alarma de referencia similar se puede escribir, no hacer demasiado repetición de hormigón.

    Vale la pena mencionar que el modo de repetición.

LOCAL void MMI_HelathAideSetMode(uint16 cur_index)
{
    uint8 s_weeks_selected[ALM_MODE_WEEK_NUM] = {MASK_B0, MASK_B1, MASK_B2, MASK_B3, MASK_B4, MASK_B5, MASK_B6};
    if((s_current_event_info.event.event_fast_info.fre >> cur_index) & 0x1)
    {
        
        s_current_event_info.event.event_fast_info.fre &= (~(1 << cur_index));
     }else
     {
            s_current_event_info.event.event_fast_info.fre |=  (s_weeks_selected[cur_index] & 0xFF);
     }
}

    Una semana con un 7 uint8 de datos para guardar el plan seleccionado unos pocos días

2) los datos de salud

    ① archivo de inicialización de datos de salud

    ② leer el archivo, los datos leídos almacenados en una lista enlazada    

s_file_handle = MMIAPIFMM_CreateFile(pressure_full_path_name, SFS_MODE_READ|SFS_MODE_OPEN_EXISTING, NULL, NULL);
         if(SFS_INVALID_HANDLE != s_file_handle)
            {   //打开文件成功,开始读取文件
               
                while(1)
                {
                        node_data = (MMI_HELATH_AIDE_LOGNNDATA_PRESSURE  *)malloc(sizeof(MMI_HELATH_AIDE_LOGNNDATA_PRESSURE));
                            
                        if(PNULL != node_data)
                        {
                            memset(node_data, 0, sizeof(MMI_HELATH_AIDE_LOGNNDATA_PRESSURE));
                             file_ret =  MMIAPIFMM_ReadFile(
                            s_file_handle, 
                            (void *)node_data, 
                            sizeof(MMI_HELATH_AIDE_LOGNNDATA_PRESSURE), 
                            &read_size, 
                            NULL
                            );
                        }
                        
                        if((SFS_ERROR_NONE != file_ret) || (read_size <= 0)) //读取失败
                        {
                            //SCI_Free(node_data);
                            //MMIPUB_OpenAlertWarningWin(TXT_DRUG_READ_FILE_ERROR);
                            break;
                        }

                       

                        //分批次读取,每次读一个数据块,然后插入到链表中,不过这样的读取速度比较慢,在记录文件庞大的时候会变得缓慢

                        MMIHEALTH_InsertNode(s_pressure_list, node_data);


                        pressure_loging_num ++;
                        
                }
                MMIAPIFMM_CloseFile(file_handle);
            }

    ③ modificar el archivo

    Para compensar lista de índices por un nodo espacio que corresponde a la lista, para obtener la edición de datos actual y editar    

    Después de editar el reescritura completa del archivo al salir

temp = s_pressure_list->next;

        for(; erg < index; erg ++)
        {
              temp = temp->next;
              if((PNULL == temp) && (erg  !=  index))
                return PNULL;
        }

        return temp;

    Cuando el archivo de leer y escribir, a menudo se producen dos errores

    1, SFS_ERROR_INVALID_PARAM

    La causa del error es pasar los parámetros erróneos en el archivo de crear cuando, por ejemplo, que desea abrir un archivo para lectura, en el argumento MMIAPIFMM_CreateFile pasado es SFS_MODE_WRITE. Hay SFS_MODE_OPEN_EXISTING este parámetro, si se trata de un archivo nuevo, por favor pase SFS_MODE_CREATE_NEW, o cuando vuelve crear archivos de código de error: SFS_ERROR_INVALID_PARAM

    2, SFS_ERROR_ACCESS

    La causa del error se debe a que el archivo no ha sido estrecha. Recuerde operación de archivo, la memoria malloc, hay que mantener el rumbo. Archivo Abrir para cerrar, después de que la memoria malloc a ser libre.

     Puede abrir el mismo archivo más de una vez, cada vez devuelto el mango no es el mismo, es decir, sus abiertas varias veces, cerca de un mango, entonces la operación de eliminación devolverá el código de error 6. . . . El archivo está ocupado. Antes de cada abrir o cerrar todo lo siguiente

 

 

Publicado 22 artículos originales · ganado elogios 9 · vistas 8836

Supongo que te gusta

Origin blog.csdn.net/ljm_c_bok/article/details/79940795
Recomendado
Clasificación