\ProvidesPackage{prisma-flow-diagram}[2025/01/20 PRISMA Flow Diagram Generator]

% Automatically load required packages
\RequirePackage{tikz}
\RequirePackage{graphicx}
\RequirePackage{float}
\usetikzlibrary{positioning, calc, chains}

% Define default node height
\def\mh{10ex}

% Define TikZ styles
\tikzset{
    mynode/.style={
        draw, rectangle, align=center, minimum height=\mh, text width=5cm, font=\small, outer sep=0pt
    },
    ml/.style args={#1/#2}{
        draw, rectangle, align=center, rounded corners, font=\small\bfseries, inner sep=2ex, 
        outer sep=0pt, fill=cyan!30, minimum height=1.6*\mh, left=5mm of #2
    },
    arrow/.style={
        thick,->,>=stealth
    },
    every join/.style=arrow,
    every node/.style={
        font=\small
    }
}

% Start PRISMA diagram
\newcommand{\prismaflowstart}{
    \begin{tikzpicture}[node distance=5mm and 10mm, start chain=going below]
    \coordinate (tc);
}

% Add a main diagram node
\newcommand{\prismaflownode}[4]{
    \node[mynode, #2] (#1) {#3};
    \ifx#4\empty\else\draw[arrow] (#4) -- (#1);\fi
}

% Add a left-side label
\newcommand{\prismalabel}[3]{
    \node[ml=#1/#2] {\rotatebox{90}{\textbf{#3}}};
}

% Add a manual arrow
\newcommand{\prismaflowarrow}[2]{
    \draw[arrow] (#1) -- (#2);
}

% End PRISMA diagram
\newcommand{\prismaflowend}{
    \end{tikzpicture}
}