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
|
---|