Skip to content

Repository files navigation

EMVS Simulation Lab

CI .NET WPF Oracle License: MIT Conventional Commits Release

WPF desktop simulation project for selected EMVS-style pharmaceutical verification workflows.

The application is a local learning and portfolio project. It simulates product master data, product pack data, pack verification, pack state updates, operation history, and database inspection without connecting to a real EMVS or NMVS system.

Project Status

This is a practice and portfolio project focused on WPF, MVVM, workflow simulation, repository abstraction, JSON persistence, optional Oracle persistence, and documentation of enterprise-style integration concepts.

It is not an official EMVS implementation and does not connect to any real pharmaceutical verification system.

Features

  • WPF desktop application
  • MVVM structure with CommunityToolkit.Mvvm
  • Product master data workflow
  • Product pack data workflow
  • Pack verification workflow
  • Pack state update workflow
  • Simulation history
  • Database overview with product, target market, batch, pack, and operation log views
  • JSON persistence as the default local mode
  • Optional Oracle persistence for database-backed testing
  • Automatic Oracle schema initialization when Oracle persistence is enabled
  • SOAP/XML sample messages for learning and documentation
  • Architecture and SOAP overview documentation
  • Automated service and repository tests with xUnit

Tech Stack

  • C#
  • .NET 10
  • WPF
  • MVVM
  • CommunityToolkit.Mvvm
  • Microsoft.Extensions.Hosting
  • JSON file persistence
  • Oracle Managed Data Access
  • SOAP/XML sample documentation
  • xUnit

Persistence Modes

EMVS Simulation Lab supports multiple persistence modes.

JSON Mode

JSON mode is the committed default and works without Oracle.

{
  "Persistence": {
    "Provider": "Json"
  },
  "ConnectionStrings": {
    "Oracle": ""
  }
}

JSON data is stored in the current user's application data folder:

%APPDATA%\EmvsSimulationLab\emvs-data.json

Oracle Mode

Oracle mode is optional and intended for local database-backed testing.

Create a non-committed local override file:

EmvsSimulationLab.App/appsettings.Local.json

Example structure:

{
  "Persistence": {
    "Provider": "Oracle"
  },
  "ConnectionStrings": {
    "Oracle": "<your local Oracle connection string>"
  }
}

Do not commit real Oracle usernames, passwords, hosts, service names, or local connection strings.

When Oracle persistence is enabled, the application creates the required Oracle tables automatically if they do not exist yet. The schema is also included for inspection in:

docs/database/CreateEmvsTables.sql

Run The Application

Restore and build:

dotnet restore .\EmvsSimulationLab.slnx
dotnet build .\EmvsSimulationLab.slnx

Run:

dotnet run --project .\EmvsSimulationLab.App\EmvsSimulationLab.App.csproj

Typical Manual Test Flow

  1. Create Product Master Data.
  2. Create Product Pack Data for the same product.
  3. Open Database Overview and refresh.
  4. Run Pack Verification for the created pack.
  5. Run Pack State Update for the created pack.
  6. Check Simulation History.
  7. Restart the application.
  8. Verify that persisted data and history are still available.

Screenshots

Product Master Data

EMVS Simulation Lab product master data

Pack Verification

EMVS Simulation Lab pack verification

Database Overview

EMVS Simulation Lab database overview

Documentation

Project Structure

emvs-simulation-lab/
|- .github/
|  `- workflows/
|     `- ci.yml
|- docs/
|  |- architecture/
|  |- database/
|  |- samples/
|  `- screenshots/
|- EmvsSimulationLab.App/
|  |- Models/
|  |- Services/
|  |- ViewModels/
|  |- Views/
|  |- App.xaml
|  |- App.xaml.cs
|  |- appsettings.json
|  `- EmvsSimulationLab.App.csproj
|- EmvsSimulationLab.App.Tests/
|- .gitignore
|- README.md
`- EmvsSimulationLab.slnx

Checks

dotnet build .\EmvsSimulationLab.slnx -c Release
dotnet test .\EmvsSimulationLab.slnx -c Release

Recommended public-safety check before committing:

Get-ChildItem -Recurse -File |
  Where-Object { $_.FullName -notmatch '\\bin\\|\\obj\\|\\.vs\\|\\.git\\' } |
  Select-String -Pattern "EMVS_SIM|EmvsSim123|192.168|FREEPDB1|freepdb1|localhost:1521"

Learning Goals

This project was used to practice:

  • WPF desktop UI structure
  • MVVM and dependency injection in a desktop application
  • Repository abstraction for interchangeable persistence providers
  • JSON persistence for local demo usage
  • Oracle-backed persistence and schema initialization
  • EMVS-style workflow modeling
  • SOAP, WSDL, WS-Addressing, and WS-Security concepts
  • Documentation of enterprise-style integration workflows

Simulation Boundaries

  • No real EMVS connection is used.
  • No real NMVS communication is performed.
  • Error codes and workflow responses are simulated.
  • SOAP files are learning-oriented samples, not official EMVS messages.
  • The project is designed for local training and portfolio demonstration.

Commits And Releases

This repository follows Conventional Commits.

  • Releases use tags in the format vX.Y.Z.
  • Release notes should summarize user-visible changes, documentation updates, and validation results.

License

MIT

About

WPF desktop simulation lab for EMVS-style pharmaceutical verification workflows with JSON and optional Oracle persistence.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages