- RAMAGU08 ;HCIOFO/SG,GJC - ORDERS/EXAMS API (RAMISC VALID. #70) ; 4/12/13 6:25pm
- ;;5.0;Radiology/Nuclear Medicine;**90,116**;Mar 16, 1998;Build 1
- ;
- Q
- ;
- ;***** VALIDATES RAMISC PARAMETERS RELATED TO THE FILE #70
- ;
- ; RAIENS IENS of the exam/case (subfile #70.03)
- ;
- ; RASTIEN IEN of the requested exam status
- ;
- ; .RACTION Reference to a local variable that indicates the
- ; actions (can be combined):
- ; E Examined (procedure has been performed)
- ; C Complete
- ;
- ; After exiting the function, this parameter contains
- ; only those actions that actually have to be performed
- ; in order to reach the requested status. For example,
- ; if "EC" is passed and the procedure has already been
- ; performed, then "E" will be removed.
- ;
- ; If this parameter is empty after the call, then the
- ; exam already has requested status.
- ;
- ; .RAMISC Reference to a local array containing miscellaneous
- ; request parameters.
- ;
- ; .RAFDA( Reference to a local array where field values will
- ; be prepared for storage (FileMan FDA array).
- ;
- ; "RACNT") This is an additional node that stores counter for
- ; the IENS placeholders. Do not forget to remove this
- ; node before passing the array into a FileMan API.
- ;
- ; "RAIENS") This is an additional node that stores IENS of the
- ; record being processed. Do not forget to remove this
- ; node before passing the array into a FileMan API.
- ;
- ; [RAFDACNT] New value for the placeholder counter for the RAFDA.
- ; If this parameter is greater than zero, it replaces
- ; the value stored in the RAFDA("RACNT").
- ;
- ; Input variables:
- ; RACN, RADTE, RAIMGTYI, RAMSPSDEFS
- ;
- ; Output variables:
- ; RAMSPSDEFS, RAPROCIEN
- ;
- ; Return values:
- ; <0 Error code
- ; 0 Ok
- ;
- VAL70(RAIENS,RASTIEN,RACTION,RAMISC,RAFDA,RAFDACNT) ;
- N ERRCNT,EXMST,PNODE,RABUF,RACAT,RAI,RAMSG,RAPROC,RC,TMP
- ;
- ;=== Check required parameters and variables
- S RC=$$CHKREQ^RAUTL22("RACTION,RAIENS") Q:RC<0 RC
- S RC=$$CHKREQ^RAUTL22("RACN,RADTE,RAIMGTYI","V")
- Q:RC<0 RC
- Q:$TR(RACTION,"EC")'="" $$IPVE^RAERR("RACTION")
- ;
- ;=== Initialize variables
- S RAFDA("RAIENS")=RAIENS
- S:$G(RAFDACNT)>0 RAFDA("RACNT")=+RAFDACNT
- S (ERRCNT,RC)=0
- ;
- ;=== Data from the EXAMINATIONS multiple
- D GETS^DIQ(70.03,RAIENS,"2;3;4","I","RABUF","RAMSG")
- Q:$G(DIERR) $$DBS^RAERR("RAMSG",-9,70.03,RAIENS)
- ;
- ;=== Check the current exam status
- S TMP=+$G(RABUF(70.03,RAIENS,3,"I"))
- S EXMST=$$EXMSTINF^RAMAGU06(TMP) Q:EXMST<0 EXMST
- ;--- Already COMPLETE
- I $P(EXMST,U,3)=9 S RACTION="" Q 0
- ;--- Already "EXAMINED"
- I $P(EXMST,U,3)>1 D Q:RC<0 RC
- . S RC=$$GETEXMND^RAMAGU06(+EXMST)
- . ;--- Cannot find the "EXAMINED" status
- . S:'RC RACTION=$TR(RACTION,"E")
- Q:RACTION="" 0
- ;
- ;=== Detailed/series procedure and modifiers
- S PNODE=$NA(RAMISC("RAPROC"))
- S RAI=$O(@PNODE@(0))
- I RAI>0 S RAPROC=@PNODE@(RAI) D ; Update procedure
- . I $O(@PNODE@(RAI))>0 D ERROR^RAERR(-49) S ERRCNT=ERRCNT+1
- E S RAPROC=$G(RABUF(70.03,RAIENS,2,"I")) ; Current procedure
- ;--- Validate the procedure and modifiers
- S TMP=$$CHKPROC^RAMAGU03(RAPROC,RAIMGTYI,RADTE,"DS")
- S:TMP<0 ERRCNT=ERRCNT+1
- S RAPROCIEN=$S('TMP:+RAPROC,1:"")
- ;
- ;=== Get the exam status requirements
- S TMP=$$EXMSTREQ^RAMAGU06(RASTIEN,RAPROCIEN) Q:TMP<0 TMP
- ;--- The "EF" report status means outside work. In this case,
- ; cancel requirements for anything except (possibly) the
- ;--- diagnostic code. See the HELP1^RASTREQ for more details.
- I $G(RAMISC("RPTSTATUS"))'="EF" S RAMSPSDEFS("R")=TMP
- E S RAMSPSDEFS("R")="",$P(RAMSPSDEFS("R"),U,5)=$P(TMP,U,5)
- ;
- ;=== Category of exam
- S PNODE=$NA(RAMISC("EXAMCAT"))
- I $D(@PNODE)#10 S RACAT=@PNODE D ; Update category
- . S:$$CHECKFLD^RAMAGU09(PNODE,RACAT,70.03,4,RAIENS,1)<0 ERRCNT=ERRCNT+1
- E S RACAT=$G(RABUF(70.03,RAIENS,4,"I")) ; Current category
- ;
- ;=== Parameters specific to the exam category
- S:$$VALECPRM^RAMAGU09(RACAT)<0 ERRCNT=ERRCNT+1
- ;
- ;=== Technologist comment
- S:$$VALPRM^RAMAGU09("TECHCOMM")<0 ERRCNT=ERRCNT+1
- ;
- ;=== Validate parameters specific to different exam statuses
- I $TR(RACTION,"EC")'=RACTION D S:TMP<0 ERRCNT=ERRCNT+1
- . S TMP=$$VEXAMND(RAIENS,RACTION,.RAMISC,.RAFDA)
- I RACTION["C" D S:TMP<0 ERRCNT=ERRCNT+1
- . S TMP=$$VCOMPLT(RAIENS,RACTION,.RAMISC,.RAFDA)
- ;
- ;=== Error handling and cleanup
- K RAFDA(70.07) ; Do not modify the activity log directly
- Q $S(ERRCNT>0:-11,1:0)
- ;
- ;+++++ VALIDATES 'COMPLETE' PARAMETERS
- VCOMPLT(RAIENS,RACTION,RAMISC,RAFDA) ;
- N ERRCNT,PNODE,TMP
- S ERRCNT=0
- ;
- ;=== Error handling and cleanup
- Q $S(ERRCNT>0:-11,1:0)
- ;
- ;+++++ VALIDATES 'EXAMINED' PARAMETERS
- VEXAMND(RAIENS,RACTION,RAMISC,RAFDA) ;
- N ECNT,NAME,PI,PNODE,RAI,RC,TMP
- S ECNT=0
- ;
- ;=== Contrast media used
- S RC=$$VALPRM^RAMAGU09("CMUSED",,RAIENS)
- I RC>0 D
- . ;--- Clear the CONTMEDIA list if necessary
- . S TMP=$G(RAFDA(70.03,RAIENS,10))
- . I TMP'="Y" K RAMISC("CONTMEDIA") S RAMISC("CONTMEDIA")=""
- E S:RC<0 ECNT=ECNT+1
- ;
- ;=== Contrast media
- S NAME="CONTMEDIA"
- S RC=$$VALPRM^RAMAGU09(NAME)
- I RC>0 D
- . S RAI=0
- . F S RAI=$O(RAMISC(NAME,RAI)) Q:RAI'>0 D
- . . S:$$VALPRM^RAMAGU09(NAME,RAI)<0 ECNT=ECNT+1
- . ;--- Make the value of the CONTRAST MEDIA USED consistent
- . S TMP=$D(RAFDA(70.3225))
- . S:TMP RAFDA(70.03,RAIENS,10)=$S(TMP>1:"Y",1:"N")
- E S:RC<0 ECNT=ECNT+1
- ;
- ;=== Complication
- S NAME="COMPLICAT"
- S RC=$$VALPRM^RAMAGU09(NAME,,RAIENS)
- I RC>0 D
- . S PNODE=$NA(RAMISC(NAME))
- . ;--- COMPLICATION TEXT
- . S TMP=$P($G(@PNODE),U,2)
- . S:$$CHECKFLD^RAMAGU09(PNODE,TMP,70.03,16.5,RAIENS)<0 ECNT=ECNT+1
- E S:RC<0 ECNT=ECNT+1
- ;
- ;=== CPT Modifiers
- S NAME="CPTMODS"
- S RC=$$VALPRM^RAMAGU09(NAME)
- I RC>0 D
- . S RAI=0
- . F S RAI=$O(RAMISC(NAME,RAI)) Q:RAI'>0 D
- . . S:$$VALPRM^RAMAGU09(NAME,RAI)<0 ECNT=ECNT+1
- E S:RC<0 ECNT=ECNT+1
- ;
- ;=== Film size
- S NAME="FILMSIZE"
- S RC=$$VALPRM^RAMAGU09(NAME)
- I RC>0 D
- . S RAI=0
- . F S RAI=$O(RAMISC(NAME,RAI)) Q:RAI'>0 D
- . . S PI=$NA(RAMISC(NAME,RAI)) K IENS
- . . ;--- FILM SIZE
- . . S:$$VALPRM^RAMAGU09(NAME,RAI,.IENS)<0 ECNT=ECNT+1
- . . ;--- AMOUNT
- . . S TMP=$P($G(@PI),U,2)
- . . S:$$CHECKFLD^RAMAGU09(PI,TMP,70.04,2,IENS)<0 ECNT=ECNT+1
- E S:RC<0 ECNT=ECNT+1
- ;
- ;=== Primary camera/equipment/room
- S:$$VALPRM^RAMAGU09("PRIMCAM",,RAIENS)<0 ECNT=ECNT+1
- ;
- ;=== Technologist
- S NAME="TECH"
- S RC=$$VALPRM^RAMAGU09(NAME)
- I RC>0 D
- . S RAI=0
- . F S RAI=$O(RAMISC(NAME,RAI)) Q:RAI'>0 D
- . . S:$$VALPRM^RAMAGU09(NAME,RAI)<0 ECNT=ECNT+1
- E S:RC<0 ECNT=ECNT+1
- ;
- ;=== Primary diagnostic code
- S:$$VALPRM^RAMAGU09("PRIMDXCODE",,RAIENS)<0 ECNT=ECNT+1
- ;
- ;=== Secondary diagnostic code(s)
- S NAME="SECDXCODE"
- S RC=$$VALPRM^RAMAGU09(NAME)
- I RC>0 D
- . S RAI=0
- . F S RAI=$O(RAMISC(NAME,RAI)) Q:RAI'>0 D
- . . S:$$VALPRM^RAMAGU09(NAME,RAI)<0 ECNT=ECNT+1
- E S:RC<0 ECNT=ECNT+1
- ;
- ;=== Primary interpreting resident and staff
- S RC=0
- F NAME="PRIMINTRES","PRIMINTSTF" D
- . ;--- Check the parameter but does not record errors
- . S TMP=$$VALPRM^RAMAGU09(NAME,,RAIENS,,"C")
- . ;--- Handle defined/not defined cases
- . I TMP'<0 S RC=RC+1 Q
- . I +TMP=-8 S RC=RC-1 Q
- . ;--- Otherwise, call again to record the error(s)
- . S TMP=$$VALPRM^RAMAGU09(NAME,,RAIENS),ECNT=ECNT+1
- . ;--- Prevent the code below from recording additional errors
- . S RC=3
- ;--- If neither of the two parameters is defined but one of
- ;--- them is required, record the error.
- I RC<0 D S ECNT=ECNT+1
- . S TMP=$NA(RAMISC("PRIMINTRES"))_", "_$NA(RAMISC("PRIMINTSTF"))
- . D ERROR^RAERR(-13,TMP)
- ;
- ;=== Error handling and cleanup
- Q $S(ECNT>0:-11,1:0)
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRAMAGU08 8023 printed Feb 19, 2025@00:03:21 Page 2
- RAMAGU08 ;HCIOFO/SG,GJC - ORDERS/EXAMS API (RAMISC VALID. #70) ; 4/12/13 6:25pm
- +1 ;;5.0;Radiology/Nuclear Medicine;**90,116**;Mar 16, 1998;Build 1
- +2 ;
- +3 QUIT
- +4 ;
- +5 ;***** VALIDATES RAMISC PARAMETERS RELATED TO THE FILE #70
- +6 ;
- +7 ; RAIENS IENS of the exam/case (subfile #70.03)
- +8 ;
- +9 ; RASTIEN IEN of the requested exam status
- +10 ;
- +11 ; .RACTION Reference to a local variable that indicates the
- +12 ; actions (can be combined):
- +13 ; E Examined (procedure has been performed)
- +14 ; C Complete
- +15 ;
- +16 ; After exiting the function, this parameter contains
- +17 ; only those actions that actually have to be performed
- +18 ; in order to reach the requested status. For example,
- +19 ; if "EC" is passed and the procedure has already been
- +20 ; performed, then "E" will be removed.
- +21 ;
- +22 ; If this parameter is empty after the call, then the
- +23 ; exam already has requested status.
- +24 ;
- +25 ; .RAMISC Reference to a local array containing miscellaneous
- +26 ; request parameters.
- +27 ;
- +28 ; .RAFDA( Reference to a local array where field values will
- +29 ; be prepared for storage (FileMan FDA array).
- +30 ;
- +31 ; "RACNT") This is an additional node that stores counter for
- +32 ; the IENS placeholders. Do not forget to remove this
- +33 ; node before passing the array into a FileMan API.
- +34 ;
- +35 ; "RAIENS") This is an additional node that stores IENS of the
- +36 ; record being processed. Do not forget to remove this
- +37 ; node before passing the array into a FileMan API.
- +38 ;
- +39 ; [RAFDACNT] New value for the placeholder counter for the RAFDA.
- +40 ; If this parameter is greater than zero, it replaces
- +41 ; the value stored in the RAFDA("RACNT").
- +42 ;
- +43 ; Input variables:
- +44 ; RACN, RADTE, RAIMGTYI, RAMSPSDEFS
- +45 ;
- +46 ; Output variables:
- +47 ; RAMSPSDEFS, RAPROCIEN
- +48 ;
- +49 ; Return values:
- +50 ; <0 Error code
- +51 ; 0 Ok
- +52 ;
- VAL70(RAIENS,RASTIEN,RACTION,RAMISC,RAFDA,RAFDACNT) ;
- +1 NEW ERRCNT,EXMST,PNODE,RABUF,RACAT,RAI,RAMSG,RAPROC,RC,TMP
- +2 ;
- +3 ;=== Check required parameters and variables
- +4 SET RC=$$CHKREQ^RAUTL22("RACTION,RAIENS")
- if RC<0
- QUIT RC
- +5 SET RC=$$CHKREQ^RAUTL22("RACN,RADTE,RAIMGTYI","V")
- +6 if RC<0
- QUIT RC
- +7 if $TRANSLATE(RACTION,"EC")'=""
- QUIT $$IPVE^RAERR("RACTION")
- +8 ;
- +9 ;=== Initialize variables
- +10 SET RAFDA("RAIENS")=RAIENS
- +11 if $GET(RAFDACNT)>0
- SET RAFDA("RACNT")=+RAFDACNT
- +12 SET (ERRCNT,RC)=0
- +13 ;
- +14 ;=== Data from the EXAMINATIONS multiple
- +15 DO GETS^DIQ(70.03,RAIENS,"2;3;4","I","RABUF","RAMSG")
- +16 if $GET(DIERR)
- QUIT $$DBS^RAERR("RAMSG",-9,70.03,RAIENS)
- +17 ;
- +18 ;=== Check the current exam status
- +19 SET TMP=+$GET(RABUF(70.03,RAIENS,3,"I"))
- +20 SET EXMST=$$EXMSTINF^RAMAGU06(TMP)
- if EXMST<0
- QUIT EXMST
- +21 ;--- Already COMPLETE
- +22 IF $PIECE(EXMST,U,3)=9
- SET RACTION=""
- QUIT 0
- +23 ;--- Already "EXAMINED"
- +24 IF $PIECE(EXMST,U,3)>1
- Begin DoDot:1
- +25 SET RC=$$GETEXMND^RAMAGU06(+EXMST)
- +26 ;--- Cannot find the "EXAMINED" status
- +27 if 'RC
- SET RACTION=$TRANSLATE(RACTION,"E")
- End DoDot:1
- if RC<0
- QUIT RC
- +28 if RACTION=""
- QUIT 0
- +29 ;
- +30 ;=== Detailed/series procedure and modifiers
- +31 SET PNODE=$NAME(RAMISC("RAPROC"))
- +32 SET RAI=$ORDER(@PNODE@(0))
- +33 ; Update procedure
- IF RAI>0
- SET RAPROC=@PNODE@(RAI)
- Begin DoDot:1
- +34 IF $ORDER(@PNODE@(RAI))>0
- DO ERROR^RAERR(-49)
- SET ERRCNT=ERRCNT+1
- End DoDot:1
- +35 ; Current procedure
- IF '$TEST
- SET RAPROC=$GET(RABUF(70.03,RAIENS,2,"I"))
- +36 ;--- Validate the procedure and modifiers
- +37 SET TMP=$$CHKPROC^RAMAGU03(RAPROC,RAIMGTYI,RADTE,"DS")
- +38 if TMP<0
- SET ERRCNT=ERRCNT+1
- +39 SET RAPROCIEN=$SELECT('TMP:+RAPROC,1:"")
- +40 ;
- +41 ;=== Get the exam status requirements
- +42 SET TMP=$$EXMSTREQ^RAMAGU06(RASTIEN,RAPROCIEN)
- if TMP<0
- QUIT TMP
- +43 ;--- The "EF" report status means outside work. In this case,
- +44 ; cancel requirements for anything except (possibly) the
- +45 ;--- diagnostic code. See the HELP1^RASTREQ for more details.
- +46 IF $GET(RAMISC("RPTSTATUS"))'="EF"
- SET RAMSPSDEFS("R")=TMP
- +47 IF '$TEST
- SET RAMSPSDEFS("R")=""
- SET $PIECE(RAMSPSDEFS("R"),U,5)=$PIECE(TMP,U,5)
- +48 ;
- +49 ;=== Category of exam
- +50 SET PNODE=$NAME(RAMISC("EXAMCAT"))
- +51 ; Update category
- IF $DATA(@PNODE)#10
- SET RACAT=@PNODE
- Begin DoDot:1
- +52 if $$CHECKFLD^RAMAGU09(PNODE,RACAT,70.03,4,RAIENS,1)<0
- SET ERRCNT=ERRCNT+1
- End DoDot:1
- +53 ; Current category
- IF '$TEST
- SET RACAT=$GET(RABUF(70.03,RAIENS,4,"I"))
- +54 ;
- +55 ;=== Parameters specific to the exam category
- +56 if $$VALECPRM^RAMAGU09(RACAT)<0
- SET ERRCNT=ERRCNT+1
- +57 ;
- +58 ;=== Technologist comment
- +59 if $$VALPRM^RAMAGU09("TECHCOMM")<0
- SET ERRCNT=ERRCNT+1
- +60 ;
- +61 ;=== Validate parameters specific to different exam statuses
- +62 IF $TRANSLATE(RACTION,"EC")'=RACTION
- Begin DoDot:1
- +63 SET TMP=$$VEXAMND(RAIENS,RACTION,.RAMISC,.RAFDA)
- End DoDot:1
- if TMP<0
- SET ERRCNT=ERRCNT+1
- +64 IF RACTION["C"
- Begin DoDot:1
- +65 SET TMP=$$VCOMPLT(RAIENS,RACTION,.RAMISC,.RAFDA)
- End DoDot:1
- if TMP<0
- SET ERRCNT=ERRCNT+1
- +66 ;
- +67 ;=== Error handling and cleanup
- +68 ; Do not modify the activity log directly
- KILL RAFDA(70.07)
- +69 QUIT $SELECT(ERRCNT>0:-11,1:0)
- +70 ;
- +71 ;+++++ VALIDATES 'COMPLETE' PARAMETERS
- VCOMPLT(RAIENS,RACTION,RAMISC,RAFDA) ;
- +1 NEW ERRCNT,PNODE,TMP
- +2 SET ERRCNT=0
- +3 ;
- +4 ;=== Error handling and cleanup
- +5 QUIT $SELECT(ERRCNT>0:-11,1:0)
- +6 ;
- +7 ;+++++ VALIDATES 'EXAMINED' PARAMETERS
- VEXAMND(RAIENS,RACTION,RAMISC,RAFDA) ;
- +1 NEW ECNT,NAME,PI,PNODE,RAI,RC,TMP
- +2 SET ECNT=0
- +3 ;
- +4 ;=== Contrast media used
- +5 SET RC=$$VALPRM^RAMAGU09("CMUSED",,RAIENS)
- +6 IF RC>0
- Begin DoDot:1
- +7 ;--- Clear the CONTMEDIA list if necessary
- +8 SET TMP=$GET(RAFDA(70.03,RAIENS,10))
- +9 IF TMP'="Y"
- KILL RAMISC("CONTMEDIA")
- SET RAMISC("CONTMEDIA")=""
- End DoDot:1
- +10 IF '$TEST
- if RC<0
- SET ECNT=ECNT+1
- +11 ;
- +12 ;=== Contrast media
- +13 SET NAME="CONTMEDIA"
- +14 SET RC=$$VALPRM^RAMAGU09(NAME)
- +15 IF RC>0
- Begin DoDot:1
- +16 SET RAI=0
- +17 FOR
- SET RAI=$ORDER(RAMISC(NAME,RAI))
- if RAI'>0
- QUIT
- Begin DoDot:2
- +18 if $$VALPRM^RAMAGU09(NAME,RAI)<0
- SET ECNT=ECNT+1
- End DoDot:2
- +19 ;--- Make the value of the CONTRAST MEDIA USED consistent
- +20 SET TMP=$DATA(RAFDA(70.3225))
- +21 if TMP
- SET RAFDA(70.03,RAIENS,10)=$SELECT(TMP>1:"Y",1:"N")
- End DoDot:1
- +22 IF '$TEST
- if RC<0
- SET ECNT=ECNT+1
- +23 ;
- +24 ;=== Complication
- +25 SET NAME="COMPLICAT"
- +26 SET RC=$$VALPRM^RAMAGU09(NAME,,RAIENS)
- +27 IF RC>0
- Begin DoDot:1
- +28 SET PNODE=$NAME(RAMISC(NAME))
- +29 ;--- COMPLICATION TEXT
- +30 SET TMP=$PIECE($GET(@PNODE),U,2)
- +31 if $$CHECKFLD^RAMAGU09(PNODE,TMP,70.03,16.5,RAIENS)<0
- SET ECNT=ECNT+1
- End DoDot:1
- +32 IF '$TEST
- if RC<0
- SET ECNT=ECNT+1
- +33 ;
- +34 ;=== CPT Modifiers
- +35 SET NAME="CPTMODS"
- +36 SET RC=$$VALPRM^RAMAGU09(NAME)
- +37 IF RC>0
- Begin DoDot:1
- +38 SET RAI=0
- +39 FOR
- SET RAI=$ORDER(RAMISC(NAME,RAI))
- if RAI'>0
- QUIT
- Begin DoDot:2
- +40 if $$VALPRM^RAMAGU09(NAME,RAI)<0
- SET ECNT=ECNT+1
- End DoDot:2
- End DoDot:1
- +41 IF '$TEST
- if RC<0
- SET ECNT=ECNT+1
- +42 ;
- +43 ;=== Film size
- +44 SET NAME="FILMSIZE"
- +45 SET RC=$$VALPRM^RAMAGU09(NAME)
- +46 IF RC>0
- Begin DoDot:1
- +47 SET RAI=0
- +48 FOR
- SET RAI=$ORDER(RAMISC(NAME,RAI))
- if RAI'>0
- QUIT
- Begin DoDot:2
- +49 SET PI=$NAME(RAMISC(NAME,RAI))
- KILL IENS
- +50 ;--- FILM SIZE
- +51 if $$VALPRM^RAMAGU09(NAME,RAI,.IENS)<0
- SET ECNT=ECNT+1
- +52 ;--- AMOUNT
- +53 SET TMP=$PIECE($GET(@PI),U,2)
- +54 if $$CHECKFLD^RAMAGU09(PI,TMP,70.04,2,IENS)<0
- SET ECNT=ECNT+1
- End DoDot:2
- End DoDot:1
- +55 IF '$TEST
- if RC<0
- SET ECNT=ECNT+1
- +56 ;
- +57 ;=== Primary camera/equipment/room
- +58 if $$VALPRM^RAMAGU09("PRIMCAM",,RAIENS)<0
- SET ECNT=ECNT+1
- +59 ;
- +60 ;=== Technologist
- +61 SET NAME="TECH"
- +62 SET RC=$$VALPRM^RAMAGU09(NAME)
- +63 IF RC>0
- Begin DoDot:1
- +64 SET RAI=0
- +65 FOR
- SET RAI=$ORDER(RAMISC(NAME,RAI))
- if RAI'>0
- QUIT
- Begin DoDot:2
- +66 if $$VALPRM^RAMAGU09(NAME,RAI)<0
- SET ECNT=ECNT+1
- End DoDot:2
- End DoDot:1
- +67 IF '$TEST
- if RC<0
- SET ECNT=ECNT+1
- +68 ;
- +69 ;=== Primary diagnostic code
- +70 if $$VALPRM^RAMAGU09("PRIMDXCODE",,RAIENS)<0
- SET ECNT=ECNT+1
- +71 ;
- +72 ;=== Secondary diagnostic code(s)
- +73 SET NAME="SECDXCODE"
- +74 SET RC=$$VALPRM^RAMAGU09(NAME)
- +75 IF RC>0
- Begin DoDot:1
- +76 SET RAI=0
- +77 FOR
- SET RAI=$ORDER(RAMISC(NAME,RAI))
- if RAI'>0
- QUIT
- Begin DoDot:2
- +78 if $$VALPRM^RAMAGU09(NAME,RAI)<0
- SET ECNT=ECNT+1
- End DoDot:2
- End DoDot:1
- +79 IF '$TEST
- if RC<0
- SET ECNT=ECNT+1
- +80 ;
- +81 ;=== Primary interpreting resident and staff
- +82 SET RC=0
- +83 FOR NAME="PRIMINTRES","PRIMINTSTF"
- Begin DoDot:1
- +84 ;--- Check the parameter but does not record errors
- +85 SET TMP=$$VALPRM^RAMAGU09(NAME,,RAIENS,,"C")
- +86 ;--- Handle defined/not defined cases
- +87 IF TMP'<0
- SET RC=RC+1
- QUIT
- +88 IF +TMP=-8
- SET RC=RC-1
- QUIT
- +89 ;--- Otherwise, call again to record the error(s)
- +90 SET TMP=$$VALPRM^RAMAGU09(NAME,,RAIENS)
- SET ECNT=ECNT+1
- +91 ;--- Prevent the code below from recording additional errors
- +92 SET RC=3
- End DoDot:1
- +93 ;--- If neither of the two parameters is defined but one of
- +94 ;--- them is required, record the error.
- +95 IF RC<0
- Begin DoDot:1
- +96 SET TMP=$NAME(RAMISC("PRIMINTRES"))_", "_$NAME(RAMISC("PRIMINTSTF"))
- +97 DO ERROR^RAERR(-13,TMP)
- End DoDot:1
- SET ECNT=ECNT+1
- +98 ;
- +99 ;=== Error handling and cleanup
- +100 QUIT $SELECT(ECNT>0:-11,1:0)