Retrieving and downlaoding a Zip file from command line

Hi Orthanc developers and users.

I just installed Orthanc and running it through docker and it runs beautifully!

I have a couple of beginner questions:

Question 1: When I click retrieve on a set of images, it is busy with cursor moving "Retrieving images from DICOM modality" but nothing gets retrieved or I dont know where is it getting saved. I have copy-pasted my config file below. As can be seen I was expecting the data to be saved at /home/virendra/Desktop/dicom/SCAN_STORE but I may be mistaken. Can anybody please help me? I am, however, able to download the data as a zip file--hence the data itself is retrieved..I just dont know where it is being saved..

{
  /**
   * General configuration of Orthanc
   **/

  // The logical name of this instance of Orthanc. This one is
  // displayed in Orthanc Explorer and at the URI "/system".
  "Name" : "Orthanc inside Docker",

  // Path to the directory that holds the heavyweight files (i.e. the
  // raw DICOM instances). Backslashes must be either escaped by
  // doubling them, or replaced by forward slashes "/".
  "StorageDirectory" : "/home/virendra/Desktop/dicom/SCAN_STORE",

  // Path to the directory that holds the SQLite index (if unset, the
  // value of StorageDirectory is used). This index could be stored on
  // a RAM-drive or a SSD device for performance reasons.
  "IndexDirectory" : "/home/virendra/Desktop/dicom/SCAN_STORE",

  // Enable the transparent compression of the DICOM instances
  "StorageCompression" : false,

  // Maximum size of the storage in MB (a value of "0" indicates no
  // limit on the storage size)
  "MaximumStorageSize" : 0,

  // Maximum number of patients that can be stored at a given time
  // in the storage (a value of "0" indicates no limit on the number
  // of patients)
  "MaximumPatientCount" : 0,
  
  // List of paths to the custom Lua scripts that are to be loaded
  // into this instance of Orthanc
  "LuaScripts" : [
  ],

  // List of paths to the plugins that are to be loaded into this
  // instance of Orthanc (e.g. "./libPluginTest.so" for Linux, or
  // "./PluginTest.dll" for Windows). These paths can refer to
  // folders, in which case they will be scanned non-recursively to
  // find shared libraries. Backslashes must be either escaped by
  // doubling them, or replaced by forward slashes "/".
  "Plugins" : [
    "/usr/share/orthanc/plugins", "/usr/local/share/orthanc/plugins"
  ],

  /**
   * Configuration of the HTTP server
   **/

  // Enable the HTTP server. If this parameter is set to "false",
  // Orthanc acts as a pure DICOM server. The REST API and Orthanc
  // Explorer will not be available.
  "HttpServerEnabled" : true,

  // HTTP port for the REST services and for the GUI
  "HttpPort" : 8042,

  // When the following option is "true", if an error is encountered
  // while calling the REST API, a JSON message describing the error
  // is put in the HTTP answer. This feature can be disabled if the
  // HTTP client does not properly handles such answers.
  "HttpDescribeErrors" : true,

  // Enable HTTP compression to improve network bandwidth utilization,
  // at the expense of more computations on the server. Orthanc
  // supports the "gzip" and "deflate" HTTP encodings.
  "HttpCompressionEnabled" : true,

  /**
   * Configuration of the DICOM server
   **/

  // Enable the DICOM server. If this parameter is set to "false",
  // Orthanc acts as a pure REST server. It will not be possible to
  // receive files or to do query/retrieve through the DICOM protocol.
  "DicomServerEnabled" : true,

  // The DICOM Application Entity Title
  "DicomAet" : "NEUROIMAGING",

  // Check whether the called AET corresponds during a DICOM request
  "DicomCheckCalledAet" : true,

  // The DICOM port
  "DicomPort" : 4054,

  // The default encoding that is assumed for DICOM files without
  // "SpecificCharacterSet" DICOM tag, and that is used when answering
  // C-Find requests (including worklists). The allowed values are
  // "Ascii", "Utf8", "Latin1", "Latin2", "Latin3", "Latin4",
  // "Latin5", "Cyrillic", "Windows1251", "Arabic", "Greek", "Hebrew",
  // "Thai", "Japanese", and "Chinese".
  "DefaultEncoding" : "Latin1",

  // The transfer syntaxes that are accepted by Orthanc C-Store SCP
  "DeflatedTransferSyntaxAccepted" : true,
  "JpegTransferSyntaxAccepted" : true,
  "Jpeg2000TransferSyntaxAccepted" : true,
  "JpegLosslessTransferSyntaxAccepted" : true,
  "JpipTransferSyntaxAccepted" : true,
  "Mpeg2TransferSyntaxAccepted" : true,
  "RleTransferSyntaxAccepted" : true,

  // Whether Orthanc accepts to act as C-Store SCP for unknown storage
  // SOP classes (aka. "promiscuous mode")
  "UnknownSopClassAccepted" : false,

  // Set the timeout (in seconds) after which the DICOM associations
  // are closed by the Orthanc SCP (server) if no further DIMSE
  // command is received from the SCU (client).
  "DicomScpTimeout" : 30,

  /**
   * Security-related options for the HTTP server
   **/

  // Whether remote hosts can connect to the HTTP server
  "RemoteAccessAllowed" : true,

  // Whether or not SSL is enabled
  "SslEnabled" : false,

  // Path to the SSL certificate in the PEM format (meaningful only if
  // SSL is enabled)
  "SslCertificate" : "certificate.pem",

  // Whether or not the password protection is enabled
  "AuthenticationEnabled" : true,

  // The list of the registered users. Because Orthanc uses HTTP
  // Basic Authentication, the passwords are stored as plain text.
  "RegisteredUsers" : {
    "orthanc" : "orthanc"
    // "alice" : "alicePassword"
  },

  /**
   * Network topology
   **/

  // The list of the known DICOM modalities
  "DicomModalities" : {
  "SYRASCANNER" : [ "AN_MEDCOMNT204", "10.148.93.17", 104 ],
  "AGFA1" : [ "RADAGC1IDC", "10.65.226.99", 11112 ],
  "AGFA2" : [ "RADAGC2IDC", "10.88.226.99", 11112 ]

    /**
     * Uncommenting the following line would enable Orthanc to
     * connect to an instance of the "storescp" open-source DICOM
     * store (shipped in the DCMTK distribution) started by the
     * command line "storescp 2000".
     **/
    // "sample" : [ "STORESCP", "127.0.0.1", 2000 ]

    /**
     * A fourth parameter is available to enable patches for a
     * specific PACS manufacturer. The allowed values are currently
     * "Generic" (default value), "StoreScp" (storescp tool from
     * DCMTK), "ClearCanvas", "MedInria", "Dcm4Chee", "SyngoVia",
     * "AgfaImpax" (Agfa IMPAX), "EFilm2" (eFilm version 2), and
     * "Vitrea". This parameter is case-sensitive.
     **/
    // "clearcanvas" : [ "CLEARCANVAS", "192.168.1.1", 104, "ClearCanvas" ]
  },

  // The timeout (in seconds) after which the DICOM associations are
  // considered as closed by the Orthanc SCU (client) if the remote
  // DICOM SCP (server) does not answer.
  "DicomScuTimeout" : 10,

  // The list of the known Orthanc peers
  "OrthancPeers" : {
    /**
     * Each line gives the base URL of an Orthanc peer, possibly
     * followed by the username/password pair (if the password
     * protection is enabled on the peer).
     **/
    // "peer" : [ "http://127.0.0.1:8043/", "alice", "alicePassword" ]
    // "peer2" : [ "http://127.0.0.1:8044/" ]

    /**
     * This is another, more advanced format to define Orthanc
     * peers. It notably allows to specify a HTTPS client certificate
     * in the PEM format (as in the "--cert" option of curl), or to
     * enable PKCS#11 authentication for smart cards.
     **/
    // "peer" : {
    // "Url" : "http://127.0.0.1:8043/",
    // "Username" : "alice",
    // "Password" : "alicePassword",
    // "CertificateFile" : "client.crt",
    // "CertificateKeyFile" : "client.key",
    // "CertificateKeyPassword" : "certpass",
    // "Pkcs11" : false
    // }
  },

  // Parameters of the HTTP proxy to be used by Orthanc. If set to the
  // empty string, no HTTP proxy is used. For instance:
  // "HttpProxy" : "192.168.0.1:3128"
  // "HttpProxy" : "proxyUser:proxyPassword@192.168.0.1:3128"
  "HttpProxy" : "",

  // Set the timeout for HTTP requests issued by Orthanc (in seconds).
  "HttpTimeout" : 10,

  // Enable the verification of the peers during HTTPS requests. This
  // option must be set to "false" if using self-signed certificates.
  // Pay attention that setting this option to "false" results in
  // security risks!
  // Reference: http://curl.haxx.se/docs/sslcerts.html
  "HttpsVerifyPeers" : true,

  // Path to the CA (certification authority) certificates to validate
  // peers in HTTPS requests. From curl documentation ("--cacert"
  // option): "Tells curl to use the specified certificate file to
  // verify the peers. The file may contain multiple CA
  // certificates. The certificate(s) must be in PEM format."
  "HttpsCACertificates" : "",

  /**
   * Advanced options
   **/

  // Dictionary of symbolic names for the user-defined metadata. Each
  // entry must map an unique string to an unique number between 1024
  // and 65535. Reserved values:
  // - The Orthanc whole-slide imaging plugin uses metadata 4200
  "UserMetadata" : {
    // "Sample" : 1024
  },

  // Dictionary of symbolic names for the user-defined types of
  // attached files. Each entry must map an unique string to an unique
  // number between 1024 and 65535. Optionally, a second argument can
  // provided to specify a MIME content type for the attachment.
  "UserContentType" : {
    // "sample" : 1024
    // "sample2" : [ 1025, "application/pdf" ]
  },

  // Number of seconds without receiving any instance before a
  // patient, a study or a series is considered as stable.
  "StableAge" : 60,

  // By default, Orthanc compares AET (Application Entity Titles) in a
  // case-insensitive way. Setting this option to "true" will enable
  // case-sensitive matching.
  "StrictAetComparison" : false,

  // When the following option is "true", the MD5 of the DICOM files
  // will be computed and stored in the Orthanc database. This
  // information can be used to detect disk corruption, at the price
  // of a small performance overhead.
  "StoreMD5ForAttachments" : true,

  // The maximum number of results for a single C-FIND request at the
  // Patient, Study or Series level. Setting this option to "0" means
  // no limit.
  "LimitFindResults" : 0,

  // The maximum number of results for a single C-FIND request at the
  // Instance level. Setting this option to "0" means no limit.
  "LimitFindInstances" : 0,

  // The maximum number of active jobs in the Orthanc scheduler. When
  // this limit is reached, the addition of new jobs is blocked until
  // some job finishes.
  "LimitJobs" : 10,

  // If this option is set to "false", Orthanc will not log the
  // resources that are exported to other DICOM modalities of Orthanc
  // peers in the URI "/exports". This is useful to prevent the index
  // to grow indefinitely in auto-routing tasks.
  "LogExportedResources" : true,

  // Enable or disable HTTP Keep-Alive (deprecated). Set this option
  // to "true" only in the case of high HTTP loads.
  "KeepAlive" : false,

  // If this option is set to "false", Orthanc will run in index-only
  // mode. The DICOM files will not be stored on the drive. Note that
  // this option might prevent the upgrade to newer versions of Orthanc.
  "StoreDicom" : true,

  // DICOM associations are kept open as long as new DICOM commands
  // are issued. This option sets the number of seconds of inactivity
  // to wait before automatically closing a DICOM association. If set
  // to 0, the connection is closed immediately.
  "DicomAssociationCloseDelay" : 5,

  // Maximum number of query/retrieve DICOM requests that are
  // maintained by Orthanc. The least recently used requests get
  // deleted as new requests are issued.
  "QueryRetrieveSize" : 10,

  // When handling a C-Find SCP request, setting this flag to "true"
  // will enable case-sensitive match for PN value representation
  // (such as PatientName). By default, the search is
  // case-insensitive, which does not follow the DICOM standard.
  "CaseSensitivePN" : false,

  // Configure PKCS#11 to use hardware security modules (HSM) and
  // smart cards when carrying on HTTPS client authentication.
  /**
     "Pkcs11" : {
       "Module" : "/usr/local/lib/libbeidpkcs11.so",
       "Module" : "C:/Windows/System32/beidpkcs11.dll",
       "Pin" : "1234",
       "Verbose" : true
     }
   **/
  
  // If set to "true", Orthanc will still handle "SOP Classes in
  // Study" (0008,0062) in C-FIND requests, even if the "SOP Class
  // UID" metadata is not available in the database (which is the case
  // if the DB was previously used by Orthanc <= 1.1.0). This option
  // is turned off by default, as it requires intensive accesses to
  // the hard drive.
  "AllowFindSopClassesInStudy" : false,

  // If set to "false", Orthanc will not load its default dictionary
  // of private tags. This might be necessary if you cannot import a
  // DICOM file encoded using the Implicit VR Endian transfer syntax,
  // and containing private tags: Such an import error might stem from
  // a bad dictionary. You can still list your private tags of
  // interest in the "Dictionary" configuration option below.
  "LoadPrivateDictionary" : true,

  // Register a new tag in the dictionary of DICOM tags that are known
  // to Orthanc. Each line must contain the tag (formatted as 2
  // hexadecimal numbers), the value representation (2 upcase
  // characters), a nickname for the tag, possibly the minimum
  // multiplicity (> 0 with defaults to 1), possibly the maximum
  // multiplicity (0 means arbitrary multiplicity, defaults to 1), and
  // possibly the Private Creator (for private tags).
  "Dictionary" : {
    // "0014,1020" : [ "DA", "ValidationExpiryDate", 1, 1 ]
    // "00e1,10c2" : [ "UI", "PET-CT Multi Modality Name", 1, 1, "ELSCINT1" ]
    // "7053,1003" : [ "ST", "Original Image Filename", 1, 1, "Philips PET Private Group" ]
    // "2001,5f" : [ "SQ", "StackSequence", 1, 1, "Philips Imaging DD 001" ]
  }
}

Question 2: I want to retrieve quite a few subjects through their patient ID and I was hoping to write a matlab/shell script to do so? Can anyone please guide me with a sample command as to how should I retrieve the entire dicom directory as a zip file having ID "1234" from a PACS server located at xx.xx.xx.1045 with AE title "TEMP" on port 11112. My AE title is "NEUROIMAGING" running on port 4054 located at xx.xx.xx.9999

Question 3: How do I retrieve all the instances os the patient 1234 as there are more than 1 scans and I want to retrieve all the scans from a single command line?

Thank you for your help

Regards

Virendra

Hello,

I just installed Orthanc and running it through docker and it runs
beautifully!

I have a couple of beginner questions:

Question 1: When I click retrieve on a set of images, it is busy with
cursor moving "Retrieving images from DICOM modality" but nothing
gets retrieved or I dont know where is it getting saved. I have copy-
pasted my config file below. As can be seen I was expecting the data
to be saved at /home/virendra/Desktop/dicom/SCAN_STORE but I may be
mistaken. Can anybody please help me? I am, however, able to download
the data as a zip file--hence the data itself is retrieved..I just
dont know where it is being saved..

You mentioned running with Docker but you're targeting a home directory
to a specific user inside the container, which strikes me as a little
odd. Are you sure you understand how the filesystem is isolated? If
you're having any doubts, then I encourage you to leave the storage
directory to its expected location in the container
(/var/lib/orthanc/db) and bindmount it to the directory of your choice
on your host:

docker run \
--volume=/home/virendra/Desktop/dicom/SCAN_STORE:/var/lib/orthanc/db \
...

Please note that this storage directory is not intended to be access or
manipulated directly[1]. Always use the HTTP API, perhaps through the
Orthanc Explorer or another application. If you do so, then you will
not need to bindmount to an arbitrary directory on the host, although
it is still a good idea to declare a named Docker volume to manage it.

[1] How does Orthanc store its database? — Orthanc Book documentation
ss

Question 2: I want to retrieve quite a few subjects through their
patient ID and I was hoping to write a matlab/shell script to do so?
Can anyone please guide me with a sample command as to how should I
retrieve the entire dicom directory as a zip file having ID "1234"
from a PACS server located at xx.xx.xx.1045 with AE title "TEMP" on
port 11112. My AE title is "NEUROIMAGING" running on port 4054
located at xx.xx.xx.9999

You can use an HTTP client in matlab or a tool like curl in a shell to
drive Orthanc to perform a Query/Retrieve operation (DICOM C-FIND and
C-STORE).

See an example of a query in [2] and an example of a retrieve in [3].

[2] https://bitbucket.org/sjodogne/orthanc-tests/src/7530eb50c3c4ab7531
3787992bb84955600017bc/Tests/Tests.py?at=default&fileviewer=file-view-
default#Tests.py-1550
[3] https://bitbucket.org/sjodogne/orthanc-tests/src/7530eb50c3c4ab7531
3787992bb84955600017bc/Tests/Tests.py?at=default&fileviewer=file-view-
default#Tests.py-1584

This is in Python, but the HTTP REST API is universal.

Usually you don't need to extract the data out of Orthanc much, instead
most workflows integrate via the HTTP REST API and Orthanc abstracts
away DICOM storage. If you must retrieve an archive however, you may
use the /archive sub-resource of the corresponding resource.

For example, for a patient with ID `abc123` you would GET
/patients/abc123/archive. Orthanc will create a ZIP file on-the-fly and
send it as the response of that request. Again you can use any HTTP
client for matlab or a tool like curl for shells.

Question 3: How do I retrieve all the instances os the patient 1234
as there are more than 1 scans and I want to retrieve all the scans
from a single command line?

/patients/{id} has a JSON representation listing study IDs for that
patient. You can follow the trail similarly with /studies/{id},
/series/{id} and finally /instances/{id}.

Depending on what you mean by "retrieve" you can generate archives as
explained above or use the /file subresource of an instance
(/instances/{id}/file} to retrieve the raw data of an individual
instance.

Hope this helps,

Thank you for your reply, Thibault.

I apologize but I dont clearly understand. I think what I am after are the commands that GUI uses…I will greatly appreciate a tutorial page where these commands are explained in detail or if you could write it down step by step, if you have to do the same, hypothetically. In my case I want to archive the data locally as I need to perform some other stuff on that dataset.

Eg:

a) In Orthanc GUI, I select query and retrieve, then select a “DICOM server” , then select “Patient ID” and then enter “value for this field” with “Study Date” as “any date” and Modalities “MR” and then click “Search Studies” …How do I do this on a command line using HTTP REST API

Specific example: Lets assume DICOM server name is AG, I select “Patient ID” radio button, then I enter “12345” in the “value” with study date as “any date” and Modalities “MR”. what is the command line to search for this using curl?

b) Now lets assume there are 3 instances of patient “12345”, I want to retrieve/download all of these instances and save on a local hard disk as a zip. What is the command line to perform this?

Another unrelated issue is when I try to “download” a very big dataset >2GB, it complains about “low memory space” and I noticed that /var/lib/…/…/overlays occupy 86% of my root space…Is there a way that all this is directed to an external hard disk so that I have space to do other tasks?

I apologize if these questions are too basic but I am not too familiar with APIs

Thank you for your help.

Regards

Virendra

Thank you for your reply, Thibault.

I apologize but I dont clearly understand. I think what I am after are the commands that GUI uses…I will greatly appreciate a tutorial page where these commands are explained in detail or if you could write it down step by step, if you have to do the same, hypothetically. In my case I want to archive the data locally as I need to perform some other stuff on that dataset.

Eg:

a) In Orthanc GUI, I select query and retrieve, then select a “DICOM server” , then select “Patient ID” and then enter “value for this field” with “Study Date” as “any date” and Modalities “MR” and then click “Search Studies” …How do I do this on a command line using HTTP REST API

Specific example: Lets assume DICOM server name is AG, I select “Patient ID” radio button, then I enter “12345” in the “value” with study date as “any date” and Modalities “MR”. what is the command line to search for this using curl?

b) Now lets assume there are 3 instances of patient “12345”, I want to retrieve/download all of these instances and save on a local hard disk as a zip. What is the command line to perform this?

Another unrelated issue is when I try to “download” a very big dataset >2GB, it complains about “low memory space” and I noticed that /var/lib/…/…/overlays occupy 86% of my root space…Is there a way that all this is directed to an external hard disk so that I have space to do other tasks?

I apologize if these questions are too basic but I am not too familiar with APIs

Thank you for your help.

Regards

Virendra

I apologize but I dont clearly understand. I think what I am after
are the commands that GUI uses...I will greatly appreciate a tutorial
page where these commands are explained in detail or if you could
write it down step by step, if you have to do the same,
hypothetically. In my case I want to archive the data locally as I
need to perform some other stuff on that dataset.

Before going any further, you mentioned you could download the archives
from the Orthanc Explorer. If that works for you then you should
definitely use that.

If you need to automate things then indeed you'd be replicating what
the Orthanc Explorer does:

a) In Orthanc GUI, I select query and retrieve, then select a "DICOM
server" , then select "Patient ID" and then enter "value for this
field" with "Study Date" as "any date" and Modalities "MR" and then
click "Search Studies" ...How do I do this on a command line using
HTTP REST API

Specific example: Lets assume DICOM server name is AG, I select
"Patient ID" radio button, then I enter "12345" in the "value" with
study date as "any date" and Modalities "MR". what is the command
line to search for this using curl?

I've referenced Python test cases which show exactly how to do this in
my previous message, you can reproduce the same requests with curl of
course.

However, I heavily encourage you to actually open up developer tool
panels on your favorite browser to see what requests the Orthanc
Explorer generates when performing those operations. You'll get an
instant feel for what's happening and generally you can reproduce
everything rather intuitively. I believe this is what most people do
when learning the API.

b) Now lets assume there are 3 instances of patient "12345", I want
to retrieve/download all of these instances and save on a local hard
disk as a zip. What is the command line to perform this?

As I explained in my previous message, you're looking for the archive
subresource of the patient resource:

GET /patients/{id}/archive

Another unrelated issue is when I try to "download" a very big
dataset >2GB, it complains about "low memory space" and I noticed
that /var/lib/../../overlays occupy 86% of my root space..Is there a
way that all this is directed to an external hard disk so that I have
space to do other tasks?

Since you're not targeting a bindmounted directory for Orthanc Storage
I'm positive all the data will be stored on the topmost R/W layer of
the container. How that is implemented depends on the Docker image
storage backend; this sounds like a version of overlayfs or aufs which
can indeed share space with a larger filesystem (in this case your root
filesystem).

I encourage you to follow the guidelines I outlined in my previous
message and always use Docker volumes for application data. You really
need it for other reasons as well; currently you would lose all the
data in Orthanc whenever you re-create the container.

I apologize if these questions are too basic but I am not too
familiar with APIs

That's OK, the APIs really need more complete reference documentation.
If you're feeling like writing some notes when discovering its
mechanisms, feel free to share them with the community!

Regarding the use of Docker however, I must stress that the technology
involves enough idiosyncrasies that you really want to either learn
more about it separately or use most defaults provided in the base
image (e.g. don't change ports, storage paths, etc, unless you know the
impact). Depending on your operating system there could also be other
options you might more comfortable with.

I hope this helps,

Dear Virendra,

I am a bit lost in this thread, as it grows very large.

Going back to your original questions:

Question 1: When I click retrieve on a set of images, it is busy with cursor moving “Retrieving images from DICOM modality” but nothing gets retrieved or I dont know where is it getting saved. I have copy-pasted my config file below. As can be seen I was expecting the data to be saved at /home/virendra/Desktop/dicom/SCAN_STORE but I may be mistaken. Can anybody please help me? I am, however, able to download the data as a zip file–hence the data itself is retrieved…I just dont know where it is being saved…

There are actually 2 sub-questions in this part:

Regarding the cursor moving endlessly, it might reflect a DICOM port that is blocked either in the remote DICOM modality you are contacting, or the fact that the DICOM port of Orthanc is not properly exposed through the “-p” option of Docker (check out the Orthanc Book). Turn off all of your firewalls, and make sure your remote modality knows about Orthanc.

Question 2: I want to retrieve quite a few subjects through their patient ID and I was hoping to write a matlab/shell script to do so?

Sure, this is also explained in the Orthanc Book:
http://book.orthanc-server.com/faq/matlab.html

http://book.orthanc-server.com/faq/rest-samples.html

Here is a sample command line to lookup for patients given their patient ID through the REST API of Orthanc:

curl http://localhost:8042/tools/find -X POST -d ‘{“Level”:“Patient”,“Query”:{“PatientID”:“*”},“Expand”:true}’

Question 3: How do I retrieve all the instances os the patient 1234 as there are more than 1 scans and I want to retrieve all the scans from a single command line?

Check out the reference of the REST API of Orthanc:

As can be seen in the REST API of Orthanc, you can retrieve a single ZIP file containing all the DICOM instances of a given patient as such:

curl http://localhost:8042/patients/6eeded74-75005003-c3ae9738-d4a06a4f-6beedeb8/archive > patient.zip

Regards,
Sébastien-