1. Purpose

The purpose of this SOP is to establish a standardized framework for the Software Development Life Cycle (SDLC) of AMRIT, an open-source Electronic Health Record (EHR) platform. It aims to ensure the development, deployment, and maintenance of AMRIT adhere to best practices, regulatory compliance, and healthcare standards such as SNOMED CT, HL7, and LOINC. This SOP facilitates collaboration among developers, QA teams, product managers, and other stakeholders while maintaining data security, system interoperability, and usability across diverse healthcare environments.

2. Scope

This SOP applies to all phases of AMRIT’s SDLC, including requirement analysis, design, development, testing, deployment, and maintenance. It covers software products developed under AMRIT’s umbrella—ranging from web applications to mobile apps—and addresses integration with healthcare systems like ABHA cards and Point-of-Care Testing (POCT) devices. The primary audience includes developers, QA engineers, DevOps teams, product managers, implementation managers, and community contributors. The SOP also emphasizes offline functionality for remote healthcare delivery and multilingual support for diverse user bases.

3. Roles & Responsibilities


RoleResponsibilties
Business Systems Analyst (BSA)
  • Deeply understand government health programs (RCH, NCD, TB, Immunization, etc.) and how AMRIT supports them.

  • Collaborate with field teams, program leads, and government stakeholders to:

    • Gather detailed requirements

    • Clarify reporting logic, workflows, and business rules (e.g., eligibility for high-risk pregnancy alerts)

  • Identify gaps between existing product capabilities and program requirements.

  • Create as-is and to-be workflows, clearly outlining system changes required.

  • Map manual processes (registers, Excel trackers) to digital equivalents in AMRIT.

  • Translate requirements into:

    • Functional specs (e.g., “Add new risk factor dropdown in ANC form”)

    • Data mapping sheets (e.g., “How RCH high-risk pregnancy logic maps to DB fields”)

    • Report formulas and indicator definitions

  • Ensure these are developer-ready and testable.

  • Sit in on product refinement discussions and explain the “why” behind every feature.

  • Help devs understand program logic, field constraints, and data flows.

  • Explain tech constraints/possibilities to non-tech stakeholders in simple language.

  • Help create test scenarios based on functional specs.

  • Coordinate with QA and field teams to:

    • Validate that features match business logic

    • Reproduce and document edge case bugs

  • Be the go-to person for "Is this working as expected?" type questions.

  • Create user-facing documents or training support docs if needed.
  • Understand what data is required for NHM/State dashboards and how AMRIT supports it.

  • Work with data teams to:

    • Define indicator logic

    • Validate data exports

    • Ensure completeness and consistency of program reporting

  • Work with architects and external systems (e.g., NDHM, eAushadhi, Nikshay) to map:

    • Data fields

    • Consent flows

    • Reporting standards (e.g., FHIR)

  • Help ensure AMRIT integrates cleanly with public health data ecosystems.

  • Deliverables:

    • Functional Requirement Documents (FRD)

    • Use Case & Workflow Diagrams

    • Mapping Sheets (form fields to database)

    • Program Indicator Definitions (used in reporting)

    • Test Scenarios for UAT

    • Release Notes from a business logic standpoint

Product Owner
  • Champion the mission of AMRIT — better digital healthcare delivery through scalable, user-friendly tech.

  • Translate that mission into a clear product vision for each module (Facility App, Sakhi App, Admin portal, etc.).

  • Ensure alignment with goals from funders, NHM/state partners, and internal leadership.

  • Maintain and prioritize the product backlog.

  • Write clear and concise user stories with acceptance criteria (e.g., "As an ASHA, I want to see my assigned beneficiaries for today").

  • Balance field needs with tech feasibility and roadmap priorities.

  • Deeply understand ASHAs, ANMs, facility staff, and their workflows.

  • Continuously gather feedback from field pilots, training sessions, and WhatsApp groups.

  • Validate mockups, workflows, and prototypes with real users before pushing to dev.

  • Be the bridge between:

    • Design (for UI/UX that works in low-literacy, low-tech settings)

    • Engineering (for breaking features into dev-friendly stories)

    • Field Ops/Project Managers (to ensure rollouts are smooth and aligned with realities on the ground)

  • Join sprint planning and review calls to provide domain context and prioritization decisions.

  • Coordinate cross-team dependencies and testing to ensure releases are smooth and field-ready.
  • Track feature adoption and impact — not just usage, but health outcomes or operational efficiencies (e.g., "Did Sakhi reduce paper records?").

  • Define success for each epic or feature. Example:

    • "Increase Sakhi app usage in State X to 80% weekly active users"

    • "Reduce paper forms usage at facilities by 50% in 3 months"

  • Ensure all features comply with:

    • Data privacy laws (DPDP, HIPAA-like principles)

    • Public digital infrastructure standards (NDHM guidelines, FHIR, etc.)

  • Be aware of local workflows, language requirements, and device constraints.

  • Regularly reflect on what’s working or not — from both tech and adoption perspective.

  • Iterate on workflows and tools to increase ease-of-use and reduce friction.

  • Help make AMRIT a DPG-quality product — usable, adaptable, and open.

Scrum Master
  • Run efficient, focused ceremonies like:

    • Daily Standups – Keep updates crisp, surface blockers early.

    • Sprint Planning – Help the team break down stories and estimate work.

    • Sprint Reviews – Showcase outcomes to internal/external stakeholders (like Project Managers or field teams).

    • Retrospectives – Encourage honest reflection and process improvement.

  • Actively identify and unblock tech or coordination bottlenecks.

    • E.g., Backend API not ready for frontend? Field dependency delaying test? Fix by nudging or aligning stakeholders.

  • Escalate issues when needed to the Project Manager, Tech Architect, or Product Owner.

  • Help devs, QA, and designers understand and follow agile best practices.

  • Encourage:

    • Sustainable pace

    • Respectful communication

    • Ownership of delivery

  • Guide the team in self-organization and accountability.

  • Monitor:

    • Sprint velocity

    • Story spillover

    • Bug-to-feature ratio

    • Cycle time

  • Share trends with the team and help tune the delivery process accordingly.

  • Help ensure backlog is groomed and ready.

  • Assist the PO in:

    • Prioritization

    • Story writing support (esp. tech refinement)

    • Making sure stories are INVEST-compliant (Independent, Negotiable, Valuable, Estimable, Small, Testable)

  • Facilitate coordination between:

    • Frontend & backend teams

    • QA & developers

    • Field ops & tech

  • Support alignment in multi-module sprints (e.g., Facility + Sakhi + Admin Portal releases)

  • Maintain up-to-date boards (JIRA, Trello, etc.).

  • Ensure everyone knows what’s being built and what’s done.

  • Encourage clear status updates, definition of done, and ownership of tasks.

  • Create a safe space for team members to:

    • Raise concerns

    • Give feedback

    • Admit mistakes

  • Track action items from retros and ensure follow-through.

  • Suggest improvements in:

    • Sprint cadence

    • QA process

    • Field feedback loops

    • Deployment planning

  • Champion adoption of tools like JIRA dashboards, CI/CD pipeline visibility, etc.

  • Drive initiatives like “Tech Debt Thursdays” or bug bashes.

  • Facilitate the onboarding of new engineers or QAs into the sprint rituals.

Developers
  • Write clean, modular code for frontend or backend based on tickets shared by the tech lead or product team.

  • Stick closely to functional specs and design wireframes.

  • Start with simple forms, UI components, services, or minor database updates.

  • Manually verify your features in the dev or staging environment.

  • Check:

    • Form validations

    • API responses

    • UI consistency

  • Run unit tests where applicable.

  • Implement modules and features as per functional requirements and UI/UX designs.

  • Handle both frontend and backend tasks depending on your stack expertise.

  • Follow modular, reusable, and maintainable coding practices.

  • Manually validate your features before raising a PR.

  • Write and run unit tests; aim for decent test coverage.

  • Understand and fix issues found in integration or regression testing.

  • Review others' code (as per your comfort) and seek feedback on your own.

  • Incorporate suggestions, learn better practices, and improve over time.

  • Know how AMRIT is used by ASHAs, ANMs, Facility Staff, and Health Departments.

  • Understand workflows like RCH tracking, ANC visits, or NCD follow-ups.

  • Ask domain-related questions to BAs or Product when in doubt

  • Join sprint ceremonies (refinement, planning, demos, retros).

  • Work closely with QA to clarify functionality and validate bug fixes.

  • Pair with L2 support to reproduce or investigate field issues.

  • Follow Git branching strategy, linting, formatting rules, and commit conventions.

  • Use tools like Postman, Swagger, ELK dashboard, Firebase Crashlytics (for mobile).

  • Help with CI/CD improvements or developer tooling automation where relevant.

  • Ask for help when blocked, and share knowledge when you solve problems.

  • Take ownership of tickets, but stay curious about how your work connects to the larger system.

  • Document reusable patterns or decisions you implement.

Senior Developers
  • Break down epics or large features into manageable technical components.

  • Choose appropriate design patterns and data structures.

  • Ensure modular, extensible code design across microservices and front-end modules.

  • Review junior/mid-level code with a focus on teaching.

  • Conduct knowledge-sharing sessions (e.g., clean code, domain logic, system design).

  • Help onboard new devs into the codebase and workflows.

  • Define and enforce code quality standards, testing practices, and CI/CD checks.

  • Ensure test coverage and automation are part of sprint planning.

  • Introduce tools or practices to reduce bugs and improve developer experience.

  • Own technical components like authentication, offline sync, data sync logic, caching, etc.

  • Coordinate across teams/modules to ensure consistency.

  • Manage technical debt and prioritize refactoring efforts.

  • Lead root cause analysis for bugs affecting live users.

  • Coordinate with QA, L2 support, and DevOps for logs, stack traces, and monitoring data.

  • Implement hotfixes while balancing long-term solutions

  • Influence scope and implementation approach during backlog refinement.

  • Validate technical feasibility and estimate effort.

  • Help bridge communication gaps between product and engineering.

  • Ensure logging, monitoring, and alerting are present for new features.

  • Collaborate with DevOps to optimize build pipelines and deployments.

  • Drive performance profiling and optimization efforts.

  • Represent engineering in cross-functional conversations.

  • Champion user needs, especially for low-end devices, poor connectivity, and field usability.

  • Align tech decisions with AMRIT’s mission and long-term sustainability.

Technical Architect
  • Design scalable, modular, and secure system architectures across:

    • Backend APIs (Spring Boot, REST/GraphQL)

    • Frontend (Angular-based apps for facility/ASHAs)

    • Data pipelines (for reporting, observability, NHM analytics)

  • Define and document the technical architecture diagrams, data flow, deployment models (cloud/on-prem), and integration points.

  • Ensure these integrations are secure, standards-compliant, and fault-tolerant.
  • Set up and enforce coding standards, design patterns, and documentation practices.

  • Review PRs for architecture decisions, performance, and maintainability.

  • Mentor developers and help resolve technical blockers.

  • Design the deployment strategy (AWS, EC2, RDS, etc.) and CI/CD workflows.

  • Define monitoring, logging, and alerting standards (e.g., ELK stack, Prometheus/Grafana).

  • Work with the dev and ops teams to ensure high availability and resilience of services.

  • Ensure the architecture meets data protection and security guidelines, especially given that AMRIT handles health data.

  • Lead security audits and compliance checks (like HIPAA principles, even if not legally binding).

  • Implement API gateways, RBAC, token/auth mechanisms

  • Optimize database queries, caching strategies, and API response times.
  • Work closely with:

    • Product Managers – to translate feature specs into technical plans

    • Project Managers – to align sprints with technical priorities

    • QA/Testing teams – to define test automation strategy, mock services

  • Help with technical scoping and effort estimation.

  • Ensure the platform remains extensible, vendor-agnostic, and developer-friendly for the future.

  • Promote use of Open Source and Digital Public Goods standards (like OpenHIE, FHIR).

  • Document the system so that new developers or partner orgs can easily onboard.

  • Represent AMRIT in external forums (DPG showcases, digital health summits, etc.)

  • Contribute to open source contributions, standards discussions, and FHIR profiles

Project Manager
  • Work with government partners (NHM, State Health Societies, etc.), funders, and internal teams to ensure alignment on project goals.

  • Act as a bridge between tech, field operations, and leadership—ensuring each understands the other's priorities, timelines, and constraints.

  • Regularly capture user feedback from ASHAs, facility staff, and other ground-level users.

  • Create detailed implementation roadmaps for rollouts in new states or facilities.
  • Manage timelines, dependencies, and risks across:

    • Tech development (from design to release)

    • Field operations (training, onboarding, adoption)

    • Integrations (NDHM, other health systems)

  • Use tools like JIRA, Asana, or Excel trackers (depending on maturity) to track progress.

  • Coordinate with field teams for pilot launches, feedback loops, and issue resolution.

  • Proactively manage change management—helping people adapt to new tech workflows.

  • Identify bottlenecks early—whether it's tech, policy, or adoption issues.

  • Maintain an escalation matrix to resolve blockers quickly.

  • Track issues from the field and tech and ensure they’re resolved in a timely manner.


L2 Support 
  • Analyze issues escalated from L1 support (call center, state ops, field teams) that need deeper investigation.

  • Reproduce bugs using test environments or staging apps.

  • Determine whether the issue is:

    • User error (e.g., wrong workflow)

    • Data-related (e.g., sync issues, missing records)

    • Tech-related (e.g., API failure, app crash)

  • Query logs via ELK stack or log aggregators.

  • Run SQL queries on reporting or production read-only DBs to check data inconsistencies.

  • Use Postman or Swagger to test APIs and identify backend issues.

  • Create clear, reproducible bug reports with:

    • Steps to replicate

    • Screenshots or logs

    • Metadata (device ID, state, app version)

    • Any temporary workaround

  • Categorize them correctly (Severity, Module, Root cause area)

  • Escalate bugs to the right developers or QA leads.

  • Provide devs with enough context so they don’t have to go digging.

  • Follow up and track resolution until deployed in a release.

  • Join bug triage meetings or sprint reviews when needed.

  • Once a fix is done or workaround is found, update L1 with:

    • Explanation in simple language

    • Clear instructions to share with users

    • ETA for permanent resolution (if applicable)

  • Help maintain a knowledge base or issue tracker (JIRA, Confluence, etc.)

  • Identify recurring bugs and raise them as candidates for:

    • Better UX

    • Dev fixes

    • Training interventions

  • Help Product/QA teams prioritize based on volume or impact.

  • Assist QA during release cycles by:

    • Validating critical bug fixes in staging

    • Helping test edge cases based on past L2 issues

  • Serve as a second layer of QA when releases are rushed but high-risk

  • Handle minor configuration issues (e.g., facility ID mismatch, program enablement not reflecting).

  • Work with admin tools or dashboards to:

    • Reset user access

    • Troubleshoot program config errors

  • Never share full patient data or credentials while debugging.

  • Follow data protection protocols, especially in logs or SQL access.

  • Escalate to tech leads if an issue affects a large user base or critical workflows (e.g., ANC visit not saving).

  • Maintain an internal wiki or playbook of common issue categories and resolutions.

  • Share monthly reports on L2 ticket volumes, types, and resolution SLAs.

  • Contribute to improving observability (e.g., suggest better logging, error messages).

QA Testers
  • Read user stories, program guidelines, and business rules to understand:

    • What each feature should do (e.g., “ANC visit form should allow risk tagging”)

    • Program logic (e.g., who counts as a high-risk pregnancy)

    • Expected workflows in field and facility contexts

  • Collaborate with Product Owner or BSA for clarity on edge cases.

  • Create detailed manual test cases that cover:

    • Positive flows (happy path)

    • Negative cases (validation, limits)

    • Boundary conditions (e.g., age, dates)

    • Role-based access (e.g., what an ASHA vs. ANM can see)

  • Use Excel, TestLink, Zephyr, or other tools as preferred.

  • Perform manual testing in staging and pre-prod environments.

  • Validate:

    • Forms and data entry

    • Calculations (e.g., age, EDD)

    • Offline sync behavior (especially in Sakhi app)

    • Multi-lingual support (e.g., Hindi, Bengali UI texts)

  • Cross-browser testing for web apps and cross-device testing for mobile (low-end devices too).

  • Ensure Android apps (Sakhi, Facility app) work correctly on:

    • Low RAM phones

    • Different screen sizes

    • Patchy internet

    • OS versions common in the field (Android 8+)

  • Validate sync behavior, local storage, error states, etc.

  • Reproduce and document bugs with:

    • Steps to replicate

    • Screenshots or videos

    • Logs (if available)

    • Severity/Priority tagging

  • Use JIRA (or your bug tracking system) consistently.

  • Collaborate with L2 support to validate bugs from the field.

  • Maintain a regression suite for every module (e.g., RCH, NCD, TB).

  • Run sanity tests after each build before releases.

  • Work with the release lead or Scrum Master to ensure release quality.

  • Join refinement and sprint planning meetings to:

    • Understand new features in advance

    • Highlight test complexity

    • Raise testing risks early (e.g., too many changes in one form)

  • Ensure data shown in reports (e.g., line lists, indicators) matches backend calculations.

  • Help validate:

    • Program indicators (e.g., % of high-risk pregnancies identified)

    • Downloadable Excel reports

    • Dashboards used by state teams

  • Clarify bugs with devs and confirm fixes post-deployment.

  • Work with BSAs to understand field use-cases better.

  • Join hands with L2 to verify field-raised bugs and reproduce issues.

  • Basic knowledge of:

    • Postman (to hit APIs directly)

    • Browser dev tools (to check network calls)

    • Firebase logs (for mobile crashes)

    • Android emulators and device testing platforms (like BrowserStack)

  • Maintain a QA checklist per release (shared with team).

  • Build simple automation for regression tests using tools like Selenium, Appium, or Playwright

  • Contribute to product improvement with feedback from a “tester’s eye”.

QA Manager
  • Manage a team of manual testers, automation engineers, and interns (if any).

  • Assign tasks, ensure coverage, and provide regular feedback and mentoring.

  • Help junior QAs grow into domain experts who think like end-users (ASHAs, ANMs, etc.).

  • Ensure every ticket/story has sufficient test case coverage (functional, edge, regression).

  • Validate that new features are tested across devices, roles, and workflows (e.g., facility app, ASHA app).

  • Own cross-browser, mobile, and API testing matrices.

  • Work with automation engineers to identify test cases for automation.

  • Prioritize automation for critical workflows (e.g., RCH form submission, follow-ups).

  • Integrate test automation into CI/CD pipelines (e.g., GitHub Actions, Jenkins).

  • Track key QA health indicators:

    • Bug rejection rate

    • Escaped defects in production

    • Test coverage trends

    • Test execution times

  • Share regular quality reports with product and engineering leadership.

  • Give final QA sign-off before staging/production deployments.

  • Ensure that no critical or high-severity bugs are open before greenlighting.

  • Coordinate smoke tests and rollback plans when needed.

Database Administrator (DBA)
  • Collaborate with architects and developers to review or improve database schema design.

  • Normalize data where needed while keeping performance in mind.

  • Ensure schema changes follow version control (e.g., Liquibase/Flyway).

  • Install, configure, and maintain database servers (e.g., PostgreSQL, MySQL).

  • Monitor database health, uptime, replication status, and query performance.

  • Set up replication, high availability, and failover strategies.

  • Implement user access controls and role-based permissions.

  • Apply database encryption at rest and in transit.

  • Monitor and audit database access logs, especially for PII/PHI compliance.

  • Analyze slow queries and tune indexes, joins, and execution plans.

  • Recommend changes in code or schema to reduce load on the DB.

  • Use monitoring tools (e.g., pgAdmin, AWS CloudWatch, Datadog) to track query latency and resource usage.

  • Configure automated and manual backups with clear retention policies.

  • Regularly test restore procedures to validate data integrity and RTO/RPO goals.

  • Maintain runbooks for recovery from database failure or corruption.

  • Set up and maintain dev/staging DBs with sanitized or obfuscated data for testing.

  • Help QA and Dev teams debug data-related issues.

  • Manage database versioning across environments.

  • Track data growth trends and recommend storage capacity upgrades.

  • Archive or purge stale data as per data retention policies.

  • Plan for horizontal or vertical scaling if usage increases.

  • Help developers simulate load-heavy queries or bulk data scenarios.

  • Monitor DB behavior during load tests and advise improvements.

  • Maintain clear SOPs for backups, migrations, role management, and restores.

  • Automate routine tasks using scripts or tools (e.g., cron jobs, AWS Lambda).

  • Document schema structure for devs and BAs using tools like dbdiagram.io or ERD generators.

  • Work with:

    • Developers to guide efficient queries.

    • QA to seed test data.

    • Product to assess impact of large schema changes.

      • DevOps to fine-tune DB monitoring, backups, and infrastructure-as-code (IaC) setups.

IT and DevOps Engineer
  • Provision and manage infrastructure (on-premise or cloud, e.g., AWS, GCP, Azure) for both staging and production environments.

  • Maintain compute, storage, and networking resources to ensure scalability, high availability, and fault tolerance.

  • Automate infrastructure provisioning using Infrastructure-as-Code (IaC) tools like Terraform, CloudFormation, or Ansible.

  • Ensure proper management of cloud resources (e.g., EC2, RDS, S3) with optimal cost efficiency and security.

  • Set up and maintain CI/CD pipelines for smooth, automated code deployment.

  • Integrate tools like Jenkins, GitHub Actions, CircleCI, or GitLab CI for testing, building, and deploying code.

  • Ensure pipelines are secure, efficient, and handle all necessary steps, from code commit to production deployment.

  • Monitor deployment success, rollback processes, and integrate feature flags for seamless releases.

  • Work closely with security teams to implement best practices for system hardening, including firewall configurations, encryption, and identity access management (IAM).

  • Audit infrastructure regularly for vulnerabilities and ensure compliance with healthcare standards such as HIPAA or GDPR.

  • Manage secret management solutions (e.g., HashiCorp Vault, AWS Secrets Manager) to keep sensitive information secure.

  • Implement and maintain secure access to systems (e.g., SSH key management, VPNs).

  • Set up monitoring and alerting using tools like Prometheus, Grafana, Datadog, or AWS CloudWatch to ensure high availability and proactive issue resolution.

  • Implement logging solutions, integrating ELK stack (Elasticsearch, Logstash, Kibana) or Splunk, to collect, analyze, and visualize logs for troubleshooting and performance monitoring.

  • Set thresholds for critical metrics such as CPU usage, memory consumption, response times, and error rates, and configure alerts for abnormal behaviors.

  • Automate manual tasks and repetitive processes using scripting languages like Bash, Python, or PowerShell.

  • Develop automated backup scripts, data migration routines, and log aggregation tools.

  • Ensure that manual interventions are minimized and failures are automatically addressed.

  • Implement disaster recovery plans (DRP) and backup solutions with clear RPO (Recovery Point Objective) and RTO (Recovery Time Objective).

  • Set up multi-region replication and load balancing to ensure business continuity in case of outages.

  • Regularly test backup and recovery procedures to ensure they meet SLAs.

  • Regularly patch and update servers, operating systems, and third-party software to ensure security and stability.

  • Optimize performance of databases, applications, and infrastructure by analyzing load patterns and implementing relevant changes.

  • Keep track of system resource utilization, and recommend scaling decisions (vertical and horizontal scaling).

  • Collaborate with developers to ensure that infrastructure and environment configurations match the codebase needs.

  • Help developers troubleshoot environment-related issues, such as network configurations, database connections, or deployment failures.

  • Work with the development team to set up development and staging environments that closely resemble production.

  • Maintain documentation for all infrastructure, automation scripts, and deployment processes.

  • Provide clear instructions for disaster recovery, backup restoration, and troubleshooting common system issues.

  • Share knowledge with other team members on emerging DevOps practices, tools, and trends.

  • Coordinate changes to production environments, ensuring smooth rollouts of new features and bug fixes.
  • Maintain rollback strategies and ensure proper testing for all changes before live deployments.

4. Development Workflow

a. Agile Framework

🗓️ 2-Week Sprints with Backlog Grooming

🧑‍💻 Daily Standups

📅 Sprint Planning

🏃‍♂️ Ticket Movement

🔄 Sprint Retrospectives


b. Git Branching 

🌳 Branching Strategy

🔀 Merging Process

⚙️ Hotfixes

c. Pull Request and Code Review

i. Pull Request Process

Step 1: Creating the Pull Request

Step 2: Assign Reviewers

Step 3: Automated Checks

ii. Code Review Guidelines

Each repository type (Angular, Java, Kotlin) has slightly different focuses based on the framework, language, and best practices. Below are specific code review areas for each.

For Angular Repositories:

  1. Code Structure & Readability:

  2. Template & Styling:

  3. State Management:

  4. Error Handling:

  5. Testing:

  6. Performance:

For Java (Spring Boot) Repositories:

  1. Code Structure & Readability:

  2. Dependency Injection & Spring Annotations:

  3. Security:

  4. Error Handling:

  5. Database & ORM (JPA/Hibernate):

  6. Testing:

  7. Performance:

For Kotlin Repositories:

  1. Code Structure & Readability:

  2. Use of Kotlin Features:

  3. Concurrency & Coroutines:

  4. Error Handling:

  5. Testing:

  6. Performance:

iii. Final Approval and Merging

4. Security & Compliance

In AMRIT, security and compliance are paramount, especially because the platform deals with sensitive health information and Personally Identifiable Information (PII). The team must follow rigorous standards and best practices to ensure that data is handled securely and in compliance with relevant regulations (e.g. DPDP). Below are the key aspects that should be practiced:

a. Secure Engineering Practices

Secure Coding Guidelines

Code Reviews for Security

Secure Dependencies Management

b. Health Information & PII (Personally Identifiable Information)

Since AMRIT handles health information and Personally Identifiable Information (PII), it’s crucial that all team members follow the appropriate protocols to protect this sensitive data and maintain compliance with laws and regulations.

Data Classification and Segmentation

Data Retention and Minimization

Access Control for Sensitive Data

Data Masking and Anonymization

Regulatory Compliance

Training and Awareness

c. Regular Security Audits and Penetration Testing

5. Quality Assurance

In AMRIT, Quality Assurance (QA) plays a crucial role in ensuring the reliability, security, and functionality of the platform. The QA process must be meticulously integrated into the Software Development Life Cycle (SDLC) to maintain high-quality standards for the system and deliver a flawless product to end-users.

a. QA Process Overview

The QA process ensures that the product meets the defined quality standards and is free of defects. This process is integrated throughout the SDLC, from requirement gathering to final deployment, and involves:

b. Types of Testing to be Performed

Unit Testing

Integration Testing

System Testing

Regression Testing

Performance Testing

Security Testing

User Acceptance Testing (UAT)

c. Test Strategy and Plan

Each phase of testing should be planned and executed according to a Test Strategy and Test Plan to ensure that testing aligns with the project goals.

Test Strategy:

Test Plan:

d. Test Automation

Automating repetitive and critical tests helps increase test coverage, reduce testing time, and ensure consistency. Key points to consider for automation:

e. Defect Management

Defect management is crucial to identify, track, and resolve defects efficiently.

Defect Lifecycle:

Severity and Priority Levels:

f. Continuous Testing and Quality Metrics

Test Coverage:

Test Metrics:

g. Reporting and Communication

h. Post-Release Testing and Monitoring

After the release to production, QA should continue to monitor the application for any issues that arise in real-world use.


6. Release Management

The Release Management process ensures that the deployment of new features, bug fixes, and updates to the AMRIT platform is smooth, controlled, and efficient. This section covers key aspects such as updating JIRA releases, informing support teams, build verification testing, semantic versioning, and ownership of the release process.

a. JIRA Releases Update

JIRA is the central tool for tracking the progress of features, bugs, and enhancements. Properly updating the release versions in JIRA is critical for maintaining visibility, traceability, and clear communication with stakeholders.

Updating JIRA Releases:

b. Informing L1 Support

The L1 Support team must be informed about upcoming releases to prepare for potential issues, monitor the deployed features, and respond to customer queries effectively.

Steps to Inform L1 Support:

c. Build Verification Testing (BVT)

Build Verification Testing (BVT) is a crucial step in ensuring the integrity and stability of the application after each deployment.

BVT Process:

d. Semantic Versioning

Semantic Versioning (SemVer) is a versioning scheme that aims to convey meaning about the underlying changes in a release. It helps manage dependencies and compatibility between systems, ensuring that the release process is transparent and predictable.

Versioning Format:

Semantic Versioning uses the format MAJOR.MINOR.PATCH:

Versioning Strategy:

e. Ownership of the Release Process

Clear ownership of the release process ensures accountability and a smooth transition from development to production.

Roles and Responsibilities:

f. Post-Release Monitoring and Support

Once the release is live in production, continuous monitoring is necessary to ensure the system performs as expected.

7. Third-Party Components

AMRIT leverages various third-party libraries, APIs, tools, and SDKs across its frontend, backend, and infrastructure layers. Proper governance around their use ensures security, license compliance, performance, and long-term maintainability.

a. Evaluation Before Adoption

Before incorporating any third-party component into the AMRIT platform:

b. Approval Process

c. Usage Guidelines

d. Maintenance and Updates

e. Monitoring & Risk Management

f. Third-Party APIs

For any external APIs (e.g., SMS gateways, identity providers, health registries):

g. Logging and Telemetry

h. Offboarding/Deprecation

8. Incident Response

This section outlines the workflow for managing incidents raised from the field, operations, and support teams, ensuring timely resolution and accountability. Given AMRIT's deployment in health systems, responsiveness to field issues is critical for maintaining service continuity and trust.

a. Sources of Incident Tickets

Incidents can be raised from:

All issues are initially routed through the JIRA Service Desk (Support Portal).

b. Initial Triage (L1 & Ops)

If resolvable, L1 handles the issue directly (e.g., config corrections, user guidance).

c. Escalation to L2 Support

If L1 is unable to resolve the ticket:

If L2 confirms a code-level or system-level issue, the ticket is moved to the AMM JIRA board for engineering attention.

d. Ticket Handoff to Engineering

e. Engineering Resolution

Once resolved:

f. Communication Protocols

Communication may happen via comments on the JIRA service desk ticket.

g. Documentation and Learnings

h. Responsibility Matrix

RoleResponsibility
L1 Support/OpsFirst triage, check known issues, basic support
L2 SupportTechnical investigation, escalation to AMM
EngineeringRoot cause analysis, fix, QA, deployment
QABuild verification, fix validation
Release ManagerConfirm fix deployment and update JIRA
Scrum Master/POSprint-level prioritization and communication

i. RCA Requirement

All bugs or incidents escalated from support (L2 or Service Desk) must include an RCA before the ticket is closed. RCA is required regardless of severity (P1–P4), although P1/P2 issues demand deeper analysis and documentation. RCA should be added to the JIRA ticket as a structured comment or as a field in the issue template.

The following format is recommended for consistency:

RCA is owned by the developer who fixed the issue, with help from:

RCA Review:

Recurring RCAs or patterns should be reviewed in:

RCA Do’s and Don’ts

✅ Do:

❌ Don’t: