[613] | 1 | RGJCSUB ;SF/JC-MPI/PD SUBSCRIPTION GENERATOR ;04/30/97
|
---|
| 2 | ;;1.0;CLINICAL INFO RESOURCE NETWORK;**1,19,27**;30 Apr 99
|
---|
| 3 | EQ(RGEV,RGSTUB,RGERR,RGEP) ;Entry point for Event Queue Processor
|
---|
| 4 | S FLL=$P(RGSTUB,U),TLL=$P(RGSTUB,U,2),ICN=$P(RGSTUB,U,3)
|
---|
| 5 | S PN=$P(RGSTUB,U,4),TP=$P(RGSTUB,U,5),AD=$P(RGSTUB,U,6)
|
---|
| 6 | S TD=$P(RGSTUB,U,7)
|
---|
| 7 | I FLL=""!(TLL="")!(ICN="")!(PN="")!(TP="") S RGERR="REQUIRED PARAMETERS MISSING IN STUB"
|
---|
| 8 | I AD="" S AD=$$NOW^XLFDT,AD=$$DTFH^RGHLUT(AD,1) ;activation date
|
---|
| 9 | D BM(FLL,TLL,ICN,PN,TP,AD,TD)
|
---|
| 10 | Q
|
---|
| 11 | BM(FLL,TLL,ICN,PN,TP,AD,TD) ;Build Subscription Request Message
|
---|
| 12 | ;FLL-'FROM' LOGICAL LINK NAME
|
---|
| 13 | ;TLL-'TO' LOGICAL LINK NAME
|
---|
| 14 | ;ICN-PATIENT ID
|
---|
| 15 | ;PN-PATIENT NAME
|
---|
| 16 | ;TP-SUBSCRIPTION TYPE
|
---|
| 17 | ;AD-ACTIVATION DATE HL7 FORMAT
|
---|
| 18 | ;TD-TERMINATION DATE HL7 FORMAT-OPTIONAL
|
---|
| 19 | N RGCMOR,RGDFN,RGSSN
|
---|
| 20 | Q:'+ICN
|
---|
| 21 | S RGDFN=$$GETDFN^MPIF001(+ICN) Q:+RGDFN<1
|
---|
| 22 | S RGSSN=$P(^DPT(RGDFN,0),U,9)
|
---|
| 23 | ;Get institution number of CMOR
|
---|
| 24 | S RGCMOR=$$GETVCCI^MPIF001(RGDFN)
|
---|
| 25 | N RGCS,RGRC,RGEC,RGSS,HL
|
---|
| 26 | D INIT^HLFNC2("RG PT SUBSCRIPTION REQUEST",.HL) Q:+$G(HL)
|
---|
| 27 | S HLL("LINKS",1)="RG PT SUBSCRIPTION RECEIVER^"_TLL
|
---|
| 28 | S RGCS=$E(HL("ECH"),1) ;Component
|
---|
| 29 | S RGRC=$E(HL("ECH"),2) ;Repitition
|
---|
| 30 | S RGEC=$E(HL("ECH"),3) ;Escape
|
---|
| 31 | S RGSS=$E(HL("ECH"),4) ;Sub-component separator
|
---|
| 32 | MFI ;MFI-master file identifier segment
|
---|
| 33 | N X,HLA S X=""
|
---|
| 34 | S $P(X,HL("FS"))="MFI"
|
---|
| 35 | S $P(X,HL("FS"),2)="774"_RGCS_"SUBSCRIPTION REGISTRY"_RGCS_"L"
|
---|
| 36 | S $P(X,HL("FS"),4)="UPD"
|
---|
| 37 | S $P(X,HL("FS"),7)="NE"
|
---|
| 38 | S HLA("HLS",1)=X
|
---|
| 39 | MFE ;MFE-master file entry segment
|
---|
| 40 | S X=""
|
---|
| 41 | S $P(X,HL("FS"))="MFE"
|
---|
| 42 | S $P(X,HL("FS"),2)="MUP",$P(X,HL("FS"),4)=AD
|
---|
| 43 | S $P(X,HL("FS"),5)=+ICN_RGSS_RGSSN_RGSS_2_RGCS_PN_RGCS_"L"
|
---|
| 44 | S HLA("HLS",2)=X
|
---|
| 45 | DATA ;Record level data in 'ZSD' SEGMENT
|
---|
| 46 | S HLA("HLS",3)="ZSD"_HL("FS")_FLL_HL("FS")_TP_HL("FS")_AD_HL("FS")_$G(TD)_HL("FS")_HL("FS")_RGCMOR
|
---|
| 47 | SEND ;SEND TO HL7 PACKAGE
|
---|
| 48 | N HLRST
|
---|
| 49 | D GENERATE^HLMA("RG PT SUBSCRIPTION REQUEST","LM",1,.HLRST,"",.HL)
|
---|
| 50 | Q
|
---|
| 51 | ROUTE ;routing logic-parse A04 and put new message on event queue
|
---|
| 52 | ;to primary facility
|
---|
| 53 | ;If triggered by an A04
|
---|
| 54 | ;I $G(HL("ETN"))'="A04" Q
|
---|
| 55 | ;WITH NEW MESSAGING SUBSCRIPTIONS ARE NO LONGER USED
|
---|
| 56 | Q
|
---|
| 57 | K RGLL D R1
|
---|
| 58 | K RGVCCI,RGVCCIN,RGVCCIS
|
---|
| 59 | Q
|
---|
| 60 | R1 ;A04
|
---|
| 61 | N RGI,RGFS,RGLOC,RGLOCIEN,RGLOCNM,RGLOCSN,RGPN,RGSN,RGS,RGSCN,RGTP,RGTO
|
---|
| 62 | S RGS="",RGFS=HL("FS")
|
---|
| 63 | F RGI=1:1 X HLNEXT Q:HLQUIT'>0 Q:$P(HLNODE,HL("FS"))="PID"
|
---|
| 64 | Q:HLQUIT'>0
|
---|
| 65 | S RGICN=+$P(HLNODE,HL("FS"),3)
|
---|
| 66 | Q:'RGICN
|
---|
| 67 | S RGDFN=+$$GETDFN^MPIF001(RGICN)
|
---|
| 68 | Q:RGDFN'>0
|
---|
| 69 | S RGVCCI=$$GETVCCI^MPIF001(RGDFN)
|
---|
| 70 | Q:RGVCCI<1
|
---|
| 71 | ;fix TS need IEN for compare not sta. num.
|
---|
| 72 | S RGVCCI=$$LKUP^XUAF4(RGVCCI)
|
---|
| 73 | I RGVCCI="" D START^RGHLLOG(HLMTIEN),EXC^RGHLLOG(229,"MSG#"_$G(HLMID)_" Unable to send Subscription. Duplicate station number of "_$$GETVCCI^MPIF001(RGDFN)_" in Institution file.",RGDFN) D STOP^RGHLLOG() Q
|
---|
| 74 | S RGPN=$P(^DPT(RGDFN,0),U) Q:RGPN=""
|
---|
| 75 | S RGTP=1 ;clinical update
|
---|
| 76 | S RGAD=$$NOW^XLFDT,RGAD=$$DTFH^RGHLUT(RGAD,1) ;activation date
|
---|
| 77 | ;Local Station information
|
---|
| 78 | S RGLOC=$$SITE^VASITE(),RGLOCIEN=$P(RGLOC,U,1),RGLOCNM=$P(RGLOC,U,2),RGLOCSN=$P(RGLOC,U,3)
|
---|
| 79 | I RGVCCI=RGLOCIEN D ;current site is owner site, update existing subscribers
|
---|
| 80 | .S RGSCN=$$GETSCN^RGJCREC(RGDFN) ;get SCN
|
---|
| 81 | .D LINK^HLUTIL3(RGLOCIEN,.RGFROM) ;get local link definition
|
---|
| 82 | .S RGLL=$O(RGFROM(0)) Q:RGLL="" S RGLL=RGFROM(RGLL)
|
---|
| 83 | .D REC1^RGJCREC
|
---|
| 84 | I RGVCCI'=RGLOCIEN D ;current site is not owner, update only owner
|
---|
| 85 | .D LINK^HLUTIL3(RGLOCIEN,.RGFROM) ;Local Link
|
---|
| 86 | .S RGFROM=$O(RGFROM(0)) Q:RGFROM="" S RGFROM=RGFROM(RGFROM) ;sending facility
|
---|
| 87 | .I $E(RGFROM,1,2)'="VA" D START^RGHLLOG(HLMTIEN),EXC^RGHLLOG(224,"MSG#"_$G(HLMID)_" Unable to send Subscription from "_RGFROM_". This is not a MPI/PD Site.",RGDFN) D STOP^RGHLLOG() Q
|
---|
| 88 | .D LINK^HLUTIL3(RGVCCI,.RGTO) ;get VCCI Link
|
---|
| 89 | .S RGTO=$O(RGTO(0)) Q:RGTO=""
|
---|
| 90 | .S RGTO=RGTO(RGTO) ;receiving facility
|
---|
| 91 | .I $E(RGTO,1,2)'="VA" D START^RGHLLOG(HLMTIEN),EXC^RGHLLOG(224,"MSG#"_$G(HLMID)_" Unable to send Subscription to "_RGTO_". This is not a MPI/PD Site.",RGDFN) D STOP^RGHLLOG() Q
|
---|
| 92 | .Q:RGTO=RGFROM
|
---|
| 93 | .S RGSTUB=RGFROM_U_RGTO_U_RGICN_U_RGPN_U_RGTP_U_RGAD
|
---|
| 94 | .D EN^RGEQ("SCN_REQ",RGSTUB)
|
---|