Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: TIUDSCNV

TIUDSCNV.m

Go to the documentation of this file.
  1. TIUDSCNV ; SLC/JER - Discharge Summary Conversion routine
  1. ;;1.0;TEXT INTEGRATION UTILITIES;**9**;Jun 20, 1997
  1. MAIN ; Control branching
  1. N GMRDA,TIUOK,TIUQUEUE,TIURUN,GMRDSTOP
  1. I +$P($G(^AUPNPAT(0)),U,3)'=+$P($G(^DPT(0)),U,3),'$D(^GMR(128,"CNV","PXPTPOST")) D Q:+TIUOK'>0
  1. . N TIUPRMT
  1. . W !!,"The IHS Patient file appears to be out of synchrony with File #2."
  1. . W !,"Before continuing, you must run a program to synchronize these files."
  1. . W !,"It may take a few minutes.",!
  1. . S TIUPRMT="Would you like me to run that program now"
  1. . S TIUOK=$$READ^TIUU("Y",TIUPRMT,"NO")
  1. . I +TIUOK'>0 W !,"Okay, hurry back!" Q
  1. . I +TIUOK>0 D QUE^PXPTPOST S ^GMR(128,"CNV","PXPTPOST")=1
  1. W !!?9,"***************************************************************"
  1. W !?9,"* This option will convert your Discharge Summary version 1.0 *"
  1. W !?9,"* Database in preparation for implementation of Discharge *"
  1. W !?9,"* Summary under Text Integration Utilities... *"
  1. W !?9,"* Although the process is NOT irreversible, we recommend you *"
  1. W !?9,"* be certain you are prepared to implement before invoking *"
  1. W !?9,"* this process! *"
  1. W !?9,"***************************************************************",!
  1. S TIUOK=$$READ^TIUU("Y"," ... Are you sure","NO")
  1. I +TIUOK'>0 W !!?9,$C(7),"Very well, no damage done!" Q
  1. I +$G(^GMR(128,"CNV","T0")),'+$G(^GMR(128,"CNV","T1")) D Q:+$G(TIURUN)
  1. . W !!,"The DISCHARGE SUMMARY CONVERSION is either still running in another partition,"
  1. . W !,"or it has been interrupted...",!
  1. . S TIURUN=+$$RUNNING
  1. . I +TIURUN W !!,$C(7),"CONVERSION STILL RUNNING IN ANOTHER PARTITION."
  1. . E W !!,"No other instance of the conversion could be detected...You're free to RESTART."
  1. I +$P($G(^TIU(8925.97,1,0)),U,2),'+$P($G(^TIU(8925.97,1,0)),U,3) D Q:+$G(TIURUN)
  1. . W !!,"The PROGRESS NOTES CONVERSION is either still running in another partition,"
  1. . W !,"or it has been interrupted...",!
  1. . S TIURUN=+$$PNRUN
  1. . I +TIURUN W !!,$C(7),"PROGRESS NOTES CONVERSION STILL RUNNING IN ANOTHER PARTITION."
  1. . E W !!,"PN CONVERSION is NOT currently running...You're free to begin."
  1. S GMRDA=+$G(^GMR(128,"CNV","CHKPNT"))
  1. S GMRDSTOP=+$G(^GMR(128,"CNV","STOP #"))
  1. I GMRDSTOP'>0 D
  1. . S GMRDSTOP=+$P($G(^GMR(128,0)),U,3),^GMR(128,"CNV","STOP #")=GMRDSTOP
  1. I +GMRDSTOP'>0 W !!,$C(7),"NO DISCHARGE SUMMARIES TO CONVERT...Bye!",! Q
  1. I +GMRDA>0 D
  1. . W !!,"CONVERSION HAS ALREADY BEEN RUN..."
  1. . W !,"Checkpoint is Record #",GMRDA
  1. . I +GMRDSTOP'=+$P($G(^GMR(128,0)),U,3) D
  1. . . S GMRDSTOP=+$P(^GMR(128,0),U,3)
  1. . . S ^GMR(128,"CNV","STOP #")=GMRDSTOP
  1. . W !,"Conversion will stop after record #",GMRDSTOP
  1. . S TIUOK=$$READ^TIUU("Y"," Do You Wish to Continue","NO")
  1. I +TIUOK'>0 W !!?5,"Very well, no damage done!" Q
  1. S TIUQUEUE=$$READ^TIUU("Y","Would you like to QUEUE this Process","NO")
  1. I +TIUQUEUE'>0 D Q
  1. . W !!?9,$C(7),"Discharge Summary Conversion Running in Foreground"
  1. . D ENQ
  1. D QUEUE
  1. Q
  1. QUEUE ; Call Task Manager to process conversion
  1. N %,ZTDTH,ZTDESC,ZTIO,ZTSAVE,ZTSK,ZTRTN
  1. S ZTRTN="ENQ^TIUDSCNV"
  1. S ZTSAVE("GMRDA")="",ZTSAVE("DUZ(")="",ZTSAVE("GMRDSTOP")=""
  1. S:'$D(ZTDESC) ZTDESC="TIU DISCHARGE SUMMARY CONVERSION" S ZTIO=""
  1. D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued!",1:"Request Cancelled!")
  1. D ^%ZISC
  1. Q
  1. ENQ ; Where the work happens
  1. N GMRDCNT,GMRDTOTL
  1. S:+$G(GMRDA)'>0 GMRDA=+$G(^GMR(128,"CNV","CHKPNT"))
  1. S GMRDCNT=+$G(^GMR(128,"CNV","CNT"))
  1. S GMRDTOTL=+$P($G(^GMR(128,0)),U,3)
  1. ; --- Get records from file #128 ---
  1. S:'$D(^GMR(128,"CNV","T0")) ^GMR(128,"CNV","T0")=$$NOW^TIULC
  1. I '$D(ZTQUEUED) D PROGBAR
  1. F S GMRDA=$O(^GMR(128,GMRDA)) Q:(+GMRDA'>0)!(+GMRDA>+GMRDSTOP)!+$G(ZTSTOP) D
  1. . D CONVERT(GMRDA) S GMRDCNT=+$G(GMRDCNT)+1
  1. . I '$D(ZTQUEUED) D PROGRESS(GMRDCNT,GMRDTOTL)
  1. . S ^GMR(128,"CNV","CNT")=GMRDCNT
  1. . I $$S^%ZTLOAD S ZTSTOP=1
  1. Q:+$G(ZTSTOP)
  1. S ^GMR(128,"CNV","CNT")=GMRDCNT
  1. S ^GMR(128,"CNV","T1")=$$NOW^TIULC
  1. D BULLETIN ; Send Conversion Bulletin
  1. Q
  1. BULLETIN ; Send Bulletins on completion
  1. N TIUCNVCT,TIUMISCT,TIUADMCT,TIUFAIL,TIUBDT,TIUEDT,XMY,XMB,XMDUZ
  1. S TIUCNVCT=+$G(^GMR(128,"CNV","SUCCEED"))
  1. S TIUMISCT=+$G(^GMR(128,"CNV","FAIL",0))
  1. S TIUADMCT=+$P($G(^GMR(128,"CNV","FAIL",0)),U,2)
  1. S TIUFAIL=+$G(TIUMISCT)+$G(TIUADMCT)
  1. S TIUBDT=$$DATE^TIULS(+$G(^GMR(128,"CNV","T0")),"MM/DD/YY HR:MIN")
  1. S TIUEDT=$$DATE^TIULS(+$G(^GMR(128,"CNV","T1")),"MM/DD/YY HR:MIN")
  1. S XMY(+$G(DUZ))=""
  1. S XMB="TIU DS CONVERSION "_$S(+TIUFAIL>0:"ERRORS",1:"CLEAN")
  1. S XMDUZ="TIU DISCHARGE SUMMARY CONVERSION"
  1. S XMB(1)=TIUBDT,XMB(2)=TIUEDT,XMB(3)=TIUCNVCT
  1. I +TIUFAIL>0 S XMB(4)=TIUFAIL,XMB(5)=TIUMISCT,XMB(6)=TIUADMCT
  1. D ^XMB,KILL^XM
  1. Q
  1. PROGBAR ; Write a Progress Bar
  1. K LAST
  1. ; I '$D(IOINORM) S X="IOINORM;IORVON;IORVOFF" D ENDR^%ZISS
  1. W !!,$$CENTER^TIULS("Discharge Summary Conversion in Progress...")
  1. W !,$$CENTER^TIULS("Percent Complete")
  1. W !,$$CENTER^TIULS("0 10 20 30 40 50 60 70 80 90 100")
  1. W !?12,"|"
  1. Q
  1. PROGRESS(COUNT,TOTAL) ; Indicate Progress
  1. N PCT,INCR,BAR S PCT=(COUNT/TOTAL)*100
  1. S INCR=PCT\2
  1. I +$G(LAST)'=$J(INCR,0,0) D
  1. . S $P(BAR,"|",(INCR-+$G(LAST))+1)=""
  1. . W BAR S LAST=$J(INCR,0,0)
  1. I COUNT=TOTAL W "|",!!?20,"DISCHARGE SUMMARY CONVERSION COMPLETE!"
  1. Q
  1. CONVERT(GMRDA,TIUSNGL) ; "Turn or burn!"
  1. N GMRD0,GMRDACT,DOCTYP,DFN,GMRDADT,GMRDLDT,TNEW,TIU,TIUTYP,TIUDA,TIUDAD
  1. S GMRD0=$G(^GMR(128,+GMRDA,0)),GMRDACT=$G(^GMR(128,+GMRDA,"ACT"))
  1. I GMRD0']"" D Q
  1. . N TIUCRCT
  1. . S ^GMR(128,"CNV","FAIL",GMRDA)="MISSING INFORMATION"
  1. . S TIUCRCT=+$G(^GMR(128,"CNV","FAIL",0))+1
  1. . S $P(^GMR(128,"CNV","FAIL",0),U)=TIUCRCT
  1. D ALERTDEL^GMRDALRT(GMRDA)
  1. S DOCTYP=$S(+$P(GMRD0,U,6):"ADDENDUM",1:"DISCHARGE SUMMARY")
  1. S TIUTYP(1)=1_U_+$$WHATITLE^TIUPUTU(DOCTYP)_U_DOCTYP
  1. S DFN=+$P(GMRD0,U,2),GMRDADT=$P(GMRD0,U,7)
  1. S GMRDLDT=$S($L(GMRDADT,".")=2:$$FMADD^XLFDT(GMRDADT,"","","",1),1:$$FMADD^XLFDT(GMRDADT,1))
  1. D MAIN^TIUMOVE(.TIU,.DFN,"",GMRDADT,GMRDLDT,1,"LAST",0)
  1. I +$G(TIU("AD#"))'>0 D Q
  1. . N TIUNOVCT
  1. . S ^GMR(128,"CNV","FAIL",GMRDA)="NO ADMISSION FOUND"
  1. . S TIUNOVCT=+$P($G(^GMR(128,"CNV","FAIL",0)),U,2)+1
  1. . S $P(^GMR(128,"CNV","FAIL",0),U,2)=TIUNOVCT
  1. I DOCTYP="DISCHARGE SUMMARY" D
  1. . S TIUDA=$$GETREC^TIUEDI1(DFN,.TIU,1,.TNEW)
  1. . I +$G(TIU("VSTR")) D POST^TIUPXAP1(.TIU,DFN,TIUDA)
  1. . D STUFREC^TIUDSCN1(TIUDA,"",GMRD0,GMRDACT)
  1. I DOCTYP="ADDENDUM" D
  1. . S TIUDA=$$MAKEADD^TIUPUTU
  1. . I +$G(TIU("VSTR")) D POST^TIUPXAP1(.TIU,DFN,TIUDA)
  1. . S TIUDAD=$$FINDAD(DFN,.TIU,+$P(TIUTYP(1),U,2))
  1. . I +TIUDAD'>0 D DELETE^TIUDSCN1(TIUDA),ADDFAIL^TIUDSCN1(GMRDA) Q
  1. . D STUFREC^TIUDSCN1(TIUDA,TIUDAD,GMRD0,GMRDACT)
  1. D SEND^TIUALRT(TIUDA)
  1. D AUDIT^TIUEDI1(TIUDA,0,$$CHKSUM^TIULC("^TIU(8925,"_+TIUDA_",""TEXT"")"))
  1. S:'+$G(TIUSNGL) ^GMR(128,"CNV","CHKPNT")=GMRDA_U_TIUDA
  1. S ^GMR(128,"CNV","SUCCEED")=+$G(^GMR(128,"CNV","SUCCEED"))+1
  1. S ^GMR(128,"CNV","SUCCEED",GMRDA)=TIUDA
  1. Q
  1. RUNNING() ; Evaluate whether conversion is running in another partition
  1. N TIUCKP0,TIUCKP1,TIUI,TIUY
  1. W !,"Attempting to determine whether conversion has crashed,"
  1. W !,"or is still running in another partition..."
  1. S TIUCKP0=+$G(^GMR(128,"CNV","CHKPNT")),TIUY=0
  1. F TIUI=1:1:1000 D Q:+TIUY
  1. . W:'(TIUI#10) "."
  1. . S TIUCKP1=+$G(^GMR(128,"CNV","CHKPNT"))
  1. . I TIUCKP1'=TIUCKP0 S TIUY=1
  1. Q +$G(TIUY)
  1. PNRUN() ; Evaluate whether PN conversion is running in another partition
  1. N TIUCKP0,TIUCKP1,TIUI,TIUY
  1. W !,"Attempting to determine whether PN conversion has crashed,"
  1. W !,"or is still running in another partition..."
  1. S TIUCKP0=+$P($G(^TIU(8925.97,1,0)),U,5),TIUY=0
  1. F TIUI=1:1:1000 D Q:+TIUY
  1. . W:'(TIUI#10) "."
  1. . S TIUCKP1=+$P($G(^TIU(8925.97,1,0)),U,5)
  1. . I TIUCKP1'=TIUCKP0 S TIUY=1
  1. Q +$G(TIUY)
  1. FINDAD(DFN,TIU,TIUTYPE) ; Find original record for an addendum
  1. N TIUY
  1. S TIUY=+$O(^TIU(8925,"AV",DFN,1,+$G(TIU("VISIT")),0))
  1. I +TIUY'>0 S TIUY=+$O(^TIU(8925,"APTLD",DFN,1,$G(TIU("VSTR")),0))
  1. Q TIUY