> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-mobile/framework-plugins/extras/selphid/selphid-resultado.md).

# Selphid Resultado

#### finishStatus

Devuelve un number del resultado de la operación. Valores posibles:

* **1**: La operación fue exitosa.
* **2**: Se ha producido un error, el cuál se indicará en el string ***`errorType`*** y, opcionalmente, se mostrará un mensaje de información extra en la propiedad ***`errorMessage`***.

#### finishStatusDescription

Devuelve una descripción del resultado de la operación. Valores posibles:

* **STATUS\_OK**: La operación fue exitosa.
* **STATUS\_ERROR**: Se ha producido un error, el cuál se indicará en el string ***`errorType(errorDiagnostic para Flutter)`*** y, opcionalmente, se mostrará un mensaje de información extra en la propiedad ***`errorMessage`***.

#### errorType ó errorDiagnostic(sólo para Flutter) <a href="#id-61-recepcion-de-errores" id="id-61-recepcion-de-errores"></a>

Indica porque fallo el componente. Valores posibles:

En iOS, el `errorType` recibido desde el SDK en un timeout puede ser `SDK_TIMEOUT` o `SELPHID_TIMEOUT(UIImage?, UIImage?)`. No existe en iOS un caso `TIMEOUT` sin prefijo. El caso `SELPHID_TIMEOUT` conserva, cuando están disponibles, las imágenes crudas del documento capturadas antes del timeout (`UIImage?` asociadas al enum, no campos del resultado de éxito). En integraciones híbridas no debe consumirse el nombre interno del enum Swift como contrato de respuesta.

Para serializar el error en iOS debe utilizarse:

```swift
errorType.toString(addComponentPrefix: "SPD_")
```

Esto devuelve `SPD_TIMEOUT` tanto para `SDK_TIMEOUT` como para `SELPHID_TIMEOUT`. En Android, el equivalente del listado de errores es `TIMEOUT` (sin prefijo).

En un timeout de iOS:

* `finishStatus` es `STATUS_ERROR`
* `data` es `nil` (no se devuelven `frontDocument`, `ocrResults`, etc.)
* Las imágenes crudas, si existen, van en el valor asociado de `SELPHID_TIMEOUT`, no en `data`

{% content-ref url="/pages/Q65yLHUMbNDNdNr4wP2l" %}
[Selphid - Listado de Errores](/sdks/sdk-mobile/framework-plugins/extras/selphid/selphid-listado-de-errores.md)
{% endcontent-ref %}

#### errorMessage

Indica un mensaje de error adicional. Es un valor opcional.

#### **frontDocument / tokenFrontDocument:**

La imagen frontal del documento procesada, limpiada y recortada por los bordes y su token correspondiente.

#### **backDocument / tokenBackDocument**

La imagen trasera del documento procesada, limpiada y recortada por los bordes y su token asociado.

#### **faceImage / tokenFaceImage**

La imagen del rostro que se ha encontrado en el documento, en caso de que exista y su token asociado.

Válida para el proceso de MATCHING FACIAL.

#### **documentCaptured**

Esta propiedad indica el modelo de documento que se ha capturado cuando se realiza una busqueda en modo SMSearch. De esta forma la aplicación puede conocer qué modelo, de entre todos los permitidos, se ha detectado.

#### **matchingSidesScore**

Esta propiedad devuelve un cálculo de la similitud de los datos leídos entre el front y el back del documento. El cálculo se realiza comprobando la similitud entre los campos comunes leídos en ambas caras. El resultado del cálculo será un valor entre 0.0 y 1.0 para el caso de que existan campos comunes en el documento. Cuanto mayor es el valor, más similares son los datos comparados. Si el cálculo devuelve -1.0 es que el documento no contiene campos comunes o aún no se tiene información de las dos caras.

**Propiedad captureProgress**

Esta propiedad devuelve el estado en el que se encontraba el proceso de captura cuando el widget terminó con éxito (`STATUS_OK`). En un timeout de iOS, `data` es `nil` y este valor no se incluye en el `SdkResult` del callback de error. Estos son los posibles valores:

```
Front_Detection_None = 0
Front_Detection_Uncertain = 1
Front_Detection_Completed = 2
Front_Document_Analyzed = 3
Back_Detection_None = 4
Back_Detection_Uncertain = 5
Back_Detection_Completed = 6
Back_Document_Analyzed = 7
```

* **0**: En la lectura del Front, el widget termino sin poder haber detectado nada. Generalmente cuando no se pone ningún documento.
* **1**: En la lectura del Front, el widget termino habiendo detectado parcialmente un documento. En este caso algunos de los elementos esperados se han conseguido detectar, pero no todos los necesarios.
* **2**: En la lectura del Front, el widget termino habiendo completado la detección de todos los elementos del documento. Si el widget acaba en este estado es porque el análisis de OCR no se ha podido completar con éxito.
* **3**: En la lectura del Front, el widget termino habiendo analizado y extraído todo el OCR del documento. Este es el estado en el que acabaría una lectura correcta del Front de un documento.

Los estados del **4** al **7** son exactamente iguales solo que se refieren al resultado del proceso cuando se analiza el back.

#### **ocrResults**

Este diccionario contiene todos los datos detectados en el documento. Las claves de cada campo están codificadas de tal forma que la propia clave contiene información de donde se ha obtenido el valor. Así, por ejemplo, la clave `Front/MRZ/DocumentNumber` indica el valor del DocumentNumber que se ha leído en el Front del documento y en la región del MRZ. Estas claves dependen del documento capturado y por tanto serán diferentes entre distintos países y modelos de documento. El diccionario también contiene claves con nombres más genéricos y que no llevan información relativa a la ubicación. Estas claves contienen el dato más completo de todos los leídos para dicho campo.

Estas claves son los siguientes:

* **FirstName**: El valor asociado a esta clave contiene el nombre del usuario.
* **LastName**: El valor asociado a esta clave contiene los apellidos del usuario.
* **DateOfBirth**: El valor asociado a esta clave contiene la fecha de nacimiento detectada en el documento.
* **Gender**: El valor asociado a esta clave contiene el sexo del usuario detectado en el documento.
* **Nationality**: El valor asociado a esta clave contiene la nacionalidad del usuario detectado en el documento.
* **DocumentNumber**: El valor asociado a esta clave contiene el número de documento.
* **DateOfExpiry**: El valor asociado a esta clave contiene la fecha de expiración del documento.
* **Issuer**: El valor asociado a esta clave contiene el editor del documento.
* **DateofIssue**: El valor asociado a esta clave contiene la fecha de expedición del documento.
* **PlaceOfBirth**: El valor asociado a esta clave contiene el lugar de nacimiento del usuario.
* **Address**: El valor asociado a esta clave contiene la dirección detectada en el documento.

Adicionalmente se añaden claves del propio objeto results para hacer más fácil su búsqueda:

* **DocumentCaptured**: Valor del modelo de documento que se ha capturado según el .xml de modelos. Corresponde a la propiedad documentCaptured.
* **MatchingSidesScore**: Valor que indica la correspondencia entre las caras leídas del documento. Corresponde a la propiedad matchingSidesScore.

#### **timeoutDiagnostic**

En Android, esta propiedad devuelve una cadena de texto que explica por qué se ha agotado el tiempo de espera del widget. En iOS, el widget genera esta información internamente, pero el componente **no** la expone en el `SdkResult` de error. Si `showDiagnostic` está activo, el mensaje de timeout se muestra en la pantalla de diagnóstico del propio componente.

#### **countryCaptured**

País del documento.

#### **documentTypeCaptured**

Tipo de documento. Se corresponde con los del apartado 5.1.10.

#### **personalData**

Conjunto reducido de datos obtenidos del usuario:

* issuer
* documentNumber
* issueDate
* expiryDate
* name
* surname
* fullName
* gender
* birthDate
* birthPlace
* nationality
* address
* nfcKey
* numSupport
* mrz

***
