1 | SPNFSRV0 ;HISC/DAD-SCD REGISTRY VETERAN SURVEY SERVER ;2/6/96 09:34
|
---|
2 | ;;2.0;Spinal Cord Dysfunction;;01/02/1997
|
---|
3 | ;
|
---|
4 | D XIT
|
---|
5 | S SPNFXMZ=XMZ
|
---|
6 | S SPNFTYPE=$$XMREC,SPNERROR=0
|
---|
7 | I ";***154^REG;***154.1^FIM;"'[(";"_SPNFTYPE_";") D G EXIT
|
---|
8 | . S X="Invalid message format, rest of message ignored."
|
---|
9 | . D ERROR(X)
|
---|
10 | . Q
|
---|
11 | K SPNFDATA
|
---|
12 | S (SPNFREGC,SPNFFIMC,SPNFEXIT,SPNFDATA("E"))=0
|
---|
13 | F S SPNFDATA=$$XMREC Q:SPNFDATA=""!SPNFEXIT D
|
---|
14 | . ;
|
---|
15 | . I SPNFDATA="***^END" D Q
|
---|
16 | .. S X=$O(SPNFDATA("")) I (X="")!(X="E") Q
|
---|
17 | .. S SPNFDFN(0)=$P($G(SPNFDATA(0)),U)
|
---|
18 | .. S SPNFDFN=$$FINDDFN(SPNFDFN(0))
|
---|
19 | .. I SPNFDFN'>0 D Q
|
---|
20 | ... S SPNFNAME=$P(SPNFDFN(0),";"),SPNFSEX=$P(SPNFDFN(0),";",2)
|
---|
21 | ... S SPNFDOB=$P(SPNFDFN(0),";",3),SPNFSSN=$P(SPNFDFN(0),";",4)
|
---|
22 | ... S SPNFDOB=$E(SPNFDOB,4,5)_"-"_$E(SPNFDOB,6,7)_"-"_$E(SPNFDOB,2,3)
|
---|
23 | ... S SPNFSEX=$S(SPNFSEX="M":"MALE",SPNFSEX="F":"FEMALE",1:"UNKNOWN")
|
---|
24 | ... S X="Patient not found: "_SPNFNAME_" ("_SPNFSEX_") "
|
---|
25 | ... S X=X_SPNFDOB_" "_SPNFSSN_"."
|
---|
26 | ... K SPNFDATA S SPNFDATA("E")=0
|
---|
27 | ... D ERROR(X)
|
---|
28 | ... Q
|
---|
29 | .. I $P(SPNFTYPE,U,2)="REG" D REG^SPNFSRV1
|
---|
30 | .. I $P(SPNFTYPE,U,2)="FIM" D FIM^SPNFSRV2
|
---|
31 | .. K SPNFDATA S SPNFDATA("E")=0
|
---|
32 | .. Q
|
---|
33 | . ;
|
---|
34 | . S SPNFTAG=$P(SPNFDATA,U),SPNFDATA=$P(SPNFDATA,U,2,99)
|
---|
35 | . S SPNFSUB=$TR(SPNFTAG,"*")
|
---|
36 | . I (SPNFTAG'?1"*"1E1"*")!("^0^2^5^E^"'[(U_SPNFSUB_U)) D Q
|
---|
37 | .. S X="Invalid message format, rest of message ignored."
|
---|
38 | .. D ERROR(X)
|
---|
39 | .. S SPNFEXIT=1
|
---|
40 | .. Q
|
---|
41 | . I SPNFSUB?1N S SPNFDATA(SPNFSUB)=SPNFDATA
|
---|
42 | . E D
|
---|
43 | .. S SPNFDATA("E")=SPNFDATA("E")+1
|
---|
44 | .. S SPNFDATA("E",SPNFDATA("E"))=SPNFDATA
|
---|
45 | .. Q
|
---|
46 | . Q
|
---|
47 | ;
|
---|
48 | EXIT ; *** Send error/info msg, Clean-up, Quit
|
---|
49 | I SPNERROR'>0 S XMSER="SPNFSURVEY",XMZ=SPNFXMZ D REMSBMSG^XMA1C
|
---|
50 | D MESSAGE
|
---|
51 | XIT K D0,D1,DA,DD,DESC,DFN,DIC,DIE,DINUM,DLAYGO,DO,DOB,DPT,DR,DTOUT,IEN
|
---|
52 | K NAM,SEX,SPND0,SPND1,SPNDATE,SPNDR,SPNERROR,SPNETIOL,SPNFDATA
|
---|
53 | K SPNFDATE,SPNFDFN,SPNFDOB,SPNFEXIT,SPNFFIMC,SPNFFLDS,SPNFFTYP
|
---|
54 | K SPNFNAME,SPNFREGC,SPNFSEX,SPNFSSN,SPNFSTAT,SPNFSUB,SPNFTAG,SPNFTYPE
|
---|
55 | K SPNFXMZ,SPNONSET,SPNOTHER,SPNPIECE,SPNX,SSN,TYPE,X,Y
|
---|
56 | K ^TMP($J,"SPNERROR")
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | MESSAGE ; *** Send user error/info message
|
---|
60 | I SPNERROR D
|
---|
61 | . S X="The SCD Registry Veteran Survey Server has encountered the"
|
---|
62 | . S ^TMP($J,"SPNERROR",.1)=X
|
---|
63 | . S X="following problems with MailMan server message # "_SPNFXMZ_":"
|
---|
64 | . S ^TMP($J,"SPNERROR",.2)=X
|
---|
65 | . S ^TMP($J,"SPNERROR",.3)=""
|
---|
66 | . Q
|
---|
67 | E D
|
---|
68 | . S X="The SCD Registry Veteran Survey Server has added or modified"
|
---|
69 | . S ^TMP($J,"SPNERROR",.1)=X
|
---|
70 | . S X="the following number of records:"
|
---|
71 | . S ^TMP($J,"SPNERROR",.2)=X
|
---|
72 | . I $P(SPNFTYPE,U,2)="REG" D
|
---|
73 | .. S ^TMP($J,"SPNERROR",.3)=" SCD Registry records: "_SPNFREGC
|
---|
74 | .. Q
|
---|
75 | . I $P(SPNFTYPE,U,2)="FIM" D
|
---|
76 | .. S ^TMP($J,"SPNERROR",.3)=" FIM records: "_SPNFFIMC
|
---|
77 | .. Q
|
---|
78 | . Q
|
---|
79 | S XMSUB="SCD Registry Veteran Survey Server"
|
---|
80 | S XMTEXT="^TMP($J,""SPNERROR"","
|
---|
81 | S XMY("G.SPNL SCD COORDINATOR")=""
|
---|
82 | S XMY("G.SPNZ SCD COORDINATOR")=""
|
---|
83 | D ^XMD
|
---|
84 | Q
|
---|
85 | ;
|
---|
86 | FINDDFN(X) ; *** Find a patient DFN
|
---|
87 | ; X = Name ; Sex ; DOB ; SSN ; LAST NAME
|
---|
88 | N D0,DFN,DOB,DPT,LNM,NAM,SEX,SSN
|
---|
89 | S NAM=$P(X,";",1),SEX=$P(X,";",2)
|
---|
90 | S DOB=$P(X,";",3),SSN=$P(X,";",4)
|
---|
91 | S LNM=$P(X,";",5)
|
---|
92 | S (D0,DFN)=0
|
---|
93 | F S D0=$O(^DPT("SSN",SSN,D0)) Q:D0'>0!DFN D
|
---|
94 | . S DPT=$G(^DPT(D0,0))
|
---|
95 | . S NAM(0)=$P(DPT,U,1),SEX(0)=$P(DPT,U,2)
|
---|
96 | . S DOB(0)=$P(DPT,U,3),SSN(0)=$P(DPT,U,9)
|
---|
97 | . I NAM=NAM(0),SEX=SEX(0),DOB=DOB(0),SSN=SSN(0) S DFN=D0
|
---|
98 | . I DFN'>0,SSN=SSN(0),LNM=$P(NAM(0),",") S DFN=D0
|
---|
99 | . Q
|
---|
100 | Q DFN
|
---|
101 | ;
|
---|
102 | ERROR(X) ; *** Save error messages
|
---|
103 | ; X = Text of the error msg
|
---|
104 | S SPNERROR=SPNERROR+1
|
---|
105 | S ^TMP($J,"SPNERROR",SPNERROR)=X
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | XMREC() ; *** Return next line of message
|
---|
109 | X XMREC
|
---|
110 | Q $S(XMER=0:XMRG,1:"")
|
---|