| 1 | SPNLS ;ISC-SF/RAH - EXTRACT CONTROL FOR LOCAL TO NATIONAL ;8/31/95  14:13
 | 
|---|
| 2 | V ;;2.0;Spinal Cord Dysfunction;**2**;01/02/1997
 | 
|---|
| 3 | EN ;
 | 
|---|
| 4 |  K ^TMP("SPNX",$J),^TMP("SPNLS",$J),^TMP("SPNXMRK",$J)
 | 
|---|
| 5 |  S (SPNLERR,SPNLLOC,SPNLFULL,SPNLHDR,SPNLPTS)=""
 | 
|---|
| 6 |  S (SPNLH,SPNLPCNT,SPNLTMP)=0,SPNLCTXT=1
 | 
|---|
| 7 | CKR ;
 | 
|---|
| 8 |  ;I '$D(ZTQUEUED) D SETVARS,EN1^SPNLSCH Q
 | 
|---|
| 9 | MAINLIN ;
 | 
|---|
| 10 |  D INIT^SPNLGE(.SPNLERR)
 | 
|---|
| 11 |  D SETVARS
 | 
|---|
| 12 |  I SPNLERR D ERRMSG Q
 | 
|---|
| 13 |  D CALCSTOP
 | 
|---|
| 14 |  D LOOP ; Loop thru Registry
 | 
|---|
| 15 |  D SNDMAIL
 | 
|---|
| 16 |  D ^SPNLS1 ; Update control files and re-schedule
 | 
|---|
| 17 |  D END
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 | LOOP ;
 | 
|---|
| 20 |  S SPNLPID=SPNSTRID
 | 
|---|
| 21 |  F  S SPNLPID=$O(^SPNL(154,SPNLPID)) Q:SPNLPID'>0  D  Q:SPNLH>SPNLSTP
 | 
|---|
| 22 |  .S SPNLLID=SPNLPID,SPNLH1=$P($H,",",1),SPNLH2=$P($H,",",2),SPNLH=SPNLH1_"."_SPNLH2
 | 
|---|
| 23 |  .I $P($G(^SPNL(154,SPNLPID,0)),U,3,4)'="1^T" Q  ; Active & Transmit
 | 
|---|
| 24 |  .I '$P($G(^SPNL(154,SPNLPID,"XMT")),U),'$$CK1541(SPNLPID) Q  ; Any Changes to Record
 | 
|---|
| 25 |  .S SPNLPTS="",SPNLERR=""
 | 
|---|
| 26 |  .S:$D(^SPNL(154.9,SPNLPID,0)) SPNLPTS=^SPNL(154.9,SPNLPID,0)
 | 
|---|
| 27 |  .I SPNLPTS="" S SPNLPTS=SPNLPID_U_U D CRATEREC Q:SPNLERR
 | 
|---|
| 28 |  .I $P(SPNLPTS,U,2)="" S $P(SPNLPTS,U,2)="1000100"
 | 
|---|
| 29 |  .I $P(SPNLPTS,U,3)="" S $P(SPNLPTS,U,3)="1000100"
 | 
|---|
| 30 |  .S SPNLFDT=$E($P(SPNLPTS,U,3),1,5)_"01",SPNLTDT=SPNLSDT
 | 
|---|
| 31 |  .S SPNLERR="" D EXTRACT^SPNLGE(SPNLPID,SPNLFDT,SPNLTDT,SPNLCTXT,.SPNLERR)
 | 
|---|
| 32 |  .I SPNLERR D ERRMSG Q
 | 
|---|
| 33 |  .S SPNLPCNT=SPNLPCNT+1
 | 
|---|
| 34 |  .S ^TMP("SPNLS",$J,SPNLPID)=SPNLPID_U_SPNLFDT_U_SPNLTDT
 | 
|---|
| 35 |  .Q
 | 
|---|
| 36 |  I SPNLPID'>0 S SPNLFULL=1,SPNLPID=1
 | 
|---|
| 37 |  I 'SPNLFULL S SPNLTYPE="PARTIAL"
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 | CK1541(DFN) ; Check the 154.1 globle for a entry CAN be sent.
 | 
|---|
| 40 |  N SPNLFLG,SPNLIEN
 | 
|---|
| 41 |  S (SPNLFLG,SPNLIEN)=0
 | 
|---|
| 42 |  F  S SPNLIEN=$O(^SPNL(154.1,"B",DFN,SPNLIEN)) Q:SPNLIEN<1  D  Q:SPNLFLG
 | 
|---|
| 43 |  . Q:$G(^SPNL(154.1,SPNLIEN,0))=""  ; Bad zero node
 | 
|---|
| 44 |  . S SPNLFLG=+$P($G(^SPNL(154.1,SPNLIEN,"XMT")),U) ; send OR not to send.
 | 
|---|
| 45 |  . Q
 | 
|---|
| 46 |  Q SPNLFLG
 | 
|---|
| 47 | CRATEREC ;
 | 
|---|
| 48 |  K DD,DIC,DINUM,DO
 | 
|---|
| 49 |  S DIC(0)="LMN",DIC="^SPNL(154.9,",X=SPNLPID,DINUM=SPNLPID,DLAYGO=154.9
 | 
|---|
| 50 |  D FILE^DICN K DIC,DINUM
 | 
|---|
| 51 |  I Y=-1 S SPNLERR="1 COULD NOT MAKE ENTRY "_SPNLPID_" IN PTN TX FILE" D ERRMSG Q
 | 
|---|
| 52 |  S SPNLPIEN=$P(Y,U,1)
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | PTXIEN ;
 | 
|---|
| 55 |  S DIC(0)="MNO",DIC="^SPNL(154.9,",X=SPNLPID D ^DIC K DIC
 | 
|---|
| 56 |  I Y=-1 S SPNLERR="3 COULD NOT FIND ENTRY "_SPNLPID_" IN PTN TX FILE" D ERRMSG Q
 | 
|---|
| 57 |  S SPNLPIEN=$P(Y,U,1)
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 | SETVARS ;
 | 
|---|
| 60 |  S SPNLTMP=.9
 | 
|---|
| 61 |  S SPNLTMP=$O(^SPNL(154.93,SPNLTMP))
 | 
|---|
| 62 |  I SPNLTMP="" D
 | 
|---|
| 63 |  .S SPNLTMP=1 K DD,DIC,DINUM,DO
 | 
|---|
| 64 |  .S DIC(0)="LMN",DIC="^SPNL(154.93,",X=1,DINUM=1,DLAYGO=154.93
 | 
|---|
| 65 |  .D FILE^DICN K DIC
 | 
|---|
| 66 |  .S ^SPNL(154.93,1,0)="1^^^^^FULL^0^0^1"
 | 
|---|
| 67 |  S SPNLTXCY=^SPNL(154.93,SPNLTMP,0)
 | 
|---|
| 68 |  I $P(SPNLTXCY,U,10)="" S $P(SPNLTXCY,U,10)=0
 | 
|---|
| 69 |  I $P(SPNLTXCY,U,6)="" S $P(SPNLTXCY,U,7)="FULL"
 | 
|---|
| 70 |  S SPNLCYNO=$P(SPNLTXCY,U,1),SPNLTIME=$P(SPNLTXCY,U,10),SPNLCYST=$P(SPNLTXCY,U,2)
 | 
|---|
| 71 |  I $D(^SPNL(154.91,1,0)) S SPNPARMS=^SPNL(154.91,1,0)
 | 
|---|
| 72 |  E  S SPNPARMS="^1000^240^1W"
 | 
|---|
| 73 |  I $P(SPNPARMS,U,2)="" S $P(SPNPARMS,U,2)=1000
 | 
|---|
| 74 |  I $P(SPNPARMS,U,3)="" S $P(SPNPARMS,U,3,4)="240^1W"
 | 
|---|
| 75 |  S SPNXRECS=$P(SPNPARMS,U,2),SPNXRUN=$P(SPNPARMS,U,3)
 | 
|---|
| 76 |  S SPNSTRID=$P(SPNLTXCY,U,10),SPNLTYPE=$P(SPNLTXCY,U,6)
 | 
|---|
| 77 |  S SPNLFREQ=$P(SPNPARMS,U,4)
 | 
|---|
| 78 |  S SPNLLOC="^TMP(""SPNX"",$J,"
 | 
|---|
| 79 |  K X,% D NOW^%DTC S SPNLSDT=X,SPNLSDAT=%,SPNLSTRT=%
 | 
|---|
| 80 |  S SPNLFAC=$P(^SPNL(154.91,1,0),U,1)
 | 
|---|
| 81 |  S SPNLXMY=$P(^SPNL(154.91,1,0),U,7)
 | 
|---|
| 82 |  S SPNLFNAM=$P(^DIC(4,$P(^XMB(1,1,"XUS"),U,17),0),U,1)
 | 
|---|
| 83 |  S SPNLNODE=SPNLFNAM_U_SPNXRUN_U_SPNLFREQ_U_SPNLCYST_U_U_SPNLTYPE_U_SPNLSDAT_U_U
 | 
|---|
| 84 |  S ^TMP("SPNX",$J,SPNLSDT,SPNLFAC)=SPNLNODE
 | 
|---|
| 85 | SETHDR ;
 | 
|---|
| 86 |  S SPNLHDR="SCD"_U_SPNLFAC_U_SPNLSDT_U_SPNLTYPE_U_SPNLCYNO_U_SPNXRECS_U_SPNXRUN_U_SPNLTIME_U_"1.5"
 | 
|---|
| 87 |  S SPNLSUB="SCD"_"$"_SPNLFAC_"$"_"SPINAL CORD"_"$"_SPNLSDT
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 | CALCSTOP ;
 | 
|---|
| 90 |  S SPNLDAYS=$P($H,",",1),SPNLSEC=$P($H,",",2),SPNLSEC=SPNLSEC+(SPNXRUN*60)
 | 
|---|
| 91 |  I SPNLSEC>86399 D
 | 
|---|
| 92 |  .F  S SPNLDAYS=SPNLDAYS+1,SPNLSEC=SPNLSEC-86400 Q:SPNLSEC<86400
 | 
|---|
| 93 |  S SPNLSTP=SPNLDAYS_"."_SPNLSEC
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | SNDMAIL ;
 | 
|---|
| 96 |  D EN1^SPNLXMD(SPNLLOC,SPNLSUB,SPNLXMY,.SPNLERR)
 | 
|---|
| 97 |  I SPNLERR D ERRMSG
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 | ERRMSG ;
 | 
|---|
| 100 |  K X,% D NOW^%DTC S SPNLDT=%
 | 
|---|
| 101 |  S XMSUB=$S(+SPNLERR=4:"SCD REGISTRY EXTRACT MESSAGE",1:"SCD REGISTRY EXTRACT ERROR")
 | 
|---|
| 102 |  S XMY("G.SPNL SCD COORDINATOR")=""
 | 
|---|
| 103 |  S SPNLFAC=$P(^DIC(4,$P(^XMB(1,1,"XUS"),U,17),99),U,1),SPNLFAC=+$E(SPNLFAC,1,3)
 | 
|---|
| 104 |  S SPNLFNAM=$P(^DIC(4,$P(^XMB(1,1,"XUS"),U,17),0),U,1)
 | 
|---|
| 105 |  S SPNLTEXT(1)="H$ "_SPNLDT_"^"_SPNLFAC_"^"_SPNLFNAM
 | 
|---|
| 106 |  S SPNLTEXT(2)="I$ "_SPNLPID_"^"_SPNLHDR
 | 
|---|
| 107 |  S SPNLTEXT(3)="P$ "_SPNPARMS
 | 
|---|
| 108 |  S SPNLTEXT(4)="C$ "_SPNLTXCY
 | 
|---|
| 109 |  S SPNLTEXT(5)="E$ "_SPNLERR
 | 
|---|
| 110 |  S XMDUZ=.5,XMTEXT="SPNLTEXT("
 | 
|---|
| 111 |  S:'$D(DTIME) DTIME=300 D ^XMD
 | 
|---|
| 112 |  Q
 | 
|---|
| 113 | END ;
 | 
|---|
| 114 |  D DIE^SPNLRU1
 | 
|---|
| 115 |  K SPNLCT,SPNLCTXT,SPNLCYNO,SPNLCYST,SPNLDAYS,SPNLERR,SPNLFAC,SPNLFNAM
 | 
|---|
| 116 |  K SPNLFREQ,SPNLFULL,SPNLHDR,SPNLLID,SPNLLOC,SPNLMOS,SPNLNODE,SPNLPCNT
 | 
|---|
| 117 |  K SPNLPID,SPNLPTS,SPNLSDAT,SPNLSDT,SPNLSEC,SPNLSSN,SPNLSTP,SPNLSUB
 | 
|---|
| 118 |  K SPNLT,SPNLTIME,SPNLTXCY,SPNLTYPE,SPNLXMY,SPNLYRS,SPNPARMS,SPNSTRID
 | 
|---|
| 119 |  K SPNXRECS,SPNXRUN,ZTRTN,ZTDTH,ZTIO,ZTSK,ZTDESC
 | 
|---|
| 120 |  K SPNLDT,SPNLFDT,SPNLTDT,SPNLH,SPNLH1,SPNLH2,SPNLPIEN,SPNLSTRT,SPNLTEXT
 | 
|---|
| 121 |  K ^TMP("SPNX",$J),^TMP("SPNLS",$J),^TMP("SPNXMRK",$J)
 | 
|---|
| 122 |  Q
 | 
|---|