93 lines
2.7 KiB
Mathematica
93 lines
2.7 KiB
Mathematica
SCMCHLL ;BP/DJB - PCMM HL7 Log Transmission ; 3/2/00 12:59pm
|
|
;;5.3;Scheduling;**210,272**;AUG 13, 1993
|
|
;
|
|
LOG ;Record HL7 messages in PCMM HL7 TRANSMISSION LOG file.
|
|
;Parse the HL7 array and build an array in ^TMP("PCMM","LOG",$J) and
|
|
;use to record transmissions.
|
|
;
|
|
NEW FS,MSGID,TDATE
|
|
;
|
|
;Initialize variables
|
|
KILL ^TMP("PCMM","LOG",$J)
|
|
S FS=HL("FS") ;........................Field separator
|
|
S MSGID=$P(HLRESLT,"^",1) Q:'MSGID ;..Message ID
|
|
S TDATE=$$NOW^XLFDT ;..................Transmission date
|
|
S ^TMP("PCMM","LOG",$J,"MSGID")=MSGID
|
|
S ^TMP("PCMM","LOG",$J,"DT")=TDATE
|
|
;
|
|
D GETDATA ;..Get data from HL7 message array
|
|
D ADD ;......Create entry in Transmission Log and stuff data
|
|
;
|
|
KILL ^TMP("PCMM","LOG",$J)
|
|
Q
|
|
;
|
|
GETDATA ;Go thru HL7 array and build array of data in ^TMP("PCMM","LOG",$J).
|
|
NEW CNT,DATA,DFN,SEG,SEQ,ZPCID
|
|
S CNT=""
|
|
F S CNT=$O(^TMP("HLS",$J,CNT)) Q:'CNT D ;
|
|
. S DATA=$G(^(CNT)) Q:DATA=""
|
|
. S SEG=$P(DATA,FS,1)
|
|
. ;
|
|
. ;PID segment - Get patient DFN
|
|
. I SEG="PID" D Q
|
|
. . S DFN=+$P(DATA,U,4)
|
|
. . S ^TMP("PCMM","LOG",$J,"DFN")=DFN
|
|
. ;
|
|
. ;ZPC segment - Get sequence # and ZPC ID.
|
|
. I SEG="ZPC" D Q
|
|
. . S SEQ=$P(DATA,U,8)
|
|
. . S ZPCID=$P(DATA,U,2)
|
|
. . S ^TMP("PCMM","LOG",$J,"ZPC",SEQ)=ZPCID
|
|
Q
|
|
;
|
|
ADD ;Process data array built in GETDATA
|
|
NEW TRANI
|
|
S TRANI=$$CREATE(^TMP("PCMM","LOG",$J,"MSGID")) ;..Create new entry
|
|
Q:+TRANI<0
|
|
D STORE(TRANI) ;..Store transmission info
|
|
Q
|
|
;
|
|
CREATE(MSGID) ;Create new entry
|
|
; Input: Message Control ID
|
|
;Output: Pointer to entry in PCMM HL7 TRANSMISSION LOG (#404.471)
|
|
; -1^Error - Unable to create entry
|
|
;
|
|
NEW SCERR,SCFDA,SCIEN
|
|
S SCFDA(404.471,"+1,",.01)=MSGID
|
|
D UPDATE^DIE("E","SCFDA","SCIEN","SCERR")
|
|
I $D(SCERR) Q "-1^Unable to create entry in file #404.471"
|
|
Q SCIEN(1)
|
|
;
|
|
STORE(TRANI) ;Store data
|
|
;
|
|
; Input: TRANI - Pointer PCMM HL7 TRANSMISSION LOG file (#404.471)
|
|
;Output: None
|
|
;
|
|
NEW CNT,SCERR,SCIEN,SCIENS,SCIENS1,SCFDA,SEQ,ZPCID
|
|
;
|
|
;Check input
|
|
Q:'+$G(TRANI)
|
|
Q:'$D(^SCPT(404.471,TRANI))
|
|
;
|
|
S SCIENS=TRANI_","
|
|
S SCFDA(404.471,SCIENS,.02)=$G(^TMP("PCMM","LOG",$J,"DFN")) ;Patient
|
|
S SCFDA(404.471,SCIENS,.03)=$G(^TMP("PCMM","LOG",$J,"DT")) ;.Date
|
|
S SCFDA(404.471,SCIENS,.04)="T" ;........................Status
|
|
I $G(WORK),'SCFDA(404.471,SCIENS,.02) D
|
|
.S SCFDA(404.471,SCIENS,.07)=$G(VARPTR)
|
|
.I $G(VARPTR)[404.52 S SCFDA(404.471,SCIENS,.08)=$P($G(^SCTM(404.52,+VARPTR,0)),U,3)
|
|
D FILE^DIE("I","SCFDA","SCERR")
|
|
KILL SCFDA,SCERR
|
|
;
|
|
;Fill in ZPC multiple
|
|
S (CNT,SEQ)=0
|
|
F S SEQ=$O(^TMP("PCMM","LOG",$J,"ZPC",SEQ)) Q:'SEQ D ;
|
|
. S ZPCID=$$CONVERT^SCMCHLRI($G(^(SEQ)))
|
|
. S CNT=CNT+1
|
|
. S SCIENS1="+"_CNT_","_SCIENS
|
|
. S SCFDA(404.47141,SCIENS1,.01)=SEQ
|
|
. S SCFDA(404.47141,SCIENS1,.02)=ZPCID
|
|
. D UPDATE^DIE("","SCFDA","SCIEN","SCERR")
|
|
. ;I $D(SCERR) ZW SCERR
|
|
Q
|