Work overview

Section 02 of 05

Methods

Development of a mobile application to estimate time of death based on the compound method

Andrea Zirn, Celine Berger, Holger Wittig, Joel Bottoni, Kathrin Gerlach, Eva Scheurer, and Claudia Lenz · 2026

Contents

Section 02 of 05

  1. 01Introduction
  2. 02Methods
  3. 03Results
  4. 04Discussion
  5. 05Conclusion
Text size
Work overview

Section 2 of 5

Methods

Andrea Zirn, Celine Berger, Holger Wittig, Joel Bottoni, Kathrin Gerlach, Eva Scheurer, and Claudia Lenz · about 7 minutes

The development of the mobile application followed a structured and iterative approach to ensure accuracy, usability, and efficiency. The process involved selecting an appropriate programming framework, designing a user-friendly interface, implementing robust calculations, and enabling seamless data handling.

Requirements and application concept

The first step in the development process was gathering user requirements from forensic medical personnel. This step ensured that the application met practical needs and intuitive data input (see Appendix 1). The collected requirements guided the selection of features, data structures, and the user interface design.

Programming framework

Moreover, based on the project requirements, suitable programming languages and frameworks were chosen. Key criteria included computational capabilities, ease of handling mathematical functions, and cross-platform usability. Hence, Flutter [22] (version 3.22.2) was selected as the development framework due to its cross-platform capabilities, ensuring the application could be deployed on both Android and iOS devices without requiring separate codebases. Written in Dart programming language [23] (version 3.4.3), Flutter provides high performance and a smooth user interface, which is crucial for an application that requires accurate data input and real-time processing. By leveraging Flutter, the application achieved an optimal balance between functionality, user experience, and computational efficiency, making it well-suited for forensic time of death estimation. The development process was managed using the integrated development environment (IDE) Visual Studio Code [24] (version 1.98.2) and version control with GitHub [25] to enable simultaneous collaboration. The workflow followed an iterative approach, allowing incremental improvements and bug fixes.

Time of death calculations

In our mobile application, the estimation of the time of death based on the compound method was conducted following the standard forensic procedure. We integrated mathematical calculations based on the rectal temperature with corrective factors in combination with rigor mortis, mechanical excitability of the skeletal muscle, electrical excitability of facial muscles and pharmacological excitability of the iris [4, 5, 26, 27].

Temperature-based estimation:

The following equation by Henssge [1, 4, 28] was used to estimate the PMI with the later integration of corrective factors [2]:

1\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$Q=\frac{Tr-Ta}{T_0-Ta}=A\ast e^{Bt}+\left(1-A\right)\ast e^{\left(\frac{A\ast\:B}{A-1}\ast\:t\right)}$$\end{document}

with

Q = standardized temperature._ Tr_ = rectal temperature in Celsius (°C)._ Ta_ = ambient temperature in °C.\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$:{T}{0}$$\end{document}= rectal temperature at death (t = 0), assumed to be 37.2 °C.t = death time.m = body weight in kg.A = 1.25 with _ Ta ≤ 23.2 °C or 1.11 with _ Ta_ ≥ 23.3 °C.B = -1.2815 (C * m-0.625) + 0.0284.C = corrective factor (default = 1), depending on _ Ta_:○ ≤ 23°: Q = \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$:\frac{Tr-Ta}{37.2-Ta}=$$\end{document}1.25eBt – 0.25e5Bt ○ ≥23°: Q = \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$:\frac{Tr-Ta}{37.2-Ta}$$\end{document} = 1.11eBt – 0.11e5Bt

For the estimation of t, a Dart-based numerical script was implemented to iteratively solve the following equation:

2\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$\:\frac{Tr-Ta}{{T}_{0}-Ta}\:\:\sim\:({A}*{{e}}^{Bt}+\left(1-A\right)*{e}^{\left(\frac{A*\:B}{A-1}*\:t\right)})\:$$\end{document}

The algorithm determines the value of t that minimizes the deviation between the left-hand side and right-hand side of the equation. This process was limited to 1000 iterations.

If the environmental conditions deviate from the standard conditions defined by Henssge, i.e. uncovered body on a thermally indifferent surface within still air, a corrective factor can be applied to account for the deviations, e.g. covered or wind [2, 4]. This corrective factor is already considered in Eq. 1; however, it is based on the body weight. To account for this, Eq. 3 was integrated into the calculation derived from [2, 29] in our application:

3\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$\:F={\left[\:\frac{\frac{-1.2815}{\left(\left({\mathrm{m}}^{-0.625}\right)-0.028\right)\left(-3.24696*{e}^{-0.89959*F70}\right))-0.0354}\:}{m}\right]}^{1.6}$$\end{document}

m = bodyweight in kg.F70 = corrective factor with a bodyweight of 70kg.

To account for uncertainty, the 95% tolerance intervals described by Henssge [4] were incorporated. Specifically, deviations of ± 2.8 h were applied for Q values between 1.0 and 0.5, ± 3.2 h for Q values between 0.5 and 0.3, and ± 4.5 h for Q values between 0.3 and 0.2. When corrective factors were included, the corresponding tolerance intervals were ± 2.8 h, ± 4.5 h, and ± 7.0 h, respectively. For Q values below 0.2, the estimation of the postmortem interval is considered unreliable; therefore, such cases were excluded from calculation within the application and flagged as errors.

Non-temperature-based estimations:

For our purposes, six stages of lividity were considered in relation to estimating the time of death. Only the rigor mortis stages relevant to this estimation were included in the implementation [5], specifically “Beginning,” “Full development,” and “Complete resolution,” as according to Mallach’s statistical analysis [9]. According to Klein et al., the electrical excitability of the facial muscles after the stimulation of the orbicularis oculi muscle can be classified into six grades, allowing a certain delimitation of the time of death [16]. Additionally, the electrical stimulation and reaction of the orbicularis oris muscle provides limitations regarding the time of death [27]. Furthermore, the chemical excitability of the iris was included with caution into the application due to previous findings suggesting that this method is not suitable for forensic time since death estimations [17, 18]. These non-temperature-based estimation methods were integrated into the application. The corresponding details are summarized in Table 1.

 |  | Minimal hpm | Maximal hpm | 
Livor mortis [3, 5, 9] |  |  |  | 
Begin | YES | > 0.25 | < 3 | NO
Confluence | YES | > 1 | < 4 | NO
Maximum | YES | > 3 | < 16 | NO
Thumb pressure (complete blanching) | NO | > 1 | < 20 | YES
Fully redistributed | NO | > 2 | < 6 | YES
Partly redistributed | NO | > 4 | < 24 | YES
Rigor mortis [9, 13]
Begin |  |  | < 7 | NO
Maximum | YES | > 6 | < 10 | NO
Re-establishment | NO | > 2 | < 20 | YES
Electrical excitability of the facial muscles [5, 7, 16]
I local upper eye lid | NO | > 5 | < 22 | YES
II 1/3-2/3 upper eye lid | NO | > 5 | < 16 | YES
III upper eye lid | NO | > 3.5 | < 13 | YES
IV upper eye lid + lower eye lid | NO | > 3 | < 8 | YES
V upper eye lid + lower eye lid + forehead | NO | > 2 | < 7 | YES
VI upper eye lid + lower eye lid + forehead + cheek | NO | > 1 | < 6 | YES
Orbicularis oris muscle | NO | > 3 | < 8.5 | YES
Mechanical excitability of skeletal muscles [3, 5, 14, 15]
Zsako’s muscle phenomenon | NO |  | < 2.5 | YES
Idiomuscular bulg | NO | > 1.5 | < 13 | YES
Chemical excitability of the iris [30] |  |  |  | 
Atropin | NO | > 3 | < 10 | YES
Tropicamide | NO | > 5 | < 30 | YES
Acetylcholin | NO | > 14 | < 46 | YES

Data handling

The system of the mobile application was designed to accept one or multiple types of inputs of postmortem changes for estimating the time of death. In addition, the application was designed to incorporate an error-handling mechanism that evaluates the consistency of the entered parameters and alerts the user when contradictory or implausible input combinations are detected. Features such as editing capabilities and input validation were integrated to improve accuracy and reliability.

Additional features

To support multilingual functionality, a comprehensive localization strategy was implemented. This was achieved through the integration of the flutter_localizations package, which enables seamless adaptation of the application to multiple languages. The supported languages include English, German, Italian, French, Spanish and Croatian. Furthermore, the application was designed to generate and export results in a standardized document format (PDF). This functionality was facilitated using the pdf library for Dart/Flutter (version 3.11.3), which ensures that essential information is systematically structured and can be exported as a standardized PDF file.

Evaluation

To verify the reliability of the implementation, the application was tested using multiple input scenarios. A total of 100 previously documented cases, in which the PMI had been estimated using the nomogram and non-temperature-based calculations, were selected. The corresponding input parameters were entered into the application to calculate the PMI interval. To quantitatively assess the agreement between the application-based calculations and the reference values, the intraclass correlation coefficient (ICC 3.1; two-way mixed single measures) analysis was applied. Additionally, a Bland-Altman analysis was conducted to further assess systematic differences and measurement variability. Separate analyses were conducted for the lower and upper limits of the estimated PMI ranges to account for potential variations across the measurement spectrum.

Finally, to enhance usability, the application underwent unsystematic on-site testing by forensic pathologists, who freely used the app during their normal working day. Feedback gathered during this process was used to refine the application where appropriate.