Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 121 additions & 19 deletions app/views/includes/_side-nav.njk
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,63 @@
] %}

{% set dsSAFRequirementsS = [
{ title: "S01", url: "/solution-architecture-framework/s/s01" },
{ title: "S02", url: "/solution-architecture-framework/s/s02" },
{ title: "S03", url: "/solution-architecture-framework/s/s03" },
{ title: "S04", url: "/solution-architecture-framework/s/s04" }
{ title: "S01 - Executive Alignment", url: "/solution-architecture-framework/requirements/s/s01" },
{ title: "S02 - Capability Model", url: "/solution-architecture-framework/requirements/s/s02" },
{ title: "S03 - Product Vision and Roadmap", url: "/solution-architecture-framework/requirements/s/s03" },
{ title: "S04 - Meeting Needs", url: "/solution-architecture-framework/requirements/s/s04" }
] %}

{% set dsSAFRequirementsDM = [
{ title: "DM01 - Debt", url: "/solution-architecture-framework/requirements/dm/dm01" },
{ title: "DM02 - External Controls", url: "/solution-architecture-framework/requirements/dm/dm02" },
{ title: "DM03 - Risk and Issues", url: "/solution-architecture-framework/requirements/dm/dm03" },
{ title: "DM04 - Stakeholder Involvement", url: "/solution-architecture-framework/requirements/dm/dm04" },
{ title: "DM05 - Governance Process", url: "/solution-architecture-framework/requirements/dm/dm05" },
{ title: "DM06 - Governance Approach", url: "/solution-architecture-framework/requirements/dm/dm06" },
{ title: "DM07 - Decision Records", url: "/solution-architecture-framework/requirements/dm/dm07" },
{ title: "DM08 - Decision Making", url: "/solution-architecture-framework/requirements/dm/dm08" }
] %}

{% set dsSAFRequirementsSD = [
{ title: "SD01 - Design Methodology", url: "/solution-architecture-framework/requirements/sd/sd01" },
{ title: "SD02 - NHSE Principles", url: "/solution-architecture-framework/requirements/sd/sd02" },
{ title: "SD03 - Standards Compliance", url: "/solution-architecture-framework/requirements/sd/sd03" },
{ title: "SD04 - Good Practice", url: "/solution-architecture-framework/requirements/sd/sd04" },
{ title: "SD05 - Commodoties", url: "/solution-architecture-framework/requirements/sd/sd05" },
{ title: "SD06 - API First", url: "/solution-architecture-framework/requirements/sd/sd06" },
{ title: "SD07 - Equal Treatment", url: "/solution-architecture-framework/requirements/sd/sd07" },
{ title: "SD08 - Patterns", url: "/solution-architecture-framework/requirements/sd/sd08" },
{ title: "SD09 - Standards Selection", url: "/solution-architecture-framework/requirements/sd/sd09" },
{ title: "SD10 - API Lifecycle", url: "/solution-architecture-framework/requirements/sd/sd10" },
{ title: "SD11 - Policy Adherence", url: "/solution-architecture-framework/requirements/sd/sd11" },
{ title: "SD12 - Well Architected Framework", url: "/solution-architecture-framework/requirements/sd/sd12" }
] %}

{% set dsSAFRequirementsT = [
{ title: "T01 - Tech Radar", url: "/solution-architecture-framework/requirements/t/t01" },
{ title: "T02 - Appropriate Tech", url: "/solution-architecture-framework/requirements/t/t02" },
{ title: "T03 - Vendor Lock-in", url: "/solution-architecture-framework/requirements/t/t03" }
] %}

{% set dsSAFRequirementsNF = [
{ title: "NF01", url: "/solution-architecture-framework/nf/nf01" },
{ title: "NF02", url: "/solution-architecture-framework/nf/nf02" },
{ title: "NF03", url: "/solution-architecture-framework/nf/nf03" },
{ title: "NF04", url: "/solution-architecture-framework/nf/nf04" },
{ title: "NF05", url: "/solution-architecture-framework/nf/nf05" },
{ title: "NF06", url: "/solution-architecture-framework/nf/nf06" }

{ title: "NF01 - Observability", url: "/solution-architecture-framework/requirements/nf/nf01" },
{ title: "NF02 - Reliability & Resilience", url: "/solution-architecture-framework/requirements/nf/nf02" },
{ title: "NF03 - Volume & Performance Model", url: "/solution-architecture-framework/requirements/nf/nf03" },
{ title: "NF04 - Sustainability Measures", url: "/solution-architecture-framework/requirements/nf/nf04" },
{ title: "NF05 - Audit & Logging", url: "/solution-architecture-framework/requirements/nf/nf05" },
{ title: "NF06 - Disaster Recovery & Business Continuity", url: "/solution-architecture-framework/requirements/nf/nf06" }
] %}

{% set dsSAFRequirementsRU = [
{ title: "RU01 - Appropriateness", url: "/solution-architecture-framework/requirements/ru/ru01" },
{ title: "RU02 - Identification", url: "/solution-architecture-framework/requirements/ru/ru02" },
{ title: "RU03 - Required Reuse", url: "/solution-architecture-framework/requirements/ru/ru03" }
] %}

{% set dsSAFRequirementsD = [
{ title: "D01 - Document Storage", url: "/solution-architecture-framework/requirements/d/d01" },
{ title: "D02 - Open Publication", url: "/solution-architecture-framework/requirements/d/d02" },
{ title: "D03 - Document Scope", url: "/solution-architecture-framework/requirements/d/d03" }
] %}

{% set dsInformation = [
Expand Down Expand Up @@ -114,24 +157,83 @@
</li> </ul>
{% endfor %}
</ul>
{% endif %}

{% endif %}
{%- if subSection == "Solution Architecture Framework - Requirements - Strategic Alignment, Vision, and Roadmap" %}
<h2 class="app-side-nav__heading">Solution Architecture Framework</h2>
<ul class="nhsuk-list app-side-nav__list">
{% for item in dsSAFRequirementsS %}
<li class="app-side-nav__item{% if item.title == pageTitle %} app-side-nav__item--current{% endif %}"><a class="app-side-nav__link" href="{{ item.url }}">{{ item.title }}</a>
<ul class="app-side-nav__list app-side-nav__list--nested">
</li> </ul>
Comment on lines +166 to +168
{% endfor %}
</ul>
{% endif %}

{%- if subSection == "Solution Architecture Framework - Requirements - Decision Making & Governance" %}
<h2 class="app-side-nav__heading">Solution Architecture Framework</h2>
<ul class="nhsuk-list app-side-nav__list">
{% for item in dsSAFRequirementsDM %}
<li class="app-side-nav__item{% if item.title == pageTitle %} app-side-nav__item--current{% endif %}"><a class="app-side-nav__link" href="{{ item.url }}">{{ item.title }}</a>
<ul class="app-side-nav__list app-side-nav__list--nested">
</li> </ul>
{% endfor %}
</ul>
{% endif %}

{%- if subSection == "Solution Architecture Framework - Requirements - Solution Design & Methods" %}
<h2 class="app-side-nav__heading">Solution Architecture Framework</h2>
<ul class="nhsuk-list app-side-nav__list">
{% for item in dsSAFRequirementsSD %}
<li class="app-side-nav__item{% if item.title == pageTitle %} app-side-nav__item--current{% endif %}"><a class="app-side-nav__link" href="{{ item.url }}">{{ item.title }}</a>
<ul class="app-side-nav__list app-side-nav__list--nested">
</li> </ul>
{% endfor %}
</ul>
{% endif %}

{%- if subSection == "Solution Architecture Framework - Requirements - Technology Choices" %}
<h2 class="app-side-nav__heading">Solution Architecture Framework</h2>
<ul class="nhsuk-list app-side-nav__list">
{% for item in dsSAFRequirementsT %}
<li class="app-side-nav__item{% if item.title == pageTitle %} app-side-nav__item--current{% endif %}"><a class="app-side-nav__link" href="{{ item.url }}">{{ item.title }}</a>
<ul class="app-side-nav__list app-side-nav__list--nested">
</li> </ul>
{% endfor %}
</ul>
{% endif %}

{%- if subSection == "SAF - Detailed - NF" %}
{%- if subSection == "Solution Architecture Framework - Requirements - Non-Functional Profile" %}
<h2 class="app-side-nav__heading">Solution Architecture Framework</h2>
<ul class="nhsuk-list app-side-nav__list">
{% for item in dsSAFRequirementsNF %}
<li class="app-side-nav__item{% if item.title == pageTitle %} app-side-nav__item--current{% endif %}"><a class="app-side-nav__link" href="{{ item.url }}">{{ item.title }}</a>
<ul class="app-side-nav__list app-side-nav__list--nested">
{%- if pageTitle == "Requirements" and item.title == "Requirements"%}
{% for SAFitem in dsSAFRequirements %}
<li class="app-side-nav__item{% if SAFitem.title == pageTitle %} app-side-nav__item--current{% endif %}"><a class="app-side-nav__link" href="{{ SAFitem.url }}">{{ SAFitem.title }}</a></li>
</li> </ul>
{% endfor %}
{% endif %}
</li> </ul>
</ul>
{% endif %}

{%- if subSection == "Solution Architecture Framework - Requirements - Reuse Principles and Development of Shared Services" %}
<h2 class="app-side-nav__heading">Solution Architecture Framework</h2>
<ul class="nhsuk-list app-side-nav__list">
{% for item in dsSAFRequirementsRU %}
<li class="app-side-nav__item{% if item.title == pageTitle %} app-side-nav__item--current{% endif %}"><a class="app-side-nav__link" href="{{ item.url }}">{{ item.title }}</a>
<ul class="app-side-nav__list app-side-nav__list--nested">
</li> </ul>
{% endfor %}
</ul>
{% endif %}

{% endif %}
{%- if subSection == "Solution Architecture Framework - Requirements - Documentation" %}
<h2 class="app-side-nav__heading">Solution Architecture Framework</h2>
<ul class="nhsuk-list app-side-nav__list">
{% for item in dsSAFRequirementsD %}
<li class="app-side-nav__item{% if item.title == pageTitle %} app-side-nav__item--current{% endif %}"><a class="app-side-nav__link" href="{{ item.url }}">{{ item.title }}</a>
<ul class="app-side-nav__list app-side-nav__list--nested">
</li> </ul>
{% endfor %}
</ul>
{% endif %}

</nav>
28 changes: 0 additions & 28 deletions app/views/solution-architecture-framework/nf/nf06.njk

This file was deleted.

12 changes: 6 additions & 6 deletions app/views/solution-architecture-framework/requirements.njk
Original file line number Diff line number Diff line change
Expand Up @@ -256,31 +256,31 @@
</thead>
<tbody class="nhsuk-table__body">
<tr role="row" class="nhsuk-table__row">
<td class="nhsuk-table__cell">NF01</td>
<td class="nhsuk-table__cell"><a href="requirements/nf/nf01">NF01</a></td>
<td class="nhsuk-table__cell">Solutions should incorporate workload observability and understand service health.</td>
</tr>
<tr role="row" class="nhsuk-table__row">
<td class="nhsuk-table__cell">NF02</td>
<td class="nhsuk-table__cell"><a href="requirements/nf/nf02">NF02</a></td>
<td class="nhsuk-table__cell">Reliability &amp; Resilience needs should be defined (in terms of standard NHS England service levels) and solution mechanisms to meet these needs are defined including metrics such as Recovery Time Objective (RTO) and Recovery Point Objective (RPO).</td>
</tr>
<tr role="row" class="nhsuk-table__row">
<td class="nhsuk-table__cell">NF03</td>
<td class="nhsuk-table__cell"><a href="requirements/nf/nf03">NF03</a></td>
<td class="nhsuk-table__cell">An overall volume and performance model should exist and includes business-realistic exceptional scenarios.</td>
</tr>
<tr role="row" class="nhsuk-table__row">
<td class="nhsuk-table__cell">NF04</td>
<td class="nhsuk-table__cell"><a href="requirements/nf/nf04">NF04</a></td>
<td class="nhsuk-table__cell">Methods to measure sustainability to establish baseline and show improvement should be defined.</td>
</tr>
<tr role="row" class="nhsuk-table__row">
<td class="nhsuk-table__cell">NF05</td>
<td class="nhsuk-table__cell"><a href="requirements/nf/nf05">NF05</a></td>
<td class="nhsuk-table__cell">
<p>Audit &amp; logging requirements should be defined, and the solution can support them.</p>
<p><a href="https://www.ncsc.gov.uk/collection/device-security-guidance/managing-deployed-devices/logging-and-protective-monitoring">NCSC Logging and Protective Monitoring</a></p>
<p><a href="https://www.ncsc.gov.uk/collection/cloud/the-cloud-security-principles/principle-13-audit-information-and-alerting-for-customers">NCSC Principle 13: Audit information and alerting for customers</a></p>
</td>
</tr>
<tr role="row" class="nhsuk-table__row">
<td class="nhsuk-table__cell"><a href="nf/nf06">NF06</a></td>
<td class="nhsuk-table__cell"><a href="requirements/nf/nf06">NF06</a></td>
<td class="nhsuk-table__cell">
<p><strong>Disaster Recovery &amp; Business Continuity</strong></p>
<p>There should be clear requirements (commensurate with service levels) around DR &amp; BC (and a pragmatic approach taken with regards DR/BC events planned for).</p>
Expand Down
20 changes: 20 additions & 0 deletions app/views/solution-architecture-framework/requirements/d/d01.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% set pageTitle = "D01 - Document Storage" %}
{% set pageSection = "Standards and technology" %}
{% set subSection = "Solution Architecture Framework - Requirements - Documentation" %}
{% set pageDescription = "" %}
{% set beta = true %}
{% set hideContact = "false" %}
{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %}

{% extends "includes/app-layout.njk" %}

{% block breadcrumb %}
{% include "solution-architecture-framework/_breadcrumb.njk" %}
{% endblock %}

{% block bodyContent %}




{% endblock %}
20 changes: 20 additions & 0 deletions app/views/solution-architecture-framework/requirements/d/d02.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% set pageTitle = "D02 - Open Publication" %}
{% set pageSection = "Standards and technology" %}
{% set subSection = "Solution Architecture Framework - Requirements - Documentation" %}
{% set pageDescription = "" %}
{% set beta = true %}
{% set hideContact = "false" %}
{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %}

{% extends "includes/app-layout.njk" %}

{% block breadcrumb %}
{% include "solution-architecture-framework/_breadcrumb.njk" %}
{% endblock %}

{% block bodyContent %}




{% endblock %}
20 changes: 20 additions & 0 deletions app/views/solution-architecture-framework/requirements/d/d03.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% set pageTitle = "D03 - Document Scope" %}
{% set pageSection = "Standards and technology" %}
{% set subSection = "Solution Architecture Framework - Requirements - Documentation" %}
{% set pageDescription = "" %}
{% set beta = true %}
{% set hideContact = "false" %}
{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %}

{% extends "includes/app-layout.njk" %}

{% block breadcrumb %}
{% include "solution-architecture-framework/_breadcrumb.njk" %}
{% endblock %}

{% block bodyContent %}




{% endblock %}
20 changes: 20 additions & 0 deletions app/views/solution-architecture-framework/requirements/dm/dm01.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% set pageTitle = "DM01 - Debt" %}
{% set pageSection = "Standards and technology" %}
{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %}
{% set pageDescription = "" %}
{% set beta = true %}
{% set hideContact = "false" %}
{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %}

{% extends "includes/app-layout.njk" %}

{% block breadcrumb %}
{% include "solution-architecture-framework/_breadcrumb.njk" %}
{% endblock %}

{% block bodyContent %}




{% endblock %}
20 changes: 20 additions & 0 deletions app/views/solution-architecture-framework/requirements/dm/dm02.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% set pageTitle = "DM02 - External Controls" %}
{% set pageSection = "Standards and technology" %}
{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %}
{% set pageDescription = "" %}
{% set beta = true %}
{% set hideContact = "false" %}
{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %}

{% extends "includes/app-layout.njk" %}

{% block breadcrumb %}
{% include "solution-architecture-framework/_breadcrumb.njk" %}
{% endblock %}

{% block bodyContent %}




{% endblock %}
20 changes: 20 additions & 0 deletions app/views/solution-architecture-framework/requirements/dm/dm03.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% set pageTitle = "DM03 - Risk and Issues" %}
{% set pageSection = "Standards and technology" %}
{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %}
{% set pageDescription = "" %}
{% set beta = true %}
{% set hideContact = "false" %}
{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %}

{% extends "includes/app-layout.njk" %}

{% block breadcrumb %}
{% include "solution-architecture-framework/_breadcrumb.njk" %}
{% endblock %}

{% block bodyContent %}




{% endblock %}
20 changes: 20 additions & 0 deletions app/views/solution-architecture-framework/requirements/dm/dm04.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% set pageTitle = "DM04 - Stakeholder Involvement" %}
{% set pageSection = "Standards and technology" %}
{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %}
{% set pageDescription = "" %}
{% set beta = true %}
{% set hideContact = "false" %}
{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %}

{% extends "includes/app-layout.njk" %}

{% block breadcrumb %}
{% include "solution-architecture-framework/_breadcrumb.njk" %}
{% endblock %}

{% block bodyContent %}




{% endblock %}
Loading