- RACMHIS ;HISC/GJC-Radiology Contrast Media History option (driver)
- ;;5.0;Radiology/Nuclear Medicine;**45**;Mar 16, 1998
- ;Note: new routine with the release of RA*5*45
- ;
- EN ;begin; find all procedures with a CM audit history
- S RADIC="^RAMIS(71,",RADIC(0)="EMQZ",RADIC("A")="Select Procedure: "
- S RADIC("S")="I $O(^RAMIS(71,+Y,""AUD"",0))",RAUTIL="RA PROC W/CM"
- K ^TMP($J,"RA PROC W/CM") D EN1^RASELCT(.RADIC,RAUTIL,"",1)
- I $O(^TMP($J,"RA PROC W/CM",""))="" D D KILL Q
- .W !?3,"No procedures have been selected, exiting this option." Q
- ;
- STRTDT ;Prompt for Starting Date
- W ! K DIR S DIR(0)="DA^:"_DT_":PEA"
- S DIR("A")="Enter the start date for the search: "
- S DIR("?",1)="This is the date from which our search will begin."
- S DIR("?",2)="Think of it in terms of 'FROM' and 'TO'. This date is our 'FROM'."
- S DIR("?",3)="The starting date must not exceed: "_$$FMTE^XLFDT(DT,"1P")_"."
- S DIR("?")="Dates associated with a time will not be accepted."
- D ^DIR K DIR
- I $D(DIRUT) D KILL Q
- ;int. date/time ^ ext. date/time ^ int. date/time minus one second
- S RASTRT=Y_"^"_Y(0)_"^"_$$FMADD^XLFDT(Y,"","","",-1)
- ;
- ENDDT ;Prompt for Ending Date
- W ! K DIR S DIR(0)="DA^"_$P(RASTRT,U)_":"_DT_":PEA"
- S DIR("A")="Enter the ending date for the search: "
- S DIR("?",1)="This is the date in which our search will end."
- S DIR("?",2)="Think of it in terms of 'FROM' and 'TO'. This date is our 'TO'."
- S DIR("?",3)="The ending date must not exceed: "_$$FMTE^XLFDT(DT,"1P")_"."
- S DIR("?",4)="The ending date must not precede: "_$P(RASTRT,U,2)_"."
- S DIR("?")="Dates associated with a time will not be accepted."
- D ^DIR K DIR
- I $D(DIRUT) D KILL Q
- ;int. date/time ^ ext. date/time ^ int. date/time plus 23hrs, 59 min,
- ;& 59 seconds
- S RASTOP=Y_"^"_Y(0)_"^"_(Y+.235959)
- ;
- F I="RASTRT","RASTOP","^TMP($J," S ZTSAVE(I)=""
- K I D EN^XUTMDEVQ("START^RACMHIS","Rad/Nuc Med: Contrast Media History report",.ZTSAVE,,1)
- I +$G(ZTSK)>0 W !!,"Task Number: "_ZTSK,!
- ;
- KILL ;clean up symbol table
- K DIR,DIROUT,DIRUT,DTOUT,DUOUT,POP,RADIC,RAQUIT,RASTOP,RASTRT,RAUTIL,X
- K Y,ZTSAVE,ZTSK,^TMP($J,"RA PROC W/CM")
- Q
- ;
- START ;main body
- S:$D(ZTQUEUED) ZTREQ="@"
- S RAHD="Contrast Media Edit History By Procedure"
- S $P(RALINE,"-",(IOM+1))="",RAPG=0,RADT=$$FMTE^XLFDT(DT,"1P")
- W:$E(IOST,1,2)="C-" @IOF ;clear screen
- D HDR S RAXIT=0,RAPNME=""
- F S RAPNME=$O(^TMP($J,"RA PROC W/CM",RAPNME)) Q:RAPNME="" D Q:RAXIT
- .S RAXIT=$$S^%ZTLOAD() S:RAXIT ZTSTOP=1 Q:RAXIT
- .S RAY=0
- .F S RAY=$O(^TMP($J,"RA PROC W/CM",RAPNME,RAY)) Q:'RAY D Q:RAXIT
- ..S RAXIT=$$S^%ZTLOAD() S:RAXIT ZTSTOP=1 Q:RAXIT
- ..S RAS=$P(RASTRT,U,3)
- ..F S RAS=$O(^RAMIS(71,RAY,"AUD","B",RAS)) Q:'RAS!(RAS>$P(RASTOP,U,3)) D Q:RAXIT
- ...S RAIEN=0
- ...F S RAIEN=$O(^RAMIS(71,RAY,"AUD","B",RAS,RAIEN)) Q:'RAIEN D Q:RAXIT
- ....;get changed date/time, CM value, & user
- ....S RAY(0)=$G(^RAMIS(71,RAY,"AUD",RAIEN,0))
- ....S RAADT=$$FMTE^XLFDT($P(RAY(0),U),"1P"),RACMU=$P(RAY(0),U,2)
- ....S RAX=$S($L(RACMU):$$CONTRAST(RACMU),1:"**User deleted all contrast media data**")
- ....S:+$P(RAY(0),U,3) RAAU=$$GET1^DIQ(200,$P(RAY(0),U,3)_",",.01)
- ....I $Y>(IOSL-4) D EOS Q:RAXIT
- ....W !,$E(RAPNME,1,32),?33,RAADT,?55,$E($G(RAAU),1,24)
- ....I $Y>(IOSL-4) D EOS Q:RAXIT
- ....;display the past CM data value or that CM data has been deleted
- ....S X=RAX,DIWL=3,DIWR=70,DIWF="W" D ^DIWP,^DIWW K ^UTILITY($J,"W")
- ....Q
- ...Q
- ..Q
- .Q
- EXIT ;clean up symbol table, message to user
- ;if there are no records to print, alert user
- W:'$D(RAY(0))#2 !,$$CJ^XLFSTR("*** No Records To Print ***",IOM)
- K DIW,DIWF,DIWL,DIWR,DIWT,DN,I,RAADT,RAAU,RACMU,RADT,RAHD,RAI,RAIEN
- K RALINE,RAPG,RAPNME,RAS,RAXIT,RAX,RAY,X,Y,Z
- Q
- ;
- EOS ; end of screen dialog
- I $E(IOST,1,2)="C-" D Q:RAXIT
- .K DIR,DIRUT,DTOUT,DUOUT
- .S DIR(0)="E" D ^DIR S:$D(DIRUT) RAXIT=1
- .K DIR,DIRUT,DTOUT,DUOUT
- .Q
- ;
- ;'falls' into HDR...
- ;
- HDR ; print header
- W:RAPG @IOF S RAPG=RAPG+1
- W !,$$CJ^XLFSTR(RAHD,IOM),!,"Run Date: ",RADT,?25,"From: ",$P(RASTRT,U,2),?45,"To: ",$P(RASTOP,U,2),?68,"Page ",RAPG
- W !,"Procedure",?34,"Date/Time Changed",?55,"User",!?2,"Contrast Media"
- W !,$$CJ^XLFSTR(RALINE,IOM)
- Q
- ;
- CONTRAST(RACMU) ;Return the current CM definition for this procedure delimited
- ;by commas.
- ;input: RACMU=internal value of CM; multiple CM references per string
- ; are possible
- ;return: the external format of CM delimited by commas
- N RAI,RAX S RAX=""
- F RAI=1:1:$L(RACMU) D
- .S RAX=RAX_$$EXTERNAL^DILFD(71.0125,.01,"",$E(RACMU,RAI))_", "
- .Q
- Q $P(RAX,", ",1,($L(RAX,", ")-1)) ;strip off that last ", "
- ;
- RACMHIS ;HISC/GJC-Radiology Contrast Media History option (driver)
- +1 ;;5.0;Radiology/Nuclear Medicine;**45**;Mar 16, 1998
- +2 ;Note: new routine with the release of RA*5*45
- +3 ;
- EN ;begin; find all procedures with a CM audit history
- +1 SET RADIC="^RAMIS(71,"
- SET RADIC(0)="EMQZ"
- SET RADIC("A")="Select Procedure: "
- +2 SET RADIC("S")="I $O(^RAMIS(71,+Y,""AUD"",0))"
- SET RAUTIL="RA PROC W/CM"
- +3 KILL ^TMP($JOB,"RA PROC W/CM")
- DO EN1^RASELCT(.RADIC,RAUTIL,"",1)
- +4 IF $ORDER(^TMP($JOB,"RA PROC W/CM",""))=""
- Begin DoDot:1
- +5 WRITE !?3,"No procedures have been selected, exiting this option."
- QUIT
- End DoDot:1
- DO KILL
- QUIT
- +6 ;
- STRTDT ;Prompt for Starting Date
- +1 WRITE !
- KILL DIR
- SET DIR(0)="DA^:"_DT_":PEA"
- +2 SET DIR("A")="Enter the start date for the search: "
- +3 SET DIR("?",1)="This is the date from which our search will begin."
- +4 SET DIR("?",2)="Think of it in terms of 'FROM' and 'TO'. This date is our 'FROM'."
- +5 SET DIR("?",3)="The starting date must not exceed: "_$$FMTE^XLFDT(DT,"1P")_"."
- +6 SET DIR("?")="Dates associated with a time will not be accepted."
- +7 DO ^DIR
- KILL DIR
- +8 IF $DATA(DIRUT)
- DO KILL
- QUIT
- +9 ;int. date/time ^ ext. date/time ^ int. date/time minus one second
- +10 SET RASTRT=Y_"^"_Y(0)_"^"_$$FMADD^XLFDT(Y,"","","",-1)
- +11 ;
- ENDDT ;Prompt for Ending Date
- +1 WRITE !
- KILL DIR
- SET DIR(0)="DA^"_$PIECE(RASTRT,U)_":"_DT_":PEA"
- +2 SET DIR("A")="Enter the ending date for the search: "
- +3 SET DIR("?",1)="This is the date in which our search will end."
- +4 SET DIR("?",2)="Think of it in terms of 'FROM' and 'TO'. This date is our 'TO'."
- +5 SET DIR("?",3)="The ending date must not exceed: "_$$FMTE^XLFDT(DT,"1P")_"."
- +6 SET DIR("?",4)="The ending date must not precede: "_$PIECE(RASTRT,U,2)_"."
- +7 SET DIR("?")="Dates associated with a time will not be accepted."
- +8 DO ^DIR
- KILL DIR
- +9 IF $DATA(DIRUT)
- DO KILL
- QUIT
- +10 ;int. date/time ^ ext. date/time ^ int. date/time plus 23hrs, 59 min,
- +11 ;& 59 seconds
- +12 SET RASTOP=Y_"^"_Y(0)_"^"_(Y+.235959)
- +13 ;
- +14 FOR I="RASTRT","RASTOP","^TMP($J,"
- SET ZTSAVE(I)=""
- +15 KILL I
- DO EN^XUTMDEVQ("START^RACMHIS","Rad/Nuc Med: Contrast Media History report",.ZTSAVE,,1)
- +16 IF +$GET(ZTSK)>0
- WRITE !!,"Task Number: "_ZTSK,!
- +17 ;
- KILL ;clean up symbol table
- +1 KILL DIR,DIROUT,DIRUT,DTOUT,DUOUT,POP,RADIC,RAQUIT,RASTOP,RASTRT,RAUTIL,X
- +2 KILL Y,ZTSAVE,ZTSK,^TMP($JOB,"RA PROC W/CM")
- +3 QUIT
- +4 ;
- START ;main body
- +1 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +2 SET RAHD="Contrast Media Edit History By Procedure"
- +3 SET $PIECE(RALINE,"-",(IOM+1))=""
- SET RAPG=0
- SET RADT=$$FMTE^XLFDT(DT,"1P")
- +4 ;clear screen
- IF $EXTRACT(IOST,1,2)="C-"
- WRITE @IOF
- +5 DO HDR
- SET RAXIT=0
- SET RAPNME=""
- +6 FOR
- SET RAPNME=$ORDER(^TMP($JOB,"RA PROC W/CM",RAPNME))
- IF RAPNME=""
- QUIT
- Begin DoDot:1
- +7 SET RAXIT=$$S^%ZTLOAD()
- IF RAXIT
- SET ZTSTOP=1
- IF RAXIT
- QUIT
- +8 SET RAY=0
- +9 FOR
- SET RAY=$ORDER(^TMP($JOB,"RA PROC W/CM",RAPNME,RAY))
- IF 'RAY
- QUIT
- Begin DoDot:2
- +10 SET RAXIT=$$S^%ZTLOAD()
- IF RAXIT
- SET ZTSTOP=1
- IF RAXIT
- QUIT
- +11 SET RAS=$PIECE(RASTRT,U,3)
- +12 FOR
- SET RAS=$ORDER(^RAMIS(71,RAY,"AUD","B",RAS))
- IF 'RAS!(RAS>$PIECE(RASTOP,U,3))
- QUIT
- Begin DoDot:3
- +13 SET RAIEN=0
- +14 FOR
- SET RAIEN=$ORDER(^RAMIS(71,RAY,"AUD","B",RAS,RAIEN))
- IF 'RAIEN
- QUIT
- Begin DoDot:4
- +15 ;get changed date/time, CM value, & user
- +16 SET RAY(0)=$GET(^RAMIS(71,RAY,"AUD",RAIEN,0))
- +17 SET RAADT=$$FMTE^XLFDT($PIECE(RAY(0),U),"1P")
- SET RACMU=$PIECE(RAY(0),U,2)
- +18 SET RAX=$SELECT($LENGTH(RACMU):$$CONTRAST(RACMU),1:"**User deleted all contrast media data**")
- +19 IF +$PIECE(RAY(0),U,3)
- SET RAAU=$$GET1^DIQ(200,$PIECE(RAY(0),U,3)_",",.01)
- +20 IF $Y>(IOSL-4)
- DO EOS
- IF RAXIT
- QUIT
- +21 WRITE !,$EXTRACT(RAPNME,1,32),?33,RAADT,?55,$EXTRACT($GET(RAAU),1,24)
- +22 IF $Y>(IOSL-4)
- DO EOS
- IF RAXIT
- QUIT
- +23 ;display the past CM data value or that CM data has been deleted
- +24 SET X=RAX
- SET DIWL=3
- SET DIWR=70
- SET DIWF="W"
- DO ^DIWP
- DO ^DIWW
- KILL ^UTILITY($JOB,"W")
- +25 QUIT
- End DoDot:4
- IF RAXIT
- QUIT
- +26 QUIT
- End DoDot:3
- IF RAXIT
- QUIT
- +27 QUIT
- End DoDot:2
- IF RAXIT
- QUIT
- +28 QUIT
- End DoDot:1
- IF RAXIT
- QUIT
- EXIT ;clean up symbol table, message to user
- +1 ;if there are no records to print, alert user
- +2 IF '$DATA(RAY(0))#2
- WRITE !,$$CJ^XLFSTR("*** No Records To Print ***",IOM)
- +3 KILL DIW,DIWF,DIWL,DIWR,DIWT,DN,I,RAADT,RAAU,RACMU,RADT,RAHD,RAI,RAIEN
- +4 KILL RALINE,RAPG,RAPNME,RAS,RAXIT,RAX,RAY,X,Y,Z
- +5 QUIT
- +6 ;
- EOS ; end of screen dialog
- +1 IF $EXTRACT(IOST,1,2)="C-"
- Begin DoDot:1
- +2 KILL DIR,DIRUT,DTOUT,DUOUT
- +3 SET DIR(0)="E"
- DO ^DIR
- IF $DATA(DIRUT)
- SET RAXIT=1
- +4 KILL DIR,DIRUT,DTOUT,DUOUT
- +5 QUIT
- End DoDot:1
- IF RAXIT
- QUIT
- +6 ;
- +7 ;'falls' into HDR...
- +8 ;
- HDR ; print header
- +1 IF RAPG
- WRITE @IOF
- SET RAPG=RAPG+1
- +2 WRITE !,$$CJ^XLFSTR(RAHD,IOM),!,"Run Date: ",RADT,?25,"From: ",$PIECE(RASTRT,U,2),?45,"To: ",$PIECE(RASTOP,U,2),?68,"Page ",RAPG
- +3 WRITE !,"Procedure",?34,"Date/Time Changed",?55,"User",!?2,"Contrast Media"
- +4 WRITE !,$$CJ^XLFSTR(RALINE,IOM)
- +5 QUIT
- +6 ;
- CONTRAST(RACMU) ;Return the current CM definition for this procedure delimited
- +1 ;by commas.
- +2 ;input: RACMU=internal value of CM; multiple CM references per string
- +3 ; are possible
- +4 ;return: the external format of CM delimited by commas
- +5 NEW RAI,RAX
- SET RAX=""
- +6 FOR RAI=1:1:$LENGTH(RACMU)
- Begin DoDot:1
- +7 SET RAX=RAX_$$EXTERNAL^DILFD(71.0125,.01,"",$EXTRACT(RACMU,RAI))_", "
- +8 QUIT
- End DoDot:1
- +9 ;strip off that last ", "
- QUIT $PIECE(RAX,", ",1,($LENGTH(RAX,", ")-1))
- +10 ;