From 644fda784a3c3dbc3cfa06665cc6243d4cbf888d Mon Sep 17 00:00:00 2001 From: varch Date: Fri, 5 Jun 2026 14:16:57 +0700 Subject: [PATCH] docs: diagram flow and make iso flow --- docs/diagrams/diagram.png | Bin 0 -> 10032 bytes docs/diagrams/diagram.svg | 1 + docs/diagrams/diagram.txt | 32 ++++++++++++++++++++ docs/diagrams/make-iso-flow.puml | 27 +++++++++++++++++ docs/flow-make-iso.md | 50 +++++++++++++++++++++++++++++++ 5 files changed, 110 insertions(+) create mode 100644 docs/diagrams/diagram.png create mode 100644 docs/diagrams/diagram.svg create mode 100644 docs/diagrams/diagram.txt create mode 100644 docs/diagrams/make-iso-flow.puml create mode 100644 docs/flow-make-iso.md diff --git a/docs/diagrams/diagram.png b/docs/diagrams/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..737a4d85e43974af33934c9667c8fc6218fb52f9 GIT binary patch literal 10032 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 VerifikasiDICOM ISO APIPACS ServerISO BuilderUserHISv3 VerifikasiDICOM ISO APIPACS ServerISO BuilderClick "Make ISO"Request ISO by accession numberFind and retrieve DICOM studyReturn DICOM filesBuild ISO from DICOM filesISO file readyReturn ISO downloadUser receives ISO file \ No newline at end of file diff --git a/docs/diagrams/diagram.txt b/docs/diagrams/diagram.txt new file mode 100644 index 0000000..e73fb70 --- /dev/null +++ b/docs/diagrams/diagram.txt @@ -0,0 +1,32 @@ + ┌─┐ + ║"│ + └┬┘ + ┌┼┐ + │ ┌────────────────┐ ┌─────────────┐ ┌───────────┐ ┌───────────┐ + ┌┴┐ │HISv3 Verifikasi│ │DICOM ISO API│ │PACS Server│ │ISO Builder│ + User └────────┬───────┘ └──────┬──────┘ └─────┬─────┘ └─────┬─────┘ + │ Click "Make ISO" │ │ │ │ + │──────────────────────>│ │ │ │ + │ │ │ │ │ + │ │Request ISO by accession number │ │ │ + │ │───────────────────────────────>│ │ │ + │ │ │ │ │ + │ │ │Find and retrieve DICOM study │ │ + │ │ │─────────────────────────────>│ │ + │ │ │ │ │ + │ │ │ Return DICOM files │ │ + │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ + │ │ │ │ │ + │ │ │ Build ISO from DICOM files │ + │ │ │────────────────────────────────────────────────────>│ + │ │ │ │ │ + │ │ │ ISO file ready │ + │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ + │ │ │ │ │ + │ │ Return ISO download │ │ │ + │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ + │ │ │ │ │ + │User receives ISO file │ │ │ │ + │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ + │ │ │ │ │ + │ │ │ │ │ diff --git a/docs/diagrams/make-iso-flow.puml b/docs/diagrams/make-iso-flow.puml new file mode 100644 index 0000000..2a11de3 --- /dev/null +++ b/docs/diagrams/make-iso-flow.puml @@ -0,0 +1,27 @@ +@startuml +hide footbox +skinparam shadowing false +skinparam sequenceMessageAlign center +skinparam responseMessageBelowArrow true +skinparam ArrowColor #444444 +skinparam ParticipantBorderColor #666666 +skinparam ParticipantBackgroundColor #F8F8F8 +skinparam ActorBorderColor #666666 +skinparam ActorBackgroundColor #F8F8F8 + +actor User +participant "HISv3 Verifikasi" as HIS +participant "DICOM ISO API" as API +participant "PACS Server" as PACS +participant "ISO Builder" as ISO + +User -> HIS: Click "Make ISO" +HIS -> API: Request ISO by accession number +API -> PACS: Find and retrieve DICOM study +PACS --> API: Return DICOM files +API -> ISO: Build ISO from DICOM files +ISO --> API: ISO file ready +API --> HIS: Return ISO download +HIS --> User: User receives ISO file + +@enduml diff --git a/docs/flow-make-iso.md b/docs/flow-make-iso.md new file mode 100644 index 0000000..b6cd2c5 --- /dev/null +++ b/docs/flow-make-iso.md @@ -0,0 +1,50 @@ +# Make ISO flow + +This is the main flow when a user creates an ISO from HISv3. + +The diagram below follows the current Go service in this repo. In short, HISv3 asks the DICOM ISO service for one study, the service takes the study from PACS, builds an ISO file, then returns that file back for download. + +## Diagram + +```plantuml +@startuml +hide footbox +skinparam shadowing false +skinparam sequenceMessageAlign center +skinparam responseMessageBelowArrow true +skinparam ArrowColor #444444 +skinparam ParticipantBorderColor #666666 +skinparam ParticipantBackgroundColor #F8F8F8 +skinparam ActorBorderColor #666666 +skinparam ActorBackgroundColor #F8F8F8 + +actor User +participant "HISv3 Verifikasi" as HIS +participant "DICOM ISO API" as API +participant "PACS Server" as PACS +participant "ISO Builder" as ISO + +User -> HIS: Click "Make ISO" +HIS -> API: Request ISO by accession number +API -> PACS: Find and retrieve DICOM study +PACS --> API: Return DICOM files +API -> ISO: Build ISO from DICOM files +ISO --> API: ISO file ready +API --> HIS: Return ISO download +HIS --> User: User receives ISO file + +@enduml +``` + +## Brief explanation + +When the user clicks **Make ISO** in HISv3, HISv3 sends a request to the DICOM ISO service. + +The DICOM ISO service then asks PACS for the study data that matches the accession number. After the study files are received, the service prepares them into one ISO file. + +When the ISO file is ready, the service sends it back as a download response. From the user side, the process stays simple: click **Make ISO**, wait a moment, then download the ISO file. + +## Note + +This is the basic user-facing flow. +It leaves out lower-level details so the diagram stays easy to read.