- MAGDIR9A ;WOIFO/PMK/RRB - Read a DICOM image file ; 03 Jul 2013 9:15 AM
- ;;3.0;IMAGING;**11,30,51,46,54,53,49,99,138**;Mar 19, 2002;Build 5380;Sep 03, 2013
- ;; Per VHA Directive 2004-038, this routine should not be modified.
- ;; +---------------------------------------------------------------+
- ;; | Property of the US Government. |
- ;; | No permission to copy or redistribute this software is given. |
- ;; | Use of unreleased versions of this software requires the user |
- ;; | to execute a written test agreement with the VistA Imaging |
- ;; | Development Office of the Department of Veterans Affairs, |
- ;; | telephone (301) 734-0100. |
- ;; | The Food and Drug Administration classifies this software as |
- ;; | a medical device. As such, it may not be changed in any way. |
- ;; | Modifications to this software may result in an adulterated |
- ;; | medical device under 21CFR820, the use of which is considered |
- ;; | to be a violation of US Federal Statutes. |
- ;; +---------------------------------------------------------------+
- ;;
- Q
- ; M2MB server
- ;
- ; This routine creates a ^mag(2005) group entry and links it to the
- ; associated radiology report
- ;
- ; XXXXXX XX XXXXXX
- ; XX XX XXXX XX XX
- ; XX XX XX XX XX XX
- ; XXXXX XX XX XX XX
- ; XX XX XXXXXX XX XX
- ; XX XX XX XX XX XX
- ; XXX XX XX XX XXXXXX
- ;
- GROUP() ; entry point from ^MAGDIR81
- N ACQDEVP ;-- pointer to acquisition device file (#2006.04)
- N DA ;------ fileman variable
- N ERRCODE ;- error trap code
- N GROUP ;--- array to pass group data to ^MAGGTIA
- N GROUPDFN ; DFN value from image group entry for double checking
- N P ;------- scratch variable (pointer to ACQUISITION DEVICE file)
- N RACNE ;--- external "3rd level" subscript in ^RADPT
- N RACNI ;--- internal "3rd level" subscript in ^RADPT
- N RADFN ;--- radiology package's DFN
- N RADTE ;--- external "2nd level" subscript in ^RADPT
- N RADTI ;--- internal "2nd level" subscript in ^RADPT
- N RARPT ;--- 1st level node in ^RARPT for report (ie, the ien)
- N RARPT3 ;-- 3rd level node for 2005 multiple under ^RARPT's report
- N RARPTDFN ; DFN value from ^RARPT for double checking
- N RETURN ;-- variable returned by ^MAGGTIA
- N SOPCLASP ; pointer to SOP Class file (#2006.532)
- N HIT,ISPECIDX,X,Y ; scratch variables
- ;
- S ERRCODE=""
- ;
- S (RADFN,DA(2))=DFN ; patient DFN variables
- S RADTI=RADATA("RADPT2") ; case subscript
- I RADTI="" D Q ERRCODE
- . K MSG
- . S MSG(1)="No radiology case number specified for patient "_DFN
- . D ERROR^MAGDIRVE($T(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- . S ERRCODE=-301
- . Q
- ;
- S RADTE=9999999.9999-RADTI ; 9's complement conversion
- S RACNI=RADATA("RADPT3")
- S RACNE=$P(CASENUMB,"-",$L(CASENUMB,"-")) ; short case #
- ;
- ; check for the existence of the entry in ^RADPT (redundant)
- I '$D(^RADPT(RADFN,"DT",RADTI,0)) D Q ERRCODE ; can't process further
- . K MSG
- . S MSG(1)="Radiology case "_RADTI_" is not in ^RADPT("_RADFN_")"
- . D ERROR^MAGDIRVE($T(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- . S ERRCODE=-302
- . Q
- ;
- ; check for the existence of the report pointer
- S RARPT=$P($G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)),"^",17)
- ; if the report does not yet exist, create it
- ;
- I RARPT="" D Q:ERRCODE ERRCODE ; can't process further
- . N RACN,RATIMEOUT
- . S RATIMEOUT=1
- . S RACN=RACNE D CREATE^RARIC ; create the report
- . ;
- . I RARPT="-1^radiology exam locked" S ERRCODE="-399^"_$P(RARPT,"^",2) Q
- . ;
- . ; If RARPT is no longer defined at this point, this means
- . ; that we're dealing with an old study, and the report has
- . ; been archived and purged.
- . ;
- . I '$G(RARPT) D Q
- . . K MSG
- . . S MSG(1)="IMAGE GROUP CREATION ERROR:"
- . . S MSG(2)="Radiology Report has been archived and purged."
- . . S MSG(3)="Patient "_$G(RADFN)_", 9's Complement Date "_$G(RADTI)_", Case "_$G(RACNI)
- . . D ERROR^MAGDIRVE($T(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- . . S ERRCODE=-303
- . . Q
- . Q
- ;
- ; double check the DFN value from ^RARPT to make sure its right
- S RARPTDFN=$P($G(^RARPT(RARPT,0)),"^",2)
- I RARPTDFN'=DFN D Q ERRCODE ; fatal error
- . D RADMISS^MAGDIRVE($T(+0),DFN,RARPT,RARPTDFN)
- . S ERRCODE=-304
- . Q
- ;
- ; initialize FILEDATA for GROUP and IMAGE
- ; get the acquisition device pointer (file 2005, field 107)
- S ACQDEVP=$$ACQDEV^MAGDFCNV(MFGR,MODEL,INSTLOC)
- S FILEDATA("ACQUISITION DEVICE")=ACQDEVP
- ; get the SOP Class pointer (file 2005, field 251)
- S SOPCLASP=$O(^MAG(2006.532,"B",SOPCLASS,""))
- S FILEDATA("SOP CLASS POINTER")=SOPCLASP
- ;
- S FILEDATA("MODALITY")=MODALITY
- S FILEDATA("PARENT FILE")=74
- S FILEDATA("PARENT IEN")=RARPT
- S FILEDATA("RAD REPORT")=RARPT
- S FILEDATA("RAD PROC PTR")=RADATA("PROCIEN")
- S FILEDATA("PACKAGE")="RAD"
- S X=$S(MODALITY="NM":"NUCLEAR MEDICINE",1:"RADIOLOGY")
- S ISPECIDX=$O(^MAG(2005.84,"B",X,""))
- S X=$$FIELD43^MAGXMA(MODALITY,ISPECIDX,.Y)
- S FILEDATA("PROC/EVENT")=$S(X=0:Y,1:"")
- S FILEDATA("SPEC/SUBSPEC")=ISPECIDX
- ;
- ; find the corresponding image group node under the report
- S (HIT,RARPT3)=0
- F S RARPT3=$O(^RARPT(RARPT,2005,RARPT3)) Q:'RARPT3 D Q:HIT Q:ERRCODE
- . S MAGGP=+$G(^RARPT(RARPT,2005,RARPT3,0)) ; get imaging group pointer
- . S GROUPDFN=$P($G(^MAG(2005,MAGGP,0)),"^",7) ; check image DFN value
- . I GROUPDFN'=DFN D ; fatal error
- . . D MISMATCH^MAGDIRVE($T(+0),DFN,MAGGP)
- . . S ERRCODE=-305
- . . Q
- . E I $P($G(^MAG(2005,MAGGP,0)),"^",6)=11 D
- . . ; create a new group if this is for a different Study Instance UID
- . . I STUDYUID'=$P($G(^MAG(2005,MAGGP,"PACS")),"^",1) Q
- . . ; check to see that this group is for the same SOP Class
- . . S P=$P($G(^MAG(2005,MAGGP,"SOP")),"^",1)
- . . S HIT=$$EQUIVGRP^MAGDFCNV(P,SOPCLASP) ; equivalent groups?
- . . Q
- . Q
- ;
- I ERRCODE Q ERRCODE ; fatal image DFN problem
- ;
- I 'HIT D Q:ERRCODE ERRCODE ; the 2005 node does not yet exist
- . ; create the radiology imaging group
- . N PROCEDUR,RADRPT,RADPTR
- . S PROCEDUR="RAD "_FILEDATA("MODALITY")
- . S RADRPT=FILEDATA("RAD REPORT")
- . S RADPTR=FILEDATA("RAD PROC PTR")
- . ;
- . L +^RARPT(RARPT):$G(DILOCKTM,5)
- . I '$T S ERRCODE="-399^radiology report locked - image processing blocked" Q
- . L -^RARPT(RARPT)
- . ;
- . D NEWGROUP(PROCEDUR,RADRPT,RADPTR) Q:ERRCODE
- . ;
- . ; store the cross-reference for the report
- . D PTR^RARIC Q:Y>0
- . I Y="-1^radiology report locked" S ERRCODE="-399^"_$P(Y,"^",2)
- . E I Y=0 S ERRCODE=-311
- . E S ERRCODE=-312
- . Q
- ;
- I 'MAGGP D Q ERRCODE ; fatal error
- . K MSG
- . S MSG(1)="IMAGE GROUP LOOKUP ERROR:"
- . S MSG(2)="Looking for 2005 cross reference in ^RARPT("_RARPT_")"
- . D ERROR^MAGDIRVE($T(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- . S ERRCODE=-308
- . Q
- Q 0
- ;
- NEWGROUP(PROCEDUR,RADRPT,RADPTR) ; create an imaging group (called by ^MAGDIR9E)
- N I
- K GROUP S I=0
- S I=I+1,GROUP(I)=".01^"_PNAMEVAH_" "_DCMPID_" "_PROCDESC
- S I=I+1,GROUP(I)="3^11" ; Object Type -- XRAY Group
- S I=I+1,GROUP(I)="5^"_DFN
- S I=I+1,GROUP(I)="6^"_PROCEDUR
- S I=I+1,GROUP(I)="2005.04^0"
- S I=I+1,GROUP(I)="10^"_PROCDESC
- S I=I+1,GROUP(I)="15^"_DATETIME
- S I=I+1,GROUP(I)="16^"_FILEDATA("PARENT FILE")
- S I=I+1,GROUP(I)="17^"_FILEDATA("PARENT IEN")
- S:$D(FILEDATA("PARENT FILE PTR")) I=I+1,GROUP(I)="18^"_FILEDATA("PARENT FILE PTR")
- S I=I+1,GROUP(I)="60^"_STUDYUID
- ;
- ; the following two fields are only for radiology
- I $D(RADRPT) S I=I+1,GROUP(I)="61^"_RADRPT
- I $D(RADPTR) S I=I+1,GROUP(I)="62^"_RADPTR
- ;
- S I=I+1,GROUP(I)=".05^"_INSTLOC
- S I=I+1,GROUP(I)="40^"_FILEDATA("PACKAGE")
- S I=I+1,GROUP(I)="41^"_$O(^MAG(2005.82,"B","CLIN",""))
- S I=I+1,GROUP(I)="42^"_FILEDATA("TYPE")
- S I=I+1,GROUP(I)="43^"_FILEDATA("PROC/EVENT")
- S I=I+1,GROUP(I)="44^"_FILEDATA("SPEC/SUBSPEC")
- S I=I+1,GROUP(I)="45^"_ORIGINDX
- S I=I+1,GROUP(I)="107^"_FILEDATA("ACQUISITION DEVICE")
- S I=I+1,GROUP(I)="110^"_STAMP
- S I=I+1,GROUP(I)="251^"_FILEDATA("SOP CLASS POINTER")
- D ADD^MAGGTIA(.RETURN,.GROUP)
- S MAGGP=+RETURN
- I 'MAGGP D Q ; fatal error
- . K MSG
- . S MSG(1)="IMAGE GROUP CREATION ERROR:"
- . S MSG(2)=$P(RETURN,"^",2,999)
- . D BADERROR^MAGDIRVE($T(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- . S ERRCODE=-306
- . Q
- ;
- I MAGGP<LASTIMG D Q ; fatal last image pointer error
- . D GROUPPTR^MAGDIRVE($T(+0),MAGGP,LASTIMG)
- . S ERRCODE=-307
- . Q
- Q
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HMAGDIR9A 8485 printed Mar 13, 2025@21:05:24 Page 2
- MAGDIR9A ;WOIFO/PMK/RRB - Read a DICOM image file ; 03 Jul 2013 9:15 AM
- +1 ;;3.0;IMAGING;**11,30,51,46,54,53,49,99,138**;Mar 19, 2002;Build 5380;Sep 03, 2013
- +2 ;; Per VHA Directive 2004-038, this routine should not be modified.
- +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 ;; | The Food and Drug Administration classifies this software as |
- +11 ;; | a medical device. As such, it may not be changed in any way. |
- +12 ;; | Modifications to this software may result in an adulterated |
- +13 ;; | medical device under 21CFR820, the use of which is considered |
- +14 ;; | to be a violation of US Federal Statutes. |
- +15 ;; +---------------------------------------------------------------+
- +16 ;;
- +17 QUIT
- +18 ; M2MB server
- +19 ;
- +20 ; This routine creates a ^mag(2005) group entry and links it to the
- +21 ; associated radiology report
- +22 ;
- +23 ; XXXXXX XX XXXXXX
- +24 ; XX XX XXXX XX XX
- +25 ; XX XX XX XX XX XX
- +26 ; XXXXX XX XX XX XX
- +27 ; XX XX XXXXXX XX XX
- +28 ; XX XX XX XX XX XX
- +29 ; XXX XX XX XX XXXXXX
- +30 ;
- GROUP() ; entry point from ^MAGDIR81
- +1 ;-- pointer to acquisition device file (#2006.04)
- NEW ACQDEVP
- +2 ;------ fileman variable
- NEW DA
- +3 ;- error trap code
- NEW ERRCODE
- +4 ;--- array to pass group data to ^MAGGTIA
- NEW GROUP
- +5 ; DFN value from image group entry for double checking
- NEW GROUPDFN
- +6 ;------- scratch variable (pointer to ACQUISITION DEVICE file)
- NEW P
- +7 ;--- external "3rd level" subscript in ^RADPT
- NEW RACNE
- +8 ;--- internal "3rd level" subscript in ^RADPT
- NEW RACNI
- +9 ;--- radiology package's DFN
- NEW RADFN
- +10 ;--- external "2nd level" subscript in ^RADPT
- NEW RADTE
- +11 ;--- internal "2nd level" subscript in ^RADPT
- NEW RADTI
- +12 ;--- 1st level node in ^RARPT for report (ie, the ien)
- NEW RARPT
- +13 ;-- 3rd level node for 2005 multiple under ^RARPT's report
- NEW RARPT3
- +14 ; DFN value from ^RARPT for double checking
- NEW RARPTDFN
- +15 ;-- variable returned by ^MAGGTIA
- NEW RETURN
- +16 ; pointer to SOP Class file (#2006.532)
- NEW SOPCLASP
- +17 ; scratch variables
- NEW HIT,ISPECIDX,X,Y
- +18 ;
- +19 SET ERRCODE=""
- +20 ;
- +21 ; patient DFN variables
- SET (RADFN,DA(2))=DFN
- +22 ; case subscript
- SET RADTI=RADATA("RADPT2")
- +23 IF RADTI=""
- Begin DoDot:1
- +24 KILL MSG
- +25 SET MSG(1)="No radiology case number specified for patient "_DFN
- +26 DO ERROR^MAGDIRVE($TEXT(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- +27 SET ERRCODE=-301
- +28 QUIT
- End DoDot:1
- QUIT ERRCODE
- +29 ;
- +30 ; 9's complement conversion
- SET RADTE=9999999.9999-RADTI
- +31 SET RACNI=RADATA("RADPT3")
- +32 ; short case #
- SET RACNE=$PIECE(CASENUMB,"-",$LENGTH(CASENUMB,"-"))
- +33 ;
- +34 ; check for the existence of the entry in ^RADPT (redundant)
- +35 ; can't process further
- IF '$DATA(^RADPT(RADFN,"DT",RADTI,0))
- Begin DoDot:1
- +36 KILL MSG
- +37 SET MSG(1)="Radiology case "_RADTI_" is not in ^RADPT("_RADFN_")"
- +38 DO ERROR^MAGDIRVE($TEXT(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- +39 SET ERRCODE=-302
- +40 QUIT
- End DoDot:1
- QUIT ERRCODE
- +41 ;
- +42 ; check for the existence of the report pointer
- +43 SET RARPT=$PIECE($GET(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)),"^",17)
- +44 ; if the report does not yet exist, create it
- +45 ;
- +46 ; can't process further
- IF RARPT=""
- Begin DoDot:1
- +47 NEW RACN,RATIMEOUT
- +48 SET RATIMEOUT=1
- +49 ; create the report
- SET RACN=RACNE
- DO CREATE^RARIC
- +50 ;
- +51 IF RARPT="-1^radiology exam locked"
- SET ERRCODE="-399^"_$PIECE(RARPT,"^",2)
- QUIT
- +52 ;
- +53 ; If RARPT is no longer defined at this point, this means
- +54 ; that we're dealing with an old study, and the report has
- +55 ; been archived and purged.
- +56 ;
- +57 IF '$GET(RARPT)
- Begin DoDot:2
- +58 KILL MSG
- +59 SET MSG(1)="IMAGE GROUP CREATION ERROR:"
- +60 SET MSG(2)="Radiology Report has been archived and purged."
- +61 SET MSG(3)="Patient "_$GET(RADFN)_", 9's Complement Date "_$GET(RADTI)_", Case "_$GET(RACNI)
- +62 DO ERROR^MAGDIRVE($TEXT(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- +63 SET ERRCODE=-303
- +64 QUIT
- End DoDot:2
- QUIT
- +65 QUIT
- End DoDot:1
- if ERRCODE
- QUIT ERRCODE
- +66 ;
- +67 ; double check the DFN value from ^RARPT to make sure its right
- +68 SET RARPTDFN=$PIECE($GET(^RARPT(RARPT,0)),"^",2)
- +69 ; fatal error
- IF RARPTDFN'=DFN
- Begin DoDot:1
- +70 DO RADMISS^MAGDIRVE($TEXT(+0),DFN,RARPT,RARPTDFN)
- +71 SET ERRCODE=-304
- +72 QUIT
- End DoDot:1
- QUIT ERRCODE
- +73 ;
- +74 ; initialize FILEDATA for GROUP and IMAGE
- +75 ; get the acquisition device pointer (file 2005, field 107)
- +76 SET ACQDEVP=$$ACQDEV^MAGDFCNV(MFGR,MODEL,INSTLOC)
- +77 SET FILEDATA("ACQUISITION DEVICE")=ACQDEVP
- +78 ; get the SOP Class pointer (file 2005, field 251)
- +79 SET SOPCLASP=$ORDER(^MAG(2006.532,"B",SOPCLASS,""))
- +80 SET FILEDATA("SOP CLASS POINTER")=SOPCLASP
- +81 ;
- +82 SET FILEDATA("MODALITY")=MODALITY
- +83 SET FILEDATA("PARENT FILE")=74
- +84 SET FILEDATA("PARENT IEN")=RARPT
- +85 SET FILEDATA("RAD REPORT")=RARPT
- +86 SET FILEDATA("RAD PROC PTR")=RADATA("PROCIEN")
- +87 SET FILEDATA("PACKAGE")="RAD"
- +88 SET X=$SELECT(MODALITY="NM":"NUCLEAR MEDICINE",1:"RADIOLOGY")
- +89 SET ISPECIDX=$ORDER(^MAG(2005.84,"B",X,""))
- +90 SET X=$$FIELD43^MAGXMA(MODALITY,ISPECIDX,.Y)
- +91 SET FILEDATA("PROC/EVENT")=$SELECT(X=0:Y,1:"")
- +92 SET FILEDATA("SPEC/SUBSPEC")=ISPECIDX
- +93 ;
- +94 ; find the corresponding image group node under the report
- +95 SET (HIT,RARPT3)=0
- +96 FOR
- SET RARPT3=$ORDER(^RARPT(RARPT,2005,RARPT3))
- if 'RARPT3
- QUIT
- Begin DoDot:1
- +97 ; get imaging group pointer
- SET MAGGP=+$GET(^RARPT(RARPT,2005,RARPT3,0))
- +98 ; check image DFN value
- SET GROUPDFN=$PIECE($GET(^MAG(2005,MAGGP,0)),"^",7)
- +99 ; fatal error
- IF GROUPDFN'=DFN
- Begin DoDot:2
- +100 DO MISMATCH^MAGDIRVE($TEXT(+0),DFN,MAGGP)
- +101 SET ERRCODE=-305
- +102 QUIT
- End DoDot:2
- +103 IF '$TEST
- IF $PIECE($GET(^MAG(2005,MAGGP,0)),"^",6)=11
- Begin DoDot:2
- +104 ; create a new group if this is for a different Study Instance UID
- +105 IF STUDYUID'=$PIECE($GET(^MAG(2005,MAGGP,"PACS")),"^",1)
- QUIT
- +106 ; check to see that this group is for the same SOP Class
- +107 SET P=$PIECE($GET(^MAG(2005,MAGGP,"SOP")),"^",1)
- +108 ; equivalent groups?
- SET HIT=$$EQUIVGRP^MAGDFCNV(P,SOPCLASP)
- +109 QUIT
- End DoDot:2
- +110 QUIT
- End DoDot:1
- if HIT
- QUIT
- if ERRCODE
- QUIT
- +111 ;
- +112 ; fatal image DFN problem
- IF ERRCODE
- QUIT ERRCODE
- +113 ;
- +114 ; the 2005 node does not yet exist
- IF 'HIT
- Begin DoDot:1
- +115 ; create the radiology imaging group
- +116 NEW PROCEDUR,RADRPT,RADPTR
- +117 SET PROCEDUR="RAD "_FILEDATA("MODALITY")
- +118 SET RADRPT=FILEDATA("RAD REPORT")
- +119 SET RADPTR=FILEDATA("RAD PROC PTR")
- +120 ;
- +121 LOCK +^RARPT(RARPT):$GET(DILOCKTM,5)
- +122 IF '$TEST
- SET ERRCODE="-399^radiology report locked - image processing blocked"
- QUIT
- +123 LOCK -^RARPT(RARPT)
- +124 ;
- +125 DO NEWGROUP(PROCEDUR,RADRPT,RADPTR)
- if ERRCODE
- QUIT
- +126 ;
- +127 ; store the cross-reference for the report
- +128 DO PTR^RARIC
- if Y>0
- QUIT
- +129 IF Y="-1^radiology report locked"
- SET ERRCODE="-399^"_$PIECE(Y,"^",2)
- +130 IF '$TEST
- IF Y=0
- SET ERRCODE=-311
- +131 IF '$TEST
- SET ERRCODE=-312
- +132 QUIT
- End DoDot:1
- if ERRCODE
- QUIT ERRCODE
- +133 ;
- +134 ; fatal error
- IF 'MAGGP
- Begin DoDot:1
- +135 KILL MSG
- +136 SET MSG(1)="IMAGE GROUP LOOKUP ERROR:"
- +137 SET MSG(2)="Looking for 2005 cross reference in ^RARPT("_RARPT_")"
- +138 DO ERROR^MAGDIRVE($TEXT(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- +139 SET ERRCODE=-308
- +140 QUIT
- End DoDot:1
- QUIT ERRCODE
- +141 QUIT 0
- +142 ;
- NEWGROUP(PROCEDUR,RADRPT,RADPTR) ; create an imaging group (called by ^MAGDIR9E)
- +1 NEW I
- +2 KILL GROUP
- SET I=0
- +3 SET I=I+1
- SET GROUP(I)=".01^"_PNAMEVAH_" "_DCMPID_" "_PROCDESC
- +4 ; Object Type -- XRAY Group
- SET I=I+1
- SET GROUP(I)="3^11"
- +5 SET I=I+1
- SET GROUP(I)="5^"_DFN
- +6 SET I=I+1
- SET GROUP(I)="6^"_PROCEDUR
- +7 SET I=I+1
- SET GROUP(I)="2005.04^0"
- +8 SET I=I+1
- SET GROUP(I)="10^"_PROCDESC
- +9 SET I=I+1
- SET GROUP(I)="15^"_DATETIME
- +10 SET I=I+1
- SET GROUP(I)="16^"_FILEDATA("PARENT FILE")
- +11 SET I=I+1
- SET GROUP(I)="17^"_FILEDATA("PARENT IEN")
- +12 if $DATA(FILEDATA("PARENT FILE PTR"))
- SET I=I+1
- SET GROUP(I)="18^"_FILEDATA("PARENT FILE PTR")
- +13 SET I=I+1
- SET GROUP(I)="60^"_STUDYUID
- +14 ;
- +15 ; the following two fields are only for radiology
- +16 IF $DATA(RADRPT)
- SET I=I+1
- SET GROUP(I)="61^"_RADRPT
- +17 IF $DATA(RADPTR)
- SET I=I+1
- SET GROUP(I)="62^"_RADPTR
- +18 ;
- +19 SET I=I+1
- SET GROUP(I)=".05^"_INSTLOC
- +20 SET I=I+1
- SET GROUP(I)="40^"_FILEDATA("PACKAGE")
- +21 SET I=I+1
- SET GROUP(I)="41^"_$ORDER(^MAG(2005.82,"B","CLIN",""))
- +22 SET I=I+1
- SET GROUP(I)="42^"_FILEDATA("TYPE")
- +23 SET I=I+1
- SET GROUP(I)="43^"_FILEDATA("PROC/EVENT")
- +24 SET I=I+1
- SET GROUP(I)="44^"_FILEDATA("SPEC/SUBSPEC")
- +25 SET I=I+1
- SET GROUP(I)="45^"_ORIGINDX
- +26 SET I=I+1
- SET GROUP(I)="107^"_FILEDATA("ACQUISITION DEVICE")
- +27 SET I=I+1
- SET GROUP(I)="110^"_STAMP
- +28 SET I=I+1
- SET GROUP(I)="251^"_FILEDATA("SOP CLASS POINTER")
- +29 DO ADD^MAGGTIA(.RETURN,.GROUP)
- +30 SET MAGGP=+RETURN
- +31 ; fatal error
- IF 'MAGGP
- Begin DoDot:1
- +32 KILL MSG
- +33 SET MSG(1)="IMAGE GROUP CREATION ERROR:"
- +34 SET MSG(2)=$PIECE(RETURN,"^",2,999)
- +35 DO BADERROR^MAGDIRVE($TEXT(+0),"DICOM IMAGE PROCESSING ERROR",.MSG)
- +36 SET ERRCODE=-306
- +37 QUIT
- End DoDot:1
- QUIT
- +38 ;
- +39 ; fatal last image pointer error
- IF MAGGP<LASTIMG
- Begin DoDot:1
- +40 DO GROUPPTR^MAGDIRVE($TEXT(+0),MAGGP,LASTIMG)
- +41 SET ERRCODE=-307
- +42 QUIT
- End DoDot:1
- QUIT
- +43 QUIT
- +44 ;