1 | MAGDIR9B ;WOIFO/PMK - Read a DICOM image file ; 12 Oct 2005 8:21 AM
|
---|
2 | ;;3.0;IMAGING;**11,51,50**;26-May-2006
|
---|
3 | ;; +---------------------------------------------------------------+
|
---|
4 | ;; | Property of the US Government. |
|
---|
5 | ;; | No permission to copy or redistribute this software is given. |
|
---|
6 | ;; | Use of unreleased versions of this software requires the user |
|
---|
7 | ;; | to execute a written test agreement with the VistA Imaging |
|
---|
8 | ;; | Development Office of the Department of Veterans Affairs, |
|
---|
9 | ;; | telephone (301) 734-0100. |
|
---|
10 | ;; | |
|
---|
11 | ;; | The Food and Drug Administration classifies this software as |
|
---|
12 | ;; | a medical device. As such, it may not be changed in any way. |
|
---|
13 | ;; | Modifications to this software may result in an adulterated |
|
---|
14 | ;; | medical device under 21CFR820, the use of which is considered |
|
---|
15 | ;; | to be a violation of US Federal Statutes. |
|
---|
16 | ;; +---------------------------------------------------------------+
|
---|
17 | ;;
|
---|
18 | ; M2MB server
|
---|
19 | ;
|
---|
20 | ; Create an image entry in ^MAG(2005)
|
---|
21 | ;
|
---|
22 | IMAGE() ; entry point from ^MAGDIR81 to create an image entry in ^MAG(2005)
|
---|
23 | N IMAGE ;---- image array for ^MAGGTIA
|
---|
24 | N IMAGECNT ;- counter of image in the group
|
---|
25 | N IMAGEPTR ;- value returned by ^MAGGTIA
|
---|
26 | ;
|
---|
27 | ; check that the group has right object type and is for the same person
|
---|
28 | I $P($G(^MAG(2005,MAGGP,0)),"^",6)'=11 D Q -101 ; fatal error
|
---|
29 | . D OBJECT^MAGDIRVE($T(+0),MAGGP)
|
---|
30 | . Q
|
---|
31 | ;
|
---|
32 | ; check that the group patient DFN matches the image patient DFN
|
---|
33 | I $P(^MAG(2005,MAGGP,0),"^",7)'=DFN D Q -102 ; fatal error
|
---|
34 | . D MISMATCH^MAGDIRVE($T(+0),DFN,MAGGP)
|
---|
35 | . Q
|
---|
36 | ;
|
---|
37 | ; get the next file number and create the entry for this image
|
---|
38 | ;
|
---|
39 | S IMAGECNT=$P($G(^MAG(2005,MAGGP,1,0)),"^",4)+1 ; next image # in group
|
---|
40 | ;
|
---|
41 | K IMAGE
|
---|
42 | S IMAGE(1)=".01^"_PNAMEVAH_" "_DCMPID_" "_PROCDESC ; used in ^MAGDIR8
|
---|
43 | S IMAGE(2)="5^"_DFN
|
---|
44 | I $D(FILEDATA("SHORT DESCRIPTION")) D ; set in ^MAGDIR7F
|
---|
45 | . S IMAGE(3)="10^"_FILEDATA("SHORT DESCRIPTION")
|
---|
46 | . Q
|
---|
47 | E S IMAGE(3)="10^"_PROCDESC_" (#"_IMAGECNT_")" ; used in ^MAGDIR81
|
---|
48 | S IMAGE(4)="14^"_MAGGP
|
---|
49 | S IMAGE(5)="15^"_DATETIME
|
---|
50 | S IMAGE(6)="60^"_IMAGEUID
|
---|
51 | S IMAGE(7)=FILEDATA("EXTENSION") ; specify the image file extension
|
---|
52 | I $D(FILEDATA("ABSTRACT")) S IMAGE(8)=FILEDATA("ABSTRACT")
|
---|
53 | S IMAGE(9)="WRITE^PACS" ; select the PACS image write location
|
---|
54 | S IMAGE(10)="3^"_FILEDATA("OBJECT TYPE")
|
---|
55 | S IMAGE(11)="6^"_FILEDATA("MODALITY")
|
---|
56 | S IMAGE(12)="16^"_FILEDATA("PARENT FILE")
|
---|
57 | S IMAGE(13)="17^"_FILEDATA("PARENT IEN")
|
---|
58 | I $D(FILEDATA("PARENT FILE PTR")) S IMAGE(14)="18^"_FILEDATA("PARENT FILE PTR")
|
---|
59 | I $D(FILEDATA("RAD REPORT")) S IMAGE(15)="61^"_FILEDATA("RAD REPORT")
|
---|
60 | I $D(FILEDATA("RAD PROC PTR")) S IMAGE(16)="62^"_FILEDATA("RAD PROC PTR")
|
---|
61 | I MODPARMS["/" S IMAGE(17)="BIG^1" ; big file will be output
|
---|
62 | S IMAGE(18)="DICOMSN^"_SERINUMB ; series number
|
---|
63 | S IMAGE(19)="DICOMIN^"_IMAGNUMB ; image number
|
---|
64 | S IMAGE(20)=".05^"_INSTLOC
|
---|
65 | S IMAGE(21)="40^"_FILEDATA("PACKAGE")
|
---|
66 | S IMAGE(22)="41^"_$O(^MAG(2005.82,"B","CLIN",""))
|
---|
67 | S IMAGE(23)="42^"_FILEDATA("TYPE")
|
---|
68 | S IMAGE(24)="43^"_FILEDATA("PROC/EVENT")
|
---|
69 | S IMAGE(25)="44^"_FILEDATA("SPEC/SUBSPEC")
|
---|
70 | S IMAGE(26)="107^"_FILEDATA("ACQUISITION DEVICE")
|
---|
71 | S IMAGE(27)="251^"_FILEDATA("SOP CLASS POINTER")
|
---|
72 | S IMAGE(28)="253^"_SERIEUID
|
---|
73 | D ADD^MAGGTIA(.RETURN,.IMAGE)
|
---|
74 | ;
|
---|
75 | S IMAGEPTR=+RETURN
|
---|
76 | I 'IMAGEPTR D Q -103 ; fatal error
|
---|
77 | . K MSG
|
---|
78 | . S MSG(1)="IMAGE FILE CREATION ERROR:"
|
---|
79 | . S MSG(2)=$P(RETURN,"^",2,999)
|
---|
80 | . D BADERROR^MAGDIRVE($T(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
|
---|
81 | . Q
|
---|
82 | ;
|
---|
83 | I IMAGEPTR<LASTIMG D Q -104 ; fatal last image pointer error
|
---|
84 | . D IMAGEPTR^MAGDIRVE($T(+0),IMAGEPTR,LASTIMG)
|
---|
85 | . Q
|
---|
86 | ;
|
---|
87 | S $P(RETURN,"^",4)=$$CHKPATH() ; hierarchal file patch check
|
---|
88 | ;
|
---|
89 | Q 0
|
---|
90 | ;
|
---|
91 | CHKPATH() ; determine if the path is hierarchal (true) or not (false)
|
---|
92 | N D0,PATH
|
---|
93 | S D0="",PATH=$P(RETURN,"^",2)
|
---|
94 | I $D(^MAG(2005.2,"AC")) S D0=$O(^MAG(2005.2,"AC",PATH,""))
|
---|
95 | E D
|
---|
96 | . N PLACE
|
---|
97 | . S PLACE=""
|
---|
98 | . F S PLACE=$O(^MAG(2005.2,"E",PLACE)) Q:PLACE="" D Q:D0
|
---|
99 | . . S D0=$O(^MAG(2005.2,"E",PLACE,PATH,""))
|
---|
100 | . . Q
|
---|
101 | . Q
|
---|
102 | Q 'D0 ; network location file
|
---|
103 | ;
|
---|