error npmlog@6.0.0: The engine "node" is incompatible with this module. Expected
version "^12.13.0 ^14.15.0 >=16". Got "13.14.0"
Now on different machine
Marcel
error npmlog@6.0.0: The engine "node" is incompatible with this module. Expected
version "^12.13.0 ^14.15.0 >=16". Got "13.14.0"
Now on different machine
Marcel
Can you try my sandbox version with npm as well?
Zip in above post
Marcel
Kkkkkk. Update your node to latest LTS.
Your node is ancient
Not available on windows7
Marcel
New ohif reproduces the problem.
getting close:
Great. I'm out for some time. I will test ASAP
I do need an update of your app asap, parts of the source tree are now incompatible.
Thanks
Marcel
I will do
Great to see this progression. Just as an additional feedback for your work, I see the focus is on OHIF by now, but I can see query results in weasis as well. When I try do download the series it shows a thumbnail with a question mark and no image.
This is the log:
16.08.2022 22:05:21.046 *INFO* [AWT-EventQueue-0] org.weasis.dicom.qr.DicomQrFactory: DICOM Q/R is activated
16.08.2022 22:05:27.382 *DEBUG* [QIDO-RS] org.weasis.dicom.qr.RsQuery: QIDO-RS request: http://localhost:3002/api/dico…0200010&limit=10&offset=0
16.08.2022 22:05:27.429 *DEBUG* [QIDO-RS] org.weasis.dicom.qr.RsQuery: QIDO-RS request: http://localhost:3002/api/dico…020000E,00200011,00081190
16.08.2022 22:05:37.280 *DEBUG* [Dicom Q/R task-pool-3-thread-1] org.weasis.dicom.qr.RetrieveTask: QIDO-RS request: http://localhost:3002/api/dico…020000E,00200011,00081190
16.08.2022 22:05:37.312 *DEBUG* [Dicom Q/R task-pool-3-thread-1] org.weasis.dicom.qr.RetrieveTask: QIDO-RS request: http://localhost:3002/api/dico…0080018,00200013,00081190
16.08.2022 22:05:37.343 *WARN* [Dicom Q/R task-pool-3-thread-1] org.weasis.core.api.util.NetworkUtil: http Status 404 - Not Found
16.08.2022 22:05:37.343 *ERROR* [Dicom Q/R task-pool-3-thread-1] org.weasis.dicom.explorer.wado.LoadSeries: Downloading thumbnail with http://localhost:3002/api/dico…mbnail?viewport=256%2C256 org.weasis.core.util.StreamIOException: Not Found
at org.weasis.core.api.util.NetworkUtil.readResponse(NetworkUtil.java:184)
at org.weasis.core.api.util.NetworkUtil.prepareConnection(NetworkUtil.java:157)
at org.weasis.core.api.util.NetworkUtil.getHttpResponse(NetworkUtil.java:80)
16.08.2022 22:05:37.361 *INFO* [Series Downloader-pool-4-thread-1] org.weasis.dicom.explorer.wado.LoadSeries: Downloading series of HEAD EXP2 [1]
16.08.2022 22:05:37.361 *DEBUG* [Series Downloader-pool-4-thread-1] org.weasis.dicom.explorer.wado.LoadSeries: Download DICOM instance http://localhost:3002/api/dico…56913941.892665339.718742 index 0.
16.08.2022 22:05:37.361 *DEBUG* [Series Downloader-pool-4-thread-1] org.weasis.dicom.explorer.wado.LoadSeries: Download DICOM instance http://localhost:3002/api/dico…56913941.892665340.475317 index 1.
16.08.2022 22:05:37.361 *WARN* [Image Downloader-pool-7-thread-1] org.weasis.core.api.util.NetworkUtil: http Status 404 - Not Found
16.08.2022 22:05:37.361 *ERROR* [Image Downloader-pool-7-thread-1] org.weasis.dicom.explorer.wado.LoadSeries: Downloading org.weasis.core.util.StreamIOException: Not Found
at org.weasis.core.api.util.NetworkUtil.readResponse(NetworkUtil.java:184)
at org.weasis.core.api.util.NetworkUtil.prepareConnection(NetworkUtil.java:157)
at org.weasis.core.api.util.NetworkUtil.getHttpResponse(NetworkUtil.java:80)
16.08.2022 22:05:37.361 *WARN* [Image Downloader-pool-8-thread-1] org.weasis.core.api.util.NetworkUtil: http Status 404 - Not Found
16.08.2022 22:05:37.361 *ERROR* [Image Downloader-pool-8-thread-1] org.weasis.dicom.explorer.wado.LoadSeries: Downloading org.weasis.core.util.StreamIOException: Not Found
at org.weasis.core.api.util.NetworkUtil.readResponse(NetworkUtil.java:184)
at org.weasis.core.api.util.NetworkUtil.prepareConnection(NetworkUtil.java:157)
at org.weasis.core.api.util.NetworkUtil.getHttpResponse(NetworkUtil.java:80)
16.08.2022 22:05:37.376 *INFO* [AWT-EventQueue-0] org.weasis.dicom.explorer.DicomExplorer: Add series: 1
16.08.2022 22:05:37.408 *INFO* [AWT-EventQueue-0] org.weasis.dicom.explorer.wado.LoadSeries: *PERF* type:DICOMDIR seriesUID:1.3.46.670589.5.2.10.2156913941.892665339.860724 modality:CT nbImages:0 size:0 time:47 rate:0 errors:2
16.08.2022 22:06:51.921 *INFO* [FelixStartLevel] org.weasis.dicom.qr.DicomQrFactory: DICOM Q/R is deactivated
Hi,
I think weasis is using QIDO retrieve that is not implemented. We switched OHIF to wadouri, can you do the same with weasis?
Not implemented yet in QIDO:
thumbnail
instances/{uid}
Marcel
Everything up to date on Git for the changes in the QIDO interface.
Included - Luiz app runs again
Included - Old version of OHIF that runs
It does not yet run with the latest OHIF
Display MoreHi,
I think weasis is using QIDO retrieve that is not implemented. We switched OHIF to wadouri, can you do the same with weasis?
Not implemented yet in QIDO:
thumbnail
instances/{uid}
Marcel
Hi, Marcel,
A basic beginner doubt.
What means the term "Instance" in dicom. I have used as if it were the dicom image.
For sample. In this text from docs, from wado-rs, it says:
"10.4.1.1 Target Resources
10.4.1.1.1 Instance Resources
Instance Resources (defined in Table 10.4.1-1 are used to retrieve Instances.
Retrieving a Series Instances resource retrieves all the individual Instances contained in the Series. Retrieving a Study Instances resource retrieves all the individual Instances contained in all the Series."
Instance would be any dicom file in the dicom server: image, rtstruct, rtplan, rtdose etc
Marcel
Is these params, level and function of queryfunctions correct to wado-rs, in the code below?
/*-------------------------Retrieve DICOM objects (WADO-RS)--------------------------------
/studies/{study}
-----------------------------------------------------------------------------------------*/
router.get("/rs/studies/:study", async (req, res) => {
const StudyInstanceUID = req.params.study;
const query = url.parse(req.url, true).query;
let params = { QueryRetrieveLevel: "SERIES", StudyInstanceUID };
const tparams = getParams(params, tags, query);
params = JSON.stringify(tparams);
...
const cmd = `--dolua:dofile([[${APIFOLDER}/queryfunctions.lua]]);series([[${CQAE}]],[[${params}]],[[${dicomweb}]])`;
....
});
/*-------------------------Retrieve DICOM objects (WADO-RS)--------------------------------
/studies/{study}/series/{series}
-----------------------------------------------------------------------------------------*/
router.get(
"/rs/studies/:studyInstanceUid/series/:seriesInstanceUid",
async (req, res) => {
const query = url.parse(req.url, true).query;
const StudyInstanceUID = req.params.studyInstanceUid;
const SeriesInstanceUID = req.params.seriesInstanceUid;
let params = {
QueryRetrieveLevel: "IMAGE",
StudyInstanceUID,
SeriesInstanceUID,
SOPInstanceUID,
};
....
const cmd = `--dolua:dofile([[${APIFOLDER}/queryfunctions.lua]]);images([[${CQAE}]],[[${params}]],[[${dicomweb}]])`;
/*-------------------------Retrieve DICOM objects (WADO-RS)--------------------------------
/studies/{study}/series/{series}/instances/{instance}
-----------------------------------------------------------------------------------------*/
router.get(
"/rs/studies/:studyInstanceUid/series/:seriesInstanceUid/instances/:sopInstanceUid",
async (req, res) => {
const query = url.parse(req.url, true).query;
const StudyInstanceUID = req.params.studyInstanceUid;
const SeriesInstanceUID = req.params.seriesInstanceUid;
const SOPInstanceUID = req.params.sopInstanceUid;
let params = {
QueryRetrieveLevel: "IMAGE",
StudyInstanceUID,
SeriesInstanceUID,
SOPInstanceUID,
};
....
const cmd = `--dolua:dofile([[${APIFOLDER}/queryfunctions.lua]]);images([[${CQAE}]],[[${params}]],[[${dicomweb}]])`;
....
);
Hi,
I think you all retrieve them at the IMAGE level. Use dicomget and just pass study, study and series, and study, series and instance in the query object. See test_servercommand.lua for an example of dicomget, it returns an array of DicomObjects. However, pixeldata will not be serialised correctly I expect.
I also think you should use different function names for query and retrieve.
I expect to fix the metadata issue tonight.
Marcel
Luiz based on your sample data these are the metadata items I think that need to be implemented:
{"00080005":"0","00080016":"1","00080018":"1","00080020":"1",
"00080023":"1","00080030":"1","00080033":"1","00080050":"1",
"00080060":"1","00080064":"0","00080090":"1","00100010":"1",
"00100020":"1","00100030":"1","00100040":"1","00180015":"1",
"00181016":"0","00181018":"0","0020000D":"1","0020000E":"1",
"00200010":"1","00200011":"1","00200013":"1","00200020":"0",
"00280002":"1","00280004":"1","00280010":"1","00280011":"1",
"00280100":"0","00280101":"1","00280102":"0","00280103":"0",
"00280106":"0","00280107":"0","7FE00010":"0"
}
or:
"SpecificCharacterSet|SOPClassUID|SOPInstanceUID|StudyDate|ContentDate|StudyTime|ContentTime|AccessionNumber|Modality|ConversionType|ReferringPhysicianName|PatientName|PatientID|PatientBirthDate|PatientSex|BodyPartExamined|SecondaryCaptureDeviceManufacturer|SecondaryCaptureDeviceManufacturerModelName|StudyInstanceUID|SeriesInstanceUID|StudyID|SeriesNumber|InstanceNumber|PatientOrientation|SamplesPerPixel|PhotometricInterpretation|Rows|Columns|BitsAllocated|BitsStored|HighBit|PixelRepresentation|SmallestImagePixelValue|LargestImagePixelValue|PixelData"
Where items with "0" are not in the database and must be read from a sample object. I will write a nice short metadata function tonight.
Marcel
Sorry, but are you talking about wado-rs?
Only to you know, the image with pat id: 0009703828 (HEAD EXP2) from conquest github folder
is not showing in ohif latest version.
I might have misunderstood
post 321 wado-rs
post 322 qido-metadata
the sample image is very old.
Marcel
Don’t have an account yet? Register yourself now and be a part of our community!